/* valaccodebasemodule.c generated by valac, the Vala compiler * generated from valaccodebasemodule.vala, do not modify */ /* valaccodebasemodule.vala * * Copyright (C) 2006-2011 Jürg Billeter * Copyright (C) 2006-2008 Raffaele Sandrini * * 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 * Raffaele Sandrini */ #include #include #include #include #include #include #include #include #include #include #include #define VALA_TYPE_CCODE_BASE_MODULE (vala_ccode_base_module_get_type ()) #define VALA_CCODE_BASE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModule)) #define VALA_CCODE_BASE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModuleClass)) #define VALA_IS_CCODE_BASE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_BASE_MODULE)) #define VALA_IS_CCODE_BASE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_BASE_MODULE)) #define VALA_CCODE_BASE_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModuleClass)) typedef struct _ValaCCodeBaseModule ValaCCodeBaseModule; typedef struct _ValaCCodeBaseModuleClass ValaCCodeBaseModuleClass; typedef struct _ValaCCodeBaseModulePrivate ValaCCodeBaseModulePrivate; #define VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT (vala_ccode_base_module_emit_context_get_type ()) #define VALA_CCODE_BASE_MODULE_EMIT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContext)) #define VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContextClass)) #define VALA_CCODE_BASE_MODULE_IS_EMIT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT)) #define VALA_CCODE_BASE_MODULE_IS_EMIT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT)) #define VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContextClass)) typedef struct _ValaCCodeBaseModuleEmitContext ValaCCodeBaseModuleEmitContext; typedef struct _ValaCCodeBaseModuleEmitContextClass ValaCCodeBaseModuleEmitContextClass; #define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL))) #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL))) #define _vala_ccode_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_base_module_emit_context_unref (var), NULL))) #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL))) #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL))) #define _vala_ccode_file_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_file_unref (var), NULL))) #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _vala_source_file_unref0(var) ((var == NULL) ? NULL : (var = (vala_source_file_unref (var), NULL))) #define _fclose0(var) ((var == NULL) ? NULL : (var = (fclose (var), NULL))) typedef struct _ValaCCodeBaseModuleEmitContextPrivate ValaCCodeBaseModuleEmitContextPrivate; #define _vala_comment_unref0(var) ((var == NULL) ? NULL : (var = (vala_comment_unref (var), NULL))) #define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL))) #define VALA_TYPE_GLIB_VALUE (vala_glib_value_get_type ()) #define VALA_GLIB_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GLIB_VALUE, ValaGLibValue)) #define VALA_GLIB_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GLIB_VALUE, ValaGLibValueClass)) #define VALA_IS_GLIB_VALUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GLIB_VALUE)) #define VALA_IS_GLIB_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GLIB_VALUE)) #define VALA_GLIB_VALUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GLIB_VALUE, ValaGLibValueClass)) typedef struct _ValaGLibValue ValaGLibValue; typedef struct _ValaGLibValueClass ValaGLibValueClass; typedef struct _ValaGLibValuePrivate ValaGLibValuePrivate; #define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL))) #define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define VALA_TYPE_CCODE_ATTRIBUTE (vala_ccode_attribute_get_type ()) #define VALA_CCODE_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ATTRIBUTE, ValaCCodeAttribute)) #define VALA_CCODE_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ATTRIBUTE, ValaCCodeAttributeClass)) #define VALA_IS_CCODE_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ATTRIBUTE)) #define VALA_IS_CCODE_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ATTRIBUTE)) #define VALA_CCODE_ATTRIBUTE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ATTRIBUTE, ValaCCodeAttributeClass)) typedef struct _ValaCCodeAttribute ValaCCodeAttribute; typedef struct _ValaCCodeAttributeClass ValaCCodeAttributeClass; #define _vala_attribute_cache_unref0(var) ((var == NULL) ? NULL : (var = (vala_attribute_cache_unref (var), NULL))) #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL))) typedef struct _ValaCCodeBaseModuleParamSpecEmitContext ValaCCodeBaseModuleParamSpecEmitContext; struct _ValaCCodeBaseModule { ValaCodeGenerator parent_instance; ValaCCodeBaseModulePrivate * priv; ValaSymbol* root_symbol; ValaCCodeBaseModuleEmitContext* emit_context; ValaCCodeLineDirective* current_line; ValaCCodeFile* header_file; ValaCCodeFile* internal_header_file; ValaCCodeFile* cfile; ValaCCodeBaseModuleEmitContext* class_init_context; ValaCCodeBaseModuleEmitContext* base_init_context; ValaCCodeBaseModuleEmitContext* class_finalize_context; ValaCCodeBaseModuleEmitContext* base_finalize_context; ValaCCodeBaseModuleEmitContext* instance_init_context; ValaCCodeBaseModuleEmitContext* instance_finalize_context; ValaCCodeStruct* param_spec_struct; ValaCCodeStruct* closure_struct; ValaCCodeEnum* prop_enum; ValaSet* user_marshal_set; ValaSet* predefined_marshal_set; gint next_regex_id; gint next_coroutine_state; ValaDataType* void_type; ValaDataType* bool_type; ValaDataType* char_type; ValaDataType* uchar_type; ValaDataType* unichar_type; ValaDataType* short_type; ValaDataType* ushort_type; ValaDataType* int_type; ValaDataType* uint_type; ValaDataType* long_type; ValaDataType* ulong_type; ValaDataType* int8_type; ValaDataType* uint8_type; ValaDataType* int16_type; ValaDataType* uint16_type; ValaDataType* int32_type; ValaDataType* uint32_type; ValaDataType* int64_type; ValaDataType* uint64_type; ValaDataType* string_type; ValaDataType* regex_type; ValaDataType* float_type; ValaDataType* double_type; ValaTypeSymbol* gtype_type; ValaTypeSymbol* gobject_type; ValaErrorType* gerror_type; ValaClass* glist_type; ValaClass* gslist_type; ValaClass* gnode_type; ValaClass* gqueue_type; ValaClass* gvaluearray_type; ValaTypeSymbol* gstringbuilder_type; ValaTypeSymbol* garray_type; ValaTypeSymbol* gbytearray_type; ValaTypeSymbol* gptrarray_type; ValaTypeSymbol* gthreadpool_type; ValaDataType* gdestroynotify_type; ValaDataType* gquark_type; ValaStruct* gvalue_type; ValaClass* gvariant_type; ValaStruct* mutex_type; ValaTypeSymbol* type_module_type; ValaTypeSymbol* dbus_proxy_type; gboolean in_plugin; gchar* module_init_param_name; gboolean gvaluecollector_h_needed; gboolean requires_array_free; gboolean requires_array_move; gboolean requires_array_length; ValaSet* wrappers; }; struct _ValaCCodeBaseModuleClass { ValaCodeGeneratorClass parent_class; void (*append_vala_array_free) (ValaCCodeBaseModule* self); void (*append_vala_array_move) (ValaCCodeBaseModule* self); void (*append_vala_array_length) (ValaCCodeBaseModule* self); gboolean (*generate_enum_declaration) (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space); void (*generate_class_struct_declaration) (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space); void (*generate_struct_declaration) (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space); void (*generate_delegate_declaration) (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space); void (*generate_cparameters) (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction); ValaCCodeExpression* (*get_dup_func_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup); gchar* (*append_struct_array_free) (ValaCCodeBaseModule* self, ValaStruct* st); ValaCCodeExpression* (*destroy_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition); void (*append_scope_free) (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at); ValaTargetValue* (*get_local_cvalue) (ValaCCodeBaseModule* self, ValaLocalVariable* local); ValaTargetValue* (*get_parameter_cvalue) (ValaCCodeBaseModule* self, ValaParameter* param); ValaTargetValue* (*get_field_cvalue) (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance); ValaTargetValue* (*load_variable) (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value); ValaTargetValue* (*load_this_parameter) (ValaCCodeBaseModule* self, ValaTypeSymbol* sym); void (*store_value) (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value); gchar* (*get_delegate_target_cname) (ValaCCodeBaseModule* self, const gchar* delegate_cname); ValaCCodeExpression* (*get_delegate_target_cexpression) (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify); ValaCCodeExpression* (*get_delegate_target_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value); ValaCCodeExpression* (*get_delegate_target_destroy_notify_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value); gchar* (*get_delegate_target_destroy_notify_cname) (ValaCCodeBaseModule* self, const gchar* delegate_cname); ValaTargetValue* (*copy_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node); void (*generate_class_declaration) (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space); void (*generate_interface_declaration) (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space); void (*generate_method_declaration) (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space); void (*generate_error_domain_declaration) (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space); ValaCCodeExpression* (*deserialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail); ValaCCodeExpression* (*serialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr); ValaCCodeExpression* (*get_implicit_cast_expression) (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node); void (*create_type_check_statement) (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name); gboolean (*is_gobject_property) (ValaCCodeBaseModule* self, ValaProperty* prop); void (*generate_dynamic_method_wrapper) (ValaCCodeBaseModule* self, ValaDynamicMethod* method); gboolean (*method_has_wrapper) (ValaCCodeBaseModule* self, ValaMethod* method); ValaCCodeFunctionCall* (*get_param_spec) (ValaCCodeBaseModule* self, ValaProperty* prop); ValaCCodeFunctionCall* (*get_signal_creation) (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type); void (*register_dbus_info) (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable); gchar* (*get_dynamic_property_getter_cname) (ValaCCodeBaseModule* self, ValaDynamicProperty* node); gchar* (*get_dynamic_property_setter_cname) (ValaCCodeBaseModule* self, ValaDynamicProperty* node); gchar* (*get_dynamic_signal_cname) (ValaCCodeBaseModule* self, ValaDynamicSignal* node); gchar* (*get_dynamic_signal_connect_wrapper_name) (ValaCCodeBaseModule* self, ValaDynamicSignal* node); gchar* (*get_dynamic_signal_connect_after_wrapper_name) (ValaCCodeBaseModule* self, ValaDynamicSignal* node); gchar* (*get_dynamic_signal_disconnect_wrapper_name) (ValaCCodeBaseModule* self, ValaDynamicSignal* node); gchar* (*get_array_length_cname) (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim); gchar* (*get_parameter_array_length_cname) (ValaCCodeBaseModule* self, ValaParameter* param, gint dim); ValaCCodeExpression* (*get_array_length_cexpression) (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim); ValaCCodeExpression* (*get_array_length_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim); gchar* (*get_array_size_cname) (ValaCCodeBaseModule* self, const gchar* array_cname); void (*add_simple_check) (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails); gchar* (*generate_ready_function) (ValaCCodeBaseModule* self, ValaMethod* m); }; struct _ValaCCodeBaseModulePrivate { ValaCodeContext* _context; ValaList* emit_context_stack; ValaList* line_directive_stack; ValaSet* reserved_identifiers; gint next_block_id; ValaMap* block_map; ValaSet* generated_external_symbols; gint next_variant_function_id; }; struct _ValaCCodeBaseModuleEmitContext { GTypeInstance parent_instance; volatile int ref_count; ValaCCodeBaseModuleEmitContextPrivate * priv; ValaSymbol* current_symbol; ValaArrayList* symbol_stack; ValaTryStatement* current_try; ValaCatchClause* current_catch; ValaCCodeFunction* ccode; ValaArrayList* ccode_stack; ValaArrayList* temp_ref_values; gint next_temp_var_id; gboolean current_method_inner_error; gboolean current_method_return; ValaMap* variable_name_map; ValaMap* closure_variable_count_map; ValaMap* closure_variable_clash_map; }; struct _ValaCCodeBaseModuleEmitContextClass { GTypeClass parent_class; void (*finalize) (ValaCCodeBaseModuleEmitContext *self); }; struct _ValaGLibValue { ValaTargetValue parent_instance; ValaGLibValuePrivate * priv; ValaCCodeExpression* cvalue; gboolean lvalue; gboolean non_null; gchar* ctype; ValaList* array_length_cvalues; ValaCCodeExpression* array_size_cvalue; gboolean array_null_terminated; ValaCCodeExpression* array_length_cexpr; ValaCCodeExpression* delegate_target_cvalue; ValaCCodeExpression* delegate_target_destroy_notify_cvalue; }; struct _ValaGLibValueClass { ValaTargetValueClass parent_class; }; struct _ValaCCodeBaseModuleParamSpecEmitContext { GParamSpec parent_instance; }; static gpointer vala_ccode_base_module_parent_class = NULL; extern gint vala_ccode_base_module_ccode_attribute_cache_index; gint vala_ccode_base_module_ccode_attribute_cache_index = 0; static gpointer vala_ccode_base_module_emit_context_parent_class = NULL; static gpointer vala_glib_value_parent_class = NULL; GType vala_ccode_base_module_get_type (void) G_GNUC_CONST; gpointer vala_ccode_base_module_emit_context_ref (gpointer instance); void vala_ccode_base_module_emit_context_unref (gpointer instance); GParamSpec* vala_ccode_base_module_param_spec_emit_context (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void vala_ccode_base_module_value_set_emit_context (GValue* value, gpointer v_object); void vala_ccode_base_module_value_take_emit_context (GValue* value, gpointer v_object); gpointer vala_ccode_base_module_value_get_emit_context (const GValue* value); GType vala_ccode_base_module_emit_context_get_type (void) G_GNUC_CONST; #define VALA_CCODE_BASE_MODULE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModulePrivate)) enum { VALA_CCODE_BASE_MODULE_DUMMY_PROPERTY }; ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_new (ValaSymbol* symbol); ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_construct (GType object_type, ValaSymbol* symbol); gboolean vala_ccode_base_module_is_in_coroutine (ValaCCodeBaseModule* self); ValaMethod* vala_ccode_base_module_get_current_method (ValaCCodeBaseModule* self); gboolean vala_ccode_base_module_is_in_constructor (ValaCCodeBaseModule* self); ValaSymbol* vala_ccode_base_module_get_current_symbol (ValaCCodeBaseModule* self); gboolean vala_ccode_base_module_is_in_destructor (ValaCCodeBaseModule* self); ValaBlock* vala_ccode_base_module_next_closure_block (ValaCCodeBaseModule* self, ValaSymbol* sym); ValaCCodeBaseModule* vala_ccode_base_module_construct (GType object_type); static void vala_ccode_base_module_real_emit (ValaCodeGenerator* base, ValaCodeContext* context); void vala_ccode_base_module_set_context (ValaCCodeBaseModule* self, ValaCodeContext* value); void vala_ccode_base_module_push_context (ValaCCodeBaseModule* self, ValaCCodeBaseModuleEmitContext* emit_context); ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self); void vala_ccode_base_module_pop_context (ValaCCodeBaseModule* self); void vala_ccode_base_module_push_line (ValaCCodeBaseModule* self, ValaSourceReference* source_reference); void vala_ccode_base_module_pop_line (ValaCCodeBaseModule* self); void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func); void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self); gboolean vala_ccode_base_module_add_symbol_declaration (ValaCCodeBaseModule* self, ValaCCodeFile* decl_space, ValaSymbol* sym, const gchar* name); gchar* vala_ccode_base_module_get_ccode_header_filenames (ValaSymbol* sym); ValaCCodeIdentifier* vala_ccode_base_module_get_value_setter_function (ValaCCodeBaseModule* self, ValaDataType* type_reference); gchar* vala_ccode_base_module_get_ccode_set_value_function (ValaCodeNode* sym); ValaCCodeIdentifier* vala_ccode_base_module_get_value_taker_function (ValaCCodeBaseModule* self, ValaDataType* type_reference); gchar* vala_ccode_base_module_get_ccode_take_value_function (ValaCodeNode* sym); static ValaCCodeIdentifier* vala_ccode_base_module_get_value_getter_function (ValaCCodeBaseModule* self, ValaDataType* type_reference); gchar* vala_ccode_base_module_get_ccode_get_value_function (ValaCodeNode* sym); void vala_ccode_base_module_append_vala_array_free (ValaCCodeBaseModule* self); static void vala_ccode_base_module_real_append_vala_array_free (ValaCCodeBaseModule* self); void vala_ccode_base_module_append_vala_array_move (ValaCCodeBaseModule* self); static void vala_ccode_base_module_real_append_vala_array_move (ValaCCodeBaseModule* self); void vala_ccode_base_module_append_vala_array_length (ValaCCodeBaseModule* self); static void vala_ccode_base_module_real_append_vala_array_length (ValaCCodeBaseModule* self); static void vala_ccode_base_module_real_visit_source_file (ValaCodeVisitor* base, ValaSourceFile* source_file); ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self); gboolean vala_ccode_base_module_generate_enum_declaration (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space); static gboolean vala_ccode_base_module_real_generate_enum_declaration (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space); gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node); ValaCCodeExpression* vala_ccode_base_module_get_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr); gboolean vala_ccode_base_module_get_ccode_has_type_id (ValaTypeSymbol* sym); gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix); gchar* vala_ccode_base_module_get_ccode_type_id (ValaCodeNode* node); static void vala_ccode_base_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en); void vala_ccode_base_module_visit_member (ValaCCodeBaseModule* self, ValaSymbol* m); gchar* vala_ccode_base_module_get_symbol_lock_name (ValaCCodeBaseModule* self, const gchar* symname); gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const gchar* infix); void vala_ccode_base_module_generate_constant_declaration (ValaCCodeBaseModule* self, ValaConstant* c, ValaCCodeFile* decl_space, gboolean definition); void vala_ccode_base_module_generate_type_declaration (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeFile* decl_space); gchar* vala_ccode_base_module_get_ccode_const_name (ValaCodeNode* node); static void vala_ccode_base_module_real_visit_constant (ValaCodeVisitor* base, ValaConstant* c); void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* self, ValaField* f, ValaCCodeFile* decl_space); gchar* vala_ccode_base_module_get_ccode_declarator_suffix (ValaDataType* type); gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node); gchar* vala_ccode_base_module_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim); gchar* vala_ccode_base_module_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname); gchar* vala_ccode_base_module_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname); static void vala_ccode_base_module_real_visit_field (ValaCodeVisitor* base, ValaField* f); void vala_ccode_base_module_check_type (ValaCCodeBaseModule* self, ValaDataType* type); ValaTargetValue* vala_ccode_base_module_get_field_cvalue (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance); ValaTargetValue* vala_ccode_base_module_load_this_parameter (ValaCCodeBaseModule* self, ValaTypeSymbol* sym); ValaCCodeExpression* vala_ccode_base_module_get_array_length_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim); ValaCCodeExpression* vala_ccode_base_module_get_array_size_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value); ValaArrayList* vala_ccode_base_module_get_temp_ref_values (ValaCCodeBaseModule* self); ValaCCodeExpression* vala_ccode_base_module_destroy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition); gboolean vala_ccode_base_module_requires_destroy (ValaCCodeBaseModule* self, ValaDataType* type); ValaCCodeExpression* vala_ccode_base_module_destroy_field (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance); ValaCCodeExpression* vala_ccode_base_module_default_value_for_type (ValaCCodeBaseModule* self, ValaDataType* type, gboolean initializer_expression); gboolean vala_ccode_base_module_is_constant_ccode_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr); gchar* vala_ccode_base_module_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname); ValaLocalVariable* vala_ccode_base_module_get_temp_variable (ValaCCodeBaseModule* self, ValaDataType* type, gboolean value_owned, ValaCodeNode* node_reference, gboolean init); ValaCCodeExpression* vala_ccode_base_module_get_variable_cexpression (ValaCCodeBaseModule* self, const gchar* name); gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, const gchar* name); gboolean vala_ccode_base_module_is_pure_ccode_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr); static void vala_ccode_base_module_real_visit_formal_parameter (ValaCodeVisitor* base, ValaParameter* p); static void vala_ccode_base_module_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop); void vala_ccode_base_module_generate_class_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space); void vala_ccode_base_module_generate_interface_declaration (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space); void vala_ccode_base_module_generate_delegate_declaration (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space); void vala_ccode_base_module_generate_struct_declaration (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space); void vala_ccode_base_module_generate_error_domain_declaration (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space); void vala_ccode_base_module_generate_class_struct_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space); static void vala_ccode_base_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space); static void vala_ccode_base_module_real_generate_struct_declaration (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space); static void vala_ccode_base_module_real_generate_delegate_declaration (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space); void vala_ccode_base_module_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction); static void vala_ccode_base_module_real_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction); void vala_ccode_base_module_generate_property_accessor_declaration (ValaCCodeBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space); ValaDataType* vala_ccode_base_module_get_data_type_for_symbol (ValaTypeSymbol* sym); static void vala_ccode_base_module_real_visit_property_accessor (ValaCodeVisitor* base, ValaPropertyAccessor* acc); gboolean vala_ccode_base_module_is_gobject_property (ValaCCodeBaseModule* self, ValaProperty* prop); ValaDataType* vala_ccode_base_module_get_current_return_type (ValaCCodeBaseModule* self); static void vala_ccode_base_module_create_property_type_check_statement (ValaCCodeBaseModule* self, ValaProperty* prop, gboolean check_return_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name); gchar* vala_ccode_base_module_get_ccode_real_name (ValaSymbol* sym); ValaCCodeExpression* vala_ccode_base_module_get_cvalue_ (ValaCCodeBaseModule* self, ValaTargetValue* value); ValaTargetValue* vala_ccode_base_module_transform_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaDataType* target_type, ValaCodeNode* node); ValaGLibValue* vala_glib_value_new (ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue); ValaGLibValue* vala_glib_value_construct (GType object_type, ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue); GType vala_glib_value_get_type (void) G_GNUC_CONST; gboolean vala_ccode_base_module_get_current_method_inner_error (ValaCCodeBaseModule* self); gboolean vala_ccode_base_module_get_ccode_notify (ValaProperty* prop); ValaCCodeConstant* vala_ccode_base_module_get_property_canonical_cconstant (ValaCCodeBaseModule* self, ValaProperty* prop); static void vala_ccode_base_module_real_visit_destructor (ValaCodeVisitor* base, ValaDestructor* d); gint vala_ccode_base_module_get_block_id (ValaCCodeBaseModule* self, ValaBlock* b); gboolean vala_ccode_base_module_no_implicit_copy (ValaCCodeBaseModule* self, ValaDataType* type); gboolean vala_ccode_base_module_is_reference_counting (ValaTypeSymbol* sym); gboolean vala_ccode_base_module_get_ccode_is_gboxed (ValaTypeSymbol* sym); static void vala_ccode_base_module_capture_parameter (ValaCCodeBaseModule* self, ValaParameter* param, ValaCCodeStruct* data, gint block_id); gboolean vala_ccode_base_module_requires_copy (ValaCCodeBaseModule* self, ValaDataType* type); ValaTargetValue* vala_ccode_base_module_copy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node); gchar* vala_ccode_base_module_get_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim); ValaTargetValue* vala_ccode_base_module_get_parameter_cvalue (ValaCCodeBaseModule* self, ValaParameter* param); ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value); static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, ValaBlock* b); void vala_ccode_base_module_emit_context_push_symbol (ValaCCodeBaseModuleEmitContext* self, ValaSymbol* symbol); ValaDataType* vala_ccode_base_module_get_this_type (ValaCCodeBaseModule* self); ValaTypeSymbol* vala_ccode_base_module_get_current_type_symbol (ValaCCodeBaseModule* self); gchar* vala_ccode_base_module_get_local_cname (ValaCCodeBaseModule* self, ValaLocalVariable* local); ValaClass* vala_ccode_base_module_get_current_class (ValaCCodeBaseModule* self); ValaCCodeExpression* vala_ccode_base_module_get_dup_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup); ValaCCodeExpression* vala_ccode_base_module_get_result_cexpression (ValaCCodeBaseModule* self, const gchar* cname); ValaCCodeExpression* vala_ccode_base_module_destroy_local (ValaCCodeBaseModule* self, ValaLocalVariable* local); ValaCCodeExpression* vala_ccode_base_module_destroy_parameter (ValaCCodeBaseModule* self, ValaParameter* param); void vala_ccode_base_module_return_out_parameter (ValaCCodeBaseModule* self, ValaParameter* param); void vala_ccode_base_module_emit_context_pop_symbol (ValaCCodeBaseModuleEmitContext* self); static void vala_ccode_base_module_real_visit_declaration_statement (ValaCodeVisitor* base, ValaDeclarationStatement* stmt); ValaCCodeExpression* vala_ccode_base_module_get_local_cexpression (ValaCCodeBaseModule* self, ValaLocalVariable* local); ValaMap* vala_ccode_base_module_get_variable_name_map (ValaCCodeBaseModule* self); gint vala_ccode_base_module_get_next_temp_var_id (ValaCCodeBaseModule* self); void vala_ccode_base_module_set_next_temp_var_id (ValaCCodeBaseModule* self, gint value); gboolean vala_ccode_base_module_is_simple_struct_creation (ValaCCodeBaseModule* self, ValaVariable* variable, ValaExpression* expr); static void vala_ccode_base_module_real_visit_local_variable (ValaCodeVisitor* base, ValaLocalVariable* local); void vala_ccode_base_module_emit_temp_var (ValaCCodeBaseModule* self, ValaLocalVariable* local); void vala_ccode_base_module_add_simple_check (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails); ValaTargetValue* vala_ccode_base_module_create_temp_value (ValaCCodeBaseModule* self, ValaDataType* type, gboolean init, ValaCodeNode* node_reference, gboolean* value_owned); ValaTargetValue* vala_ccode_base_module_get_local_cvalue (ValaCCodeBaseModule* self, ValaLocalVariable* local); void vala_ccode_base_module_set_array_size_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCCodeExpression* cvalue); ValaTargetValue* vala_ccode_base_module_load_temp_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue); ValaGLibValue* vala_glib_value_copy (ValaGLibValue* self); ValaTargetValue* vala_ccode_base_module_store_temp_value (ValaCCodeBaseModule* self, ValaTargetValue* initializer, ValaCodeNode* node_reference, gboolean* value_owned); void vala_ccode_base_module_store_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value); static void vala_ccode_base_module_real_visit_initializer_list (ValaCodeVisitor* base, ValaInitializerList* list); gchar* vala_ccode_base_module_get_ccode_type (ValaCodeNode* node); gboolean vala_ccode_base_module_get_ccode_array_null_terminated (ValaCodeNode* node); void vala_ccode_base_module_set_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue); static ValaLocalVariable* vala_ccode_base_module_real_create_local (ValaCodeGenerator* base, ValaDataType* type); static gboolean vala_ccode_base_module_is_in_generic_type (ValaCCodeBaseModule* self, ValaDataType* type); ValaCCodeExpression* vala_ccode_base_module_get_type_id_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup); gboolean vala_ccode_base_module_get_in_creation_method (ValaCCodeBaseModule* self); static ValaCCodeExpression* vala_ccode_base_module_real_get_dup_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup); gchar* vala_ccode_base_module_get_ccode_ref_function (ValaTypeSymbol* sym); gchar* vala_ccode_base_module_get_ccode_dup_function (ValaTypeSymbol* sym); gchar* vala_ccode_base_module_generate_dup_func_wrapper (ValaCCodeBaseModule* self, ValaDataType* type); static gchar* vala_ccode_base_module_generate_struct_dup_wrapper (ValaCCodeBaseModule* self, ValaValueType* value_type); static void vala_ccode_base_module_make_comparable_cexpression (ValaCCodeBaseModule* self, ValaDataType** left_type, ValaCCodeExpression** cleft, ValaDataType** right_type, ValaCCodeExpression** cright); ValaCCodeExpression* vala_ccode_base_module_try_cast_value_to_type (ValaCCodeBaseModule* self, ValaCCodeExpression* ccodeexpr, ValaDataType* from, ValaDataType* to, ValaExpression* expr); ValaCCodeFunctionCall* vala_ccode_base_module_generate_instance_cast (ValaCCodeBaseModule* self, ValaCCodeExpression* expr, ValaTypeSymbol* type); static gchar* vala_ccode_base_module_generate_struct_equal_function (ValaCCodeBaseModule* self, ValaStruct* st); gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym); gboolean vala_ccode_base_module_add_wrapper (ValaCCodeBaseModule* self, const gchar* wrapper_name); static gchar* vala_ccode_base_module_generate_numeric_equal_function (ValaCCodeBaseModule* self, ValaTypeSymbol* sym); gboolean vala_ccode_base_module_get_ccode_has_copy_function (ValaStruct* st); static void vala_ccode_base_module_generate_struct_copy_function (ValaCCodeBaseModule* self, ValaStruct* st); gchar* vala_ccode_base_module_get_ccode_copy_function (ValaTypeSymbol* sym); gchar* vala_ccode_base_module_generate_free_function_address_of_wrapper (ValaCCodeBaseModule* self, ValaDataType* type); gchar* vala_ccode_base_module_get_ccode_free_function (ValaTypeSymbol* sym); gchar* vala_ccode_base_module_generate_free_func_wrapper (ValaCCodeBaseModule* self, ValaDataType* type); gboolean vala_ccode_base_module_get_ccode_has_destroy_function (ValaStruct* st); static void vala_ccode_base_module_generate_struct_destroy_function (ValaCCodeBaseModule* self, ValaStruct* st); gchar* vala_ccode_base_module_get_ccode_destroy_function (ValaTypeSymbol* sym); ValaCCodeExpression* vala_ccode_base_module_get_destroy0_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup); ValaCCodeExpression* vala_ccode_base_module_get_destroy_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup); static gchar* vala_ccode_base_module_generate_collection_free_wrapper (ValaCCodeBaseModule* self, ValaDataType* collection_type, ValaCCodeIdentifier* element_destroy_func_expression); gchar* vala_ccode_base_module_get_ccode_unref_function (ValaObjectTypeSymbol* sym); static gboolean vala_ccode_base_module_is_free_function_address_of (ValaCCodeBaseModule* self, ValaDataType* type); gchar* vala_ccode_base_module_append_struct_array_free (ValaCCodeBaseModule* self, ValaStruct* st); static gchar* vala_ccode_base_module_real_append_struct_array_free (ValaCCodeBaseModule* self, ValaStruct* st); static ValaCCodeExpression* vala_ccode_base_module_real_destroy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition); ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value); gboolean vala_ccode_base_module_get_array_null_terminated (ValaCCodeBaseModule* self, ValaTargetValue* value); ValaCCodeExpression* vala_ccode_base_module_get_array_length_cexpr (ValaCCodeBaseModule* self, ValaTargetValue* value); static void vala_ccode_base_module_real_visit_end_full_expression (ValaCodeVisitor* base, ValaExpression* expr); static void vala_ccode_base_module_real_visit_expression_statement (ValaCodeVisitor* base, ValaExpressionStatement* stmt); void vala_ccode_base_module_append_scope_free (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at); static void vala_ccode_base_module_real_append_scope_free (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at); void vala_ccode_base_module_append_local_free (ValaCCodeBaseModule* self, ValaSymbol* sym, gboolean stop_at_loop, ValaCodeNode* stop_at); static void vala_ccode_base_module_append_param_free (ValaCCodeBaseModule* self, ValaMethod* m); gboolean vala_ccode_base_module_variable_accessible_in_finally (ValaCCodeBaseModule* self, ValaLocalVariable* local); ValaTryStatement* vala_ccode_base_module_get_current_try (ValaCCodeBaseModule* self); static void vala_ccode_base_module_real_visit_return_statement (ValaCodeVisitor* base, ValaReturnStatement* stmt); ValaPropertyAccessor* vala_ccode_base_module_get_current_property_accessor (ValaCCodeBaseModule* self); void vala_ccode_base_module_create_postcondition_statement (ValaCCodeBaseModule* self, ValaExpression* postcondition); void vala_ccode_base_module_set_current_method_return (ValaCCodeBaseModule* self, gboolean value); static ValaCCodeExpression* vala_ccode_base_module_get_lock_expression (ValaCCodeBaseModule* self, ValaStatement* stmt, ValaExpression* resource); static void vala_ccode_base_module_real_visit_lock_statement (ValaCodeVisitor* base, ValaLockStatement* stmt); static void vala_ccode_base_module_real_visit_unlock_statement (ValaCodeVisitor* base, ValaUnlockStatement* stmt); static void vala_ccode_base_module_real_visit_delete_statement (ValaCodeVisitor* base, ValaDeleteStatement* stmt); static void vala_ccode_base_module_real_visit_expression (ValaCodeVisitor* base, ValaExpression* expr); ValaCCodeExpression* vala_ccode_base_module_convert_from_generic_pointer (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr, ValaDataType* actual_type); ValaCCodeExpression* vala_ccode_base_module_convert_to_generic_pointer (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr, ValaDataType* actual_type); static void vala_ccode_base_module_real_visit_boolean_literal (ValaCodeVisitor* base, ValaBooleanLiteral* expr); static void vala_ccode_base_module_real_visit_character_literal (ValaCodeVisitor* base, ValaCharacterLiteral* expr); static void vala_ccode_base_module_real_visit_integer_literal (ValaCodeVisitor* base, ValaIntegerLiteral* expr); static void vala_ccode_base_module_real_visit_real_literal (ValaCodeVisitor* base, ValaRealLiteral* expr); static void vala_ccode_base_module_real_visit_string_literal (ValaCodeVisitor* base, ValaStringLiteral* expr); static void vala_ccode_base_module_real_visit_regex_literal (ValaCodeVisitor* base, ValaRegexLiteral* expr); static void vala_ccode_base_module_real_visit_null_literal (ValaCodeVisitor* base, ValaNullLiteral* expr); void vala_ccode_base_module_append_array_length (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* size); void vala_ccode_base_module_set_delegate_target (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* delegate_target); void vala_ccode_base_module_set_delegate_target_destroy_notify (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* destroy_notify); static ValaTargetValue* vala_ccode_base_module_real_get_local_cvalue (ValaCCodeBaseModule* self, ValaLocalVariable* local); static ValaTargetValue* vala_ccode_base_module_real_get_parameter_cvalue (ValaCCodeBaseModule* self, ValaParameter* param); static ValaTargetValue* vala_ccode_base_module_real_get_field_cvalue (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance); ValaTargetValue* vala_ccode_base_module_load_variable (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value); static ValaTargetValue* vala_ccode_base_module_real_load_variable (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value); static ValaTargetValue* vala_ccode_base_module_real_load_this_parameter (ValaCCodeBaseModule* self, ValaTypeSymbol* sym); static void vala_ccode_base_module_real_store_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value); static gchar* vala_ccode_base_module_real_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname); ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cexpression (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify); static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_cexpression (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify); static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value); static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value); static gchar* vala_ccode_base_module_real_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname); static void vala_ccode_base_module_real_visit_base_access (ValaCodeVisitor* base, ValaBaseAccess* expr); static void vala_ccode_base_module_real_visit_postfix_expression (ValaCodeVisitor* base, ValaPostfixExpression* expr); static ValaMemberAccess* vala_ccode_base_module_find_property_access (ValaCCodeBaseModule* self, ValaExpression* expr); void vala_ccode_base_module_store_property (ValaCCodeBaseModule* self, ValaProperty* prop, ValaExpression* instance, ValaTargetValue* value); static gboolean vala_ccode_base_module_is_limited_generic_type (ValaCCodeBaseModule* self, ValaDataType* type); static gboolean vala_ccode_base_module_is_ref_function_void (ValaCCodeBaseModule* self, ValaDataType* type); gboolean vala_ccode_base_module_get_ccode_ref_function_void (ValaClass* cl); static gboolean vala_ccode_base_module_is_ref_sink_function_void (ValaCCodeBaseModule* self, ValaDataType* type); gboolean vala_ccode_base_module_get_ccode_ref_sink_function_void (ValaClass* cl); gboolean vala_ccode_base_module_get_ccode_free_function_address_of (ValaClass* cl); static ValaTargetValue* vala_ccode_base_module_real_copy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node); gboolean vala_ccode_base_module_get_non_null (ValaCCodeBaseModule* self, ValaTargetValue* value); static gboolean vala_ccode_base_module_is_reference_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg); static gboolean vala_ccode_base_module_is_nullable_value_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg); static gboolean vala_ccode_base_module_is_signed_integer_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg); static gboolean vala_ccode_base_module_is_unsigned_integer_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg); static void vala_ccode_base_module_check_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg); static void vala_ccode_base_module_real_generate_class_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space); static void vala_ccode_base_module_real_generate_interface_declaration (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space); void vala_ccode_base_module_generate_method_declaration (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space); static void vala_ccode_base_module_real_generate_method_declaration (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space); static void vala_ccode_base_module_real_generate_error_domain_declaration (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space); void vala_ccode_base_module_add_generic_type_arguments (ValaCCodeBaseModule* self, ValaMap* arg_map, ValaList* type_args, ValaCodeNode* expr, gboolean is_chainup, ValaList* type_parameters); gint vala_ccode_base_module_get_param_pos (ValaCCodeBaseModule* self, gdouble param_pos, gboolean ellipsis); static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCodeVisitor* base, ValaObjectCreationExpression* expr); gboolean vala_ccode_base_module_get_ccode_has_new_function (ValaMethod* m); gdouble vala_ccode_base_module_get_ccode_instance_pos (ValaCodeNode* node); gboolean vala_ccode_base_module_get_ccode_simple_generics (ValaMethod* m); gdouble vala_ccode_base_module_get_ccode_array_length_pos (ValaCodeNode* node); ValaCCodeExpression* vala_ccode_base_module_get_array_length_cexpression (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim); gdouble vala_ccode_base_module_get_ccode_delegate_target_pos (ValaCodeNode* node); ValaCCodeExpression* vala_ccode_base_module_handle_struct_argument (ValaCCodeBaseModule* self, ValaParameter* param, ValaExpression* arg, ValaCCodeExpression* cexpr); gdouble vala_ccode_base_module_get_ccode_pos (ValaParameter* param); void vala_ccode_base_module_set_current_method_inner_error (ValaCCodeBaseModule* self, gboolean value); gchar* vala_ccode_base_module_get_ccode_sentinel (ValaMethod* m); static void vala_ccode_base_module_real_visit_sizeof_expression (ValaCodeVisitor* base, ValaSizeofExpression* expr); static void vala_ccode_base_module_real_visit_typeof_expression (ValaCodeVisitor* base, ValaTypeofExpression* expr); static void vala_ccode_base_module_real_visit_unary_expression (ValaCodeVisitor* base, ValaUnaryExpression* expr); void vala_glib_value_append_array_length_cvalue (ValaGLibValue* self, ValaCCodeExpression* length_cvalue); ValaTargetValue* vala_ccode_base_module_try_cast_variant_to_type (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaDataType* to, ValaCodeNode* node); ValaCCodeExpression* vala_ccode_base_module_deserialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail); static ValaCCodeExpression* vala_ccode_base_module_real_deserialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail); ValaCCodeExpression* vala_ccode_base_module_serialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr); static ValaCCodeExpression* vala_ccode_base_module_real_serialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr); static void vala_ccode_base_module_real_visit_cast_expression (ValaCodeVisitor* base, ValaCastExpression* expr); static ValaCCodeExpression* vala_ccode_base_module_create_type_check (ValaCCodeBaseModule* self, ValaCCodeNode* ccodenode, ValaDataType* type); ValaCCodeExpression* vala_ccode_base_module_get_delegate_target (ValaCCodeBaseModule* self, ValaExpression* expr); ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_destroy_notify (ValaCCodeBaseModule* self, ValaExpression* expr); static void vala_ccode_base_module_real_visit_named_argument (ValaCodeVisitor* base, ValaNamedArgument* expr); static void vala_ccode_base_module_real_visit_pointer_indirection (ValaCodeVisitor* base, ValaPointerIndirection* expr); static void vala_ccode_base_module_real_visit_addressof_expression (ValaCodeVisitor* base, ValaAddressofExpression* expr); static void vala_ccode_base_module_real_visit_reference_transfer_expression (ValaCodeVisitor* base, ValaReferenceTransferExpression* expr); static void vala_ccode_base_module_real_visit_binary_expression (ValaCodeVisitor* base, ValaBinaryExpression* expr); static gchar* vala_ccode_base_module_generate_array_contains_wrapper (ValaCCodeBaseModule* self, ValaArrayType* array_type); gchar* vala_ccode_base_module_get_ccode_type_check_function (ValaTypeSymbol* sym); static void vala_ccode_base_module_real_visit_type_check (ValaCodeVisitor* base, ValaTypeCheck* expr); static void vala_ccode_base_module_real_visit_lambda_expression (ValaCodeVisitor* base, ValaLambdaExpression* lambda); ValaBlock* vala_ccode_base_module_get_current_closure_block (ValaCCodeBaseModule* self); gchar* vala_ccode_base_module_get_ccode_ref_sink_function (ValaObjectTypeSymbol* sym); gboolean vala_ccode_base_module_is_lvalue_access_allowed (ValaCCodeBaseModule* self, ValaDataType* type); ValaCCodeExpression* vala_ccode_base_module_get_implicit_cast_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node); static ValaCCodeExpression* vala_ccode_base_module_real_get_implicit_cast_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node); ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node); gboolean vala_ccode_base_module_get_ccode_no_accessor_method (ValaProperty* p); gchar* vala_ccode_base_module_get_dynamic_property_setter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node); gboolean vala_ccode_base_module_add_generated_external_symbol (ValaCCodeBaseModule* self, ValaSymbol* external_symbol); gboolean vala_ccode_base_module_get_lvalue (ValaCCodeBaseModule* self, ValaTargetValue* value); gchar* vala_ccode_base_module_get_ccode_default_value (ValaTypeSymbol* sym); void vala_ccode_base_module_create_type_check_statement (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name); static void vala_ccode_base_module_real_create_type_check_statement (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name); GType vala_ccode_attribute_get_type (void) G_GNUC_CONST; ValaCCodeAttribute* vala_ccode_base_module_get_ccode_attribute (ValaCodeNode* node); ValaCCodeAttribute* vala_ccode_attribute_new (ValaCodeNode* node); ValaCCodeAttribute* vala_ccode_attribute_construct (GType object_type, ValaCodeNode* node); const gchar* vala_ccode_attribute_get_name (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_const_name (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_type_name (ValaInterface* iface); const gchar* vala_ccode_attribute_get_type_name (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_lower_case_suffix (ValaSymbol* sym); const gchar* vala_ccode_attribute_get_header_filenames (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_prefix (ValaSymbol* sym); const gchar* vala_ccode_attribute_get_prefix (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_lower_case_prefix (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_lower_case_suffix (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_ref_function (ValaCCodeAttribute* self); gboolean vala_ccode_attribute_get_ref_function_void (ValaCCodeAttribute* self); gboolean vala_ccode_attribute_get_free_function_address_of (ValaCCodeAttribute* self); gboolean vala_ccode_attribute_get_ref_sink_function_void (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_unref_function (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_ref_sink_function (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_copy_function (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_destroy_function (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_free_function (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_type_id (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_marshaller_type_name (ValaCodeNode* node); const gchar* vala_ccode_attribute_get_marshaller_type_name (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_get_value_function (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_set_value_function (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_take_value_function (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_param_spec_function (ValaCodeNode* sym); const gchar* vala_ccode_attribute_get_param_spec_function (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_default_value (ValaCCodeAttribute* self); gboolean vala_ccode_attribute_get_array_length (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_array_length_type (ValaCodeNode* node); const gchar* vala_ccode_attribute_get_array_length_type (ValaCCodeAttribute* self); gboolean vala_ccode_attribute_get_array_null_terminated (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_array_length_name (ValaCodeNode* node); const gchar* vala_ccode_attribute_get_array_length_name (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_array_length_expr (ValaCodeNode* node); const gchar* vala_ccode_attribute_get_array_length_expr (ValaCCodeAttribute* self); gdouble vala_ccode_base_module_get_ccode_destroy_notify_pos (ValaCodeNode* node); gboolean vala_ccode_base_module_get_ccode_delegate_target (ValaCodeNode* node); gboolean vala_ccode_attribute_get_delegate_target (ValaCCodeAttribute* self); gdouble vala_ccode_attribute_get_pos (ValaCCodeAttribute* self); const gchar* vala_ccode_attribute_get_real_name (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_vfunc_name (ValaMethod* m); const gchar* vala_ccode_attribute_get_vfunc_name (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_finish_name (ValaMethod* m); const gchar* vala_ccode_attribute_get_finish_name (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_finish_vfunc_name (ValaMethod* m); const gchar* vala_ccode_attribute_get_finish_vfunc_name (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_finish_real_name (ValaMethod* m); const gchar* vala_ccode_attribute_get_finish_real_name (ValaCCodeAttribute* self); gboolean vala_ccode_base_module_get_ccode_has_generic_type_parameter (ValaMethod* m); gdouble vala_ccode_base_module_get_ccode_generic_type_pos (ValaMethod* m); const gchar* vala_ccode_attribute_get_sentinel (ValaCCodeAttribute* self); gchar* vala_ccode_base_module_get_ccode_nick (ValaProperty* prop); gchar* vala_ccode_base_module_get_ccode_blurb (ValaProperty* prop); ValaCCodeConstant* vala_ccode_base_module_get_signal_canonical_constant (ValaCCodeBaseModule* self, ValaSignal* sig, const gchar* detail); ValaCCodeConstant* vala_ccode_base_module_get_enum_value_canonical_cconstant (ValaEnumValue* ev); gboolean vala_ccode_base_module_get_signal_has_emitter (ValaCCodeBaseModule* self, ValaSignal* sig); static void vala_ccode_base_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl); static gboolean vala_ccode_base_module_real_is_gobject_property (ValaCCodeBaseModule* self, ValaProperty* prop); ValaConstructor* vala_ccode_base_module_get_current_constructor (ValaCCodeBaseModule* self); ValaDestructor* vala_ccode_base_module_get_current_destructor (ValaCCodeBaseModule* self); void vala_ccode_base_module_return_default_value (ValaCCodeBaseModule* self, ValaDataType* return_type); void vala_ccode_base_module_generate_dynamic_method_wrapper (ValaCCodeBaseModule* self, ValaDynamicMethod* method); static void vala_ccode_base_module_real_generate_dynamic_method_wrapper (ValaCCodeBaseModule* self, ValaDynamicMethod* method); gboolean vala_ccode_base_module_method_has_wrapper (ValaCCodeBaseModule* self, ValaMethod* method); static gboolean vala_ccode_base_module_real_method_has_wrapper (ValaCCodeBaseModule* self, ValaMethod* method); ValaCCodeFunctionCall* vala_ccode_base_module_get_param_spec (ValaCCodeBaseModule* self, ValaProperty* prop); static ValaCCodeFunctionCall* vala_ccode_base_module_real_get_param_spec (ValaCCodeBaseModule* self, ValaProperty* prop); ValaCCodeFunctionCall* vala_ccode_base_module_get_signal_creation (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type); static ValaCCodeFunctionCall* vala_ccode_base_module_real_get_signal_creation (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type); void vala_ccode_base_module_register_dbus_info (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable); static void vala_ccode_base_module_real_register_dbus_info (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable); gchar* vala_ccode_base_module_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node); static gchar* vala_ccode_base_module_real_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node); static gchar* vala_ccode_base_module_real_get_dynamic_property_setter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node); gchar* vala_ccode_base_module_get_dynamic_signal_cname (ValaCCodeBaseModule* self, ValaDynamicSignal* node); static gchar* vala_ccode_base_module_real_get_dynamic_signal_cname (ValaCCodeBaseModule* self, ValaDynamicSignal* node); gchar* vala_ccode_base_module_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node); static gchar* vala_ccode_base_module_real_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node); gchar* vala_ccode_base_module_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node); static gchar* vala_ccode_base_module_real_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node); gchar* vala_ccode_base_module_get_dynamic_signal_disconnect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node); static gchar* vala_ccode_base_module_real_get_dynamic_signal_disconnect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node); static gchar* vala_ccode_base_module_real_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim); static gchar* vala_ccode_base_module_real_get_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim); static ValaCCodeExpression* vala_ccode_base_module_real_get_array_length_cexpression (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim); static ValaCCodeExpression* vala_ccode_base_module_real_get_array_length_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim); static gchar* vala_ccode_base_module_real_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname); static void vala_ccode_base_module_real_add_simple_check (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails); gchar* vala_ccode_base_module_generate_ready_function (ValaCCodeBaseModule* self, ValaMethod* m); static gchar* vala_ccode_base_module_real_generate_ready_function (ValaCCodeBaseModule* self, ValaMethod* m); ValaList* vala_ccode_base_module_get_array_lengths (ValaCCodeBaseModule* self, ValaExpression* expr); gchar* vala_ccode_base_module_get_ctype (ValaCCodeBaseModule* self, ValaTargetValue* value); void vala_ccode_base_module_set_current_try (ValaCCodeBaseModule* self, ValaTryStatement* value); ValaCatchClause* vala_ccode_base_module_get_current_catch (ValaCCodeBaseModule* self); void vala_ccode_base_module_set_current_catch (ValaCCodeBaseModule* self, ValaCatchClause* value); gboolean vala_ccode_base_module_get_current_method_return (ValaCCodeBaseModule* self); enum { VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_DUMMY_PROPERTY }; static void vala_ccode_base_module_emit_context_finalize (ValaCCodeBaseModuleEmitContext* obj); static void vala_ccode_base_module_finalize (ValaCodeVisitor* obj); enum { VALA_GLIB_VALUE_DUMMY_PROPERTY }; static void vala_glib_value_finalize (ValaTargetValue* obj); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); static gint _vala_array_length (gpointer array); gboolean vala_ccode_base_module_is_in_coroutine (ValaCCodeBaseModule* self) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; ValaMethod* _tmp1_; ValaMethod* _tmp2_; gboolean _tmp7_; g_return_val_if_fail (self != NULL, FALSE); _tmp1_ = vala_ccode_base_module_get_current_method (self); _tmp2_ = _tmp1_; if (_tmp2_ != NULL) { ValaMethod* _tmp3_; ValaMethod* _tmp4_; gboolean _tmp5_; gboolean _tmp6_; _tmp3_ = vala_ccode_base_module_get_current_method (self); _tmp4_ = _tmp3_; _tmp5_ = vala_method_get_coroutine (_tmp4_); _tmp6_ = _tmp5_; _tmp0_ = _tmp6_; } else { _tmp0_ = FALSE; } _tmp7_ = _tmp0_; result = _tmp7_; return result; } static gpointer _vala_code_node_ref0 (gpointer self) { return self ? vala_code_node_ref (self) : NULL; } gboolean vala_ccode_base_module_is_in_constructor (ValaCCodeBaseModule* self) { gboolean result = FALSE; ValaMethod* _tmp0_; ValaMethod* _tmp1_; ValaSymbol* _tmp2_; ValaSymbol* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* sym; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = vala_ccode_base_module_get_current_method (self); _tmp1_ = _tmp0_; if (_tmp1_ != NULL) { result = FALSE; return result; } _tmp2_ = vala_ccode_base_module_get_current_symbol (self); _tmp3_ = _tmp2_; _tmp4_ = _vala_code_node_ref0 (_tmp3_); sym = _tmp4_; while (TRUE) { ValaSymbol* _tmp5_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; ValaSymbol* _tmp8_; ValaSymbol* _tmp9_; ValaSymbol* _tmp10_; _tmp5_ = sym; if (!(_tmp5_ != NULL)) { break; } _tmp6_ = sym; if (VALA_IS_CONSTRUCTOR (_tmp6_)) { result = TRUE; _vala_code_node_unref0 (sym); return result; } _tmp7_ = sym; _tmp8_ = vala_symbol_get_parent_symbol (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = _vala_code_node_ref0 (_tmp9_); _vala_code_node_unref0 (sym); sym = _tmp10_; } result = FALSE; _vala_code_node_unref0 (sym); return result; } gboolean vala_ccode_base_module_is_in_destructor (ValaCCodeBaseModule* self) { gboolean result = FALSE; ValaMethod* _tmp0_; ValaMethod* _tmp1_; ValaSymbol* _tmp2_; ValaSymbol* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* sym; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = vala_ccode_base_module_get_current_method (self); _tmp1_ = _tmp0_; if (_tmp1_ != NULL) { result = FALSE; return result; } _tmp2_ = vala_ccode_base_module_get_current_symbol (self); _tmp3_ = _tmp2_; _tmp4_ = _vala_code_node_ref0 (_tmp3_); sym = _tmp4_; while (TRUE) { ValaSymbol* _tmp5_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; ValaSymbol* _tmp8_; ValaSymbol* _tmp9_; ValaSymbol* _tmp10_; _tmp5_ = sym; if (!(_tmp5_ != NULL)) { break; } _tmp6_ = sym; if (VALA_IS_DESTRUCTOR (_tmp6_)) { result = TRUE; _vala_code_node_unref0 (sym); return result; } _tmp7_ = sym; _tmp8_ = vala_symbol_get_parent_symbol (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = _vala_code_node_ref0 (_tmp9_); _vala_code_node_unref0 (sym); sym = _tmp10_; } result = FALSE; _vala_code_node_unref0 (sym); return result; } ValaBlock* vala_ccode_base_module_next_closure_block (ValaCCodeBaseModule* self, ValaSymbol* sym) { ValaBlock* result = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (sym != NULL, NULL); while (TRUE) { ValaSymbol* _tmp0_; ValaMethod* method; gboolean _tmp1_ = FALSE; ValaMethod* _tmp2_; gboolean _tmp6_; ValaSymbol* _tmp7_; ValaBlock* block; gboolean _tmp8_ = FALSE; ValaMethod* _tmp9_; gboolean _tmp11_; gboolean _tmp12_ = FALSE; ValaBlock* _tmp13_; gboolean _tmp17_; ValaSymbol* _tmp19_; ValaSymbol* _tmp20_; ValaSymbol* _tmp21_; _tmp0_ = sym; method = VALA_IS_METHOD (_tmp0_) ? ((ValaMethod*) _tmp0_) : NULL; _tmp2_ = method; if (_tmp2_ != NULL) { ValaMethod* _tmp3_; gboolean _tmp4_; gboolean _tmp5_; _tmp3_ = method; _tmp4_ = vala_method_get_closure (_tmp3_); _tmp5_ = _tmp4_; _tmp1_ = !_tmp5_; } else { _tmp1_ = FALSE; } _tmp6_ = _tmp1_; if (_tmp6_) { break; } _tmp7_ = sym; block = VALA_IS_BLOCK (_tmp7_) ? ((ValaBlock*) _tmp7_) : NULL; _tmp9_ = method; if (_tmp9_ == NULL) { ValaBlock* _tmp10_; _tmp10_ = block; _tmp8_ = _tmp10_ == NULL; } else { _tmp8_ = FALSE; } _tmp11_ = _tmp8_; if (_tmp11_) { break; } _tmp13_ = block; if (_tmp13_ != NULL) { ValaBlock* _tmp14_; gboolean _tmp15_; gboolean _tmp16_; _tmp14_ = block; _tmp15_ = vala_block_get_captured (_tmp14_); _tmp16_ = _tmp15_; _tmp12_ = _tmp16_; } else { _tmp12_ = FALSE; } _tmp17_ = _tmp12_; if (_tmp17_) { ValaBlock* _tmp18_; _tmp18_ = block; result = _tmp18_; return result; } _tmp19_ = sym; _tmp20_ = vala_symbol_get_parent_symbol (_tmp19_); _tmp21_ = _tmp20_; sym = _tmp21_; } result = NULL; return result; } ValaCCodeBaseModule* vala_ccode_base_module_construct (GType object_type) { ValaCCodeBaseModule* self = NULL; GHashFunc _tmp0_; GEqualFunc _tmp1_; ValaHashSet* _tmp2_; ValaSet* _tmp3_; ValaSet* _tmp4_; ValaSet* _tmp5_; ValaSet* _tmp6_; ValaSet* _tmp7_; ValaSet* _tmp8_; ValaSet* _tmp9_; ValaSet* _tmp10_; ValaSet* _tmp11_; ValaSet* _tmp12_; ValaSet* _tmp13_; ValaSet* _tmp14_; ValaSet* _tmp15_; ValaSet* _tmp16_; ValaSet* _tmp17_; ValaSet* _tmp18_; ValaSet* _tmp19_; ValaSet* _tmp20_; GHashFunc _tmp21_; GEqualFunc _tmp22_; ValaHashSet* _tmp23_; ValaSet* _tmp24_; ValaSet* _tmp25_; ValaSet* _tmp26_; ValaSet* _tmp27_; ValaSet* _tmp28_; ValaSet* _tmp29_; ValaSet* _tmp30_; ValaSet* _tmp31_; ValaSet* _tmp32_; ValaSet* _tmp33_; ValaSet* _tmp34_; ValaSet* _tmp35_; ValaSet* _tmp36_; ValaSet* _tmp37_; ValaSet* _tmp38_; ValaSet* _tmp39_; ValaSet* _tmp40_; ValaSet* _tmp41_; ValaSet* _tmp42_; ValaSet* _tmp43_; ValaSet* _tmp44_; ValaSet* _tmp45_; ValaSet* _tmp46_; ValaSet* _tmp47_; ValaSet* _tmp48_; ValaSet* _tmp49_; ValaSet* _tmp50_; ValaSet* _tmp51_; ValaSet* _tmp52_; ValaSet* _tmp53_; ValaSet* _tmp54_; ValaSet* _tmp55_; ValaSet* _tmp56_; ValaSet* _tmp57_; ValaSet* _tmp58_; ValaSet* _tmp59_; ValaSet* _tmp60_; ValaSet* _tmp61_; ValaSet* _tmp62_; ValaSet* _tmp63_; ValaSet* _tmp64_; ValaSet* _tmp65_; self = (ValaCCodeBaseModule*) vala_code_generator_construct (object_type); _tmp0_ = g_str_hash; _tmp1_ = g_str_equal; _tmp2_ = vala_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp0_, _tmp1_); _vala_iterable_unref0 (self->predefined_marshal_set); self->predefined_marshal_set = (ValaSet*) _tmp2_; _tmp3_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp3_, "VOID:VOID"); _tmp4_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp4_, "VOID:BOOLEAN"); _tmp5_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp5_, "VOID:CHAR"); _tmp6_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp6_, "VOID:UCHAR"); _tmp7_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp7_, "VOID:INT"); _tmp8_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp8_, "VOID:UINT"); _tmp9_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp9_, "VOID:LONG"); _tmp10_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp10_, "VOID:ULONG"); _tmp11_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp11_, "VOID:ENUM"); _tmp12_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp12_, "VOID:FLAGS"); _tmp13_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp13_, "VOID:FLOAT"); _tmp14_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp14_, "VOID:DOUBLE"); _tmp15_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp15_, "VOID:STRING"); _tmp16_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp16_, "VOID:POINTER"); _tmp17_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp17_, "VOID:OBJECT"); _tmp18_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp18_, "STRING:OBJECT,POINTER"); _tmp19_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp19_, "VOID:UINT,POINTER"); _tmp20_ = self->predefined_marshal_set; vala_collection_add ((ValaCollection*) _tmp20_, "BOOLEAN:FLAGS"); _tmp21_ = g_str_hash; _tmp22_ = g_str_equal; _tmp23_ = vala_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp21_, _tmp22_); _vala_iterable_unref0 (self->priv->reserved_identifiers); self->priv->reserved_identifiers = (ValaSet*) _tmp23_; _tmp24_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp24_, "_Bool"); _tmp25_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp25_, "_Complex"); _tmp26_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp26_, "_Imaginary"); _tmp27_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp27_, "asm"); _tmp28_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp28_, "auto"); _tmp29_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp29_, "break"); _tmp30_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp30_, "case"); _tmp31_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp31_, "char"); _tmp32_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp32_, "const"); _tmp33_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp33_, "continue"); _tmp34_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp34_, "default"); _tmp35_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp35_, "do"); _tmp36_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp36_, "double"); _tmp37_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp37_, "else"); _tmp38_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp38_, "enum"); _tmp39_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp39_, "extern"); _tmp40_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp40_, "float"); _tmp41_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp41_, "for"); _tmp42_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp42_, "goto"); _tmp43_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp43_, "if"); _tmp44_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp44_, "inline"); _tmp45_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp45_, "int"); _tmp46_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp46_, "long"); _tmp47_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp47_, "register"); _tmp48_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp48_, "restrict"); _tmp49_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp49_, "return"); _tmp50_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp50_, "short"); _tmp51_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp51_, "signed"); _tmp52_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp52_, "sizeof"); _tmp53_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp53_, "static"); _tmp54_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp54_, "struct"); _tmp55_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp55_, "switch"); _tmp56_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp56_, "typedef"); _tmp57_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp57_, "union"); _tmp58_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp58_, "unsigned"); _tmp59_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp59_, "void"); _tmp60_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp60_, "volatile"); _tmp61_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp61_, "while"); _tmp62_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp62_, "cdecl"); _tmp63_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp63_, "error"); _tmp64_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp64_, "result"); _tmp65_ = self->priv->reserved_identifiers; vala_collection_add ((ValaCollection*) _tmp65_, "self"); return self; } static gpointer _vala_iterable_ref0 (gpointer self) { return self ? vala_iterable_ref (self) : NULL; } static void vala_ccode_base_module_real_emit (ValaCodeGenerator* base, ValaCodeContext* context) { ValaCCodeBaseModule * self; ValaCodeContext* _tmp0_; ValaCodeContext* _tmp1_; ValaNamespace* _tmp2_; ValaNamespace* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* _tmp5_; ValaScope* _tmp6_; ValaScope* _tmp7_; ValaSymbol* _tmp8_ = NULL; ValaStruct* _tmp9_; ValaBooleanType* _tmp10_; ValaSymbol* _tmp11_; ValaScope* _tmp12_; ValaScope* _tmp13_; ValaSymbol* _tmp14_ = NULL; ValaStruct* _tmp15_; ValaIntegerType* _tmp16_; ValaSymbol* _tmp17_; ValaScope* _tmp18_; ValaScope* _tmp19_; ValaSymbol* _tmp20_ = NULL; ValaStruct* _tmp21_; ValaIntegerType* _tmp22_; ValaSymbol* _tmp23_; ValaScope* _tmp24_; ValaScope* _tmp25_; ValaSymbol* _tmp26_ = NULL; ValaStruct* _tmp27_; ValaIntegerType* _tmp28_; ValaSymbol* _tmp29_; ValaScope* _tmp30_; ValaScope* _tmp31_; ValaSymbol* _tmp32_ = NULL; ValaStruct* _tmp33_; ValaIntegerType* _tmp34_; ValaSymbol* _tmp35_; ValaScope* _tmp36_; ValaScope* _tmp37_; ValaSymbol* _tmp38_ = NULL; ValaStruct* _tmp39_; ValaIntegerType* _tmp40_; ValaSymbol* _tmp41_; ValaScope* _tmp42_; ValaScope* _tmp43_; ValaSymbol* _tmp44_ = NULL; ValaStruct* _tmp45_; ValaIntegerType* _tmp46_; ValaSymbol* _tmp47_; ValaScope* _tmp48_; ValaScope* _tmp49_; ValaSymbol* _tmp50_ = NULL; ValaStruct* _tmp51_; ValaIntegerType* _tmp52_; ValaSymbol* _tmp53_; ValaScope* _tmp54_; ValaScope* _tmp55_; ValaSymbol* _tmp56_ = NULL; ValaStruct* _tmp57_; ValaIntegerType* _tmp58_; ValaSymbol* _tmp59_; ValaScope* _tmp60_; ValaScope* _tmp61_; ValaSymbol* _tmp62_ = NULL; ValaStruct* _tmp63_; ValaIntegerType* _tmp64_; ValaSymbol* _tmp65_; ValaScope* _tmp66_; ValaScope* _tmp67_; ValaSymbol* _tmp68_ = NULL; ValaStruct* _tmp69_; ValaIntegerType* _tmp70_; ValaSymbol* _tmp71_; ValaScope* _tmp72_; ValaScope* _tmp73_; ValaSymbol* _tmp74_ = NULL; ValaStruct* _tmp75_; ValaIntegerType* _tmp76_; ValaSymbol* _tmp77_; ValaScope* _tmp78_; ValaScope* _tmp79_; ValaSymbol* _tmp80_ = NULL; ValaStruct* _tmp81_; ValaIntegerType* _tmp82_; ValaSymbol* _tmp83_; ValaScope* _tmp84_; ValaScope* _tmp85_; ValaSymbol* _tmp86_ = NULL; ValaStruct* _tmp87_; ValaIntegerType* _tmp88_; ValaSymbol* _tmp89_; ValaScope* _tmp90_; ValaScope* _tmp91_; ValaSymbol* _tmp92_ = NULL; ValaStruct* _tmp93_; ValaIntegerType* _tmp94_; ValaSymbol* _tmp95_; ValaScope* _tmp96_; ValaScope* _tmp97_; ValaSymbol* _tmp98_ = NULL; ValaStruct* _tmp99_; ValaIntegerType* _tmp100_; ValaSymbol* _tmp101_; ValaScope* _tmp102_; ValaScope* _tmp103_; ValaSymbol* _tmp104_ = NULL; ValaStruct* _tmp105_; ValaIntegerType* _tmp106_; ValaSymbol* _tmp107_; ValaScope* _tmp108_; ValaScope* _tmp109_; ValaSymbol* _tmp110_ = NULL; ValaStruct* _tmp111_; ValaFloatingType* _tmp112_; ValaSymbol* _tmp113_; ValaScope* _tmp114_; ValaScope* _tmp115_; ValaSymbol* _tmp116_ = NULL; ValaStruct* _tmp117_; ValaFloatingType* _tmp118_; ValaSymbol* _tmp119_; ValaScope* _tmp120_; ValaScope* _tmp121_; ValaSymbol* _tmp122_ = NULL; ValaClass* _tmp123_; ValaObjectType* _tmp124_; ValaSymbol* _tmp125_; ValaScope* _tmp126_; ValaScope* _tmp127_; ValaSymbol* _tmp128_ = NULL; ValaStruct* unichar_struct; ValaStruct* _tmp129_; ValaCodeContext* _tmp132_; ValaProfile _tmp133_; ValaProfile _tmp134_; ValaCCodeFile* _tmp262_; ValaCCodeFile* _tmp263_; ValaCCodeFile* _tmp264_; ValaCCodeFile* _tmp265_; ValaCodeContext* _tmp266_; ValaList* _tmp267_ = NULL; ValaList* source_files; ValaCodeContext* _tmp293_; const gchar* _tmp294_; const gchar* _tmp295_; ValaCodeContext* _tmp320_; const gchar* _tmp321_; const gchar* _tmp322_; ValaCodeContext* _tmp348_; const gchar* _tmp349_; const gchar* _tmp350_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (context != NULL); _tmp0_ = context; vala_ccode_base_module_set_context (self, _tmp0_); _tmp1_ = context; _tmp2_ = vala_code_context_get_root (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp3_); _vala_code_node_unref0 (self->root_symbol); self->root_symbol = _tmp4_; _tmp5_ = self->root_symbol; _tmp6_ = vala_symbol_get_scope (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_scope_lookup (_tmp7_, "bool"); _tmp9_ = VALA_STRUCT (_tmp8_); _tmp10_ = vala_boolean_type_new (_tmp9_); _vala_code_node_unref0 (self->bool_type); self->bool_type = (ValaDataType*) _tmp10_; _vala_code_node_unref0 (_tmp9_); _tmp11_ = self->root_symbol; _tmp12_ = vala_symbol_get_scope (_tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_scope_lookup (_tmp13_, "char"); _tmp15_ = VALA_STRUCT (_tmp14_); _tmp16_ = vala_integer_type_new (_tmp15_, NULL, NULL); _vala_code_node_unref0 (self->char_type); self->char_type = (ValaDataType*) _tmp16_; _vala_code_node_unref0 (_tmp15_); _tmp17_ = self->root_symbol; _tmp18_ = vala_symbol_get_scope (_tmp17_); _tmp19_ = _tmp18_; _tmp20_ = vala_scope_lookup (_tmp19_, "uchar"); _tmp21_ = VALA_STRUCT (_tmp20_); _tmp22_ = vala_integer_type_new (_tmp21_, NULL, NULL); _vala_code_node_unref0 (self->uchar_type); self->uchar_type = (ValaDataType*) _tmp22_; _vala_code_node_unref0 (_tmp21_); _tmp23_ = self->root_symbol; _tmp24_ = vala_symbol_get_scope (_tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_scope_lookup (_tmp25_, "short"); _tmp27_ = VALA_STRUCT (_tmp26_); _tmp28_ = vala_integer_type_new (_tmp27_, NULL, NULL); _vala_code_node_unref0 (self->short_type); self->short_type = (ValaDataType*) _tmp28_; _vala_code_node_unref0 (_tmp27_); _tmp29_ = self->root_symbol; _tmp30_ = vala_symbol_get_scope (_tmp29_); _tmp31_ = _tmp30_; _tmp32_ = vala_scope_lookup (_tmp31_, "ushort"); _tmp33_ = VALA_STRUCT (_tmp32_); _tmp34_ = vala_integer_type_new (_tmp33_, NULL, NULL); _vala_code_node_unref0 (self->ushort_type); self->ushort_type = (ValaDataType*) _tmp34_; _vala_code_node_unref0 (_tmp33_); _tmp35_ = self->root_symbol; _tmp36_ = vala_symbol_get_scope (_tmp35_); _tmp37_ = _tmp36_; _tmp38_ = vala_scope_lookup (_tmp37_, "int"); _tmp39_ = VALA_STRUCT (_tmp38_); _tmp40_ = vala_integer_type_new (_tmp39_, NULL, NULL); _vala_code_node_unref0 (self->int_type); self->int_type = (ValaDataType*) _tmp40_; _vala_code_node_unref0 (_tmp39_); _tmp41_ = self->root_symbol; _tmp42_ = vala_symbol_get_scope (_tmp41_); _tmp43_ = _tmp42_; _tmp44_ = vala_scope_lookup (_tmp43_, "uint"); _tmp45_ = VALA_STRUCT (_tmp44_); _tmp46_ = vala_integer_type_new (_tmp45_, NULL, NULL); _vala_code_node_unref0 (self->uint_type); self->uint_type = (ValaDataType*) _tmp46_; _vala_code_node_unref0 (_tmp45_); _tmp47_ = self->root_symbol; _tmp48_ = vala_symbol_get_scope (_tmp47_); _tmp49_ = _tmp48_; _tmp50_ = vala_scope_lookup (_tmp49_, "long"); _tmp51_ = VALA_STRUCT (_tmp50_); _tmp52_ = vala_integer_type_new (_tmp51_, NULL, NULL); _vala_code_node_unref0 (self->long_type); self->long_type = (ValaDataType*) _tmp52_; _vala_code_node_unref0 (_tmp51_); _tmp53_ = self->root_symbol; _tmp54_ = vala_symbol_get_scope (_tmp53_); _tmp55_ = _tmp54_; _tmp56_ = vala_scope_lookup (_tmp55_, "ulong"); _tmp57_ = VALA_STRUCT (_tmp56_); _tmp58_ = vala_integer_type_new (_tmp57_, NULL, NULL); _vala_code_node_unref0 (self->ulong_type); self->ulong_type = (ValaDataType*) _tmp58_; _vala_code_node_unref0 (_tmp57_); _tmp59_ = self->root_symbol; _tmp60_ = vala_symbol_get_scope (_tmp59_); _tmp61_ = _tmp60_; _tmp62_ = vala_scope_lookup (_tmp61_, "int8"); _tmp63_ = VALA_STRUCT (_tmp62_); _tmp64_ = vala_integer_type_new (_tmp63_, NULL, NULL); _vala_code_node_unref0 (self->int8_type); self->int8_type = (ValaDataType*) _tmp64_; _vala_code_node_unref0 (_tmp63_); _tmp65_ = self->root_symbol; _tmp66_ = vala_symbol_get_scope (_tmp65_); _tmp67_ = _tmp66_; _tmp68_ = vala_scope_lookup (_tmp67_, "uint8"); _tmp69_ = VALA_STRUCT (_tmp68_); _tmp70_ = vala_integer_type_new (_tmp69_, NULL, NULL); _vala_code_node_unref0 (self->uint8_type); self->uint8_type = (ValaDataType*) _tmp70_; _vala_code_node_unref0 (_tmp69_); _tmp71_ = self->root_symbol; _tmp72_ = vala_symbol_get_scope (_tmp71_); _tmp73_ = _tmp72_; _tmp74_ = vala_scope_lookup (_tmp73_, "int16"); _tmp75_ = VALA_STRUCT (_tmp74_); _tmp76_ = vala_integer_type_new (_tmp75_, NULL, NULL); _vala_code_node_unref0 (self->int16_type); self->int16_type = (ValaDataType*) _tmp76_; _vala_code_node_unref0 (_tmp75_); _tmp77_ = self->root_symbol; _tmp78_ = vala_symbol_get_scope (_tmp77_); _tmp79_ = _tmp78_; _tmp80_ = vala_scope_lookup (_tmp79_, "uint16"); _tmp81_ = VALA_STRUCT (_tmp80_); _tmp82_ = vala_integer_type_new (_tmp81_, NULL, NULL); _vala_code_node_unref0 (self->uint16_type); self->uint16_type = (ValaDataType*) _tmp82_; _vala_code_node_unref0 (_tmp81_); _tmp83_ = self->root_symbol; _tmp84_ = vala_symbol_get_scope (_tmp83_); _tmp85_ = _tmp84_; _tmp86_ = vala_scope_lookup (_tmp85_, "int32"); _tmp87_ = VALA_STRUCT (_tmp86_); _tmp88_ = vala_integer_type_new (_tmp87_, NULL, NULL); _vala_code_node_unref0 (self->int32_type); self->int32_type = (ValaDataType*) _tmp88_; _vala_code_node_unref0 (_tmp87_); _tmp89_ = self->root_symbol; _tmp90_ = vala_symbol_get_scope (_tmp89_); _tmp91_ = _tmp90_; _tmp92_ = vala_scope_lookup (_tmp91_, "uint32"); _tmp93_ = VALA_STRUCT (_tmp92_); _tmp94_ = vala_integer_type_new (_tmp93_, NULL, NULL); _vala_code_node_unref0 (self->uint32_type); self->uint32_type = (ValaDataType*) _tmp94_; _vala_code_node_unref0 (_tmp93_); _tmp95_ = self->root_symbol; _tmp96_ = vala_symbol_get_scope (_tmp95_); _tmp97_ = _tmp96_; _tmp98_ = vala_scope_lookup (_tmp97_, "int64"); _tmp99_ = VALA_STRUCT (_tmp98_); _tmp100_ = vala_integer_type_new (_tmp99_, NULL, NULL); _vala_code_node_unref0 (self->int64_type); self->int64_type = (ValaDataType*) _tmp100_; _vala_code_node_unref0 (_tmp99_); _tmp101_ = self->root_symbol; _tmp102_ = vala_symbol_get_scope (_tmp101_); _tmp103_ = _tmp102_; _tmp104_ = vala_scope_lookup (_tmp103_, "uint64"); _tmp105_ = VALA_STRUCT (_tmp104_); _tmp106_ = vala_integer_type_new (_tmp105_, NULL, NULL); _vala_code_node_unref0 (self->uint64_type); self->uint64_type = (ValaDataType*) _tmp106_; _vala_code_node_unref0 (_tmp105_); _tmp107_ = self->root_symbol; _tmp108_ = vala_symbol_get_scope (_tmp107_); _tmp109_ = _tmp108_; _tmp110_ = vala_scope_lookup (_tmp109_, "float"); _tmp111_ = VALA_STRUCT (_tmp110_); _tmp112_ = vala_floating_type_new (_tmp111_); _vala_code_node_unref0 (self->float_type); self->float_type = (ValaDataType*) _tmp112_; _vala_code_node_unref0 (_tmp111_); _tmp113_ = self->root_symbol; _tmp114_ = vala_symbol_get_scope (_tmp113_); _tmp115_ = _tmp114_; _tmp116_ = vala_scope_lookup (_tmp115_, "double"); _tmp117_ = VALA_STRUCT (_tmp116_); _tmp118_ = vala_floating_type_new (_tmp117_); _vala_code_node_unref0 (self->double_type); self->double_type = (ValaDataType*) _tmp118_; _vala_code_node_unref0 (_tmp117_); _tmp119_ = self->root_symbol; _tmp120_ = vala_symbol_get_scope (_tmp119_); _tmp121_ = _tmp120_; _tmp122_ = vala_scope_lookup (_tmp121_, "string"); _tmp123_ = VALA_CLASS (_tmp122_); _tmp124_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp123_); _vala_code_node_unref0 (self->string_type); self->string_type = (ValaDataType*) _tmp124_; _vala_code_node_unref0 (_tmp123_); _tmp125_ = self->root_symbol; _tmp126_ = vala_symbol_get_scope (_tmp125_); _tmp127_ = _tmp126_; _tmp128_ = vala_scope_lookup (_tmp127_, "unichar"); unichar_struct = VALA_STRUCT (_tmp128_); _tmp129_ = unichar_struct; if (_tmp129_ != NULL) { ValaStruct* _tmp130_; ValaIntegerType* _tmp131_; _tmp130_ = unichar_struct; _tmp131_ = vala_integer_type_new (_tmp130_, NULL, NULL); _vala_code_node_unref0 (self->unichar_type); self->unichar_type = (ValaDataType*) _tmp131_; } _tmp132_ = context; _tmp133_ = vala_code_context_get_profile (_tmp132_); _tmp134_ = _tmp133_; if (_tmp134_ == VALA_PROFILE_GOBJECT) { ValaSymbol* _tmp135_; ValaScope* _tmp136_; ValaScope* _tmp137_; ValaSymbol* _tmp138_ = NULL; ValaSymbol* glib_ns; ValaSymbol* _tmp139_; ValaScope* _tmp140_; ValaScope* _tmp141_; ValaSymbol* _tmp142_ = NULL; ValaSymbol* _tmp143_; ValaScope* _tmp144_; ValaScope* _tmp145_; ValaSymbol* _tmp146_ = NULL; ValaErrorType* _tmp147_; ValaSymbol* _tmp148_; ValaScope* _tmp149_; ValaScope* _tmp150_; ValaSymbol* _tmp151_ = NULL; ValaSymbol* _tmp152_; ValaScope* _tmp153_; ValaScope* _tmp154_; ValaSymbol* _tmp155_ = NULL; ValaSymbol* _tmp156_; ValaScope* _tmp157_; ValaScope* _tmp158_; ValaSymbol* _tmp159_ = NULL; ValaSymbol* _tmp160_; ValaScope* _tmp161_; ValaScope* _tmp162_; ValaSymbol* _tmp163_ = NULL; ValaSymbol* _tmp164_; ValaScope* _tmp165_; ValaScope* _tmp166_; ValaSymbol* _tmp167_ = NULL; ValaSymbol* _tmp168_; ValaScope* _tmp169_; ValaScope* _tmp170_; ValaSymbol* _tmp171_ = NULL; ValaSymbol* _tmp172_; ValaScope* _tmp173_; ValaScope* _tmp174_; ValaSymbol* _tmp175_ = NULL; ValaSymbol* _tmp176_; ValaScope* _tmp177_; ValaScope* _tmp178_; ValaSymbol* _tmp179_ = NULL; ValaSymbol* _tmp180_; ValaScope* _tmp181_; ValaScope* _tmp182_; ValaSymbol* _tmp183_ = NULL; ValaSymbol* _tmp184_; ValaScope* _tmp185_; ValaScope* _tmp186_; ValaSymbol* _tmp187_ = NULL; ValaSymbol* _tmp188_; ValaScope* _tmp189_; ValaScope* _tmp190_; ValaSymbol* _tmp191_ = NULL; ValaDelegate* _tmp192_; ValaDelegateType* _tmp193_; ValaSymbol* _tmp194_; ValaScope* _tmp195_; ValaScope* _tmp196_; ValaSymbol* _tmp197_ = NULL; ValaStruct* _tmp198_; ValaIntegerType* _tmp199_; ValaSymbol* _tmp200_; ValaScope* _tmp201_; ValaScope* _tmp202_; ValaSymbol* _tmp203_ = NULL; ValaSymbol* _tmp204_; ValaScope* _tmp205_; ValaScope* _tmp206_; ValaSymbol* _tmp207_ = NULL; ValaSymbol* _tmp208_; ValaScope* _tmp209_; ValaScope* _tmp210_; ValaSymbol* _tmp211_ = NULL; ValaSymbol* _tmp212_; ValaScope* _tmp213_; ValaScope* _tmp214_; ValaSymbol* _tmp215_ = NULL; ValaSymbol* _tmp216_; ValaScope* _tmp217_; ValaScope* _tmp218_; ValaSymbol* _tmp219_ = NULL; ValaSymbol* _tmp220_; ValaScope* _tmp221_; ValaScope* _tmp222_; ValaSymbol* _tmp223_ = NULL; ValaClass* _tmp224_; ValaObjectType* _tmp225_; ValaCodeContext* _tmp226_; ValaMethod* _tmp227_; ValaMethod* _tmp228_; ValaSymbol* _tmp258_; ValaScope* _tmp259_; ValaScope* _tmp260_; ValaSymbol* _tmp261_ = NULL; _tmp135_ = self->root_symbol; _tmp136_ = vala_symbol_get_scope (_tmp135_); _tmp137_ = _tmp136_; _tmp138_ = vala_scope_lookup (_tmp137_, "GLib"); glib_ns = _tmp138_; _tmp139_ = glib_ns; _tmp140_ = vala_symbol_get_scope (_tmp139_); _tmp141_ = _tmp140_; _tmp142_ = vala_scope_lookup (_tmp141_, "Type"); _vala_code_node_unref0 (self->gtype_type); self->gtype_type = VALA_TYPESYMBOL (_tmp142_); _tmp143_ = glib_ns; _tmp144_ = vala_symbol_get_scope (_tmp143_); _tmp145_ = _tmp144_; _tmp146_ = vala_scope_lookup (_tmp145_, "Object"); _vala_code_node_unref0 (self->gobject_type); self->gobject_type = VALA_TYPESYMBOL (_tmp146_); _tmp147_ = vala_error_type_new (NULL, NULL, NULL); _vala_code_node_unref0 (self->gerror_type); self->gerror_type = _tmp147_; _tmp148_ = glib_ns; _tmp149_ = vala_symbol_get_scope (_tmp148_); _tmp150_ = _tmp149_; _tmp151_ = vala_scope_lookup (_tmp150_, "List"); _vala_code_node_unref0 (self->glist_type); self->glist_type = VALA_CLASS (_tmp151_); _tmp152_ = glib_ns; _tmp153_ = vala_symbol_get_scope (_tmp152_); _tmp154_ = _tmp153_; _tmp155_ = vala_scope_lookup (_tmp154_, "SList"); _vala_code_node_unref0 (self->gslist_type); self->gslist_type = VALA_CLASS (_tmp155_); _tmp156_ = glib_ns; _tmp157_ = vala_symbol_get_scope (_tmp156_); _tmp158_ = _tmp157_; _tmp159_ = vala_scope_lookup (_tmp158_, "Node"); _vala_code_node_unref0 (self->gnode_type); self->gnode_type = VALA_CLASS (_tmp159_); _tmp160_ = glib_ns; _tmp161_ = vala_symbol_get_scope (_tmp160_); _tmp162_ = _tmp161_; _tmp163_ = vala_scope_lookup (_tmp162_, "Queue"); _vala_code_node_unref0 (self->gqueue_type); self->gqueue_type = VALA_CLASS (_tmp163_); _tmp164_ = glib_ns; _tmp165_ = vala_symbol_get_scope (_tmp164_); _tmp166_ = _tmp165_; _tmp167_ = vala_scope_lookup (_tmp166_, "ValueArray"); _vala_code_node_unref0 (self->gvaluearray_type); self->gvaluearray_type = VALA_CLASS (_tmp167_); _tmp168_ = glib_ns; _tmp169_ = vala_symbol_get_scope (_tmp168_); _tmp170_ = _tmp169_; _tmp171_ = vala_scope_lookup (_tmp170_, "StringBuilder"); _vala_code_node_unref0 (self->gstringbuilder_type); self->gstringbuilder_type = VALA_TYPESYMBOL (_tmp171_); _tmp172_ = glib_ns; _tmp173_ = vala_symbol_get_scope (_tmp172_); _tmp174_ = _tmp173_; _tmp175_ = vala_scope_lookup (_tmp174_, "Array"); _vala_code_node_unref0 (self->garray_type); self->garray_type = VALA_TYPESYMBOL (_tmp175_); _tmp176_ = glib_ns; _tmp177_ = vala_symbol_get_scope (_tmp176_); _tmp178_ = _tmp177_; _tmp179_ = vala_scope_lookup (_tmp178_, "ByteArray"); _vala_code_node_unref0 (self->gbytearray_type); self->gbytearray_type = VALA_TYPESYMBOL (_tmp179_); _tmp180_ = glib_ns; _tmp181_ = vala_symbol_get_scope (_tmp180_); _tmp182_ = _tmp181_; _tmp183_ = vala_scope_lookup (_tmp182_, "PtrArray"); _vala_code_node_unref0 (self->gptrarray_type); self->gptrarray_type = VALA_TYPESYMBOL (_tmp183_); _tmp184_ = glib_ns; _tmp185_ = vala_symbol_get_scope (_tmp184_); _tmp186_ = _tmp185_; _tmp187_ = vala_scope_lookup (_tmp186_, "ThreadPool"); _vala_code_node_unref0 (self->gthreadpool_type); self->gthreadpool_type = VALA_TYPESYMBOL (_tmp187_); _tmp188_ = glib_ns; _tmp189_ = vala_symbol_get_scope (_tmp188_); _tmp190_ = _tmp189_; _tmp191_ = vala_scope_lookup (_tmp190_, "DestroyNotify"); _tmp192_ = VALA_DELEGATE (_tmp191_); _tmp193_ = vala_delegate_type_new (_tmp192_); _vala_code_node_unref0 (self->gdestroynotify_type); self->gdestroynotify_type = (ValaDataType*) _tmp193_; _vala_code_node_unref0 (_tmp192_); _tmp194_ = glib_ns; _tmp195_ = vala_symbol_get_scope (_tmp194_); _tmp196_ = _tmp195_; _tmp197_ = vala_scope_lookup (_tmp196_, "Quark"); _tmp198_ = VALA_STRUCT (_tmp197_); _tmp199_ = vala_integer_type_new (_tmp198_, NULL, NULL); _vala_code_node_unref0 (self->gquark_type); self->gquark_type = (ValaDataType*) _tmp199_; _vala_code_node_unref0 (_tmp198_); _tmp200_ = glib_ns; _tmp201_ = vala_symbol_get_scope (_tmp200_); _tmp202_ = _tmp201_; _tmp203_ = vala_scope_lookup (_tmp202_, "Value"); _vala_code_node_unref0 (self->gvalue_type); self->gvalue_type = VALA_STRUCT (_tmp203_); _tmp204_ = glib_ns; _tmp205_ = vala_symbol_get_scope (_tmp204_); _tmp206_ = _tmp205_; _tmp207_ = vala_scope_lookup (_tmp206_, "Variant"); _vala_code_node_unref0 (self->gvariant_type); self->gvariant_type = VALA_CLASS (_tmp207_); _tmp208_ = glib_ns; _tmp209_ = vala_symbol_get_scope (_tmp208_); _tmp210_ = _tmp209_; _tmp211_ = vala_scope_lookup (_tmp210_, "StaticRecMutex"); _vala_code_node_unref0 (self->mutex_type); self->mutex_type = VALA_STRUCT (_tmp211_); _tmp212_ = glib_ns; _tmp213_ = vala_symbol_get_scope (_tmp212_); _tmp214_ = _tmp213_; _tmp215_ = vala_scope_lookup (_tmp214_, "TypeModule"); _vala_code_node_unref0 (self->type_module_type); self->type_module_type = VALA_TYPESYMBOL (_tmp215_); _tmp216_ = self->root_symbol; _tmp217_ = vala_symbol_get_scope (_tmp216_); _tmp218_ = _tmp217_; _tmp219_ = vala_scope_lookup (_tmp218_, "GLib"); _tmp220_ = _tmp219_; _tmp221_ = vala_symbol_get_scope (_tmp220_); _tmp222_ = _tmp221_; _tmp223_ = vala_scope_lookup (_tmp222_, "Regex"); _tmp224_ = VALA_CLASS (_tmp223_); _tmp225_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp224_); _vala_code_node_unref0 (self->regex_type); self->regex_type = (ValaDataType*) _tmp225_; _vala_code_node_unref0 (_tmp224_); _vala_code_node_unref0 (_tmp220_); _tmp226_ = context; _tmp227_ = vala_code_context_get_module_init_method (_tmp226_); _tmp228_ = _tmp227_; if (_tmp228_ != NULL) { gboolean _tmp252_; { ValaCodeContext* _tmp229_; ValaMethod* _tmp230_; ValaMethod* _tmp231_; ValaList* _tmp232_ = NULL; ValaList* _parameter_list; ValaList* _tmp233_; gint _tmp234_; gint _tmp235_; gint _parameter_size; gint _parameter_index; _tmp229_ = context; _tmp230_ = vala_code_context_get_module_init_method (_tmp229_); _tmp231_ = _tmp230_; _tmp232_ = vala_method_get_parameters (_tmp231_); _parameter_list = _tmp232_; _tmp233_ = _parameter_list; _tmp234_ = vala_collection_get_size ((ValaCollection*) _tmp233_); _tmp235_ = _tmp234_; _parameter_size = _tmp235_; _parameter_index = -1; while (TRUE) { gint _tmp236_; gint _tmp237_; gint _tmp238_; ValaList* _tmp239_; gint _tmp240_; gpointer _tmp241_ = NULL; ValaParameter* parameter; ValaParameter* _tmp242_; ValaDataType* _tmp243_; ValaDataType* _tmp244_; ValaTypeSymbol* _tmp245_; ValaTypeSymbol* _tmp246_; ValaTypeSymbol* _tmp247_; _tmp236_ = _parameter_index; _parameter_index = _tmp236_ + 1; _tmp237_ = _parameter_index; _tmp238_ = _parameter_size; if (!(_tmp237_ < _tmp238_)) { break; } _tmp239_ = _parameter_list; _tmp240_ = _parameter_index; _tmp241_ = vala_list_get (_tmp239_, _tmp240_); parameter = (ValaParameter*) _tmp241_; _tmp242_ = parameter; _tmp243_ = vala_variable_get_variable_type ((ValaVariable*) _tmp242_); _tmp244_ = _tmp243_; _tmp245_ = vala_data_type_get_data_type (_tmp244_); _tmp246_ = _tmp245_; _tmp247_ = self->type_module_type; if (_tmp246_ == _tmp247_) { ValaParameter* _tmp248_; const gchar* _tmp249_; const gchar* _tmp250_; gchar* _tmp251_; self->in_plugin = TRUE; _tmp248_ = parameter; _tmp249_ = vala_symbol_get_name ((ValaSymbol*) _tmp248_); _tmp250_ = _tmp249_; _tmp251_ = g_strdup (_tmp250_); _g_free0 (self->module_init_param_name); self->module_init_param_name = _tmp251_; _vala_code_node_unref0 (parameter); break; } _vala_code_node_unref0 (parameter); } _vala_iterable_unref0 (_parameter_list); } _tmp252_ = self->in_plugin; if (!_tmp252_) { ValaCodeContext* _tmp253_; ValaMethod* _tmp254_; ValaMethod* _tmp255_; ValaSourceReference* _tmp256_; ValaSourceReference* _tmp257_; _tmp253_ = context; _tmp254_ = vala_code_context_get_module_init_method (_tmp253_); _tmp255_ = _tmp254_; _tmp256_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp255_); _tmp257_ = _tmp256_; vala_report_error (_tmp257_, "[ModuleInit] requires a parameter of type `GLib.TypeModule'"); } } _tmp258_ = glib_ns; _tmp259_ = vala_symbol_get_scope (_tmp258_); _tmp260_ = _tmp259_; _tmp261_ = vala_scope_lookup (_tmp260_, "DBusProxy"); _vala_code_node_unref0 (self->dbus_proxy_type); self->dbus_proxy_type = VALA_TYPESYMBOL (_tmp261_); _vala_code_node_unref0 (glib_ns); } _tmp262_ = vala_ccode_file_new (); _vala_ccode_file_unref0 (self->header_file); self->header_file = _tmp262_; _tmp263_ = self->header_file; vala_ccode_file_set_is_header (_tmp263_, TRUE); _tmp264_ = vala_ccode_file_new (); _vala_ccode_file_unref0 (self->internal_header_file); self->internal_header_file = _tmp264_; _tmp265_ = self->internal_header_file; vala_ccode_file_set_is_header (_tmp265_, TRUE); _tmp266_ = context; _tmp267_ = vala_code_context_get_source_files (_tmp266_); source_files = _tmp267_; { ValaList* _tmp268_; ValaList* _tmp269_; ValaList* _file_list; ValaList* _tmp270_; gint _tmp271_; gint _tmp272_; gint _file_size; gint _file_index; _tmp268_ = source_files; _tmp269_ = _vala_iterable_ref0 (_tmp268_); _file_list = _tmp269_; _tmp270_ = _file_list; _tmp271_ = vala_collection_get_size ((ValaCollection*) _tmp270_); _tmp272_ = _tmp271_; _file_size = _tmp272_; _file_index = -1; while (TRUE) { gint _tmp273_; gint _tmp274_; gint _tmp275_; ValaList* _tmp276_; gint _tmp277_; gpointer _tmp278_ = NULL; ValaSourceFile* file; gboolean _tmp279_ = FALSE; ValaSourceFile* _tmp280_; ValaSourceFileType _tmp281_; ValaSourceFileType _tmp282_; gboolean _tmp291_; _tmp273_ = _file_index; _file_index = _tmp273_ + 1; _tmp274_ = _file_index; _tmp275_ = _file_size; if (!(_tmp274_ < _tmp275_)) { break; } _tmp276_ = _file_list; _tmp277_ = _file_index; _tmp278_ = vala_list_get (_tmp276_, _tmp277_); file = (ValaSourceFile*) _tmp278_; _tmp280_ = file; _tmp281_ = vala_source_file_get_file_type (_tmp280_); _tmp282_ = _tmp281_; if (_tmp282_ == VALA_SOURCE_FILE_TYPE_SOURCE) { _tmp279_ = TRUE; } else { gboolean _tmp283_ = FALSE; ValaCodeContext* _tmp284_; const gchar* _tmp285_; const gchar* _tmp286_; gboolean _tmp290_; _tmp284_ = context; _tmp285_ = vala_code_context_get_header_filename (_tmp284_); _tmp286_ = _tmp285_; if (_tmp286_ != NULL) { ValaSourceFile* _tmp287_; ValaSourceFileType _tmp288_; ValaSourceFileType _tmp289_; _tmp287_ = file; _tmp288_ = vala_source_file_get_file_type (_tmp287_); _tmp289_ = _tmp288_; _tmp283_ = _tmp289_ == VALA_SOURCE_FILE_TYPE_FAST; } else { _tmp283_ = FALSE; } _tmp290_ = _tmp283_; _tmp279_ = _tmp290_; } _tmp291_ = _tmp279_; if (_tmp291_) { ValaSourceFile* _tmp292_; _tmp292_ = file; vala_source_file_accept (_tmp292_, (ValaCodeVisitor*) self); } _vala_source_file_unref0 (file); } _vala_iterable_unref0 (_file_list); } _tmp293_ = context; _tmp294_ = vala_code_context_get_symbols_filename (_tmp293_); _tmp295_ = _tmp294_; if (_tmp295_ != NULL) { ValaCodeContext* _tmp296_; const gchar* _tmp297_; const gchar* _tmp298_; FILE* _tmp299_ = NULL; FILE* stream; FILE* _tmp300_; _tmp296_ = context; _tmp297_ = vala_code_context_get_symbols_filename (_tmp296_); _tmp298_ = _tmp297_; _tmp299_ = fopen (_tmp298_, "w"); stream = _tmp299_; _tmp300_ = stream; if (_tmp300_ == NULL) { ValaCodeContext* _tmp301_; const gchar* _tmp302_; const gchar* _tmp303_; gchar* _tmp304_ = NULL; gchar* _tmp305_; _tmp301_ = context; _tmp302_ = vala_code_context_get_symbols_filename (_tmp301_); _tmp303_ = _tmp302_; _tmp304_ = g_strdup_printf ("unable to open `%s' for writing", _tmp303_); _tmp305_ = _tmp304_; vala_report_error (NULL, _tmp305_); _g_free0 (_tmp305_); _fclose0 (stream); _vala_iterable_unref0 (source_files); _vala_code_node_unref0 (unichar_struct); return; } { ValaCCodeFile* _tmp306_; ValaList* _tmp307_ = NULL; ValaList* _symbol_list; ValaList* _tmp308_; gint _tmp309_; gint _tmp310_; gint _symbol_size; gint _symbol_index; _tmp306_ = self->header_file; _tmp307_ = vala_ccode_file_get_symbols (_tmp306_); _symbol_list = _tmp307_; _tmp308_ = _symbol_list; _tmp309_ = vala_collection_get_size ((ValaCollection*) _tmp308_); _tmp310_ = _tmp309_; _symbol_size = _tmp310_; _symbol_index = -1; while (TRUE) { gint _tmp311_; gint _tmp312_; gint _tmp313_; ValaList* _tmp314_; gint _tmp315_; gpointer _tmp316_ = NULL; gchar* symbol; FILE* _tmp317_; const gchar* _tmp318_; FILE* _tmp319_; _tmp311_ = _symbol_index; _symbol_index = _tmp311_ + 1; _tmp312_ = _symbol_index; _tmp313_ = _symbol_size; if (!(_tmp312_ < _tmp313_)) { break; } _tmp314_ = _symbol_list; _tmp315_ = _symbol_index; _tmp316_ = vala_list_get (_tmp314_, _tmp315_); symbol = (gchar*) _tmp316_; _tmp317_ = stream; _tmp318_ = symbol; fputs (_tmp318_, _tmp317_); _tmp319_ = stream; fputc ('\n', _tmp319_); _g_free0 (symbol); } _vala_iterable_unref0 (_symbol_list); } _fclose0 (stream); stream = NULL; _fclose0 (stream); } _tmp320_ = context; _tmp321_ = vala_code_context_get_header_filename (_tmp320_); _tmp322_ = _tmp321_; if (_tmp322_ != NULL) { gboolean ret = FALSE; ValaCodeContext* _tmp323_; ValaProfile _tmp324_; ValaProfile _tmp325_; gboolean _tmp342_; _tmp323_ = context; _tmp324_ = vala_code_context_get_profile (_tmp323_); _tmp325_ = _tmp324_; if (_tmp325_ == VALA_PROFILE_GOBJECT) { ValaCCodeFile* _tmp326_; ValaCodeContext* _tmp327_; const gchar* _tmp328_; const gchar* _tmp329_; ValaCodeContext* _tmp330_; gboolean _tmp331_; gboolean _tmp332_; gboolean _tmp333_ = FALSE; _tmp326_ = self->header_file; _tmp327_ = context; _tmp328_ = vala_code_context_get_header_filename (_tmp327_); _tmp329_ = _tmp328_; _tmp330_ = context; _tmp331_ = vala_code_context_get_version_header (_tmp330_); _tmp332_ = _tmp331_; _tmp333_ = vala_ccode_file_store (_tmp326_, _tmp329_, NULL, _tmp332_, FALSE, "G_BEGIN_DECLS", "G_END_DECLS"); ret = _tmp333_; } else { ValaCCodeFile* _tmp334_; ValaCodeContext* _tmp335_; const gchar* _tmp336_; const gchar* _tmp337_; ValaCodeContext* _tmp338_; gboolean _tmp339_; gboolean _tmp340_; gboolean _tmp341_ = FALSE; _tmp334_ = self->header_file; _tmp335_ = context; _tmp336_ = vala_code_context_get_header_filename (_tmp335_); _tmp337_ = _tmp336_; _tmp338_ = context; _tmp339_ = vala_code_context_get_version_header (_tmp338_); _tmp340_ = _tmp339_; _tmp341_ = vala_ccode_file_store (_tmp334_, _tmp337_, NULL, _tmp340_, FALSE, NULL, NULL); ret = _tmp341_; } _tmp342_ = ret; if (!_tmp342_) { ValaCodeContext* _tmp343_; const gchar* _tmp344_; const gchar* _tmp345_; gchar* _tmp346_ = NULL; gchar* _tmp347_; _tmp343_ = context; _tmp344_ = vala_code_context_get_header_filename (_tmp343_); _tmp345_ = _tmp344_; _tmp346_ = g_strdup_printf ("unable to open `%s' for writing", _tmp345_); _tmp347_ = _tmp346_; vala_report_error (NULL, _tmp347_); _g_free0 (_tmp347_); } } _tmp348_ = context; _tmp349_ = vala_code_context_get_internal_header_filename (_tmp348_); _tmp350_ = _tmp349_; if (_tmp350_ != NULL) { gboolean ret = FALSE; ValaCodeContext* _tmp351_; ValaProfile _tmp352_; ValaProfile _tmp353_; gboolean _tmp370_; _tmp351_ = context; _tmp352_ = vala_code_context_get_profile (_tmp351_); _tmp353_ = _tmp352_; if (_tmp353_ == VALA_PROFILE_GOBJECT) { ValaCCodeFile* _tmp354_; ValaCodeContext* _tmp355_; const gchar* _tmp356_; const gchar* _tmp357_; ValaCodeContext* _tmp358_; gboolean _tmp359_; gboolean _tmp360_; gboolean _tmp361_ = FALSE; _tmp354_ = self->internal_header_file; _tmp355_ = context; _tmp356_ = vala_code_context_get_internal_header_filename (_tmp355_); _tmp357_ = _tmp356_; _tmp358_ = context; _tmp359_ = vala_code_context_get_version_header (_tmp358_); _tmp360_ = _tmp359_; _tmp361_ = vala_ccode_file_store (_tmp354_, _tmp357_, NULL, _tmp360_, FALSE, "G_BEGIN_DECLS", "G_END_DECLS"); ret = _tmp361_; } else { ValaCCodeFile* _tmp362_; ValaCodeContext* _tmp363_; const gchar* _tmp364_; const gchar* _tmp365_; ValaCodeContext* _tmp366_; gboolean _tmp367_; gboolean _tmp368_; gboolean _tmp369_ = FALSE; _tmp362_ = self->internal_header_file; _tmp363_ = context; _tmp364_ = vala_code_context_get_internal_header_filename (_tmp363_); _tmp365_ = _tmp364_; _tmp366_ = context; _tmp367_ = vala_code_context_get_version_header (_tmp366_); _tmp368_ = _tmp367_; _tmp369_ = vala_ccode_file_store (_tmp362_, _tmp365_, NULL, _tmp368_, FALSE, NULL, NULL); ret = _tmp369_; } _tmp370_ = ret; if (!_tmp370_) { ValaCodeContext* _tmp371_; const gchar* _tmp372_; const gchar* _tmp373_; gchar* _tmp374_ = NULL; gchar* _tmp375_; _tmp371_ = context; _tmp372_ = vala_code_context_get_internal_header_filename (_tmp371_); _tmp373_ = _tmp372_; _tmp374_ = g_strdup_printf ("unable to open `%s' for writing", _tmp373_); _tmp375_ = _tmp374_; vala_report_error (NULL, _tmp375_); _g_free0 (_tmp375_); } } _vala_iterable_unref0 (source_files); _vala_code_node_unref0 (unichar_struct); } static gpointer _vala_ccode_base_module_emit_context_ref0 (gpointer self) { return self ? vala_ccode_base_module_emit_context_ref (self) : NULL; } void vala_ccode_base_module_push_context (ValaCCodeBaseModule* self, ValaCCodeBaseModuleEmitContext* emit_context) { ValaCCodeBaseModuleEmitContext* _tmp0_; ValaCCodeBaseModuleEmitContext* _tmp3_; ValaCCodeBaseModuleEmitContext* _tmp4_; ValaCCodeFunction* _tmp5_; ValaCCodeFunction* _tmp6_; g_return_if_fail (self != NULL); g_return_if_fail (emit_context != NULL); _tmp0_ = self->emit_context; if (_tmp0_ != NULL) { ValaList* _tmp1_; ValaCCodeBaseModuleEmitContext* _tmp2_; _tmp1_ = self->priv->emit_context_stack; _tmp2_ = self->emit_context; vala_collection_add ((ValaCollection*) _tmp1_, _tmp2_); } _tmp3_ = emit_context; _tmp4_ = _vala_ccode_base_module_emit_context_ref0 (_tmp3_); _vala_ccode_base_module_emit_context_unref0 (self->emit_context); self->emit_context = _tmp4_; _tmp5_ = vala_ccode_base_module_get_ccode (self); _tmp6_ = _tmp5_; if (_tmp6_ != NULL) { ValaCCodeFunction* _tmp7_; ValaCCodeFunction* _tmp8_; ValaCCodeLineDirective* _tmp9_; _tmp7_ = vala_ccode_base_module_get_ccode (self); _tmp8_ = _tmp7_; _tmp9_ = self->current_line; vala_ccode_function_set_current_line (_tmp8_, _tmp9_); } } void vala_ccode_base_module_pop_context (ValaCCodeBaseModule* self) { ValaList* _tmp0_; gint _tmp1_; gint _tmp2_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->emit_context_stack; _tmp1_ = vala_collection_get_size ((ValaCollection*) _tmp0_); _tmp2_ = _tmp1_; if (_tmp2_ > 0) { ValaList* _tmp3_; ValaList* _tmp4_; gint _tmp5_; gint _tmp6_; gpointer _tmp7_ = NULL; ValaList* _tmp8_; ValaList* _tmp9_; gint _tmp10_; gint _tmp11_; ValaCCodeFunction* _tmp12_; ValaCCodeFunction* _tmp13_; _tmp3_ = self->priv->emit_context_stack; _tmp4_ = self->priv->emit_context_stack; _tmp5_ = vala_collection_get_size ((ValaCollection*) _tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_list_get (_tmp3_, _tmp6_ - 1); _vala_ccode_base_module_emit_context_unref0 (self->emit_context); self->emit_context = (ValaCCodeBaseModuleEmitContext*) _tmp7_; _tmp8_ = self->priv->emit_context_stack; _tmp9_ = self->priv->emit_context_stack; _tmp10_ = vala_collection_get_size ((ValaCollection*) _tmp9_); _tmp11_ = _tmp10_; vala_list_remove_at (_tmp8_, _tmp11_ - 1); _tmp12_ = vala_ccode_base_module_get_ccode (self); _tmp13_ = _tmp12_; if (_tmp13_ != NULL) { ValaCCodeFunction* _tmp14_; ValaCCodeFunction* _tmp15_; ValaCCodeLineDirective* _tmp16_; _tmp14_ = vala_ccode_base_module_get_ccode (self); _tmp15_ = _tmp14_; _tmp16_ = self->current_line; vala_ccode_function_set_current_line (_tmp15_, _tmp16_); } } else { _vala_ccode_base_module_emit_context_unref0 (self->emit_context); self->emit_context = NULL; } } void vala_ccode_base_module_push_line (ValaCCodeBaseModule* self, ValaSourceReference* source_reference) { ValaList* _tmp0_; ValaCCodeLineDirective* _tmp1_; ValaSourceReference* _tmp2_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->line_directive_stack; _tmp1_ = self->current_line; vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_); _tmp2_ = source_reference; if (_tmp2_ != NULL) { ValaSourceReference* _tmp3_; ValaSourceFile* _tmp4_; ValaSourceFile* _tmp5_; const gchar* _tmp6_; const gchar* _tmp7_; ValaSourceReference* _tmp8_; gint _tmp9_; gint _tmp10_; ValaCCodeLineDirective* _tmp11_; ValaCCodeFunction* _tmp12_; ValaCCodeFunction* _tmp13_; _tmp3_ = source_reference; _tmp4_ = vala_source_reference_get_file (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = vala_source_file_get_filename (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = source_reference; _tmp9_ = vala_source_reference_get_first_line (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_ccode_line_directive_new (_tmp7_, _tmp10_); _vala_ccode_node_unref0 (self->current_line); self->current_line = _tmp11_; _tmp12_ = vala_ccode_base_module_get_ccode (self); _tmp13_ = _tmp12_; if (_tmp13_ != NULL) { ValaCCodeFunction* _tmp14_; ValaCCodeFunction* _tmp15_; ValaCCodeLineDirective* _tmp16_; _tmp14_ = vala_ccode_base_module_get_ccode (self); _tmp15_ = _tmp14_; _tmp16_ = self->current_line; vala_ccode_function_set_current_line (_tmp15_, _tmp16_); } } } void vala_ccode_base_module_pop_line (ValaCCodeBaseModule* self) { ValaList* _tmp0_; ValaList* _tmp1_; gint _tmp2_; gint _tmp3_; gpointer _tmp4_ = NULL; ValaList* _tmp5_; ValaList* _tmp6_; gint _tmp7_; gint _tmp8_; ValaCCodeFunction* _tmp9_; ValaCCodeFunction* _tmp10_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->line_directive_stack; _tmp1_ = self->priv->line_directive_stack; _tmp2_ = vala_collection_get_size ((ValaCollection*) _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_list_get (_tmp0_, _tmp3_ - 1); _vala_ccode_node_unref0 (self->current_line); self->current_line = (ValaCCodeLineDirective*) _tmp4_; _tmp5_ = self->priv->line_directive_stack; _tmp6_ = self->priv->line_directive_stack; _tmp7_ = vala_collection_get_size ((ValaCollection*) _tmp6_); _tmp8_ = _tmp7_; vala_list_remove_at (_tmp5_, _tmp8_ - 1); _tmp9_ = vala_ccode_base_module_get_ccode (self); _tmp10_ = _tmp9_; if (_tmp10_ != NULL) { ValaCCodeFunction* _tmp11_; ValaCCodeFunction* _tmp12_; ValaCCodeLineDirective* _tmp13_; _tmp11_ = vala_ccode_base_module_get_ccode (self); _tmp12_ = _tmp11_; _tmp13_ = self->current_line; vala_ccode_function_set_current_line (_tmp12_, _tmp13_); } } static gpointer _vala_ccode_node_ref0 (gpointer self) { return self ? vala_ccode_node_ref (self) : NULL; } void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func) { ValaCCodeBaseModuleEmitContext* _tmp0_; ValaArrayList* _tmp1_; ValaCCodeFunction* _tmp2_; ValaCCodeFunction* _tmp3_; ValaCCodeBaseModuleEmitContext* _tmp4_; ValaCCodeFunction* _tmp5_; ValaCCodeFunction* _tmp6_; ValaCCodeFunction* _tmp7_; ValaCCodeFunction* _tmp8_; ValaCCodeLineDirective* _tmp9_; g_return_if_fail (self != NULL); g_return_if_fail (func != NULL); _tmp0_ = self->emit_context; _tmp1_ = _tmp0_->ccode_stack; _tmp2_ = vala_ccode_base_module_get_ccode (self); _tmp3_ = _tmp2_; vala_collection_add ((ValaCollection*) _tmp1_, _tmp3_); _tmp4_ = self->emit_context; _tmp5_ = func; _tmp6_ = _vala_ccode_node_ref0 (_tmp5_); _vala_ccode_node_unref0 (_tmp4_->ccode); _tmp4_->ccode = _tmp6_; _tmp7_ = vala_ccode_base_module_get_ccode (self); _tmp8_ = _tmp7_; _tmp9_ = self->current_line; vala_ccode_function_set_current_line (_tmp8_, _tmp9_); } void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self) { ValaCCodeBaseModuleEmitContext* _tmp0_; ValaCCodeBaseModuleEmitContext* _tmp1_; ValaArrayList* _tmp2_; ValaCCodeBaseModuleEmitContext* _tmp3_; ValaArrayList* _tmp4_; gint _tmp5_; gint _tmp6_; gpointer _tmp7_ = NULL; ValaCCodeBaseModuleEmitContext* _tmp8_; ValaArrayList* _tmp9_; ValaCCodeBaseModuleEmitContext* _tmp10_; ValaArrayList* _tmp11_; gint _tmp12_; gint _tmp13_; ValaCCodeFunction* _tmp14_; ValaCCodeFunction* _tmp15_; g_return_if_fail (self != NULL); _tmp0_ = self->emit_context; _tmp1_ = self->emit_context; _tmp2_ = _tmp1_->ccode_stack; _tmp3_ = self->emit_context; _tmp4_ = _tmp3_->ccode_stack; _tmp5_ = vala_collection_get_size ((ValaCollection*) _tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_list_get ((ValaList*) _tmp2_, _tmp6_ - 1); _vala_ccode_node_unref0 (_tmp0_->ccode); _tmp0_->ccode = (ValaCCodeFunction*) _tmp7_; _tmp8_ = self->emit_context; _tmp9_ = _tmp8_->ccode_stack; _tmp10_ = self->emit_context; _tmp11_ = _tmp10_->ccode_stack; _tmp12_ = vala_collection_get_size ((ValaCollection*) _tmp11_); _tmp13_ = _tmp12_; vala_list_remove_at ((ValaList*) _tmp9_, _tmp13_ - 1); _tmp14_ = vala_ccode_base_module_get_ccode (self); _tmp15_ = _tmp14_; if (_tmp15_ != NULL) { ValaCCodeFunction* _tmp16_; ValaCCodeFunction* _tmp17_; ValaCCodeLineDirective* _tmp18_; _tmp16_ = vala_ccode_base_module_get_ccode (self); _tmp17_ = _tmp16_; _tmp18_ = self->current_line; vala_ccode_function_set_current_line (_tmp17_, _tmp18_); } } gboolean vala_ccode_base_module_add_symbol_declaration (ValaCCodeBaseModule* self, ValaCCodeFile* decl_space, ValaSymbol* sym, const gchar* name) { gboolean result = FALSE; ValaCCodeFile* _tmp0_; const gchar* _tmp1_; gboolean _tmp2_ = FALSE; ValaSymbol* _tmp3_; ValaSourceReference* _tmp4_; ValaSourceReference* _tmp5_; gboolean _tmp11_ = FALSE; ValaSymbol* _tmp12_; gboolean _tmp13_; gboolean _tmp14_; gboolean _tmp28_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (decl_space != NULL, FALSE); g_return_val_if_fail (sym != NULL, FALSE); g_return_val_if_fail (name != NULL, FALSE); _tmp0_ = decl_space; _tmp1_ = name; _tmp2_ = vala_ccode_file_add_declaration (_tmp0_, _tmp1_); if (_tmp2_) { result = TRUE; return result; } _tmp3_ = sym; _tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_); _tmp5_ = _tmp4_; if (_tmp5_ != NULL) { ValaSymbol* _tmp6_; ValaSourceReference* _tmp7_; ValaSourceReference* _tmp8_; ValaSourceFile* _tmp9_; ValaSourceFile* _tmp10_; _tmp6_ = sym; _tmp7_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp6_); _tmp8_ = _tmp7_; _tmp9_ = vala_source_reference_get_file (_tmp8_); _tmp10_ = _tmp9_; vala_source_file_set_used (_tmp10_, TRUE); } _tmp12_ = sym; _tmp13_ = vala_symbol_get_external_package (_tmp12_); _tmp14_ = _tmp13_; if (_tmp14_) { _tmp11_ = TRUE; } else { gboolean _tmp15_ = FALSE; gboolean _tmp16_ = FALSE; ValaCCodeFile* _tmp17_; gboolean _tmp18_; gboolean _tmp19_; gboolean _tmp24_; gboolean _tmp27_; _tmp17_ = decl_space; _tmp18_ = vala_ccode_file_get_is_header (_tmp17_); _tmp19_ = _tmp18_; if (!_tmp19_) { ValaCodeContext* _tmp20_ = NULL; ValaCodeContext* _tmp21_; gboolean _tmp22_; gboolean _tmp23_; _tmp20_ = vala_code_context_get (); _tmp21_ = _tmp20_; _tmp22_ = vala_code_context_get_use_header (_tmp21_); _tmp23_ = _tmp22_; _tmp16_ = _tmp23_; _vala_code_context_unref0 (_tmp21_); } else { _tmp16_ = FALSE; } _tmp24_ = _tmp16_; if (_tmp24_) { ValaSymbol* _tmp25_; gboolean _tmp26_ = FALSE; _tmp25_ = sym; _tmp26_ = vala_symbol_is_internal_symbol (_tmp25_); _tmp15_ = !_tmp26_; } else { _tmp15_ = FALSE; } _tmp27_ = _tmp15_; _tmp11_ = _tmp27_; } _tmp28_ = _tmp11_; if (_tmp28_) { ValaSymbol* _tmp29_; gchar* _tmp30_ = NULL; gchar* _tmp31_; gchar** _tmp32_; gchar** _tmp33_ = NULL; gchar** _tmp34_; gint _tmp34__length1; _tmp29_ = sym; _tmp30_ = vala_ccode_base_module_get_ccode_header_filenames (_tmp29_); _tmp31_ = _tmp30_; _tmp33_ = _tmp32_ = g_strsplit (_tmp31_, ",", 0); _tmp34_ = _tmp33_; _tmp34__length1 = _vala_array_length (_tmp32_); _g_free0 (_tmp31_); { gchar** header_filename_collection = NULL; gint header_filename_collection_length1 = 0; gint _header_filename_collection_size_ = 0; gint header_filename_it = 0; header_filename_collection = _tmp34_; header_filename_collection_length1 = _tmp34__length1; for (header_filename_it = 0; header_filename_it < _tmp34__length1; header_filename_it = header_filename_it + 1) { gchar* _tmp35_; gchar* header_filename = NULL; _tmp35_ = g_strdup (header_filename_collection[header_filename_it]); header_filename = _tmp35_; { gboolean _tmp36_ = FALSE; ValaSymbol* _tmp37_; gboolean _tmp38_; gboolean _tmp39_; ValaCCodeFile* _tmp48_; const gchar* _tmp49_; gboolean _tmp50_; _tmp37_ = sym; _tmp38_ = vala_symbol_get_external_package (_tmp37_); _tmp39_ = _tmp38_; if (!_tmp39_) { _tmp36_ = TRUE; } else { gboolean _tmp40_ = FALSE; ValaSymbol* _tmp41_; gboolean _tmp42_; gboolean _tmp43_; gboolean _tmp47_; _tmp41_ = sym; _tmp42_ = vala_symbol_get_external_package (_tmp41_); _tmp43_ = _tmp42_; if (_tmp43_) { ValaSymbol* _tmp44_; gboolean _tmp45_; gboolean _tmp46_; _tmp44_ = sym; _tmp45_ = vala_symbol_get_from_commandline (_tmp44_); _tmp46_ = _tmp45_; _tmp40_ = _tmp46_; } else { _tmp40_ = FALSE; } _tmp47_ = _tmp40_; _tmp36_ = _tmp47_; } _tmp48_ = decl_space; _tmp49_ = header_filename; _tmp50_ = _tmp36_; vala_ccode_file_add_include (_tmp48_, _tmp49_, _tmp50_); _g_free0 (header_filename); } } header_filename_collection = (_vala_array_free (header_filename_collection, header_filename_collection_length1, (GDestroyNotify) g_free), NULL); } result = TRUE; return result; } else { result = FALSE; return result; } } ValaCCodeIdentifier* vala_ccode_base_module_get_value_setter_function (ValaCCodeBaseModule* self, ValaDataType* type_reference) { ValaCCodeIdentifier* result = NULL; ValaDataType* _tmp0_; ValaArrayType* _tmp1_; ValaArrayType* array_type; ValaDataType* _tmp2_; ValaTypeSymbol* _tmp3_; ValaTypeSymbol* _tmp4_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type_reference != NULL, NULL); _tmp0_ = type_reference; _tmp1_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp0_) ? ((ValaArrayType*) _tmp0_) : NULL); array_type = _tmp1_; _tmp2_ = type_reference; _tmp3_ = vala_data_type_get_data_type (_tmp2_); _tmp4_ = _tmp3_; if (_tmp4_ != NULL) { ValaDataType* _tmp5_; ValaTypeSymbol* _tmp6_; ValaTypeSymbol* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; ValaCCodeIdentifier* _tmp10_; ValaCCodeIdentifier* _tmp11_; _tmp5_ = type_reference; _tmp6_ = vala_data_type_get_data_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_ccode_base_module_get_ccode_set_value_function ((ValaCodeNode*) _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_identifier_new (_tmp9_); _tmp11_ = _tmp10_; _g_free0 (_tmp9_); result = _tmp11_; _vala_code_node_unref0 (array_type); return result; } else { gboolean _tmp12_ = FALSE; ValaArrayType* _tmp13_; gboolean _tmp22_; _tmp13_ = array_type; if (_tmp13_ != NULL) { ValaArrayType* _tmp14_; ValaDataType* _tmp15_; ValaDataType* _tmp16_; ValaTypeSymbol* _tmp17_; ValaTypeSymbol* _tmp18_; ValaDataType* _tmp19_; ValaTypeSymbol* _tmp20_; ValaTypeSymbol* _tmp21_; _tmp14_ = array_type; _tmp15_ = vala_array_type_get_element_type (_tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_data_type_get_data_type (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = self->string_type; _tmp20_ = vala_data_type_get_data_type (_tmp19_); _tmp21_ = _tmp20_; _tmp12_ = _tmp18_ == _tmp21_; } else { _tmp12_ = FALSE; } _tmp22_ = _tmp12_; if (_tmp22_) { ValaCCodeIdentifier* _tmp23_; _tmp23_ = vala_ccode_identifier_new ("g_value_set_boxed"); result = _tmp23_; _vala_code_node_unref0 (array_type); return result; } else { ValaCCodeIdentifier* _tmp24_; _tmp24_ = vala_ccode_identifier_new ("g_value_set_pointer"); result = _tmp24_; _vala_code_node_unref0 (array_type); return result; } } _vala_code_node_unref0 (array_type); } ValaCCodeIdentifier* vala_ccode_base_module_get_value_taker_function (ValaCCodeBaseModule* self, ValaDataType* type_reference) { ValaCCodeIdentifier* result = NULL; ValaDataType* _tmp0_; ValaArrayType* _tmp1_; ValaArrayType* array_type; ValaDataType* _tmp2_; ValaTypeSymbol* _tmp3_; ValaTypeSymbol* _tmp4_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type_reference != NULL, NULL); _tmp0_ = type_reference; _tmp1_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp0_) ? ((ValaArrayType*) _tmp0_) : NULL); array_type = _tmp1_; _tmp2_ = type_reference; _tmp3_ = vala_data_type_get_data_type (_tmp2_); _tmp4_ = _tmp3_; if (_tmp4_ != NULL) { ValaDataType* _tmp5_; ValaTypeSymbol* _tmp6_; ValaTypeSymbol* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; ValaCCodeIdentifier* _tmp10_; ValaCCodeIdentifier* _tmp11_; _tmp5_ = type_reference; _tmp6_ = vala_data_type_get_data_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_ccode_base_module_get_ccode_take_value_function ((ValaCodeNode*) _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_identifier_new (_tmp9_); _tmp11_ = _tmp10_; _g_free0 (_tmp9_); result = _tmp11_; _vala_code_node_unref0 (array_type); return result; } else { gboolean _tmp12_ = FALSE; ValaArrayType* _tmp13_; gboolean _tmp22_; _tmp13_ = array_type; if (_tmp13_ != NULL) { ValaArrayType* _tmp14_; ValaDataType* _tmp15_; ValaDataType* _tmp16_; ValaTypeSymbol* _tmp17_; ValaTypeSymbol* _tmp18_; ValaDataType* _tmp19_; ValaTypeSymbol* _tmp20_; ValaTypeSymbol* _tmp21_; _tmp14_ = array_type; _tmp15_ = vala_array_type_get_element_type (_tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_data_type_get_data_type (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = self->string_type; _tmp20_ = vala_data_type_get_data_type (_tmp19_); _tmp21_ = _tmp20_; _tmp12_ = _tmp18_ == _tmp21_; } else { _tmp12_ = FALSE; } _tmp22_ = _tmp12_; if (_tmp22_) { ValaCCodeIdentifier* _tmp23_; _tmp23_ = vala_ccode_identifier_new ("g_value_take_boxed"); result = _tmp23_; _vala_code_node_unref0 (array_type); return result; } else { ValaCCodeIdentifier* _tmp24_; _tmp24_ = vala_ccode_identifier_new ("g_value_set_pointer"); result = _tmp24_; _vala_code_node_unref0 (array_type); return result; } } _vala_code_node_unref0 (array_type); } static ValaCCodeIdentifier* vala_ccode_base_module_get_value_getter_function (ValaCCodeBaseModule* self, ValaDataType* type_reference) { ValaCCodeIdentifier* result = NULL; ValaDataType* _tmp0_; ValaArrayType* _tmp1_; ValaArrayType* array_type; ValaDataType* _tmp2_; ValaTypeSymbol* _tmp3_; ValaTypeSymbol* _tmp4_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type_reference != NULL, NULL); _tmp0_ = type_reference; _tmp1_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp0_) ? ((ValaArrayType*) _tmp0_) : NULL); array_type = _tmp1_; _tmp2_ = type_reference; _tmp3_ = vala_data_type_get_data_type (_tmp2_); _tmp4_ = _tmp3_; if (_tmp4_ != NULL) { ValaDataType* _tmp5_; ValaTypeSymbol* _tmp6_; ValaTypeSymbol* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; ValaCCodeIdentifier* _tmp10_; ValaCCodeIdentifier* _tmp11_; _tmp5_ = type_reference; _tmp6_ = vala_data_type_get_data_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_ccode_base_module_get_ccode_get_value_function ((ValaCodeNode*) _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_identifier_new (_tmp9_); _tmp11_ = _tmp10_; _g_free0 (_tmp9_); result = _tmp11_; _vala_code_node_unref0 (array_type); return result; } else { gboolean _tmp12_ = FALSE; ValaArrayType* _tmp13_; gboolean _tmp22_; _tmp13_ = array_type; if (_tmp13_ != NULL) { ValaArrayType* _tmp14_; ValaDataType* _tmp15_; ValaDataType* _tmp16_; ValaTypeSymbol* _tmp17_; ValaTypeSymbol* _tmp18_; ValaDataType* _tmp19_; ValaTypeSymbol* _tmp20_; ValaTypeSymbol* _tmp21_; _tmp14_ = array_type; _tmp15_ = vala_array_type_get_element_type (_tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_data_type_get_data_type (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = self->string_type; _tmp20_ = vala_data_type_get_data_type (_tmp19_); _tmp21_ = _tmp20_; _tmp12_ = _tmp18_ == _tmp21_; } else { _tmp12_ = FALSE; } _tmp22_ = _tmp12_; if (_tmp22_) { ValaCCodeIdentifier* _tmp23_; _tmp23_ = vala_ccode_identifier_new ("g_value_get_boxed"); result = _tmp23_; _vala_code_node_unref0 (array_type); return result; } else { ValaCCodeIdentifier* _tmp24_; _tmp24_ = vala_ccode_identifier_new ("g_value_get_pointer"); result = _tmp24_; _vala_code_node_unref0 (array_type); return result; } } _vala_code_node_unref0 (array_type); } static void vala_ccode_base_module_real_append_vala_array_free (ValaCCodeBaseModule* self) { } void vala_ccode_base_module_append_vala_array_free (ValaCCodeBaseModule* self) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->append_vala_array_free (self); } static void vala_ccode_base_module_real_append_vala_array_move (ValaCCodeBaseModule* self) { } void vala_ccode_base_module_append_vala_array_move (ValaCCodeBaseModule* self) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->append_vala_array_move (self); } static void vala_ccode_base_module_real_append_vala_array_length (ValaCCodeBaseModule* self) { } void vala_ccode_base_module_append_vala_array_length (ValaCCodeBaseModule* self) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->append_vala_array_length (self); } static void vala_ccode_base_module_real_visit_source_file (ValaCodeVisitor* base, ValaSourceFile* source_file) { ValaCCodeBaseModule * self; ValaCCodeFile* _tmp0_; GHashFunc _tmp1_; GEqualFunc _tmp2_; ValaHashSet* _tmp3_; GHashFunc _tmp4_; GEqualFunc _tmp5_; ValaHashSet* _tmp6_; GHashFunc _tmp7_; GEqualFunc _tmp8_; ValaHashSet* _tmp9_; ValaCodeContext* _tmp10_; ValaProfile _tmp11_; ValaProfile _tmp12_; ValaSourceFile* _tmp17_; ValaCodeContext* _tmp18_; ValaReport* _tmp19_; ValaReport* _tmp20_; gint _tmp21_ = 0; ValaSourceFile* _tmp22_; ValaSourceFileType _tmp23_; ValaSourceFileType _tmp24_; gboolean _tmp25_; gboolean _tmp26_; gboolean _tmp27_; gboolean _tmp28_; ValaSourceFile* _tmp30_; ValaList* _tmp31_ = NULL; ValaList* comments; ValaList* _tmp32_; ValaCCodeFile* _tmp50_; ValaSourceFile* _tmp51_; gchar* _tmp52_ = NULL; gchar* _tmp53_; ValaSourceFile* _tmp54_; const gchar* _tmp55_; const gchar* _tmp56_; ValaCodeContext* _tmp57_; gboolean _tmp58_; gboolean _tmp59_; ValaCodeContext* _tmp60_; gboolean _tmp61_; gboolean _tmp62_; gboolean _tmp63_ = FALSE; gboolean _tmp64_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (source_file != NULL); _tmp0_ = vala_ccode_file_new (); _vala_ccode_file_unref0 (self->cfile); self->cfile = _tmp0_; _tmp1_ = g_str_hash; _tmp2_ = g_str_equal; _tmp3_ = vala_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp1_, _tmp2_); _vala_iterable_unref0 (self->user_marshal_set); self->user_marshal_set = (ValaSet*) _tmp3_; self->next_regex_id = 0; self->gvaluecollector_h_needed = FALSE; self->requires_array_free = FALSE; self->requires_array_move = FALSE; self->requires_array_length = FALSE; _tmp4_ = g_str_hash; _tmp5_ = g_str_equal; _tmp6_ = vala_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp4_, _tmp5_); _vala_iterable_unref0 (self->wrappers); self->wrappers = (ValaSet*) _tmp6_; _tmp7_ = g_direct_hash; _tmp8_ = g_direct_equal; _tmp9_ = vala_hash_set_new (VALA_TYPE_SYMBOL, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp7_, _tmp8_); _vala_iterable_unref0 (self->priv->generated_external_symbols); self->priv->generated_external_symbols = (ValaSet*) _tmp9_; _tmp10_ = self->priv->_context; _tmp11_ = vala_code_context_get_profile (_tmp10_); _tmp12_ = _tmp11_; if (_tmp12_ == VALA_PROFILE_GOBJECT) { ValaCCodeFile* _tmp13_; ValaCCodeFile* _tmp14_; ValaCCodeFile* _tmp15_; ValaCCodeFile* _tmp16_; _tmp13_ = self->header_file; vala_ccode_file_add_include (_tmp13_, "glib.h", FALSE); _tmp14_ = self->internal_header_file; vala_ccode_file_add_include (_tmp14_, "glib.h", FALSE); _tmp15_ = self->cfile; vala_ccode_file_add_include (_tmp15_, "glib.h", FALSE); _tmp16_ = self->cfile; vala_ccode_file_add_include (_tmp16_, "glib-object.h", FALSE); } _tmp17_ = source_file; vala_source_file_accept_children (_tmp17_, (ValaCodeVisitor*) self); _tmp18_ = self->priv->_context; _tmp19_ = vala_code_context_get_report (_tmp18_); _tmp20_ = _tmp19_; _tmp21_ = vala_report_get_errors (_tmp20_); if (_tmp21_ > 0) { return; } _tmp22_ = source_file; _tmp23_ = vala_source_file_get_file_type (_tmp22_); _tmp24_ = _tmp23_; if (_tmp24_ == VALA_SOURCE_FILE_TYPE_FAST) { return; } _tmp25_ = self->requires_array_free; if (_tmp25_) { vala_ccode_base_module_append_vala_array_free (self); } _tmp26_ = self->requires_array_move; if (_tmp26_) { vala_ccode_base_module_append_vala_array_move (self); } _tmp27_ = self->requires_array_length; if (_tmp27_) { vala_ccode_base_module_append_vala_array_length (self); } _tmp28_ = self->gvaluecollector_h_needed; if (_tmp28_) { ValaCCodeFile* _tmp29_; _tmp29_ = self->cfile; vala_ccode_file_add_include (_tmp29_, "gobject/gvaluecollector.h", FALSE); } _tmp30_ = source_file; _tmp31_ = vala_source_file_get_comments (_tmp30_); comments = _tmp31_; _tmp32_ = comments; if (_tmp32_ != NULL) { { ValaList* _tmp33_; ValaList* _tmp34_; ValaList* _comment_list; ValaList* _tmp35_; gint _tmp36_; gint _tmp37_; gint _comment_size; gint _comment_index; _tmp33_ = comments; _tmp34_ = _vala_iterable_ref0 (_tmp33_); _comment_list = _tmp34_; _tmp35_ = _comment_list; _tmp36_ = vala_collection_get_size ((ValaCollection*) _tmp35_); _tmp37_ = _tmp36_; _comment_size = _tmp37_; _comment_index = -1; while (TRUE) { gint _tmp38_; gint _tmp39_; gint _tmp40_; ValaList* _tmp41_; gint _tmp42_; gpointer _tmp43_ = NULL; ValaComment* comment; ValaComment* _tmp44_; const gchar* _tmp45_; const gchar* _tmp46_; ValaCCodeComment* _tmp47_; ValaCCodeComment* ccomment; ValaCCodeFile* _tmp48_; ValaCCodeComment* _tmp49_; _tmp38_ = _comment_index; _comment_index = _tmp38_ + 1; _tmp39_ = _comment_index; _tmp40_ = _comment_size; if (!(_tmp39_ < _tmp40_)) { break; } _tmp41_ = _comment_list; _tmp42_ = _comment_index; _tmp43_ = vala_list_get (_tmp41_, _tmp42_); comment = (ValaComment*) _tmp43_; _tmp44_ = comment; _tmp45_ = vala_comment_get_content (_tmp44_); _tmp46_ = _tmp45_; _tmp47_ = vala_ccode_comment_new (_tmp46_); ccomment = _tmp47_; _tmp48_ = self->cfile; _tmp49_ = ccomment; vala_ccode_file_add_comment (_tmp48_, _tmp49_); _vala_ccode_node_unref0 (ccomment); _vala_comment_unref0 (comment); } _vala_iterable_unref0 (_comment_list); } } _tmp50_ = self->cfile; _tmp51_ = source_file; _tmp52_ = vala_source_file_get_csource_filename (_tmp51_); _tmp53_ = _tmp52_; _tmp54_ = source_file; _tmp55_ = vala_source_file_get_filename (_tmp54_); _tmp56_ = _tmp55_; _tmp57_ = self->priv->_context; _tmp58_ = vala_code_context_get_version_header (_tmp57_); _tmp59_ = _tmp58_; _tmp60_ = self->priv->_context; _tmp61_ = vala_code_context_get_debug (_tmp60_); _tmp62_ = _tmp61_; _tmp63_ = vala_ccode_file_store (_tmp50_, _tmp53_, _tmp56_, _tmp59_, _tmp62_, NULL, NULL); _tmp64_ = !_tmp63_; _g_free0 (_tmp53_); if (_tmp64_) { ValaSourceFile* _tmp65_; gchar* _tmp66_ = NULL; gchar* _tmp67_; gchar* _tmp68_ = NULL; gchar* _tmp69_; _tmp65_ = source_file; _tmp66_ = vala_source_file_get_csource_filename (_tmp65_); _tmp67_ = _tmp66_; _tmp68_ = g_strdup_printf ("unable to open `%s' for writing", _tmp67_); _tmp69_ = _tmp68_; vala_report_error (NULL, _tmp69_); _g_free0 (_tmp69_); _g_free0 (_tmp67_); } _vala_ccode_file_unref0 (self->cfile); self->cfile = NULL; _vala_iterable_unref0 (comments); } static gboolean vala_ccode_base_module_real_generate_enum_declaration (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space) { gboolean result = FALSE; ValaCCodeFile* _tmp0_; ValaEnum* _tmp1_; ValaEnum* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gboolean _tmp5_ = FALSE; gboolean _tmp6_; ValaEnum* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; ValaCCodeEnum* _tmp10_; ValaCCodeEnum* _tmp11_; ValaCCodeEnum* cenum; ValaCCodeEnum* _tmp12_; ValaEnum* _tmp13_; gboolean _tmp14_; gboolean _tmp15_; gint flag_shift; ValaCCodeFile* _tmp62_; ValaCCodeEnum* _tmp63_; ValaCCodeFile* _tmp64_; ValaCCodeNewline* _tmp65_; ValaCCodeNewline* _tmp66_; ValaEnum* _tmp67_; gboolean _tmp68_ = FALSE; ValaCCodeFile* _tmp69_; ValaCCodeNewline* _tmp70_; ValaCCodeNewline* _tmp71_; ValaEnum* _tmp72_; gchar* _tmp73_ = NULL; gchar* _tmp74_; gchar* _tmp75_ = NULL; gchar* _tmp76_; gchar* macro; ValaCCodeFile* _tmp77_; ValaEnum* _tmp78_; gchar* _tmp79_ = NULL; gchar* _tmp80_; const gchar* _tmp81_; ValaCCodeMacroReplacement* _tmp82_; ValaCCodeMacroReplacement* _tmp83_; ValaEnum* _tmp84_; gchar* _tmp85_ = NULL; gchar* _tmp86_; gchar* _tmp87_ = NULL; gchar* _tmp88_; gchar* fun_name; const gchar* _tmp89_; ValaCCodeFunction* _tmp90_; ValaCCodeFunction* regfun; ValaCCodeFunction* _tmp91_; ValaEnum* _tmp92_; ValaSymbolAccessibility _tmp93_; ValaSymbolAccessibility _tmp94_; ValaCCodeFile* _tmp97_; ValaCCodeFunction* _tmp98_; g_return_val_if_fail (en != NULL, FALSE); g_return_val_if_fail (decl_space != NULL, FALSE); _tmp0_ = decl_space; _tmp1_ = en; _tmp2_ = en; _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_ccode_base_module_add_symbol_declaration (self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); if (_tmp6_) { result = FALSE; return result; } _tmp7_ = en; _tmp8_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_enum_new (_tmp9_); _tmp11_ = _tmp10_; _g_free0 (_tmp9_); cenum = _tmp11_; _tmp12_ = cenum; _tmp13_ = en; _tmp14_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp13_); _tmp15_ = _tmp14_; vala_ccode_enum_set_deprecated (_tmp12_, _tmp15_); flag_shift = 0; { ValaEnum* _tmp16_; ValaList* _tmp17_ = NULL; ValaList* _ev_list; ValaList* _tmp18_; gint _tmp19_; gint _tmp20_; gint _ev_size; gint _ev_index; _tmp16_ = en; _tmp17_ = vala_enum_get_values (_tmp16_); _ev_list = _tmp17_; _tmp18_ = _ev_list; _tmp19_ = vala_collection_get_size ((ValaCollection*) _tmp18_); _tmp20_ = _tmp19_; _ev_size = _tmp20_; _ev_index = -1; while (TRUE) { gint _tmp21_; gint _tmp22_; gint _tmp23_; ValaList* _tmp24_; gint _tmp25_; gpointer _tmp26_ = NULL; ValaEnumValue* ev; ValaCCodeEnumValue* c_ev = NULL; ValaEnumValue* _tmp27_; ValaExpression* _tmp28_; ValaExpression* _tmp29_; ValaCCodeEnumValue* _tmp56_; ValaEnumValue* _tmp57_; gboolean _tmp58_; gboolean _tmp59_; ValaCCodeEnum* _tmp60_; ValaCCodeEnumValue* _tmp61_; _tmp21_ = _ev_index; _ev_index = _tmp21_ + 1; _tmp22_ = _ev_index; _tmp23_ = _ev_size; if (!(_tmp22_ < _tmp23_)) { break; } _tmp24_ = _ev_list; _tmp25_ = _ev_index; _tmp26_ = vala_list_get (_tmp24_, _tmp25_); ev = (ValaEnumValue*) _tmp26_; _tmp27_ = ev; _tmp28_ = vala_constant_get_value ((ValaConstant*) _tmp27_); _tmp29_ = _tmp28_; if (_tmp29_ == NULL) { ValaEnumValue* _tmp30_; gchar* _tmp31_ = NULL; gchar* _tmp32_; ValaCCodeEnumValue* _tmp33_; ValaEnum* _tmp34_; gboolean _tmp35_; gboolean _tmp36_; _tmp30_ = ev; _tmp31_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp30_); _tmp32_ = _tmp31_; _tmp33_ = vala_ccode_enum_value_new (_tmp32_, NULL); _vala_ccode_node_unref0 (c_ev); c_ev = _tmp33_; _g_free0 (_tmp32_); _tmp34_ = en; _tmp35_ = vala_enum_get_is_flags (_tmp34_); _tmp36_ = _tmp35_; if (_tmp36_) { ValaCCodeEnumValue* _tmp37_; gint _tmp38_; gchar* _tmp39_ = NULL; gchar* _tmp40_; ValaCCodeConstant* _tmp41_; ValaCCodeConstant* _tmp42_; gint _tmp43_; _tmp37_ = c_ev; _tmp38_ = flag_shift; _tmp39_ = g_strdup_printf ("1 << %d", _tmp38_); _tmp40_ = _tmp39_; _tmp41_ = vala_ccode_constant_new (_tmp40_); _tmp42_ = _tmp41_; vala_ccode_enum_value_set_value (_tmp37_, (ValaCCodeExpression*) _tmp42_); _vala_ccode_node_unref0 (_tmp42_); _g_free0 (_tmp40_); _tmp43_ = flag_shift; flag_shift = _tmp43_ + 1; } } else { ValaEnumValue* _tmp44_; ValaExpression* _tmp45_; ValaExpression* _tmp46_; ValaEnumValue* _tmp47_; gchar* _tmp48_ = NULL; gchar* _tmp49_; ValaEnumValue* _tmp50_; ValaExpression* _tmp51_; ValaExpression* _tmp52_; ValaCCodeExpression* _tmp53_ = NULL; ValaCCodeExpression* _tmp54_; ValaCCodeEnumValue* _tmp55_; _tmp44_ = ev; _tmp45_ = vala_constant_get_value ((ValaConstant*) _tmp44_); _tmp46_ = _tmp45_; vala_code_node_emit ((ValaCodeNode*) _tmp46_, (ValaCodeGenerator*) self); _tmp47_ = ev; _tmp48_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp47_); _tmp49_ = _tmp48_; _tmp50_ = ev; _tmp51_ = vala_constant_get_value ((ValaConstant*) _tmp50_); _tmp52_ = _tmp51_; _tmp53_ = vala_ccode_base_module_get_cvalue (self, _tmp52_); _tmp54_ = _tmp53_; _tmp55_ = vala_ccode_enum_value_new (_tmp49_, _tmp54_); _vala_ccode_node_unref0 (c_ev); c_ev = _tmp55_; _vala_ccode_node_unref0 (_tmp54_); _g_free0 (_tmp49_); } _tmp56_ = c_ev; _tmp57_ = ev; _tmp58_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp57_); _tmp59_ = _tmp58_; vala_ccode_enum_value_set_deprecated (_tmp56_, _tmp59_); _tmp60_ = cenum; _tmp61_ = c_ev; vala_ccode_enum_add_value (_tmp60_, _tmp61_); _vala_ccode_node_unref0 (c_ev); _vala_code_node_unref0 (ev); } _vala_iterable_unref0 (_ev_list); } _tmp62_ = decl_space; _tmp63_ = cenum; vala_ccode_file_add_type_definition (_tmp62_, (ValaCCodeNode*) _tmp63_); _tmp64_ = decl_space; _tmp65_ = vala_ccode_newline_new (); _tmp66_ = _tmp65_; vala_ccode_file_add_type_definition (_tmp64_, (ValaCCodeNode*) _tmp66_); _vala_ccode_node_unref0 (_tmp66_); _tmp67_ = en; _tmp68_ = vala_ccode_base_module_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp67_); if (!_tmp68_) { result = TRUE; _vala_ccode_node_unref0 (cenum); return result; } _tmp69_ = decl_space; _tmp70_ = vala_ccode_newline_new (); _tmp71_ = _tmp70_; vala_ccode_file_add_type_declaration (_tmp69_, (ValaCCodeNode*) _tmp71_); _vala_ccode_node_unref0 (_tmp71_); _tmp72_ = en; _tmp73_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp72_, NULL); _tmp74_ = _tmp73_; _tmp75_ = g_strdup_printf ("(%s_get_type ())", _tmp74_); _tmp76_ = _tmp75_; _g_free0 (_tmp74_); macro = _tmp76_; _tmp77_ = decl_space; _tmp78_ = en; _tmp79_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp78_); _tmp80_ = _tmp79_; _tmp81_ = macro; _tmp82_ = vala_ccode_macro_replacement_new (_tmp80_, _tmp81_); _tmp83_ = _tmp82_; vala_ccode_file_add_type_declaration (_tmp77_, (ValaCCodeNode*) _tmp83_); _vala_ccode_node_unref0 (_tmp83_); _g_free0 (_tmp80_); _tmp84_ = en; _tmp85_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp84_, NULL); _tmp86_ = _tmp85_; _tmp87_ = g_strdup_printf ("%s_get_type", _tmp86_); _tmp88_ = _tmp87_; _g_free0 (_tmp86_); fun_name = _tmp88_; _tmp89_ = fun_name; _tmp90_ = vala_ccode_function_new (_tmp89_, "GType"); regfun = _tmp90_; _tmp91_ = regfun; vala_ccode_function_set_attributes (_tmp91_, "G_GNUC_CONST"); _tmp92_ = en; _tmp93_ = vala_symbol_get_access ((ValaSymbol*) _tmp92_); _tmp94_ = _tmp93_; if (_tmp94_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) { ValaCCodeFunction* _tmp95_; ValaCCodeFunction* _tmp96_; _tmp95_ = regfun; vala_ccode_function_set_modifiers (_tmp95_, VALA_CCODE_MODIFIERS_STATIC); _tmp96_ = regfun; vala_ccode_function_set_attributes (_tmp96_, "G_GNUC_UNUSED"); } _tmp97_ = decl_space; _tmp98_ = regfun; vala_ccode_file_add_function_declaration (_tmp97_, _tmp98_); result = TRUE; _vala_ccode_node_unref0 (regfun); _g_free0 (fun_name); _g_free0 (macro); _vala_ccode_node_unref0 (cenum); return result; } gboolean vala_ccode_base_module_generate_enum_declaration (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space) { g_return_val_if_fail (self != NULL, FALSE); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_enum_declaration (self, en, decl_space); } static void vala_ccode_base_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en) { ValaCCodeBaseModule * self; ValaEnum* _tmp0_; ValaSourceReference* _tmp1_; ValaSourceReference* _tmp2_; ValaEnum* _tmp3_; ValaEnum* _tmp4_; ValaComment* _tmp5_; ValaComment* _tmp6_; ValaEnum* _tmp15_; ValaCCodeFile* _tmp16_; ValaEnum* _tmp17_; gboolean _tmp18_ = FALSE; ValaEnum* _tmp21_; gboolean _tmp22_ = FALSE; self = (ValaCCodeBaseModule*) base; g_return_if_fail (en != NULL); _tmp0_ = en; _tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; vala_ccode_base_module_push_line (self, _tmp2_); _tmp3_ = en; vala_code_node_accept_children ((ValaCodeNode*) _tmp3_, (ValaCodeVisitor*) self); _tmp4_ = en; _tmp5_ = vala_symbol_get_comment ((ValaSymbol*) _tmp4_); _tmp6_ = _tmp5_; if (_tmp6_ != NULL) { ValaCCodeFile* _tmp7_; ValaEnum* _tmp8_; ValaComment* _tmp9_; ValaComment* _tmp10_; const gchar* _tmp11_; const gchar* _tmp12_; ValaCCodeComment* _tmp13_; ValaCCodeComment* _tmp14_; _tmp7_ = self->cfile; _tmp8_ = en; _tmp9_ = vala_symbol_get_comment ((ValaSymbol*) _tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_comment_get_content (_tmp10_); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_comment_new (_tmp12_); _tmp14_ = _tmp13_; vala_ccode_file_add_type_member_definition (_tmp7_, (ValaCCodeNode*) _tmp14_); _vala_ccode_node_unref0 (_tmp14_); } _tmp15_ = en; _tmp16_ = self->cfile; vala_ccode_base_module_generate_enum_declaration (self, _tmp15_, _tmp16_); _tmp17_ = en; _tmp18_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp17_); if (!_tmp18_) { ValaEnum* _tmp19_; ValaCCodeFile* _tmp20_; _tmp19_ = en; _tmp20_ = self->header_file; vala_ccode_base_module_generate_enum_declaration (self, _tmp19_, _tmp20_); } _tmp21_ = en; _tmp22_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp21_); if (!_tmp22_) { ValaEnum* _tmp23_; ValaCCodeFile* _tmp24_; _tmp23_ = en; _tmp24_ = self->internal_header_file; vala_ccode_base_module_generate_enum_declaration (self, _tmp23_, _tmp24_); } vala_ccode_base_module_pop_line (self); } void vala_ccode_base_module_visit_member (ValaCCodeBaseModule* self, ValaSymbol* m) { gboolean _tmp0_ = FALSE; ValaSymbol* _tmp1_; gboolean _tmp4_; g_return_if_fail (self != NULL); g_return_if_fail (m != NULL); _tmp1_ = m; if (VALA_IS_LOCKABLE (_tmp1_)) { ValaSymbol* _tmp2_; gboolean _tmp3_ = FALSE; _tmp2_ = m; _tmp3_ = vala_lockable_get_lock_used (VALA_LOCKABLE (_tmp2_)); _tmp0_ = _tmp3_; } else { _tmp0_ = FALSE; } _tmp4_ = _tmp0_; if (_tmp4_) { ValaCCodeIdentifier* _tmp5_; ValaCCodeExpression* l; ValaCCodeBaseModuleEmitContext* _tmp6_; ValaCCodeBaseModuleEmitContext* _tmp7_; ValaCCodeBaseModuleEmitContext* init_context; ValaCCodeBaseModuleEmitContext* _tmp8_; ValaCCodeBaseModuleEmitContext* _tmp9_; ValaCCodeBaseModuleEmitContext* finalize_context; ValaSymbol* _tmp10_; gboolean _tmp11_ = FALSE; ValaCCodeBaseModuleEmitContext* _tmp63_; ValaStruct* _tmp64_; ValaMethod* _tmp65_; ValaMethod* _tmp66_; gchar* _tmp67_ = NULL; gchar* _tmp68_; ValaCCodeIdentifier* _tmp69_; ValaCCodeIdentifier* _tmp70_; ValaCCodeFunctionCall* _tmp71_; ValaCCodeFunctionCall* _tmp72_; ValaCCodeFunctionCall* initf; ValaCCodeFunctionCall* _tmp73_; ValaCCodeExpression* _tmp74_; ValaCCodeUnaryExpression* _tmp75_; ValaCCodeUnaryExpression* _tmp76_; ValaCCodeFunction* _tmp77_; ValaCCodeFunction* _tmp78_; ValaCCodeFunctionCall* _tmp79_; ValaCCodeBaseModuleEmitContext* _tmp80_; _tmp5_ = vala_ccode_identifier_new ("self"); l = (ValaCCodeExpression*) _tmp5_; _tmp6_ = self->class_init_context; _tmp7_ = _vala_ccode_base_module_emit_context_ref0 (_tmp6_); init_context = _tmp7_; _tmp8_ = self->class_finalize_context; _tmp9_ = _vala_ccode_base_module_emit_context_ref0 (_tmp8_); finalize_context = _tmp9_; _tmp10_ = m; _tmp11_ = vala_symbol_is_instance_member (_tmp10_); if (_tmp11_) { ValaCCodeExpression* _tmp12_; ValaCCodeMemberAccess* _tmp13_; ValaCCodeMemberAccess* _tmp14_; ValaSymbol* _tmp15_; const gchar* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_ = NULL; gchar* _tmp19_; ValaCCodeMemberAccess* _tmp20_; ValaCCodeBaseModuleEmitContext* _tmp21_; ValaCCodeBaseModuleEmitContext* _tmp22_; ValaCCodeBaseModuleEmitContext* _tmp23_; ValaCCodeBaseModuleEmitContext* _tmp24_; _tmp12_ = l; _tmp13_ = vala_ccode_member_access_new_pointer (_tmp12_, "priv"); _tmp14_ = _tmp13_; _tmp15_ = m; _tmp16_ = vala_symbol_get_name (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp17_); _tmp19_ = _tmp18_; _tmp20_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp14_, _tmp19_); _vala_ccode_node_unref0 (l); l = (ValaCCodeExpression*) _tmp20_; _g_free0 (_tmp19_); _vala_ccode_node_unref0 (_tmp14_); _tmp21_ = self->instance_init_context; _tmp22_ = _vala_ccode_base_module_emit_context_ref0 (_tmp21_); _vala_ccode_base_module_emit_context_unref0 (init_context); init_context = _tmp22_; _tmp23_ = self->instance_finalize_context; _tmp24_ = _vala_ccode_base_module_emit_context_ref0 (_tmp23_); _vala_ccode_base_module_emit_context_unref0 (finalize_context); finalize_context = _tmp24_; } else { ValaSymbol* _tmp25_; gboolean _tmp26_ = FALSE; _tmp25_ = m; _tmp26_ = vala_symbol_is_class_member (_tmp25_); if (_tmp26_) { ValaSymbol* _tmp27_; ValaSymbol* _tmp28_; ValaSymbol* _tmp29_; ValaTypeSymbol* _tmp30_; ValaTypeSymbol* parent; ValaTypeSymbol* _tmp31_; gchar* _tmp32_ = NULL; gchar* _tmp33_; gchar* _tmp34_ = NULL; gchar* _tmp35_; ValaCCodeIdentifier* _tmp36_; ValaCCodeIdentifier* _tmp37_; ValaCCodeFunctionCall* _tmp38_; ValaCCodeFunctionCall* _tmp39_; ValaCCodeFunctionCall* get_class_private_call; ValaCCodeFunctionCall* _tmp40_; ValaCCodeIdentifier* _tmp41_; ValaCCodeIdentifier* _tmp42_; ValaCCodeFunctionCall* _tmp43_; ValaSymbol* _tmp44_; const gchar* _tmp45_; const gchar* _tmp46_; gchar* _tmp47_ = NULL; gchar* _tmp48_; ValaCCodeMemberAccess* _tmp49_; _tmp27_ = m; _tmp28_ = vala_symbol_get_parent_symbol (_tmp27_); _tmp29_ = _tmp28_; _tmp30_ = _vala_code_node_ref0 (VALA_TYPESYMBOL (_tmp29_)); parent = _tmp30_; _tmp31_ = parent; _tmp32_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp31_, NULL); _tmp33_ = _tmp32_; _tmp34_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp33_); _tmp35_ = _tmp34_; _tmp36_ = vala_ccode_identifier_new (_tmp35_); _tmp37_ = _tmp36_; _tmp38_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp37_); _tmp39_ = _tmp38_; _vala_ccode_node_unref0 (_tmp37_); _g_free0 (_tmp35_); _g_free0 (_tmp33_); get_class_private_call = _tmp39_; _tmp40_ = get_class_private_call; _tmp41_ = vala_ccode_identifier_new ("klass"); _tmp42_ = _tmp41_; vala_ccode_function_call_add_argument (_tmp40_, (ValaCCodeExpression*) _tmp42_); _vala_ccode_node_unref0 (_tmp42_); _tmp43_ = get_class_private_call; _tmp44_ = m; _tmp45_ = vala_symbol_get_name (_tmp44_); _tmp46_ = _tmp45_; _tmp47_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp46_); _tmp48_ = _tmp47_; _tmp49_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp43_, _tmp48_); _vala_ccode_node_unref0 (l); l = (ValaCCodeExpression*) _tmp49_; _g_free0 (_tmp48_); _vala_ccode_node_unref0 (get_class_private_call); _vala_code_node_unref0 (parent); } else { ValaSymbol* _tmp50_; ValaSymbol* _tmp51_; ValaSymbol* _tmp52_; gchar* _tmp53_ = NULL; gchar* _tmp54_; ValaSymbol* _tmp55_; const gchar* _tmp56_; const gchar* _tmp57_; gchar* _tmp58_ = NULL; gchar* _tmp59_; gchar* _tmp60_ = NULL; gchar* _tmp61_; ValaCCodeIdentifier* _tmp62_; _tmp50_ = m; _tmp51_ = vala_symbol_get_parent_symbol (_tmp50_); _tmp52_ = _tmp51_; _tmp53_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp52_, NULL); _tmp54_ = _tmp53_; _tmp55_ = m; _tmp56_ = vala_symbol_get_name (_tmp55_); _tmp57_ = _tmp56_; _tmp58_ = g_strdup_printf ("%s_%s", _tmp54_, _tmp57_); _tmp59_ = _tmp58_; _tmp60_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp59_); _tmp61_ = _tmp60_; _tmp62_ = vala_ccode_identifier_new (_tmp61_); _vala_ccode_node_unref0 (l); l = (ValaCCodeExpression*) _tmp62_; _g_free0 (_tmp61_); _g_free0 (_tmp59_); _g_free0 (_tmp54_); } } _tmp63_ = init_context; vala_ccode_base_module_push_context (self, _tmp63_); _tmp64_ = self->mutex_type; _tmp65_ = vala_struct_get_default_construction_method (_tmp64_); _tmp66_ = _tmp65_; _tmp67_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp66_); _tmp68_ = _tmp67_; _tmp69_ = vala_ccode_identifier_new (_tmp68_); _tmp70_ = _tmp69_; _tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_); _tmp72_ = _tmp71_; _vala_ccode_node_unref0 (_tmp70_); _g_free0 (_tmp68_); initf = _tmp72_; _tmp73_ = initf; _tmp74_ = l; _tmp75_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp74_); _tmp76_ = _tmp75_; vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp76_); _vala_ccode_node_unref0 (_tmp76_); _tmp77_ = vala_ccode_base_module_get_ccode (self); _tmp78_ = _tmp77_; _tmp79_ = initf; vala_ccode_function_add_expression (_tmp78_, (ValaCCodeExpression*) _tmp79_); vala_ccode_base_module_pop_context (self); _tmp80_ = finalize_context; if (_tmp80_ != NULL) { ValaCCodeBaseModuleEmitContext* _tmp81_; ValaCCodeIdentifier* _tmp82_; ValaCCodeIdentifier* _tmp83_; ValaCCodeFunctionCall* _tmp84_; ValaCCodeFunctionCall* _tmp85_; ValaCCodeFunctionCall* fc; ValaCCodeFunctionCall* _tmp86_; ValaCCodeExpression* _tmp87_; ValaCCodeUnaryExpression* _tmp88_; ValaCCodeUnaryExpression* _tmp89_; ValaCCodeFunction* _tmp90_; ValaCCodeFunction* _tmp91_; ValaCCodeFunctionCall* _tmp92_; _tmp81_ = finalize_context; vala_ccode_base_module_push_context (self, _tmp81_); _tmp82_ = vala_ccode_identifier_new ("g_static_rec_mutex_free"); _tmp83_ = _tmp82_; _tmp84_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp83_); _tmp85_ = _tmp84_; _vala_ccode_node_unref0 (_tmp83_); fc = _tmp85_; _tmp86_ = fc; _tmp87_ = l; _tmp88_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp87_); _tmp89_ = _tmp88_; vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp89_); _vala_ccode_node_unref0 (_tmp89_); _tmp90_ = vala_ccode_base_module_get_ccode (self); _tmp91_ = _tmp90_; _tmp92_ = fc; vala_ccode_function_add_expression (_tmp91_, (ValaCCodeExpression*) _tmp92_); vala_ccode_base_module_pop_context (self); _vala_ccode_node_unref0 (fc); } _vala_ccode_node_unref0 (initf); _vala_ccode_base_module_emit_context_unref0 (finalize_context); _vala_ccode_base_module_emit_context_unref0 (init_context); _vala_ccode_node_unref0 (l); } } void vala_ccode_base_module_generate_constant_declaration (ValaCCodeBaseModule* self, ValaConstant* c, ValaCCodeFile* decl_space, gboolean definition) { ValaConstant* _tmp0_; ValaSymbol* _tmp1_; ValaSymbol* _tmp2_; ValaCCodeFile* _tmp3_; ValaConstant* _tmp4_; ValaConstant* _tmp5_; gchar* _tmp6_ = NULL; gchar* _tmp7_; gboolean _tmp8_ = FALSE; gboolean _tmp9_; ValaConstant* _tmp10_; gboolean _tmp11_; gboolean _tmp12_; g_return_if_fail (self != NULL); g_return_if_fail (c != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = c; _tmp1_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; if (VALA_IS_BLOCK (_tmp2_)) { return; } _tmp3_ = decl_space; _tmp4_ = c; _tmp5_ = c; _tmp6_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_ccode_base_module_add_symbol_declaration (self, _tmp3_, (ValaSymbol*) _tmp4_, _tmp7_); _tmp9_ = _tmp8_; _g_free0 (_tmp7_); if (_tmp9_) { return; } _tmp10_ = c; _tmp11_ = vala_symbol_get_external ((ValaSymbol*) _tmp10_); _tmp12_ = _tmp11_; if (!_tmp12_) { ValaConstant* _tmp13_; ValaDataType* _tmp14_; ValaDataType* _tmp15_; ValaCCodeFile* _tmp16_; ValaConstant* _tmp17_; ValaExpression* _tmp18_; ValaExpression* _tmp19_; ValaConstant* _tmp20_; ValaExpression* _tmp21_; ValaExpression* _tmp22_; ValaInitializerList* _tmp23_; ValaInitializerList* initializer_list; ValaInitializerList* _tmp24_; _tmp13_ = c; _tmp14_ = vala_constant_get_type_reference (_tmp13_); _tmp15_ = _tmp14_; _tmp16_ = decl_space; vala_ccode_base_module_generate_type_declaration (self, _tmp15_, _tmp16_); _tmp17_ = c; _tmp18_ = vala_constant_get_value (_tmp17_); _tmp19_ = _tmp18_; vala_code_node_emit ((ValaCodeNode*) _tmp19_, (ValaCodeGenerator*) self); _tmp20_ = c; _tmp21_ = vala_constant_get_value (_tmp20_); _tmp22_ = _tmp21_; _tmp23_ = _vala_code_node_ref0 (VALA_IS_INITIALIZER_LIST (_tmp22_) ? ((ValaInitializerList*) _tmp22_) : NULL); initializer_list = _tmp23_; _tmp24_ = initializer_list; if (_tmp24_ != NULL) { ValaConstant* _tmp25_; ValaDataType* _tmp26_; ValaDataType* _tmp27_; gchar* _tmp28_ = NULL; gchar* _tmp29_; ValaCCodeDeclaration* _tmp30_; ValaCCodeDeclaration* _tmp31_; ValaCCodeDeclaration* _cdecl_; gchar* _tmp32_; gchar* arr; ValaConstant* _tmp33_; ValaDataType* _tmp34_; ValaDataType* _tmp35_; ValaConstant* _tmp40_; ValaExpression* _tmp41_; ValaExpression* _tmp42_; ValaCCodeExpression* _tmp43_ = NULL; ValaCCodeExpression* cinitializer; gboolean _tmp44_; ValaCCodeDeclaration* _tmp45_; ValaConstant* _tmp46_; gchar* _tmp47_ = NULL; gchar* _tmp48_; const gchar* _tmp49_; gchar* _tmp50_ = NULL; gchar* _tmp51_; ValaCCodeExpression* _tmp52_; ValaCCodeVariableDeclarator* _tmp53_; ValaCCodeVariableDeclarator* _tmp54_; ValaConstant* _tmp55_; gboolean _tmp56_ = FALSE; ValaCCodeFile* _tmp59_; ValaCCodeDeclaration* _tmp60_; _tmp25_ = c; _tmp26_ = vala_constant_get_type_reference (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_base_module_get_ccode_const_name ((ValaCodeNode*) _tmp27_); _tmp29_ = _tmp28_; _tmp30_ = vala_ccode_declaration_new (_tmp29_); _tmp31_ = _tmp30_; _g_free0 (_tmp29_); _cdecl_ = _tmp31_; _tmp32_ = g_strdup (""); arr = _tmp32_; _tmp33_ = c; _tmp34_ = vala_constant_get_type_reference (_tmp33_); _tmp35_ = _tmp34_; if (VALA_IS_ARRAY_TYPE (_tmp35_)) { ValaInitializerList* _tmp36_; gint _tmp37_; gint _tmp38_; gchar* _tmp39_ = NULL; _tmp36_ = initializer_list; _tmp37_ = vala_initializer_list_get_size (_tmp36_); _tmp38_ = _tmp37_; _tmp39_ = g_strdup_printf ("[%d]", _tmp38_); _g_free0 (arr); arr = _tmp39_; } _tmp40_ = c; _tmp41_ = vala_constant_get_value (_tmp40_); _tmp42_ = _tmp41_; _tmp43_ = vala_ccode_base_module_get_cvalue (self, _tmp42_); cinitializer = _tmp43_; _tmp44_ = definition; if (!_tmp44_) { _vala_ccode_node_unref0 (cinitializer); cinitializer = NULL; } _tmp45_ = _cdecl_; _tmp46_ = c; _tmp47_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp46_); _tmp48_ = _tmp47_; _tmp49_ = arr; _tmp50_ = g_strdup_printf ("%s%s", _tmp48_, _tmp49_); _tmp51_ = _tmp50_; _tmp52_ = cinitializer; _tmp53_ = vala_ccode_variable_declarator_new (_tmp51_, _tmp52_, NULL); _tmp54_ = _tmp53_; vala_ccode_declaration_add_declarator (_tmp45_, (ValaCCodeDeclarator*) _tmp54_); _vala_ccode_node_unref0 (_tmp54_); _g_free0 (_tmp51_); _g_free0 (_tmp48_); _tmp55_ = c; _tmp56_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp55_); if (_tmp56_) { ValaCCodeDeclaration* _tmp57_; _tmp57_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp57_, VALA_CCODE_MODIFIERS_STATIC); } else { ValaCCodeDeclaration* _tmp58_; _tmp58_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp58_, VALA_CCODE_MODIFIERS_EXTERN); } _tmp59_ = decl_space; _tmp60_ = _cdecl_; vala_ccode_file_add_constant_declaration (_tmp59_, (ValaCCodeNode*) _tmp60_); _vala_ccode_node_unref0 (cinitializer); _g_free0 (arr); _vala_ccode_node_unref0 (_cdecl_); } else { ValaConstant* _tmp61_; gchar* _tmp62_ = NULL; gchar* _tmp63_; ValaConstant* _tmp64_; ValaExpression* _tmp65_; ValaExpression* _tmp66_; ValaCCodeExpression* _tmp67_ = NULL; ValaCCodeExpression* _tmp68_; ValaCCodeMacroReplacement* _tmp69_; ValaCCodeMacroReplacement* _tmp70_; ValaCCodeMacroReplacement* cdefine; ValaCCodeFile* _tmp71_; ValaCCodeMacroReplacement* _tmp72_; _tmp61_ = c; _tmp62_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp61_); _tmp63_ = _tmp62_; _tmp64_ = c; _tmp65_ = vala_constant_get_value (_tmp64_); _tmp66_ = _tmp65_; _tmp67_ = vala_ccode_base_module_get_cvalue (self, _tmp66_); _tmp68_ = _tmp67_; _tmp69_ = vala_ccode_macro_replacement_new_with_expression (_tmp63_, _tmp68_); _tmp70_ = _tmp69_; _vala_ccode_node_unref0 (_tmp68_); _g_free0 (_tmp63_); cdefine = _tmp70_; _tmp71_ = decl_space; _tmp72_ = cdefine; vala_ccode_file_add_type_member_declaration (_tmp71_, (ValaCCodeNode*) _tmp72_); _vala_ccode_node_unref0 (cdefine); } _vala_code_node_unref0 (initializer_list); } } static void vala_ccode_base_module_real_visit_constant (ValaCodeVisitor* base, ValaConstant* c) { ValaCCodeBaseModule * self; ValaConstant* _tmp0_; ValaSourceReference* _tmp1_; ValaSourceReference* _tmp2_; ValaConstant* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* _tmp5_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (c != NULL); _tmp0_ = c; _tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; vala_ccode_base_module_push_line (self, _tmp2_); _tmp3_ = c; _tmp4_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp3_); _tmp5_ = _tmp4_; if (VALA_IS_BLOCK (_tmp5_)) { ValaConstant* _tmp6_; ValaDataType* _tmp7_; ValaDataType* _tmp8_; ValaCCodeFile* _tmp9_; ValaConstant* _tmp10_; ValaExpression* _tmp11_; ValaExpression* _tmp12_; ValaConstant* _tmp13_; ValaDataType* _tmp14_; ValaDataType* _tmp15_; gchar* _tmp16_ = NULL; gchar* type_name; gchar* _tmp17_; gchar* arr; ValaConstant* _tmp18_; ValaDataType* _tmp19_; ValaDataType* _tmp20_; ValaConstant* _tmp22_; ValaDataType* _tmp23_; ValaDataType* _tmp24_; ValaDataType* _tmp25_; gboolean _tmp26_ = FALSE; ValaConstant* _tmp29_; ValaExpression* _tmp30_; ValaExpression* _tmp31_; ValaCCodeExpression* _tmp32_ = NULL; ValaCCodeExpression* cinitializer; ValaCCodeFunction* _tmp33_; ValaCCodeFunction* _tmp34_; const gchar* _tmp35_; ValaConstant* _tmp36_; gchar* _tmp37_ = NULL; gchar* _tmp38_; const gchar* _tmp39_; gchar* _tmp40_ = NULL; gchar* _tmp41_; ValaCCodeExpression* _tmp42_; ValaCCodeVariableDeclarator* _tmp43_; ValaCCodeVariableDeclarator* _tmp44_; _tmp6_ = c; _tmp7_ = vala_constant_get_type_reference (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = self->cfile; vala_ccode_base_module_generate_type_declaration (self, _tmp8_, _tmp9_); _tmp10_ = c; _tmp11_ = vala_constant_get_value (_tmp10_); _tmp12_ = _tmp11_; vala_code_node_emit ((ValaCodeNode*) _tmp12_, (ValaCodeGenerator*) self); _tmp13_ = c; _tmp14_ = vala_constant_get_type_reference (_tmp13_); _tmp15_ = _tmp14_; _tmp16_ = vala_ccode_base_module_get_ccode_const_name ((ValaCodeNode*) _tmp15_); type_name = _tmp16_; _tmp17_ = g_strdup (""); arr = _tmp17_; _tmp18_ = c; _tmp19_ = vala_constant_get_type_reference (_tmp18_); _tmp20_ = _tmp19_; if (VALA_IS_ARRAY_TYPE (_tmp20_)) { gchar* _tmp21_; _tmp21_ = g_strdup ("[]"); _g_free0 (arr); arr = _tmp21_; } _tmp22_ = c; _tmp23_ = vala_constant_get_type_reference (_tmp22_); _tmp24_ = _tmp23_; _tmp25_ = self->string_type; _tmp26_ = vala_data_type_compatible (_tmp24_, _tmp25_); if (_tmp26_) { gchar* _tmp27_; gchar* _tmp28_; _tmp27_ = g_strdup ("const char"); _g_free0 (type_name); type_name = _tmp27_; _tmp28_ = g_strdup ("[]"); _g_free0 (arr); arr = _tmp28_; } _tmp29_ = c; _tmp30_ = vala_constant_get_value (_tmp29_); _tmp31_ = _tmp30_; _tmp32_ = vala_ccode_base_module_get_cvalue (self, _tmp31_); cinitializer = _tmp32_; _tmp33_ = vala_ccode_base_module_get_ccode (self); _tmp34_ = _tmp33_; _tmp35_ = type_name; _tmp36_ = c; _tmp37_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp36_); _tmp38_ = _tmp37_; _tmp39_ = arr; _tmp40_ = g_strdup_printf ("%s%s", _tmp38_, _tmp39_); _tmp41_ = _tmp40_; _tmp42_ = cinitializer; _tmp43_ = vala_ccode_variable_declarator_new (_tmp41_, _tmp42_, NULL); _tmp44_ = _tmp43_; vala_ccode_function_add_declaration (_tmp34_, _tmp35_, (ValaCCodeDeclarator*) _tmp44_, VALA_CCODE_MODIFIERS_STATIC); _vala_ccode_node_unref0 (_tmp44_); _g_free0 (_tmp41_); _g_free0 (_tmp38_); _vala_ccode_node_unref0 (cinitializer); _g_free0 (arr); _g_free0 (type_name); } else { ValaConstant* _tmp45_; ValaCCodeFile* _tmp46_; ValaConstant* _tmp47_; gboolean _tmp48_ = FALSE; ValaConstant* _tmp51_; gboolean _tmp52_ = FALSE; _tmp45_ = c; _tmp46_ = self->cfile; vala_ccode_base_module_generate_constant_declaration (self, _tmp45_, _tmp46_, TRUE); _tmp47_ = c; _tmp48_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp47_); if (!_tmp48_) { ValaConstant* _tmp49_; ValaCCodeFile* _tmp50_; _tmp49_ = c; _tmp50_ = self->header_file; vala_ccode_base_module_generate_constant_declaration (self, _tmp49_, _tmp50_, FALSE); } _tmp51_ = c; _tmp52_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp51_); if (!_tmp52_) { ValaConstant* _tmp53_; ValaCCodeFile* _tmp54_; _tmp53_ = c; _tmp54_ = self->internal_header_file; vala_ccode_base_module_generate_constant_declaration (self, _tmp53_, _tmp54_, FALSE); } } vala_ccode_base_module_pop_line (self); } void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* self, ValaField* f, ValaCCodeFile* decl_space) { ValaCCodeFile* _tmp0_; ValaField* _tmp1_; ValaField* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gboolean _tmp5_ = FALSE; gboolean _tmp6_; ValaField* _tmp7_; ValaDataType* _tmp8_; ValaDataType* _tmp9_; ValaCCodeFile* _tmp10_; ValaField* _tmp11_; ValaDataType* _tmp12_; ValaDataType* _tmp13_; gchar* _tmp14_ = NULL; gchar* field_ctype; ValaField* _tmp15_; gboolean _tmp16_; gboolean _tmp17_; const gchar* _tmp20_; ValaCCodeDeclaration* _tmp21_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp22_; ValaField* _tmp23_; gchar* _tmp24_ = NULL; gchar* _tmp25_; ValaField* _tmp26_; ValaDataType* _tmp27_; ValaDataType* _tmp28_; gchar* _tmp29_ = NULL; gchar* _tmp30_; ValaCCodeVariableDeclarator* _tmp31_; ValaCCodeVariableDeclarator* _tmp32_; ValaField* _tmp33_; gboolean _tmp34_ = FALSE; ValaField* _tmp37_; gboolean _tmp38_; gboolean _tmp39_; ValaCCodeFile* _tmp44_; ValaCCodeDeclaration* _tmp45_; ValaField* _tmp46_; gboolean _tmp47_ = FALSE; gboolean _tmp70_ = FALSE; ValaField* _tmp71_; ValaDataType* _tmp72_; ValaDataType* _tmp73_; gboolean _tmp76_; g_return_if_fail (self != NULL); g_return_if_fail (f != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = f; _tmp2_ = f; _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_ccode_base_module_add_symbol_declaration (self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); if (_tmp6_) { return; } _tmp7_ = f; _tmp8_ = vala_variable_get_variable_type ((ValaVariable*) _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = decl_space; vala_ccode_base_module_generate_type_declaration (self, _tmp9_, _tmp10_); _tmp11_ = f; _tmp12_ = vala_variable_get_variable_type ((ValaVariable*) _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_); field_ctype = _tmp14_; _tmp15_ = f; _tmp16_ = vala_field_get_is_volatile (_tmp15_); _tmp17_ = _tmp16_; if (_tmp17_) { const gchar* _tmp18_; gchar* _tmp19_; _tmp18_ = field_ctype; _tmp19_ = g_strconcat ("volatile ", _tmp18_, NULL); _g_free0 (field_ctype); field_ctype = _tmp19_; } _tmp20_ = field_ctype; _tmp21_ = vala_ccode_declaration_new (_tmp20_); _cdecl_ = _tmp21_; _tmp22_ = _cdecl_; _tmp23_ = f; _tmp24_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp23_); _tmp25_ = _tmp24_; _tmp26_ = f; _tmp27_ = vala_variable_get_variable_type ((ValaVariable*) _tmp26_); _tmp28_ = _tmp27_; _tmp29_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp28_); _tmp30_ = _tmp29_; _tmp31_ = vala_ccode_variable_declarator_new (_tmp25_, NULL, _tmp30_); _tmp32_ = _tmp31_; vala_ccode_declaration_add_declarator (_tmp22_, (ValaCCodeDeclarator*) _tmp32_); _vala_ccode_node_unref0 (_tmp32_); _g_free0 (_tmp30_); _g_free0 (_tmp25_); _tmp33_ = f; _tmp34_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp33_); if (_tmp34_) { ValaCCodeDeclaration* _tmp35_; _tmp35_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp35_, VALA_CCODE_MODIFIERS_STATIC); } else { ValaCCodeDeclaration* _tmp36_; _tmp36_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp36_, VALA_CCODE_MODIFIERS_EXTERN); } _tmp37_ = f; _tmp38_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp37_); _tmp39_ = _tmp38_; if (_tmp39_) { ValaCCodeDeclaration* _tmp40_; ValaCCodeDeclaration* _tmp41_; ValaCCodeModifiers _tmp42_; ValaCCodeModifiers _tmp43_; _tmp40_ = _cdecl_; _tmp41_ = _cdecl_; _tmp42_ = vala_ccode_declaration_get_modifiers (_tmp41_); _tmp43_ = _tmp42_; vala_ccode_declaration_set_modifiers (_tmp41_, _tmp43_ | VALA_CCODE_MODIFIERS_DEPRECATED); } _tmp44_ = decl_space; _tmp45_ = _cdecl_; vala_ccode_file_add_type_member_declaration (_tmp44_, (ValaCCodeNode*) _tmp45_); _tmp46_ = f; _tmp47_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp46_); if (_tmp47_) { ValaStruct* _tmp48_; gchar* _tmp49_ = NULL; gchar* _tmp50_; ValaCCodeDeclaration* _tmp51_; ValaCCodeDeclaration* _tmp52_; ValaCCodeDeclaration* flock; ValaField* _tmp53_; gchar* _tmp54_ = NULL; gchar* _tmp55_; gchar* _tmp56_ = NULL; gchar* _tmp57_; ValaCCodeConstant* _tmp58_; ValaCCodeConstant* _tmp59_; ValaCCodeVariableDeclarator* _tmp60_; ValaCCodeVariableDeclarator* _tmp61_; ValaCCodeVariableDeclarator* flock_decl; ValaCCodeDeclaration* _tmp62_; ValaCCodeVariableDeclarator* _tmp63_; ValaField* _tmp64_; gboolean _tmp65_ = FALSE; ValaCCodeFile* _tmp68_; ValaCCodeDeclaration* _tmp69_; _tmp48_ = self->mutex_type; _tmp49_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp48_); _tmp50_ = _tmp49_; _tmp51_ = vala_ccode_declaration_new (_tmp50_); _tmp52_ = _tmp51_; _g_free0 (_tmp50_); flock = _tmp52_; _tmp53_ = f; _tmp54_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp53_); _tmp55_ = _tmp54_; _tmp56_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp55_); _tmp57_ = _tmp56_; _tmp58_ = vala_ccode_constant_new ("{0}"); _tmp59_ = _tmp58_; _tmp60_ = vala_ccode_variable_declarator_new (_tmp57_, (ValaCCodeExpression*) _tmp59_, NULL); _tmp61_ = _tmp60_; _vala_ccode_node_unref0 (_tmp59_); _g_free0 (_tmp57_); _g_free0 (_tmp55_); flock_decl = _tmp61_; _tmp62_ = flock; _tmp63_ = flock_decl; vala_ccode_declaration_add_declarator (_tmp62_, (ValaCCodeDeclarator*) _tmp63_); _tmp64_ = f; _tmp65_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp64_); if (_tmp65_) { ValaCCodeDeclaration* _tmp66_; _tmp66_ = flock; vala_ccode_declaration_set_modifiers (_tmp66_, VALA_CCODE_MODIFIERS_STATIC); } else { ValaCCodeDeclaration* _tmp67_; _tmp67_ = flock; vala_ccode_declaration_set_modifiers (_tmp67_, VALA_CCODE_MODIFIERS_EXTERN); } _tmp68_ = decl_space; _tmp69_ = flock; vala_ccode_file_add_type_member_declaration (_tmp68_, (ValaCCodeNode*) _tmp69_); _vala_ccode_node_unref0 (flock_decl); _vala_ccode_node_unref0 (flock); } _tmp71_ = f; _tmp72_ = vala_variable_get_variable_type ((ValaVariable*) _tmp71_); _tmp73_ = _tmp72_; if (VALA_IS_ARRAY_TYPE (_tmp73_)) { ValaField* _tmp74_; gboolean _tmp75_ = FALSE; _tmp74_ = f; _tmp75_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp74_); _tmp70_ = _tmp75_; } else { _tmp70_ = FALSE; } _tmp76_ = _tmp70_; if (_tmp76_) { ValaField* _tmp77_; ValaDataType* _tmp78_; ValaDataType* _tmp79_; ValaArrayType* _tmp80_; ValaArrayType* array_type; ValaArrayType* _tmp81_; gboolean _tmp82_; gboolean _tmp83_; _tmp77_ = f; _tmp78_ = vala_variable_get_variable_type ((ValaVariable*) _tmp77_); _tmp79_ = _tmp78_; _tmp80_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp79_)); array_type = _tmp80_; _tmp81_ = array_type; _tmp82_ = vala_array_type_get_fixed_length (_tmp81_); _tmp83_ = _tmp82_; if (!_tmp83_) { { gint dim; dim = 1; { gboolean _tmp84_; _tmp84_ = TRUE; while (TRUE) { gboolean _tmp85_; gint _tmp87_; ValaArrayType* _tmp88_; gint _tmp89_; gint _tmp90_; ValaDataType* _tmp91_; ValaDataType* _tmp92_ = NULL; ValaDataType* len_type; ValaDataType* _tmp93_; gchar* _tmp94_ = NULL; gchar* _tmp95_; ValaCCodeDeclaration* _tmp96_; ValaCCodeDeclaration* _tmp97_; ValaField* _tmp98_; gchar* _tmp99_ = NULL; gchar* _tmp100_; gint _tmp101_; gchar* _tmp102_ = NULL; gchar* _tmp103_; ValaCCodeVariableDeclarator* _tmp104_; ValaCCodeVariableDeclarator* _tmp105_; ValaField* _tmp106_; gboolean _tmp107_ = FALSE; ValaCCodeFile* _tmp110_; ValaCCodeDeclaration* _tmp111_; _tmp85_ = _tmp84_; if (!_tmp85_) { gint _tmp86_; _tmp86_ = dim; dim = _tmp86_ + 1; } _tmp84_ = FALSE; _tmp87_ = dim; _tmp88_ = array_type; _tmp89_ = vala_array_type_get_rank (_tmp88_); _tmp90_ = _tmp89_; if (!(_tmp87_ <= _tmp90_)) { break; } _tmp91_ = self->int_type; _tmp92_ = vala_data_type_copy (_tmp91_); len_type = _tmp92_; _tmp93_ = len_type; _tmp94_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp93_); _tmp95_ = _tmp94_; _tmp96_ = vala_ccode_declaration_new (_tmp95_); _vala_ccode_node_unref0 (_cdecl_); _cdecl_ = _tmp96_; _g_free0 (_tmp95_); _tmp97_ = _cdecl_; _tmp98_ = f; _tmp99_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp98_); _tmp100_ = _tmp99_; _tmp101_ = dim; _tmp102_ = vala_ccode_base_module_get_array_length_cname (self, _tmp100_, _tmp101_); _tmp103_ = _tmp102_; _tmp104_ = vala_ccode_variable_declarator_new (_tmp103_, NULL, NULL); _tmp105_ = _tmp104_; vala_ccode_declaration_add_declarator (_tmp97_, (ValaCCodeDeclarator*) _tmp105_); _vala_ccode_node_unref0 (_tmp105_); _g_free0 (_tmp103_); _g_free0 (_tmp100_); _tmp106_ = f; _tmp107_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp106_); if (_tmp107_) { ValaCCodeDeclaration* _tmp108_; _tmp108_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp108_, VALA_CCODE_MODIFIERS_STATIC); } else { ValaCCodeDeclaration* _tmp109_; _tmp109_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp109_, VALA_CCODE_MODIFIERS_EXTERN); } _tmp110_ = decl_space; _tmp111_ = _cdecl_; vala_ccode_file_add_type_member_declaration (_tmp110_, (ValaCCodeNode*) _tmp111_); _vala_code_node_unref0 (len_type); } } } } _vala_code_node_unref0 (array_type); } else { ValaField* _tmp112_; ValaDataType* _tmp113_; ValaDataType* _tmp114_; _tmp112_ = f; _tmp113_ = vala_variable_get_variable_type ((ValaVariable*) _tmp112_); _tmp114_ = _tmp113_; if (VALA_IS_DELEGATE_TYPE (_tmp114_)) { ValaField* _tmp115_; ValaDataType* _tmp116_; ValaDataType* _tmp117_; ValaDelegateType* _tmp118_; ValaDelegateType* delegate_type; ValaDelegateType* _tmp119_; ValaDelegate* _tmp120_; ValaDelegate* _tmp121_; gboolean _tmp122_; gboolean _tmp123_; _tmp115_ = f; _tmp116_ = vala_variable_get_variable_type ((ValaVariable*) _tmp115_); _tmp117_ = _tmp116_; _tmp118_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp117_)); delegate_type = _tmp118_; _tmp119_ = delegate_type; _tmp120_ = vala_delegate_type_get_delegate_symbol (_tmp119_); _tmp121_ = _tmp120_; _tmp122_ = vala_delegate_get_has_target (_tmp121_); _tmp123_ = _tmp122_; if (_tmp123_) { ValaCCodeDeclaration* _tmp124_; ValaCCodeDeclaration* _tmp125_; ValaField* _tmp126_; gchar* _tmp127_ = NULL; gchar* _tmp128_; gchar* _tmp129_ = NULL; gchar* _tmp130_; ValaCCodeVariableDeclarator* _tmp131_; ValaCCodeVariableDeclarator* _tmp132_; ValaField* _tmp133_; gboolean _tmp134_ = FALSE; ValaCCodeFile* _tmp137_; ValaCCodeDeclaration* _tmp138_; ValaDelegateType* _tmp139_; gboolean _tmp140_; gboolean _tmp141_; _tmp124_ = vala_ccode_declaration_new ("gpointer"); _vala_ccode_node_unref0 (_cdecl_); _cdecl_ = _tmp124_; _tmp125_ = _cdecl_; _tmp126_ = f; _tmp127_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp126_); _tmp128_ = _tmp127_; _tmp129_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp128_); _tmp130_ = _tmp129_; _tmp131_ = vala_ccode_variable_declarator_new (_tmp130_, NULL, NULL); _tmp132_ = _tmp131_; vala_ccode_declaration_add_declarator (_tmp125_, (ValaCCodeDeclarator*) _tmp132_); _vala_ccode_node_unref0 (_tmp132_); _g_free0 (_tmp130_); _g_free0 (_tmp128_); _tmp133_ = f; _tmp134_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp133_); if (_tmp134_) { ValaCCodeDeclaration* _tmp135_; _tmp135_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp135_, VALA_CCODE_MODIFIERS_STATIC); } else { ValaCCodeDeclaration* _tmp136_; _tmp136_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp136_, VALA_CCODE_MODIFIERS_EXTERN); } _tmp137_ = decl_space; _tmp138_ = _cdecl_; vala_ccode_file_add_type_member_declaration (_tmp137_, (ValaCCodeNode*) _tmp138_); _tmp139_ = delegate_type; _tmp140_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp139_); _tmp141_ = _tmp140_; if (_tmp141_) { ValaCCodeDeclaration* _tmp142_; ValaCCodeDeclaration* _tmp143_; ValaField* _tmp144_; gchar* _tmp145_ = NULL; gchar* _tmp146_; gchar* _tmp147_ = NULL; gchar* _tmp148_; ValaCCodeVariableDeclarator* _tmp149_; ValaCCodeVariableDeclarator* _tmp150_; ValaField* _tmp151_; gboolean _tmp152_ = FALSE; ValaCCodeFile* _tmp155_; ValaCCodeDeclaration* _tmp156_; _tmp142_ = vala_ccode_declaration_new ("GDestroyNotify"); _vala_ccode_node_unref0 (_cdecl_); _cdecl_ = _tmp142_; _tmp143_ = _cdecl_; _tmp144_ = f; _tmp145_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp144_); _tmp146_ = _tmp145_; _tmp147_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp146_); _tmp148_ = _tmp147_; _tmp149_ = vala_ccode_variable_declarator_new (_tmp148_, NULL, NULL); _tmp150_ = _tmp149_; vala_ccode_declaration_add_declarator (_tmp143_, (ValaCCodeDeclarator*) _tmp150_); _vala_ccode_node_unref0 (_tmp150_); _g_free0 (_tmp148_); _g_free0 (_tmp146_); _tmp151_ = f; _tmp152_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp151_); if (_tmp152_) { ValaCCodeDeclaration* _tmp153_; _tmp153_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp153_, VALA_CCODE_MODIFIERS_STATIC); } else { ValaCCodeDeclaration* _tmp154_; _tmp154_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp154_, VALA_CCODE_MODIFIERS_EXTERN); } _tmp155_ = decl_space; _tmp156_ = _cdecl_; vala_ccode_file_add_type_member_declaration (_tmp155_, (ValaCCodeNode*) _tmp156_); } } _vala_code_node_unref0 (delegate_type); } } _vala_ccode_node_unref0 (_cdecl_); _g_free0 (field_ctype); } static void vala_ccode_base_module_real_visit_field (ValaCodeVisitor* base, ValaField* f) { ValaCCodeBaseModule * self; ValaField* _tmp0_; ValaSourceReference* _tmp1_; ValaSourceReference* _tmp2_; ValaField* _tmp3_; ValaField* _tmp4_; ValaDataType* _tmp5_; ValaDataType* _tmp6_; ValaField* _tmp7_; ValaSymbol* _tmp8_; ValaSymbol* _tmp9_; ValaClass* _tmp10_; ValaClass* cl; gboolean _tmp11_ = FALSE; ValaClass* _tmp12_; gboolean _tmp16_; gboolean is_gtypeinstance; ValaCCodeExpression* lhs; ValaField* _tmp17_; ValaDataType* _tmp18_; ValaDataType* _tmp19_; gchar* _tmp20_ = NULL; gchar* field_ctype; ValaField* _tmp21_; gboolean _tmp22_; gboolean _tmp23_; ValaField* _tmp26_; ValaMemberBinding _tmp27_; ValaMemberBinding _tmp28_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (f != NULL); _tmp0_ = f; _tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; vala_ccode_base_module_push_line (self, _tmp2_); _tmp3_ = f; vala_ccode_base_module_visit_member (self, (ValaSymbol*) _tmp3_); _tmp4_ = f; _tmp5_ = vala_variable_get_variable_type ((ValaVariable*) _tmp4_); _tmp6_ = _tmp5_; vala_ccode_base_module_check_type (self, _tmp6_); _tmp7_ = f; _tmp8_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp9_) ? ((ValaClass*) _tmp9_) : NULL); cl = _tmp10_; _tmp12_ = cl; if (_tmp12_ != NULL) { ValaClass* _tmp13_; gboolean _tmp14_; gboolean _tmp15_; _tmp13_ = cl; _tmp14_ = vala_class_get_is_compact (_tmp13_); _tmp15_ = _tmp14_; _tmp11_ = !_tmp15_; } else { _tmp11_ = FALSE; } _tmp16_ = _tmp11_; is_gtypeinstance = _tmp16_; lhs = NULL; _tmp17_ = f; _tmp18_ = vala_variable_get_variable_type ((ValaVariable*) _tmp17_); _tmp19_ = _tmp18_; _tmp20_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp19_); field_ctype = _tmp20_; _tmp21_ = f; _tmp22_ = vala_field_get_is_volatile (_tmp21_); _tmp23_ = _tmp22_; if (_tmp23_) { const gchar* _tmp24_; gchar* _tmp25_; _tmp24_ = field_ctype; _tmp25_ = g_strconcat ("volatile ", _tmp24_, NULL); _g_free0 (field_ctype); field_ctype = _tmp25_; } _tmp26_ = f; _tmp27_ = vala_field_get_binding (_tmp26_); _tmp28_ = _tmp27_; if (_tmp28_ == VALA_MEMBER_BINDING_INSTANCE) { gboolean _tmp29_ = FALSE; gboolean _tmp30_; gboolean _tmp34_; ValaField* _tmp49_; ValaExpression* _tmp50_; ValaExpression* _tmp51_; gboolean _tmp145_ = FALSE; ValaField* _tmp146_; ValaDataType* _tmp147_; ValaDataType* _tmp148_; gboolean _tmp149_ = FALSE; gboolean _tmp151_; _tmp30_ = is_gtypeinstance; if (_tmp30_) { ValaField* _tmp31_; ValaSymbolAccessibility _tmp32_; ValaSymbolAccessibility _tmp33_; _tmp31_ = f; _tmp32_ = vala_symbol_get_access ((ValaSymbol*) _tmp31_); _tmp33_ = _tmp32_; _tmp29_ = _tmp33_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE; } else { _tmp29_ = FALSE; } _tmp34_ = _tmp29_; if (_tmp34_) { ValaCCodeIdentifier* _tmp35_; ValaCCodeIdentifier* _tmp36_; ValaCCodeMemberAccess* _tmp37_; ValaCCodeMemberAccess* _tmp38_; ValaField* _tmp39_; gchar* _tmp40_ = NULL; gchar* _tmp41_; ValaCCodeMemberAccess* _tmp42_; _tmp35_ = vala_ccode_identifier_new ("self"); _tmp36_ = _tmp35_; _tmp37_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp36_, "priv"); _tmp38_ = _tmp37_; _tmp39_ = f; _tmp40_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp39_); _tmp41_ = _tmp40_; _tmp42_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp38_, _tmp41_); _vala_ccode_node_unref0 (lhs); lhs = (ValaCCodeExpression*) _tmp42_; _g_free0 (_tmp41_); _vala_ccode_node_unref0 (_tmp38_); _vala_ccode_node_unref0 (_tmp36_); } else { ValaCCodeIdentifier* _tmp43_; ValaCCodeIdentifier* _tmp44_; ValaField* _tmp45_; gchar* _tmp46_ = NULL; gchar* _tmp47_; ValaCCodeMemberAccess* _tmp48_; _tmp43_ = vala_ccode_identifier_new ("self"); _tmp44_ = _tmp43_; _tmp45_ = f; _tmp46_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp45_); _tmp47_ = _tmp46_; _tmp48_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp44_, _tmp47_); _vala_ccode_node_unref0 (lhs); lhs = (ValaCCodeExpression*) _tmp48_; _g_free0 (_tmp47_); _vala_ccode_node_unref0 (_tmp44_); } _tmp49_ = f; _tmp50_ = vala_variable_get_initializer ((ValaVariable*) _tmp49_); _tmp51_ = _tmp50_; if (_tmp51_ != NULL) { ValaCCodeBaseModuleEmitContext* _tmp52_; ValaField* _tmp53_; ValaExpression* _tmp54_; ValaExpression* _tmp55_; ValaField* _tmp56_; ValaExpression* _tmp57_; ValaExpression* _tmp58_; ValaCCodeExpression* _tmp59_ = NULL; ValaCCodeExpression* rhs; ValaCCodeFunction* _tmp60_; ValaCCodeFunction* _tmp61_; ValaCCodeExpression* _tmp62_; ValaCCodeExpression* _tmp63_; gboolean _tmp64_ = FALSE; gboolean _tmp65_ = FALSE; ValaField* _tmp66_; ValaDataType* _tmp67_; ValaDataType* _tmp68_; gboolean _tmp71_; gboolean _tmp75_; ValaArrayList* _tmp143_; ValaArrayList* _tmp144_; _tmp52_ = self->instance_init_context; vala_ccode_base_module_push_context (self, _tmp52_); _tmp53_ = f; _tmp54_ = vala_variable_get_initializer ((ValaVariable*) _tmp53_); _tmp55_ = _tmp54_; vala_code_node_emit ((ValaCodeNode*) _tmp55_, (ValaCodeGenerator*) self); _tmp56_ = f; _tmp57_ = vala_variable_get_initializer ((ValaVariable*) _tmp56_); _tmp58_ = _tmp57_; _tmp59_ = vala_ccode_base_module_get_cvalue (self, _tmp58_); rhs = _tmp59_; _tmp60_ = vala_ccode_base_module_get_ccode (self); _tmp61_ = _tmp60_; _tmp62_ = lhs; _tmp63_ = rhs; vala_ccode_function_add_assignment (_tmp61_, _tmp62_, _tmp63_); _tmp66_ = f; _tmp67_ = vala_variable_get_variable_type ((ValaVariable*) _tmp66_); _tmp68_ = _tmp67_; if (VALA_IS_ARRAY_TYPE (_tmp68_)) { ValaField* _tmp69_; gboolean _tmp70_ = FALSE; _tmp69_ = f; _tmp70_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp69_); _tmp65_ = _tmp70_; } else { _tmp65_ = FALSE; } _tmp71_ = _tmp65_; if (_tmp71_) { ValaField* _tmp72_; ValaExpression* _tmp73_; ValaExpression* _tmp74_; _tmp72_ = f; _tmp73_ = vala_variable_get_initializer ((ValaVariable*) _tmp72_); _tmp74_ = _tmp73_; _tmp64_ = VALA_IS_ARRAY_CREATION_EXPRESSION (_tmp74_); } else { _tmp64_ = FALSE; } _tmp75_ = _tmp64_; if (_tmp75_) { ValaField* _tmp76_; ValaDataType* _tmp77_; ValaDataType* _tmp78_; ValaArrayType* _tmp79_; ValaArrayType* array_type; ValaField* _tmp80_; ValaField* _tmp81_; ValaSymbol* _tmp82_; ValaSymbol* _tmp83_; ValaTargetValue* _tmp84_ = NULL; ValaTargetValue* _tmp85_; ValaTargetValue* _tmp86_ = NULL; ValaTargetValue* _tmp87_; ValaTargetValue* field_value; ValaField* _tmp88_; ValaExpression* _tmp89_; ValaExpression* _tmp90_; ValaList* _tmp91_ = NULL; ValaList* sizes; gboolean _tmp111_ = FALSE; ValaArrayType* _tmp112_; gint _tmp113_; gint _tmp114_; gboolean _tmp117_; _tmp76_ = f; _tmp77_ = vala_variable_get_variable_type ((ValaVariable*) _tmp76_); _tmp78_ = _tmp77_; _tmp79_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp78_)); array_type = _tmp79_; _tmp80_ = f; _tmp81_ = f; _tmp82_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp81_); _tmp83_ = _tmp82_; _tmp84_ = vala_ccode_base_module_load_this_parameter (self, VALA_TYPESYMBOL (_tmp83_)); _tmp85_ = _tmp84_; _tmp86_ = vala_ccode_base_module_get_field_cvalue (self, _tmp80_, _tmp85_); _tmp87_ = _tmp86_; _vala_target_value_unref0 (_tmp85_); field_value = _tmp87_; _tmp88_ = f; _tmp89_ = vala_variable_get_initializer ((ValaVariable*) _tmp88_); _tmp90_ = _tmp89_; _tmp91_ = vala_array_creation_expression_get_sizes (VALA_ARRAY_CREATION_EXPRESSION (_tmp90_)); sizes = _tmp91_; { gint dim; dim = 1; { gboolean _tmp92_; _tmp92_ = TRUE; while (TRUE) { gboolean _tmp93_; gint _tmp95_; ValaArrayType* _tmp96_; gint _tmp97_; gint _tmp98_; ValaTargetValue* _tmp99_; gint _tmp100_; ValaCCodeExpression* _tmp101_ = NULL; ValaCCodeExpression* array_len_lhs; ValaList* _tmp102_; gint _tmp103_; gpointer _tmp104_ = NULL; ValaExpression* size; ValaCCodeFunction* _tmp105_; ValaCCodeFunction* _tmp106_; ValaCCodeExpression* _tmp107_; ValaExpression* _tmp108_; ValaCCodeExpression* _tmp109_ = NULL; ValaCCodeExpression* _tmp110_; _tmp93_ = _tmp92_; if (!_tmp93_) { gint _tmp94_; _tmp94_ = dim; dim = _tmp94_ + 1; } _tmp92_ = FALSE; _tmp95_ = dim; _tmp96_ = array_type; _tmp97_ = vala_array_type_get_rank (_tmp96_); _tmp98_ = _tmp97_; if (!(_tmp95_ <= _tmp98_)) { break; } _tmp99_ = field_value; _tmp100_ = dim; _tmp101_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp99_, _tmp100_); array_len_lhs = _tmp101_; _tmp102_ = sizes; _tmp103_ = dim; _tmp104_ = vala_list_get (_tmp102_, _tmp103_ - 1); size = (ValaExpression*) _tmp104_; _tmp105_ = vala_ccode_base_module_get_ccode (self); _tmp106_ = _tmp105_; _tmp107_ = array_len_lhs; _tmp108_ = size; _tmp109_ = vala_ccode_base_module_get_cvalue (self, _tmp108_); _tmp110_ = _tmp109_; vala_ccode_function_add_assignment (_tmp106_, _tmp107_, _tmp110_); _vala_ccode_node_unref0 (_tmp110_); _vala_code_node_unref0 (size); _vala_ccode_node_unref0 (array_len_lhs); } } } _tmp112_ = array_type; _tmp113_ = vala_array_type_get_rank (_tmp112_); _tmp114_ = _tmp113_; if (_tmp114_ == 1) { ValaField* _tmp115_; gboolean _tmp116_ = FALSE; _tmp115_ = f; _tmp116_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp115_); _tmp111_ = _tmp116_; } else { _tmp111_ = FALSE; } _tmp117_ = _tmp111_; if (_tmp117_) { ValaTargetValue* _tmp118_; ValaCCodeExpression* _tmp119_ = NULL; ValaCCodeExpression* lhs_array_size; ValaTargetValue* _tmp120_; ValaCCodeExpression* _tmp121_ = NULL; ValaCCodeExpression* rhs_array_len; ValaCCodeFunction* _tmp122_; ValaCCodeFunction* _tmp123_; ValaCCodeExpression* _tmp124_; ValaCCodeExpression* _tmp125_; _tmp118_ = field_value; _tmp119_ = vala_ccode_base_module_get_array_size_cvalue (self, _tmp118_); lhs_array_size = _tmp119_; _tmp120_ = field_value; _tmp121_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp120_, 1); rhs_array_len = _tmp121_; _tmp122_ = vala_ccode_base_module_get_ccode (self); _tmp123_ = _tmp122_; _tmp124_ = lhs_array_size; _tmp125_ = rhs_array_len; vala_ccode_function_add_assignment (_tmp123_, _tmp124_, _tmp125_); _vala_ccode_node_unref0 (rhs_array_len); _vala_ccode_node_unref0 (lhs_array_size); } _vala_iterable_unref0 (sizes); _vala_target_value_unref0 (field_value); _vala_code_node_unref0 (array_type); } { ValaArrayList* _tmp126_; ValaArrayList* _tmp127_; ValaArrayList* _tmp128_; ValaArrayList* _value_list; ValaArrayList* _tmp129_; gint _tmp130_; gint _tmp131_; gint _value_size; gint _value_index; _tmp126_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp127_ = _tmp126_; _tmp128_ = _vala_iterable_ref0 (_tmp127_); _value_list = _tmp128_; _tmp129_ = _value_list; _tmp130_ = vala_collection_get_size ((ValaCollection*) _tmp129_); _tmp131_ = _tmp130_; _value_size = _tmp131_; _value_index = -1; while (TRUE) { gint _tmp132_; gint _tmp133_; gint _tmp134_; ValaArrayList* _tmp135_; gint _tmp136_; gpointer _tmp137_ = NULL; ValaTargetValue* value; ValaCCodeFunction* _tmp138_; ValaCCodeFunction* _tmp139_; ValaTargetValue* _tmp140_; ValaCCodeExpression* _tmp141_ = NULL; ValaCCodeExpression* _tmp142_; _tmp132_ = _value_index; _value_index = _tmp132_ + 1; _tmp133_ = _value_index; _tmp134_ = _value_size; if (!(_tmp133_ < _tmp134_)) { break; } _tmp135_ = _value_list; _tmp136_ = _value_index; _tmp137_ = vala_list_get ((ValaList*) _tmp135_, _tmp136_); value = (ValaTargetValue*) _tmp137_; _tmp138_ = vala_ccode_base_module_get_ccode (self); _tmp139_ = _tmp138_; _tmp140_ = value; _tmp141_ = vala_ccode_base_module_destroy_value (self, _tmp140_, FALSE); _tmp142_ = _tmp141_; vala_ccode_function_add_expression (_tmp139_, _tmp142_); _vala_ccode_node_unref0 (_tmp142_); _vala_target_value_unref0 (value); } _vala_iterable_unref0 (_value_list); } _tmp143_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp144_ = _tmp143_; vala_collection_clear ((ValaCollection*) _tmp144_); vala_ccode_base_module_pop_context (self); _vala_ccode_node_unref0 (rhs); } _tmp146_ = f; _tmp147_ = vala_variable_get_variable_type ((ValaVariable*) _tmp146_); _tmp148_ = _tmp147_; _tmp149_ = vala_ccode_base_module_requires_destroy (self, _tmp148_); if (_tmp149_) { ValaCCodeBaseModuleEmitContext* _tmp150_; _tmp150_ = self->instance_finalize_context; _tmp145_ = _tmp150_ != NULL; } else { _tmp145_ = FALSE; } _tmp151_ = _tmp145_; if (_tmp151_) { ValaCCodeBaseModuleEmitContext* _tmp152_; ValaCCodeFunction* _tmp153_; ValaCCodeFunction* _tmp154_; ValaField* _tmp155_; ValaField* _tmp156_; ValaSymbol* _tmp157_; ValaSymbol* _tmp158_; ValaTargetValue* _tmp159_ = NULL; ValaTargetValue* _tmp160_; ValaCCodeExpression* _tmp161_ = NULL; ValaCCodeExpression* _tmp162_; _tmp152_ = self->instance_finalize_context; vala_ccode_base_module_push_context (self, _tmp152_); _tmp153_ = vala_ccode_base_module_get_ccode (self); _tmp154_ = _tmp153_; _tmp155_ = f; _tmp156_ = f; _tmp157_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp156_); _tmp158_ = _tmp157_; _tmp159_ = vala_ccode_base_module_load_this_parameter (self, VALA_TYPESYMBOL (_tmp158_)); _tmp160_ = _tmp159_; _tmp161_ = vala_ccode_base_module_destroy_field (self, _tmp155_, _tmp160_); _tmp162_ = _tmp161_; vala_ccode_function_add_expression (_tmp154_, _tmp162_); _vala_ccode_node_unref0 (_tmp162_); _vala_target_value_unref0 (_tmp160_); vala_ccode_base_module_pop_context (self); } } else { ValaField* _tmp163_; ValaMemberBinding _tmp164_; ValaMemberBinding _tmp165_; _tmp163_ = f; _tmp164_ = vala_field_get_binding (_tmp163_); _tmp165_ = _tmp164_; if (_tmp165_ == VALA_MEMBER_BINDING_CLASS) { gboolean _tmp166_; ValaField* _tmp171_; ValaSymbolAccessibility _tmp172_; ValaSymbolAccessibility _tmp173_; ValaField* _tmp197_; ValaExpression* _tmp198_; ValaExpression* _tmp199_; _tmp166_ = is_gtypeinstance; if (!_tmp166_) { ValaField* _tmp167_; ValaSourceReference* _tmp168_; ValaSourceReference* _tmp169_; ValaField* _tmp170_; _tmp167_ = f; _tmp168_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp167_); _tmp169_ = _tmp168_; vala_report_error (_tmp169_, "class fields are not supported in compact classes"); _tmp170_ = f; vala_code_node_set_error ((ValaCodeNode*) _tmp170_, TRUE); _g_free0 (field_ctype); _vala_ccode_node_unref0 (lhs); _vala_code_node_unref0 (cl); return; } _tmp171_ = f; _tmp172_ = vala_symbol_get_access ((ValaSymbol*) _tmp171_); _tmp173_ = _tmp172_; if (_tmp173_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) { ValaClass* _tmp174_; gchar* _tmp175_ = NULL; gchar* _tmp176_; gchar* _tmp177_ = NULL; gchar* _tmp178_; ValaCCodeIdentifier* _tmp179_; ValaCCodeIdentifier* _tmp180_; ValaCCodeFunctionCall* _tmp181_; ValaCCodeFunctionCall* _tmp182_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp183_; ValaCCodeIdentifier* _tmp184_; ValaCCodeIdentifier* _tmp185_; ValaCCodeFunctionCall* _tmp186_; ValaField* _tmp187_; gchar* _tmp188_ = NULL; gchar* _tmp189_; ValaCCodeMemberAccess* _tmp190_; _tmp174_ = cl; _tmp175_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp174_, NULL); _tmp176_ = _tmp175_; _tmp177_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp176_); _tmp178_ = _tmp177_; _tmp179_ = vala_ccode_identifier_new (_tmp178_); _tmp180_ = _tmp179_; _tmp181_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp180_); _tmp182_ = _tmp181_; _vala_ccode_node_unref0 (_tmp180_); _g_free0 (_tmp178_); _g_free0 (_tmp176_); ccall = _tmp182_; _tmp183_ = ccall; _tmp184_ = vala_ccode_identifier_new ("klass"); _tmp185_ = _tmp184_; vala_ccode_function_call_add_argument (_tmp183_, (ValaCCodeExpression*) _tmp185_); _vala_ccode_node_unref0 (_tmp185_); _tmp186_ = ccall; _tmp187_ = f; _tmp188_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp187_); _tmp189_ = _tmp188_; _tmp190_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp186_, _tmp189_, TRUE); _vala_ccode_node_unref0 (lhs); lhs = (ValaCCodeExpression*) _tmp190_; _g_free0 (_tmp189_); _vala_ccode_node_unref0 (ccall); } else { ValaCCodeIdentifier* _tmp191_; ValaCCodeIdentifier* _tmp192_; ValaField* _tmp193_; gchar* _tmp194_ = NULL; gchar* _tmp195_; ValaCCodeMemberAccess* _tmp196_; _tmp191_ = vala_ccode_identifier_new ("klass"); _tmp192_ = _tmp191_; _tmp193_ = f; _tmp194_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp193_); _tmp195_ = _tmp194_; _tmp196_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp192_, _tmp195_, TRUE); _vala_ccode_node_unref0 (lhs); lhs = (ValaCCodeExpression*) _tmp196_; _g_free0 (_tmp195_); _vala_ccode_node_unref0 (_tmp192_); } _tmp197_ = f; _tmp198_ = vala_variable_get_initializer ((ValaVariable*) _tmp197_); _tmp199_ = _tmp198_; if (_tmp199_ != NULL) { ValaCCodeBaseModuleEmitContext* _tmp200_; ValaField* _tmp201_; ValaExpression* _tmp202_; ValaExpression* _tmp203_; ValaField* _tmp204_; ValaExpression* _tmp205_; ValaExpression* _tmp206_; ValaCCodeExpression* _tmp207_ = NULL; ValaCCodeExpression* rhs; ValaCCodeFunction* _tmp208_; ValaCCodeFunction* _tmp209_; ValaCCodeExpression* _tmp210_; ValaCCodeExpression* _tmp211_; ValaArrayList* _tmp229_; ValaArrayList* _tmp230_; _tmp200_ = self->class_init_context; vala_ccode_base_module_push_context (self, _tmp200_); _tmp201_ = f; _tmp202_ = vala_variable_get_initializer ((ValaVariable*) _tmp201_); _tmp203_ = _tmp202_; vala_code_node_emit ((ValaCodeNode*) _tmp203_, (ValaCodeGenerator*) self); _tmp204_ = f; _tmp205_ = vala_variable_get_initializer ((ValaVariable*) _tmp204_); _tmp206_ = _tmp205_; _tmp207_ = vala_ccode_base_module_get_cvalue (self, _tmp206_); rhs = _tmp207_; _tmp208_ = vala_ccode_base_module_get_ccode (self); _tmp209_ = _tmp208_; _tmp210_ = lhs; _tmp211_ = rhs; vala_ccode_function_add_assignment (_tmp209_, _tmp210_, _tmp211_); { ValaArrayList* _tmp212_; ValaArrayList* _tmp213_; ValaArrayList* _tmp214_; ValaArrayList* _value_list; ValaArrayList* _tmp215_; gint _tmp216_; gint _tmp217_; gint _value_size; gint _value_index; _tmp212_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp213_ = _tmp212_; _tmp214_ = _vala_iterable_ref0 (_tmp213_); _value_list = _tmp214_; _tmp215_ = _value_list; _tmp216_ = vala_collection_get_size ((ValaCollection*) _tmp215_); _tmp217_ = _tmp216_; _value_size = _tmp217_; _value_index = -1; while (TRUE) { gint _tmp218_; gint _tmp219_; gint _tmp220_; ValaArrayList* _tmp221_; gint _tmp222_; gpointer _tmp223_ = NULL; ValaTargetValue* value; ValaCCodeFunction* _tmp224_; ValaCCodeFunction* _tmp225_; ValaTargetValue* _tmp226_; ValaCCodeExpression* _tmp227_ = NULL; ValaCCodeExpression* _tmp228_; _tmp218_ = _value_index; _value_index = _tmp218_ + 1; _tmp219_ = _value_index; _tmp220_ = _value_size; if (!(_tmp219_ < _tmp220_)) { break; } _tmp221_ = _value_list; _tmp222_ = _value_index; _tmp223_ = vala_list_get ((ValaList*) _tmp221_, _tmp222_); value = (ValaTargetValue*) _tmp223_; _tmp224_ = vala_ccode_base_module_get_ccode (self); _tmp225_ = _tmp224_; _tmp226_ = value; _tmp227_ = vala_ccode_base_module_destroy_value (self, _tmp226_, FALSE); _tmp228_ = _tmp227_; vala_ccode_function_add_expression (_tmp225_, _tmp228_); _vala_ccode_node_unref0 (_tmp228_); _vala_target_value_unref0 (value); } _vala_iterable_unref0 (_value_list); } _tmp229_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp230_ = _tmp229_; vala_collection_clear ((ValaCollection*) _tmp230_); vala_ccode_base_module_pop_context (self); _vala_ccode_node_unref0 (rhs); } } else { ValaField* _tmp231_; ValaCCodeFile* _tmp232_; ValaField* _tmp233_; gboolean _tmp234_ = FALSE; ValaField* _tmp237_; gboolean _tmp238_ = FALSE; ValaField* _tmp241_; gboolean _tmp242_; gboolean _tmp243_; _tmp231_ = f; _tmp232_ = self->cfile; vala_ccode_base_module_generate_field_declaration (self, _tmp231_, _tmp232_); _tmp233_ = f; _tmp234_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp233_); if (!_tmp234_) { ValaField* _tmp235_; ValaCCodeFile* _tmp236_; _tmp235_ = f; _tmp236_ = self->header_file; vala_ccode_base_module_generate_field_declaration (self, _tmp235_, _tmp236_); } _tmp237_ = f; _tmp238_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp237_); if (!_tmp238_) { ValaField* _tmp239_; ValaCCodeFile* _tmp240_; _tmp239_ = f; _tmp240_ = self->internal_header_file; vala_ccode_base_module_generate_field_declaration (self, _tmp239_, _tmp240_); } _tmp241_ = f; _tmp242_ = vala_symbol_get_external ((ValaSymbol*) _tmp241_); _tmp243_ = _tmp242_; if (!_tmp243_) { ValaField* _tmp244_; gchar* _tmp245_ = NULL; gchar* _tmp246_; ValaCCodeIdentifier* _tmp247_; ValaField* _tmp248_; gchar* _tmp249_ = NULL; gchar* _tmp250_; ValaField* _tmp251_; ValaDataType* _tmp252_; ValaDataType* _tmp253_; gchar* _tmp254_ = NULL; gchar* _tmp255_; ValaCCodeVariableDeclarator* _tmp256_; ValaCCodeVariableDeclarator* _tmp257_; ValaCCodeVariableDeclarator* var_decl; ValaCCodeVariableDeclarator* _tmp258_; ValaField* _tmp259_; ValaDataType* _tmp260_; ValaDataType* _tmp261_; ValaCCodeExpression* _tmp262_ = NULL; ValaCCodeExpression* _tmp263_; ValaCCodeBaseModuleEmitContext* _tmp264_; ValaField* _tmp268_; ValaExpression* _tmp269_; ValaExpression* _tmp270_; const gchar* _tmp282_; ValaCCodeDeclaration* _tmp283_; ValaCCodeDeclaration* var_def; ValaCCodeDeclaration* _tmp284_; ValaCCodeVariableDeclarator* _tmp285_; ValaField* _tmp286_; gboolean _tmp287_ = FALSE; ValaCCodeFile* _tmp290_; ValaCCodeDeclaration* _tmp291_; gboolean _tmp292_ = FALSE; ValaField* _tmp293_; ValaDataType* _tmp294_; ValaDataType* _tmp295_; gboolean _tmp298_; ValaField* _tmp413_; ValaExpression* _tmp414_; ValaExpression* _tmp415_; _tmp244_ = f; _tmp245_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp244_); _tmp246_ = _tmp245_; _tmp247_ = vala_ccode_identifier_new (_tmp246_); _vala_ccode_node_unref0 (lhs); lhs = (ValaCCodeExpression*) _tmp247_; _g_free0 (_tmp246_); _tmp248_ = f; _tmp249_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp248_); _tmp250_ = _tmp249_; _tmp251_ = f; _tmp252_ = vala_variable_get_variable_type ((ValaVariable*) _tmp251_); _tmp253_ = _tmp252_; _tmp254_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp253_); _tmp255_ = _tmp254_; _tmp256_ = vala_ccode_variable_declarator_new (_tmp250_, NULL, _tmp255_); _tmp257_ = _tmp256_; _g_free0 (_tmp255_); _g_free0 (_tmp250_); var_decl = _tmp257_; _tmp258_ = var_decl; _tmp259_ = f; _tmp260_ = vala_variable_get_variable_type ((ValaVariable*) _tmp259_); _tmp261_ = _tmp260_; _tmp262_ = vala_ccode_base_module_default_value_for_type (self, _tmp261_, TRUE); _tmp263_ = _tmp262_; vala_ccode_variable_declarator_set_initializer (_tmp258_, _tmp263_); _vala_ccode_node_unref0 (_tmp263_); _tmp264_ = self->class_init_context; if (_tmp264_ != NULL) { ValaCCodeBaseModuleEmitContext* _tmp265_; _tmp265_ = self->class_init_context; vala_ccode_base_module_push_context (self, _tmp265_); } else { ValaCCodeBaseModuleEmitContext* _tmp266_; ValaCCodeBaseModuleEmitContext* _tmp267_; _tmp266_ = vala_ccode_base_module_emit_context_new (NULL); _tmp267_ = _tmp266_; vala_ccode_base_module_push_context (self, _tmp267_); _vala_ccode_base_module_emit_context_unref0 (_tmp267_); } _tmp268_ = f; _tmp269_ = vala_variable_get_initializer ((ValaVariable*) _tmp268_); _tmp270_ = _tmp269_; if (_tmp270_ != NULL) { ValaField* _tmp271_; ValaExpression* _tmp272_; ValaExpression* _tmp273_; ValaField* _tmp274_; ValaExpression* _tmp275_; ValaExpression* _tmp276_; ValaCCodeExpression* _tmp277_ = NULL; ValaCCodeExpression* init; ValaCCodeExpression* _tmp278_; gboolean _tmp279_ = FALSE; _tmp271_ = f; _tmp272_ = vala_variable_get_initializer ((ValaVariable*) _tmp271_); _tmp273_ = _tmp272_; vala_code_node_emit ((ValaCodeNode*) _tmp273_, (ValaCodeGenerator*) self); _tmp274_ = f; _tmp275_ = vala_variable_get_initializer ((ValaVariable*) _tmp274_); _tmp276_ = _tmp275_; _tmp277_ = vala_ccode_base_module_get_cvalue (self, _tmp276_); init = _tmp277_; _tmp278_ = init; _tmp279_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp278_); if (_tmp279_) { ValaCCodeVariableDeclarator* _tmp280_; ValaCCodeExpression* _tmp281_; _tmp280_ = var_decl; _tmp281_ = init; vala_ccode_variable_declarator_set_initializer (_tmp280_, _tmp281_); } _vala_ccode_node_unref0 (init); } _tmp282_ = field_ctype; _tmp283_ = vala_ccode_declaration_new (_tmp282_); var_def = _tmp283_; _tmp284_ = var_def; _tmp285_ = var_decl; vala_ccode_declaration_add_declarator (_tmp284_, (ValaCCodeDeclarator*) _tmp285_); _tmp286_ = f; _tmp287_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp286_); if (!_tmp287_) { ValaCCodeDeclaration* _tmp288_; _tmp288_ = var_def; vala_ccode_declaration_set_modifiers (_tmp288_, VALA_CCODE_MODIFIERS_EXTERN); } else { ValaCCodeDeclaration* _tmp289_; _tmp289_ = var_def; vala_ccode_declaration_set_modifiers (_tmp289_, VALA_CCODE_MODIFIERS_STATIC); } _tmp290_ = self->cfile; _tmp291_ = var_def; vala_ccode_file_add_type_member_declaration (_tmp290_, (ValaCCodeNode*) _tmp291_); _tmp293_ = f; _tmp294_ = vala_variable_get_variable_type ((ValaVariable*) _tmp293_); _tmp295_ = _tmp294_; if (VALA_IS_ARRAY_TYPE (_tmp295_)) { ValaField* _tmp296_; gboolean _tmp297_ = FALSE; _tmp296_ = f; _tmp297_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp296_); _tmp292_ = _tmp297_; } else { _tmp292_ = FALSE; } _tmp298_ = _tmp292_; if (_tmp298_) { ValaField* _tmp299_; ValaDataType* _tmp300_; ValaDataType* _tmp301_; ValaArrayType* _tmp302_; ValaArrayType* array_type; ValaArrayType* _tmp303_; gboolean _tmp304_; gboolean _tmp305_; _tmp299_ = f; _tmp300_ = vala_variable_get_variable_type ((ValaVariable*) _tmp299_); _tmp301_ = _tmp300_; _tmp302_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp301_)); array_type = _tmp302_; _tmp303_ = array_type; _tmp304_ = vala_array_type_get_fixed_length (_tmp303_); _tmp305_ = _tmp304_; if (!_tmp305_) { gboolean _tmp337_ = FALSE; ValaArrayType* _tmp338_; gint _tmp339_; gint _tmp340_; gboolean _tmp343_; { gint dim; dim = 1; { gboolean _tmp306_; _tmp306_ = TRUE; while (TRUE) { gboolean _tmp307_; gint _tmp309_; ValaArrayType* _tmp310_; gint _tmp311_; gint _tmp312_; ValaDataType* _tmp313_; ValaDataType* _tmp314_ = NULL; ValaDataType* len_type; ValaDataType* _tmp315_; gchar* _tmp316_ = NULL; gchar* _tmp317_; ValaCCodeDeclaration* _tmp318_; ValaCCodeDeclaration* _tmp319_; ValaCCodeDeclaration* len_def; ValaCCodeDeclaration* _tmp320_; ValaField* _tmp321_; gchar* _tmp322_ = NULL; gchar* _tmp323_; gint _tmp324_; gchar* _tmp325_ = NULL; gchar* _tmp326_; ValaCCodeConstant* _tmp327_; ValaCCodeConstant* _tmp328_; ValaCCodeVariableDeclarator* _tmp329_; ValaCCodeVariableDeclarator* _tmp330_; ValaField* _tmp331_; gboolean _tmp332_ = FALSE; ValaCCodeFile* _tmp335_; ValaCCodeDeclaration* _tmp336_; _tmp307_ = _tmp306_; if (!_tmp307_) { gint _tmp308_; _tmp308_ = dim; dim = _tmp308_ + 1; } _tmp306_ = FALSE; _tmp309_ = dim; _tmp310_ = array_type; _tmp311_ = vala_array_type_get_rank (_tmp310_); _tmp312_ = _tmp311_; if (!(_tmp309_ <= _tmp312_)) { break; } _tmp313_ = self->int_type; _tmp314_ = vala_data_type_copy (_tmp313_); len_type = _tmp314_; _tmp315_ = len_type; _tmp316_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp315_); _tmp317_ = _tmp316_; _tmp318_ = vala_ccode_declaration_new (_tmp317_); _tmp319_ = _tmp318_; _g_free0 (_tmp317_); len_def = _tmp319_; _tmp320_ = len_def; _tmp321_ = f; _tmp322_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp321_); _tmp323_ = _tmp322_; _tmp324_ = dim; _tmp325_ = vala_ccode_base_module_get_array_length_cname (self, _tmp323_, _tmp324_); _tmp326_ = _tmp325_; _tmp327_ = vala_ccode_constant_new ("0"); _tmp328_ = _tmp327_; _tmp329_ = vala_ccode_variable_declarator_new (_tmp326_, (ValaCCodeExpression*) _tmp328_, NULL); _tmp330_ = _tmp329_; vala_ccode_declaration_add_declarator (_tmp320_, (ValaCCodeDeclarator*) _tmp330_); _vala_ccode_node_unref0 (_tmp330_); _vala_ccode_node_unref0 (_tmp328_); _g_free0 (_tmp326_); _g_free0 (_tmp323_); _tmp331_ = f; _tmp332_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp331_); if (!_tmp332_) { ValaCCodeDeclaration* _tmp333_; _tmp333_ = len_def; vala_ccode_declaration_set_modifiers (_tmp333_, VALA_CCODE_MODIFIERS_EXTERN); } else { ValaCCodeDeclaration* _tmp334_; _tmp334_ = len_def; vala_ccode_declaration_set_modifiers (_tmp334_, VALA_CCODE_MODIFIERS_STATIC); } _tmp335_ = self->cfile; _tmp336_ = len_def; vala_ccode_file_add_type_member_declaration (_tmp335_, (ValaCCodeNode*) _tmp336_); _vala_ccode_node_unref0 (len_def); _vala_code_node_unref0 (len_type); } } } _tmp338_ = array_type; _tmp339_ = vala_array_type_get_rank (_tmp338_); _tmp340_ = _tmp339_; if (_tmp340_ == 1) { ValaField* _tmp341_; gboolean _tmp342_ = FALSE; _tmp341_ = f; _tmp342_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp341_); _tmp337_ = _tmp342_; } else { _tmp337_ = FALSE; } _tmp343_ = _tmp337_; if (_tmp343_) { ValaDataType* _tmp344_; ValaDataType* _tmp345_ = NULL; ValaDataType* len_type; ValaDataType* _tmp346_; gchar* _tmp347_ = NULL; gchar* _tmp348_; ValaCCodeDeclaration* _tmp349_; ValaCCodeDeclaration* _tmp350_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp351_; ValaField* _tmp352_; gchar* _tmp353_ = NULL; gchar* _tmp354_; gchar* _tmp355_ = NULL; gchar* _tmp356_; ValaCCodeConstant* _tmp357_; ValaCCodeConstant* _tmp358_; ValaCCodeVariableDeclarator* _tmp359_; ValaCCodeVariableDeclarator* _tmp360_; ValaCCodeDeclaration* _tmp361_; ValaCCodeFile* _tmp362_; ValaCCodeDeclaration* _tmp363_; _tmp344_ = self->int_type; _tmp345_ = vala_data_type_copy (_tmp344_); len_type = _tmp345_; _tmp346_ = len_type; _tmp347_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp346_); _tmp348_ = _tmp347_; _tmp349_ = vala_ccode_declaration_new (_tmp348_); _tmp350_ = _tmp349_; _g_free0 (_tmp348_); _cdecl_ = _tmp350_; _tmp351_ = _cdecl_; _tmp352_ = f; _tmp353_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp352_); _tmp354_ = _tmp353_; _tmp355_ = vala_ccode_base_module_get_array_size_cname (self, _tmp354_); _tmp356_ = _tmp355_; _tmp357_ = vala_ccode_constant_new ("0"); _tmp358_ = _tmp357_; _tmp359_ = vala_ccode_variable_declarator_new (_tmp356_, (ValaCCodeExpression*) _tmp358_, NULL); _tmp360_ = _tmp359_; vala_ccode_declaration_add_declarator (_tmp351_, (ValaCCodeDeclarator*) _tmp360_); _vala_ccode_node_unref0 (_tmp360_); _vala_ccode_node_unref0 (_tmp358_); _g_free0 (_tmp356_); _g_free0 (_tmp354_); _tmp361_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp361_, VALA_CCODE_MODIFIERS_STATIC); _tmp362_ = self->cfile; _tmp363_ = _cdecl_; vala_ccode_file_add_type_member_declaration (_tmp362_, (ValaCCodeNode*) _tmp363_); _vala_ccode_node_unref0 (_cdecl_); _vala_code_node_unref0 (len_type); } } _vala_code_node_unref0 (array_type); } else { ValaField* _tmp364_; ValaDataType* _tmp365_; ValaDataType* _tmp366_; _tmp364_ = f; _tmp365_ = vala_variable_get_variable_type ((ValaVariable*) _tmp364_); _tmp366_ = _tmp365_; if (VALA_IS_DELEGATE_TYPE (_tmp366_)) { ValaField* _tmp367_; ValaDataType* _tmp368_; ValaDataType* _tmp369_; ValaDelegateType* _tmp370_; ValaDelegateType* delegate_type; ValaDelegateType* _tmp371_; ValaDelegate* _tmp372_; ValaDelegate* _tmp373_; gboolean _tmp374_; gboolean _tmp375_; _tmp367_ = f; _tmp368_ = vala_variable_get_variable_type ((ValaVariable*) _tmp367_); _tmp369_ = _tmp368_; _tmp370_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp369_)); delegate_type = _tmp370_; _tmp371_ = delegate_type; _tmp372_ = vala_delegate_type_get_delegate_symbol (_tmp371_); _tmp373_ = _tmp372_; _tmp374_ = vala_delegate_get_has_target (_tmp373_); _tmp375_ = _tmp374_; if (_tmp375_) { ValaCCodeDeclaration* _tmp376_; ValaCCodeDeclaration* target_def; ValaCCodeDeclaration* _tmp377_; ValaField* _tmp378_; gchar* _tmp379_ = NULL; gchar* _tmp380_; gchar* _tmp381_ = NULL; gchar* _tmp382_; ValaCCodeConstant* _tmp383_; ValaCCodeConstant* _tmp384_; ValaCCodeVariableDeclarator* _tmp385_; ValaCCodeVariableDeclarator* _tmp386_; ValaField* _tmp387_; gboolean _tmp388_ = FALSE; ValaCCodeFile* _tmp391_; ValaCCodeDeclaration* _tmp392_; ValaDelegateType* _tmp393_; gboolean _tmp394_; gboolean _tmp395_; _tmp376_ = vala_ccode_declaration_new ("gpointer"); target_def = _tmp376_; _tmp377_ = target_def; _tmp378_ = f; _tmp379_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp378_); _tmp380_ = _tmp379_; _tmp381_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp380_); _tmp382_ = _tmp381_; _tmp383_ = vala_ccode_constant_new ("NULL"); _tmp384_ = _tmp383_; _tmp385_ = vala_ccode_variable_declarator_new (_tmp382_, (ValaCCodeExpression*) _tmp384_, NULL); _tmp386_ = _tmp385_; vala_ccode_declaration_add_declarator (_tmp377_, (ValaCCodeDeclarator*) _tmp386_); _vala_ccode_node_unref0 (_tmp386_); _vala_ccode_node_unref0 (_tmp384_); _g_free0 (_tmp382_); _g_free0 (_tmp380_); _tmp387_ = f; _tmp388_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp387_); if (!_tmp388_) { ValaCCodeDeclaration* _tmp389_; _tmp389_ = target_def; vala_ccode_declaration_set_modifiers (_tmp389_, VALA_CCODE_MODIFIERS_EXTERN); } else { ValaCCodeDeclaration* _tmp390_; _tmp390_ = target_def; vala_ccode_declaration_set_modifiers (_tmp390_, VALA_CCODE_MODIFIERS_STATIC); } _tmp391_ = self->cfile; _tmp392_ = target_def; vala_ccode_file_add_type_member_declaration (_tmp391_, (ValaCCodeNode*) _tmp392_); _tmp393_ = delegate_type; _tmp394_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp393_); _tmp395_ = _tmp394_; if (_tmp395_) { ValaCCodeDeclaration* _tmp396_; ValaCCodeDeclaration* target_destroy_notify_def; ValaCCodeDeclaration* _tmp397_; ValaField* _tmp398_; gchar* _tmp399_ = NULL; gchar* _tmp400_; gchar* _tmp401_ = NULL; gchar* _tmp402_; ValaCCodeConstant* _tmp403_; ValaCCodeConstant* _tmp404_; ValaCCodeVariableDeclarator* _tmp405_; ValaCCodeVariableDeclarator* _tmp406_; ValaField* _tmp407_; gboolean _tmp408_ = FALSE; ValaCCodeFile* _tmp411_; ValaCCodeDeclaration* _tmp412_; _tmp396_ = vala_ccode_declaration_new ("GDestroyNotify"); target_destroy_notify_def = _tmp396_; _tmp397_ = target_destroy_notify_def; _tmp398_ = f; _tmp399_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp398_); _tmp400_ = _tmp399_; _tmp401_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp400_); _tmp402_ = _tmp401_; _tmp403_ = vala_ccode_constant_new ("NULL"); _tmp404_ = _tmp403_; _tmp405_ = vala_ccode_variable_declarator_new (_tmp402_, (ValaCCodeExpression*) _tmp404_, NULL); _tmp406_ = _tmp405_; vala_ccode_declaration_add_declarator (_tmp397_, (ValaCCodeDeclarator*) _tmp406_); _vala_ccode_node_unref0 (_tmp406_); _vala_ccode_node_unref0 (_tmp404_); _g_free0 (_tmp402_); _g_free0 (_tmp400_); _tmp407_ = f; _tmp408_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp407_); if (!_tmp408_) { ValaCCodeDeclaration* _tmp409_; _tmp409_ = target_destroy_notify_def; vala_ccode_declaration_set_modifiers (_tmp409_, VALA_CCODE_MODIFIERS_EXTERN); } else { ValaCCodeDeclaration* _tmp410_; _tmp410_ = target_destroy_notify_def; vala_ccode_declaration_set_modifiers (_tmp410_, VALA_CCODE_MODIFIERS_STATIC); } _tmp411_ = self->cfile; _tmp412_ = target_destroy_notify_def; vala_ccode_file_add_type_member_declaration (_tmp411_, (ValaCCodeNode*) _tmp412_); _vala_ccode_node_unref0 (target_destroy_notify_def); } _vala_ccode_node_unref0 (target_def); } _vala_code_node_unref0 (delegate_type); } } _tmp413_ = f; _tmp414_ = vala_variable_get_initializer ((ValaVariable*) _tmp413_); _tmp415_ = _tmp414_; if (_tmp415_ != NULL) { ValaField* _tmp416_; ValaExpression* _tmp417_; ValaExpression* _tmp418_; ValaCCodeExpression* _tmp419_ = NULL; ValaCCodeExpression* rhs; ValaCCodeExpression* _tmp420_; gboolean _tmp421_ = FALSE; _tmp416_ = f; _tmp417_ = vala_variable_get_initializer ((ValaVariable*) _tmp416_); _tmp418_ = _tmp417_; _tmp419_ = vala_ccode_base_module_get_cvalue (self, _tmp418_); rhs = _tmp419_; _tmp420_ = rhs; _tmp421_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp420_); if (!_tmp421_) { ValaField* _tmp422_; ValaSymbol* _tmp423_; ValaSymbol* _tmp424_; _tmp422_ = f; _tmp423_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp422_); _tmp424_ = _tmp423_; if (VALA_IS_CLASS (_tmp424_)) { ValaField* _tmp425_; ValaExpression* _tmp426_; ValaExpression* _tmp427_; gboolean _tmp464_ = FALSE; gboolean _tmp465_ = FALSE; ValaField* _tmp466_; ValaDataType* _tmp467_; ValaDataType* _tmp468_; gboolean _tmp471_; gboolean _tmp475_; _tmp425_ = f; _tmp426_ = vala_variable_get_initializer ((ValaVariable*) _tmp425_); _tmp427_ = _tmp426_; if (VALA_IS_INITIALIZER_LIST (_tmp427_)) { ValaCCodeFunction* _tmp428_; ValaCCodeFunction* _tmp429_; ValaField* _tmp430_; ValaDataType* _tmp431_; ValaDataType* _tmp432_; ValaLocalVariable* _tmp433_ = NULL; ValaLocalVariable* temp_decl; ValaLocalVariable* _tmp434_; const gchar* _tmp435_; const gchar* _tmp436_; ValaCCodeExpression* _tmp437_; ValaCCodeVariableDeclarator* _tmp438_; ValaCCodeVariableDeclarator* vardecl; ValaCCodeFunction* _tmp439_; ValaCCodeFunction* _tmp440_; ValaLocalVariable* _tmp441_; ValaDataType* _tmp442_; ValaDataType* _tmp443_; gchar* _tmp444_ = NULL; gchar* _tmp445_; ValaCCodeVariableDeclarator* _tmp446_; ValaLocalVariable* _tmp447_; const gchar* _tmp448_; const gchar* _tmp449_; gchar* _tmp450_ = NULL; gchar* _tmp451_; ValaCCodeExpression* _tmp452_ = NULL; ValaCCodeExpression* _tmp453_; ValaCCodeExpression* tmp; ValaCCodeFunction* _tmp454_; ValaCCodeFunction* _tmp455_; ValaCCodeExpression* _tmp456_; ValaCCodeExpression* _tmp457_; ValaCCodeFunction* _tmp458_; ValaCCodeFunction* _tmp459_; _tmp428_ = vala_ccode_base_module_get_ccode (self); _tmp429_ = _tmp428_; vala_ccode_function_open_block (_tmp429_); _tmp430_ = f; _tmp431_ = vala_variable_get_variable_type ((ValaVariable*) _tmp430_); _tmp432_ = _tmp431_; _tmp433_ = vala_ccode_base_module_get_temp_variable (self, _tmp432_, TRUE, NULL, TRUE); temp_decl = _tmp433_; _tmp434_ = temp_decl; _tmp435_ = vala_symbol_get_name ((ValaSymbol*) _tmp434_); _tmp436_ = _tmp435_; _tmp437_ = rhs; _tmp438_ = vala_ccode_variable_declarator_new_zero (_tmp436_, _tmp437_, NULL); vardecl = _tmp438_; _tmp439_ = vala_ccode_base_module_get_ccode (self); _tmp440_ = _tmp439_; _tmp441_ = temp_decl; _tmp442_ = vala_variable_get_variable_type ((ValaVariable*) _tmp441_); _tmp443_ = _tmp442_; _tmp444_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp443_); _tmp445_ = _tmp444_; _tmp446_ = vardecl; vala_ccode_function_add_declaration (_tmp440_, _tmp445_, (ValaCCodeDeclarator*) _tmp446_, 0); _g_free0 (_tmp445_); _tmp447_ = temp_decl; _tmp448_ = vala_symbol_get_name ((ValaSymbol*) _tmp447_); _tmp449_ = _tmp448_; _tmp450_ = vala_ccode_base_module_get_variable_cname (self, _tmp449_); _tmp451_ = _tmp450_; _tmp452_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp451_); _tmp453_ = _tmp452_; _g_free0 (_tmp451_); tmp = _tmp453_; _tmp454_ = vala_ccode_base_module_get_ccode (self); _tmp455_ = _tmp454_; _tmp456_ = lhs; _tmp457_ = tmp; vala_ccode_function_add_assignment (_tmp455_, _tmp456_, _tmp457_); _tmp458_ = vala_ccode_base_module_get_ccode (self); _tmp459_ = _tmp458_; vala_ccode_function_close (_tmp459_); _vala_ccode_node_unref0 (tmp); _vala_ccode_node_unref0 (vardecl); _vala_code_node_unref0 (temp_decl); } else { ValaCCodeFunction* _tmp460_; ValaCCodeFunction* _tmp461_; ValaCCodeExpression* _tmp462_; ValaCCodeExpression* _tmp463_; _tmp460_ = vala_ccode_base_module_get_ccode (self); _tmp461_ = _tmp460_; _tmp462_ = lhs; _tmp463_ = rhs; vala_ccode_function_add_assignment (_tmp461_, _tmp462_, _tmp463_); } _tmp466_ = f; _tmp467_ = vala_variable_get_variable_type ((ValaVariable*) _tmp466_); _tmp468_ = _tmp467_; if (VALA_IS_ARRAY_TYPE (_tmp468_)) { ValaField* _tmp469_; gboolean _tmp470_ = FALSE; _tmp469_ = f; _tmp470_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp469_); _tmp465_ = _tmp470_; } else { _tmp465_ = FALSE; } _tmp471_ = _tmp465_; if (_tmp471_) { ValaField* _tmp472_; ValaExpression* _tmp473_; ValaExpression* _tmp474_; _tmp472_ = f; _tmp473_ = vala_variable_get_initializer ((ValaVariable*) _tmp472_); _tmp474_ = _tmp473_; _tmp464_ = VALA_IS_ARRAY_CREATION_EXPRESSION (_tmp474_); } else { _tmp464_ = FALSE; } _tmp475_ = _tmp464_; if (_tmp475_) { ValaField* _tmp476_; ValaDataType* _tmp477_; ValaDataType* _tmp478_; ValaArrayType* _tmp479_; ValaArrayType* array_type; ValaField* _tmp480_; ValaTargetValue* _tmp481_ = NULL; ValaTargetValue* field_value; ValaField* _tmp482_; ValaExpression* _tmp483_; ValaExpression* _tmp484_; ValaList* _tmp485_ = NULL; ValaList* sizes; _tmp476_ = f; _tmp477_ = vala_variable_get_variable_type ((ValaVariable*) _tmp476_); _tmp478_ = _tmp477_; _tmp479_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp478_)); array_type = _tmp479_; _tmp480_ = f; _tmp481_ = vala_ccode_base_module_get_field_cvalue (self, _tmp480_, NULL); field_value = _tmp481_; _tmp482_ = f; _tmp483_ = vala_variable_get_initializer ((ValaVariable*) _tmp482_); _tmp484_ = _tmp483_; _tmp485_ = vala_array_creation_expression_get_sizes (VALA_ARRAY_CREATION_EXPRESSION (_tmp484_)); sizes = _tmp485_; { gint dim; dim = 1; { gboolean _tmp486_; _tmp486_ = TRUE; while (TRUE) { gboolean _tmp487_; gint _tmp489_; ValaArrayType* _tmp490_; gint _tmp491_; gint _tmp492_; ValaTargetValue* _tmp493_; gint _tmp494_; ValaCCodeExpression* _tmp495_ = NULL; ValaCCodeExpression* array_len_lhs; ValaList* _tmp496_; gint _tmp497_; gpointer _tmp498_ = NULL; ValaExpression* size; ValaCCodeFunction* _tmp499_; ValaCCodeFunction* _tmp500_; ValaCCodeExpression* _tmp501_; ValaExpression* _tmp502_; ValaCCodeExpression* _tmp503_ = NULL; ValaCCodeExpression* _tmp504_; _tmp487_ = _tmp486_; if (!_tmp487_) { gint _tmp488_; _tmp488_ = dim; dim = _tmp488_ + 1; } _tmp486_ = FALSE; _tmp489_ = dim; _tmp490_ = array_type; _tmp491_ = vala_array_type_get_rank (_tmp490_); _tmp492_ = _tmp491_; if (!(_tmp489_ <= _tmp492_)) { break; } _tmp493_ = field_value; _tmp494_ = dim; _tmp495_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp493_, _tmp494_); array_len_lhs = _tmp495_; _tmp496_ = sizes; _tmp497_ = dim; _tmp498_ = vala_list_get (_tmp496_, _tmp497_ - 1); size = (ValaExpression*) _tmp498_; _tmp499_ = vala_ccode_base_module_get_ccode (self); _tmp500_ = _tmp499_; _tmp501_ = array_len_lhs; _tmp502_ = size; _tmp503_ = vala_ccode_base_module_get_cvalue (self, _tmp502_); _tmp504_ = _tmp503_; vala_ccode_function_add_assignment (_tmp500_, _tmp501_, _tmp504_); _vala_ccode_node_unref0 (_tmp504_); _vala_code_node_unref0 (size); _vala_ccode_node_unref0 (array_len_lhs); } } } _vala_iterable_unref0 (sizes); _vala_target_value_unref0 (field_value); _vala_code_node_unref0 (array_type); } } else { ValaField* _tmp505_; ValaField* _tmp506_; ValaSourceReference* _tmp507_; ValaSourceReference* _tmp508_; _tmp505_ = f; vala_code_node_set_error ((ValaCodeNode*) _tmp505_, TRUE); _tmp506_ = f; _tmp507_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp506_); _tmp508_ = _tmp507_; vala_report_error (_tmp508_, "Non-constant field initializers not supported in this context"); _vala_ccode_node_unref0 (rhs); _vala_ccode_node_unref0 (var_def); _vala_ccode_node_unref0 (var_decl); _g_free0 (field_ctype); _vala_ccode_node_unref0 (lhs); _vala_code_node_unref0 (cl); return; } } _vala_ccode_node_unref0 (rhs); } vala_ccode_base_module_pop_context (self); _vala_ccode_node_unref0 (var_def); _vala_ccode_node_unref0 (var_decl); } } } vala_ccode_base_module_pop_line (self); _g_free0 (field_ctype); _vala_ccode_node_unref0 (lhs); _vala_code_node_unref0 (cl); } gboolean vala_ccode_base_module_is_constant_ccode_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr) { gboolean result = FALSE; ValaCCodeExpression* _tmp0_; ValaCCodeExpression* _tmp21_; ValaCCodeParenthesizedExpression* _tmp22_; ValaCCodeParenthesizedExpression* cparenthesized; gboolean _tmp23_ = FALSE; ValaCCodeParenthesizedExpression* _tmp24_; gboolean _tmp29_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (cexpr != NULL, FALSE); _tmp0_ = cexpr; if (VALA_IS_CCODE_CONSTANT (_tmp0_)) { result = TRUE; return result; } else { ValaCCodeExpression* _tmp1_; _tmp1_ = cexpr; if (VALA_IS_CCODE_CAST_EXPRESSION (_tmp1_)) { ValaCCodeExpression* _tmp2_; ValaCCodeCastExpression* _tmp3_; ValaCCodeCastExpression* ccast; ValaCCodeCastExpression* _tmp4_; ValaCCodeExpression* _tmp5_; ValaCCodeExpression* _tmp6_; gboolean _tmp7_ = FALSE; _tmp2_ = cexpr; _tmp3_ = _vala_ccode_node_ref0 (VALA_CCODE_CAST_EXPRESSION (_tmp2_)); ccast = _tmp3_; _tmp4_ = ccast; _tmp5_ = vala_ccode_cast_expression_get_inner (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp6_); result = _tmp7_; _vala_ccode_node_unref0 (ccast); return result; } else { ValaCCodeExpression* _tmp8_; _tmp8_ = cexpr; if (VALA_IS_CCODE_BINARY_EXPRESSION (_tmp8_)) { ValaCCodeExpression* _tmp9_; ValaCCodeBinaryExpression* _tmp10_; ValaCCodeBinaryExpression* cbinary; gboolean _tmp11_ = FALSE; ValaCCodeBinaryExpression* _tmp12_; ValaCCodeExpression* _tmp13_; ValaCCodeExpression* _tmp14_; gboolean _tmp15_ = FALSE; gboolean _tmp20_; _tmp9_ = cexpr; _tmp10_ = _vala_ccode_node_ref0 (VALA_CCODE_BINARY_EXPRESSION (_tmp9_)); cbinary = _tmp10_; _tmp12_ = cbinary; _tmp13_ = vala_ccode_binary_expression_get_left (_tmp12_); _tmp14_ = _tmp13_; _tmp15_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp14_); if (_tmp15_) { ValaCCodeBinaryExpression* _tmp16_; ValaCCodeExpression* _tmp17_; ValaCCodeExpression* _tmp18_; gboolean _tmp19_ = FALSE; _tmp16_ = cbinary; _tmp17_ = vala_ccode_binary_expression_get_right (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp18_); _tmp11_ = _tmp19_; } else { _tmp11_ = FALSE; } _tmp20_ = _tmp11_; result = _tmp20_; _vala_ccode_node_unref0 (cbinary); return result; } } } _tmp21_ = cexpr; _tmp22_ = _vala_ccode_node_ref0 (VALA_IS_CCODE_PARENTHESIZED_EXPRESSION (_tmp21_) ? ((ValaCCodeParenthesizedExpression*) _tmp21_) : NULL); cparenthesized = _tmp22_; _tmp24_ = cparenthesized; if (NULL != _tmp24_) { ValaCCodeParenthesizedExpression* _tmp25_; ValaCCodeExpression* _tmp26_; ValaCCodeExpression* _tmp27_; gboolean _tmp28_ = FALSE; _tmp25_ = cparenthesized; _tmp26_ = vala_ccode_parenthesized_expression_get_inner (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp27_); _tmp23_ = _tmp28_; } else { _tmp23_ = FALSE; } _tmp29_ = _tmp23_; result = _tmp29_; _vala_ccode_node_unref0 (cparenthesized); return result; } /** * Returns whether the passed cexpr is a pure expression, i.e. an * expression without side-effects. */ gboolean vala_ccode_base_module_is_pure_ccode_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; ValaCCodeExpression* _tmp1_; gboolean _tmp3_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (cexpr != NULL, FALSE); _tmp1_ = cexpr; if (VALA_IS_CCODE_CONSTANT (_tmp1_)) { _tmp0_ = TRUE; } else { ValaCCodeExpression* _tmp2_; _tmp2_ = cexpr; _tmp0_ = VALA_IS_CCODE_IDENTIFIER (_tmp2_); } _tmp3_ = _tmp0_; if (_tmp3_) { result = TRUE; return result; } else { ValaCCodeExpression* _tmp4_; _tmp4_ = cexpr; if (VALA_IS_CCODE_BINARY_EXPRESSION (_tmp4_)) { ValaCCodeExpression* _tmp5_; ValaCCodeBinaryExpression* _tmp6_; ValaCCodeBinaryExpression* cbinary; gboolean _tmp7_ = FALSE; ValaCCodeBinaryExpression* _tmp8_; ValaCCodeExpression* _tmp9_; ValaCCodeExpression* _tmp10_; gboolean _tmp11_ = FALSE; gboolean _tmp16_; _tmp5_ = cexpr; _tmp6_ = _vala_ccode_node_ref0 (VALA_CCODE_BINARY_EXPRESSION (_tmp5_)); cbinary = _tmp6_; _tmp8_ = cbinary; _tmp9_ = vala_ccode_binary_expression_get_left (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp10_); if (_tmp11_) { ValaCCodeBinaryExpression* _tmp12_; ValaCCodeExpression* _tmp13_; ValaCCodeExpression* _tmp14_; gboolean _tmp15_ = FALSE; _tmp12_ = cbinary; _tmp13_ = vala_ccode_binary_expression_get_right (_tmp12_); _tmp14_ = _tmp13_; _tmp15_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp14_); _tmp7_ = _tmp15_; } else { _tmp7_ = FALSE; } _tmp16_ = _tmp7_; result = _tmp16_; _vala_ccode_node_unref0 (cbinary); return result; } else { ValaCCodeExpression* _tmp17_; _tmp17_ = cexpr; if (VALA_IS_CCODE_UNARY_EXPRESSION (_tmp17_)) { ValaCCodeExpression* _tmp18_; ValaCCodeUnaryExpression* _tmp19_; ValaCCodeUnaryExpression* cunary; ValaCCodeUnaryExpression* _tmp20_; ValaCCodeUnaryOperator _tmp21_; ValaCCodeUnaryOperator _tmp22_; _tmp18_ = cexpr; _tmp19_ = _vala_ccode_node_ref0 (VALA_CCODE_UNARY_EXPRESSION (_tmp18_)); cunary = _tmp19_; _tmp20_ = cunary; _tmp21_ = vala_ccode_unary_expression_get_operator (_tmp20_); _tmp22_ = _tmp21_; switch (_tmp22_) { case VALA_CCODE_UNARY_OPERATOR_PREFIX_INCREMENT: case VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT: case VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT: case VALA_CCODE_UNARY_OPERATOR_POSTFIX_DECREMENT: { result = FALSE; _vala_ccode_node_unref0 (cunary); return result; } default: { ValaCCodeUnaryExpression* _tmp23_; ValaCCodeExpression* _tmp24_; ValaCCodeExpression* _tmp25_; gboolean _tmp26_ = FALSE; _tmp23_ = cunary; _tmp24_ = vala_ccode_unary_expression_get_inner (_tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp25_); result = _tmp26_; _vala_ccode_node_unref0 (cunary); return result; } } _vala_ccode_node_unref0 (cunary); } else { ValaCCodeExpression* _tmp27_; _tmp27_ = cexpr; if (VALA_IS_CCODE_MEMBER_ACCESS (_tmp27_)) { ValaCCodeExpression* _tmp28_; ValaCCodeMemberAccess* _tmp29_; ValaCCodeMemberAccess* cma; ValaCCodeMemberAccess* _tmp30_; ValaCCodeExpression* _tmp31_; ValaCCodeExpression* _tmp32_; gboolean _tmp33_ = FALSE; _tmp28_ = cexpr; _tmp29_ = _vala_ccode_node_ref0 (VALA_CCODE_MEMBER_ACCESS (_tmp28_)); cma = _tmp29_; _tmp30_ = cma; _tmp31_ = vala_ccode_member_access_get_inner (_tmp30_); _tmp32_ = _tmp31_; _tmp33_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp32_); result = _tmp33_; _vala_ccode_node_unref0 (cma); return result; } else { ValaCCodeExpression* _tmp34_; _tmp34_ = cexpr; if (VALA_IS_CCODE_ELEMENT_ACCESS (_tmp34_)) { ValaCCodeExpression* _tmp35_; ValaCCodeElementAccess* _tmp36_; ValaCCodeElementAccess* cea; gboolean _tmp37_ = FALSE; ValaCCodeElementAccess* _tmp38_; ValaCCodeExpression* _tmp39_; ValaCCodeExpression* _tmp40_; gboolean _tmp41_ = FALSE; gboolean _tmp46_; _tmp35_ = cexpr; _tmp36_ = _vala_ccode_node_ref0 (VALA_CCODE_ELEMENT_ACCESS (_tmp35_)); cea = _tmp36_; _tmp38_ = cea; _tmp39_ = vala_ccode_element_access_get_container (_tmp38_); _tmp40_ = _tmp39_; _tmp41_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp40_); if (_tmp41_) { ValaCCodeElementAccess* _tmp42_; ValaCCodeExpression* _tmp43_; ValaCCodeExpression* _tmp44_; gboolean _tmp45_ = FALSE; _tmp42_ = cea; _tmp43_ = vala_ccode_element_access_get_index (_tmp42_); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp44_); _tmp37_ = _tmp45_; } else { _tmp37_ = FALSE; } _tmp46_ = _tmp37_; result = _tmp46_; _vala_ccode_node_unref0 (cea); return result; } else { ValaCCodeExpression* _tmp47_; _tmp47_ = cexpr; if (VALA_IS_CCODE_CAST_EXPRESSION (_tmp47_)) { ValaCCodeExpression* _tmp48_; ValaCCodeCastExpression* _tmp49_; ValaCCodeCastExpression* ccast; ValaCCodeCastExpression* _tmp50_; ValaCCodeExpression* _tmp51_; ValaCCodeExpression* _tmp52_; gboolean _tmp53_ = FALSE; _tmp48_ = cexpr; _tmp49_ = _vala_ccode_node_ref0 (VALA_CCODE_CAST_EXPRESSION (_tmp48_)); ccast = _tmp49_; _tmp50_ = ccast; _tmp51_ = vala_ccode_cast_expression_get_inner (_tmp50_); _tmp52_ = _tmp51_; _tmp53_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp52_); result = _tmp53_; _vala_ccode_node_unref0 (ccast); return result; } else { ValaCCodeExpression* _tmp54_; _tmp54_ = cexpr; if (VALA_IS_CCODE_PARENTHESIZED_EXPRESSION (_tmp54_)) { ValaCCodeExpression* _tmp55_; ValaCCodeParenthesizedExpression* _tmp56_; ValaCCodeParenthesizedExpression* cparenthesized; ValaCCodeParenthesizedExpression* _tmp57_; ValaCCodeExpression* _tmp58_; ValaCCodeExpression* _tmp59_; gboolean _tmp60_ = FALSE; _tmp55_ = cexpr; _tmp56_ = _vala_ccode_node_ref0 (VALA_CCODE_PARENTHESIZED_EXPRESSION (_tmp55_)); cparenthesized = _tmp56_; _tmp57_ = cparenthesized; _tmp58_ = vala_ccode_parenthesized_expression_get_inner (_tmp57_); _tmp59_ = _tmp58_; _tmp60_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp59_); result = _tmp60_; _vala_ccode_node_unref0 (cparenthesized); return result; } } } } } } } result = FALSE; return result; } static void vala_ccode_base_module_real_visit_formal_parameter (ValaCodeVisitor* base, ValaParameter* p) { ValaCCodeBaseModule * self; ValaParameter* _tmp0_; gboolean _tmp1_; gboolean _tmp2_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (p != NULL); _tmp0_ = p; _tmp1_ = vala_parameter_get_ellipsis (_tmp0_); _tmp2_ = _tmp1_; if (!_tmp2_) { ValaParameter* _tmp3_; ValaDataType* _tmp4_; ValaDataType* _tmp5_; _tmp3_ = p; _tmp4_ = vala_variable_get_variable_type ((ValaVariable*) _tmp3_); _tmp5_ = _tmp4_; vala_ccode_base_module_check_type (self, _tmp5_); } } static void vala_ccode_base_module_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop) { ValaCCodeBaseModule * self; ValaProperty* _tmp0_; ValaProperty* _tmp1_; ValaDataType* _tmp2_; ValaDataType* _tmp3_; ValaProperty* _tmp4_; ValaPropertyAccessor* _tmp5_; ValaPropertyAccessor* _tmp6_; ValaProperty* _tmp10_; ValaPropertyAccessor* _tmp11_; ValaPropertyAccessor* _tmp12_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (prop != NULL); _tmp0_ = prop; vala_ccode_base_module_visit_member (self, (ValaSymbol*) _tmp0_); _tmp1_ = prop; _tmp2_ = vala_property_get_property_type (_tmp1_); _tmp3_ = _tmp2_; vala_ccode_base_module_check_type (self, _tmp3_); _tmp4_ = prop; _tmp5_ = vala_property_get_get_accessor (_tmp4_); _tmp6_ = _tmp5_; if (_tmp6_ != NULL) { ValaProperty* _tmp7_; ValaPropertyAccessor* _tmp8_; ValaPropertyAccessor* _tmp9_; _tmp7_ = prop; _tmp8_ = vala_property_get_get_accessor (_tmp7_); _tmp9_ = _tmp8_; vala_code_node_accept ((ValaCodeNode*) _tmp9_, (ValaCodeVisitor*) self); } _tmp10_ = prop; _tmp11_ = vala_property_get_set_accessor (_tmp10_); _tmp12_ = _tmp11_; if (_tmp12_ != NULL) { ValaProperty* _tmp13_; ValaPropertyAccessor* _tmp14_; ValaPropertyAccessor* _tmp15_; _tmp13_ = prop; _tmp14_ = vala_property_get_set_accessor (_tmp13_); _tmp15_ = _tmp14_; vala_code_node_accept ((ValaCodeNode*) _tmp15_, (ValaCodeVisitor*) self); } } void vala_ccode_base_module_generate_type_declaration (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeFile* decl_space) { ValaDataType* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (type != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = type; if (VALA_IS_OBJECT_TYPE (_tmp0_)) { ValaDataType* _tmp1_; ValaObjectType* _tmp2_; ValaObjectType* object_type; ValaObjectType* _tmp3_; ValaObjectTypeSymbol* _tmp4_; ValaObjectTypeSymbol* _tmp5_; _tmp1_ = type; _tmp2_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE (_tmp1_)); object_type = _tmp2_; _tmp3_ = object_type; _tmp4_ = vala_object_type_get_type_symbol (_tmp3_); _tmp5_ = _tmp4_; if (VALA_IS_CLASS (_tmp5_)) { ValaObjectType* _tmp6_; ValaObjectTypeSymbol* _tmp7_; ValaObjectTypeSymbol* _tmp8_; ValaCCodeFile* _tmp9_; _tmp6_ = object_type; _tmp7_ = vala_object_type_get_type_symbol (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = decl_space; vala_ccode_base_module_generate_class_declaration (self, VALA_CLASS (_tmp8_), _tmp9_); } else { ValaObjectType* _tmp10_; ValaObjectTypeSymbol* _tmp11_; ValaObjectTypeSymbol* _tmp12_; _tmp10_ = object_type; _tmp11_ = vala_object_type_get_type_symbol (_tmp10_); _tmp12_ = _tmp11_; if (VALA_IS_INTERFACE (_tmp12_)) { ValaObjectType* _tmp13_; ValaObjectTypeSymbol* _tmp14_; ValaObjectTypeSymbol* _tmp15_; ValaCCodeFile* _tmp16_; _tmp13_ = object_type; _tmp14_ = vala_object_type_get_type_symbol (_tmp13_); _tmp15_ = _tmp14_; _tmp16_ = decl_space; vala_ccode_base_module_generate_interface_declaration (self, VALA_INTERFACE (_tmp15_), _tmp16_); } } _vala_code_node_unref0 (object_type); } else { ValaDataType* _tmp17_; _tmp17_ = type; if (VALA_IS_DELEGATE_TYPE (_tmp17_)) { ValaDataType* _tmp18_; ValaDelegateType* _tmp19_; ValaDelegateType* deleg_type; ValaDelegateType* _tmp20_; ValaDelegate* _tmp21_; ValaDelegate* _tmp22_; ValaDelegate* _tmp23_; ValaDelegate* d; ValaDelegate* _tmp24_; ValaCCodeFile* _tmp25_; _tmp18_ = type; _tmp19_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp18_)); deleg_type = _tmp19_; _tmp20_ = deleg_type; _tmp21_ = vala_delegate_type_get_delegate_symbol (_tmp20_); _tmp22_ = _tmp21_; _tmp23_ = _vala_code_node_ref0 (_tmp22_); d = _tmp23_; _tmp24_ = d; _tmp25_ = decl_space; vala_ccode_base_module_generate_delegate_declaration (self, _tmp24_, _tmp25_); _vala_code_node_unref0 (d); _vala_code_node_unref0 (deleg_type); } else { ValaDataType* _tmp26_; ValaTypeSymbol* _tmp27_; ValaTypeSymbol* _tmp28_; _tmp26_ = type; _tmp27_ = vala_data_type_get_data_type (_tmp26_); _tmp28_ = _tmp27_; if (VALA_IS_ENUM (_tmp28_)) { ValaDataType* _tmp29_; ValaTypeSymbol* _tmp30_; ValaTypeSymbol* _tmp31_; ValaEnum* _tmp32_; ValaEnum* en; ValaEnum* _tmp33_; ValaCCodeFile* _tmp34_; _tmp29_ = type; _tmp30_ = vala_data_type_get_data_type (_tmp29_); _tmp31_ = _tmp30_; _tmp32_ = _vala_code_node_ref0 (VALA_ENUM (_tmp31_)); en = _tmp32_; _tmp33_ = en; _tmp34_ = decl_space; vala_ccode_base_module_generate_enum_declaration (self, _tmp33_, _tmp34_); _vala_code_node_unref0 (en); } else { ValaDataType* _tmp35_; _tmp35_ = type; if (VALA_IS_VALUE_TYPE (_tmp35_)) { ValaDataType* _tmp36_; ValaValueType* _tmp37_; ValaValueType* value_type; ValaValueType* _tmp38_; ValaTypeSymbol* _tmp39_; ValaTypeSymbol* _tmp40_; ValaCCodeFile* _tmp41_; _tmp36_ = type; _tmp37_ = _vala_code_node_ref0 (VALA_VALUE_TYPE (_tmp36_)); value_type = _tmp37_; _tmp38_ = value_type; _tmp39_ = vala_value_type_get_type_symbol (_tmp38_); _tmp40_ = _tmp39_; _tmp41_ = decl_space; vala_ccode_base_module_generate_struct_declaration (self, VALA_STRUCT (_tmp40_), _tmp41_); _vala_code_node_unref0 (value_type); } else { ValaDataType* _tmp42_; _tmp42_ = type; if (VALA_IS_ARRAY_TYPE (_tmp42_)) { ValaDataType* _tmp43_; ValaArrayType* _tmp44_; ValaArrayType* array_type; ValaArrayType* _tmp45_; ValaDataType* _tmp46_; ValaDataType* _tmp47_; ValaCCodeFile* _tmp48_; _tmp43_ = type; _tmp44_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp43_)); array_type = _tmp44_; _tmp45_ = array_type; _tmp46_ = vala_array_type_get_element_type (_tmp45_); _tmp47_ = _tmp46_; _tmp48_ = decl_space; vala_ccode_base_module_generate_type_declaration (self, _tmp47_, _tmp48_); _vala_code_node_unref0 (array_type); } else { ValaDataType* _tmp49_; _tmp49_ = type; if (VALA_IS_ERROR_TYPE (_tmp49_)) { ValaDataType* _tmp50_; ValaErrorType* _tmp51_; ValaErrorType* error_type; ValaErrorType* _tmp52_; ValaErrorDomain* _tmp53_; ValaErrorDomain* _tmp54_; _tmp50_ = type; _tmp51_ = _vala_code_node_ref0 (VALA_ERROR_TYPE (_tmp50_)); error_type = _tmp51_; _tmp52_ = error_type; _tmp53_ = vala_error_type_get_error_domain (_tmp52_); _tmp54_ = _tmp53_; if (_tmp54_ != NULL) { ValaErrorType* _tmp55_; ValaErrorDomain* _tmp56_; ValaErrorDomain* _tmp57_; ValaCCodeFile* _tmp58_; _tmp55_ = error_type; _tmp56_ = vala_error_type_get_error_domain (_tmp55_); _tmp57_ = _tmp56_; _tmp58_ = decl_space; vala_ccode_base_module_generate_error_domain_declaration (self, _tmp57_, _tmp58_); } _vala_code_node_unref0 (error_type); } else { ValaDataType* _tmp59_; _tmp59_ = type; if (VALA_IS_POINTER_TYPE (_tmp59_)) { ValaDataType* _tmp60_; ValaPointerType* _tmp61_; ValaPointerType* pointer_type; ValaPointerType* _tmp62_; ValaDataType* _tmp63_; ValaDataType* _tmp64_; ValaCCodeFile* _tmp65_; _tmp60_ = type; _tmp61_ = _vala_code_node_ref0 (VALA_POINTER_TYPE (_tmp60_)); pointer_type = _tmp61_; _tmp62_ = pointer_type; _tmp63_ = vala_pointer_type_get_base_type (_tmp62_); _tmp64_ = _tmp63_; _tmp65_ = decl_space; vala_ccode_base_module_generate_type_declaration (self, _tmp64_, _tmp65_); _vala_code_node_unref0 (pointer_type); } } } } } } } { ValaDataType* _tmp66_; ValaList* _tmp67_ = NULL; ValaList* _type_arg_list; ValaList* _tmp68_; gint _tmp69_; gint _tmp70_; gint _type_arg_size; gint _type_arg_index; _tmp66_ = type; _tmp67_ = vala_data_type_get_type_arguments (_tmp66_); _type_arg_list = _tmp67_; _tmp68_ = _type_arg_list; _tmp69_ = vala_collection_get_size ((ValaCollection*) _tmp68_); _tmp70_ = _tmp69_; _type_arg_size = _tmp70_; _type_arg_index = -1; while (TRUE) { gint _tmp71_; gint _tmp72_; gint _tmp73_; ValaList* _tmp74_; gint _tmp75_; gpointer _tmp76_ = NULL; ValaDataType* type_arg; ValaDataType* _tmp77_; ValaCCodeFile* _tmp78_; _tmp71_ = _type_arg_index; _type_arg_index = _tmp71_ + 1; _tmp72_ = _type_arg_index; _tmp73_ = _type_arg_size; if (!(_tmp72_ < _tmp73_)) { break; } _tmp74_ = _type_arg_list; _tmp75_ = _type_arg_index; _tmp76_ = vala_list_get (_tmp74_, _tmp75_); type_arg = (ValaDataType*) _tmp76_; _tmp77_ = type_arg; _tmp78_ = decl_space; vala_ccode_base_module_generate_type_declaration (self, _tmp77_, _tmp78_); _vala_code_node_unref0 (type_arg); } _vala_iterable_unref0 (_type_arg_list); } } static void vala_ccode_base_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space) { g_return_if_fail (cl != NULL); g_return_if_fail (decl_space != NULL); } void vala_ccode_base_module_generate_class_struct_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_class_struct_declaration (self, cl, decl_space); } static void vala_ccode_base_module_real_generate_struct_declaration (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space) { g_return_if_fail (st != NULL); g_return_if_fail (decl_space != NULL); } void vala_ccode_base_module_generate_struct_declaration (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_struct_declaration (self, st, decl_space); } static void vala_ccode_base_module_real_generate_delegate_declaration (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space) { g_return_if_fail (d != NULL); g_return_if_fail (decl_space != NULL); } void vala_ccode_base_module_generate_delegate_declaration (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_delegate_declaration (self, d, decl_space); } static void vala_ccode_base_module_real_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction) { g_return_if_fail (m != NULL); g_return_if_fail (decl_space != NULL); g_return_if_fail (cparam_map != NULL); g_return_if_fail (func != NULL); } void vala_ccode_base_module_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_cparameters (self, m, decl_space, cparam_map, func, vdeclarator, carg_map, vcall, direction); } void vala_ccode_base_module_generate_property_accessor_declaration (ValaCCodeBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space) { ValaCCodeFile* _tmp0_; ValaPropertyAccessor* _tmp1_; ValaPropertyAccessor* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gboolean _tmp5_ = FALSE; gboolean _tmp6_; ValaPropertyAccessor* _tmp7_; ValaProperty* _tmp8_; ValaProperty* _tmp9_; ValaProperty* _tmp10_; ValaProperty* prop; gboolean _tmp11_ = FALSE; ValaPropertyAccessor* _tmp12_; gboolean _tmp13_; gboolean _tmp14_; gboolean _tmp19_; gboolean returns_real_struct; ValaCCodeParameter* cvalueparam = NULL; gboolean _tmp20_; ValaPropertyAccessor* _tmp52_; ValaDataType* _tmp53_; ValaDataType* _tmp54_; ValaCCodeFile* _tmp55_; ValaCCodeFunction* function = NULL; gboolean _tmp56_ = FALSE; ValaPropertyAccessor* _tmp57_; gboolean _tmp58_; gboolean _tmp59_; gboolean _tmp61_; ValaProperty* _tmp75_; ValaMemberBinding _tmp76_; ValaMemberBinding _tmp77_; gboolean _tmp104_ = FALSE; gboolean _tmp105_ = FALSE; ValaPropertyAccessor* _tmp106_; gboolean _tmp107_; gboolean _tmp108_; gboolean _tmp112_; gboolean _tmp114_; ValaPropertyAccessor* _tmp117_; ValaDataType* _tmp118_; ValaDataType* _tmp119_; gboolean _tmp190_ = FALSE; gboolean _tmp191_ = FALSE; ValaProperty* _tmp192_; gboolean _tmp193_ = FALSE; gboolean _tmp202_; gboolean _tmp206_; ValaCCodeFile* _tmp211_; ValaCCodeFunction* _tmp212_; g_return_if_fail (self != NULL); g_return_if_fail (acc != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = acc; _tmp2_ = acc; _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_ccode_base_module_add_symbol_declaration (self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); if (_tmp6_) { return; } _tmp7_ = acc; _tmp8_ = vala_property_accessor_get_prop (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = _vala_code_node_ref0 (VALA_PROPERTY (_tmp9_)); prop = _tmp10_; _tmp12_ = acc; _tmp13_ = vala_property_accessor_get_readable (_tmp12_); _tmp14_ = _tmp13_; if (_tmp14_) { ValaProperty* _tmp15_; ValaDataType* _tmp16_; ValaDataType* _tmp17_; gboolean _tmp18_ = FALSE; _tmp15_ = prop; _tmp16_ = vala_property_get_property_type (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = vala_data_type_is_real_non_null_struct_type (_tmp17_); _tmp11_ = _tmp18_; } else { _tmp11_ = FALSE; } _tmp19_ = _tmp11_; returns_real_struct = _tmp19_; _tmp20_ = returns_real_struct; if (_tmp20_) { ValaPropertyAccessor* _tmp21_; ValaDataType* _tmp22_; ValaDataType* _tmp23_; gchar* _tmp24_ = NULL; gchar* _tmp25_; gchar* _tmp26_; gchar* _tmp27_; ValaCCodeParameter* _tmp28_; _tmp21_ = acc; _tmp22_ = vala_property_accessor_get_value_type (_tmp21_); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp23_); _tmp25_ = _tmp24_; _tmp26_ = g_strconcat (_tmp25_, "*", NULL); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_parameter_new ("result", _tmp27_); _vala_ccode_node_unref0 (cvalueparam); cvalueparam = _tmp28_; _g_free0 (_tmp27_); _g_free0 (_tmp25_); } else { gboolean _tmp29_ = FALSE; ValaPropertyAccessor* _tmp30_; gboolean _tmp31_; gboolean _tmp32_; gboolean _tmp37_; _tmp30_ = acc; _tmp31_ = vala_property_accessor_get_readable (_tmp30_); _tmp32_ = _tmp31_; if (!_tmp32_) { ValaProperty* _tmp33_; ValaDataType* _tmp34_; ValaDataType* _tmp35_; gboolean _tmp36_ = FALSE; _tmp33_ = prop; _tmp34_ = vala_property_get_property_type (_tmp33_); _tmp35_ = _tmp34_; _tmp36_ = vala_data_type_is_real_non_null_struct_type (_tmp35_); _tmp29_ = _tmp36_; } else { _tmp29_ = FALSE; } _tmp37_ = _tmp29_; if (_tmp37_) { ValaPropertyAccessor* _tmp38_; ValaDataType* _tmp39_; ValaDataType* _tmp40_; gchar* _tmp41_ = NULL; gchar* _tmp42_; gchar* _tmp43_; gchar* _tmp44_; ValaCCodeParameter* _tmp45_; _tmp38_ = acc; _tmp39_ = vala_property_accessor_get_value_type (_tmp38_); _tmp40_ = _tmp39_; _tmp41_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp40_); _tmp42_ = _tmp41_; _tmp43_ = g_strconcat (_tmp42_, "*", NULL); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_parameter_new ("value", _tmp44_); _vala_ccode_node_unref0 (cvalueparam); cvalueparam = _tmp45_; _g_free0 (_tmp44_); _g_free0 (_tmp42_); } else { ValaPropertyAccessor* _tmp46_; ValaDataType* _tmp47_; ValaDataType* _tmp48_; gchar* _tmp49_ = NULL; gchar* _tmp50_; ValaCCodeParameter* _tmp51_; _tmp46_ = acc; _tmp47_ = vala_property_accessor_get_value_type (_tmp46_); _tmp48_ = _tmp47_; _tmp49_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp48_); _tmp50_ = _tmp49_; _tmp51_ = vala_ccode_parameter_new ("value", _tmp50_); _vala_ccode_node_unref0 (cvalueparam); cvalueparam = _tmp51_; _g_free0 (_tmp50_); } } _tmp52_ = acc; _tmp53_ = vala_property_accessor_get_value_type (_tmp52_); _tmp54_ = _tmp53_; _tmp55_ = decl_space; vala_ccode_base_module_generate_type_declaration (self, _tmp54_, _tmp55_); _tmp57_ = acc; _tmp58_ = vala_property_accessor_get_readable (_tmp57_); _tmp59_ = _tmp58_; if (_tmp59_) { gboolean _tmp60_; _tmp60_ = returns_real_struct; _tmp56_ = !_tmp60_; } else { _tmp56_ = FALSE; } _tmp61_ = _tmp56_; if (_tmp61_) { ValaPropertyAccessor* _tmp62_; gchar* _tmp63_ = NULL; gchar* _tmp64_; ValaPropertyAccessor* _tmp65_; ValaDataType* _tmp66_; ValaDataType* _tmp67_; gchar* _tmp68_ = NULL; gchar* _tmp69_; ValaCCodeFunction* _tmp70_; _tmp62_ = acc; _tmp63_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp62_); _tmp64_ = _tmp63_; _tmp65_ = acc; _tmp66_ = vala_property_accessor_get_value_type (_tmp65_); _tmp67_ = _tmp66_; _tmp68_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp67_); _tmp69_ = _tmp68_; _tmp70_ = vala_ccode_function_new (_tmp64_, _tmp69_); _vala_ccode_node_unref0 (function); function = _tmp70_; _g_free0 (_tmp69_); _g_free0 (_tmp64_); } else { ValaPropertyAccessor* _tmp71_; gchar* _tmp72_ = NULL; gchar* _tmp73_; ValaCCodeFunction* _tmp74_; _tmp71_ = acc; _tmp72_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp71_); _tmp73_ = _tmp72_; _tmp74_ = vala_ccode_function_new (_tmp73_, "void"); _vala_ccode_node_unref0 (function); function = _tmp74_; _g_free0 (_tmp73_); } _tmp75_ = prop; _tmp76_ = vala_property_get_binding (_tmp75_); _tmp77_ = _tmp76_; if (_tmp77_ == VALA_MEMBER_BINDING_INSTANCE) { ValaProperty* _tmp78_; ValaSymbol* _tmp79_; ValaSymbol* _tmp80_; ValaTypeSymbol* _tmp81_; ValaTypeSymbol* t; ValaTypeSymbol* _tmp82_; ValaDataType* _tmp83_ = NULL; ValaDataType* this_type; ValaDataType* _tmp84_; ValaCCodeFile* _tmp85_; ValaDataType* _tmp86_; gchar* _tmp87_ = NULL; gchar* _tmp88_; ValaCCodeParameter* _tmp89_; ValaCCodeParameter* _tmp90_; ValaCCodeParameter* cselfparam; gboolean _tmp91_ = FALSE; ValaTypeSymbol* _tmp92_; gboolean _tmp95_; ValaCCodeFunction* _tmp102_; ValaCCodeParameter* _tmp103_; _tmp78_ = prop; _tmp79_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp78_); _tmp80_ = _tmp79_; _tmp81_ = _vala_code_node_ref0 (VALA_TYPESYMBOL (_tmp80_)); t = _tmp81_; _tmp82_ = t; _tmp83_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp82_); this_type = _tmp83_; _tmp84_ = this_type; _tmp85_ = decl_space; vala_ccode_base_module_generate_type_declaration (self, _tmp84_, _tmp85_); _tmp86_ = this_type; _tmp87_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp86_); _tmp88_ = _tmp87_; _tmp89_ = vala_ccode_parameter_new ("self", _tmp88_); _tmp90_ = _tmp89_; _g_free0 (_tmp88_); cselfparam = _tmp90_; _tmp92_ = t; if (VALA_IS_STRUCT (_tmp92_)) { ValaTypeSymbol* _tmp93_; gboolean _tmp94_ = FALSE; _tmp93_ = t; _tmp94_ = vala_struct_is_simple_type (VALA_STRUCT (_tmp93_)); _tmp91_ = !_tmp94_; } else { _tmp91_ = FALSE; } _tmp95_ = _tmp91_; if (_tmp95_) { ValaCCodeParameter* _tmp96_; ValaCCodeParameter* _tmp97_; const gchar* _tmp98_; const gchar* _tmp99_; gchar* _tmp100_; gchar* _tmp101_; _tmp96_ = cselfparam; _tmp97_ = cselfparam; _tmp98_ = vala_ccode_parameter_get_type_name (_tmp97_); _tmp99_ = _tmp98_; _tmp100_ = g_strconcat (_tmp99_, "*", NULL); _tmp101_ = _tmp100_; vala_ccode_parameter_set_type_name (_tmp97_, _tmp101_); _g_free0 (_tmp101_); } _tmp102_ = function; _tmp103_ = cselfparam; vala_ccode_function_add_parameter (_tmp102_, _tmp103_); _vala_ccode_node_unref0 (cselfparam); _vala_code_node_unref0 (this_type); _vala_code_node_unref0 (t); } _tmp106_ = acc; _tmp107_ = vala_property_accessor_get_writable (_tmp106_); _tmp108_ = _tmp107_; if (_tmp108_) { _tmp105_ = TRUE; } else { ValaPropertyAccessor* _tmp109_; gboolean _tmp110_; gboolean _tmp111_; _tmp109_ = acc; _tmp110_ = vala_property_accessor_get_construction (_tmp109_); _tmp111_ = _tmp110_; _tmp105_ = _tmp111_; } _tmp112_ = _tmp105_; if (_tmp112_) { _tmp104_ = TRUE; } else { gboolean _tmp113_; _tmp113_ = returns_real_struct; _tmp104_ = _tmp113_; } _tmp114_ = _tmp104_; if (_tmp114_) { ValaCCodeFunction* _tmp115_; ValaCCodeParameter* _tmp116_; _tmp115_ = function; _tmp116_ = cvalueparam; vala_ccode_function_add_parameter (_tmp115_, _tmp116_); } _tmp117_ = acc; _tmp118_ = vala_property_accessor_get_value_type (_tmp117_); _tmp119_ = _tmp118_; if (VALA_IS_ARRAY_TYPE (_tmp119_)) { ValaPropertyAccessor* _tmp120_; ValaDataType* _tmp121_; ValaDataType* _tmp122_; ValaArrayType* _tmp123_; ValaArrayType* array_type; gchar* _tmp124_; gchar* length_ctype; ValaPropertyAccessor* _tmp125_; gboolean _tmp126_; gboolean _tmp127_; _tmp120_ = acc; _tmp121_ = vala_property_accessor_get_value_type (_tmp120_); _tmp122_ = _tmp121_; _tmp123_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp122_)); array_type = _tmp123_; _tmp124_ = g_strdup ("int"); length_ctype = _tmp124_; _tmp125_ = acc; _tmp126_ = vala_property_accessor_get_readable (_tmp125_); _tmp127_ = _tmp126_; if (_tmp127_) { gchar* _tmp128_; _tmp128_ = g_strdup ("int*"); _g_free0 (length_ctype); length_ctype = _tmp128_; } { gint dim; dim = 1; { gboolean _tmp129_; _tmp129_ = TRUE; while (TRUE) { gboolean _tmp130_; gint _tmp132_; ValaArrayType* _tmp133_; gint _tmp134_; gint _tmp135_; const gchar* _tmp136_ = NULL; ValaPropertyAccessor* _tmp137_; gboolean _tmp138_; gboolean _tmp139_; ValaCCodeFunction* _tmp140_; const gchar* _tmp141_; gint _tmp142_; gchar* _tmp143_ = NULL; gchar* _tmp144_; const gchar* _tmp145_; ValaCCodeParameter* _tmp146_; ValaCCodeParameter* _tmp147_; _tmp130_ = _tmp129_; if (!_tmp130_) { gint _tmp131_; _tmp131_ = dim; dim = _tmp131_ + 1; } _tmp129_ = FALSE; _tmp132_ = dim; _tmp133_ = array_type; _tmp134_ = vala_array_type_get_rank (_tmp133_); _tmp135_ = _tmp134_; if (!(_tmp132_ <= _tmp135_)) { break; } _tmp137_ = acc; _tmp138_ = vala_property_accessor_get_readable (_tmp137_); _tmp139_ = _tmp138_; if (_tmp139_) { _tmp136_ = "result"; } else { _tmp136_ = "value"; } _tmp140_ = function; _tmp141_ = _tmp136_; _tmp142_ = dim; _tmp143_ = vala_ccode_base_module_get_array_length_cname (self, _tmp141_, _tmp142_); _tmp144_ = _tmp143_; _tmp145_ = length_ctype; _tmp146_ = vala_ccode_parameter_new (_tmp144_, _tmp145_); _tmp147_ = _tmp146_; vala_ccode_function_add_parameter (_tmp140_, _tmp147_); _vala_ccode_node_unref0 (_tmp147_); _g_free0 (_tmp144_); } } } _g_free0 (length_ctype); _vala_code_node_unref0 (array_type); } else { gboolean _tmp148_ = FALSE; ValaPropertyAccessor* _tmp149_; ValaDataType* _tmp150_; ValaDataType* _tmp151_; gboolean _tmp159_; _tmp149_ = acc; _tmp150_ = vala_property_accessor_get_value_type (_tmp149_); _tmp151_ = _tmp150_; if (VALA_IS_DELEGATE_TYPE (_tmp151_)) { ValaPropertyAccessor* _tmp152_; ValaDataType* _tmp153_; ValaDataType* _tmp154_; ValaDelegate* _tmp155_; ValaDelegate* _tmp156_; gboolean _tmp157_; gboolean _tmp158_; _tmp152_ = acc; _tmp153_ = vala_property_accessor_get_value_type (_tmp152_); _tmp154_ = _tmp153_; _tmp155_ = vala_delegate_type_get_delegate_symbol (VALA_DELEGATE_TYPE (_tmp154_)); _tmp156_ = _tmp155_; _tmp157_ = vala_delegate_get_has_target (_tmp156_); _tmp158_ = _tmp157_; _tmp148_ = _tmp158_; } else { _tmp148_ = FALSE; } _tmp159_ = _tmp148_; if (_tmp159_) { const gchar* _tmp160_ = NULL; ValaPropertyAccessor* _tmp161_; gboolean _tmp162_; gboolean _tmp163_; const gchar* _tmp164_ = NULL; ValaPropertyAccessor* _tmp165_; gboolean _tmp166_; gboolean _tmp167_; ValaCCodeFunction* _tmp168_; const gchar* _tmp169_; gchar* _tmp170_ = NULL; gchar* _tmp171_; const gchar* _tmp172_; ValaCCodeParameter* _tmp173_; ValaCCodeParameter* _tmp174_; gboolean _tmp175_ = FALSE; ValaPropertyAccessor* _tmp176_; gboolean _tmp177_; gboolean _tmp178_; gboolean _tmp184_; _tmp161_ = acc; _tmp162_ = vala_property_accessor_get_readable (_tmp161_); _tmp163_ = _tmp162_; if (_tmp163_) { _tmp160_ = "result"; } else { _tmp160_ = "value"; } _tmp165_ = acc; _tmp166_ = vala_property_accessor_get_readable (_tmp165_); _tmp167_ = _tmp166_; if (_tmp167_) { _tmp164_ = "gpointer*"; } else { _tmp164_ = "gpointer"; } _tmp168_ = function; _tmp169_ = _tmp160_; _tmp170_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp169_); _tmp171_ = _tmp170_; _tmp172_ = _tmp164_; _tmp173_ = vala_ccode_parameter_new (_tmp171_, _tmp172_); _tmp174_ = _tmp173_; vala_ccode_function_add_parameter (_tmp168_, _tmp174_); _vala_ccode_node_unref0 (_tmp174_); _g_free0 (_tmp171_); _tmp176_ = acc; _tmp177_ = vala_property_accessor_get_readable (_tmp176_); _tmp178_ = _tmp177_; if (!_tmp178_) { ValaPropertyAccessor* _tmp179_; ValaDataType* _tmp180_; ValaDataType* _tmp181_; gboolean _tmp182_; gboolean _tmp183_; _tmp179_ = acc; _tmp180_ = vala_property_accessor_get_value_type (_tmp179_); _tmp181_ = _tmp180_; _tmp182_ = vala_data_type_get_value_owned (_tmp181_); _tmp183_ = _tmp182_; _tmp175_ = _tmp183_; } else { _tmp175_ = FALSE; } _tmp184_ = _tmp175_; if (_tmp184_) { ValaCCodeFunction* _tmp185_; gchar* _tmp186_ = NULL; gchar* _tmp187_; ValaCCodeParameter* _tmp188_; ValaCCodeParameter* _tmp189_; _tmp185_ = function; _tmp186_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value"); _tmp187_ = _tmp186_; _tmp188_ = vala_ccode_parameter_new (_tmp187_, "GDestroyNotify"); _tmp189_ = _tmp188_; vala_ccode_function_add_parameter (_tmp185_, _tmp189_); _vala_ccode_node_unref0 (_tmp189_); _g_free0 (_tmp187_); } } } _tmp192_ = prop; _tmp193_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp192_); if (_tmp193_) { _tmp191_ = TRUE; } else { gboolean _tmp194_ = FALSE; ValaPropertyAccessor* _tmp195_; gboolean _tmp196_; gboolean _tmp197_; gboolean _tmp201_; _tmp195_ = acc; _tmp196_ = vala_property_accessor_get_readable (_tmp195_); _tmp197_ = _tmp196_; if (!_tmp197_) { ValaPropertyAccessor* _tmp198_; gboolean _tmp199_; gboolean _tmp200_; _tmp198_ = acc; _tmp199_ = vala_property_accessor_get_writable (_tmp198_); _tmp200_ = _tmp199_; _tmp194_ = !_tmp200_; } else { _tmp194_ = FALSE; } _tmp201_ = _tmp194_; _tmp191_ = _tmp201_; } _tmp202_ = _tmp191_; if (_tmp202_) { _tmp190_ = TRUE; } else { ValaPropertyAccessor* _tmp203_; ValaSymbolAccessibility _tmp204_; ValaSymbolAccessibility _tmp205_; _tmp203_ = acc; _tmp204_ = vala_symbol_get_access ((ValaSymbol*) _tmp203_); _tmp205_ = _tmp204_; _tmp190_ = _tmp205_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE; } _tmp206_ = _tmp190_; if (_tmp206_) { ValaCCodeFunction* _tmp207_; ValaCCodeFunction* _tmp208_; ValaCCodeModifiers _tmp209_; ValaCCodeModifiers _tmp210_; _tmp207_ = function; _tmp208_ = function; _tmp209_ = vala_ccode_function_get_modifiers (_tmp208_); _tmp210_ = _tmp209_; vala_ccode_function_set_modifiers (_tmp208_, _tmp210_ | VALA_CCODE_MODIFIERS_STATIC); } _tmp211_ = decl_space; _tmp212_ = function; vala_ccode_file_add_function_declaration (_tmp211_, _tmp212_); _vala_ccode_node_unref0 (function); _vala_ccode_node_unref0 (cvalueparam); _vala_code_node_unref0 (prop); } static void vala_ccode_base_module_real_visit_property_accessor (ValaCodeVisitor* base, ValaPropertyAccessor* acc) { ValaCCodeBaseModule * self; ValaPropertyAccessor* _tmp0_; ValaCCodeBaseModuleEmitContext* _tmp1_; ValaCCodeBaseModuleEmitContext* _tmp2_; ValaPropertyAccessor* _tmp3_; ValaSourceReference* _tmp4_; ValaSourceReference* _tmp5_; ValaPropertyAccessor* _tmp6_; ValaProperty* _tmp7_; ValaProperty* _tmp8_; ValaProperty* _tmp9_; ValaProperty* prop; ValaPropertyAccessor* _tmp10_; ValaComment* _tmp11_; ValaComment* _tmp12_; gboolean _tmp21_ = FALSE; ValaPropertyAccessor* _tmp22_; gboolean _tmp23_; gboolean _tmp24_; gboolean _tmp29_; gboolean returns_real_struct; ValaPropertyAccessor* _tmp30_; ValaLocalVariable* _tmp31_; ValaLocalVariable* _tmp32_; ValaProperty* _tmp36_; ValaSymbol* _tmp37_; ValaSymbol* _tmp38_; ValaTypeSymbol* _tmp39_; ValaTypeSymbol* t; gboolean _tmp40_ = FALSE; ValaPropertyAccessor* _tmp41_; gboolean _tmp42_; gboolean _tmp43_; gboolean _tmp47_; gboolean _tmp63_ = FALSE; gboolean _tmp64_ = FALSE; ValaProperty* _tmp65_; gboolean _tmp66_; gboolean _tmp67_; gboolean _tmp71_; gboolean _tmp80_; ValaPropertyAccessor* _tmp114_; ValaSourceFileType _tmp115_; ValaSourceFileType _tmp116_; ValaTypeSymbol* _tmp117_; ValaDataType* _tmp118_ = NULL; ValaDataType* this_type; ValaDataType* _tmp119_; gchar* _tmp120_ = NULL; gchar* _tmp121_; ValaCCodeParameter* _tmp122_; ValaCCodeParameter* _tmp123_; ValaCCodeParameter* cselfparam; gboolean _tmp124_ = FALSE; ValaTypeSymbol* _tmp125_; gboolean _tmp128_; ValaCCodeParameter* cvalueparam = NULL; gboolean _tmp135_; gboolean _tmp167_ = FALSE; ValaProperty* _tmp168_; gboolean _tmp169_; gboolean _tmp170_; gboolean _tmp174_; ValaProperty* _tmp484_; gboolean _tmp485_; gboolean _tmp486_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (acc != NULL); _tmp0_ = acc; _tmp1_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; vala_ccode_base_module_push_context (self, _tmp2_); _vala_ccode_base_module_emit_context_unref0 (_tmp2_); _tmp3_ = acc; _tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_); _tmp5_ = _tmp4_; vala_ccode_base_module_push_line (self, _tmp5_); _tmp6_ = acc; _tmp7_ = vala_property_accessor_get_prop (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = _vala_code_node_ref0 (VALA_PROPERTY (_tmp8_)); prop = _tmp9_; _tmp10_ = acc; _tmp11_ = vala_symbol_get_comment ((ValaSymbol*) _tmp10_); _tmp12_ = _tmp11_; if (_tmp12_ != NULL) { ValaCCodeFile* _tmp13_; ValaPropertyAccessor* _tmp14_; ValaComment* _tmp15_; ValaComment* _tmp16_; const gchar* _tmp17_; const gchar* _tmp18_; ValaCCodeComment* _tmp19_; ValaCCodeComment* _tmp20_; _tmp13_ = self->cfile; _tmp14_ = acc; _tmp15_ = vala_symbol_get_comment ((ValaSymbol*) _tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_comment_get_content (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = vala_ccode_comment_new (_tmp18_); _tmp20_ = _tmp19_; vala_ccode_file_add_type_member_definition (_tmp13_, (ValaCCodeNode*) _tmp20_); _vala_ccode_node_unref0 (_tmp20_); } _tmp22_ = acc; _tmp23_ = vala_property_accessor_get_readable (_tmp22_); _tmp24_ = _tmp23_; if (_tmp24_) { ValaProperty* _tmp25_; ValaDataType* _tmp26_; ValaDataType* _tmp27_; gboolean _tmp28_ = FALSE; _tmp25_ = prop; _tmp26_ = vala_property_get_property_type (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = vala_data_type_is_real_non_null_struct_type (_tmp27_); _tmp21_ = _tmp28_; } else { _tmp21_ = FALSE; } _tmp29_ = _tmp21_; returns_real_struct = _tmp29_; _tmp30_ = acc; _tmp31_ = vala_subroutine_get_result_var ((ValaSubroutine*) _tmp30_); _tmp32_ = _tmp31_; if (_tmp32_ != NULL) { ValaPropertyAccessor* _tmp33_; ValaLocalVariable* _tmp34_; ValaLocalVariable* _tmp35_; _tmp33_ = acc; _tmp34_ = vala_subroutine_get_result_var ((ValaSubroutine*) _tmp33_); _tmp35_ = _tmp34_; vala_code_node_accept ((ValaCodeNode*) _tmp35_, (ValaCodeVisitor*) self); } _tmp36_ = prop; _tmp37_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp36_); _tmp38_ = _tmp37_; _tmp39_ = _vala_code_node_ref0 (VALA_TYPESYMBOL (_tmp38_)); t = _tmp39_; _tmp41_ = acc; _tmp42_ = vala_property_accessor_get_construction (_tmp41_); _tmp43_ = _tmp42_; if (_tmp43_) { ValaTypeSymbol* _tmp44_; ValaTypeSymbol* _tmp45_; gboolean _tmp46_ = FALSE; _tmp44_ = t; _tmp45_ = self->gobject_type; _tmp46_ = vala_typesymbol_is_subtype_of (_tmp44_, _tmp45_); _tmp40_ = !_tmp46_; } else { _tmp40_ = FALSE; } _tmp47_ = _tmp40_; if (_tmp47_) { ValaPropertyAccessor* _tmp48_; ValaSourceReference* _tmp49_; ValaSourceReference* _tmp50_; ValaPropertyAccessor* _tmp51_; _tmp48_ = acc; _tmp49_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp48_); _tmp50_ = _tmp49_; vala_report_error (_tmp50_, "construct properties require GLib.Object"); _tmp51_ = acc; vala_code_node_set_error ((ValaCodeNode*) _tmp51_, TRUE); _vala_code_node_unref0 (t); _vala_code_node_unref0 (prop); return; } else { gboolean _tmp52_ = FALSE; ValaPropertyAccessor* _tmp53_; gboolean _tmp54_; gboolean _tmp55_; gboolean _tmp58_; _tmp53_ = acc; _tmp54_ = vala_property_accessor_get_construction (_tmp53_); _tmp55_ = _tmp54_; if (_tmp55_) { ValaProperty* _tmp56_; gboolean _tmp57_ = FALSE; _tmp56_ = prop; _tmp57_ = vala_ccode_base_module_is_gobject_property (self, _tmp56_); _tmp52_ = !_tmp57_; } else { _tmp52_ = FALSE; } _tmp58_ = _tmp52_; if (_tmp58_) { ValaPropertyAccessor* _tmp59_; ValaSourceReference* _tmp60_; ValaSourceReference* _tmp61_; ValaPropertyAccessor* _tmp62_; _tmp59_ = acc; _tmp60_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp59_); _tmp61_ = _tmp60_; vala_report_error (_tmp61_, "construct properties not supported for specified property type"); _tmp62_ = acc; vala_code_node_set_error ((ValaCodeNode*) _tmp62_, TRUE); _vala_code_node_unref0 (t); _vala_code_node_unref0 (prop); return; } } _tmp65_ = prop; _tmp66_ = vala_property_get_is_abstract (_tmp65_); _tmp67_ = _tmp66_; if (_tmp67_) { _tmp64_ = TRUE; } else { ValaProperty* _tmp68_; gboolean _tmp69_; gboolean _tmp70_; _tmp68_ = prop; _tmp69_ = vala_property_get_is_virtual (_tmp68_); _tmp70_ = _tmp69_; _tmp64_ = _tmp70_; } _tmp71_ = _tmp64_; if (_tmp71_) { _tmp63_ = TRUE; } else { gboolean _tmp72_ = FALSE; ValaProperty* _tmp73_; ValaProperty* _tmp74_; ValaProperty* _tmp75_; gboolean _tmp79_; _tmp73_ = prop; _tmp74_ = vala_property_get_base_property (_tmp73_); _tmp75_ = _tmp74_; if (_tmp75_ == NULL) { ValaProperty* _tmp76_; ValaProperty* _tmp77_; ValaProperty* _tmp78_; _tmp76_ = prop; _tmp77_ = vala_property_get_base_interface_property (_tmp76_); _tmp78_ = _tmp77_; _tmp72_ = _tmp78_ == NULL; } else { _tmp72_ = FALSE; } _tmp79_ = _tmp72_; _tmp63_ = _tmp79_; } _tmp80_ = _tmp63_; if (_tmp80_) { ValaPropertyAccessor* _tmp81_; ValaCCodeFile* _tmp82_; gboolean _tmp83_ = FALSE; ValaPropertyAccessor* _tmp84_; gboolean _tmp85_; gboolean _tmp86_; gboolean _tmp90_; _tmp81_ = acc; _tmp82_ = self->cfile; vala_ccode_base_module_generate_property_accessor_declaration (self, _tmp81_, _tmp82_); _tmp84_ = acc; _tmp85_ = vala_property_accessor_get_readable (_tmp84_); _tmp86_ = _tmp85_; if (_tmp86_) { _tmp83_ = TRUE; } else { ValaPropertyAccessor* _tmp87_; gboolean _tmp88_; gboolean _tmp89_; _tmp87_ = acc; _tmp88_ = vala_property_accessor_get_writable (_tmp87_); _tmp89_ = _tmp88_; _tmp83_ = _tmp89_; } _tmp90_ = _tmp83_; if (_tmp90_) { gboolean _tmp91_ = FALSE; ValaProperty* _tmp92_; gboolean _tmp93_ = FALSE; gboolean _tmp102_; gboolean _tmp105_ = FALSE; ValaProperty* _tmp106_; gboolean _tmp107_ = FALSE; gboolean _tmp111_; _tmp92_ = prop; _tmp93_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp92_); if (!_tmp93_) { gboolean _tmp94_ = FALSE; ValaPropertyAccessor* _tmp95_; ValaSymbolAccessibility _tmp96_; ValaSymbolAccessibility _tmp97_; gboolean _tmp101_; _tmp95_ = acc; _tmp96_ = vala_symbol_get_access ((ValaSymbol*) _tmp95_); _tmp97_ = _tmp96_; if (_tmp97_ == VALA_SYMBOL_ACCESSIBILITY_PUBLIC) { _tmp94_ = TRUE; } else { ValaPropertyAccessor* _tmp98_; ValaSymbolAccessibility _tmp99_; ValaSymbolAccessibility _tmp100_; _tmp98_ = acc; _tmp99_ = vala_symbol_get_access ((ValaSymbol*) _tmp98_); _tmp100_ = _tmp99_; _tmp94_ = _tmp100_ == VALA_SYMBOL_ACCESSIBILITY_PROTECTED; } _tmp101_ = _tmp94_; _tmp91_ = _tmp101_; } else { _tmp91_ = FALSE; } _tmp102_ = _tmp91_; if (_tmp102_) { ValaPropertyAccessor* _tmp103_; ValaCCodeFile* _tmp104_; _tmp103_ = acc; _tmp104_ = self->header_file; vala_ccode_base_module_generate_property_accessor_declaration (self, _tmp103_, _tmp104_); } _tmp106_ = prop; _tmp107_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp106_); if (!_tmp107_) { ValaPropertyAccessor* _tmp108_; ValaSymbolAccessibility _tmp109_; ValaSymbolAccessibility _tmp110_; _tmp108_ = acc; _tmp109_ = vala_symbol_get_access ((ValaSymbol*) _tmp108_); _tmp110_ = _tmp109_; _tmp105_ = _tmp110_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE; } else { _tmp105_ = FALSE; } _tmp111_ = _tmp105_; if (_tmp111_) { ValaPropertyAccessor* _tmp112_; ValaCCodeFile* _tmp113_; _tmp112_ = acc; _tmp113_ = self->internal_header_file; vala_ccode_base_module_generate_property_accessor_declaration (self, _tmp112_, _tmp113_); } } } _tmp114_ = acc; _tmp115_ = vala_symbol_get_source_type ((ValaSymbol*) _tmp114_); _tmp116_ = _tmp115_; if (_tmp116_ == VALA_SOURCE_FILE_TYPE_FAST) { vala_ccode_base_module_pop_line (self); _vala_code_node_unref0 (t); _vala_code_node_unref0 (prop); return; } _tmp117_ = t; _tmp118_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp117_); this_type = _tmp118_; _tmp119_ = this_type; _tmp120_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp119_); _tmp121_ = _tmp120_; _tmp122_ = vala_ccode_parameter_new ("self", _tmp121_); _tmp123_ = _tmp122_; _g_free0 (_tmp121_); cselfparam = _tmp123_; _tmp125_ = t; if (VALA_IS_STRUCT (_tmp125_)) { ValaTypeSymbol* _tmp126_; gboolean _tmp127_ = FALSE; _tmp126_ = t; _tmp127_ = vala_struct_is_simple_type (VALA_STRUCT (_tmp126_)); _tmp124_ = !_tmp127_; } else { _tmp124_ = FALSE; } _tmp128_ = _tmp124_; if (_tmp128_) { ValaCCodeParameter* _tmp129_; ValaCCodeParameter* _tmp130_; const gchar* _tmp131_; const gchar* _tmp132_; gchar* _tmp133_; gchar* _tmp134_; _tmp129_ = cselfparam; _tmp130_ = cselfparam; _tmp131_ = vala_ccode_parameter_get_type_name (_tmp130_); _tmp132_ = _tmp131_; _tmp133_ = g_strconcat (_tmp132_, "*", NULL); _tmp134_ = _tmp133_; vala_ccode_parameter_set_type_name (_tmp130_, _tmp134_); _g_free0 (_tmp134_); } _tmp135_ = returns_real_struct; if (_tmp135_) { ValaPropertyAccessor* _tmp136_; ValaDataType* _tmp137_; ValaDataType* _tmp138_; gchar* _tmp139_ = NULL; gchar* _tmp140_; gchar* _tmp141_; gchar* _tmp142_; ValaCCodeParameter* _tmp143_; _tmp136_ = acc; _tmp137_ = vala_property_accessor_get_value_type (_tmp136_); _tmp138_ = _tmp137_; _tmp139_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp138_); _tmp140_ = _tmp139_; _tmp141_ = g_strconcat (_tmp140_, "*", NULL); _tmp142_ = _tmp141_; _tmp143_ = vala_ccode_parameter_new ("result", _tmp142_); _vala_ccode_node_unref0 (cvalueparam); cvalueparam = _tmp143_; _g_free0 (_tmp142_); _g_free0 (_tmp140_); } else { gboolean _tmp144_ = FALSE; ValaPropertyAccessor* _tmp145_; gboolean _tmp146_; gboolean _tmp147_; gboolean _tmp152_; _tmp145_ = acc; _tmp146_ = vala_property_accessor_get_readable (_tmp145_); _tmp147_ = _tmp146_; if (!_tmp147_) { ValaProperty* _tmp148_; ValaDataType* _tmp149_; ValaDataType* _tmp150_; gboolean _tmp151_ = FALSE; _tmp148_ = prop; _tmp149_ = vala_property_get_property_type (_tmp148_); _tmp150_ = _tmp149_; _tmp151_ = vala_data_type_is_real_non_null_struct_type (_tmp150_); _tmp144_ = _tmp151_; } else { _tmp144_ = FALSE; } _tmp152_ = _tmp144_; if (_tmp152_) { ValaPropertyAccessor* _tmp153_; ValaDataType* _tmp154_; ValaDataType* _tmp155_; gchar* _tmp156_ = NULL; gchar* _tmp157_; gchar* _tmp158_; gchar* _tmp159_; ValaCCodeParameter* _tmp160_; _tmp153_ = acc; _tmp154_ = vala_property_accessor_get_value_type (_tmp153_); _tmp155_ = _tmp154_; _tmp156_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp155_); _tmp157_ = _tmp156_; _tmp158_ = g_strconcat (_tmp157_, "*", NULL); _tmp159_ = _tmp158_; _tmp160_ = vala_ccode_parameter_new ("value", _tmp159_); _vala_ccode_node_unref0 (cvalueparam); cvalueparam = _tmp160_; _g_free0 (_tmp159_); _g_free0 (_tmp157_); } else { ValaPropertyAccessor* _tmp161_; ValaDataType* _tmp162_; ValaDataType* _tmp163_; gchar* _tmp164_ = NULL; gchar* _tmp165_; ValaCCodeParameter* _tmp166_; _tmp161_ = acc; _tmp162_ = vala_property_accessor_get_value_type (_tmp161_); _tmp163_ = _tmp162_; _tmp164_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp163_); _tmp165_ = _tmp164_; _tmp166_ = vala_ccode_parameter_new ("value", _tmp165_); _vala_ccode_node_unref0 (cvalueparam); cvalueparam = _tmp166_; _g_free0 (_tmp165_); } } _tmp168_ = prop; _tmp169_ = vala_property_get_is_abstract (_tmp168_); _tmp170_ = _tmp169_; if (_tmp170_) { _tmp167_ = TRUE; } else { ValaProperty* _tmp171_; gboolean _tmp172_; gboolean _tmp173_; _tmp171_ = prop; _tmp172_ = vala_property_get_is_virtual (_tmp171_); _tmp173_ = _tmp172_; _tmp167_ = _tmp173_; } _tmp174_ = _tmp167_; if (_tmp174_) { ValaCCodeFunction* function = NULL; gboolean _tmp175_ = FALSE; ValaPropertyAccessor* _tmp176_; gboolean _tmp177_; gboolean _tmp178_; gboolean _tmp180_; ValaCCodeFunction* _tmp193_; ValaCCodeParameter* _tmp194_; gboolean _tmp195_ = FALSE; gboolean _tmp196_ = FALSE; ValaPropertyAccessor* _tmp197_; gboolean _tmp198_; gboolean _tmp199_; gboolean _tmp203_; gboolean _tmp205_; ValaPropertyAccessor* _tmp208_; ValaDataType* _tmp209_; ValaDataType* _tmp210_; gboolean _tmp281_ = FALSE; gboolean _tmp282_ = FALSE; ValaProperty* _tmp283_; gboolean _tmp284_ = FALSE; gboolean _tmp293_; gboolean _tmp297_; ValaCCodeFunction* _tmp302_; ValaProperty* _tmp303_; ValaMemberBinding _tmp304_; ValaMemberBinding _tmp305_; ValaCCodeFunctionCall* vcast; ValaProperty* _tmp316_; ValaSymbol* _tmp317_; ValaSymbol* _tmp318_; ValaCCodeFunctionCall* _tmp343_; ValaCCodeIdentifier* _tmp344_; ValaCCodeIdentifier* _tmp345_; ValaPropertyAccessor* _tmp346_; gboolean _tmp347_; gboolean _tmp348_; ValaCCodeFile* _tmp482_; ValaCCodeFunction* _tmp483_; _tmp176_ = acc; _tmp177_ = vala_property_accessor_get_readable (_tmp176_); _tmp178_ = _tmp177_; if (_tmp178_) { gboolean _tmp179_; _tmp179_ = returns_real_struct; _tmp175_ = !_tmp179_; } else { _tmp175_ = FALSE; } _tmp180_ = _tmp175_; if (_tmp180_) { ValaPropertyAccessor* _tmp181_; gchar* _tmp182_ = NULL; gchar* _tmp183_; ValaDataType* _tmp184_; ValaDataType* _tmp185_; gchar* _tmp186_ = NULL; gchar* _tmp187_; ValaCCodeFunction* _tmp188_; _tmp181_ = acc; _tmp182_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp181_); _tmp183_ = _tmp182_; _tmp184_ = vala_ccode_base_module_get_current_return_type (self); _tmp185_ = _tmp184_; _tmp186_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp185_); _tmp187_ = _tmp186_; _tmp188_ = vala_ccode_function_new (_tmp183_, _tmp187_); _vala_ccode_node_unref0 (function); function = _tmp188_; _g_free0 (_tmp187_); _g_free0 (_tmp183_); } else { ValaPropertyAccessor* _tmp189_; gchar* _tmp190_ = NULL; gchar* _tmp191_; ValaCCodeFunction* _tmp192_; _tmp189_ = acc; _tmp190_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp189_); _tmp191_ = _tmp190_; _tmp192_ = vala_ccode_function_new (_tmp191_, "void"); _vala_ccode_node_unref0 (function); function = _tmp192_; _g_free0 (_tmp191_); } _tmp193_ = function; _tmp194_ = cselfparam; vala_ccode_function_add_parameter (_tmp193_, _tmp194_); _tmp197_ = acc; _tmp198_ = vala_property_accessor_get_writable (_tmp197_); _tmp199_ = _tmp198_; if (_tmp199_) { _tmp196_ = TRUE; } else { ValaPropertyAccessor* _tmp200_; gboolean _tmp201_; gboolean _tmp202_; _tmp200_ = acc; _tmp201_ = vala_property_accessor_get_construction (_tmp200_); _tmp202_ = _tmp201_; _tmp196_ = _tmp202_; } _tmp203_ = _tmp196_; if (_tmp203_) { _tmp195_ = TRUE; } else { gboolean _tmp204_; _tmp204_ = returns_real_struct; _tmp195_ = _tmp204_; } _tmp205_ = _tmp195_; if (_tmp205_) { ValaCCodeFunction* _tmp206_; ValaCCodeParameter* _tmp207_; _tmp206_ = function; _tmp207_ = cvalueparam; vala_ccode_function_add_parameter (_tmp206_, _tmp207_); } _tmp208_ = acc; _tmp209_ = vala_property_accessor_get_value_type (_tmp208_); _tmp210_ = _tmp209_; if (VALA_IS_ARRAY_TYPE (_tmp210_)) { ValaPropertyAccessor* _tmp211_; ValaDataType* _tmp212_; ValaDataType* _tmp213_; ValaArrayType* _tmp214_; ValaArrayType* array_type; gchar* _tmp215_; gchar* length_ctype; ValaPropertyAccessor* _tmp216_; gboolean _tmp217_; gboolean _tmp218_; _tmp211_ = acc; _tmp212_ = vala_property_accessor_get_value_type (_tmp211_); _tmp213_ = _tmp212_; _tmp214_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp213_)); array_type = _tmp214_; _tmp215_ = g_strdup ("int"); length_ctype = _tmp215_; _tmp216_ = acc; _tmp217_ = vala_property_accessor_get_readable (_tmp216_); _tmp218_ = _tmp217_; if (_tmp218_) { gchar* _tmp219_; _tmp219_ = g_strdup ("int*"); _g_free0 (length_ctype); length_ctype = _tmp219_; } { gint dim; dim = 1; { gboolean _tmp220_; _tmp220_ = TRUE; while (TRUE) { gboolean _tmp221_; gint _tmp223_; ValaArrayType* _tmp224_; gint _tmp225_; gint _tmp226_; const gchar* _tmp227_ = NULL; ValaPropertyAccessor* _tmp228_; gboolean _tmp229_; gboolean _tmp230_; ValaCCodeFunction* _tmp231_; const gchar* _tmp232_; gint _tmp233_; gchar* _tmp234_ = NULL; gchar* _tmp235_; const gchar* _tmp236_; ValaCCodeParameter* _tmp237_; ValaCCodeParameter* _tmp238_; _tmp221_ = _tmp220_; if (!_tmp221_) { gint _tmp222_; _tmp222_ = dim; dim = _tmp222_ + 1; } _tmp220_ = FALSE; _tmp223_ = dim; _tmp224_ = array_type; _tmp225_ = vala_array_type_get_rank (_tmp224_); _tmp226_ = _tmp225_; if (!(_tmp223_ <= _tmp226_)) { break; } _tmp228_ = acc; _tmp229_ = vala_property_accessor_get_readable (_tmp228_); _tmp230_ = _tmp229_; if (_tmp230_) { _tmp227_ = "result"; } else { _tmp227_ = "value"; } _tmp231_ = function; _tmp232_ = _tmp227_; _tmp233_ = dim; _tmp234_ = vala_ccode_base_module_get_array_length_cname (self, _tmp232_, _tmp233_); _tmp235_ = _tmp234_; _tmp236_ = length_ctype; _tmp237_ = vala_ccode_parameter_new (_tmp235_, _tmp236_); _tmp238_ = _tmp237_; vala_ccode_function_add_parameter (_tmp231_, _tmp238_); _vala_ccode_node_unref0 (_tmp238_); _g_free0 (_tmp235_); } } } _g_free0 (length_ctype); _vala_code_node_unref0 (array_type); } else { gboolean _tmp239_ = FALSE; ValaPropertyAccessor* _tmp240_; ValaDataType* _tmp241_; ValaDataType* _tmp242_; gboolean _tmp250_; _tmp240_ = acc; _tmp241_ = vala_property_accessor_get_value_type (_tmp240_); _tmp242_ = _tmp241_; if (VALA_IS_DELEGATE_TYPE (_tmp242_)) { ValaPropertyAccessor* _tmp243_; ValaDataType* _tmp244_; ValaDataType* _tmp245_; ValaDelegate* _tmp246_; ValaDelegate* _tmp247_; gboolean _tmp248_; gboolean _tmp249_; _tmp243_ = acc; _tmp244_ = vala_property_accessor_get_value_type (_tmp243_); _tmp245_ = _tmp244_; _tmp246_ = vala_delegate_type_get_delegate_symbol (VALA_DELEGATE_TYPE (_tmp245_)); _tmp247_ = _tmp246_; _tmp248_ = vala_delegate_get_has_target (_tmp247_); _tmp249_ = _tmp248_; _tmp239_ = _tmp249_; } else { _tmp239_ = FALSE; } _tmp250_ = _tmp239_; if (_tmp250_) { const gchar* _tmp251_ = NULL; ValaPropertyAccessor* _tmp252_; gboolean _tmp253_; gboolean _tmp254_; const gchar* _tmp255_ = NULL; ValaPropertyAccessor* _tmp256_; gboolean _tmp257_; gboolean _tmp258_; ValaCCodeFunction* _tmp259_; const gchar* _tmp260_; gchar* _tmp261_ = NULL; gchar* _tmp262_; const gchar* _tmp263_; ValaCCodeParameter* _tmp264_; ValaCCodeParameter* _tmp265_; gboolean _tmp266_ = FALSE; ValaPropertyAccessor* _tmp267_; gboolean _tmp268_; gboolean _tmp269_; gboolean _tmp275_; _tmp252_ = acc; _tmp253_ = vala_property_accessor_get_readable (_tmp252_); _tmp254_ = _tmp253_; if (_tmp254_) { _tmp251_ = "result"; } else { _tmp251_ = "value"; } _tmp256_ = acc; _tmp257_ = vala_property_accessor_get_readable (_tmp256_); _tmp258_ = _tmp257_; if (_tmp258_) { _tmp255_ = "gpointer*"; } else { _tmp255_ = "gpointer"; } _tmp259_ = function; _tmp260_ = _tmp251_; _tmp261_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp260_); _tmp262_ = _tmp261_; _tmp263_ = _tmp255_; _tmp264_ = vala_ccode_parameter_new (_tmp262_, _tmp263_); _tmp265_ = _tmp264_; vala_ccode_function_add_parameter (_tmp259_, _tmp265_); _vala_ccode_node_unref0 (_tmp265_); _g_free0 (_tmp262_); _tmp267_ = acc; _tmp268_ = vala_property_accessor_get_readable (_tmp267_); _tmp269_ = _tmp268_; if (!_tmp269_) { ValaPropertyAccessor* _tmp270_; ValaDataType* _tmp271_; ValaDataType* _tmp272_; gboolean _tmp273_; gboolean _tmp274_; _tmp270_ = acc; _tmp271_ = vala_property_accessor_get_value_type (_tmp270_); _tmp272_ = _tmp271_; _tmp273_ = vala_data_type_get_value_owned (_tmp272_); _tmp274_ = _tmp273_; _tmp266_ = _tmp274_; } else { _tmp266_ = FALSE; } _tmp275_ = _tmp266_; if (_tmp275_) { ValaCCodeFunction* _tmp276_; gchar* _tmp277_ = NULL; gchar* _tmp278_; ValaCCodeParameter* _tmp279_; ValaCCodeParameter* _tmp280_; _tmp276_ = function; _tmp277_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value"); _tmp278_ = _tmp277_; _tmp279_ = vala_ccode_parameter_new (_tmp278_, "GDestroyNotify"); _tmp280_ = _tmp279_; vala_ccode_function_add_parameter (_tmp276_, _tmp280_); _vala_ccode_node_unref0 (_tmp280_); _g_free0 (_tmp278_); } } } _tmp283_ = prop; _tmp284_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp283_); if (_tmp284_) { _tmp282_ = TRUE; } else { gboolean _tmp285_ = FALSE; ValaPropertyAccessor* _tmp286_; gboolean _tmp287_; gboolean _tmp288_; gboolean _tmp292_; _tmp286_ = acc; _tmp287_ = vala_property_accessor_get_readable (_tmp286_); _tmp288_ = _tmp287_; if (_tmp288_) { _tmp285_ = TRUE; } else { ValaPropertyAccessor* _tmp289_; gboolean _tmp290_; gboolean _tmp291_; _tmp289_ = acc; _tmp290_ = vala_property_accessor_get_writable (_tmp289_); _tmp291_ = _tmp290_; _tmp285_ = _tmp291_; } _tmp292_ = _tmp285_; _tmp282_ = !_tmp292_; } _tmp293_ = _tmp282_; if (_tmp293_) { _tmp281_ = TRUE; } else { ValaPropertyAccessor* _tmp294_; ValaSymbolAccessibility _tmp295_; ValaSymbolAccessibility _tmp296_; _tmp294_ = acc; _tmp295_ = vala_symbol_get_access ((ValaSymbol*) _tmp294_); _tmp296_ = _tmp295_; _tmp281_ = _tmp296_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE; } _tmp297_ = _tmp281_; if (_tmp297_) { ValaCCodeFunction* _tmp298_; ValaCCodeFunction* _tmp299_; ValaCCodeModifiers _tmp300_; ValaCCodeModifiers _tmp301_; _tmp298_ = function; _tmp299_ = function; _tmp300_ = vala_ccode_function_get_modifiers (_tmp299_); _tmp301_ = _tmp300_; vala_ccode_function_set_modifiers (_tmp299_, _tmp301_ | VALA_CCODE_MODIFIERS_STATIC); } _tmp302_ = function; vala_ccode_base_module_push_function (self, _tmp302_); _tmp303_ = prop; _tmp304_ = vala_property_get_binding (_tmp303_); _tmp305_ = _tmp304_; if (_tmp305_ == VALA_MEMBER_BINDING_INSTANCE) { gboolean _tmp306_ = FALSE; ValaPropertyAccessor* _tmp307_; gboolean _tmp308_; gboolean _tmp309_; gboolean _tmp311_; _tmp307_ = acc; _tmp308_ = vala_property_accessor_get_readable (_tmp307_); _tmp309_ = _tmp308_; if (!_tmp309_) { _tmp306_ = TRUE; } else { gboolean _tmp310_; _tmp310_ = returns_real_struct; _tmp306_ = _tmp310_; } _tmp311_ = _tmp306_; if (_tmp311_) { ValaProperty* _tmp312_; ValaTypeSymbol* _tmp313_; _tmp312_ = prop; _tmp313_ = t; vala_ccode_base_module_create_property_type_check_statement (self, _tmp312_, FALSE, _tmp313_, TRUE, "self"); } else { ValaProperty* _tmp314_; ValaTypeSymbol* _tmp315_; _tmp314_ = prop; _tmp315_ = t; vala_ccode_base_module_create_property_type_check_statement (self, _tmp314_, TRUE, _tmp315_, TRUE, "self"); } } vcast = NULL; _tmp316_ = prop; _tmp317_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp316_); _tmp318_ = _tmp317_; if (VALA_IS_INTERFACE (_tmp318_)) { ValaProperty* _tmp319_; ValaSymbol* _tmp320_; ValaSymbol* _tmp321_; ValaInterface* _tmp322_; ValaInterface* iface; ValaInterface* _tmp323_; gchar* _tmp324_ = NULL; gchar* _tmp325_; gchar* _tmp326_ = NULL; gchar* _tmp327_; ValaCCodeIdentifier* _tmp328_; ValaCCodeIdentifier* _tmp329_; ValaCCodeFunctionCall* _tmp330_; _tmp319_ = prop; _tmp320_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp319_); _tmp321_ = _tmp320_; _tmp322_ = _vala_code_node_ref0 (VALA_INTERFACE (_tmp321_)); iface = _tmp322_; _tmp323_ = iface; _tmp324_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp323_, NULL); _tmp325_ = _tmp324_; _tmp326_ = g_strdup_printf ("%s_GET_INTERFACE", _tmp325_); _tmp327_ = _tmp326_; _tmp328_ = vala_ccode_identifier_new (_tmp327_); _tmp329_ = _tmp328_; _tmp330_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp329_); _vala_ccode_node_unref0 (vcast); vcast = _tmp330_; _vala_ccode_node_unref0 (_tmp329_); _g_free0 (_tmp327_); _g_free0 (_tmp325_); _vala_code_node_unref0 (iface); } else { ValaProperty* _tmp331_; ValaSymbol* _tmp332_; ValaSymbol* _tmp333_; ValaClass* _tmp334_; ValaClass* cl; ValaClass* _tmp335_; gchar* _tmp336_ = NULL; gchar* _tmp337_; gchar* _tmp338_ = NULL; gchar* _tmp339_; ValaCCodeIdentifier* _tmp340_; ValaCCodeIdentifier* _tmp341_; ValaCCodeFunctionCall* _tmp342_; _tmp331_ = prop; _tmp332_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp331_); _tmp333_ = _tmp332_; _tmp334_ = _vala_code_node_ref0 (VALA_CLASS (_tmp333_)); cl = _tmp334_; _tmp335_ = cl; _tmp336_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp335_, NULL); _tmp337_ = _tmp336_; _tmp338_ = g_strdup_printf ("%s_GET_CLASS", _tmp337_); _tmp339_ = _tmp338_; _tmp340_ = vala_ccode_identifier_new (_tmp339_); _tmp341_ = _tmp340_; _tmp342_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp341_); _vala_ccode_node_unref0 (vcast); vcast = _tmp342_; _vala_ccode_node_unref0 (_tmp341_); _g_free0 (_tmp339_); _g_free0 (_tmp337_); _vala_code_node_unref0 (cl); } _tmp343_ = vcast; _tmp344_ = vala_ccode_identifier_new ("self"); _tmp345_ = _tmp344_; vala_ccode_function_call_add_argument (_tmp343_, (ValaCCodeExpression*) _tmp345_); _vala_ccode_node_unref0 (_tmp345_); _tmp346_ = acc; _tmp347_ = vala_property_accessor_get_readable (_tmp346_); _tmp348_ = _tmp347_; if (_tmp348_) { ValaCCodeFunctionCall* _tmp349_; ValaProperty* _tmp350_; const gchar* _tmp351_; const gchar* _tmp352_; gchar* _tmp353_ = NULL; gchar* _tmp354_; ValaCCodeMemberAccess* _tmp355_; ValaCCodeMemberAccess* _tmp356_; ValaCCodeFunctionCall* _tmp357_; ValaCCodeFunctionCall* _tmp358_; ValaCCodeFunctionCall* vcall; ValaCCodeFunctionCall* _tmp359_; ValaCCodeIdentifier* _tmp360_; ValaCCodeIdentifier* _tmp361_; gboolean _tmp362_; _tmp349_ = vcast; _tmp350_ = prop; _tmp351_ = vala_symbol_get_name ((ValaSymbol*) _tmp350_); _tmp352_ = _tmp351_; _tmp353_ = g_strdup_printf ("get_%s", _tmp352_); _tmp354_ = _tmp353_; _tmp355_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp349_, _tmp354_); _tmp356_ = _tmp355_; _tmp357_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp356_); _tmp358_ = _tmp357_; _vala_ccode_node_unref0 (_tmp356_); _g_free0 (_tmp354_); vcall = _tmp358_; _tmp359_ = vcall; _tmp360_ = vala_ccode_identifier_new ("self"); _tmp361_ = _tmp360_; vala_ccode_function_call_add_argument (_tmp359_, (ValaCCodeExpression*) _tmp361_); _vala_ccode_node_unref0 (_tmp361_); _tmp362_ = returns_real_struct; if (_tmp362_) { ValaCCodeFunctionCall* _tmp363_; ValaCCodeIdentifier* _tmp364_; ValaCCodeIdentifier* _tmp365_; ValaCCodeFunction* _tmp366_; ValaCCodeFunction* _tmp367_; ValaCCodeFunctionCall* _tmp368_; _tmp363_ = vcall; _tmp364_ = vala_ccode_identifier_new ("result"); _tmp365_ = _tmp364_; vala_ccode_function_call_add_argument (_tmp363_, (ValaCCodeExpression*) _tmp365_); _vala_ccode_node_unref0 (_tmp365_); _tmp366_ = vala_ccode_base_module_get_ccode (self); _tmp367_ = _tmp366_; _tmp368_ = vcall; vala_ccode_function_add_expression (_tmp367_, (ValaCCodeExpression*) _tmp368_); } else { ValaPropertyAccessor* _tmp369_; ValaDataType* _tmp370_; ValaDataType* _tmp371_; ValaCCodeFunction* _tmp407_; ValaCCodeFunction* _tmp408_; ValaCCodeFunctionCall* _tmp409_; _tmp369_ = acc; _tmp370_ = vala_property_accessor_get_value_type (_tmp369_); _tmp371_ = _tmp370_; if (VALA_IS_ARRAY_TYPE (_tmp371_)) { ValaPropertyAccessor* _tmp372_; ValaDataType* _tmp373_; ValaDataType* _tmp374_; ValaArrayType* _tmp375_; ValaArrayType* array_type; _tmp372_ = acc; _tmp373_ = vala_property_accessor_get_value_type (_tmp372_); _tmp374_ = _tmp373_; _tmp375_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp374_)); array_type = _tmp375_; { gint dim; dim = 1; { gboolean _tmp376_; _tmp376_ = TRUE; while (TRUE) { gboolean _tmp377_; gint _tmp379_; ValaArrayType* _tmp380_; gint _tmp381_; gint _tmp382_; gint _tmp383_; gchar* _tmp384_ = NULL; gchar* _tmp385_; ValaCCodeIdentifier* _tmp386_; ValaCCodeIdentifier* _tmp387_; ValaCCodeIdentifier* len_expr; ValaCCodeFunctionCall* _tmp388_; ValaCCodeIdentifier* _tmp389_; _tmp377_ = _tmp376_; if (!_tmp377_) { gint _tmp378_; _tmp378_ = dim; dim = _tmp378_ + 1; } _tmp376_ = FALSE; _tmp379_ = dim; _tmp380_ = array_type; _tmp381_ = vala_array_type_get_rank (_tmp380_); _tmp382_ = _tmp381_; if (!(_tmp379_ <= _tmp382_)) { break; } _tmp383_ = dim; _tmp384_ = vala_ccode_base_module_get_array_length_cname (self, "result", _tmp383_); _tmp385_ = _tmp384_; _tmp386_ = vala_ccode_identifier_new (_tmp385_); _tmp387_ = _tmp386_; _g_free0 (_tmp385_); len_expr = _tmp387_; _tmp388_ = vcall; _tmp389_ = len_expr; vala_ccode_function_call_add_argument (_tmp388_, (ValaCCodeExpression*) _tmp389_); _vala_ccode_node_unref0 (len_expr); } } } _vala_code_node_unref0 (array_type); } else { gboolean _tmp390_ = FALSE; ValaPropertyAccessor* _tmp391_; ValaDataType* _tmp392_; ValaDataType* _tmp393_; gboolean _tmp401_; _tmp391_ = acc; _tmp392_ = vala_property_accessor_get_value_type (_tmp391_); _tmp393_ = _tmp392_; if (VALA_IS_DELEGATE_TYPE (_tmp393_)) { ValaPropertyAccessor* _tmp394_; ValaDataType* _tmp395_; ValaDataType* _tmp396_; ValaDelegate* _tmp397_; ValaDelegate* _tmp398_; gboolean _tmp399_; gboolean _tmp400_; _tmp394_ = acc; _tmp395_ = vala_property_accessor_get_value_type (_tmp394_); _tmp396_ = _tmp395_; _tmp397_ = vala_delegate_type_get_delegate_symbol (VALA_DELEGATE_TYPE (_tmp396_)); _tmp398_ = _tmp397_; _tmp399_ = vala_delegate_get_has_target (_tmp398_); _tmp400_ = _tmp399_; _tmp390_ = _tmp400_; } else { _tmp390_ = FALSE; } _tmp401_ = _tmp390_; if (_tmp401_) { ValaCCodeFunctionCall* _tmp402_; gchar* _tmp403_ = NULL; gchar* _tmp404_; ValaCCodeIdentifier* _tmp405_; ValaCCodeIdentifier* _tmp406_; _tmp402_ = vcall; _tmp403_ = vala_ccode_base_module_get_delegate_target_cname (self, "result"); _tmp404_ = _tmp403_; _tmp405_ = vala_ccode_identifier_new (_tmp404_); _tmp406_ = _tmp405_; vala_ccode_function_call_add_argument (_tmp402_, (ValaCCodeExpression*) _tmp406_); _vala_ccode_node_unref0 (_tmp406_); _g_free0 (_tmp404_); } } _tmp407_ = vala_ccode_base_module_get_ccode (self); _tmp408_ = _tmp407_; _tmp409_ = vcall; vala_ccode_function_add_return (_tmp408_, (ValaCCodeExpression*) _tmp409_); } _vala_ccode_node_unref0 (vcall); } else { ValaCCodeFunctionCall* _tmp410_; ValaProperty* _tmp411_; const gchar* _tmp412_; const gchar* _tmp413_; gchar* _tmp414_ = NULL; gchar* _tmp415_; ValaCCodeMemberAccess* _tmp416_; ValaCCodeMemberAccess* _tmp417_; ValaCCodeFunctionCall* _tmp418_; ValaCCodeFunctionCall* _tmp419_; ValaCCodeFunctionCall* vcall; ValaCCodeFunctionCall* _tmp420_; ValaCCodeIdentifier* _tmp421_; ValaCCodeIdentifier* _tmp422_; ValaCCodeFunctionCall* _tmp423_; ValaCCodeIdentifier* _tmp424_; ValaCCodeIdentifier* _tmp425_; ValaPropertyAccessor* _tmp426_; ValaDataType* _tmp427_; ValaDataType* _tmp428_; ValaCCodeFunction* _tmp479_; ValaCCodeFunction* _tmp480_; ValaCCodeFunctionCall* _tmp481_; _tmp410_ = vcast; _tmp411_ = prop; _tmp412_ = vala_symbol_get_name ((ValaSymbol*) _tmp411_); _tmp413_ = _tmp412_; _tmp414_ = g_strdup_printf ("set_%s", _tmp413_); _tmp415_ = _tmp414_; _tmp416_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp410_, _tmp415_); _tmp417_ = _tmp416_; _tmp418_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp417_); _tmp419_ = _tmp418_; _vala_ccode_node_unref0 (_tmp417_); _g_free0 (_tmp415_); vcall = _tmp419_; _tmp420_ = vcall; _tmp421_ = vala_ccode_identifier_new ("self"); _tmp422_ = _tmp421_; vala_ccode_function_call_add_argument (_tmp420_, (ValaCCodeExpression*) _tmp422_); _vala_ccode_node_unref0 (_tmp422_); _tmp423_ = vcall; _tmp424_ = vala_ccode_identifier_new ("value"); _tmp425_ = _tmp424_; vala_ccode_function_call_add_argument (_tmp423_, (ValaCCodeExpression*) _tmp425_); _vala_ccode_node_unref0 (_tmp425_); _tmp426_ = acc; _tmp427_ = vala_property_accessor_get_value_type (_tmp426_); _tmp428_ = _tmp427_; if (VALA_IS_ARRAY_TYPE (_tmp428_)) { ValaPropertyAccessor* _tmp429_; ValaDataType* _tmp430_; ValaDataType* _tmp431_; ValaArrayType* _tmp432_; ValaArrayType* array_type; _tmp429_ = acc; _tmp430_ = vala_property_accessor_get_value_type (_tmp429_); _tmp431_ = _tmp430_; _tmp432_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp431_)); array_type = _tmp432_; { gint dim; dim = 1; { gboolean _tmp433_; _tmp433_ = TRUE; while (TRUE) { gboolean _tmp434_; gint _tmp436_; ValaArrayType* _tmp437_; gint _tmp438_; gint _tmp439_; gint _tmp440_; gchar* _tmp441_ = NULL; gchar* _tmp442_; ValaCCodeIdentifier* _tmp443_; ValaCCodeIdentifier* _tmp444_; ValaCCodeIdentifier* len_expr; ValaCCodeFunctionCall* _tmp445_; ValaCCodeIdentifier* _tmp446_; _tmp434_ = _tmp433_; if (!_tmp434_) { gint _tmp435_; _tmp435_ = dim; dim = _tmp435_ + 1; } _tmp433_ = FALSE; _tmp436_ = dim; _tmp437_ = array_type; _tmp438_ = vala_array_type_get_rank (_tmp437_); _tmp439_ = _tmp438_; if (!(_tmp436_ <= _tmp439_)) { break; } _tmp440_ = dim; _tmp441_ = vala_ccode_base_module_get_array_length_cname (self, "value", _tmp440_); _tmp442_ = _tmp441_; _tmp443_ = vala_ccode_identifier_new (_tmp442_); _tmp444_ = _tmp443_; _g_free0 (_tmp442_); len_expr = _tmp444_; _tmp445_ = vcall; _tmp446_ = len_expr; vala_ccode_function_call_add_argument (_tmp445_, (ValaCCodeExpression*) _tmp446_); _vala_ccode_node_unref0 (len_expr); } } } _vala_code_node_unref0 (array_type); } else { gboolean _tmp447_ = FALSE; ValaPropertyAccessor* _tmp448_; ValaDataType* _tmp449_; ValaDataType* _tmp450_; gboolean _tmp458_; _tmp448_ = acc; _tmp449_ = vala_property_accessor_get_value_type (_tmp448_); _tmp450_ = _tmp449_; if (VALA_IS_DELEGATE_TYPE (_tmp450_)) { ValaPropertyAccessor* _tmp451_; ValaDataType* _tmp452_; ValaDataType* _tmp453_; ValaDelegate* _tmp454_; ValaDelegate* _tmp455_; gboolean _tmp456_; gboolean _tmp457_; _tmp451_ = acc; _tmp452_ = vala_property_accessor_get_value_type (_tmp451_); _tmp453_ = _tmp452_; _tmp454_ = vala_delegate_type_get_delegate_symbol (VALA_DELEGATE_TYPE (_tmp453_)); _tmp455_ = _tmp454_; _tmp456_ = vala_delegate_get_has_target (_tmp455_); _tmp457_ = _tmp456_; _tmp447_ = _tmp457_; } else { _tmp447_ = FALSE; } _tmp458_ = _tmp447_; if (_tmp458_) { ValaCCodeFunctionCall* _tmp459_; gchar* _tmp460_ = NULL; gchar* _tmp461_; ValaCCodeIdentifier* _tmp462_; ValaCCodeIdentifier* _tmp463_; gboolean _tmp464_ = FALSE; ValaPropertyAccessor* _tmp465_; gboolean _tmp466_; gboolean _tmp467_; gboolean _tmp473_; _tmp459_ = vcall; _tmp460_ = vala_ccode_base_module_get_delegate_target_cname (self, "value"); _tmp461_ = _tmp460_; _tmp462_ = vala_ccode_identifier_new (_tmp461_); _tmp463_ = _tmp462_; vala_ccode_function_call_add_argument (_tmp459_, (ValaCCodeExpression*) _tmp463_); _vala_ccode_node_unref0 (_tmp463_); _g_free0 (_tmp461_); _tmp465_ = acc; _tmp466_ = vala_property_accessor_get_readable (_tmp465_); _tmp467_ = _tmp466_; if (!_tmp467_) { ValaPropertyAccessor* _tmp468_; ValaDataType* _tmp469_; ValaDataType* _tmp470_; gboolean _tmp471_; gboolean _tmp472_; _tmp468_ = acc; _tmp469_ = vala_property_accessor_get_value_type (_tmp468_); _tmp470_ = _tmp469_; _tmp471_ = vala_data_type_get_value_owned (_tmp470_); _tmp472_ = _tmp471_; _tmp464_ = _tmp472_; } else { _tmp464_ = FALSE; } _tmp473_ = _tmp464_; if (_tmp473_) { ValaCCodeFunctionCall* _tmp474_; gchar* _tmp475_ = NULL; gchar* _tmp476_; ValaCCodeIdentifier* _tmp477_; ValaCCodeIdentifier* _tmp478_; _tmp474_ = vcall; _tmp475_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value"); _tmp476_ = _tmp475_; _tmp477_ = vala_ccode_identifier_new (_tmp476_); _tmp478_ = _tmp477_; vala_ccode_function_call_add_argument (_tmp474_, (ValaCCodeExpression*) _tmp478_); _vala_ccode_node_unref0 (_tmp478_); _g_free0 (_tmp476_); } } } _tmp479_ = vala_ccode_base_module_get_ccode (self); _tmp480_ = _tmp479_; _tmp481_ = vcall; vala_ccode_function_add_expression (_tmp480_, (ValaCCodeExpression*) _tmp481_); _vala_ccode_node_unref0 (vcall); } vala_ccode_base_module_pop_function (self); _tmp482_ = self->cfile; _tmp483_ = function; vala_ccode_file_add_function (_tmp482_, _tmp483_); _vala_ccode_node_unref0 (vcast); _vala_ccode_node_unref0 (function); } _tmp484_ = prop; _tmp485_ = vala_property_get_is_abstract (_tmp484_); _tmp486_ = _tmp485_; if (!_tmp486_) { gboolean _tmp487_ = FALSE; ValaProperty* _tmp488_; ValaProperty* _tmp489_; ValaProperty* _tmp490_; gboolean _tmp494_; gboolean is_virtual; ValaPropertyAccessor* _tmp495_; gchar* _tmp496_ = NULL; gchar* cname; ValaCCodeFunction* function = NULL; gboolean _tmp497_ = FALSE; gboolean _tmp498_ = FALSE; ValaPropertyAccessor* _tmp499_; gboolean _tmp500_; gboolean _tmp501_; gboolean _tmp505_; gboolean _tmp507_; ValaObjectType* base_type; ValaProperty* _tmp517_; ValaMemberBinding _tmp518_; ValaMemberBinding _tmp519_; gboolean _tmp551_ = FALSE; gboolean _tmp552_ = FALSE; ValaPropertyAccessor* _tmp553_; gboolean _tmp554_; gboolean _tmp555_; gboolean _tmp559_; gboolean _tmp561_; ValaPropertyAccessor* _tmp564_; ValaDataType* _tmp565_; ValaDataType* _tmp566_; gboolean _tmp637_; ValaCCodeFunction* _tmp659_; gboolean _tmp660_ = FALSE; ValaProperty* _tmp661_; ValaMemberBinding _tmp662_; ValaMemberBinding _tmp663_; gboolean _tmp665_; gboolean _tmp676_ = FALSE; ValaPropertyAccessor* _tmp677_; gboolean _tmp678_; gboolean _tmp679_; gboolean _tmp681_; gboolean _tmp703_; ValaPropertyAccessor* _tmp726_; ValaBlock* _tmp727_; ValaBlock* _tmp728_; gboolean _tmp729_; gboolean _tmp730_; gboolean _tmp737_ = FALSE; gboolean _tmp738_ = FALSE; ValaProperty* _tmp739_; gboolean _tmp740_ = FALSE; gboolean _tmp743_; gboolean _tmp752_; ValaCCodeFile* _tmp769_; ValaCCodeFunction* _tmp770_; _tmp488_ = prop; _tmp489_ = vala_property_get_base_property (_tmp488_); _tmp490_ = _tmp489_; if (_tmp490_ != NULL) { _tmp487_ = TRUE; } else { ValaProperty* _tmp491_; ValaProperty* _tmp492_; ValaProperty* _tmp493_; _tmp491_ = prop; _tmp492_ = vala_property_get_base_interface_property (_tmp491_); _tmp493_ = _tmp492_; _tmp487_ = _tmp493_ != NULL; } _tmp494_ = _tmp487_; is_virtual = _tmp494_; _tmp495_ = acc; _tmp496_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp495_); cname = _tmp496_; _tmp499_ = acc; _tmp500_ = vala_property_accessor_get_writable (_tmp499_); _tmp501_ = _tmp500_; if (_tmp501_) { _tmp498_ = TRUE; } else { ValaPropertyAccessor* _tmp502_; gboolean _tmp503_; gboolean _tmp504_; _tmp502_ = acc; _tmp503_ = vala_property_accessor_get_construction (_tmp502_); _tmp504_ = _tmp503_; _tmp498_ = _tmp504_; } _tmp505_ = _tmp498_; if (_tmp505_) { _tmp497_ = TRUE; } else { gboolean _tmp506_; _tmp506_ = returns_real_struct; _tmp497_ = _tmp506_; } _tmp507_ = _tmp497_; if (_tmp507_) { const gchar* _tmp508_; ValaCCodeFunction* _tmp509_; _tmp508_ = cname; _tmp509_ = vala_ccode_function_new (_tmp508_, "void"); _vala_ccode_node_unref0 (function); function = _tmp509_; } else { const gchar* _tmp510_; ValaPropertyAccessor* _tmp511_; ValaDataType* _tmp512_; ValaDataType* _tmp513_; gchar* _tmp514_ = NULL; gchar* _tmp515_; ValaCCodeFunction* _tmp516_; _tmp510_ = cname; _tmp511_ = acc; _tmp512_ = vala_property_accessor_get_value_type (_tmp511_); _tmp513_ = _tmp512_; _tmp514_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp513_); _tmp515_ = _tmp514_; _tmp516_ = vala_ccode_function_new (_tmp510_, _tmp515_); _vala_ccode_node_unref0 (function); function = _tmp516_; _g_free0 (_tmp515_); } base_type = NULL; _tmp517_ = prop; _tmp518_ = vala_property_get_binding (_tmp517_); _tmp519_ = _tmp518_; if (_tmp519_ == VALA_MEMBER_BINDING_INSTANCE) { gboolean _tmp520_; _tmp520_ = is_virtual; if (_tmp520_) { ValaProperty* _tmp521_; ValaProperty* _tmp522_; ValaProperty* _tmp523_; ValaCCodeFunction* _tmp539_; ValaCCodeFunction* _tmp540_; ValaCCodeModifiers _tmp541_; ValaCCodeModifiers _tmp542_; ValaCCodeFunction* _tmp543_; ValaObjectType* _tmp544_; gchar* _tmp545_ = NULL; gchar* _tmp546_; ValaCCodeParameter* _tmp547_; ValaCCodeParameter* _tmp548_; _tmp521_ = prop; _tmp522_ = vala_property_get_base_property (_tmp521_); _tmp523_ = _tmp522_; if (_tmp523_ != NULL) { ValaProperty* _tmp524_; ValaProperty* _tmp525_; ValaProperty* _tmp526_; ValaSymbol* _tmp527_; ValaSymbol* _tmp528_; ValaObjectType* _tmp529_; _tmp524_ = prop; _tmp525_ = vala_property_get_base_property (_tmp524_); _tmp526_ = _tmp525_; _tmp527_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp526_); _tmp528_ = _tmp527_; _tmp529_ = vala_object_type_new (VALA_OBJECT_TYPE_SYMBOL (_tmp528_)); _vala_code_node_unref0 (base_type); base_type = _tmp529_; } else { ValaProperty* _tmp530_; ValaProperty* _tmp531_; ValaProperty* _tmp532_; _tmp530_ = prop; _tmp531_ = vala_property_get_base_interface_property (_tmp530_); _tmp532_ = _tmp531_; if (_tmp532_ != NULL) { ValaProperty* _tmp533_; ValaProperty* _tmp534_; ValaProperty* _tmp535_; ValaSymbol* _tmp536_; ValaSymbol* _tmp537_; ValaObjectType* _tmp538_; _tmp533_ = prop; _tmp534_ = vala_property_get_base_interface_property (_tmp533_); _tmp535_ = _tmp534_; _tmp536_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp535_); _tmp537_ = _tmp536_; _tmp538_ = vala_object_type_new (VALA_OBJECT_TYPE_SYMBOL (_tmp537_)); _vala_code_node_unref0 (base_type); base_type = _tmp538_; } } _tmp539_ = function; _tmp540_ = function; _tmp541_ = vala_ccode_function_get_modifiers (_tmp540_); _tmp542_ = _tmp541_; vala_ccode_function_set_modifiers (_tmp540_, _tmp542_ | VALA_CCODE_MODIFIERS_STATIC); _tmp543_ = function; _tmp544_ = base_type; _tmp545_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp544_); _tmp546_ = _tmp545_; _tmp547_ = vala_ccode_parameter_new ("base", _tmp546_); _tmp548_ = _tmp547_; vala_ccode_function_add_parameter (_tmp543_, _tmp548_); _vala_ccode_node_unref0 (_tmp548_); _g_free0 (_tmp546_); } else { ValaCCodeFunction* _tmp549_; ValaCCodeParameter* _tmp550_; _tmp549_ = function; _tmp550_ = cselfparam; vala_ccode_function_add_parameter (_tmp549_, _tmp550_); } } _tmp553_ = acc; _tmp554_ = vala_property_accessor_get_writable (_tmp553_); _tmp555_ = _tmp554_; if (_tmp555_) { _tmp552_ = TRUE; } else { ValaPropertyAccessor* _tmp556_; gboolean _tmp557_; gboolean _tmp558_; _tmp556_ = acc; _tmp557_ = vala_property_accessor_get_construction (_tmp556_); _tmp558_ = _tmp557_; _tmp552_ = _tmp558_; } _tmp559_ = _tmp552_; if (_tmp559_) { _tmp551_ = TRUE; } else { gboolean _tmp560_; _tmp560_ = returns_real_struct; _tmp551_ = _tmp560_; } _tmp561_ = _tmp551_; if (_tmp561_) { ValaCCodeFunction* _tmp562_; ValaCCodeParameter* _tmp563_; _tmp562_ = function; _tmp563_ = cvalueparam; vala_ccode_function_add_parameter (_tmp562_, _tmp563_); } _tmp564_ = acc; _tmp565_ = vala_property_accessor_get_value_type (_tmp564_); _tmp566_ = _tmp565_; if (VALA_IS_ARRAY_TYPE (_tmp566_)) { ValaPropertyAccessor* _tmp567_; ValaDataType* _tmp568_; ValaDataType* _tmp569_; ValaArrayType* _tmp570_; ValaArrayType* array_type; gchar* _tmp571_; gchar* length_ctype; ValaPropertyAccessor* _tmp572_; gboolean _tmp573_; gboolean _tmp574_; _tmp567_ = acc; _tmp568_ = vala_property_accessor_get_value_type (_tmp567_); _tmp569_ = _tmp568_; _tmp570_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp569_)); array_type = _tmp570_; _tmp571_ = g_strdup ("int"); length_ctype = _tmp571_; _tmp572_ = acc; _tmp573_ = vala_property_accessor_get_readable (_tmp572_); _tmp574_ = _tmp573_; if (_tmp574_) { gchar* _tmp575_; _tmp575_ = g_strdup ("int*"); _g_free0 (length_ctype); length_ctype = _tmp575_; } { gint dim; dim = 1; { gboolean _tmp576_; _tmp576_ = TRUE; while (TRUE) { gboolean _tmp577_; gint _tmp579_; ValaArrayType* _tmp580_; gint _tmp581_; gint _tmp582_; const gchar* _tmp583_ = NULL; ValaPropertyAccessor* _tmp584_; gboolean _tmp585_; gboolean _tmp586_; ValaCCodeFunction* _tmp587_; const gchar* _tmp588_; gint _tmp589_; gchar* _tmp590_ = NULL; gchar* _tmp591_; const gchar* _tmp592_; ValaCCodeParameter* _tmp593_; ValaCCodeParameter* _tmp594_; _tmp577_ = _tmp576_; if (!_tmp577_) { gint _tmp578_; _tmp578_ = dim; dim = _tmp578_ + 1; } _tmp576_ = FALSE; _tmp579_ = dim; _tmp580_ = array_type; _tmp581_ = vala_array_type_get_rank (_tmp580_); _tmp582_ = _tmp581_; if (!(_tmp579_ <= _tmp582_)) { break; } _tmp584_ = acc; _tmp585_ = vala_property_accessor_get_readable (_tmp584_); _tmp586_ = _tmp585_; if (_tmp586_) { _tmp583_ = "result"; } else { _tmp583_ = "value"; } _tmp587_ = function; _tmp588_ = _tmp583_; _tmp589_ = dim; _tmp590_ = vala_ccode_base_module_get_array_length_cname (self, _tmp588_, _tmp589_); _tmp591_ = _tmp590_; _tmp592_ = length_ctype; _tmp593_ = vala_ccode_parameter_new (_tmp591_, _tmp592_); _tmp594_ = _tmp593_; vala_ccode_function_add_parameter (_tmp587_, _tmp594_); _vala_ccode_node_unref0 (_tmp594_); _g_free0 (_tmp591_); } } } _g_free0 (length_ctype); _vala_code_node_unref0 (array_type); } else { gboolean _tmp595_ = FALSE; ValaPropertyAccessor* _tmp596_; ValaDataType* _tmp597_; ValaDataType* _tmp598_; gboolean _tmp606_; _tmp596_ = acc; _tmp597_ = vala_property_accessor_get_value_type (_tmp596_); _tmp598_ = _tmp597_; if (VALA_IS_DELEGATE_TYPE (_tmp598_)) { ValaPropertyAccessor* _tmp599_; ValaDataType* _tmp600_; ValaDataType* _tmp601_; ValaDelegate* _tmp602_; ValaDelegate* _tmp603_; gboolean _tmp604_; gboolean _tmp605_; _tmp599_ = acc; _tmp600_ = vala_property_accessor_get_value_type (_tmp599_); _tmp601_ = _tmp600_; _tmp602_ = vala_delegate_type_get_delegate_symbol (VALA_DELEGATE_TYPE (_tmp601_)); _tmp603_ = _tmp602_; _tmp604_ = vala_delegate_get_has_target (_tmp603_); _tmp605_ = _tmp604_; _tmp595_ = _tmp605_; } else { _tmp595_ = FALSE; } _tmp606_ = _tmp595_; if (_tmp606_) { const gchar* _tmp607_ = NULL; ValaPropertyAccessor* _tmp608_; gboolean _tmp609_; gboolean _tmp610_; const gchar* _tmp611_ = NULL; ValaPropertyAccessor* _tmp612_; gboolean _tmp613_; gboolean _tmp614_; ValaCCodeFunction* _tmp615_; const gchar* _tmp616_; gchar* _tmp617_ = NULL; gchar* _tmp618_; const gchar* _tmp619_; ValaCCodeParameter* _tmp620_; ValaCCodeParameter* _tmp621_; gboolean _tmp622_ = FALSE; ValaPropertyAccessor* _tmp623_; gboolean _tmp624_; gboolean _tmp625_; gboolean _tmp631_; _tmp608_ = acc; _tmp609_ = vala_property_accessor_get_readable (_tmp608_); _tmp610_ = _tmp609_; if (_tmp610_) { _tmp607_ = "result"; } else { _tmp607_ = "value"; } _tmp612_ = acc; _tmp613_ = vala_property_accessor_get_readable (_tmp612_); _tmp614_ = _tmp613_; if (_tmp614_) { _tmp611_ = "gpointer*"; } else { _tmp611_ = "gpointer"; } _tmp615_ = function; _tmp616_ = _tmp607_; _tmp617_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp616_); _tmp618_ = _tmp617_; _tmp619_ = _tmp611_; _tmp620_ = vala_ccode_parameter_new (_tmp618_, _tmp619_); _tmp621_ = _tmp620_; vala_ccode_function_add_parameter (_tmp615_, _tmp621_); _vala_ccode_node_unref0 (_tmp621_); _g_free0 (_tmp618_); _tmp623_ = acc; _tmp624_ = vala_property_accessor_get_readable (_tmp623_); _tmp625_ = _tmp624_; if (!_tmp625_) { ValaPropertyAccessor* _tmp626_; ValaDataType* _tmp627_; ValaDataType* _tmp628_; gboolean _tmp629_; gboolean _tmp630_; _tmp626_ = acc; _tmp627_ = vala_property_accessor_get_value_type (_tmp626_); _tmp628_ = _tmp627_; _tmp629_ = vala_data_type_get_value_owned (_tmp628_); _tmp630_ = _tmp629_; _tmp622_ = _tmp630_; } else { _tmp622_ = FALSE; } _tmp631_ = _tmp622_; if (_tmp631_) { ValaCCodeFunction* _tmp632_; gchar* _tmp633_ = NULL; gchar* _tmp634_; ValaCCodeParameter* _tmp635_; ValaCCodeParameter* _tmp636_; _tmp632_ = function; _tmp633_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value"); _tmp634_ = _tmp633_; _tmp635_ = vala_ccode_parameter_new (_tmp634_, "GDestroyNotify"); _tmp636_ = _tmp635_; vala_ccode_function_add_parameter (_tmp632_, _tmp636_); _vala_ccode_node_unref0 (_tmp636_); _g_free0 (_tmp634_); } } } _tmp637_ = is_virtual; if (!_tmp637_) { gboolean _tmp638_ = FALSE; gboolean _tmp639_ = FALSE; ValaProperty* _tmp640_; gboolean _tmp641_ = FALSE; gboolean _tmp650_; gboolean _tmp654_; _tmp640_ = prop; _tmp641_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp640_); if (_tmp641_) { _tmp639_ = TRUE; } else { gboolean _tmp642_ = FALSE; ValaPropertyAccessor* _tmp643_; gboolean _tmp644_; gboolean _tmp645_; gboolean _tmp649_; _tmp643_ = acc; _tmp644_ = vala_property_accessor_get_readable (_tmp643_); _tmp645_ = _tmp644_; if (_tmp645_) { _tmp642_ = TRUE; } else { ValaPropertyAccessor* _tmp646_; gboolean _tmp647_; gboolean _tmp648_; _tmp646_ = acc; _tmp647_ = vala_property_accessor_get_writable (_tmp646_); _tmp648_ = _tmp647_; _tmp642_ = _tmp648_; } _tmp649_ = _tmp642_; _tmp639_ = !_tmp649_; } _tmp650_ = _tmp639_; if (_tmp650_) { _tmp638_ = TRUE; } else { ValaPropertyAccessor* _tmp651_; ValaSymbolAccessibility _tmp652_; ValaSymbolAccessibility _tmp653_; _tmp651_ = acc; _tmp652_ = vala_symbol_get_access ((ValaSymbol*) _tmp651_); _tmp653_ = _tmp652_; _tmp638_ = _tmp653_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE; } _tmp654_ = _tmp638_; if (_tmp654_) { ValaCCodeFunction* _tmp655_; ValaCCodeFunction* _tmp656_; ValaCCodeModifiers _tmp657_; ValaCCodeModifiers _tmp658_; _tmp655_ = function; _tmp656_ = function; _tmp657_ = vala_ccode_function_get_modifiers (_tmp656_); _tmp658_ = _tmp657_; vala_ccode_function_set_modifiers (_tmp656_, _tmp658_ | VALA_CCODE_MODIFIERS_STATIC); } } _tmp659_ = function; vala_ccode_base_module_push_function (self, _tmp659_); _tmp661_ = prop; _tmp662_ = vala_property_get_binding (_tmp661_); _tmp663_ = _tmp662_; if (_tmp663_ == VALA_MEMBER_BINDING_INSTANCE) { gboolean _tmp664_; _tmp664_ = is_virtual; _tmp660_ = !_tmp664_; } else { _tmp660_ = FALSE; } _tmp665_ = _tmp660_; if (_tmp665_) { gboolean _tmp666_ = FALSE; ValaPropertyAccessor* _tmp667_; gboolean _tmp668_; gboolean _tmp669_; gboolean _tmp671_; _tmp667_ = acc; _tmp668_ = vala_property_accessor_get_readable (_tmp667_); _tmp669_ = _tmp668_; if (!_tmp669_) { _tmp666_ = TRUE; } else { gboolean _tmp670_; _tmp670_ = returns_real_struct; _tmp666_ = _tmp670_; } _tmp671_ = _tmp666_; if (_tmp671_) { ValaProperty* _tmp672_; ValaTypeSymbol* _tmp673_; _tmp672_ = prop; _tmp673_ = t; vala_ccode_base_module_create_property_type_check_statement (self, _tmp672_, FALSE, _tmp673_, TRUE, "self"); } else { ValaProperty* _tmp674_; ValaTypeSymbol* _tmp675_; _tmp674_ = prop; _tmp675_ = t; vala_ccode_base_module_create_property_type_check_statement (self, _tmp674_, TRUE, _tmp675_, TRUE, "self"); } } _tmp677_ = acc; _tmp678_ = vala_property_accessor_get_readable (_tmp677_); _tmp679_ = _tmp678_; if (_tmp679_) { gboolean _tmp680_; _tmp680_ = returns_real_struct; _tmp676_ = !_tmp680_; } else { _tmp676_ = FALSE; } _tmp681_ = _tmp676_; if (_tmp681_) { gboolean _tmp682_ = FALSE; ValaPropertyAccessor* _tmp683_; ValaBasicBlock* _tmp684_; ValaBasicBlock* _tmp685_; gboolean _tmp693_; _tmp683_ = acc; _tmp684_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp683_); _tmp685_ = _tmp684_; if (_tmp685_ == NULL) { _tmp682_ = TRUE; } else { ValaPropertyAccessor* _tmp686_; ValaBasicBlock* _tmp687_; ValaBasicBlock* _tmp688_; ValaList* _tmp689_ = NULL; ValaList* _tmp690_; gint _tmp691_; gint _tmp692_; _tmp686_ = acc; _tmp687_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp686_); _tmp688_ = _tmp687_; _tmp689_ = vala_basic_block_get_predecessors (_tmp688_); _tmp690_ = _tmp689_; _tmp691_ = vala_collection_get_size ((ValaCollection*) _tmp690_); _tmp692_ = _tmp691_; _tmp682_ = _tmp692_ > 0; _vala_iterable_unref0 (_tmp690_); } _tmp693_ = _tmp682_; if (_tmp693_) { ValaCCodeFunction* _tmp694_; ValaCCodeFunction* _tmp695_; ValaPropertyAccessor* _tmp696_; ValaDataType* _tmp697_; ValaDataType* _tmp698_; gchar* _tmp699_ = NULL; gchar* _tmp700_; ValaCCodeVariableDeclarator* _tmp701_; ValaCCodeVariableDeclarator* _tmp702_; _tmp694_ = vala_ccode_base_module_get_ccode (self); _tmp695_ = _tmp694_; _tmp696_ = acc; _tmp697_ = vala_property_accessor_get_value_type (_tmp696_); _tmp698_ = _tmp697_; _tmp699_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp698_); _tmp700_ = _tmp699_; _tmp701_ = vala_ccode_variable_declarator_new ("result", NULL, NULL); _tmp702_ = _tmp701_; vala_ccode_function_add_declaration (_tmp695_, _tmp700_, (ValaCCodeDeclarator*) _tmp702_, 0); _vala_ccode_node_unref0 (_tmp702_); _g_free0 (_tmp700_); } } _tmp703_ = is_virtual; if (_tmp703_) { ValaCCodeFunction* _tmp704_; ValaCCodeFunction* _tmp705_; ValaDataType* _tmp706_; gchar* _tmp707_ = NULL; gchar* _tmp708_; ValaCCodeVariableDeclarator* _tmp709_; ValaCCodeVariableDeclarator* _tmp710_; ValaCCodeFunction* _tmp711_; ValaCCodeFunction* _tmp712_; ValaCCodeIdentifier* _tmp713_; ValaCCodeIdentifier* _tmp714_; ValaObjectType* _tmp715_; ValaCCodeIdentifier* _tmp716_; ValaCCodeIdentifier* _tmp717_; ValaGLibValue* _tmp718_; ValaGLibValue* _tmp719_; ValaDataType* _tmp720_; ValaPropertyAccessor* _tmp721_; ValaTargetValue* _tmp722_ = NULL; ValaTargetValue* _tmp723_; ValaCCodeExpression* _tmp724_ = NULL; ValaCCodeExpression* _tmp725_; _tmp704_ = vala_ccode_base_module_get_ccode (self); _tmp705_ = _tmp704_; _tmp706_ = this_type; _tmp707_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp706_); _tmp708_ = _tmp707_; _tmp709_ = vala_ccode_variable_declarator_new ("self", NULL, NULL); _tmp710_ = _tmp709_; vala_ccode_function_add_declaration (_tmp705_, _tmp708_, (ValaCCodeDeclarator*) _tmp710_, 0); _vala_ccode_node_unref0 (_tmp710_); _g_free0 (_tmp708_); _tmp711_ = vala_ccode_base_module_get_ccode (self); _tmp712_ = _tmp711_; _tmp713_ = vala_ccode_identifier_new ("self"); _tmp714_ = _tmp713_; _tmp715_ = base_type; _tmp716_ = vala_ccode_identifier_new ("base"); _tmp717_ = _tmp716_; _tmp718_ = vala_glib_value_new ((ValaDataType*) _tmp715_, (ValaCCodeExpression*) _tmp717_, TRUE); _tmp719_ = _tmp718_; _tmp720_ = this_type; _tmp721_ = acc; _tmp722_ = vala_ccode_base_module_transform_value (self, (ValaTargetValue*) _tmp719_, _tmp720_, (ValaCodeNode*) _tmp721_); _tmp723_ = _tmp722_; _tmp724_ = vala_ccode_base_module_get_cvalue_ (self, _tmp723_); _tmp725_ = _tmp724_; vala_ccode_function_add_assignment (_tmp712_, (ValaCCodeExpression*) _tmp714_, _tmp725_); _vala_ccode_node_unref0 (_tmp725_); _vala_target_value_unref0 (_tmp723_); _vala_target_value_unref0 (_tmp719_); _vala_ccode_node_unref0 (_tmp717_); _vala_ccode_node_unref0 (_tmp714_); } _tmp726_ = acc; _tmp727_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp726_); _tmp728_ = _tmp727_; vala_code_node_emit ((ValaCodeNode*) _tmp728_, (ValaCodeGenerator*) self); _tmp729_ = vala_ccode_base_module_get_current_method_inner_error (self); _tmp730_ = _tmp729_; if (_tmp730_) { ValaCCodeFunction* _tmp731_; ValaCCodeFunction* _tmp732_; ValaCCodeConstant* _tmp733_; ValaCCodeConstant* _tmp734_; ValaCCodeVariableDeclarator* _tmp735_; ValaCCodeVariableDeclarator* _tmp736_; _tmp731_ = vala_ccode_base_module_get_ccode (self); _tmp732_ = _tmp731_; _tmp733_ = vala_ccode_constant_new ("NULL"); _tmp734_ = _tmp733_; _tmp735_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp734_, NULL); _tmp736_ = _tmp735_; vala_ccode_function_add_declaration (_tmp732_, "GError *", (ValaCCodeDeclarator*) _tmp736_, 0); _vala_ccode_node_unref0 (_tmp736_); _vala_ccode_node_unref0 (_tmp734_); } _tmp739_ = prop; _tmp740_ = vala_ccode_base_module_is_gobject_property (self, _tmp739_); if (_tmp740_) { ValaProperty* _tmp741_; gboolean _tmp742_ = FALSE; _tmp741_ = prop; _tmp742_ = vala_ccode_base_module_get_ccode_notify (_tmp741_); _tmp738_ = _tmp742_; } else { _tmp738_ = FALSE; } _tmp743_ = _tmp738_; if (_tmp743_) { gboolean _tmp744_ = FALSE; ValaPropertyAccessor* _tmp745_; gboolean _tmp746_; gboolean _tmp747_; gboolean _tmp751_; _tmp745_ = acc; _tmp746_ = vala_property_accessor_get_writable (_tmp745_); _tmp747_ = _tmp746_; if (_tmp747_) { _tmp744_ = TRUE; } else { ValaPropertyAccessor* _tmp748_; gboolean _tmp749_; gboolean _tmp750_; _tmp748_ = acc; _tmp749_ = vala_property_accessor_get_construction (_tmp748_); _tmp750_ = _tmp749_; _tmp744_ = _tmp750_; } _tmp751_ = _tmp744_; _tmp737_ = _tmp751_; } else { _tmp737_ = FALSE; } _tmp752_ = _tmp737_; if (_tmp752_) { ValaCCodeIdentifier* _tmp753_; ValaCCodeIdentifier* _tmp754_; ValaCCodeFunctionCall* _tmp755_; ValaCCodeFunctionCall* _tmp756_; ValaCCodeFunctionCall* notify_call; ValaCCodeFunctionCall* _tmp757_; ValaCCodeIdentifier* _tmp758_; ValaCCodeIdentifier* _tmp759_; ValaCCodeCastExpression* _tmp760_; ValaCCodeCastExpression* _tmp761_; ValaCCodeFunctionCall* _tmp762_; ValaProperty* _tmp763_; ValaCCodeConstant* _tmp764_ = NULL; ValaCCodeConstant* _tmp765_; ValaCCodeFunction* _tmp766_; ValaCCodeFunction* _tmp767_; ValaCCodeFunctionCall* _tmp768_; _tmp753_ = vala_ccode_identifier_new ("g_object_notify"); _tmp754_ = _tmp753_; _tmp755_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp754_); _tmp756_ = _tmp755_; _vala_ccode_node_unref0 (_tmp754_); notify_call = _tmp756_; _tmp757_ = notify_call; _tmp758_ = vala_ccode_identifier_new ("self"); _tmp759_ = _tmp758_; _tmp760_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp759_, "GObject *"); _tmp761_ = _tmp760_; vala_ccode_function_call_add_argument (_tmp757_, (ValaCCodeExpression*) _tmp761_); _vala_ccode_node_unref0 (_tmp761_); _vala_ccode_node_unref0 (_tmp759_); _tmp762_ = notify_call; _tmp763_ = prop; _tmp764_ = vala_ccode_base_module_get_property_canonical_cconstant (self, _tmp763_); _tmp765_ = _tmp764_; vala_ccode_function_call_add_argument (_tmp762_, (ValaCCodeExpression*) _tmp765_); _vala_ccode_node_unref0 (_tmp765_); _tmp766_ = vala_ccode_base_module_get_ccode (self); _tmp767_ = _tmp766_; _tmp768_ = notify_call; vala_ccode_function_add_expression (_tmp767_, (ValaCCodeExpression*) _tmp768_); _vala_ccode_node_unref0 (notify_call); } _tmp769_ = self->cfile; _tmp770_ = function; vala_ccode_file_add_function (_tmp769_, _tmp770_); _vala_code_node_unref0 (base_type); _vala_ccode_node_unref0 (function); _g_free0 (cname); } vala_ccode_base_module_pop_line (self); vala_ccode_base_module_pop_context (self); _vala_ccode_node_unref0 (cvalueparam); _vala_ccode_node_unref0 (cselfparam); _vala_code_node_unref0 (this_type); _vala_code_node_unref0 (t); _vala_code_node_unref0 (prop); } static void vala_ccode_base_module_real_visit_destructor (ValaCodeVisitor* base, ValaDestructor* d) { ValaCCodeBaseModule * self; gboolean _tmp0_ = FALSE; ValaDestructor* _tmp1_; ValaMemberBinding _tmp2_; ValaMemberBinding _tmp3_; gboolean _tmp5_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (d != NULL); _tmp1_ = d; _tmp2_ = vala_destructor_get_binding (_tmp1_); _tmp3_ = _tmp2_; if (_tmp3_ == VALA_MEMBER_BINDING_STATIC) { gboolean _tmp4_; _tmp4_ = self->in_plugin; _tmp0_ = !_tmp4_; } else { _tmp0_ = FALSE; } _tmp5_ = _tmp0_; if (_tmp5_) { ValaDestructor* _tmp6_; ValaSourceReference* _tmp7_; ValaSourceReference* _tmp8_; ValaDestructor* _tmp9_; _tmp6_ = d; _tmp7_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp6_); _tmp8_ = _tmp7_; vala_report_error (_tmp8_, "static destructors are only supported for dynamic types"); _tmp9_ = d; vala_code_node_set_error ((ValaCodeNode*) _tmp9_, TRUE); return; } } gint vala_ccode_base_module_get_block_id (ValaCCodeBaseModule* self, ValaBlock* b) { gint result = 0; ValaMap* _tmp0_; ValaBlock* _tmp1_; gpointer _tmp2_ = NULL; gint _result_; gint _tmp3_; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (b != NULL, 0); _tmp0_ = self->priv->block_map; _tmp1_ = b; _tmp2_ = vala_map_get (_tmp0_, _tmp1_); _result_ = GPOINTER_TO_INT (_tmp2_); _tmp3_ = _result_; if (_tmp3_ == 0) { gint _tmp4_; gint _tmp5_; ValaMap* _tmp6_; ValaBlock* _tmp7_; gint _tmp8_; _tmp4_ = self->priv->next_block_id; self->priv->next_block_id = _tmp4_ + 1; _tmp5_ = self->priv->next_block_id; _result_ = _tmp5_; _tmp6_ = self->priv->block_map; _tmp7_ = b; _tmp8_ = _result_; vala_map_set (_tmp6_, _tmp7_, GINT_TO_POINTER (_tmp8_)); } result = _result_; return result; } gboolean vala_ccode_base_module_no_implicit_copy (ValaCCodeBaseModule* self, ValaDataType* type) { gboolean result = FALSE; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; ValaClass* _tmp3_; ValaClass* cl; gboolean _tmp4_ = FALSE; gboolean _tmp5_ = FALSE; ValaDataType* _tmp6_; gboolean _tmp9_; gboolean _tmp24_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type != NULL, FALSE); _tmp0_ = type; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp2_) ? ((ValaClass*) _tmp2_) : NULL); cl = _tmp3_; _tmp6_ = type; if (VALA_IS_DELEGATE_TYPE (_tmp6_)) { _tmp5_ = TRUE; } else { ValaDataType* _tmp7_; gboolean _tmp8_ = FALSE; _tmp7_ = type; _tmp8_ = vala_data_type_is_array (_tmp7_); _tmp5_ = _tmp8_; } _tmp9_ = _tmp5_; if (_tmp9_) { _tmp4_ = TRUE; } else { gboolean _tmp10_ = FALSE; gboolean _tmp11_ = FALSE; gboolean _tmp12_ = FALSE; ValaClass* _tmp13_; gboolean _tmp17_; gboolean _tmp20_; gboolean _tmp23_; _tmp13_ = cl; if (_tmp13_ != NULL) { ValaClass* _tmp14_; gboolean _tmp15_; gboolean _tmp16_; _tmp14_ = cl; _tmp15_ = vala_class_get_is_immutable (_tmp14_); _tmp16_ = _tmp15_; _tmp12_ = !_tmp16_; } else { _tmp12_ = FALSE; } _tmp17_ = _tmp12_; if (_tmp17_) { ValaClass* _tmp18_; gboolean _tmp19_ = FALSE; _tmp18_ = cl; _tmp19_ = vala_ccode_base_module_is_reference_counting ((ValaTypeSymbol*) _tmp18_); _tmp11_ = !_tmp19_; } else { _tmp11_ = FALSE; } _tmp20_ = _tmp11_; if (_tmp20_) { ValaClass* _tmp21_; gboolean _tmp22_ = FALSE; _tmp21_ = cl; _tmp22_ = vala_ccode_base_module_get_ccode_is_gboxed ((ValaTypeSymbol*) _tmp21_); _tmp10_ = !_tmp22_; } else { _tmp10_ = FALSE; } _tmp23_ = _tmp10_; _tmp4_ = _tmp23_; } _tmp24_ = _tmp4_; result = _tmp24_; _vala_code_node_unref0 (cl); return result; } static void vala_ccode_base_module_capture_parameter (ValaCCodeBaseModule* self, ValaParameter* param, ValaCCodeStruct* data, gint block_id) { ValaParameter* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaCCodeFile* _tmp3_; ValaParameter* _tmp4_; ValaDataType* _tmp5_; ValaDataType* _tmp6_; ValaDataType* _tmp7_ = NULL; ValaDataType* param_type; ValaParameter* _tmp8_; ValaDataType* _tmp9_; ValaDataType* _tmp10_; gboolean _tmp11_; gboolean _tmp12_; ValaCCodeStruct* _tmp18_; ValaDataType* _tmp19_; gchar* _tmp20_ = NULL; gchar* _tmp21_; ValaParameter* _tmp22_; const gchar* _tmp23_; const gchar* _tmp24_; gchar* _tmp25_ = NULL; gchar* _tmp26_; ValaParameter* _tmp27_; ValaParameter* _tmp28_; ValaTargetValue* _tmp29_ = NULL; ValaTargetValue* value; gboolean _tmp30_ = FALSE; ValaDataType* _tmp31_; gboolean _tmp32_ = FALSE; gboolean _tmp38_; ValaParameter* _tmp42_; ValaDataType* _tmp43_; ValaDataType* _tmp44_; ValaArrayType* _tmp45_; ValaArrayType* array_type; ValaParameter* _tmp46_; ValaDataType* _tmp47_; ValaDataType* _tmp48_; ValaDelegateType* _tmp49_; ValaDelegateType* deleg_type; gboolean _tmp50_ = FALSE; ValaArrayType* _tmp51_; gboolean _tmp54_; ValaParameter* _tmp101_; ValaParameter* _tmp102_; ValaTargetValue* _tmp103_; g_return_if_fail (self != NULL); g_return_if_fail (param != NULL); g_return_if_fail (data != NULL); _tmp0_ = param; _tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = self->cfile; vala_ccode_base_module_generate_type_declaration (self, _tmp2_, _tmp3_); _tmp4_ = param; _tmp5_ = vala_variable_get_variable_type ((ValaVariable*) _tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_data_type_copy (_tmp6_); param_type = _tmp7_; _tmp8_ = param; _tmp9_ = vala_variable_get_variable_type ((ValaVariable*) _tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_data_type_get_value_owned (_tmp10_); _tmp12_ = _tmp11_; if (!_tmp12_) { ValaDataType* _tmp13_; ValaParameter* _tmp14_; ValaDataType* _tmp15_; ValaDataType* _tmp16_; gboolean _tmp17_ = FALSE; _tmp13_ = param_type; _tmp14_ = param; _tmp15_ = vala_variable_get_variable_type ((ValaVariable*) _tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_ccode_base_module_no_implicit_copy (self, _tmp16_); vala_data_type_set_value_owned (_tmp13_, !_tmp17_); } _tmp18_ = data; _tmp19_ = param_type; _tmp20_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp19_); _tmp21_ = _tmp20_; _tmp22_ = param; _tmp23_ = vala_symbol_get_name ((ValaSymbol*) _tmp22_); _tmp24_ = _tmp23_; _tmp25_ = vala_ccode_base_module_get_variable_cname (self, _tmp24_); _tmp26_ = _tmp25_; vala_ccode_struct_add_field (_tmp18_, _tmp21_, _tmp26_, NULL); _g_free0 (_tmp26_); _g_free0 (_tmp21_); _tmp27_ = param; vala_parameter_set_captured (_tmp27_, FALSE); _tmp28_ = param; _tmp29_ = vala_code_generator_load_parameter ((ValaCodeGenerator*) self, _tmp28_); value = _tmp29_; _tmp31_ = param_type; _tmp32_ = vala_ccode_base_module_requires_copy (self, _tmp31_); if (_tmp32_) { ValaParameter* _tmp33_; ValaDataType* _tmp34_; ValaDataType* _tmp35_; gboolean _tmp36_; gboolean _tmp37_; _tmp33_ = param; _tmp34_ = vala_variable_get_variable_type ((ValaVariable*) _tmp33_); _tmp35_ = _tmp34_; _tmp36_ = vala_data_type_get_value_owned (_tmp35_); _tmp37_ = _tmp36_; _tmp30_ = !_tmp37_; } else { _tmp30_ = FALSE; } _tmp38_ = _tmp30_; if (_tmp38_) { ValaTargetValue* _tmp39_; ValaParameter* _tmp40_; ValaTargetValue* _tmp41_ = NULL; _tmp39_ = value; _tmp40_ = param; _tmp41_ = vala_ccode_base_module_copy_value (self, _tmp39_, (ValaCodeNode*) _tmp40_); _vala_target_value_unref0 (value); value = _tmp41_; } _tmp42_ = param; _tmp43_ = vala_variable_get_variable_type ((ValaVariable*) _tmp42_); _tmp44_ = _tmp43_; _tmp45_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp44_) ? ((ValaArrayType*) _tmp44_) : NULL); array_type = _tmp45_; _tmp46_ = param; _tmp47_ = vala_variable_get_variable_type ((ValaVariable*) _tmp46_); _tmp48_ = _tmp47_; _tmp49_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp48_) ? ((ValaDelegateType*) _tmp48_) : NULL); deleg_type = _tmp49_; _tmp51_ = array_type; if (_tmp51_ != NULL) { ValaParameter* _tmp52_; gboolean _tmp53_ = FALSE; _tmp52_ = param; _tmp53_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp52_); _tmp50_ = _tmp53_; } else { _tmp50_ = FALSE; } _tmp54_ = _tmp50_; if (_tmp54_) { { gint dim; dim = 1; { gboolean _tmp55_; _tmp55_ = TRUE; while (TRUE) { gboolean _tmp56_; gint _tmp58_; ValaArrayType* _tmp59_; gint _tmp60_; gint _tmp61_; ValaCCodeStruct* _tmp62_; ValaParameter* _tmp63_; gint _tmp64_; gchar* _tmp65_ = NULL; gchar* _tmp66_; _tmp56_ = _tmp55_; if (!_tmp56_) { gint _tmp57_; _tmp57_ = dim; dim = _tmp57_ + 1; } _tmp55_ = FALSE; _tmp58_ = dim; _tmp59_ = array_type; _tmp60_ = vala_array_type_get_rank (_tmp59_); _tmp61_ = _tmp60_; if (!(_tmp58_ <= _tmp61_)) { break; } _tmp62_ = data; _tmp63_ = param; _tmp64_ = dim; _tmp65_ = vala_ccode_base_module_get_parameter_array_length_cname (self, _tmp63_, _tmp64_); _tmp66_ = _tmp65_; vala_ccode_struct_add_field (_tmp62_, "gint", _tmp66_, NULL); _g_free0 (_tmp66_); } } } } else { gboolean _tmp67_ = FALSE; ValaDelegateType* _tmp68_; gboolean _tmp74_; _tmp68_ = deleg_type; if (_tmp68_ != NULL) { ValaDelegateType* _tmp69_; ValaDelegate* _tmp70_; ValaDelegate* _tmp71_; gboolean _tmp72_; gboolean _tmp73_; _tmp69_ = deleg_type; _tmp70_ = vala_delegate_type_get_delegate_symbol (_tmp69_); _tmp71_ = _tmp70_; _tmp72_ = vala_delegate_get_has_target (_tmp71_); _tmp73_ = _tmp72_; _tmp67_ = _tmp73_; } else { _tmp67_ = FALSE; } _tmp74_ = _tmp67_; if (_tmp74_) { ValaCCodeStruct* _tmp75_; ValaParameter* _tmp76_; const gchar* _tmp77_; const gchar* _tmp78_; gchar* _tmp79_ = NULL; gchar* _tmp80_; gchar* _tmp81_ = NULL; gchar* _tmp82_; ValaParameter* _tmp83_; ValaDataType* _tmp84_; ValaDataType* _tmp85_; gboolean _tmp86_; gboolean _tmp87_; _tmp75_ = data; _tmp76_ = param; _tmp77_ = vala_symbol_get_name ((ValaSymbol*) _tmp76_); _tmp78_ = _tmp77_; _tmp79_ = vala_ccode_base_module_get_variable_cname (self, _tmp78_); _tmp80_ = _tmp79_; _tmp81_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp80_); _tmp82_ = _tmp81_; vala_ccode_struct_add_field (_tmp75_, "gpointer", _tmp82_, NULL); _g_free0 (_tmp82_); _g_free0 (_tmp80_); _tmp83_ = param; _tmp84_ = vala_variable_get_variable_type ((ValaVariable*) _tmp83_); _tmp85_ = _tmp84_; _tmp86_ = vala_data_type_get_value_owned (_tmp85_); _tmp87_ = _tmp86_; if (_tmp87_) { ValaCCodeStruct* _tmp88_; ValaParameter* _tmp89_; const gchar* _tmp90_; const gchar* _tmp91_; gchar* _tmp92_ = NULL; gchar* _tmp93_; gchar* _tmp94_ = NULL; gchar* _tmp95_; ValaParameter* _tmp96_; ValaTargetValue* _tmp97_ = NULL; ValaTargetValue* lvalue; ValaTargetValue* _tmp98_; ValaTargetValue* _tmp99_; ValaCCodeExpression* _tmp100_ = NULL; _tmp88_ = data; _tmp89_ = param; _tmp90_ = vala_symbol_get_name ((ValaSymbol*) _tmp89_); _tmp91_ = _tmp90_; _tmp92_ = vala_ccode_base_module_get_variable_cname (self, _tmp91_); _tmp93_ = _tmp92_; _tmp94_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp93_); _tmp95_ = _tmp94_; vala_ccode_struct_add_field (_tmp88_, "GDestroyNotify", _tmp95_, NULL); _g_free0 (_tmp95_); _g_free0 (_tmp93_); _tmp96_ = param; _tmp97_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp96_); lvalue = _tmp97_; _tmp98_ = value; _tmp99_ = lvalue; _tmp100_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp99_); _vala_ccode_node_unref0 (VALA_GLIB_VALUE (_tmp98_)->delegate_target_destroy_notify_cvalue); VALA_GLIB_VALUE (_tmp98_)->delegate_target_destroy_notify_cvalue = _tmp100_; _vala_target_value_unref0 (lvalue); } } } _tmp101_ = param; vala_parameter_set_captured (_tmp101_, TRUE); _tmp102_ = param; _tmp103_ = value; vala_code_generator_store_parameter ((ValaCodeGenerator*) self, _tmp102_, _tmp103_); _vala_code_node_unref0 (deleg_type); _vala_code_node_unref0 (array_type); _vala_target_value_unref0 (value); _vala_code_node_unref0 (param_type); } static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, ValaBlock* b) { ValaCCodeBaseModule * self; ValaCCodeBaseModuleEmitContext* _tmp0_; ValaBlock* _tmp1_; ValaBlock* _tmp2_; ValaList* _tmp3_ = NULL; ValaList* local_vars; gboolean _tmp4_ = FALSE; gboolean _tmp5_ = FALSE; ValaBlock* _tmp6_; ValaCodeNode* _tmp7_; ValaCodeNode* _tmp8_; gboolean _tmp12_; gboolean _tmp16_; ValaBlock* _tmp19_; gboolean _tmp20_; gboolean _tmp21_; ValaBlock* _tmp847_; ValaSymbol* _tmp848_; ValaSymbol* _tmp849_; ValaBlock* _tmp930_; gboolean _tmp931_; gboolean _tmp932_; gboolean _tmp960_ = FALSE; gboolean _tmp961_ = FALSE; ValaBlock* _tmp962_; ValaCodeNode* _tmp963_; ValaCodeNode* _tmp964_; gboolean _tmp968_; gboolean _tmp972_; ValaCCodeBaseModuleEmitContext* _tmp975_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (b != NULL); _tmp0_ = self->emit_context; _tmp1_ = b; vala_ccode_base_module_emit_context_push_symbol (_tmp0_, (ValaSymbol*) _tmp1_); _tmp2_ = b; _tmp3_ = vala_block_get_local_variables (_tmp2_); local_vars = _tmp3_; _tmp6_ = b; _tmp7_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp6_); _tmp8_ = _tmp7_; if (VALA_IS_BLOCK (_tmp8_)) { _tmp5_ = TRUE; } else { ValaBlock* _tmp9_; ValaCodeNode* _tmp10_; ValaCodeNode* _tmp11_; _tmp9_ = b; _tmp10_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp9_); _tmp11_ = _tmp10_; _tmp5_ = VALA_IS_SWITCH_STATEMENT (_tmp11_); } _tmp12_ = _tmp5_; if (_tmp12_) { _tmp4_ = TRUE; } else { ValaBlock* _tmp13_; ValaCodeNode* _tmp14_; ValaCodeNode* _tmp15_; _tmp13_ = b; _tmp14_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp13_); _tmp15_ = _tmp14_; _tmp4_ = VALA_IS_TRY_STATEMENT (_tmp15_); } _tmp16_ = _tmp4_; if (_tmp16_) { ValaCCodeFunction* _tmp17_; ValaCCodeFunction* _tmp18_; _tmp17_ = vala_ccode_base_module_get_ccode (self); _tmp18_ = _tmp17_; vala_ccode_function_open_block (_tmp18_); } _tmp19_ = b; _tmp20_ = vala_block_get_captured (_tmp19_); _tmp21_ = _tmp20_; if (_tmp21_) { ValaBlock* _tmp22_; ValaSymbol* _tmp23_; ValaSymbol* _tmp24_; ValaBlock* _tmp25_ = NULL; ValaBlock* _tmp26_; ValaBlock* parent_block; ValaBlock* _tmp27_; gint _tmp28_ = 0; gint block_id; gint _tmp29_; gchar* _tmp30_ = NULL; gchar* struct_name; const gchar* _tmp31_; gchar* _tmp32_; gchar* _tmp33_; ValaCCodeStruct* _tmp34_; ValaCCodeStruct* _tmp35_; ValaCCodeStruct* data; ValaCCodeStruct* _tmp36_; ValaBlock* _tmp37_; ValaCCodeIdentifier* _tmp176_; ValaCCodeIdentifier* _tmp177_; ValaCCodeFunctionCall* _tmp178_; ValaCCodeFunctionCall* _tmp179_; ValaCCodeFunctionCall* data_alloc; ValaCCodeFunctionCall* _tmp180_; const gchar* _tmp181_; ValaCCodeIdentifier* _tmp182_; ValaCCodeIdentifier* _tmp183_; gboolean _tmp184_ = FALSE; ValaCCodeFunction* _tmp202_; ValaCCodeFunction* _tmp203_; gint _tmp204_; gchar* _tmp205_ = NULL; gchar* _tmp206_; ValaCCodeExpression* _tmp207_ = NULL; ValaCCodeExpression* _tmp208_; ValaCCodeFunctionCall* _tmp209_; ValaCCodeFunction* _tmp210_; ValaCCodeFunction* _tmp211_; gint _tmp212_; gchar* _tmp213_ = NULL; gchar* _tmp214_; ValaCCodeExpression* _tmp215_ = NULL; ValaCCodeExpression* _tmp216_; ValaCCodeMemberAccess* _tmp217_; ValaCCodeMemberAccess* _tmp218_; ValaCCodeIdentifier* _tmp219_; ValaCCodeIdentifier* _tmp220_; ValaBlock* _tmp221_; ValaBlock* _tmp340_; ValaSymbol* _tmp341_; ValaSymbol* _tmp342_; const gchar* _tmp401_; gchar* _tmp402_; gchar* _tmp403_; const gchar* _tmp404_; ValaCCodeVariableDeclarator* _tmp405_; ValaCCodeVariableDeclarator* _tmp406_; ValaCCodeTypeDefinition* _tmp407_; ValaCCodeTypeDefinition* _tmp408_; ValaCCodeTypeDefinition* _typedef_; ValaCCodeFile* _tmp409_; ValaCCodeTypeDefinition* _tmp410_; ValaCCodeFile* _tmp411_; ValaCCodeStruct* _tmp412_; gint _tmp413_; gchar* _tmp414_ = NULL; gchar* _tmp415_; const gchar* _tmp416_; gchar* _tmp417_; gchar* _tmp418_; ValaCCodeFunction* _tmp419_; ValaCCodeFunction* _tmp420_; ValaCCodeFunction* ref_fun; ValaCCodeFunction* _tmp421_; gint _tmp422_; gchar* _tmp423_ = NULL; gchar* _tmp424_; const gchar* _tmp425_; gchar* _tmp426_; gchar* _tmp427_; ValaCCodeParameter* _tmp428_; ValaCCodeParameter* _tmp429_; ValaCCodeFunction* _tmp430_; ValaCCodeFunction* _tmp431_; ValaCCodeIdentifier* _tmp432_; ValaCCodeIdentifier* _tmp433_; ValaCCodeFunctionCall* _tmp434_; ValaCCodeFunctionCall* _tmp435_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp436_; gint _tmp437_; gchar* _tmp438_ = NULL; gchar* _tmp439_; ValaCCodeIdentifier* _tmp440_; ValaCCodeIdentifier* _tmp441_; ValaCCodeMemberAccess* _tmp442_; ValaCCodeMemberAccess* _tmp443_; ValaCCodeUnaryExpression* _tmp444_; ValaCCodeUnaryExpression* _tmp445_; ValaCCodeFunction* _tmp446_; ValaCCodeFunction* _tmp447_; ValaCCodeFunctionCall* _tmp448_; ValaCCodeFunction* _tmp449_; ValaCCodeFunction* _tmp450_; gint _tmp451_; gchar* _tmp452_ = NULL; gchar* _tmp453_; ValaCCodeIdentifier* _tmp454_; ValaCCodeIdentifier* _tmp455_; ValaCCodeFile* _tmp456_; ValaCCodeFunction* _tmp457_; ValaCCodeFile* _tmp458_; ValaCCodeFunction* _tmp459_; gint _tmp460_; gchar* _tmp461_ = NULL; gchar* _tmp462_; ValaCCodeFunction* _tmp463_; ValaCCodeFunction* _tmp464_; ValaCCodeFunction* unref_fun; ValaCCodeFunction* _tmp465_; gint _tmp466_; gchar* _tmp467_ = NULL; gchar* _tmp468_; const gchar* _tmp469_; gchar* _tmp470_; gchar* _tmp471_; ValaCCodeParameter* _tmp472_; ValaCCodeParameter* _tmp473_; ValaCCodeFunction* _tmp474_; ValaCCodeFunction* _tmp475_; ValaCCodeIdentifier* _tmp476_; ValaCCodeIdentifier* _tmp477_; ValaCCodeFunctionCall* _tmp478_; ValaCCodeFunctionCall* _tmp479_; gint _tmp480_; gchar* _tmp481_ = NULL; gchar* _tmp482_; ValaCCodeIdentifier* _tmp483_; ValaCCodeIdentifier* _tmp484_; ValaCCodeMemberAccess* _tmp485_; ValaCCodeMemberAccess* _tmp486_; ValaCCodeUnaryExpression* _tmp487_; ValaCCodeUnaryExpression* _tmp488_; ValaCCodeFunction* _tmp489_; ValaCCodeFunction* _tmp490_; ValaCCodeFunctionCall* _tmp491_; gint _tmp492_; gchar* _tmp493_ = NULL; gchar* _tmp494_; ValaCCodeIdentifier* _tmp495_; ValaCCodeExpression* _tmp496_; ValaCCodeExpression* outer_block; ValaBlock* _tmp497_; ValaBlock* parent_closure_block; ValaDataType* _tmp510_ = NULL; ValaDataType* _tmp511_; gboolean _tmp512_; ValaMethod* _tmp530_; ValaMethod* _tmp531_; ValaBlock* _tmp637_; ValaSymbol* _tmp638_; ValaSymbol* _tmp639_; ValaBlock* _tmp720_; ValaCCodeIdentifier* _tmp774_; ValaCCodeIdentifier* _tmp775_; ValaCCodeFunctionCall* _tmp776_; ValaCCodeFunctionCall* _tmp777_; ValaCCodeFunctionCall* data_free; ValaCCodeFunctionCall* _tmp778_; const gchar* _tmp779_; ValaCCodeIdentifier* _tmp780_; ValaCCodeIdentifier* _tmp781_; ValaCCodeFunctionCall* _tmp782_; gint _tmp783_; gchar* _tmp784_ = NULL; gchar* _tmp785_; ValaCCodeIdentifier* _tmp786_; ValaCCodeIdentifier* _tmp787_; ValaCCodeFunction* _tmp788_; ValaCCodeFunction* _tmp789_; ValaCCodeFunctionCall* _tmp790_; ValaCCodeFunction* _tmp791_; ValaCCodeFunction* _tmp792_; ValaCCodeFile* _tmp793_; ValaCCodeFunction* _tmp794_; ValaCCodeFile* _tmp795_; ValaCCodeFunction* _tmp796_; _tmp22_ = b; _tmp23_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp22_); _tmp24_ = _tmp23_; _tmp25_ = vala_ccode_base_module_next_closure_block (self, _tmp24_); _tmp26_ = _vala_code_node_ref0 (_tmp25_); parent_block = _tmp26_; _tmp27_ = b; _tmp28_ = vala_ccode_base_module_get_block_id (self, _tmp27_); block_id = _tmp28_; _tmp29_ = block_id; _tmp30_ = g_strdup_printf ("Block%dData", _tmp29_); struct_name = _tmp30_; _tmp31_ = struct_name; _tmp32_ = g_strconcat ("_", _tmp31_, NULL); _tmp33_ = _tmp32_; _tmp34_ = vala_ccode_struct_new (_tmp33_); _tmp35_ = _tmp34_; _g_free0 (_tmp33_); data = _tmp35_; _tmp36_ = data; vala_ccode_struct_add_field (_tmp36_, "int", "_ref_count_", NULL); _tmp37_ = parent_block; if (_tmp37_ != NULL) { ValaBlock* _tmp38_; gint _tmp39_ = 0; gint parent_block_id; ValaCCodeStruct* _tmp40_; gint _tmp41_; gchar* _tmp42_ = NULL; gchar* _tmp43_; gint _tmp44_; gchar* _tmp45_ = NULL; gchar* _tmp46_; _tmp38_ = parent_block; _tmp39_ = vala_ccode_base_module_get_block_id (self, _tmp38_); parent_block_id = _tmp39_; _tmp40_ = data; _tmp41_ = parent_block_id; _tmp42_ = g_strdup_printf ("Block%dData *", _tmp41_); _tmp43_ = _tmp42_; _tmp44_ = parent_block_id; _tmp45_ = g_strdup_printf ("_data%d_", _tmp44_); _tmp46_ = _tmp45_; vala_ccode_struct_add_field (_tmp40_, _tmp43_, _tmp46_, NULL); _g_free0 (_tmp46_); _g_free0 (_tmp43_); } else { ValaDataType* _tmp47_ = NULL; ValaDataType* _tmp48_; gboolean _tmp49_; ValaMethod* _tmp57_; ValaMethod* _tmp58_; _tmp47_ = vala_ccode_base_module_get_this_type (self); _tmp48_ = _tmp47_; _tmp49_ = _tmp48_ != NULL; _vala_code_node_unref0 (_tmp48_); if (_tmp49_) { ValaCCodeStruct* _tmp50_; ValaTypeSymbol* _tmp51_; ValaTypeSymbol* _tmp52_; gchar* _tmp53_ = NULL; gchar* _tmp54_; gchar* _tmp55_ = NULL; gchar* _tmp56_; _tmp50_ = data; _tmp51_ = vala_ccode_base_module_get_current_type_symbol (self); _tmp52_ = _tmp51_; _tmp53_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp52_); _tmp54_ = _tmp53_; _tmp55_ = g_strdup_printf ("%s *", _tmp54_); _tmp56_ = _tmp55_; vala_ccode_struct_add_field (_tmp50_, _tmp56_, "self", NULL); _g_free0 (_tmp56_); _g_free0 (_tmp54_); } _tmp57_ = vala_ccode_base_module_get_current_method (self); _tmp58_ = _tmp57_; if (_tmp58_ != NULL) { { ValaMethod* _tmp59_; ValaMethod* _tmp60_; ValaList* _tmp61_ = NULL; ValaList* _type_param_list; ValaList* _tmp62_; gint _tmp63_; gint _tmp64_; gint _type_param_size; gint _type_param_index; _tmp59_ = vala_ccode_base_module_get_current_method (self); _tmp60_ = _tmp59_; _tmp61_ = vala_method_get_type_parameters (_tmp60_); _type_param_list = _tmp61_; _tmp62_ = _type_param_list; _tmp63_ = vala_collection_get_size ((ValaCollection*) _tmp62_); _tmp64_ = _tmp63_; _type_param_size = _tmp64_; _type_param_index = -1; while (TRUE) { gint _tmp65_; gint _tmp66_; gint _tmp67_; ValaList* _tmp68_; gint _tmp69_; gpointer _tmp70_ = NULL; ValaTypeParameter* type_param; gchar* func_name = NULL; ValaTypeParameter* _tmp71_; const gchar* _tmp72_; const gchar* _tmp73_; gchar* _tmp74_ = NULL; gchar* _tmp75_; gchar* _tmp76_ = NULL; ValaCCodeStruct* _tmp77_; const gchar* _tmp78_; ValaTypeParameter* _tmp79_; const gchar* _tmp80_; const gchar* _tmp81_; gchar* _tmp82_ = NULL; gchar* _tmp83_; gchar* _tmp84_ = NULL; ValaCCodeStruct* _tmp85_; const gchar* _tmp86_; ValaTypeParameter* _tmp87_; const gchar* _tmp88_; const gchar* _tmp89_; gchar* _tmp90_ = NULL; gchar* _tmp91_; gchar* _tmp92_ = NULL; ValaCCodeStruct* _tmp93_; const gchar* _tmp94_; _tmp65_ = _type_param_index; _type_param_index = _tmp65_ + 1; _tmp66_ = _type_param_index; _tmp67_ = _type_param_size; if (!(_tmp66_ < _tmp67_)) { break; } _tmp68_ = _type_param_list; _tmp69_ = _type_param_index; _tmp70_ = vala_list_get (_tmp68_, _tmp69_); type_param = (ValaTypeParameter*) _tmp70_; _tmp71_ = type_param; _tmp72_ = vala_symbol_get_name ((ValaSymbol*) _tmp71_); _tmp73_ = _tmp72_; _tmp74_ = g_utf8_strdown (_tmp73_, (gssize) (-1)); _tmp75_ = _tmp74_; _tmp76_ = g_strdup_printf ("%s_type", _tmp75_); _g_free0 (func_name); func_name = _tmp76_; _g_free0 (_tmp75_); _tmp77_ = data; _tmp78_ = func_name; vala_ccode_struct_add_field (_tmp77_, "GType", _tmp78_, NULL); _tmp79_ = type_param; _tmp80_ = vala_symbol_get_name ((ValaSymbol*) _tmp79_); _tmp81_ = _tmp80_; _tmp82_ = g_utf8_strdown (_tmp81_, (gssize) (-1)); _tmp83_ = _tmp82_; _tmp84_ = g_strdup_printf ("%s_dup_func", _tmp83_); _g_free0 (func_name); func_name = _tmp84_; _g_free0 (_tmp83_); _tmp85_ = data; _tmp86_ = func_name; vala_ccode_struct_add_field (_tmp85_, "GBoxedCopyFunc", _tmp86_, NULL); _tmp87_ = type_param; _tmp88_ = vala_symbol_get_name ((ValaSymbol*) _tmp87_); _tmp89_ = _tmp88_; _tmp90_ = g_utf8_strdown (_tmp89_, (gssize) (-1)); _tmp91_ = _tmp90_; _tmp92_ = g_strdup_printf ("%s_destroy_func", _tmp91_); _g_free0 (func_name); func_name = _tmp92_; _g_free0 (_tmp91_); _tmp93_ = data; _tmp94_ = func_name; vala_ccode_struct_add_field (_tmp93_, "GDestroyNotify", _tmp94_, NULL); _g_free0 (func_name); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } } } { ValaList* _tmp95_; ValaList* _tmp96_; ValaList* _local_list; ValaList* _tmp97_; gint _tmp98_; gint _tmp99_; gint _local_size; gint _local_index; _tmp95_ = local_vars; _tmp96_ = _vala_iterable_ref0 (_tmp95_); _local_list = _tmp96_; _tmp97_ = _local_list; _tmp98_ = vala_collection_get_size ((ValaCollection*) _tmp97_); _tmp99_ = _tmp98_; _local_size = _tmp99_; _local_index = -1; while (TRUE) { gint _tmp100_; gint _tmp101_; gint _tmp102_; ValaList* _tmp103_; gint _tmp104_; gpointer _tmp105_ = NULL; ValaLocalVariable* local; ValaLocalVariable* _tmp106_; gboolean _tmp107_; gboolean _tmp108_; _tmp100_ = _local_index; _local_index = _tmp100_ + 1; _tmp101_ = _local_index; _tmp102_ = _local_size; if (!(_tmp101_ < _tmp102_)) { break; } _tmp103_ = _local_list; _tmp104_ = _local_index; _tmp105_ = vala_list_get (_tmp103_, _tmp104_); local = (ValaLocalVariable*) _tmp105_; _tmp106_ = local; _tmp107_ = vala_local_variable_get_captured (_tmp106_); _tmp108_ = _tmp107_; if (_tmp108_) { ValaLocalVariable* _tmp109_; ValaDataType* _tmp110_; ValaDataType* _tmp111_; ValaCCodeFile* _tmp112_; ValaCCodeStruct* _tmp113_; ValaLocalVariable* _tmp114_; ValaDataType* _tmp115_; ValaDataType* _tmp116_; gchar* _tmp117_ = NULL; gchar* _tmp118_; ValaLocalVariable* _tmp119_; gchar* _tmp120_ = NULL; gchar* _tmp121_; ValaLocalVariable* _tmp122_; ValaDataType* _tmp123_; ValaDataType* _tmp124_; gchar* _tmp125_ = NULL; gchar* _tmp126_; gchar* _tmp127_; gchar* _tmp128_; ValaLocalVariable* _tmp129_; ValaDataType* _tmp130_; ValaDataType* _tmp131_; _tmp109_ = local; _tmp110_ = vala_variable_get_variable_type ((ValaVariable*) _tmp109_); _tmp111_ = _tmp110_; _tmp112_ = self->cfile; vala_ccode_base_module_generate_type_declaration (self, _tmp111_, _tmp112_); _tmp113_ = data; _tmp114_ = local; _tmp115_ = vala_variable_get_variable_type ((ValaVariable*) _tmp114_); _tmp116_ = _tmp115_; _tmp117_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp116_); _tmp118_ = _tmp117_; _tmp119_ = local; _tmp120_ = vala_ccode_base_module_get_local_cname (self, _tmp119_); _tmp121_ = _tmp120_; _tmp122_ = local; _tmp123_ = vala_variable_get_variable_type ((ValaVariable*) _tmp122_); _tmp124_ = _tmp123_; _tmp125_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp124_); _tmp126_ = _tmp125_; _tmp127_ = g_strconcat (_tmp121_, _tmp126_, NULL); _tmp128_ = _tmp127_; vala_ccode_struct_add_field (_tmp113_, _tmp118_, _tmp128_, NULL); _g_free0 (_tmp128_); _g_free0 (_tmp126_); _g_free0 (_tmp121_); _g_free0 (_tmp118_); _tmp129_ = local; _tmp130_ = vala_variable_get_variable_type ((ValaVariable*) _tmp129_); _tmp131_ = _tmp130_; if (VALA_IS_ARRAY_TYPE (_tmp131_)) { ValaLocalVariable* _tmp132_; ValaDataType* _tmp133_; ValaDataType* _tmp134_; ValaArrayType* _tmp135_; ValaArrayType* array_type; ValaCCodeStruct* _tmp150_; ValaLocalVariable* _tmp151_; gchar* _tmp152_ = NULL; gchar* _tmp153_; gchar* _tmp154_ = NULL; gchar* _tmp155_; _tmp132_ = local; _tmp133_ = vala_variable_get_variable_type ((ValaVariable*) _tmp132_); _tmp134_ = _tmp133_; _tmp135_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp134_)); array_type = _tmp135_; { gint dim; dim = 1; { gboolean _tmp136_; _tmp136_ = TRUE; while (TRUE) { gboolean _tmp137_; gint _tmp139_; ValaArrayType* _tmp140_; gint _tmp141_; gint _tmp142_; ValaCCodeStruct* _tmp143_; ValaLocalVariable* _tmp144_; gchar* _tmp145_ = NULL; gchar* _tmp146_; gint _tmp147_; gchar* _tmp148_ = NULL; gchar* _tmp149_; _tmp137_ = _tmp136_; if (!_tmp137_) { gint _tmp138_; _tmp138_ = dim; dim = _tmp138_ + 1; } _tmp136_ = FALSE; _tmp139_ = dim; _tmp140_ = array_type; _tmp141_ = vala_array_type_get_rank (_tmp140_); _tmp142_ = _tmp141_; if (!(_tmp139_ <= _tmp142_)) { break; } _tmp143_ = data; _tmp144_ = local; _tmp145_ = vala_ccode_base_module_get_local_cname (self, _tmp144_); _tmp146_ = _tmp145_; _tmp147_ = dim; _tmp148_ = vala_ccode_base_module_get_array_length_cname (self, _tmp146_, _tmp147_); _tmp149_ = _tmp148_; vala_ccode_struct_add_field (_tmp143_, "gint", _tmp149_, NULL); _g_free0 (_tmp149_); _g_free0 (_tmp146_); } } } _tmp150_ = data; _tmp151_ = local; _tmp152_ = vala_ccode_base_module_get_local_cname (self, _tmp151_); _tmp153_ = _tmp152_; _tmp154_ = vala_ccode_base_module_get_array_size_cname (self, _tmp153_); _tmp155_ = _tmp154_; vala_ccode_struct_add_field (_tmp150_, "gint", _tmp155_, NULL); _g_free0 (_tmp155_); _g_free0 (_tmp153_); _vala_code_node_unref0 (array_type); } else { ValaLocalVariable* _tmp156_; ValaDataType* _tmp157_; ValaDataType* _tmp158_; _tmp156_ = local; _tmp157_ = vala_variable_get_variable_type ((ValaVariable*) _tmp156_); _tmp158_ = _tmp157_; if (VALA_IS_DELEGATE_TYPE (_tmp158_)) { ValaCCodeStruct* _tmp159_; ValaLocalVariable* _tmp160_; gchar* _tmp161_ = NULL; gchar* _tmp162_; gchar* _tmp163_ = NULL; gchar* _tmp164_; ValaLocalVariable* _tmp165_; ValaDataType* _tmp166_; ValaDataType* _tmp167_; gboolean _tmp168_; gboolean _tmp169_; _tmp159_ = data; _tmp160_ = local; _tmp161_ = vala_ccode_base_module_get_local_cname (self, _tmp160_); _tmp162_ = _tmp161_; _tmp163_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp162_); _tmp164_ = _tmp163_; vala_ccode_struct_add_field (_tmp159_, "gpointer", _tmp164_, NULL); _g_free0 (_tmp164_); _g_free0 (_tmp162_); _tmp165_ = local; _tmp166_ = vala_variable_get_variable_type ((ValaVariable*) _tmp165_); _tmp167_ = _tmp166_; _tmp168_ = vala_data_type_get_value_owned (_tmp167_); _tmp169_ = _tmp168_; if (_tmp169_) { ValaCCodeStruct* _tmp170_; ValaLocalVariable* _tmp171_; gchar* _tmp172_ = NULL; gchar* _tmp173_; gchar* _tmp174_ = NULL; gchar* _tmp175_; _tmp170_ = data; _tmp171_ = local; _tmp172_ = vala_ccode_base_module_get_local_cname (self, _tmp171_); _tmp173_ = _tmp172_; _tmp174_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp173_); _tmp175_ = _tmp174_; vala_ccode_struct_add_field (_tmp170_, "GDestroyNotify", _tmp175_, NULL); _g_free0 (_tmp175_); _g_free0 (_tmp173_); } } } } _vala_code_node_unref0 (local); } _vala_iterable_unref0 (_local_list); } _tmp176_ = vala_ccode_identifier_new ("g_slice_new0"); _tmp177_ = _tmp176_; _tmp178_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp177_); _tmp179_ = _tmp178_; _vala_ccode_node_unref0 (_tmp177_); data_alloc = _tmp179_; _tmp180_ = data_alloc; _tmp181_ = struct_name; _tmp182_ = vala_ccode_identifier_new (_tmp181_); _tmp183_ = _tmp182_; vala_ccode_function_call_add_argument (_tmp180_, (ValaCCodeExpression*) _tmp183_); _vala_ccode_node_unref0 (_tmp183_); _tmp184_ = vala_ccode_base_module_is_in_coroutine (self); if (_tmp184_) { ValaCCodeStruct* _tmp185_; const gchar* _tmp186_; gchar* _tmp187_; gchar* _tmp188_; gint _tmp189_; gchar* _tmp190_ = NULL; gchar* _tmp191_; _tmp185_ = self->closure_struct; _tmp186_ = struct_name; _tmp187_ = g_strconcat (_tmp186_, "*", NULL); _tmp188_ = _tmp187_; _tmp189_ = block_id; _tmp190_ = g_strdup_printf ("_data%d_", _tmp189_); _tmp191_ = _tmp190_; vala_ccode_struct_add_field (_tmp185_, _tmp188_, _tmp191_, NULL); _g_free0 (_tmp191_); _g_free0 (_tmp188_); } else { ValaCCodeFunction* _tmp192_; ValaCCodeFunction* _tmp193_; const gchar* _tmp194_; gchar* _tmp195_; gchar* _tmp196_; gint _tmp197_; gchar* _tmp198_ = NULL; gchar* _tmp199_; ValaCCodeVariableDeclarator* _tmp200_; ValaCCodeVariableDeclarator* _tmp201_; _tmp192_ = vala_ccode_base_module_get_ccode (self); _tmp193_ = _tmp192_; _tmp194_ = struct_name; _tmp195_ = g_strconcat (_tmp194_, "*", NULL); _tmp196_ = _tmp195_; _tmp197_ = block_id; _tmp198_ = g_strdup_printf ("_data%d_", _tmp197_); _tmp199_ = _tmp198_; _tmp200_ = vala_ccode_variable_declarator_new (_tmp199_, NULL, NULL); _tmp201_ = _tmp200_; vala_ccode_function_add_declaration (_tmp193_, _tmp196_, (ValaCCodeDeclarator*) _tmp201_, 0); _vala_ccode_node_unref0 (_tmp201_); _g_free0 (_tmp199_); _g_free0 (_tmp196_); } _tmp202_ = vala_ccode_base_module_get_ccode (self); _tmp203_ = _tmp202_; _tmp204_ = block_id; _tmp205_ = g_strdup_printf ("_data%d_", _tmp204_); _tmp206_ = _tmp205_; _tmp207_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp206_); _tmp208_ = _tmp207_; _tmp209_ = data_alloc; vala_ccode_function_add_assignment (_tmp203_, _tmp208_, (ValaCCodeExpression*) _tmp209_); _vala_ccode_node_unref0 (_tmp208_); _g_free0 (_tmp206_); _tmp210_ = vala_ccode_base_module_get_ccode (self); _tmp211_ = _tmp210_; _tmp212_ = block_id; _tmp213_ = g_strdup_printf ("_data%d_", _tmp212_); _tmp214_ = _tmp213_; _tmp215_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp214_); _tmp216_ = _tmp215_; _tmp217_ = vala_ccode_member_access_new_pointer (_tmp216_, "_ref_count_"); _tmp218_ = _tmp217_; _tmp219_ = vala_ccode_identifier_new ("1"); _tmp220_ = _tmp219_; vala_ccode_function_add_assignment (_tmp211_, (ValaCCodeExpression*) _tmp218_, (ValaCCodeExpression*) _tmp220_); _vala_ccode_node_unref0 (_tmp220_); _vala_ccode_node_unref0 (_tmp218_); _vala_ccode_node_unref0 (_tmp216_); _g_free0 (_tmp214_); _tmp221_ = parent_block; if (_tmp221_ != NULL) { ValaBlock* _tmp222_; gint _tmp223_ = 0; gint parent_block_id; gint _tmp224_; gchar* _tmp225_ = NULL; gchar* _tmp226_; ValaCCodeIdentifier* _tmp227_; ValaCCodeIdentifier* _tmp228_; ValaCCodeFunctionCall* _tmp229_; ValaCCodeFunctionCall* _tmp230_; ValaCCodeFunctionCall* ref_call; ValaCCodeFunctionCall* _tmp231_; gint _tmp232_; gchar* _tmp233_ = NULL; gchar* _tmp234_; ValaCCodeExpression* _tmp235_ = NULL; ValaCCodeExpression* _tmp236_; ValaCCodeFunction* _tmp237_; ValaCCodeFunction* _tmp238_; gint _tmp239_; gchar* _tmp240_ = NULL; gchar* _tmp241_; ValaCCodeExpression* _tmp242_ = NULL; ValaCCodeExpression* _tmp243_; gint _tmp244_; gchar* _tmp245_ = NULL; gchar* _tmp246_; ValaCCodeMemberAccess* _tmp247_; ValaCCodeMemberAccess* _tmp248_; ValaCCodeFunctionCall* _tmp249_; _tmp222_ = parent_block; _tmp223_ = vala_ccode_base_module_get_block_id (self, _tmp222_); parent_block_id = _tmp223_; _tmp224_ = parent_block_id; _tmp225_ = g_strdup_printf ("block%d_data_ref", _tmp224_); _tmp226_ = _tmp225_; _tmp227_ = vala_ccode_identifier_new (_tmp226_); _tmp228_ = _tmp227_; _tmp229_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp228_); _tmp230_ = _tmp229_; _vala_ccode_node_unref0 (_tmp228_); _g_free0 (_tmp226_); ref_call = _tmp230_; _tmp231_ = ref_call; _tmp232_ = parent_block_id; _tmp233_ = g_strdup_printf ("_data%d_", _tmp232_); _tmp234_ = _tmp233_; _tmp235_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp234_); _tmp236_ = _tmp235_; vala_ccode_function_call_add_argument (_tmp231_, _tmp236_); _vala_ccode_node_unref0 (_tmp236_); _g_free0 (_tmp234_); _tmp237_ = vala_ccode_base_module_get_ccode (self); _tmp238_ = _tmp237_; _tmp239_ = block_id; _tmp240_ = g_strdup_printf ("_data%d_", _tmp239_); _tmp241_ = _tmp240_; _tmp242_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp241_); _tmp243_ = _tmp242_; _tmp244_ = parent_block_id; _tmp245_ = g_strdup_printf ("_data%d_", _tmp244_); _tmp246_ = _tmp245_; _tmp247_ = vala_ccode_member_access_new_pointer (_tmp243_, _tmp246_); _tmp248_ = _tmp247_; _tmp249_ = ref_call; vala_ccode_function_add_assignment (_tmp238_, (ValaCCodeExpression*) _tmp248_, (ValaCCodeExpression*) _tmp249_); _vala_ccode_node_unref0 (_tmp248_); _g_free0 (_tmp246_); _vala_ccode_node_unref0 (_tmp243_); _g_free0 (_tmp241_); _vala_ccode_node_unref0 (ref_call); } else { gboolean _tmp250_ = FALSE; gboolean _tmp251_ = FALSE; ValaMethod* _tmp252_; ValaMethod* _tmp253_; gboolean _tmp256_; gboolean _tmp261_; gboolean in_creation_method_with_chainup; gboolean _tmp262_ = FALSE; ValaDataType* _tmp263_ = NULL; ValaDataType* _tmp264_; gboolean _tmp265_; gboolean _tmp274_; ValaMethod* _tmp299_; ValaMethod* _tmp300_; _tmp252_ = vala_ccode_base_module_get_current_method (self); _tmp253_ = _tmp252_; if (VALA_IS_CREATION_METHOD (_tmp253_)) { ValaClass* _tmp254_; ValaClass* _tmp255_; _tmp254_ = vala_ccode_base_module_get_current_class (self); _tmp255_ = _tmp254_; _tmp251_ = _tmp255_ != NULL; } else { _tmp251_ = FALSE; } _tmp256_ = _tmp251_; if (_tmp256_) { ValaClass* _tmp257_; ValaClass* _tmp258_; ValaClass* _tmp259_; ValaClass* _tmp260_; _tmp257_ = vala_ccode_base_module_get_current_class (self); _tmp258_ = _tmp257_; _tmp259_ = vala_class_get_base_class (_tmp258_); _tmp260_ = _tmp259_; _tmp250_ = _tmp260_ != NULL; } else { _tmp250_ = FALSE; } _tmp261_ = _tmp250_; in_creation_method_with_chainup = _tmp261_; _tmp263_ = vala_ccode_base_module_get_this_type (self); _tmp264_ = _tmp263_; _tmp265_ = _tmp264_ != NULL; _vala_code_node_unref0 (_tmp264_); if (_tmp265_) { gboolean _tmp266_ = FALSE; gboolean _tmp267_; gboolean _tmp273_; _tmp267_ = in_creation_method_with_chainup; if (!_tmp267_) { _tmp266_ = TRUE; } else { ValaMethod* _tmp268_; ValaMethod* _tmp269_; ValaBlock* _tmp270_; ValaBlock* _tmp271_; ValaBlock* _tmp272_; _tmp268_ = vala_ccode_base_module_get_current_method (self); _tmp269_ = _tmp268_; _tmp270_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp269_); _tmp271_ = _tmp270_; _tmp272_ = b; _tmp266_ = _tmp271_ != _tmp272_; } _tmp273_ = _tmp266_; _tmp262_ = _tmp273_; } else { _tmp262_ = FALSE; } _tmp274_ = _tmp262_; if (_tmp274_) { ValaTypeSymbol* _tmp275_; ValaTypeSymbol* _tmp276_; ValaDataType* _tmp277_ = NULL; ValaDataType* _tmp278_; ValaBlock* _tmp279_; ValaSourceReference* _tmp280_; ValaSourceReference* _tmp281_; ValaCCodeExpression* _tmp282_ = NULL; ValaCCodeExpression* _tmp283_; ValaCCodeFunctionCall* _tmp284_; ValaCCodeFunctionCall* _tmp285_; ValaCCodeFunctionCall* ref_call; ValaCCodeFunctionCall* _tmp286_; ValaCCodeExpression* _tmp287_ = NULL; ValaCCodeExpression* _tmp288_; ValaCCodeFunction* _tmp289_; ValaCCodeFunction* _tmp290_; gint _tmp291_; gchar* _tmp292_ = NULL; gchar* _tmp293_; ValaCCodeExpression* _tmp294_ = NULL; ValaCCodeExpression* _tmp295_; ValaCCodeMemberAccess* _tmp296_; ValaCCodeMemberAccess* _tmp297_; ValaCCodeFunctionCall* _tmp298_; _tmp275_ = vala_ccode_base_module_get_current_type_symbol (self); _tmp276_ = _tmp275_; _tmp277_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp276_); _tmp278_ = _tmp277_; _tmp279_ = b; _tmp280_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp279_); _tmp281_ = _tmp280_; _tmp282_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp278_, _tmp281_, FALSE); _tmp283_ = _tmp282_; _tmp284_ = vala_ccode_function_call_new (_tmp283_); _tmp285_ = _tmp284_; _vala_ccode_node_unref0 (_tmp283_); _vala_code_node_unref0 (_tmp278_); ref_call = _tmp285_; _tmp286_ = ref_call; _tmp287_ = vala_ccode_base_module_get_result_cexpression (self, "self"); _tmp288_ = _tmp287_; vala_ccode_function_call_add_argument (_tmp286_, _tmp288_); _vala_ccode_node_unref0 (_tmp288_); _tmp289_ = vala_ccode_base_module_get_ccode (self); _tmp290_ = _tmp289_; _tmp291_ = block_id; _tmp292_ = g_strdup_printf ("_data%d_", _tmp291_); _tmp293_ = _tmp292_; _tmp294_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp293_); _tmp295_ = _tmp294_; _tmp296_ = vala_ccode_member_access_new_pointer (_tmp295_, "self"); _tmp297_ = _tmp296_; _tmp298_ = ref_call; vala_ccode_function_add_assignment (_tmp290_, (ValaCCodeExpression*) _tmp297_, (ValaCCodeExpression*) _tmp298_); _vala_ccode_node_unref0 (_tmp297_); _vala_ccode_node_unref0 (_tmp295_); _g_free0 (_tmp293_); _vala_ccode_node_unref0 (ref_call); } _tmp299_ = vala_ccode_base_module_get_current_method (self); _tmp300_ = _tmp299_; if (_tmp300_ != NULL) { gchar* _tmp301_; gchar* _tmp302_; gchar* _tmp303_; gchar** _tmp304_ = NULL; gchar** suffices; gint suffices_length1; gint _suffices_size_; _tmp301_ = g_strdup ("type"); _tmp302_ = g_strdup ("dup_func"); _tmp303_ = g_strdup ("destroy_func"); _tmp304_ = g_new0 (gchar*, 3 + 1); _tmp304_[0] = _tmp301_; _tmp304_[1] = _tmp302_; _tmp304_[2] = _tmp303_; suffices = _tmp304_; suffices_length1 = 3; _suffices_size_ = suffices_length1; { ValaMethod* _tmp305_; ValaMethod* _tmp306_; ValaList* _tmp307_ = NULL; ValaList* _type_param_list; ValaList* _tmp308_; gint _tmp309_; gint _tmp310_; gint _type_param_size; gint _type_param_index; _tmp305_ = vala_ccode_base_module_get_current_method (self); _tmp306_ = _tmp305_; _tmp307_ = vala_method_get_type_parameters (_tmp306_); _type_param_list = _tmp307_; _tmp308_ = _type_param_list; _tmp309_ = vala_collection_get_size ((ValaCollection*) _tmp308_); _tmp310_ = _tmp309_; _type_param_size = _tmp310_; _type_param_index = -1; while (TRUE) { gint _tmp311_; gint _tmp312_; gint _tmp313_; ValaList* _tmp314_; gint _tmp315_; gpointer _tmp316_ = NULL; ValaTypeParameter* type_param; gchar** _tmp317_; gint _tmp317__length1; _tmp311_ = _type_param_index; _type_param_index = _tmp311_ + 1; _tmp312_ = _type_param_index; _tmp313_ = _type_param_size; if (!(_tmp312_ < _tmp313_)) { break; } _tmp314_ = _type_param_list; _tmp315_ = _type_param_index; _tmp316_ = vala_list_get (_tmp314_, _tmp315_); type_param = (ValaTypeParameter*) _tmp316_; _tmp317_ = suffices; _tmp317__length1 = suffices_length1; { gchar** suffix_collection = NULL; gint suffix_collection_length1 = 0; gint _suffix_collection_size_ = 0; gint suffix_it = 0; suffix_collection = _tmp317_; suffix_collection_length1 = _tmp317__length1; for (suffix_it = 0; suffix_it < _tmp317__length1; suffix_it = suffix_it + 1) { gchar* _tmp318_; gchar* suffix = NULL; _tmp318_ = g_strdup (suffix_collection[suffix_it]); suffix = _tmp318_; { ValaTypeParameter* _tmp319_; const gchar* _tmp320_; const gchar* _tmp321_; gchar* _tmp322_ = NULL; gchar* _tmp323_; const gchar* _tmp324_; gchar* _tmp325_ = NULL; gchar* _tmp326_; gchar* func_name; ValaCCodeFunction* _tmp327_; ValaCCodeFunction* _tmp328_; gint _tmp329_; gchar* _tmp330_ = NULL; gchar* _tmp331_; ValaCCodeExpression* _tmp332_ = NULL; ValaCCodeExpression* _tmp333_; const gchar* _tmp334_; ValaCCodeMemberAccess* _tmp335_; ValaCCodeMemberAccess* _tmp336_; const gchar* _tmp337_; ValaCCodeExpression* _tmp338_ = NULL; ValaCCodeExpression* _tmp339_; _tmp319_ = type_param; _tmp320_ = vala_symbol_get_name ((ValaSymbol*) _tmp319_); _tmp321_ = _tmp320_; _tmp322_ = g_utf8_strdown (_tmp321_, (gssize) (-1)); _tmp323_ = _tmp322_; _tmp324_ = suffix; _tmp325_ = g_strdup_printf ("%s_%s", _tmp323_, _tmp324_); _tmp326_ = _tmp325_; _g_free0 (_tmp323_); func_name = _tmp326_; _tmp327_ = vala_ccode_base_module_get_ccode (self); _tmp328_ = _tmp327_; _tmp329_ = block_id; _tmp330_ = g_strdup_printf ("_data%d_", _tmp329_); _tmp331_ = _tmp330_; _tmp332_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp331_); _tmp333_ = _tmp332_; _tmp334_ = func_name; _tmp335_ = vala_ccode_member_access_new_pointer (_tmp333_, _tmp334_); _tmp336_ = _tmp335_; _tmp337_ = func_name; _tmp338_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp337_); _tmp339_ = _tmp338_; vala_ccode_function_add_assignment (_tmp328_, (ValaCCodeExpression*) _tmp336_, _tmp339_); _vala_ccode_node_unref0 (_tmp339_); _vala_ccode_node_unref0 (_tmp336_); _vala_ccode_node_unref0 (_tmp333_); _g_free0 (_tmp331_); _g_free0 (func_name); _g_free0 (suffix); } } } _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } suffices = (_vala_array_free (suffices, suffices_length1, (GDestroyNotify) g_free), NULL); } } _tmp340_ = b; _tmp341_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp340_); _tmp342_ = _tmp341_; if (VALA_IS_METHOD (_tmp342_)) { ValaBlock* _tmp343_; ValaSymbol* _tmp344_; ValaSymbol* _tmp345_; ValaMethod* _tmp346_; ValaMethod* m; ValaMethod* _tmp364_; gboolean _tmp365_; gboolean _tmp366_; _tmp343_ = b; _tmp344_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp343_); _tmp345_ = _tmp344_; _tmp346_ = _vala_code_node_ref0 (VALA_METHOD (_tmp345_)); m = _tmp346_; { ValaMethod* _tmp347_; ValaList* _tmp348_ = NULL; ValaList* _param_list; ValaList* _tmp349_; gint _tmp350_; gint _tmp351_; gint _param_size; gint _param_index; _tmp347_ = m; _tmp348_ = vala_method_get_parameters (_tmp347_); _param_list = _tmp348_; _tmp349_ = _param_list; _tmp350_ = vala_collection_get_size ((ValaCollection*) _tmp349_); _tmp351_ = _tmp350_; _param_size = _tmp351_; _param_index = -1; while (TRUE) { gint _tmp352_; gint _tmp353_; gint _tmp354_; ValaList* _tmp355_; gint _tmp356_; gpointer _tmp357_ = NULL; ValaParameter* param; ValaParameter* _tmp358_; gboolean _tmp359_; gboolean _tmp360_; _tmp352_ = _param_index; _param_index = _tmp352_ + 1; _tmp353_ = _param_index; _tmp354_ = _param_size; if (!(_tmp353_ < _tmp354_)) { break; } _tmp355_ = _param_list; _tmp356_ = _param_index; _tmp357_ = vala_list_get (_tmp355_, _tmp356_); param = (ValaParameter*) _tmp357_; _tmp358_ = param; _tmp359_ = vala_parameter_get_captured (_tmp358_); _tmp360_ = _tmp359_; if (_tmp360_) { ValaParameter* _tmp361_; ValaCCodeStruct* _tmp362_; gint _tmp363_; _tmp361_ = param; _tmp362_ = data; _tmp363_ = block_id; vala_ccode_base_module_capture_parameter (self, _tmp361_, _tmp362_, _tmp363_); } _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp364_ = m; _tmp365_ = vala_method_get_coroutine (_tmp364_); _tmp366_ = _tmp365_; if (_tmp366_) { ValaCCodeStruct* _tmp367_; ValaCCodeFunction* _tmp368_; ValaCCodeFunction* _tmp369_; gint _tmp370_; gchar* _tmp371_ = NULL; gchar* _tmp372_; ValaCCodeExpression* _tmp373_ = NULL; ValaCCodeExpression* _tmp374_; ValaCCodeMemberAccess* _tmp375_; ValaCCodeMemberAccess* _tmp376_; ValaCCodeIdentifier* _tmp377_; ValaCCodeIdentifier* _tmp378_; _tmp367_ = data; vala_ccode_struct_add_field (_tmp367_, "gpointer", "_async_data_", NULL); _tmp368_ = vala_ccode_base_module_get_ccode (self); _tmp369_ = _tmp368_; _tmp370_ = block_id; _tmp371_ = g_strdup_printf ("_data%d_", _tmp370_); _tmp372_ = _tmp371_; _tmp373_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp372_); _tmp374_ = _tmp373_; _tmp375_ = vala_ccode_member_access_new_pointer (_tmp374_, "_async_data_"); _tmp376_ = _tmp375_; _tmp377_ = vala_ccode_identifier_new ("_data_"); _tmp378_ = _tmp377_; vala_ccode_function_add_assignment (_tmp369_, (ValaCCodeExpression*) _tmp376_, (ValaCCodeExpression*) _tmp378_); _vala_ccode_node_unref0 (_tmp378_); _vala_ccode_node_unref0 (_tmp376_); _vala_ccode_node_unref0 (_tmp374_); _g_free0 (_tmp372_); } _vala_code_node_unref0 (m); } else { ValaBlock* _tmp379_; ValaSymbol* _tmp380_; ValaSymbol* _tmp381_; _tmp379_ = b; _tmp380_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp379_); _tmp381_ = _tmp380_; if (VALA_IS_PROPERTY_ACCESSOR (_tmp381_)) { ValaBlock* _tmp382_; ValaSymbol* _tmp383_; ValaSymbol* _tmp384_; ValaPropertyAccessor* _tmp385_; ValaPropertyAccessor* acc; gboolean _tmp386_ = FALSE; ValaPropertyAccessor* _tmp387_; gboolean _tmp388_; gboolean _tmp389_; gboolean _tmp395_; _tmp382_ = b; _tmp383_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp382_); _tmp384_ = _tmp383_; _tmp385_ = _vala_code_node_ref0 (VALA_PROPERTY_ACCESSOR (_tmp384_)); acc = _tmp385_; _tmp387_ = acc; _tmp388_ = vala_property_accessor_get_readable (_tmp387_); _tmp389_ = _tmp388_; if (!_tmp389_) { ValaPropertyAccessor* _tmp390_; ValaParameter* _tmp391_; ValaParameter* _tmp392_; gboolean _tmp393_; gboolean _tmp394_; _tmp390_ = acc; _tmp391_ = vala_property_accessor_get_value_parameter (_tmp390_); _tmp392_ = _tmp391_; _tmp393_ = vala_parameter_get_captured (_tmp392_); _tmp394_ = _tmp393_; _tmp386_ = _tmp394_; } else { _tmp386_ = FALSE; } _tmp395_ = _tmp386_; if (_tmp395_) { ValaPropertyAccessor* _tmp396_; ValaParameter* _tmp397_; ValaParameter* _tmp398_; ValaCCodeStruct* _tmp399_; gint _tmp400_; _tmp396_ = acc; _tmp397_ = vala_property_accessor_get_value_parameter (_tmp396_); _tmp398_ = _tmp397_; _tmp399_ = data; _tmp400_ = block_id; vala_ccode_base_module_capture_parameter (self, _tmp398_, _tmp399_, _tmp400_); } _vala_code_node_unref0 (acc); } } _tmp401_ = struct_name; _tmp402_ = g_strconcat ("struct _", _tmp401_, NULL); _tmp403_ = _tmp402_; _tmp404_ = struct_name; _tmp405_ = vala_ccode_variable_declarator_new (_tmp404_, NULL, NULL); _tmp406_ = _tmp405_; _tmp407_ = vala_ccode_type_definition_new (_tmp403_, (ValaCCodeDeclarator*) _tmp406_); _tmp408_ = _tmp407_; _vala_ccode_node_unref0 (_tmp406_); _g_free0 (_tmp403_); _typedef_ = _tmp408_; _tmp409_ = self->cfile; _tmp410_ = _typedef_; vala_ccode_file_add_type_declaration (_tmp409_, (ValaCCodeNode*) _tmp410_); _tmp411_ = self->cfile; _tmp412_ = data; vala_ccode_file_add_type_definition (_tmp411_, (ValaCCodeNode*) _tmp412_); _tmp413_ = block_id; _tmp414_ = g_strdup_printf ("block%d_data_ref", _tmp413_); _tmp415_ = _tmp414_; _tmp416_ = struct_name; _tmp417_ = g_strconcat (_tmp416_, "*", NULL); _tmp418_ = _tmp417_; _tmp419_ = vala_ccode_function_new (_tmp415_, _tmp418_); _tmp420_ = _tmp419_; _g_free0 (_tmp418_); _g_free0 (_tmp415_); ref_fun = _tmp420_; _tmp421_ = ref_fun; _tmp422_ = block_id; _tmp423_ = g_strdup_printf ("_data%d_", _tmp422_); _tmp424_ = _tmp423_; _tmp425_ = struct_name; _tmp426_ = g_strconcat (_tmp425_, "*", NULL); _tmp427_ = _tmp426_; _tmp428_ = vala_ccode_parameter_new (_tmp424_, _tmp427_); _tmp429_ = _tmp428_; vala_ccode_function_add_parameter (_tmp421_, _tmp429_); _vala_ccode_node_unref0 (_tmp429_); _g_free0 (_tmp427_); _g_free0 (_tmp424_); _tmp430_ = ref_fun; vala_ccode_function_set_modifiers (_tmp430_, VALA_CCODE_MODIFIERS_STATIC); _tmp431_ = ref_fun; vala_ccode_base_module_push_function (self, _tmp431_); _tmp432_ = vala_ccode_identifier_new ("g_atomic_int_inc"); _tmp433_ = _tmp432_; _tmp434_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp433_); _tmp435_ = _tmp434_; _vala_ccode_node_unref0 (_tmp433_); ccall = _tmp435_; _tmp436_ = ccall; _tmp437_ = block_id; _tmp438_ = g_strdup_printf ("_data%d_", _tmp437_); _tmp439_ = _tmp438_; _tmp440_ = vala_ccode_identifier_new (_tmp439_); _tmp441_ = _tmp440_; _tmp442_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp441_, "_ref_count_"); _tmp443_ = _tmp442_; _tmp444_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp443_); _tmp445_ = _tmp444_; vala_ccode_function_call_add_argument (_tmp436_, (ValaCCodeExpression*) _tmp445_); _vala_ccode_node_unref0 (_tmp445_); _vala_ccode_node_unref0 (_tmp443_); _vala_ccode_node_unref0 (_tmp441_); _g_free0 (_tmp439_); _tmp446_ = vala_ccode_base_module_get_ccode (self); _tmp447_ = _tmp446_; _tmp448_ = ccall; vala_ccode_function_add_expression (_tmp447_, (ValaCCodeExpression*) _tmp448_); _tmp449_ = vala_ccode_base_module_get_ccode (self); _tmp450_ = _tmp449_; _tmp451_ = block_id; _tmp452_ = g_strdup_printf ("_data%d_", _tmp451_); _tmp453_ = _tmp452_; _tmp454_ = vala_ccode_identifier_new (_tmp453_); _tmp455_ = _tmp454_; vala_ccode_function_add_return (_tmp450_, (ValaCCodeExpression*) _tmp455_); _vala_ccode_node_unref0 (_tmp455_); _g_free0 (_tmp453_); vala_ccode_base_module_pop_function (self); _tmp456_ = self->cfile; _tmp457_ = ref_fun; vala_ccode_file_add_function_declaration (_tmp456_, _tmp457_); _tmp458_ = self->cfile; _tmp459_ = ref_fun; vala_ccode_file_add_function (_tmp458_, _tmp459_); _tmp460_ = block_id; _tmp461_ = g_strdup_printf ("block%d_data_unref", _tmp460_); _tmp462_ = _tmp461_; _tmp463_ = vala_ccode_function_new (_tmp462_, "void"); _tmp464_ = _tmp463_; _g_free0 (_tmp462_); unref_fun = _tmp464_; _tmp465_ = unref_fun; _tmp466_ = block_id; _tmp467_ = g_strdup_printf ("_data%d_", _tmp466_); _tmp468_ = _tmp467_; _tmp469_ = struct_name; _tmp470_ = g_strconcat (_tmp469_, "*", NULL); _tmp471_ = _tmp470_; _tmp472_ = vala_ccode_parameter_new (_tmp468_, _tmp471_); _tmp473_ = _tmp472_; vala_ccode_function_add_parameter (_tmp465_, _tmp473_); _vala_ccode_node_unref0 (_tmp473_); _g_free0 (_tmp471_); _g_free0 (_tmp468_); _tmp474_ = unref_fun; vala_ccode_function_set_modifiers (_tmp474_, VALA_CCODE_MODIFIERS_STATIC); _tmp475_ = unref_fun; vala_ccode_base_module_push_function (self, _tmp475_); _tmp476_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test"); _tmp477_ = _tmp476_; _tmp478_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp477_); _vala_ccode_node_unref0 (ccall); ccall = _tmp478_; _vala_ccode_node_unref0 (_tmp477_); _tmp479_ = ccall; _tmp480_ = block_id; _tmp481_ = g_strdup_printf ("_data%d_", _tmp480_); _tmp482_ = _tmp481_; _tmp483_ = vala_ccode_identifier_new (_tmp482_); _tmp484_ = _tmp483_; _tmp485_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp484_, "_ref_count_"); _tmp486_ = _tmp485_; _tmp487_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp486_); _tmp488_ = _tmp487_; vala_ccode_function_call_add_argument (_tmp479_, (ValaCCodeExpression*) _tmp488_); _vala_ccode_node_unref0 (_tmp488_); _vala_ccode_node_unref0 (_tmp486_); _vala_ccode_node_unref0 (_tmp484_); _g_free0 (_tmp482_); _tmp489_ = vala_ccode_base_module_get_ccode (self); _tmp490_ = _tmp489_; _tmp491_ = ccall; vala_ccode_function_open_if (_tmp490_, (ValaCCodeExpression*) _tmp491_); _tmp492_ = block_id; _tmp493_ = g_strdup_printf ("_data%d_", _tmp492_); _tmp494_ = _tmp493_; _tmp495_ = vala_ccode_identifier_new (_tmp494_); _tmp496_ = (ValaCCodeExpression*) _tmp495_; _g_free0 (_tmp494_); outer_block = _tmp496_; _tmp497_ = b; parent_closure_block = _tmp497_; while (TRUE) { ValaBlock* _tmp498_; ValaSymbol* _tmp499_; ValaSymbol* _tmp500_; ValaBlock* _tmp501_ = NULL; ValaBlock* _tmp502_; ValaBlock* _tmp503_; gint _tmp504_ = 0; gint parent_block_id; ValaCCodeExpression* _tmp505_; gint _tmp506_; gchar* _tmp507_ = NULL; gchar* _tmp508_; ValaCCodeMemberAccess* _tmp509_; _tmp498_ = parent_closure_block; _tmp499_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp498_); _tmp500_ = _tmp499_; _tmp501_ = vala_ccode_base_module_next_closure_block (self, _tmp500_); parent_closure_block = _tmp501_; _tmp502_ = parent_closure_block; if (_tmp502_ == NULL) { break; } _tmp503_ = parent_closure_block; _tmp504_ = vala_ccode_base_module_get_block_id (self, _tmp503_); parent_block_id = _tmp504_; _tmp505_ = outer_block; _tmp506_ = parent_block_id; _tmp507_ = g_strdup_printf ("_data%d_", _tmp506_); _tmp508_ = _tmp507_; _tmp509_ = vala_ccode_member_access_new_pointer (_tmp505_, _tmp508_); _vala_ccode_node_unref0 (outer_block); outer_block = (ValaCCodeExpression*) _tmp509_; _g_free0 (_tmp508_); } _tmp510_ = vala_ccode_base_module_get_this_type (self); _tmp511_ = _tmp510_; _tmp512_ = _tmp511_ != NULL; _vala_code_node_unref0 (_tmp511_); if (_tmp512_) { ValaCCodeFunction* _tmp513_; ValaCCodeFunction* _tmp514_; ValaTypeSymbol* _tmp515_; ValaTypeSymbol* _tmp516_; gchar* _tmp517_ = NULL; gchar* _tmp518_; gchar* _tmp519_ = NULL; gchar* _tmp520_; ValaCCodeVariableDeclarator* _tmp521_; ValaCCodeVariableDeclarator* _tmp522_; ValaCCodeFunction* _tmp523_; ValaCCodeFunction* _tmp524_; ValaCCodeIdentifier* _tmp525_; ValaCCodeIdentifier* _tmp526_; ValaCCodeExpression* _tmp527_; ValaCCodeMemberAccess* _tmp528_; ValaCCodeMemberAccess* _tmp529_; _tmp513_ = vala_ccode_base_module_get_ccode (self); _tmp514_ = _tmp513_; _tmp515_ = vala_ccode_base_module_get_current_type_symbol (self); _tmp516_ = _tmp515_; _tmp517_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp516_); _tmp518_ = _tmp517_; _tmp519_ = g_strdup_printf ("%s *", _tmp518_); _tmp520_ = _tmp519_; _tmp521_ = vala_ccode_variable_declarator_new ("self", NULL, NULL); _tmp522_ = _tmp521_; vala_ccode_function_add_declaration (_tmp514_, _tmp520_, (ValaCCodeDeclarator*) _tmp522_, 0); _vala_ccode_node_unref0 (_tmp522_); _g_free0 (_tmp520_); _g_free0 (_tmp518_); _tmp523_ = vala_ccode_base_module_get_ccode (self); _tmp524_ = _tmp523_; _tmp525_ = vala_ccode_identifier_new ("self"); _tmp526_ = _tmp525_; _tmp527_ = outer_block; _tmp528_ = vala_ccode_member_access_new_pointer (_tmp527_, "self"); _tmp529_ = _tmp528_; vala_ccode_function_add_assignment (_tmp524_, (ValaCCodeExpression*) _tmp526_, (ValaCCodeExpression*) _tmp529_); _vala_ccode_node_unref0 (_tmp529_); _vala_ccode_node_unref0 (_tmp526_); } _tmp530_ = vala_ccode_base_module_get_current_method (self); _tmp531_ = _tmp530_; if (_tmp531_ != NULL) { { ValaMethod* _tmp532_; ValaMethod* _tmp533_; ValaList* _tmp534_ = NULL; ValaList* _type_param_list; ValaList* _tmp535_; gint _tmp536_; gint _tmp537_; gint _type_param_size; gint _type_param_index; _tmp532_ = vala_ccode_base_module_get_current_method (self); _tmp533_ = _tmp532_; _tmp534_ = vala_method_get_type_parameters (_tmp533_); _type_param_list = _tmp534_; _tmp535_ = _type_param_list; _tmp536_ = vala_collection_get_size ((ValaCollection*) _tmp535_); _tmp537_ = _tmp536_; _type_param_size = _tmp537_; _type_param_index = -1; while (TRUE) { gint _tmp538_; gint _tmp539_; gint _tmp540_; ValaList* _tmp541_; gint _tmp542_; gpointer _tmp543_ = NULL; ValaTypeParameter* type_param; gchar* func_name = NULL; ValaTypeParameter* _tmp544_; const gchar* _tmp545_; const gchar* _tmp546_; gchar* _tmp547_ = NULL; gchar* _tmp548_; gchar* _tmp549_ = NULL; ValaCCodeFunction* _tmp550_; ValaCCodeFunction* _tmp551_; const gchar* _tmp552_; ValaCCodeVariableDeclarator* _tmp553_; ValaCCodeVariableDeclarator* _tmp554_; ValaCCodeFunction* _tmp555_; ValaCCodeFunction* _tmp556_; const gchar* _tmp557_; ValaCCodeIdentifier* _tmp558_; ValaCCodeIdentifier* _tmp559_; ValaCCodeExpression* _tmp560_; const gchar* _tmp561_; ValaCCodeMemberAccess* _tmp562_; ValaCCodeMemberAccess* _tmp563_; ValaTypeParameter* _tmp564_; const gchar* _tmp565_; const gchar* _tmp566_; gchar* _tmp567_ = NULL; gchar* _tmp568_; gchar* _tmp569_ = NULL; ValaCCodeFunction* _tmp570_; ValaCCodeFunction* _tmp571_; const gchar* _tmp572_; ValaCCodeVariableDeclarator* _tmp573_; ValaCCodeVariableDeclarator* _tmp574_; ValaCCodeFunction* _tmp575_; ValaCCodeFunction* _tmp576_; const gchar* _tmp577_; ValaCCodeIdentifier* _tmp578_; ValaCCodeIdentifier* _tmp579_; ValaCCodeExpression* _tmp580_; const gchar* _tmp581_; ValaCCodeMemberAccess* _tmp582_; ValaCCodeMemberAccess* _tmp583_; ValaTypeParameter* _tmp584_; const gchar* _tmp585_; const gchar* _tmp586_; gchar* _tmp587_ = NULL; gchar* _tmp588_; gchar* _tmp589_ = NULL; ValaCCodeFunction* _tmp590_; ValaCCodeFunction* _tmp591_; const gchar* _tmp592_; ValaCCodeVariableDeclarator* _tmp593_; ValaCCodeVariableDeclarator* _tmp594_; ValaCCodeFunction* _tmp595_; ValaCCodeFunction* _tmp596_; const gchar* _tmp597_; ValaCCodeIdentifier* _tmp598_; ValaCCodeIdentifier* _tmp599_; ValaCCodeExpression* _tmp600_; const gchar* _tmp601_; ValaCCodeMemberAccess* _tmp602_; ValaCCodeMemberAccess* _tmp603_; _tmp538_ = _type_param_index; _type_param_index = _tmp538_ + 1; _tmp539_ = _type_param_index; _tmp540_ = _type_param_size; if (!(_tmp539_ < _tmp540_)) { break; } _tmp541_ = _type_param_list; _tmp542_ = _type_param_index; _tmp543_ = vala_list_get (_tmp541_, _tmp542_); type_param = (ValaTypeParameter*) _tmp543_; _tmp544_ = type_param; _tmp545_ = vala_symbol_get_name ((ValaSymbol*) _tmp544_); _tmp546_ = _tmp545_; _tmp547_ = g_utf8_strdown (_tmp546_, (gssize) (-1)); _tmp548_ = _tmp547_; _tmp549_ = g_strdup_printf ("%s_type", _tmp548_); _g_free0 (func_name); func_name = _tmp549_; _g_free0 (_tmp548_); _tmp550_ = vala_ccode_base_module_get_ccode (self); _tmp551_ = _tmp550_; _tmp552_ = func_name; _tmp553_ = vala_ccode_variable_declarator_new (_tmp552_, NULL, NULL); _tmp554_ = _tmp553_; vala_ccode_function_add_declaration (_tmp551_, "GType", (ValaCCodeDeclarator*) _tmp554_, 0); _vala_ccode_node_unref0 (_tmp554_); _tmp555_ = vala_ccode_base_module_get_ccode (self); _tmp556_ = _tmp555_; _tmp557_ = func_name; _tmp558_ = vala_ccode_identifier_new (_tmp557_); _tmp559_ = _tmp558_; _tmp560_ = outer_block; _tmp561_ = func_name; _tmp562_ = vala_ccode_member_access_new_pointer (_tmp560_, _tmp561_); _tmp563_ = _tmp562_; vala_ccode_function_add_assignment (_tmp556_, (ValaCCodeExpression*) _tmp559_, (ValaCCodeExpression*) _tmp563_); _vala_ccode_node_unref0 (_tmp563_); _vala_ccode_node_unref0 (_tmp559_); _tmp564_ = type_param; _tmp565_ = vala_symbol_get_name ((ValaSymbol*) _tmp564_); _tmp566_ = _tmp565_; _tmp567_ = g_utf8_strdown (_tmp566_, (gssize) (-1)); _tmp568_ = _tmp567_; _tmp569_ = g_strdup_printf ("%s_dup_func", _tmp568_); _g_free0 (func_name); func_name = _tmp569_; _g_free0 (_tmp568_); _tmp570_ = vala_ccode_base_module_get_ccode (self); _tmp571_ = _tmp570_; _tmp572_ = func_name; _tmp573_ = vala_ccode_variable_declarator_new (_tmp572_, NULL, NULL); _tmp574_ = _tmp573_; vala_ccode_function_add_declaration (_tmp571_, "GBoxedCopyFunc", (ValaCCodeDeclarator*) _tmp574_, 0); _vala_ccode_node_unref0 (_tmp574_); _tmp575_ = vala_ccode_base_module_get_ccode (self); _tmp576_ = _tmp575_; _tmp577_ = func_name; _tmp578_ = vala_ccode_identifier_new (_tmp577_); _tmp579_ = _tmp578_; _tmp580_ = outer_block; _tmp581_ = func_name; _tmp582_ = vala_ccode_member_access_new_pointer (_tmp580_, _tmp581_); _tmp583_ = _tmp582_; vala_ccode_function_add_assignment (_tmp576_, (ValaCCodeExpression*) _tmp579_, (ValaCCodeExpression*) _tmp583_); _vala_ccode_node_unref0 (_tmp583_); _vala_ccode_node_unref0 (_tmp579_); _tmp584_ = type_param; _tmp585_ = vala_symbol_get_name ((ValaSymbol*) _tmp584_); _tmp586_ = _tmp585_; _tmp587_ = g_utf8_strdown (_tmp586_, (gssize) (-1)); _tmp588_ = _tmp587_; _tmp589_ = g_strdup_printf ("%s_destroy_func", _tmp588_); _g_free0 (func_name); func_name = _tmp589_; _g_free0 (_tmp588_); _tmp590_ = vala_ccode_base_module_get_ccode (self); _tmp591_ = _tmp590_; _tmp592_ = func_name; _tmp593_ = vala_ccode_variable_declarator_new (_tmp592_, NULL, NULL); _tmp594_ = _tmp593_; vala_ccode_function_add_declaration (_tmp591_, "GDestroyNotify", (ValaCCodeDeclarator*) _tmp594_, 0); _vala_ccode_node_unref0 (_tmp594_); _tmp595_ = vala_ccode_base_module_get_ccode (self); _tmp596_ = _tmp595_; _tmp597_ = func_name; _tmp598_ = vala_ccode_identifier_new (_tmp597_); _tmp599_ = _tmp598_; _tmp600_ = outer_block; _tmp601_ = func_name; _tmp602_ = vala_ccode_member_access_new_pointer (_tmp600_, _tmp601_); _tmp603_ = _tmp602_; vala_ccode_function_add_assignment (_tmp596_, (ValaCCodeExpression*) _tmp599_, (ValaCCodeExpression*) _tmp603_); _vala_ccode_node_unref0 (_tmp603_); _vala_ccode_node_unref0 (_tmp599_); _g_free0 (func_name); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } } { ValaList* _tmp604_; gint _tmp605_; gint _tmp606_; gint i; _tmp604_ = local_vars; _tmp605_ = vala_collection_get_size ((ValaCollection*) _tmp604_); _tmp606_ = _tmp605_; i = _tmp606_ - 1; { gboolean _tmp607_; _tmp607_ = TRUE; while (TRUE) { gboolean _tmp608_; gint _tmp610_; ValaList* _tmp611_; gint _tmp612_; gpointer _tmp613_ = NULL; ValaLocalVariable* local; ValaLocalVariable* _tmp614_; gboolean _tmp615_; gboolean _tmp616_; _tmp608_ = _tmp607_; if (!_tmp608_) { gint _tmp609_; _tmp609_ = i; i = _tmp609_ - 1; } _tmp607_ = FALSE; _tmp610_ = i; if (!(_tmp610_ >= 0)) { break; } _tmp611_ = local_vars; _tmp612_ = i; _tmp613_ = vala_list_get (_tmp611_, _tmp612_); local = (ValaLocalVariable*) _tmp613_; _tmp614_ = local; _tmp615_ = vala_local_variable_get_captured (_tmp614_); _tmp616_ = _tmp615_; if (_tmp616_) { ValaLocalVariable* _tmp617_; ValaDataType* _tmp618_; ValaDataType* _tmp619_; gboolean _tmp620_ = FALSE; _tmp617_ = local; _tmp618_ = vala_variable_get_variable_type ((ValaVariable*) _tmp617_); _tmp619_ = _tmp618_; _tmp620_ = vala_ccode_base_module_requires_destroy (self, _tmp619_); if (_tmp620_) { gboolean old_coroutine; ValaMethod* _tmp621_; ValaMethod* _tmp622_; ValaCCodeFunction* _tmp629_; ValaCCodeFunction* _tmp630_; ValaLocalVariable* _tmp631_; ValaCCodeExpression* _tmp632_ = NULL; ValaCCodeExpression* _tmp633_; gboolean _tmp634_; old_coroutine = FALSE; _tmp621_ = vala_ccode_base_module_get_current_method (self); _tmp622_ = _tmp621_; if (_tmp622_ != NULL) { ValaMethod* _tmp623_; ValaMethod* _tmp624_; gboolean _tmp625_; gboolean _tmp626_; ValaMethod* _tmp627_; ValaMethod* _tmp628_; _tmp623_ = vala_ccode_base_module_get_current_method (self); _tmp624_ = _tmp623_; _tmp625_ = vala_method_get_coroutine (_tmp624_); _tmp626_ = _tmp625_; old_coroutine = _tmp626_; _tmp627_ = vala_ccode_base_module_get_current_method (self); _tmp628_ = _tmp627_; vala_method_set_coroutine (_tmp628_, FALSE); } _tmp629_ = vala_ccode_base_module_get_ccode (self); _tmp630_ = _tmp629_; _tmp631_ = local; _tmp632_ = vala_ccode_base_module_destroy_local (self, _tmp631_); _tmp633_ = _tmp632_; vala_ccode_function_add_expression (_tmp630_, _tmp633_); _vala_ccode_node_unref0 (_tmp633_); _tmp634_ = old_coroutine; if (_tmp634_) { ValaMethod* _tmp635_; ValaMethod* _tmp636_; _tmp635_ = vala_ccode_base_module_get_current_method (self); _tmp636_ = _tmp635_; vala_method_set_coroutine (_tmp636_, TRUE); } } } _vala_code_node_unref0 (local); } } } _tmp637_ = b; _tmp638_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp637_); _tmp639_ = _tmp638_; if (VALA_IS_METHOD (_tmp639_)) { ValaBlock* _tmp640_; ValaSymbol* _tmp641_; ValaSymbol* _tmp642_; ValaMethod* _tmp643_; ValaMethod* m; _tmp640_ = b; _tmp641_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp640_); _tmp642_ = _tmp641_; _tmp643_ = _vala_code_node_ref0 (VALA_METHOD (_tmp642_)); m = _tmp643_; { ValaMethod* _tmp644_; ValaList* _tmp645_ = NULL; ValaList* _param_list; ValaList* _tmp646_; gint _tmp647_; gint _tmp648_; gint _param_size; gint _param_index; _tmp644_ = m; _tmp645_ = vala_method_get_parameters (_tmp644_); _param_list = _tmp645_; _tmp646_ = _param_list; _tmp647_ = vala_collection_get_size ((ValaCollection*) _tmp646_); _tmp648_ = _tmp647_; _param_size = _tmp648_; _param_index = -1; while (TRUE) { gint _tmp649_; gint _tmp650_; gint _tmp651_; ValaList* _tmp652_; gint _tmp653_; gpointer _tmp654_ = NULL; ValaParameter* param; ValaParameter* _tmp655_; gboolean _tmp656_; gboolean _tmp657_; _tmp649_ = _param_index; _param_index = _tmp649_ + 1; _tmp650_ = _param_index; _tmp651_ = _param_size; if (!(_tmp650_ < _tmp651_)) { break; } _tmp652_ = _param_list; _tmp653_ = _param_index; _tmp654_ = vala_list_get (_tmp652_, _tmp653_); param = (ValaParameter*) _tmp654_; _tmp655_ = param; _tmp656_ = vala_parameter_get_captured (_tmp655_); _tmp657_ = _tmp656_; if (_tmp657_) { ValaParameter* _tmp658_; ValaDataType* _tmp659_; ValaDataType* _tmp660_; ValaDataType* _tmp661_ = NULL; ValaDataType* param_type; ValaDataType* _tmp662_; gboolean _tmp663_; gboolean _tmp664_; ValaDataType* _tmp668_; gboolean _tmp669_ = FALSE; _tmp658_ = param; _tmp659_ = vala_variable_get_variable_type ((ValaVariable*) _tmp658_); _tmp660_ = _tmp659_; _tmp661_ = vala_data_type_copy (_tmp660_); param_type = _tmp661_; _tmp662_ = param_type; _tmp663_ = vala_data_type_get_value_owned (_tmp662_); _tmp664_ = _tmp663_; if (!_tmp664_) { ValaDataType* _tmp665_; ValaDataType* _tmp666_; gboolean _tmp667_ = FALSE; _tmp665_ = param_type; _tmp666_ = param_type; _tmp667_ = vala_ccode_base_module_no_implicit_copy (self, _tmp666_); vala_data_type_set_value_owned (_tmp665_, !_tmp667_); } _tmp668_ = param_type; _tmp669_ = vala_ccode_base_module_requires_destroy (self, _tmp668_); if (_tmp669_) { gboolean old_coroutine; ValaMethod* _tmp670_; ValaCCodeFunction* _tmp675_; ValaCCodeFunction* _tmp676_; ValaParameter* _tmp677_; ValaCCodeExpression* _tmp678_ = NULL; ValaCCodeExpression* _tmp679_; gboolean _tmp680_; old_coroutine = FALSE; _tmp670_ = m; if (_tmp670_ != NULL) { ValaMethod* _tmp671_; gboolean _tmp672_; gboolean _tmp673_; ValaMethod* _tmp674_; _tmp671_ = m; _tmp672_ = vala_method_get_coroutine (_tmp671_); _tmp673_ = _tmp672_; old_coroutine = _tmp673_; _tmp674_ = m; vala_method_set_coroutine (_tmp674_, FALSE); } _tmp675_ = vala_ccode_base_module_get_ccode (self); _tmp676_ = _tmp675_; _tmp677_ = param; _tmp678_ = vala_ccode_base_module_destroy_parameter (self, _tmp677_); _tmp679_ = _tmp678_; vala_ccode_function_add_expression (_tmp676_, _tmp679_); _vala_ccode_node_unref0 (_tmp679_); _tmp680_ = old_coroutine; if (_tmp680_) { ValaMethod* _tmp681_; _tmp681_ = m; vala_method_set_coroutine (_tmp681_, TRUE); } } _vala_code_node_unref0 (param_type); } _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _vala_code_node_unref0 (m); } else { ValaBlock* _tmp682_; ValaSymbol* _tmp683_; ValaSymbol* _tmp684_; _tmp682_ = b; _tmp683_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp682_); _tmp684_ = _tmp683_; if (VALA_IS_PROPERTY_ACCESSOR (_tmp684_)) { ValaBlock* _tmp685_; ValaSymbol* _tmp686_; ValaSymbol* _tmp687_; ValaPropertyAccessor* _tmp688_; ValaPropertyAccessor* acc; gboolean _tmp689_ = FALSE; ValaPropertyAccessor* _tmp690_; gboolean _tmp691_; gboolean _tmp692_; gboolean _tmp698_; _tmp685_ = b; _tmp686_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp685_); _tmp687_ = _tmp686_; _tmp688_ = _vala_code_node_ref0 (VALA_PROPERTY_ACCESSOR (_tmp687_)); acc = _tmp688_; _tmp690_ = acc; _tmp691_ = vala_property_accessor_get_readable (_tmp690_); _tmp692_ = _tmp691_; if (!_tmp692_) { ValaPropertyAccessor* _tmp693_; ValaParameter* _tmp694_; ValaParameter* _tmp695_; gboolean _tmp696_; gboolean _tmp697_; _tmp693_ = acc; _tmp694_ = vala_property_accessor_get_value_parameter (_tmp693_); _tmp695_ = _tmp694_; _tmp696_ = vala_parameter_get_captured (_tmp695_); _tmp697_ = _tmp696_; _tmp689_ = _tmp697_; } else { _tmp689_ = FALSE; } _tmp698_ = _tmp689_; if (_tmp698_) { ValaPropertyAccessor* _tmp699_; ValaParameter* _tmp700_; ValaParameter* _tmp701_; ValaDataType* _tmp702_; ValaDataType* _tmp703_; ValaDataType* _tmp704_ = NULL; ValaDataType* param_type; ValaDataType* _tmp705_; gboolean _tmp706_; gboolean _tmp707_; ValaDataType* _tmp711_; gboolean _tmp712_ = FALSE; _tmp699_ = acc; _tmp700_ = vala_property_accessor_get_value_parameter (_tmp699_); _tmp701_ = _tmp700_; _tmp702_ = vala_variable_get_variable_type ((ValaVariable*) _tmp701_); _tmp703_ = _tmp702_; _tmp704_ = vala_data_type_copy (_tmp703_); param_type = _tmp704_; _tmp705_ = param_type; _tmp706_ = vala_data_type_get_value_owned (_tmp705_); _tmp707_ = _tmp706_; if (!_tmp707_) { ValaDataType* _tmp708_; ValaDataType* _tmp709_; gboolean _tmp710_ = FALSE; _tmp708_ = param_type; _tmp709_ = param_type; _tmp710_ = vala_ccode_base_module_no_implicit_copy (self, _tmp709_); vala_data_type_set_value_owned (_tmp708_, !_tmp710_); } _tmp711_ = param_type; _tmp712_ = vala_ccode_base_module_requires_destroy (self, _tmp711_); if (_tmp712_) { ValaCCodeFunction* _tmp713_; ValaCCodeFunction* _tmp714_; ValaPropertyAccessor* _tmp715_; ValaParameter* _tmp716_; ValaParameter* _tmp717_; ValaCCodeExpression* _tmp718_ = NULL; ValaCCodeExpression* _tmp719_; _tmp713_ = vala_ccode_base_module_get_ccode (self); _tmp714_ = _tmp713_; _tmp715_ = acc; _tmp716_ = vala_property_accessor_get_value_parameter (_tmp715_); _tmp717_ = _tmp716_; _tmp718_ = vala_ccode_base_module_destroy_parameter (self, _tmp717_); _tmp719_ = _tmp718_; vala_ccode_function_add_expression (_tmp714_, _tmp719_); _vala_ccode_node_unref0 (_tmp719_); } _vala_code_node_unref0 (param_type); } _vala_code_node_unref0 (acc); } } _tmp720_ = parent_block; if (_tmp720_ != NULL) { ValaBlock* _tmp721_; gint _tmp722_ = 0; gint parent_block_id; gint _tmp723_; gchar* _tmp724_ = NULL; gchar* _tmp725_; ValaCCodeIdentifier* _tmp726_; ValaCCodeIdentifier* _tmp727_; ValaCCodeFunctionCall* _tmp728_; ValaCCodeFunctionCall* _tmp729_; ValaCCodeFunctionCall* unref_call; ValaCCodeFunctionCall* _tmp730_; gint _tmp731_; gchar* _tmp732_ = NULL; gchar* _tmp733_; ValaCCodeIdentifier* _tmp734_; ValaCCodeIdentifier* _tmp735_; gint _tmp736_; gchar* _tmp737_ = NULL; gchar* _tmp738_; ValaCCodeMemberAccess* _tmp739_; ValaCCodeMemberAccess* _tmp740_; ValaCCodeFunction* _tmp741_; ValaCCodeFunction* _tmp742_; ValaCCodeFunctionCall* _tmp743_; ValaCCodeFunction* _tmp744_; ValaCCodeFunction* _tmp745_; gint _tmp746_; gchar* _tmp747_ = NULL; gchar* _tmp748_; ValaCCodeIdentifier* _tmp749_; ValaCCodeIdentifier* _tmp750_; gint _tmp751_; gchar* _tmp752_ = NULL; gchar* _tmp753_; ValaCCodeMemberAccess* _tmp754_; ValaCCodeMemberAccess* _tmp755_; ValaCCodeConstant* _tmp756_; ValaCCodeConstant* _tmp757_; _tmp721_ = parent_block; _tmp722_ = vala_ccode_base_module_get_block_id (self, _tmp721_); parent_block_id = _tmp722_; _tmp723_ = parent_block_id; _tmp724_ = g_strdup_printf ("block%d_data_unref", _tmp723_); _tmp725_ = _tmp724_; _tmp726_ = vala_ccode_identifier_new (_tmp725_); _tmp727_ = _tmp726_; _tmp728_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp727_); _tmp729_ = _tmp728_; _vala_ccode_node_unref0 (_tmp727_); _g_free0 (_tmp725_); unref_call = _tmp729_; _tmp730_ = unref_call; _tmp731_ = block_id; _tmp732_ = g_strdup_printf ("_data%d_", _tmp731_); _tmp733_ = _tmp732_; _tmp734_ = vala_ccode_identifier_new (_tmp733_); _tmp735_ = _tmp734_; _tmp736_ = parent_block_id; _tmp737_ = g_strdup_printf ("_data%d_", _tmp736_); _tmp738_ = _tmp737_; _tmp739_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp735_, _tmp738_); _tmp740_ = _tmp739_; vala_ccode_function_call_add_argument (_tmp730_, (ValaCCodeExpression*) _tmp740_); _vala_ccode_node_unref0 (_tmp740_); _g_free0 (_tmp738_); _vala_ccode_node_unref0 (_tmp735_); _g_free0 (_tmp733_); _tmp741_ = vala_ccode_base_module_get_ccode (self); _tmp742_ = _tmp741_; _tmp743_ = unref_call; vala_ccode_function_add_expression (_tmp742_, (ValaCCodeExpression*) _tmp743_); _tmp744_ = vala_ccode_base_module_get_ccode (self); _tmp745_ = _tmp744_; _tmp746_ = block_id; _tmp747_ = g_strdup_printf ("_data%d_", _tmp746_); _tmp748_ = _tmp747_; _tmp749_ = vala_ccode_identifier_new (_tmp748_); _tmp750_ = _tmp749_; _tmp751_ = parent_block_id; _tmp752_ = g_strdup_printf ("_data%d_", _tmp751_); _tmp753_ = _tmp752_; _tmp754_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp750_, _tmp753_); _tmp755_ = _tmp754_; _tmp756_ = vala_ccode_constant_new ("NULL"); _tmp757_ = _tmp756_; vala_ccode_function_add_assignment (_tmp745_, (ValaCCodeExpression*) _tmp755_, (ValaCCodeExpression*) _tmp757_); _vala_ccode_node_unref0 (_tmp757_); _vala_ccode_node_unref0 (_tmp755_); _g_free0 (_tmp753_); _vala_ccode_node_unref0 (_tmp750_); _g_free0 (_tmp748_); _vala_ccode_node_unref0 (unref_call); } else { ValaDataType* _tmp758_ = NULL; ValaDataType* _tmp759_; gboolean _tmp760_; _tmp758_ = vala_ccode_base_module_get_this_type (self); _tmp759_ = _tmp758_; _tmp760_ = _tmp759_ != NULL; _vala_code_node_unref0 (_tmp759_); if (_tmp760_) { ValaTypeSymbol* _tmp761_; ValaTypeSymbol* _tmp762_; ValaDataType* _tmp763_ = NULL; ValaDataType* _tmp764_; ValaCCodeIdentifier* _tmp765_; ValaCCodeIdentifier* _tmp766_; ValaGLibValue* _tmp767_; ValaGLibValue* _tmp768_; ValaGLibValue* this_value; ValaCCodeFunction* _tmp769_; ValaCCodeFunction* _tmp770_; ValaGLibValue* _tmp771_; ValaCCodeExpression* _tmp772_ = NULL; ValaCCodeExpression* _tmp773_; _tmp761_ = vala_ccode_base_module_get_current_type_symbol (self); _tmp762_ = _tmp761_; _tmp763_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp762_); _tmp764_ = _tmp763_; _tmp765_ = vala_ccode_identifier_new ("self"); _tmp766_ = _tmp765_; _tmp767_ = vala_glib_value_new (_tmp764_, (ValaCCodeExpression*) _tmp766_, TRUE); _tmp768_ = _tmp767_; _vala_ccode_node_unref0 (_tmp766_); _vala_code_node_unref0 (_tmp764_); this_value = _tmp768_; _tmp769_ = vala_ccode_base_module_get_ccode (self); _tmp770_ = _tmp769_; _tmp771_ = this_value; _tmp772_ = vala_ccode_base_module_destroy_value (self, (ValaTargetValue*) _tmp771_, FALSE); _tmp773_ = _tmp772_; vala_ccode_function_add_expression (_tmp770_, _tmp773_); _vala_ccode_node_unref0 (_tmp773_); _vala_target_value_unref0 (this_value); } } _tmp774_ = vala_ccode_identifier_new ("g_slice_free"); _tmp775_ = _tmp774_; _tmp776_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp775_); _tmp777_ = _tmp776_; _vala_ccode_node_unref0 (_tmp775_); data_free = _tmp777_; _tmp778_ = data_free; _tmp779_ = struct_name; _tmp780_ = vala_ccode_identifier_new (_tmp779_); _tmp781_ = _tmp780_; vala_ccode_function_call_add_argument (_tmp778_, (ValaCCodeExpression*) _tmp781_); _vala_ccode_node_unref0 (_tmp781_); _tmp782_ = data_free; _tmp783_ = block_id; _tmp784_ = g_strdup_printf ("_data%d_", _tmp783_); _tmp785_ = _tmp784_; _tmp786_ = vala_ccode_identifier_new (_tmp785_); _tmp787_ = _tmp786_; vala_ccode_function_call_add_argument (_tmp782_, (ValaCCodeExpression*) _tmp787_); _vala_ccode_node_unref0 (_tmp787_); _g_free0 (_tmp785_); _tmp788_ = vala_ccode_base_module_get_ccode (self); _tmp789_ = _tmp788_; _tmp790_ = data_free; vala_ccode_function_add_expression (_tmp789_, (ValaCCodeExpression*) _tmp790_); _tmp791_ = vala_ccode_base_module_get_ccode (self); _tmp792_ = _tmp791_; vala_ccode_function_close (_tmp792_); vala_ccode_base_module_pop_function (self); _tmp793_ = self->cfile; _tmp794_ = unref_fun; vala_ccode_file_add_function_declaration (_tmp793_, _tmp794_); _tmp795_ = self->cfile; _tmp796_ = unref_fun; vala_ccode_file_add_function (_tmp795_, _tmp796_); _vala_ccode_node_unref0 (data_free); _vala_ccode_node_unref0 (outer_block); _vala_ccode_node_unref0 (unref_fun); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (ref_fun); _vala_ccode_node_unref0 (_typedef_); _vala_ccode_node_unref0 (data_alloc); _vala_ccode_node_unref0 (data); _g_free0 (struct_name); _vala_code_node_unref0 (parent_block); } { ValaBlock* _tmp797_; ValaList* _tmp798_ = NULL; ValaList* _stmt_list; ValaList* _tmp799_; gint _tmp800_; gint _tmp801_; gint _stmt_size; gint _stmt_index; _tmp797_ = b; _tmp798_ = vala_block_get_statements (_tmp797_); _stmt_list = _tmp798_; _tmp799_ = _stmt_list; _tmp800_ = vala_collection_get_size ((ValaCollection*) _tmp799_); _tmp801_ = _tmp800_; _stmt_size = _tmp801_; _stmt_index = -1; while (TRUE) { gint _tmp802_; gint _tmp803_; gint _tmp804_; ValaList* _tmp805_; gint _tmp806_; gpointer _tmp807_ = NULL; ValaStatement* stmt; ValaStatement* _tmp808_; ValaSourceReference* _tmp809_; ValaSourceReference* _tmp810_; ValaStatement* _tmp811_; _tmp802_ = _stmt_index; _stmt_index = _tmp802_ + 1; _tmp803_ = _stmt_index; _tmp804_ = _stmt_size; if (!(_tmp803_ < _tmp804_)) { break; } _tmp805_ = _stmt_list; _tmp806_ = _stmt_index; _tmp807_ = vala_list_get (_tmp805_, _tmp806_); stmt = (ValaStatement*) _tmp807_; _tmp808_ = stmt; _tmp809_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp808_); _tmp810_ = _tmp809_; vala_ccode_base_module_push_line (self, _tmp810_); _tmp811_ = stmt; vala_code_node_emit ((ValaCodeNode*) _tmp811_, (ValaCodeGenerator*) self); vala_ccode_base_module_pop_line (self); _vala_code_node_unref0 (stmt); } _vala_iterable_unref0 (_stmt_list); } { ValaList* _tmp812_; gint _tmp813_; gint _tmp814_; gint i; _tmp812_ = local_vars; _tmp813_ = vala_collection_get_size ((ValaCollection*) _tmp812_); _tmp814_ = _tmp813_; i = _tmp814_ - 1; { gboolean _tmp815_; _tmp815_ = TRUE; while (TRUE) { gboolean _tmp816_; gint _tmp818_; ValaList* _tmp819_; gint _tmp820_; gpointer _tmp821_ = NULL; ValaLocalVariable* local; ValaLocalVariable* _tmp822_; gboolean _tmp823_ = FALSE; gboolean _tmp824_ = FALSE; gboolean _tmp825_ = FALSE; ValaLocalVariable* _tmp826_; gboolean _tmp827_; gboolean _tmp828_; gboolean _tmp832_; gboolean _tmp836_; gboolean _tmp841_; _tmp816_ = _tmp815_; if (!_tmp816_) { gint _tmp817_; _tmp817_ = i; i = _tmp817_ - 1; } _tmp815_ = FALSE; _tmp818_ = i; if (!(_tmp818_ >= 0)) { break; } _tmp819_ = local_vars; _tmp820_ = i; _tmp821_ = vala_list_get (_tmp819_, _tmp820_); local = (ValaLocalVariable*) _tmp821_; _tmp822_ = local; vala_symbol_set_active ((ValaSymbol*) _tmp822_, FALSE); _tmp826_ = local; _tmp827_ = vala_code_node_get_unreachable ((ValaCodeNode*) _tmp826_); _tmp828_ = _tmp827_; if (!_tmp828_) { ValaLocalVariable* _tmp829_; gboolean _tmp830_; gboolean _tmp831_; _tmp829_ = local; _tmp830_ = vala_local_variable_get_floating (_tmp829_); _tmp831_ = _tmp830_; _tmp825_ = !_tmp831_; } else { _tmp825_ = FALSE; } _tmp832_ = _tmp825_; if (_tmp832_) { ValaLocalVariable* _tmp833_; gboolean _tmp834_; gboolean _tmp835_; _tmp833_ = local; _tmp834_ = vala_local_variable_get_captured (_tmp833_); _tmp835_ = _tmp834_; _tmp824_ = !_tmp835_; } else { _tmp824_ = FALSE; } _tmp836_ = _tmp824_; if (_tmp836_) { ValaLocalVariable* _tmp837_; ValaDataType* _tmp838_; ValaDataType* _tmp839_; gboolean _tmp840_ = FALSE; _tmp837_ = local; _tmp838_ = vala_variable_get_variable_type ((ValaVariable*) _tmp837_); _tmp839_ = _tmp838_; _tmp840_ = vala_ccode_base_module_requires_destroy (self, _tmp839_); _tmp823_ = _tmp840_; } else { _tmp823_ = FALSE; } _tmp841_ = _tmp823_; if (_tmp841_) { ValaCCodeFunction* _tmp842_; ValaCCodeFunction* _tmp843_; ValaLocalVariable* _tmp844_; ValaCCodeExpression* _tmp845_ = NULL; ValaCCodeExpression* _tmp846_; _tmp842_ = vala_ccode_base_module_get_ccode (self); _tmp843_ = _tmp842_; _tmp844_ = local; _tmp845_ = vala_ccode_base_module_destroy_local (self, _tmp844_); _tmp846_ = _tmp845_; vala_ccode_function_add_expression (_tmp843_, _tmp846_); _vala_ccode_node_unref0 (_tmp846_); } _vala_code_node_unref0 (local); } } } _tmp847_ = b; _tmp848_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp847_); _tmp849_ = _tmp848_; if (VALA_IS_METHOD (_tmp849_)) { ValaBlock* _tmp850_; ValaSymbol* _tmp851_; ValaSymbol* _tmp852_; ValaMethod* _tmp853_; ValaMethod* m; _tmp850_ = b; _tmp851_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp850_); _tmp852_ = _tmp851_; _tmp853_ = _vala_code_node_ref0 (VALA_METHOD (_tmp852_)); m = _tmp853_; { ValaMethod* _tmp854_; ValaList* _tmp855_ = NULL; ValaList* _param_list; ValaList* _tmp856_; gint _tmp857_; gint _tmp858_; gint _param_size; gint _param_index; _tmp854_ = m; _tmp855_ = vala_method_get_parameters (_tmp854_); _param_list = _tmp855_; _tmp856_ = _param_list; _tmp857_ = vala_collection_get_size ((ValaCollection*) _tmp856_); _tmp858_ = _tmp857_; _param_size = _tmp858_; _param_index = -1; while (TRUE) { gint _tmp859_; gint _tmp860_; gint _tmp861_; ValaList* _tmp862_; gint _tmp863_; gpointer _tmp864_ = NULL; ValaParameter* param; gboolean _tmp865_ = FALSE; gboolean _tmp866_ = FALSE; gboolean _tmp867_ = FALSE; ValaParameter* _tmp868_; gboolean _tmp869_; gboolean _tmp870_; gboolean _tmp874_; gboolean _tmp879_; gboolean _tmp883_; _tmp859_ = _param_index; _param_index = _tmp859_ + 1; _tmp860_ = _param_index; _tmp861_ = _param_size; if (!(_tmp860_ < _tmp861_)) { break; } _tmp862_ = _param_list; _tmp863_ = _param_index; _tmp864_ = vala_list_get (_tmp862_, _tmp863_); param = (ValaParameter*) _tmp864_; _tmp868_ = param; _tmp869_ = vala_parameter_get_captured (_tmp868_); _tmp870_ = _tmp869_; if (!_tmp870_) { ValaParameter* _tmp871_; gboolean _tmp872_; gboolean _tmp873_; _tmp871_ = param; _tmp872_ = vala_parameter_get_ellipsis (_tmp871_); _tmp873_ = _tmp872_; _tmp867_ = !_tmp873_; } else { _tmp867_ = FALSE; } _tmp874_ = _tmp867_; if (_tmp874_) { ValaParameter* _tmp875_; ValaDataType* _tmp876_; ValaDataType* _tmp877_; gboolean _tmp878_ = FALSE; _tmp875_ = param; _tmp876_ = vala_variable_get_variable_type ((ValaVariable*) _tmp875_); _tmp877_ = _tmp876_; _tmp878_ = vala_ccode_base_module_requires_destroy (self, _tmp877_); _tmp866_ = _tmp878_; } else { _tmp866_ = FALSE; } _tmp879_ = _tmp866_; if (_tmp879_) { ValaParameter* _tmp880_; ValaParameterDirection _tmp881_; ValaParameterDirection _tmp882_; _tmp880_ = param; _tmp881_ = vala_parameter_get_direction (_tmp880_); _tmp882_ = _tmp881_; _tmp865_ = _tmp882_ == VALA_PARAMETER_DIRECTION_IN; } else { _tmp865_ = FALSE; } _tmp883_ = _tmp865_; if (_tmp883_) { ValaCCodeFunction* _tmp884_; ValaCCodeFunction* _tmp885_; ValaParameter* _tmp886_; ValaCCodeExpression* _tmp887_ = NULL; ValaCCodeExpression* _tmp888_; _tmp884_ = vala_ccode_base_module_get_ccode (self); _tmp885_ = _tmp884_; _tmp886_ = param; _tmp887_ = vala_ccode_base_module_destroy_parameter (self, _tmp886_); _tmp888_ = _tmp887_; vala_ccode_function_add_expression (_tmp885_, _tmp888_); _vala_ccode_node_unref0 (_tmp888_); } else { gboolean _tmp889_ = FALSE; ValaParameter* _tmp890_; ValaParameterDirection _tmp891_; ValaParameterDirection _tmp892_; gboolean _tmp896_; _tmp890_ = param; _tmp891_ = vala_parameter_get_direction (_tmp890_); _tmp892_ = _tmp891_; if (_tmp892_ == VALA_PARAMETER_DIRECTION_OUT) { ValaMethod* _tmp893_; gboolean _tmp894_; gboolean _tmp895_; _tmp893_ = m; _tmp894_ = vala_method_get_coroutine (_tmp893_); _tmp895_ = _tmp894_; _tmp889_ = !_tmp895_; } else { _tmp889_ = FALSE; } _tmp896_ = _tmp889_; if (_tmp896_) { ValaParameter* _tmp897_; _tmp897_ = param; vala_ccode_base_module_return_out_parameter (self, _tmp897_); } } _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _vala_code_node_unref0 (m); } else { ValaBlock* _tmp898_; ValaSymbol* _tmp899_; ValaSymbol* _tmp900_; _tmp898_ = b; _tmp899_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp898_); _tmp900_ = _tmp899_; if (VALA_IS_PROPERTY_ACCESSOR (_tmp900_)) { ValaBlock* _tmp901_; ValaSymbol* _tmp902_; ValaSymbol* _tmp903_; ValaPropertyAccessor* _tmp904_; ValaPropertyAccessor* acc; gboolean _tmp905_ = FALSE; gboolean _tmp906_ = FALSE; ValaPropertyAccessor* _tmp907_; ValaParameter* _tmp908_; ValaParameter* _tmp909_; gboolean _tmp915_; gboolean _tmp922_; _tmp901_ = b; _tmp902_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp901_); _tmp903_ = _tmp902_; _tmp904_ = _vala_code_node_ref0 (VALA_PROPERTY_ACCESSOR (_tmp903_)); acc = _tmp904_; _tmp907_ = acc; _tmp908_ = vala_property_accessor_get_value_parameter (_tmp907_); _tmp909_ = _tmp908_; if (_tmp909_ != NULL) { ValaPropertyAccessor* _tmp910_; ValaParameter* _tmp911_; ValaParameter* _tmp912_; gboolean _tmp913_; gboolean _tmp914_; _tmp910_ = acc; _tmp911_ = vala_property_accessor_get_value_parameter (_tmp910_); _tmp912_ = _tmp911_; _tmp913_ = vala_parameter_get_captured (_tmp912_); _tmp914_ = _tmp913_; _tmp906_ = !_tmp914_; } else { _tmp906_ = FALSE; } _tmp915_ = _tmp906_; if (_tmp915_) { ValaPropertyAccessor* _tmp916_; ValaParameter* _tmp917_; ValaParameter* _tmp918_; ValaDataType* _tmp919_; ValaDataType* _tmp920_; gboolean _tmp921_ = FALSE; _tmp916_ = acc; _tmp917_ = vala_property_accessor_get_value_parameter (_tmp916_); _tmp918_ = _tmp917_; _tmp919_ = vala_variable_get_variable_type ((ValaVariable*) _tmp918_); _tmp920_ = _tmp919_; _tmp921_ = vala_ccode_base_module_requires_destroy (self, _tmp920_); _tmp905_ = _tmp921_; } else { _tmp905_ = FALSE; } _tmp922_ = _tmp905_; if (_tmp922_) { ValaCCodeFunction* _tmp923_; ValaCCodeFunction* _tmp924_; ValaPropertyAccessor* _tmp925_; ValaParameter* _tmp926_; ValaParameter* _tmp927_; ValaCCodeExpression* _tmp928_ = NULL; ValaCCodeExpression* _tmp929_; _tmp923_ = vala_ccode_base_module_get_ccode (self); _tmp924_ = _tmp923_; _tmp925_ = acc; _tmp926_ = vala_property_accessor_get_value_parameter (_tmp925_); _tmp927_ = _tmp926_; _tmp928_ = vala_ccode_base_module_destroy_parameter (self, _tmp927_); _tmp929_ = _tmp928_; vala_ccode_function_add_expression (_tmp924_, _tmp929_); _vala_ccode_node_unref0 (_tmp929_); } _vala_code_node_unref0 (acc); } } _tmp930_ = b; _tmp931_ = vala_block_get_captured (_tmp930_); _tmp932_ = _tmp931_; if (_tmp932_) { ValaBlock* _tmp933_; gint _tmp934_ = 0; gint block_id; gint _tmp935_; gchar* _tmp936_ = NULL; gchar* _tmp937_; ValaCCodeIdentifier* _tmp938_; ValaCCodeIdentifier* _tmp939_; ValaCCodeFunctionCall* _tmp940_; ValaCCodeFunctionCall* _tmp941_; ValaCCodeFunctionCall* data_unref; ValaCCodeFunctionCall* _tmp942_; gint _tmp943_; gchar* _tmp944_ = NULL; gchar* _tmp945_; ValaCCodeExpression* _tmp946_ = NULL; ValaCCodeExpression* _tmp947_; ValaCCodeFunction* _tmp948_; ValaCCodeFunction* _tmp949_; ValaCCodeFunctionCall* _tmp950_; ValaCCodeFunction* _tmp951_; ValaCCodeFunction* _tmp952_; gint _tmp953_; gchar* _tmp954_ = NULL; gchar* _tmp955_; ValaCCodeExpression* _tmp956_ = NULL; ValaCCodeExpression* _tmp957_; ValaCCodeConstant* _tmp958_; ValaCCodeConstant* _tmp959_; _tmp933_ = b; _tmp934_ = vala_ccode_base_module_get_block_id (self, _tmp933_); block_id = _tmp934_; _tmp935_ = block_id; _tmp936_ = g_strdup_printf ("block%d_data_unref", _tmp935_); _tmp937_ = _tmp936_; _tmp938_ = vala_ccode_identifier_new (_tmp937_); _tmp939_ = _tmp938_; _tmp940_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp939_); _tmp941_ = _tmp940_; _vala_ccode_node_unref0 (_tmp939_); _g_free0 (_tmp937_); data_unref = _tmp941_; _tmp942_ = data_unref; _tmp943_ = block_id; _tmp944_ = g_strdup_printf ("_data%d_", _tmp943_); _tmp945_ = _tmp944_; _tmp946_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp945_); _tmp947_ = _tmp946_; vala_ccode_function_call_add_argument (_tmp942_, _tmp947_); _vala_ccode_node_unref0 (_tmp947_); _g_free0 (_tmp945_); _tmp948_ = vala_ccode_base_module_get_ccode (self); _tmp949_ = _tmp948_; _tmp950_ = data_unref; vala_ccode_function_add_expression (_tmp949_, (ValaCCodeExpression*) _tmp950_); _tmp951_ = vala_ccode_base_module_get_ccode (self); _tmp952_ = _tmp951_; _tmp953_ = block_id; _tmp954_ = g_strdup_printf ("_data%d_", _tmp953_); _tmp955_ = _tmp954_; _tmp956_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp955_); _tmp957_ = _tmp956_; _tmp958_ = vala_ccode_constant_new ("NULL"); _tmp959_ = _tmp958_; vala_ccode_function_add_assignment (_tmp952_, _tmp957_, (ValaCCodeExpression*) _tmp959_); _vala_ccode_node_unref0 (_tmp959_); _vala_ccode_node_unref0 (_tmp957_); _g_free0 (_tmp955_); _vala_ccode_node_unref0 (data_unref); } _tmp962_ = b; _tmp963_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp962_); _tmp964_ = _tmp963_; if (VALA_IS_BLOCK (_tmp964_)) { _tmp961_ = TRUE; } else { ValaBlock* _tmp965_; ValaCodeNode* _tmp966_; ValaCodeNode* _tmp967_; _tmp965_ = b; _tmp966_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp965_); _tmp967_ = _tmp966_; _tmp961_ = VALA_IS_SWITCH_STATEMENT (_tmp967_); } _tmp968_ = _tmp961_; if (_tmp968_) { _tmp960_ = TRUE; } else { ValaBlock* _tmp969_; ValaCodeNode* _tmp970_; ValaCodeNode* _tmp971_; _tmp969_ = b; _tmp970_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp969_); _tmp971_ = _tmp970_; _tmp960_ = VALA_IS_TRY_STATEMENT (_tmp971_); } _tmp972_ = _tmp960_; if (_tmp972_) { ValaCCodeFunction* _tmp973_; ValaCCodeFunction* _tmp974_; _tmp973_ = vala_ccode_base_module_get_ccode (self); _tmp974_ = _tmp973_; vala_ccode_function_close (_tmp974_); } _tmp975_ = self->emit_context; vala_ccode_base_module_emit_context_pop_symbol (_tmp975_); _vala_iterable_unref0 (local_vars); } static void vala_ccode_base_module_real_visit_declaration_statement (ValaCodeVisitor* base, ValaDeclarationStatement* stmt) { ValaCCodeBaseModule * self; ValaDeclarationStatement* _tmp0_; ValaSymbol* _tmp1_; ValaSymbol* _tmp2_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (stmt != NULL); _tmp0_ = stmt; _tmp1_ = vala_declaration_statement_get_declaration (_tmp0_); _tmp2_ = _tmp1_; vala_code_node_accept ((ValaCodeNode*) _tmp2_, (ValaCodeVisitor*) self); } ValaCCodeExpression* vala_ccode_base_module_get_local_cexpression (ValaCCodeBaseModule* self, ValaLocalVariable* local) { ValaCCodeExpression* result = NULL; gboolean _tmp0_ = FALSE; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (local != NULL, NULL); _tmp0_ = vala_ccode_base_module_is_in_coroutine (self); if (_tmp0_) { ValaCCodeIdentifier* _tmp1_; ValaCCodeIdentifier* _tmp2_; ValaLocalVariable* _tmp3_; gchar* _tmp4_ = NULL; gchar* _tmp5_; ValaCCodeMemberAccess* _tmp6_; ValaCCodeExpression* _tmp7_; _tmp1_ = vala_ccode_identifier_new ("_data_"); _tmp2_ = _tmp1_; _tmp3_ = local; _tmp4_ = vala_ccode_base_module_get_local_cname (self, _tmp3_); _tmp5_ = _tmp4_; _tmp6_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp2_, _tmp5_); _tmp7_ = (ValaCCodeExpression*) _tmp6_; _g_free0 (_tmp5_); _vala_ccode_node_unref0 (_tmp2_); result = _tmp7_; return result; } else { ValaLocalVariable* _tmp8_; gchar* _tmp9_ = NULL; gchar* _tmp10_; ValaCCodeIdentifier* _tmp11_; ValaCCodeExpression* _tmp12_; _tmp8_ = local; _tmp9_ = vala_ccode_base_module_get_local_cname (self, _tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_ccode_identifier_new (_tmp10_); _tmp12_ = (ValaCCodeExpression*) _tmp11_; _g_free0 (_tmp10_); result = _tmp12_; return result; } } ValaCCodeExpression* vala_ccode_base_module_get_variable_cexpression (ValaCCodeBaseModule* self, const gchar* name) { ValaCCodeExpression* result = NULL; gboolean _tmp0_ = FALSE; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (name != NULL, NULL); _tmp0_ = vala_ccode_base_module_is_in_coroutine (self); if (_tmp0_) { ValaCCodeIdentifier* _tmp1_; ValaCCodeIdentifier* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_ = NULL; gchar* _tmp5_; ValaCCodeMemberAccess* _tmp6_; ValaCCodeExpression* _tmp7_; _tmp1_ = vala_ccode_identifier_new ("_data_"); _tmp2_ = _tmp1_; _tmp3_ = name; _tmp4_ = vala_ccode_base_module_get_variable_cname (self, _tmp3_); _tmp5_ = _tmp4_; _tmp6_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp2_, _tmp5_); _tmp7_ = (ValaCCodeExpression*) _tmp6_; _g_free0 (_tmp5_); _vala_ccode_node_unref0 (_tmp2_); result = _tmp7_; return result; } else { const gchar* _tmp8_; gchar* _tmp9_ = NULL; gchar* _tmp10_; ValaCCodeIdentifier* _tmp11_; ValaCCodeExpression* _tmp12_; _tmp8_ = name; _tmp9_ = vala_ccode_base_module_get_variable_cname (self, _tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_ccode_identifier_new (_tmp10_); _tmp12_ = (ValaCCodeExpression*) _tmp11_; _g_free0 (_tmp10_); result = _tmp12_; return result; } } gchar* vala_ccode_base_module_get_local_cname (ValaCCodeBaseModule* self, ValaLocalVariable* local) { gchar* result = NULL; ValaLocalVariable* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_ = NULL; gchar* cname; gboolean _tmp4_ = FALSE; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (local != NULL, NULL); _tmp0_ = local; _tmp1_ = vala_symbol_get_name ((ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_variable_cname (self, _tmp2_); cname = _tmp3_; _tmp4_ = vala_ccode_base_module_is_in_coroutine (self); if (_tmp4_) { ValaCCodeBaseModuleEmitContext* _tmp5_; ValaMap* _tmp6_; ValaLocalVariable* _tmp7_; gpointer _tmp8_ = NULL; gint clash_index; gint _tmp9_; _tmp5_ = self->emit_context; _tmp6_ = _tmp5_->closure_variable_clash_map; _tmp7_ = local; _tmp8_ = vala_map_get (_tmp6_, _tmp7_); clash_index = GPOINTER_TO_INT (_tmp8_); _tmp9_ = clash_index; if (_tmp9_ > 0) { gint _tmp10_; const gchar* _tmp11_; gchar* _tmp12_ = NULL; _tmp10_ = clash_index; _tmp11_ = cname; _tmp12_ = g_strdup_printf ("_vala%d_%s", _tmp10_, _tmp11_); _g_free0 (cname); cname = _tmp12_; } } result = cname; return result; } static gchar string_get (const gchar* self, glong index) { gchar result = '\0'; glong _tmp0_; gchar _tmp1_; g_return_val_if_fail (self != NULL, '\0'); _tmp0_ = index; _tmp1_ = ((gchar*) self)[_tmp0_]; result = _tmp1_; return result; } gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, const gchar* name) { gchar* result = NULL; const gchar* _tmp0_; gchar _tmp1_ = '\0'; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (name != NULL, NULL); _tmp0_ = name; _tmp1_ = string_get (_tmp0_, (glong) 0); if (_tmp1_ == '.') { const gchar* _tmp2_; ValaMap* _tmp4_; ValaMap* _tmp5_; const gchar* _tmp6_; gboolean _tmp7_ = FALSE; ValaMap* _tmp17_; ValaMap* _tmp18_; const gchar* _tmp19_; gpointer _tmp20_ = NULL; _tmp2_ = name; if (g_strcmp0 (_tmp2_, ".result") == 0) { gchar* _tmp3_; _tmp3_ = g_strdup ("result"); result = _tmp3_; return result; } _tmp4_ = vala_ccode_base_module_get_variable_name_map (self); _tmp5_ = _tmp4_; _tmp6_ = name; _tmp7_ = vala_map_contains (_tmp5_, _tmp6_); if (!_tmp7_) { ValaMap* _tmp8_; ValaMap* _tmp9_; const gchar* _tmp10_; gint _tmp11_; gint _tmp12_; gchar* _tmp13_ = NULL; gchar* _tmp14_; gint _tmp15_; gint _tmp16_; _tmp8_ = vala_ccode_base_module_get_variable_name_map (self); _tmp9_ = _tmp8_; _tmp10_ = name; _tmp11_ = vala_ccode_base_module_get_next_temp_var_id (self); _tmp12_ = _tmp11_; _tmp13_ = g_strdup_printf ("_tmp%d_", _tmp12_); _tmp14_ = _tmp13_; vala_map_set (_tmp9_, _tmp10_, _tmp14_); _g_free0 (_tmp14_); _tmp15_ = vala_ccode_base_module_get_next_temp_var_id (self); _tmp16_ = _tmp15_; vala_ccode_base_module_set_next_temp_var_id (self, _tmp16_ + 1); } _tmp17_ = vala_ccode_base_module_get_variable_name_map (self); _tmp18_ = _tmp17_; _tmp19_ = name; _tmp20_ = vala_map_get (_tmp18_, _tmp19_); result = (gchar*) _tmp20_; return result; } else { ValaSet* _tmp21_; const gchar* _tmp22_; gboolean _tmp23_ = FALSE; _tmp21_ = self->priv->reserved_identifiers; _tmp22_ = name; _tmp23_ = vala_collection_contains ((ValaCollection*) _tmp21_, _tmp22_); if (_tmp23_) { const gchar* _tmp24_; gchar* _tmp25_ = NULL; _tmp24_ = name; _tmp25_ = g_strdup_printf ("_%s_", _tmp24_); result = _tmp25_; return result; } else { const gchar* _tmp26_; gchar* _tmp27_; _tmp26_ = name; _tmp27_ = g_strdup (_tmp26_); result = _tmp27_; return result; } } } ValaCCodeExpression* vala_ccode_base_module_get_result_cexpression (ValaCCodeBaseModule* self, const gchar* cname) { ValaCCodeExpression* result = NULL; gboolean _tmp0_ = FALSE; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (cname != NULL, NULL); _tmp0_ = vala_ccode_base_module_is_in_coroutine (self); if (_tmp0_) { ValaCCodeIdentifier* _tmp1_; ValaCCodeIdentifier* _tmp2_; const gchar* _tmp3_; ValaCCodeMemberAccess* _tmp4_; ValaCCodeExpression* _tmp5_; _tmp1_ = vala_ccode_identifier_new ("_data_"); _tmp2_ = _tmp1_; _tmp3_ = cname; _tmp4_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp2_, _tmp3_); _tmp5_ = (ValaCCodeExpression*) _tmp4_; _vala_ccode_node_unref0 (_tmp2_); result = _tmp5_; return result; } else { const gchar* _tmp6_; ValaCCodeIdentifier* _tmp7_; _tmp6_ = cname; _tmp7_ = vala_ccode_identifier_new (_tmp6_); result = (ValaCCodeExpression*) _tmp7_; return result; } } gboolean vala_ccode_base_module_is_simple_struct_creation (ValaCCodeBaseModule* self, ValaVariable* variable, ValaExpression* expr) { gboolean result = FALSE; ValaVariable* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaTypeSymbol* _tmp3_; ValaTypeSymbol* _tmp4_; ValaStruct* _tmp5_; ValaStruct* st; ValaExpression* _tmp6_; ValaObjectCreationExpression* _tmp7_; ValaObjectCreationExpression* creation; gboolean _tmp8_ = FALSE; gboolean _tmp9_ = FALSE; gboolean _tmp10_ = FALSE; gboolean _tmp11_ = FALSE; gboolean _tmp12_ = FALSE; ValaObjectCreationExpression* _tmp13_; gboolean _tmp15_; gboolean _tmp23_; gboolean _tmp29_; gboolean _tmp36_; gboolean _tmp42_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (variable != NULL, FALSE); g_return_val_if_fail (expr != NULL, FALSE); _tmp0_ = variable; _tmp1_ = vala_variable_get_variable_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_data_type_get_data_type (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp4_) ? ((ValaStruct*) _tmp4_) : NULL); st = _tmp5_; _tmp6_ = expr; _tmp7_ = _vala_code_node_ref0 (VALA_IS_OBJECT_CREATION_EXPRESSION (_tmp6_) ? ((ValaObjectCreationExpression*) _tmp6_) : NULL); creation = _tmp7_; _tmp13_ = creation; if (_tmp13_ != NULL) { ValaStruct* _tmp14_; _tmp14_ = st; _tmp12_ = _tmp14_ != NULL; } else { _tmp12_ = FALSE; } _tmp15_ = _tmp12_; if (_tmp15_) { gboolean _tmp16_ = FALSE; ValaStruct* _tmp17_; gboolean _tmp18_ = FALSE; gboolean _tmp22_; _tmp17_ = st; _tmp18_ = vala_struct_is_simple_type (_tmp17_); if (!_tmp18_) { _tmp16_ = TRUE; } else { ValaStruct* _tmp19_; gchar* _tmp20_ = NULL; gchar* _tmp21_; _tmp19_ = st; _tmp20_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp19_); _tmp21_ = _tmp20_; _tmp16_ = g_strcmp0 (_tmp21_, "va_list") == 0; _g_free0 (_tmp21_); } _tmp22_ = _tmp16_; _tmp11_ = _tmp22_; } else { _tmp11_ = FALSE; } _tmp23_ = _tmp11_; if (_tmp23_) { ValaVariable* _tmp24_; ValaDataType* _tmp25_; ValaDataType* _tmp26_; gboolean _tmp27_; gboolean _tmp28_; _tmp24_ = variable; _tmp25_ = vala_variable_get_variable_type (_tmp24_); _tmp26_ = _tmp25_; _tmp27_ = vala_data_type_get_nullable (_tmp26_); _tmp28_ = _tmp27_; _tmp10_ = !_tmp28_; } else { _tmp10_ = FALSE; } _tmp29_ = _tmp10_; if (_tmp29_) { ValaVariable* _tmp30_; ValaDataType* _tmp31_; ValaDataType* _tmp32_; ValaTypeSymbol* _tmp33_; ValaTypeSymbol* _tmp34_; ValaStruct* _tmp35_; _tmp30_ = variable; _tmp31_ = vala_variable_get_variable_type (_tmp30_); _tmp32_ = _tmp31_; _tmp33_ = vala_data_type_get_data_type (_tmp32_); _tmp34_ = _tmp33_; _tmp35_ = self->gvalue_type; _tmp9_ = _tmp34_ != VALA_TYPESYMBOL (_tmp35_); } else { _tmp9_ = FALSE; } _tmp36_ = _tmp9_; if (_tmp36_) { ValaObjectCreationExpression* _tmp37_; ValaList* _tmp38_ = NULL; ValaList* _tmp39_; gint _tmp40_; gint _tmp41_; _tmp37_ = creation; _tmp38_ = vala_object_creation_expression_get_object_initializer (_tmp37_); _tmp39_ = _tmp38_; _tmp40_ = vala_collection_get_size ((ValaCollection*) _tmp39_); _tmp41_ = _tmp40_; _tmp8_ = _tmp41_ == 0; _vala_iterable_unref0 (_tmp39_); } else { _tmp8_ = FALSE; } _tmp42_ = _tmp8_; if (_tmp42_) { result = TRUE; _vala_code_node_unref0 (creation); _vala_code_node_unref0 (st); return result; } else { result = FALSE; _vala_code_node_unref0 (creation); _vala_code_node_unref0 (st); return result; } _vala_code_node_unref0 (creation); _vala_code_node_unref0 (st); } static void vala_ccode_base_module_real_visit_local_variable (ValaCodeVisitor* base, ValaLocalVariable* local) { ValaCCodeBaseModule * self; ValaLocalVariable* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaLocalVariable* _tmp3_; ValaExpression* _tmp4_; ValaExpression* _tmp5_; ValaLocalVariable* _tmp12_; ValaDataType* _tmp13_; ValaDataType* _tmp14_; ValaCCodeFile* _tmp15_; ValaCCodeExpression* rhs; gboolean _tmp16_ = FALSE; ValaLocalVariable* _tmp17_; ValaExpression* _tmp18_; ValaExpression* _tmp19_; gboolean _tmp25_; ValaLocalVariable* _tmp30_; gboolean _tmp31_; gboolean _tmp32_; ValaCCodeExpression* _tmp197_; gboolean _tmp209_ = FALSE; ValaLocalVariable* _tmp210_; ValaExpression* _tmp211_; ValaExpression* _tmp212_; gboolean _tmp218_; ValaLocalVariable* _tmp222_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (local != NULL); _tmp0_ = local; _tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_); _tmp2_ = _tmp1_; vala_ccode_base_module_check_type (self, _tmp2_); _tmp3_ = local; _tmp4_ = vala_variable_get_initializer ((ValaVariable*) _tmp3_); _tmp5_ = _tmp4_; if (_tmp5_ != NULL) { ValaLocalVariable* _tmp6_; ValaExpression* _tmp7_; ValaExpression* _tmp8_; ValaLocalVariable* _tmp9_; ValaExpression* _tmp10_; ValaExpression* _tmp11_; _tmp6_ = local; _tmp7_ = vala_variable_get_initializer ((ValaVariable*) _tmp6_); _tmp8_ = _tmp7_; vala_code_node_emit ((ValaCodeNode*) _tmp8_, (ValaCodeGenerator*) self); _tmp9_ = local; _tmp10_ = vala_variable_get_initializer ((ValaVariable*) _tmp9_); _tmp11_ = _tmp10_; vala_code_visitor_visit_end_full_expression ((ValaCodeVisitor*) self, _tmp11_); } _tmp12_ = local; _tmp13_ = vala_variable_get_variable_type ((ValaVariable*) _tmp12_); _tmp14_ = _tmp13_; _tmp15_ = self->cfile; vala_ccode_base_module_generate_type_declaration (self, _tmp14_, _tmp15_); rhs = NULL; _tmp17_ = local; _tmp18_ = vala_variable_get_initializer ((ValaVariable*) _tmp17_); _tmp19_ = _tmp18_; if (_tmp19_ != NULL) { ValaLocalVariable* _tmp20_; ValaExpression* _tmp21_; ValaExpression* _tmp22_; ValaCCodeExpression* _tmp23_ = NULL; ValaCCodeExpression* _tmp24_; _tmp20_ = local; _tmp21_ = vala_variable_get_initializer ((ValaVariable*) _tmp20_); _tmp22_ = _tmp21_; _tmp23_ = vala_ccode_base_module_get_cvalue (self, _tmp22_); _tmp24_ = _tmp23_; _tmp16_ = _tmp24_ != NULL; _vala_ccode_node_unref0 (_tmp24_); } else { _tmp16_ = FALSE; } _tmp25_ = _tmp16_; if (_tmp25_) { ValaLocalVariable* _tmp26_; ValaExpression* _tmp27_; ValaExpression* _tmp28_; ValaCCodeExpression* _tmp29_ = NULL; _tmp26_ = local; _tmp27_ = vala_variable_get_initializer ((ValaVariable*) _tmp26_); _tmp28_ = _tmp27_; _tmp29_ = vala_ccode_base_module_get_cvalue (self, _tmp28_); _vala_ccode_node_unref0 (rhs); rhs = _tmp29_; } _tmp30_ = local; _tmp31_ = vala_local_variable_get_captured (_tmp30_); _tmp32_ = _tmp31_; if (!_tmp32_) { gboolean _tmp33_ = FALSE; ValaLocalVariable* _tmp100_; ValaDataType* _tmp101_; ValaDataType* _tmp102_; _tmp33_ = vala_ccode_base_module_is_in_coroutine (self); if (_tmp33_) { ValaCCodeBaseModuleEmitContext* _tmp34_; ValaMap* _tmp35_; ValaLocalVariable* _tmp36_; const gchar* _tmp37_; const gchar* _tmp38_; gpointer _tmp39_ = NULL; gint count; gint _tmp40_; ValaCCodeBaseModuleEmitContext* _tmp45_; ValaMap* _tmp46_; ValaLocalVariable* _tmp47_; const gchar* _tmp48_; const gchar* _tmp49_; gint _tmp50_; ValaCCodeStruct* _tmp51_; ValaLocalVariable* _tmp52_; ValaDataType* _tmp53_; ValaDataType* _tmp54_; gchar* _tmp55_ = NULL; gchar* _tmp56_; ValaLocalVariable* _tmp57_; gchar* _tmp58_ = NULL; gchar* _tmp59_; ValaLocalVariable* _tmp60_; ValaDataType* _tmp61_; ValaDataType* _tmp62_; gchar* _tmp63_ = NULL; gchar* _tmp64_; gchar* _tmp65_; gchar* _tmp66_; _tmp34_ = self->emit_context; _tmp35_ = _tmp34_->closure_variable_count_map; _tmp36_ = local; _tmp37_ = vala_symbol_get_name ((ValaSymbol*) _tmp36_); _tmp38_ = _tmp37_; _tmp39_ = vala_map_get (_tmp35_, _tmp38_); count = GPOINTER_TO_INT (_tmp39_); _tmp40_ = count; if (_tmp40_ > 0) { ValaCCodeBaseModuleEmitContext* _tmp41_; ValaMap* _tmp42_; ValaLocalVariable* _tmp43_; gint _tmp44_; _tmp41_ = self->emit_context; _tmp42_ = _tmp41_->closure_variable_clash_map; _tmp43_ = local; _tmp44_ = count; vala_map_set (_tmp42_, _tmp43_, GINT_TO_POINTER (_tmp44_)); } _tmp45_ = self->emit_context; _tmp46_ = _tmp45_->closure_variable_count_map; _tmp47_ = local; _tmp48_ = vala_symbol_get_name ((ValaSymbol*) _tmp47_); _tmp49_ = _tmp48_; _tmp50_ = count; vala_map_set (_tmp46_, _tmp49_, GINT_TO_POINTER (_tmp50_ + 1)); _tmp51_ = self->closure_struct; _tmp52_ = local; _tmp53_ = vala_variable_get_variable_type ((ValaVariable*) _tmp52_); _tmp54_ = _tmp53_; _tmp55_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp54_); _tmp56_ = _tmp55_; _tmp57_ = local; _tmp58_ = vala_ccode_base_module_get_local_cname (self, _tmp57_); _tmp59_ = _tmp58_; _tmp60_ = local; _tmp61_ = vala_variable_get_variable_type ((ValaVariable*) _tmp60_); _tmp62_ = _tmp61_; _tmp63_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp62_); _tmp64_ = _tmp63_; _tmp65_ = g_strconcat (_tmp59_, _tmp64_, NULL); _tmp66_ = _tmp65_; vala_ccode_struct_add_field (_tmp51_, _tmp56_, _tmp66_, NULL); _g_free0 (_tmp66_); _g_free0 (_tmp64_); _g_free0 (_tmp59_); _g_free0 (_tmp56_); } else { ValaLocalVariable* _tmp67_; gchar* _tmp68_ = NULL; gchar* _tmp69_; ValaLocalVariable* _tmp70_; ValaDataType* _tmp71_; ValaDataType* _tmp72_; gchar* _tmp73_ = NULL; gchar* _tmp74_; ValaCCodeVariableDeclarator* _tmp75_; ValaCCodeVariableDeclarator* _tmp76_; ValaCCodeVariableDeclarator* cvar; gboolean _tmp77_ = FALSE; ValaCCodeExpression* _tmp78_; gboolean _tmp84_; ValaCCodeFunction* _tmp92_; ValaCCodeFunction* _tmp93_; ValaLocalVariable* _tmp94_; ValaDataType* _tmp95_; ValaDataType* _tmp96_; gchar* _tmp97_ = NULL; gchar* _tmp98_; ValaCCodeVariableDeclarator* _tmp99_; _tmp67_ = local; _tmp68_ = vala_ccode_base_module_get_local_cname (self, _tmp67_); _tmp69_ = _tmp68_; _tmp70_ = local; _tmp71_ = vala_variable_get_variable_type ((ValaVariable*) _tmp70_); _tmp72_ = _tmp71_; _tmp73_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp72_); _tmp74_ = _tmp73_; _tmp75_ = vala_ccode_variable_declarator_new (_tmp69_, NULL, _tmp74_); _tmp76_ = _tmp75_; _g_free0 (_tmp74_); _g_free0 (_tmp69_); cvar = _tmp76_; _tmp78_ = rhs; if (_tmp78_ == NULL) { _tmp77_ = TRUE; } else { ValaLocalVariable* _tmp79_; ValaLocalVariable* _tmp80_; ValaExpression* _tmp81_; ValaExpression* _tmp82_; gboolean _tmp83_ = FALSE; _tmp79_ = local; _tmp80_ = local; _tmp81_ = vala_variable_get_initializer ((ValaVariable*) _tmp80_); _tmp82_ = _tmp81_; _tmp83_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp79_, _tmp82_); _tmp77_ = _tmp83_; } _tmp84_ = _tmp77_; if (_tmp84_) { ValaCCodeVariableDeclarator* _tmp85_; ValaLocalVariable* _tmp86_; ValaDataType* _tmp87_; ValaDataType* _tmp88_; ValaCCodeExpression* _tmp89_ = NULL; ValaCCodeExpression* _tmp90_; ValaCCodeVariableDeclarator* _tmp91_; _tmp85_ = cvar; _tmp86_ = local; _tmp87_ = vala_variable_get_variable_type ((ValaVariable*) _tmp86_); _tmp88_ = _tmp87_; _tmp89_ = vala_ccode_base_module_default_value_for_type (self, _tmp88_, TRUE); _tmp90_ = _tmp89_; vala_ccode_variable_declarator_set_initializer (_tmp85_, _tmp90_); _vala_ccode_node_unref0 (_tmp90_); _tmp91_ = cvar; vala_ccode_variable_declarator_set_init0 (_tmp91_, TRUE); } _tmp92_ = vala_ccode_base_module_get_ccode (self); _tmp93_ = _tmp92_; _tmp94_ = local; _tmp95_ = vala_variable_get_variable_type ((ValaVariable*) _tmp94_); _tmp96_ = _tmp95_; _tmp97_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp96_); _tmp98_ = _tmp97_; _tmp99_ = cvar; vala_ccode_function_add_declaration (_tmp93_, _tmp98_, (ValaCCodeDeclarator*) _tmp99_, 0); _g_free0 (_tmp98_); _vala_ccode_node_unref0 (cvar); } _tmp100_ = local; _tmp101_ = vala_variable_get_variable_type ((ValaVariable*) _tmp100_); _tmp102_ = _tmp101_; if (VALA_IS_ARRAY_TYPE (_tmp102_)) { ValaLocalVariable* _tmp103_; ValaDataType* _tmp104_; ValaDataType* _tmp105_; ValaArrayType* _tmp106_; ValaArrayType* array_type; ValaArrayType* _tmp107_; gboolean _tmp108_; gboolean _tmp109_; _tmp103_ = local; _tmp104_ = vala_variable_get_variable_type ((ValaVariable*) _tmp103_); _tmp105_ = _tmp104_; _tmp106_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp105_)); array_type = _tmp106_; _tmp107_ = array_type; _tmp108_ = vala_array_type_get_fixed_length (_tmp107_); _tmp109_ = _tmp108_; if (!_tmp109_) { ValaArrayType* _tmp133_; gint _tmp134_; gint _tmp135_; { gint dim; dim = 1; { gboolean _tmp110_; _tmp110_ = TRUE; while (TRUE) { gboolean _tmp111_; gint _tmp113_; ValaArrayType* _tmp114_; gint _tmp115_; gint _tmp116_; ValaDataType* _tmp117_; ValaDataType* _tmp118_ = NULL; ValaDataType* _tmp119_; ValaLocalVariable* _tmp120_; gchar* _tmp121_ = NULL; gchar* _tmp122_; gint _tmp123_; gchar* _tmp124_ = NULL; gchar* _tmp125_; ValaLocalVariable* _tmp126_; ValaLocalVariable* _tmp127_; ValaLocalVariable* len_var; ValaLocalVariable* _tmp128_; ValaLocalVariable* _tmp129_; ValaExpression* _tmp130_; ValaExpression* _tmp131_; ValaLocalVariable* _tmp132_; _tmp111_ = _tmp110_; if (!_tmp111_) { gint _tmp112_; _tmp112_ = dim; dim = _tmp112_ + 1; } _tmp110_ = FALSE; _tmp113_ = dim; _tmp114_ = array_type; _tmp115_ = vala_array_type_get_rank (_tmp114_); _tmp116_ = _tmp115_; if (!(_tmp113_ <= _tmp116_)) { break; } _tmp117_ = self->int_type; _tmp118_ = vala_data_type_copy (_tmp117_); _tmp119_ = _tmp118_; _tmp120_ = local; _tmp121_ = vala_ccode_base_module_get_local_cname (self, _tmp120_); _tmp122_ = _tmp121_; _tmp123_ = dim; _tmp124_ = vala_ccode_base_module_get_array_length_cname (self, _tmp122_, _tmp123_); _tmp125_ = _tmp124_; _tmp126_ = vala_local_variable_new (_tmp119_, _tmp125_, NULL, NULL); _tmp127_ = _tmp126_; _g_free0 (_tmp125_); _g_free0 (_tmp122_); _vala_code_node_unref0 (_tmp119_); len_var = _tmp127_; _tmp128_ = len_var; _tmp129_ = local; _tmp130_ = vala_variable_get_initializer ((ValaVariable*) _tmp129_); _tmp131_ = _tmp130_; vala_local_variable_set_no_init (_tmp128_, _tmp131_ != NULL); _tmp132_ = len_var; vala_ccode_base_module_emit_temp_var (self, _tmp132_); _vala_code_node_unref0 (len_var); } } } _tmp133_ = array_type; _tmp134_ = vala_array_type_get_rank (_tmp133_); _tmp135_ = _tmp134_; if (_tmp135_ == 1) { ValaDataType* _tmp136_; ValaDataType* _tmp137_ = NULL; ValaDataType* _tmp138_; ValaLocalVariable* _tmp139_; gchar* _tmp140_ = NULL; gchar* _tmp141_; gchar* _tmp142_ = NULL; gchar* _tmp143_; ValaLocalVariable* _tmp144_; ValaLocalVariable* _tmp145_; ValaLocalVariable* size_var; ValaLocalVariable* _tmp146_; ValaLocalVariable* _tmp147_; ValaExpression* _tmp148_; ValaExpression* _tmp149_; ValaLocalVariable* _tmp150_; _tmp136_ = self->int_type; _tmp137_ = vala_data_type_copy (_tmp136_); _tmp138_ = _tmp137_; _tmp139_ = local; _tmp140_ = vala_ccode_base_module_get_local_cname (self, _tmp139_); _tmp141_ = _tmp140_; _tmp142_ = vala_ccode_base_module_get_array_size_cname (self, _tmp141_); _tmp143_ = _tmp142_; _tmp144_ = vala_local_variable_new (_tmp138_, _tmp143_, NULL, NULL); _tmp145_ = _tmp144_; _g_free0 (_tmp143_); _g_free0 (_tmp141_); _vala_code_node_unref0 (_tmp138_); size_var = _tmp145_; _tmp146_ = size_var; _tmp147_ = local; _tmp148_ = vala_variable_get_initializer ((ValaVariable*) _tmp147_); _tmp149_ = _tmp148_; vala_local_variable_set_no_init (_tmp146_, _tmp149_ != NULL); _tmp150_ = size_var; vala_ccode_base_module_emit_temp_var (self, _tmp150_); _vala_code_node_unref0 (size_var); } } _vala_code_node_unref0 (array_type); } else { ValaLocalVariable* _tmp151_; ValaDataType* _tmp152_; ValaDataType* _tmp153_; _tmp151_ = local; _tmp152_ = vala_variable_get_variable_type ((ValaVariable*) _tmp151_); _tmp153_ = _tmp152_; if (VALA_IS_DELEGATE_TYPE (_tmp153_)) { ValaLocalVariable* _tmp154_; ValaDataType* _tmp155_; ValaDataType* _tmp156_; ValaDelegateType* _tmp157_; ValaDelegateType* deleg_type; ValaDelegateType* _tmp158_; ValaDelegate* _tmp159_; ValaDelegate* _tmp160_; ValaDelegate* _tmp161_; ValaDelegate* d; ValaDelegate* _tmp162_; gboolean _tmp163_; gboolean _tmp164_; _tmp154_ = local; _tmp155_ = vala_variable_get_variable_type ((ValaVariable*) _tmp154_); _tmp156_ = _tmp155_; _tmp157_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp156_)); deleg_type = _tmp157_; _tmp158_ = deleg_type; _tmp159_ = vala_delegate_type_get_delegate_symbol (_tmp158_); _tmp160_ = _tmp159_; _tmp161_ = _vala_code_node_ref0 (_tmp160_); d = _tmp161_; _tmp162_ = d; _tmp163_ = vala_delegate_get_has_target (_tmp162_); _tmp164_ = _tmp163_; if (_tmp164_) { ValaVoidType* _tmp165_; ValaVoidType* _tmp166_; ValaPointerType* _tmp167_; ValaPointerType* _tmp168_; ValaLocalVariable* _tmp169_; gchar* _tmp170_ = NULL; gchar* _tmp171_; gchar* _tmp172_ = NULL; gchar* _tmp173_; ValaLocalVariable* _tmp174_; ValaLocalVariable* _tmp175_; ValaLocalVariable* target_var; ValaLocalVariable* _tmp176_; ValaLocalVariable* _tmp177_; ValaExpression* _tmp178_; ValaExpression* _tmp179_; ValaLocalVariable* _tmp180_; ValaDelegateType* _tmp181_; gboolean _tmp182_; gboolean _tmp183_; _tmp165_ = vala_void_type_new (NULL); _tmp166_ = _tmp165_; _tmp167_ = vala_pointer_type_new ((ValaDataType*) _tmp166_, NULL); _tmp168_ = _tmp167_; _tmp169_ = local; _tmp170_ = vala_ccode_base_module_get_local_cname (self, _tmp169_); _tmp171_ = _tmp170_; _tmp172_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp171_); _tmp173_ = _tmp172_; _tmp174_ = vala_local_variable_new ((ValaDataType*) _tmp168_, _tmp173_, NULL, NULL); _tmp175_ = _tmp174_; _g_free0 (_tmp173_); _g_free0 (_tmp171_); _vala_code_node_unref0 (_tmp168_); _vala_code_node_unref0 (_tmp166_); target_var = _tmp175_; _tmp176_ = target_var; _tmp177_ = local; _tmp178_ = vala_variable_get_initializer ((ValaVariable*) _tmp177_); _tmp179_ = _tmp178_; vala_local_variable_set_no_init (_tmp176_, _tmp179_ != NULL); _tmp180_ = target_var; vala_ccode_base_module_emit_temp_var (self, _tmp180_); _tmp181_ = deleg_type; _tmp182_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp181_); _tmp183_ = _tmp182_; if (_tmp183_) { ValaDataType* _tmp184_; ValaLocalVariable* _tmp185_; gchar* _tmp186_ = NULL; gchar* _tmp187_; gchar* _tmp188_ = NULL; gchar* _tmp189_; ValaLocalVariable* _tmp190_; ValaLocalVariable* _tmp191_; ValaLocalVariable* target_destroy_notify_var; ValaLocalVariable* _tmp192_; ValaLocalVariable* _tmp193_; ValaExpression* _tmp194_; ValaExpression* _tmp195_; ValaLocalVariable* _tmp196_; _tmp184_ = self->gdestroynotify_type; _tmp185_ = local; _tmp186_ = vala_ccode_base_module_get_local_cname (self, _tmp185_); _tmp187_ = _tmp186_; _tmp188_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp187_); _tmp189_ = _tmp188_; _tmp190_ = vala_local_variable_new (_tmp184_, _tmp189_, NULL, NULL); _tmp191_ = _tmp190_; _g_free0 (_tmp189_); _g_free0 (_tmp187_); target_destroy_notify_var = _tmp191_; _tmp192_ = target_destroy_notify_var; _tmp193_ = local; _tmp194_ = vala_variable_get_initializer ((ValaVariable*) _tmp193_); _tmp195_ = _tmp194_; vala_local_variable_set_no_init (_tmp192_, _tmp195_ != NULL); _tmp196_ = target_destroy_notify_var; vala_ccode_base_module_emit_temp_var (self, _tmp196_); _vala_code_node_unref0 (target_destroy_notify_var); } _vala_code_node_unref0 (target_var); } _vala_code_node_unref0 (d); _vala_code_node_unref0 (deleg_type); } } } _tmp197_ = rhs; if (_tmp197_ != NULL) { ValaLocalVariable* _tmp198_; ValaLocalVariable* _tmp199_; ValaExpression* _tmp200_; ValaExpression* _tmp201_; gboolean _tmp202_ = FALSE; _tmp198_ = local; _tmp199_ = local; _tmp200_ = vala_variable_get_initializer ((ValaVariable*) _tmp199_); _tmp201_ = _tmp200_; _tmp202_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp198_, _tmp201_); if (!_tmp202_) { ValaLocalVariable* _tmp203_; ValaLocalVariable* _tmp204_; ValaExpression* _tmp205_; ValaExpression* _tmp206_; ValaTargetValue* _tmp207_; ValaTargetValue* _tmp208_; _tmp203_ = local; _tmp204_ = local; _tmp205_ = vala_variable_get_initializer ((ValaVariable*) _tmp204_); _tmp206_ = _tmp205_; _tmp207_ = vala_expression_get_target_value (_tmp206_); _tmp208_ = _tmp207_; vala_code_generator_store_local ((ValaCodeGenerator*) self, _tmp203_, _tmp208_, TRUE); } } _tmp210_ = local; _tmp211_ = vala_variable_get_initializer ((ValaVariable*) _tmp210_); _tmp212_ = _tmp211_; if (_tmp212_ != NULL) { ValaLocalVariable* _tmp213_; ValaExpression* _tmp214_; ValaExpression* _tmp215_; gboolean _tmp216_; gboolean _tmp217_; _tmp213_ = local; _tmp214_ = vala_variable_get_initializer ((ValaVariable*) _tmp213_); _tmp215_ = _tmp214_; _tmp216_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp215_); _tmp217_ = _tmp216_; _tmp209_ = _tmp217_; } else { _tmp209_ = FALSE; } _tmp218_ = _tmp209_; if (_tmp218_) { ValaLocalVariable* _tmp219_; ValaExpression* _tmp220_; ValaExpression* _tmp221_; _tmp219_ = local; _tmp220_ = vala_variable_get_initializer ((ValaVariable*) _tmp219_); _tmp221_ = _tmp220_; vala_ccode_base_module_add_simple_check (self, (ValaCodeNode*) _tmp221_, FALSE); } _tmp222_ = local; vala_symbol_set_active ((ValaSymbol*) _tmp222_, TRUE); _vala_ccode_node_unref0 (rhs); } /** * Create a temporary variable and return lvalue access to it */ ValaTargetValue* vala_ccode_base_module_create_temp_value (ValaCCodeBaseModule* self, ValaDataType* type, gboolean init, ValaCodeNode* node_reference, gboolean* value_owned) { ValaTargetValue* result = NULL; ValaDataType* _tmp0_; ValaDataType* _tmp1_ = NULL; ValaDataType* _tmp2_; gint _tmp3_; gint _tmp4_; gchar* _tmp5_ = NULL; gchar* _tmp6_; ValaCodeNode* _tmp7_; ValaSourceReference* _tmp8_; ValaSourceReference* _tmp9_; ValaLocalVariable* _tmp10_; ValaLocalVariable* _tmp11_; ValaLocalVariable* local; ValaLocalVariable* _tmp12_; gboolean _tmp13_; gboolean* _tmp14_; ValaLocalVariable* _tmp19_; ValaDataType* _tmp20_; ValaDataType* _tmp21_; ValaArrayType* _tmp22_; ValaArrayType* array_type; ValaLocalVariable* _tmp23_; ValaDataType* _tmp24_; ValaDataType* _tmp25_; ValaDelegateType* _tmp26_; ValaDelegateType* deleg_type; ValaLocalVariable* _tmp27_; ValaArrayType* _tmp28_; ValaLocalVariable* _tmp97_; ValaTargetValue* _tmp98_ = NULL; ValaTargetValue* value; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); g_return_val_if_fail (node_reference != NULL, NULL); _tmp0_ = type; _tmp1_ = vala_data_type_copy (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_next_temp_var_id (self); _tmp4_ = _tmp3_; vala_ccode_base_module_set_next_temp_var_id (self, _tmp4_ + 1); _tmp5_ = g_strdup_printf ("_tmp%d_", _tmp4_); _tmp6_ = _tmp5_; _tmp7_ = node_reference; _tmp8_ = vala_code_node_get_source_reference (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_local_variable_new (_tmp2_, _tmp6_, NULL, _tmp9_); _tmp11_ = _tmp10_; _g_free0 (_tmp6_); _vala_code_node_unref0 (_tmp2_); local = _tmp11_; _tmp12_ = local; _tmp13_ = init; vala_local_variable_set_no_init (_tmp12_, !_tmp13_); _tmp14_ = value_owned; if (_tmp14_ != NULL) { ValaLocalVariable* _tmp15_; ValaDataType* _tmp16_; ValaDataType* _tmp17_; gboolean* _tmp18_; _tmp15_ = local; _tmp16_ = vala_variable_get_variable_type ((ValaVariable*) _tmp15_); _tmp17_ = _tmp16_; _tmp18_ = value_owned; vala_data_type_set_value_owned (_tmp17_, *_tmp18_); } _tmp19_ = local; _tmp20_ = vala_variable_get_variable_type ((ValaVariable*) _tmp19_); _tmp21_ = _tmp20_; _tmp22_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp21_) ? ((ValaArrayType*) _tmp21_) : NULL); array_type = _tmp22_; _tmp23_ = local; _tmp24_ = vala_variable_get_variable_type ((ValaVariable*) _tmp23_); _tmp25_ = _tmp24_; _tmp26_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp25_) ? ((ValaDelegateType*) _tmp25_) : NULL); deleg_type = _tmp26_; _tmp27_ = local; vala_ccode_base_module_emit_temp_var (self, _tmp27_); _tmp28_ = array_type; if (_tmp28_ != NULL) { { gint dim; dim = 1; { gboolean _tmp29_; _tmp29_ = TRUE; while (TRUE) { gboolean _tmp30_; gint _tmp32_; ValaArrayType* _tmp33_; gint _tmp34_; gint _tmp35_; ValaDataType* _tmp36_; ValaDataType* _tmp37_ = NULL; ValaDataType* _tmp38_; ValaLocalVariable* _tmp39_; const gchar* _tmp40_; const gchar* _tmp41_; gint _tmp42_; gchar* _tmp43_ = NULL; gchar* _tmp44_; ValaCodeNode* _tmp45_; ValaSourceReference* _tmp46_; ValaSourceReference* _tmp47_; ValaLocalVariable* _tmp48_; ValaLocalVariable* _tmp49_; ValaLocalVariable* len_var; ValaLocalVariable* _tmp50_; gboolean _tmp51_; ValaLocalVariable* _tmp52_; _tmp30_ = _tmp29_; if (!_tmp30_) { gint _tmp31_; _tmp31_ = dim; dim = _tmp31_ + 1; } _tmp29_ = FALSE; _tmp32_ = dim; _tmp33_ = array_type; _tmp34_ = vala_array_type_get_rank (_tmp33_); _tmp35_ = _tmp34_; if (!(_tmp32_ <= _tmp35_)) { break; } _tmp36_ = self->int_type; _tmp37_ = vala_data_type_copy (_tmp36_); _tmp38_ = _tmp37_; _tmp39_ = local; _tmp40_ = vala_symbol_get_name ((ValaSymbol*) _tmp39_); _tmp41_ = _tmp40_; _tmp42_ = dim; _tmp43_ = vala_ccode_base_module_get_array_length_cname (self, _tmp41_, _tmp42_); _tmp44_ = _tmp43_; _tmp45_ = node_reference; _tmp46_ = vala_code_node_get_source_reference (_tmp45_); _tmp47_ = _tmp46_; _tmp48_ = vala_local_variable_new (_tmp38_, _tmp44_, NULL, _tmp47_); _tmp49_ = _tmp48_; _g_free0 (_tmp44_); _vala_code_node_unref0 (_tmp38_); len_var = _tmp49_; _tmp50_ = len_var; _tmp51_ = init; vala_local_variable_set_no_init (_tmp50_, !_tmp51_); _tmp52_ = len_var; vala_ccode_base_module_emit_temp_var (self, _tmp52_); _vala_code_node_unref0 (len_var); } } } } else { gboolean _tmp53_ = FALSE; ValaDelegateType* _tmp54_; gboolean _tmp60_; _tmp54_ = deleg_type; if (_tmp54_ != NULL) { ValaDelegateType* _tmp55_; ValaDelegate* _tmp56_; ValaDelegate* _tmp57_; gboolean _tmp58_; gboolean _tmp59_; _tmp55_ = deleg_type; _tmp56_ = vala_delegate_type_get_delegate_symbol (_tmp55_); _tmp57_ = _tmp56_; _tmp58_ = vala_delegate_get_has_target (_tmp57_); _tmp59_ = _tmp58_; _tmp53_ = _tmp59_; } else { _tmp53_ = FALSE; } _tmp60_ = _tmp53_; if (_tmp60_) { ValaVoidType* _tmp61_; ValaVoidType* _tmp62_; ValaPointerType* _tmp63_; ValaPointerType* _tmp64_; ValaLocalVariable* _tmp65_; const gchar* _tmp66_; const gchar* _tmp67_; gchar* _tmp68_ = NULL; gchar* _tmp69_; ValaCodeNode* _tmp70_; ValaSourceReference* _tmp71_; ValaSourceReference* _tmp72_; ValaLocalVariable* _tmp73_; ValaLocalVariable* _tmp74_; ValaLocalVariable* target_var; ValaLocalVariable* _tmp75_; gboolean _tmp76_; ValaLocalVariable* _tmp77_; ValaDelegateType* _tmp78_; gboolean _tmp79_; gboolean _tmp80_; _tmp61_ = vala_void_type_new (NULL); _tmp62_ = _tmp61_; _tmp63_ = vala_pointer_type_new ((ValaDataType*) _tmp62_, NULL); _tmp64_ = _tmp63_; _tmp65_ = local; _tmp66_ = vala_symbol_get_name ((ValaSymbol*) _tmp65_); _tmp67_ = _tmp66_; _tmp68_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp67_); _tmp69_ = _tmp68_; _tmp70_ = node_reference; _tmp71_ = vala_code_node_get_source_reference (_tmp70_); _tmp72_ = _tmp71_; _tmp73_ = vala_local_variable_new ((ValaDataType*) _tmp64_, _tmp69_, NULL, _tmp72_); _tmp74_ = _tmp73_; _g_free0 (_tmp69_); _vala_code_node_unref0 (_tmp64_); _vala_code_node_unref0 (_tmp62_); target_var = _tmp74_; _tmp75_ = target_var; _tmp76_ = init; vala_local_variable_set_no_init (_tmp75_, !_tmp76_); _tmp77_ = target_var; vala_ccode_base_module_emit_temp_var (self, _tmp77_); _tmp78_ = deleg_type; _tmp79_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp78_); _tmp80_ = _tmp79_; if (_tmp80_) { ValaDataType* _tmp81_; ValaDataType* _tmp82_ = NULL; ValaDataType* _tmp83_; ValaLocalVariable* _tmp84_; const gchar* _tmp85_; const gchar* _tmp86_; gchar* _tmp87_ = NULL; gchar* _tmp88_; ValaCodeNode* _tmp89_; ValaSourceReference* _tmp90_; ValaSourceReference* _tmp91_; ValaLocalVariable* _tmp92_; ValaLocalVariable* _tmp93_; ValaLocalVariable* target_destroy_notify_var; ValaLocalVariable* _tmp94_; gboolean _tmp95_; ValaLocalVariable* _tmp96_; _tmp81_ = self->gdestroynotify_type; _tmp82_ = vala_data_type_copy (_tmp81_); _tmp83_ = _tmp82_; _tmp84_ = local; _tmp85_ = vala_symbol_get_name ((ValaSymbol*) _tmp84_); _tmp86_ = _tmp85_; _tmp87_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp86_); _tmp88_ = _tmp87_; _tmp89_ = node_reference; _tmp90_ = vala_code_node_get_source_reference (_tmp89_); _tmp91_ = _tmp90_; _tmp92_ = vala_local_variable_new (_tmp83_, _tmp88_, NULL, _tmp91_); _tmp93_ = _tmp92_; _g_free0 (_tmp88_); _vala_code_node_unref0 (_tmp83_); target_destroy_notify_var = _tmp93_; _tmp94_ = target_destroy_notify_var; _tmp95_ = init; vala_local_variable_set_no_init (_tmp94_, !_tmp95_); _tmp96_ = target_destroy_notify_var; vala_ccode_base_module_emit_temp_var (self, _tmp96_); _vala_code_node_unref0 (target_destroy_notify_var); } _vala_code_node_unref0 (target_var); } } _tmp97_ = local; _tmp98_ = vala_ccode_base_module_get_local_cvalue (self, _tmp97_); value = _tmp98_; vala_ccode_base_module_set_array_size_cvalue (self, value, NULL); result = value; _vala_code_node_unref0 (deleg_type); _vala_code_node_unref0 (array_type); _vala_code_node_unref0 (local); return result; } /** * Load a temporary variable returning unowned or owned rvalue access to it, depending on the ownership of the value type. */ ValaTargetValue* vala_ccode_base_module_load_temp_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue) { ValaTargetValue* result = NULL; ValaTargetValue* _tmp0_; ValaGLibValue* _tmp1_ = NULL; ValaGLibValue* value; ValaGLibValue* _tmp2_; ValaDataType* _tmp3_; ValaDataType* _tmp4_; ValaDelegateType* _tmp5_; ValaDelegateType* deleg_type; ValaDelegateType* _tmp6_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (lvalue != NULL, NULL); _tmp0_ = lvalue; _tmp1_ = vala_glib_value_copy (VALA_GLIB_VALUE (_tmp0_)); value = _tmp1_; _tmp2_ = value; _tmp3_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp4_) ? ((ValaDelegateType*) _tmp4_) : NULL); deleg_type = _tmp5_; _tmp6_ = deleg_type; if (_tmp6_ != NULL) { ValaDelegateType* _tmp7_; ValaDelegate* _tmp8_; ValaDelegate* _tmp9_; gboolean _tmp10_; gboolean _tmp11_; _tmp7_ = deleg_type; _tmp8_ = vala_delegate_type_get_delegate_symbol (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_delegate_get_has_target (_tmp9_); _tmp11_ = _tmp10_; if (!_tmp11_) { ValaGLibValue* _tmp12_; ValaCCodeConstant* _tmp13_; ValaGLibValue* _tmp14_; _tmp12_ = value; _tmp13_ = vala_ccode_constant_new ("NULL"); _vala_ccode_node_unref0 (_tmp12_->delegate_target_cvalue); _tmp12_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp13_; _tmp14_ = value; VALA_GLIB_VALUE (_tmp14_)->lvalue = FALSE; } else { ValaDelegateType* _tmp15_; gboolean _tmp16_; gboolean _tmp17_; _tmp15_ = deleg_type; _tmp16_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp15_); _tmp17_ = _tmp16_; if (!_tmp17_) { ValaGLibValue* _tmp18_; ValaCCodeConstant* _tmp19_; ValaGLibValue* _tmp20_; _tmp18_ = value; _tmp19_ = vala_ccode_constant_new ("NULL"); _vala_ccode_node_unref0 (_tmp18_->delegate_target_destroy_notify_cvalue); _tmp18_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp19_; _tmp20_ = value; VALA_GLIB_VALUE (_tmp20_)->lvalue = FALSE; } } } result = (ValaTargetValue*) value; _vala_code_node_unref0 (deleg_type); return result; } /** * Store a value in a temporary variable and return unowned or owned rvalue access to it, depending on the ownership of the given type. */ ValaTargetValue* vala_ccode_base_module_store_temp_value (ValaCCodeBaseModule* self, ValaTargetValue* initializer, ValaCodeNode* node_reference, gboolean* value_owned) { ValaTargetValue* result = NULL; ValaTargetValue* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaCodeNode* _tmp3_; gboolean* _tmp4_; ValaTargetValue* _tmp5_ = NULL; ValaTargetValue* lvalue; ValaTargetValue* _tmp6_; ValaTargetValue* _tmp7_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (initializer != NULL, NULL); g_return_val_if_fail (node_reference != NULL, NULL); _tmp0_ = initializer; _tmp1_ = vala_target_value_get_value_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = node_reference; _tmp4_ = value_owned; _tmp5_ = vala_ccode_base_module_create_temp_value (self, _tmp2_, FALSE, _tmp3_, _tmp4_); lvalue = _tmp5_; _tmp6_ = initializer; vala_ccode_base_module_store_value (self, lvalue, _tmp6_); _tmp7_ = vala_ccode_base_module_load_temp_value (self, lvalue); result = _tmp7_; _vala_target_value_unref0 (lvalue); return result; } static void vala_ccode_base_module_real_visit_initializer_list (ValaCodeVisitor* base, ValaInitializerList* list) { ValaCCodeBaseModule * self; ValaInitializerList* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaTypeSymbol* _tmp3_; ValaTypeSymbol* _tmp4_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (list != NULL); _tmp0_ = list; _tmp1_ = vala_expression_get_target_type ((ValaExpression*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_data_type_get_data_type (_tmp2_); _tmp4_ = _tmp3_; if (VALA_IS_STRUCT (_tmp4_)) { ValaInitializerList* _tmp5_; ValaDataType* _tmp6_; ValaDataType* _tmp7_; ValaTypeSymbol* _tmp8_; ValaTypeSymbol* _tmp9_; ValaStruct* _tmp10_; ValaStruct* st; gboolean _tmp11_ = FALSE; gboolean _tmp12_ = FALSE; ValaInitializerList* _tmp13_; ValaCodeNode* _tmp14_; ValaCodeNode* _tmp15_; gboolean _tmp19_; gboolean _tmp23_; _tmp5_ = list; _tmp6_ = vala_expression_get_target_type ((ValaExpression*) _tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_data_type_get_data_type (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp9_)); st = _tmp10_; _tmp13_ = list; _tmp14_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp13_); _tmp15_ = _tmp14_; if (VALA_IS_CONSTANT (_tmp15_)) { _tmp12_ = TRUE; } else { ValaInitializerList* _tmp16_; ValaCodeNode* _tmp17_; ValaCodeNode* _tmp18_; _tmp16_ = list; _tmp17_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp16_); _tmp18_ = _tmp17_; _tmp12_ = VALA_IS_FIELD (_tmp18_); } _tmp19_ = _tmp12_; if (_tmp19_) { _tmp11_ = TRUE; } else { ValaInitializerList* _tmp20_; ValaCodeNode* _tmp21_; ValaCodeNode* _tmp22_; _tmp20_ = list; _tmp21_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp20_); _tmp22_ = _tmp21_; _tmp11_ = VALA_IS_INITIALIZER_LIST (_tmp22_); } _tmp23_ = _tmp11_; if (_tmp23_) { ValaCCodeInitializerList* _tmp24_; ValaCCodeInitializerList* clist; ValaStruct* _tmp25_; ValaList* _tmp26_ = NULL; ValaList* _tmp27_; ValaIterator* _tmp28_ = NULL; ValaIterator* _tmp29_; ValaIterator* field_it; ValaInitializerList* _tmp85_; ValaCCodeInitializerList* _tmp86_; _tmp24_ = vala_ccode_initializer_list_new (); clist = _tmp24_; _tmp25_ = st; _tmp26_ = vala_struct_get_fields (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = vala_iterable_iterator ((ValaIterable*) _tmp27_); _tmp29_ = _tmp28_; _vala_iterable_unref0 (_tmp27_); field_it = _tmp29_; { ValaInitializerList* _tmp30_; ValaList* _tmp31_ = NULL; ValaList* _expr_list; ValaList* _tmp32_; gint _tmp33_; gint _tmp34_; gint _expr_size; gint _expr_index; _tmp30_ = list; _tmp31_ = vala_initializer_list_get_initializers (_tmp30_); _expr_list = _tmp31_; _tmp32_ = _expr_list; _tmp33_ = vala_collection_get_size ((ValaCollection*) _tmp32_); _tmp34_ = _tmp33_; _expr_size = _tmp34_; _expr_index = -1; while (TRUE) { gint _tmp35_; gint _tmp36_; gint _tmp37_; ValaList* _tmp38_; gint _tmp39_; gpointer _tmp40_ = NULL; ValaExpression* expr; ValaField* field; ValaExpression* _tmp48_; ValaCCodeExpression* _tmp49_ = NULL; ValaCCodeExpression* cexpr; ValaField* _tmp50_; gchar* _tmp51_ = NULL; gchar* ctype; const gchar* _tmp52_; ValaCCodeInitializerList* _tmp56_; ValaCCodeExpression* _tmp57_; ValaField* _tmp58_; ValaDataType* _tmp59_; ValaDataType* _tmp60_; ValaArrayType* _tmp61_; ValaArrayType* array_type; gboolean _tmp62_ = FALSE; gboolean _tmp63_ = FALSE; ValaArrayType* _tmp64_; gboolean _tmp67_; gboolean _tmp70_; _tmp35_ = _expr_index; _expr_index = _tmp35_ + 1; _tmp36_ = _expr_index; _tmp37_ = _expr_size; if (!(_tmp36_ < _tmp37_)) { break; } _tmp38_ = _expr_list; _tmp39_ = _expr_index; _tmp40_ = vala_list_get (_tmp38_, _tmp39_); expr = (ValaExpression*) _tmp40_; field = NULL; while (TRUE) { ValaField* _tmp41_; ValaIterator* _tmp42_; ValaIterator* _tmp43_; gpointer _tmp44_ = NULL; ValaField* _tmp45_; ValaMemberBinding _tmp46_; ValaMemberBinding _tmp47_; _tmp41_ = field; if (!(_tmp41_ == NULL)) { break; } _tmp42_ = field_it; vala_iterator_next (_tmp42_); _tmp43_ = field_it; _tmp44_ = vala_iterator_get (_tmp43_); _vala_code_node_unref0 (field); field = (ValaField*) _tmp44_; _tmp45_ = field; _tmp46_ = vala_field_get_binding (_tmp45_); _tmp47_ = _tmp46_; if (_tmp47_ != VALA_MEMBER_BINDING_INSTANCE) { _vala_code_node_unref0 (field); field = NULL; } } _tmp48_ = expr; _tmp49_ = vala_ccode_base_module_get_cvalue (self, _tmp48_); cexpr = _tmp49_; _tmp50_ = field; _tmp51_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp50_); ctype = _tmp51_; _tmp52_ = ctype; if (_tmp52_ != NULL) { ValaCCodeExpression* _tmp53_; const gchar* _tmp54_; ValaCCodeCastExpression* _tmp55_; _tmp53_ = cexpr; _tmp54_ = ctype; _tmp55_ = vala_ccode_cast_expression_new (_tmp53_, _tmp54_); _vala_ccode_node_unref0 (cexpr); cexpr = (ValaCCodeExpression*) _tmp55_; } _tmp56_ = clist; _tmp57_ = cexpr; vala_ccode_initializer_list_append (_tmp56_, _tmp57_); _tmp58_ = field; _tmp59_ = vala_variable_get_variable_type ((ValaVariable*) _tmp58_); _tmp60_ = _tmp59_; _tmp61_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp60_) ? ((ValaArrayType*) _tmp60_) : NULL); array_type = _tmp61_; _tmp64_ = array_type; if (_tmp64_ != NULL) { ValaField* _tmp65_; gboolean _tmp66_ = FALSE; _tmp65_ = field; _tmp66_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp65_); _tmp63_ = _tmp66_; } else { _tmp63_ = FALSE; } _tmp67_ = _tmp63_; if (_tmp67_) { ValaField* _tmp68_; gboolean _tmp69_ = FALSE; _tmp68_ = field; _tmp69_ = vala_ccode_base_module_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp68_); _tmp62_ = !_tmp69_; } else { _tmp62_ = FALSE; } _tmp70_ = _tmp62_; if (_tmp70_) { { gint dim; dim = 1; { gboolean _tmp71_; _tmp71_ = TRUE; while (TRUE) { gboolean _tmp72_; gint _tmp74_; ValaArrayType* _tmp75_; gint _tmp76_; gint _tmp77_; ValaCCodeInitializerList* _tmp78_; ValaExpression* _tmp79_; ValaTargetValue* _tmp80_; ValaTargetValue* _tmp81_; gint _tmp82_; ValaCCodeExpression* _tmp83_ = NULL; ValaCCodeExpression* _tmp84_; _tmp72_ = _tmp71_; if (!_tmp72_) { gint _tmp73_; _tmp73_ = dim; dim = _tmp73_ + 1; } _tmp71_ = FALSE; _tmp74_ = dim; _tmp75_ = array_type; _tmp76_ = vala_array_type_get_rank (_tmp75_); _tmp77_ = _tmp76_; if (!(_tmp74_ <= _tmp77_)) { break; } _tmp78_ = clist; _tmp79_ = expr; _tmp80_ = vala_expression_get_target_value (_tmp79_); _tmp81_ = _tmp80_; _tmp82_ = dim; _tmp83_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp81_, _tmp82_); _tmp84_ = _tmp83_; vala_ccode_initializer_list_append (_tmp78_, _tmp84_); _vala_ccode_node_unref0 (_tmp84_); } } } } _vala_code_node_unref0 (array_type); _g_free0 (ctype); _vala_ccode_node_unref0 (cexpr); _vala_code_node_unref0 (field); _vala_code_node_unref0 (expr); } _vala_iterable_unref0 (_expr_list); } _tmp85_ = list; _tmp86_ = clist; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp85_, (ValaCCodeExpression*) _tmp86_); _vala_iterator_unref0 (field_it); _vala_ccode_node_unref0 (clist); } else { ValaInitializerList* _tmp87_; ValaDataType* _tmp88_; ValaDataType* _tmp89_; ValaInitializerList* _tmp90_; ValaTargetValue* _tmp91_ = NULL; ValaTargetValue* instance; ValaStruct* _tmp92_; ValaList* _tmp93_ = NULL; ValaList* _tmp94_; ValaIterator* _tmp95_ = NULL; ValaIterator* _tmp96_; ValaIterator* field_it; ValaInitializerList* _tmp120_; ValaTargetValue* _tmp121_; _tmp87_ = list; _tmp88_ = vala_expression_get_value_type ((ValaExpression*) _tmp87_); _tmp89_ = _tmp88_; _tmp90_ = list; _tmp91_ = vala_ccode_base_module_create_temp_value (self, _tmp89_, TRUE, (ValaCodeNode*) _tmp90_, NULL); instance = _tmp91_; _tmp92_ = st; _tmp93_ = vala_struct_get_fields (_tmp92_); _tmp94_ = _tmp93_; _tmp95_ = vala_iterable_iterator ((ValaIterable*) _tmp94_); _tmp96_ = _tmp95_; _vala_iterable_unref0 (_tmp94_); field_it = _tmp96_; { ValaInitializerList* _tmp97_; ValaList* _tmp98_ = NULL; ValaList* _expr_list; ValaList* _tmp99_; gint _tmp100_; gint _tmp101_; gint _expr_size; gint _expr_index; _tmp97_ = list; _tmp98_ = vala_initializer_list_get_initializers (_tmp97_); _expr_list = _tmp98_; _tmp99_ = _expr_list; _tmp100_ = vala_collection_get_size ((ValaCollection*) _tmp99_); _tmp101_ = _tmp100_; _expr_size = _tmp101_; _expr_index = -1; while (TRUE) { gint _tmp102_; gint _tmp103_; gint _tmp104_; ValaList* _tmp105_; gint _tmp106_; gpointer _tmp107_ = NULL; ValaExpression* expr; ValaField* field; ValaField* _tmp115_; ValaTargetValue* _tmp116_; ValaExpression* _tmp117_; ValaTargetValue* _tmp118_; ValaTargetValue* _tmp119_; _tmp102_ = _expr_index; _expr_index = _tmp102_ + 1; _tmp103_ = _expr_index; _tmp104_ = _expr_size; if (!(_tmp103_ < _tmp104_)) { break; } _tmp105_ = _expr_list; _tmp106_ = _expr_index; _tmp107_ = vala_list_get (_tmp105_, _tmp106_); expr = (ValaExpression*) _tmp107_; field = NULL; while (TRUE) { ValaField* _tmp108_; ValaIterator* _tmp109_; ValaIterator* _tmp110_; gpointer _tmp111_ = NULL; ValaField* _tmp112_; ValaMemberBinding _tmp113_; ValaMemberBinding _tmp114_; _tmp108_ = field; if (!(_tmp108_ == NULL)) { break; } _tmp109_ = field_it; vala_iterator_next (_tmp109_); _tmp110_ = field_it; _tmp111_ = vala_iterator_get (_tmp110_); _vala_code_node_unref0 (field); field = (ValaField*) _tmp111_; _tmp112_ = field; _tmp113_ = vala_field_get_binding (_tmp112_); _tmp114_ = _tmp113_; if (_tmp114_ != VALA_MEMBER_BINDING_INSTANCE) { _vala_code_node_unref0 (field); field = NULL; } } _tmp115_ = field; _tmp116_ = instance; _tmp117_ = expr; _tmp118_ = vala_expression_get_target_value (_tmp117_); _tmp119_ = _tmp118_; vala_code_generator_store_field ((ValaCodeGenerator*) self, _tmp115_, _tmp116_, _tmp119_); _vala_code_node_unref0 (field); _vala_code_node_unref0 (expr); } _vala_iterable_unref0 (_expr_list); } _tmp120_ = list; _tmp121_ = instance; vala_expression_set_target_value ((ValaExpression*) _tmp120_, _tmp121_); _vala_iterator_unref0 (field_it); _vala_target_value_unref0 (instance); } _vala_code_node_unref0 (st); } else { ValaCCodeInitializerList* _tmp122_; ValaCCodeInitializerList* clist; ValaInitializerList* _tmp138_; ValaCCodeInitializerList* _tmp139_; _tmp122_ = vala_ccode_initializer_list_new (); clist = _tmp122_; { ValaInitializerList* _tmp123_; ValaList* _tmp124_ = NULL; ValaList* _expr_list; ValaList* _tmp125_; gint _tmp126_; gint _tmp127_; gint _expr_size; gint _expr_index; _tmp123_ = list; _tmp124_ = vala_initializer_list_get_initializers (_tmp123_); _expr_list = _tmp124_; _tmp125_ = _expr_list; _tmp126_ = vala_collection_get_size ((ValaCollection*) _tmp125_); _tmp127_ = _tmp126_; _expr_size = _tmp127_; _expr_index = -1; while (TRUE) { gint _tmp128_; gint _tmp129_; gint _tmp130_; ValaList* _tmp131_; gint _tmp132_; gpointer _tmp133_ = NULL; ValaExpression* expr; ValaCCodeInitializerList* _tmp134_; ValaExpression* _tmp135_; ValaCCodeExpression* _tmp136_ = NULL; ValaCCodeExpression* _tmp137_; _tmp128_ = _expr_index; _expr_index = _tmp128_ + 1; _tmp129_ = _expr_index; _tmp130_ = _expr_size; if (!(_tmp129_ < _tmp130_)) { break; } _tmp131_ = _expr_list; _tmp132_ = _expr_index; _tmp133_ = vala_list_get (_tmp131_, _tmp132_); expr = (ValaExpression*) _tmp133_; _tmp134_ = clist; _tmp135_ = expr; _tmp136_ = vala_ccode_base_module_get_cvalue (self, _tmp135_); _tmp137_ = _tmp136_; vala_ccode_initializer_list_append (_tmp134_, _tmp137_); _vala_ccode_node_unref0 (_tmp137_); _vala_code_node_unref0 (expr); } _vala_iterable_unref0 (_expr_list); } _tmp138_ = list; _tmp139_ = clist; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp138_, (ValaCCodeExpression*) _tmp139_); _vala_ccode_node_unref0 (clist); } } static ValaLocalVariable* vala_ccode_base_module_real_create_local (ValaCodeGenerator* base, ValaDataType* type) { ValaCCodeBaseModule * self; ValaLocalVariable* result = NULL; ValaDataType* _tmp0_; ValaDataType* _tmp1_; gboolean _tmp2_; gboolean _tmp3_; ValaLocalVariable* _tmp4_ = NULL; ValaLocalVariable* _result_; self = (ValaCCodeBaseModule*) base; g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; _tmp1_ = type; _tmp2_ = vala_data_type_get_value_owned (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_base_module_get_temp_variable (self, _tmp0_, _tmp3_, NULL, TRUE); _result_ = _tmp4_; vala_ccode_base_module_emit_temp_var (self, _result_); result = _result_; return result; } ValaLocalVariable* vala_ccode_base_module_get_temp_variable (ValaCCodeBaseModule* self, ValaDataType* type, gboolean value_owned, ValaCodeNode* node_reference, gboolean init) { ValaLocalVariable* result = NULL; ValaDataType* _tmp0_; ValaDataType* _tmp1_ = NULL; ValaDataType* var_type; ValaDataType* _tmp2_; gboolean _tmp3_; ValaDataType* _tmp4_; gint _tmp5_; gint _tmp6_; gchar* _tmp7_ = NULL; gchar* _tmp8_; ValaLocalVariable* _tmp9_; ValaLocalVariable* _tmp10_; ValaLocalVariable* local; ValaLocalVariable* _tmp11_; gboolean _tmp12_; ValaCodeNode* _tmp13_; gint _tmp18_; gint _tmp19_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; _tmp1_ = vala_data_type_copy (_tmp0_); var_type = _tmp1_; _tmp2_ = var_type; _tmp3_ = value_owned; vala_data_type_set_value_owned (_tmp2_, _tmp3_); _tmp4_ = var_type; _tmp5_ = vala_ccode_base_module_get_next_temp_var_id (self); _tmp6_ = _tmp5_; _tmp7_ = g_strdup_printf ("_tmp%d_", _tmp6_); _tmp8_ = _tmp7_; _tmp9_ = vala_local_variable_new (_tmp4_, _tmp8_, NULL, NULL); _tmp10_ = _tmp9_; _g_free0 (_tmp8_); local = _tmp10_; _tmp11_ = local; _tmp12_ = init; vala_local_variable_set_no_init (_tmp11_, !_tmp12_); _tmp13_ = node_reference; if (_tmp13_ != NULL) { ValaLocalVariable* _tmp14_; ValaCodeNode* _tmp15_; ValaSourceReference* _tmp16_; ValaSourceReference* _tmp17_; _tmp14_ = local; _tmp15_ = node_reference; _tmp16_ = vala_code_node_get_source_reference (_tmp15_); _tmp17_ = _tmp16_; vala_code_node_set_source_reference ((ValaCodeNode*) _tmp14_, _tmp17_); } _tmp18_ = vala_ccode_base_module_get_next_temp_var_id (self); _tmp19_ = _tmp18_; vala_ccode_base_module_set_next_temp_var_id (self, _tmp19_ + 1); result = local; _vala_code_node_unref0 (var_type); return result; } static gboolean vala_ccode_base_module_is_in_generic_type (ValaCCodeBaseModule* self, ValaDataType* type) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; ValaSymbol* _tmp2_; ValaSymbol* _tmp3_; gboolean _tmp9_; gboolean _tmp18_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type != NULL, FALSE); _tmp2_ = vala_ccode_base_module_get_current_symbol (self); _tmp3_ = _tmp2_; if (_tmp3_ != NULL) { ValaDataType* _tmp4_; ValaTypeParameter* _tmp5_; ValaTypeParameter* _tmp6_; ValaSymbol* _tmp7_; ValaSymbol* _tmp8_; _tmp4_ = type; _tmp5_ = vala_data_type_get_type_parameter (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp6_); _tmp8_ = _tmp7_; _tmp1_ = VALA_IS_TYPESYMBOL (_tmp8_); } else { _tmp1_ = FALSE; } _tmp9_ = _tmp1_; if (_tmp9_) { gboolean _tmp10_ = FALSE; ValaMethod* _tmp11_; ValaMethod* _tmp12_; gboolean _tmp17_; _tmp11_ = vala_ccode_base_module_get_current_method (self); _tmp12_ = _tmp11_; if (_tmp12_ == NULL) { _tmp10_ = TRUE; } else { ValaMethod* _tmp13_; ValaMethod* _tmp14_; ValaMemberBinding _tmp15_; ValaMemberBinding _tmp16_; _tmp13_ = vala_ccode_base_module_get_current_method (self); _tmp14_ = _tmp13_; _tmp15_ = vala_method_get_binding (_tmp14_); _tmp16_ = _tmp15_; _tmp10_ = _tmp16_ == VALA_MEMBER_BINDING_INSTANCE; } _tmp17_ = _tmp10_; _tmp0_ = _tmp17_; } else { _tmp0_ = FALSE; } _tmp18_ = _tmp0_; if (_tmp18_) { result = TRUE; return result; } else { result = FALSE; return result; } } ValaCCodeExpression* vala_ccode_base_module_get_type_id_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup) { ValaCCodeExpression* result = NULL; ValaDataType* _tmp0_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; if (VALA_IS_GENERIC_TYPE (_tmp0_)) { ValaDataType* _tmp1_; ValaTypeParameter* _tmp2_; ValaTypeParameter* _tmp3_; const gchar* _tmp4_; const gchar* _tmp5_; gchar* _tmp6_ = NULL; gchar* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; gchar* var_name; gboolean _tmp10_ = FALSE; gboolean _tmp11_ = FALSE; ValaDataType* _tmp12_; gboolean _tmp13_ = FALSE; gboolean _tmp15_; gboolean _tmp18_; _tmp1_ = type; _tmp2_ = vala_data_type_get_type_parameter (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_symbol_get_name ((ValaSymbol*) _tmp3_); _tmp5_ = _tmp4_; _tmp6_ = g_utf8_strdown (_tmp5_, (gssize) (-1)); _tmp7_ = _tmp6_; _tmp8_ = g_strdup_printf ("%s_type", _tmp7_); _tmp9_ = _tmp8_; _g_free0 (_tmp7_); var_name = _tmp9_; _tmp12_ = type; _tmp13_ = vala_ccode_base_module_is_in_generic_type (self, _tmp12_); if (_tmp13_) { gboolean _tmp14_; _tmp14_ = is_chainup; _tmp11_ = !_tmp14_; } else { _tmp11_ = FALSE; } _tmp15_ = _tmp11_; if (_tmp15_) { gboolean _tmp16_; gboolean _tmp17_; _tmp16_ = vala_ccode_base_module_get_in_creation_method (self); _tmp17_ = _tmp16_; _tmp10_ = !_tmp17_; } else { _tmp10_ = FALSE; } _tmp18_ = _tmp10_; if (_tmp18_) { ValaCCodeExpression* _tmp19_ = NULL; ValaCCodeExpression* _tmp20_; ValaCCodeMemberAccess* _tmp21_; ValaCCodeMemberAccess* _tmp22_; const gchar* _tmp23_; ValaCCodeMemberAccess* _tmp24_; ValaCCodeExpression* _tmp25_; _tmp19_ = vala_ccode_base_module_get_result_cexpression (self, "self"); _tmp20_ = _tmp19_; _tmp21_ = vala_ccode_member_access_new_pointer (_tmp20_, "priv"); _tmp22_ = _tmp21_; _tmp23_ = var_name; _tmp24_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp22_, _tmp23_); _tmp25_ = (ValaCCodeExpression*) _tmp24_; _vala_ccode_node_unref0 (_tmp22_); _vala_ccode_node_unref0 (_tmp20_); result = _tmp25_; _g_free0 (var_name); return result; } else { const gchar* _tmp26_; ValaCCodeExpression* _tmp27_ = NULL; _tmp26_ = var_name; _tmp27_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp26_); result = _tmp27_; _g_free0 (var_name); return result; } _g_free0 (var_name); } else { ValaDataType* _tmp28_; gchar* _tmp29_ = NULL; gchar* type_id; const gchar* _tmp30_; const gchar* _tmp34_; ValaCCodeIdentifier* _tmp35_; _tmp28_ = type; _tmp29_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp28_); type_id = _tmp29_; _tmp30_ = type_id; if (g_strcmp0 (_tmp30_, "") == 0) { gchar* _tmp31_; _tmp31_ = g_strdup ("G_TYPE_INVALID"); _g_free0 (type_id); type_id = _tmp31_; } else { ValaDataType* _tmp32_; ValaCCodeFile* _tmp33_; _tmp32_ = type; _tmp33_ = self->cfile; vala_ccode_base_module_generate_type_declaration (self, _tmp32_, _tmp33_); } _tmp34_ = type_id; _tmp35_ = vala_ccode_identifier_new (_tmp34_); result = (ValaCCodeExpression*) _tmp35_; _g_free0 (type_id); return result; } } static ValaCCodeExpression* vala_ccode_base_module_real_get_dup_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup) { ValaCCodeExpression* result = NULL; ValaDataType* _tmp0_; g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; if (VALA_IS_ERROR_TYPE (_tmp0_)) { ValaCCodeIdentifier* _tmp1_; _tmp1_ = vala_ccode_identifier_new ("g_error_copy"); result = (ValaCCodeExpression*) _tmp1_; return result; } else { ValaDataType* _tmp2_; ValaTypeSymbol* _tmp3_; ValaTypeSymbol* _tmp4_; _tmp2_ = type; _tmp3_ = vala_data_type_get_data_type (_tmp2_); _tmp4_ = _tmp3_; if (_tmp4_ != NULL) { gchar* dup_function = NULL; ValaDataType* _tmp5_; ValaTypeSymbol* _tmp6_; ValaTypeSymbol* _tmp7_; ValaClass* _tmp8_; ValaClass* cl; ValaDataType* _tmp9_; ValaTypeSymbol* _tmp10_; ValaTypeSymbol* _tmp11_; gboolean _tmp12_ = FALSE; const gchar* _tmp75_; ValaCCodeIdentifier* _tmp76_; _tmp5_ = type; _tmp6_ = vala_data_type_get_data_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp7_) ? ((ValaClass*) _tmp7_) : NULL); cl = _tmp8_; _tmp9_ = type; _tmp10_ = vala_data_type_get_data_type (_tmp9_); _tmp11_ = _tmp10_; _tmp12_ = vala_ccode_base_module_is_reference_counting (_tmp11_); if (_tmp12_) { ValaDataType* _tmp13_; ValaTypeSymbol* _tmp14_; ValaTypeSymbol* _tmp15_; gchar* _tmp16_ = NULL; gboolean _tmp17_ = FALSE; ValaDataType* _tmp18_; ValaTypeSymbol* _tmp19_; ValaTypeSymbol* _tmp20_; gboolean _tmp22_; _tmp13_ = type; _tmp14_ = vala_data_type_get_data_type (_tmp13_); _tmp15_ = _tmp14_; _tmp16_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) VALA_OBJECT_TYPE_SYMBOL (_tmp15_)); _g_free0 (dup_function); dup_function = _tmp16_; _tmp18_ = type; _tmp19_ = vala_data_type_get_data_type (_tmp18_); _tmp20_ = _tmp19_; if (VALA_IS_INTERFACE (_tmp20_)) { const gchar* _tmp21_; _tmp21_ = dup_function; _tmp17_ = _tmp21_ == NULL; } else { _tmp17_ = FALSE; } _tmp22_ = _tmp17_; if (_tmp22_) { ValaSourceReference* _tmp23_; ValaDataType* _tmp24_; ValaTypeSymbol* _tmp25_; ValaTypeSymbol* _tmp26_; gchar* _tmp27_ = NULL; gchar* _tmp28_; gchar* _tmp29_ = NULL; gchar* _tmp30_; _tmp23_ = source_reference; _tmp24_ = type; _tmp25_ = vala_data_type_get_data_type (_tmp24_); _tmp26_ = _tmp25_; _tmp27_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp26_); _tmp28_ = _tmp27_; _tmp29_ = g_strdup_printf ("missing class prerequisite for interface `%s', add GLib.Object to inte" \ "rface declaration if unsure", _tmp28_); _tmp30_ = _tmp29_; vala_report_error (_tmp23_, _tmp30_); _g_free0 (_tmp30_); _g_free0 (_tmp28_); result = NULL; _vala_code_node_unref0 (cl); _g_free0 (dup_function); return result; } } else { gboolean _tmp31_ = FALSE; ValaClass* _tmp32_; gboolean _tmp36_; _tmp32_ = cl; if (_tmp32_ != NULL) { ValaClass* _tmp33_; gboolean _tmp34_; gboolean _tmp35_; _tmp33_ = cl; _tmp34_ = vala_class_get_is_immutable (_tmp33_); _tmp35_ = _tmp34_; _tmp31_ = _tmp35_; } else { _tmp31_ = FALSE; } _tmp36_ = _tmp31_; if (_tmp36_) { ValaDataType* _tmp37_; ValaTypeSymbol* _tmp38_; ValaTypeSymbol* _tmp39_; gchar* _tmp40_ = NULL; const gchar* _tmp41_; _tmp37_ = type; _tmp38_ = vala_data_type_get_data_type (_tmp37_); _tmp39_ = _tmp38_; _tmp40_ = vala_ccode_base_module_get_ccode_dup_function (_tmp39_); _g_free0 (dup_function); dup_function = _tmp40_; _tmp41_ = dup_function; if (_tmp41_ == NULL) { gchar* _tmp42_; _tmp42_ = g_strdup (""); _g_free0 (dup_function); dup_function = _tmp42_; } } else { gboolean _tmp43_ = FALSE; ValaClass* _tmp44_; gboolean _tmp47_; _tmp44_ = cl; if (_tmp44_ != NULL) { ValaClass* _tmp45_; gboolean _tmp46_ = FALSE; _tmp45_ = cl; _tmp46_ = vala_ccode_base_module_get_ccode_is_gboxed ((ValaTypeSymbol*) _tmp45_); _tmp43_ = _tmp46_; } else { _tmp43_ = FALSE; } _tmp47_ = _tmp43_; if (_tmp47_) { ValaDataType* _tmp48_; gchar* _tmp49_ = NULL; const gchar* _tmp50_; _tmp48_ = type; _tmp49_ = vala_ccode_base_module_generate_dup_func_wrapper (self, _tmp48_); _g_free0 (dup_function); dup_function = _tmp49_; _tmp50_ = dup_function; if (_tmp50_ == NULL) { gchar* _tmp51_; _tmp51_ = g_strdup (""); _g_free0 (dup_function); dup_function = _tmp51_; } } else { ValaDataType* _tmp52_; _tmp52_ = type; if (VALA_IS_VALUE_TYPE (_tmp52_)) { ValaDataType* _tmp53_; ValaTypeSymbol* _tmp54_; ValaTypeSymbol* _tmp55_; gchar* _tmp56_ = NULL; gboolean _tmp57_ = FALSE; const gchar* _tmp58_; gboolean _tmp62_; _tmp53_ = type; _tmp54_ = vala_data_type_get_data_type (_tmp53_); _tmp55_ = _tmp54_; _tmp56_ = vala_ccode_base_module_get_ccode_dup_function (_tmp55_); _g_free0 (dup_function); dup_function = _tmp56_; _tmp58_ = dup_function; if (_tmp58_ == NULL) { ValaDataType* _tmp59_; gboolean _tmp60_; gboolean _tmp61_; _tmp59_ = type; _tmp60_ = vala_data_type_get_nullable (_tmp59_); _tmp61_ = _tmp60_; _tmp57_ = _tmp61_; } else { _tmp57_ = FALSE; } _tmp62_ = _tmp57_; if (_tmp62_) { ValaDataType* _tmp63_; gchar* _tmp64_ = NULL; _tmp63_ = type; _tmp64_ = vala_ccode_base_module_generate_struct_dup_wrapper (self, VALA_VALUE_TYPE (_tmp63_)); _g_free0 (dup_function); dup_function = _tmp64_; } else { const gchar* _tmp65_; _tmp65_ = dup_function; if (_tmp65_ == NULL) { gchar* _tmp66_; _tmp66_ = g_strdup (""); _g_free0 (dup_function); dup_function = _tmp66_; } } } else { ValaSourceReference* _tmp67_; ValaDataType* _tmp68_; ValaTypeSymbol* _tmp69_; ValaTypeSymbol* _tmp70_; const gchar* _tmp71_; const gchar* _tmp72_; gchar* _tmp73_ = NULL; gchar* _tmp74_; _tmp67_ = source_reference; _tmp68_ = type; _tmp69_ = vala_data_type_get_data_type (_tmp68_); _tmp70_ = _tmp69_; _tmp71_ = vala_symbol_get_name ((ValaSymbol*) _tmp70_); _tmp72_ = _tmp71_; _tmp73_ = g_strdup_printf ("duplicating %s instance, use unowned variable or explicitly invoke cop" \ "y method", _tmp72_); _tmp74_ = _tmp73_; vala_report_error (_tmp67_, _tmp74_); _g_free0 (_tmp74_); result = NULL; _vala_code_node_unref0 (cl); _g_free0 (dup_function); return result; } } } } _tmp75_ = dup_function; _tmp76_ = vala_ccode_identifier_new (_tmp75_); result = (ValaCCodeExpression*) _tmp76_; _vala_code_node_unref0 (cl); _g_free0 (dup_function); return result; } else { ValaDataType* _tmp77_; ValaTypeParameter* _tmp78_; ValaTypeParameter* _tmp79_; _tmp77_ = type; _tmp78_ = vala_data_type_get_type_parameter (_tmp77_); _tmp79_ = _tmp78_; if (_tmp79_ != NULL) { ValaDataType* _tmp80_; ValaTypeParameter* _tmp81_; ValaTypeParameter* _tmp82_; const gchar* _tmp83_; const gchar* _tmp84_; gchar* _tmp85_ = NULL; gchar* _tmp86_; gchar* _tmp87_ = NULL; gchar* _tmp88_; gchar* func_name; gboolean _tmp89_ = FALSE; gboolean _tmp90_ = FALSE; ValaDataType* _tmp91_; gboolean _tmp92_ = FALSE; gboolean _tmp94_; gboolean _tmp97_; _tmp80_ = type; _tmp81_ = vala_data_type_get_type_parameter (_tmp80_); _tmp82_ = _tmp81_; _tmp83_ = vala_symbol_get_name ((ValaSymbol*) _tmp82_); _tmp84_ = _tmp83_; _tmp85_ = g_utf8_strdown (_tmp84_, (gssize) (-1)); _tmp86_ = _tmp85_; _tmp87_ = g_strdup_printf ("%s_dup_func", _tmp86_); _tmp88_ = _tmp87_; _g_free0 (_tmp86_); func_name = _tmp88_; _tmp91_ = type; _tmp92_ = vala_ccode_base_module_is_in_generic_type (self, _tmp91_); if (_tmp92_) { gboolean _tmp93_; _tmp93_ = is_chainup; _tmp90_ = !_tmp93_; } else { _tmp90_ = FALSE; } _tmp94_ = _tmp90_; if (_tmp94_) { gboolean _tmp95_; gboolean _tmp96_; _tmp95_ = vala_ccode_base_module_get_in_creation_method (self); _tmp96_ = _tmp95_; _tmp89_ = !_tmp96_; } else { _tmp89_ = FALSE; } _tmp97_ = _tmp89_; if (_tmp97_) { ValaCCodeExpression* _tmp98_ = NULL; ValaCCodeExpression* _tmp99_; ValaCCodeMemberAccess* _tmp100_; ValaCCodeMemberAccess* _tmp101_; const gchar* _tmp102_; ValaCCodeMemberAccess* _tmp103_; ValaCCodeExpression* _tmp104_; _tmp98_ = vala_ccode_base_module_get_result_cexpression (self, "self"); _tmp99_ = _tmp98_; _tmp100_ = vala_ccode_member_access_new_pointer (_tmp99_, "priv"); _tmp101_ = _tmp100_; _tmp102_ = func_name; _tmp103_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp101_, _tmp102_); _tmp104_ = (ValaCCodeExpression*) _tmp103_; _vala_ccode_node_unref0 (_tmp101_); _vala_ccode_node_unref0 (_tmp99_); result = _tmp104_; _g_free0 (func_name); return result; } else { const gchar* _tmp105_; ValaCCodeExpression* _tmp106_ = NULL; _tmp105_ = func_name; _tmp106_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp105_); result = _tmp106_; _g_free0 (func_name); return result; } _g_free0 (func_name); } else { ValaDataType* _tmp107_; _tmp107_ = type; if (VALA_IS_POINTER_TYPE (_tmp107_)) { ValaDataType* _tmp108_; ValaPointerType* _tmp109_; ValaPointerType* pointer_type; ValaPointerType* _tmp110_; ValaDataType* _tmp111_; ValaDataType* _tmp112_; ValaSourceReference* _tmp113_; ValaCCodeExpression* _tmp114_ = NULL; _tmp108_ = type; _tmp109_ = _vala_code_node_ref0 (VALA_POINTER_TYPE (_tmp108_)); pointer_type = _tmp109_; _tmp110_ = pointer_type; _tmp111_ = vala_pointer_type_get_base_type (_tmp110_); _tmp112_ = _tmp111_; _tmp113_ = source_reference; _tmp114_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp112_, _tmp113_, FALSE); result = _tmp114_; _vala_code_node_unref0 (pointer_type); return result; } else { ValaCCodeConstant* _tmp115_; _tmp115_ = vala_ccode_constant_new ("NULL"); result = (ValaCCodeExpression*) _tmp115_; return result; } } } } } ValaCCodeExpression* vala_ccode_base_module_get_dup_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dup_func_expression (self, type, source_reference, is_chainup); } static void vala_ccode_base_module_make_comparable_cexpression (ValaCCodeBaseModule* self, ValaDataType** left_type, ValaCCodeExpression** cleft, ValaDataType** right_type, ValaCCodeExpression** cright) { ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; ValaStruct* _tmp3_; ValaStruct* left_type_as_struct; ValaDataType* _tmp4_; ValaTypeSymbol* _tmp5_; ValaTypeSymbol* _tmp6_; ValaStruct* _tmp7_; ValaStruct* right_type_as_struct; ValaCCodeExpression* _tmp8_; ValaDataType* _tmp9_; ValaDataType* _tmp10_; ValaCCodeExpression* _tmp11_ = NULL; ValaCCodeExpression* valuecast; ValaCCodeExpression* _tmp12_; ValaCCodeExpression* _tmp17_; ValaDataType* _tmp18_; ValaDataType* _tmp19_; ValaCCodeExpression* _tmp20_ = NULL; ValaCCodeExpression* _tmp21_; gboolean _tmp26_ = FALSE; gboolean _tmp27_ = FALSE; gboolean _tmp28_ = FALSE; ValaDataType* _tmp29_; ValaTypeSymbol* _tmp30_; ValaTypeSymbol* _tmp31_; gboolean _tmp37_; gboolean _tmp41_; gboolean _tmp47_; g_return_if_fail (self != NULL); g_return_if_fail (*left_type != NULL); g_return_if_fail (*cleft != NULL); g_return_if_fail (*right_type != NULL); g_return_if_fail (*cright != NULL); _tmp0_ = *left_type; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp2_) ? ((ValaStruct*) _tmp2_) : NULL); left_type_as_struct = _tmp3_; _tmp4_ = *right_type; _tmp5_ = vala_data_type_get_data_type (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp6_) ? ((ValaStruct*) _tmp6_) : NULL); right_type_as_struct = _tmp7_; _tmp8_ = *cleft; _tmp9_ = *left_type; _tmp10_ = *right_type; _tmp11_ = vala_ccode_base_module_try_cast_value_to_type (self, _tmp8_, _tmp9_, _tmp10_, NULL); valuecast = _tmp11_; _tmp12_ = valuecast; if (_tmp12_ != NULL) { ValaCCodeExpression* _tmp13_; ValaCCodeExpression* _tmp14_; ValaDataType* _tmp15_; ValaDataType* _tmp16_; _tmp13_ = valuecast; _tmp14_ = _vala_ccode_node_ref0 (_tmp13_); _vala_ccode_node_unref0 (*cleft); *cleft = _tmp14_; _tmp15_ = *right_type; _tmp16_ = _vala_code_node_ref0 (_tmp15_); _vala_code_node_unref0 (*left_type); *left_type = _tmp16_; vala_ccode_base_module_make_comparable_cexpression (self, left_type, cleft, right_type, cright); _vala_ccode_node_unref0 (valuecast); _vala_code_node_unref0 (right_type_as_struct); _vala_code_node_unref0 (left_type_as_struct); return; } _tmp17_ = *cright; _tmp18_ = *right_type; _tmp19_ = *left_type; _tmp20_ = vala_ccode_base_module_try_cast_value_to_type (self, _tmp17_, _tmp18_, _tmp19_, NULL); _vala_ccode_node_unref0 (valuecast); valuecast = _tmp20_; _tmp21_ = valuecast; if (_tmp21_ != NULL) { ValaCCodeExpression* _tmp22_; ValaCCodeExpression* _tmp23_; ValaDataType* _tmp24_; ValaDataType* _tmp25_; _tmp22_ = valuecast; _tmp23_ = _vala_ccode_node_ref0 (_tmp22_); _vala_ccode_node_unref0 (*cright); *cright = _tmp23_; _tmp24_ = *left_type; _tmp25_ = _vala_code_node_ref0 (_tmp24_); _vala_code_node_unref0 (*right_type); *right_type = _tmp25_; vala_ccode_base_module_make_comparable_cexpression (self, left_type, cleft, right_type, cright); _vala_ccode_node_unref0 (valuecast); _vala_code_node_unref0 (right_type_as_struct); _vala_code_node_unref0 (left_type_as_struct); return; } _tmp29_ = *left_type; _tmp30_ = vala_data_type_get_data_type (_tmp29_); _tmp31_ = _tmp30_; if (VALA_IS_CLASS (_tmp31_)) { ValaDataType* _tmp32_; ValaTypeSymbol* _tmp33_; ValaTypeSymbol* _tmp34_; gboolean _tmp35_; gboolean _tmp36_; _tmp32_ = *left_type; _tmp33_ = vala_data_type_get_data_type (_tmp32_); _tmp34_ = _tmp33_; _tmp35_ = vala_class_get_is_compact (VALA_CLASS (_tmp34_)); _tmp36_ = _tmp35_; _tmp28_ = !_tmp36_; } else { _tmp28_ = FALSE; } _tmp37_ = _tmp28_; if (_tmp37_) { ValaDataType* _tmp38_; ValaTypeSymbol* _tmp39_; ValaTypeSymbol* _tmp40_; _tmp38_ = *right_type; _tmp39_ = vala_data_type_get_data_type (_tmp38_); _tmp40_ = _tmp39_; _tmp27_ = VALA_IS_CLASS (_tmp40_); } else { _tmp27_ = FALSE; } _tmp41_ = _tmp27_; if (_tmp41_) { ValaDataType* _tmp42_; ValaTypeSymbol* _tmp43_; ValaTypeSymbol* _tmp44_; gboolean _tmp45_; gboolean _tmp46_; _tmp42_ = *right_type; _tmp43_ = vala_data_type_get_data_type (_tmp42_); _tmp44_ = _tmp43_; _tmp45_ = vala_class_get_is_compact (VALA_CLASS (_tmp44_)); _tmp46_ = _tmp45_; _tmp26_ = !_tmp46_; } else { _tmp26_ = FALSE; } _tmp47_ = _tmp26_; if (_tmp47_) { ValaDataType* _tmp48_; ValaTypeSymbol* _tmp49_; ValaTypeSymbol* _tmp50_; ValaClass* _tmp51_; ValaClass* left_cl; ValaDataType* _tmp52_; ValaTypeSymbol* _tmp53_; ValaTypeSymbol* _tmp54_; ValaClass* _tmp55_; ValaClass* right_cl; ValaClass* _tmp56_; ValaClass* _tmp57_; _tmp48_ = *left_type; _tmp49_ = vala_data_type_get_data_type (_tmp48_); _tmp50_ = _tmp49_; _tmp51_ = _vala_code_node_ref0 (VALA_CLASS (_tmp50_)); left_cl = _tmp51_; _tmp52_ = *right_type; _tmp53_ = vala_data_type_get_data_type (_tmp52_); _tmp54_ = _tmp53_; _tmp55_ = _vala_code_node_ref0 (VALA_CLASS (_tmp54_)); right_cl = _tmp55_; _tmp56_ = left_cl; _tmp57_ = right_cl; if (_tmp56_ != _tmp57_) { ValaClass* _tmp58_; ValaClass* _tmp59_; gboolean _tmp60_ = FALSE; _tmp58_ = left_cl; _tmp59_ = right_cl; _tmp60_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp58_, (ValaTypeSymbol*) _tmp59_); if (_tmp60_) { ValaCCodeExpression* _tmp61_; ValaClass* _tmp62_; ValaCCodeFunctionCall* _tmp63_ = NULL; _tmp61_ = *cleft; _tmp62_ = right_cl; _tmp63_ = vala_ccode_base_module_generate_instance_cast (self, _tmp61_, (ValaTypeSymbol*) _tmp62_); _vala_ccode_node_unref0 (*cleft); *cleft = (ValaCCodeExpression*) _tmp63_; } else { ValaClass* _tmp64_; ValaClass* _tmp65_; gboolean _tmp66_ = FALSE; _tmp64_ = right_cl; _tmp65_ = left_cl; _tmp66_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp64_, (ValaTypeSymbol*) _tmp65_); if (_tmp66_) { ValaCCodeExpression* _tmp67_; ValaClass* _tmp68_; ValaCCodeFunctionCall* _tmp69_ = NULL; _tmp67_ = *cright; _tmp68_ = left_cl; _tmp69_ = vala_ccode_base_module_generate_instance_cast (self, _tmp67_, (ValaTypeSymbol*) _tmp68_); _vala_ccode_node_unref0 (*cright); *cright = (ValaCCodeExpression*) _tmp69_; } } } _vala_code_node_unref0 (right_cl); _vala_code_node_unref0 (left_cl); } else { gboolean _tmp70_ = FALSE; ValaStruct* _tmp71_; gboolean _tmp73_; _tmp71_ = left_type_as_struct; if (_tmp71_ != NULL) { ValaStruct* _tmp72_; _tmp72_ = right_type_as_struct; _tmp70_ = _tmp72_ != NULL; } else { _tmp70_ = FALSE; } _tmp73_ = _tmp70_; if (_tmp73_) { ValaDataType* _tmp74_; _tmp74_ = *left_type; if (VALA_IS_STRUCT_VALUE_TYPE (_tmp74_)) { ValaDataType* _tmp75_; gboolean _tmp76_; gboolean _tmp77_; ValaDataType* _tmp80_; gboolean _tmp81_; gboolean _tmp82_; _tmp75_ = *left_type; _tmp76_ = vala_data_type_get_nullable (_tmp75_); _tmp77_ = _tmp76_; if (!_tmp77_) { ValaCCodeExpression* _tmp78_; ValaCCodeUnaryExpression* _tmp79_; _tmp78_ = *cleft; _tmp79_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp78_); _vala_ccode_node_unref0 (*cleft); *cleft = (ValaCCodeExpression*) _tmp79_; } _tmp80_ = *right_type; _tmp81_ = vala_data_type_get_nullable (_tmp80_); _tmp82_ = _tmp81_; if (!_tmp82_) { ValaCCodeExpression* _tmp83_; ValaCCodeUnaryExpression* _tmp84_; _tmp83_ = *cright; _tmp84_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp83_); _vala_ccode_node_unref0 (*cright); *cright = (ValaCCodeExpression*) _tmp84_; } } else { gboolean _tmp85_ = FALSE; ValaDataType* _tmp86_; gboolean _tmp87_; gboolean _tmp88_; gboolean _tmp92_; _tmp86_ = *left_type; _tmp87_ = vala_data_type_get_nullable (_tmp86_); _tmp88_ = _tmp87_; if (_tmp88_) { ValaDataType* _tmp89_; gboolean _tmp90_; gboolean _tmp91_; _tmp89_ = *right_type; _tmp90_ = vala_data_type_get_nullable (_tmp89_); _tmp91_ = _tmp90_; _tmp85_ = _tmp91_; } else { _tmp85_ = FALSE; } _tmp92_ = _tmp85_; if (_tmp92_) { } else { ValaDataType* _tmp93_; gboolean _tmp94_; gboolean _tmp95_; _tmp93_ = *left_type; _tmp94_ = vala_data_type_get_nullable (_tmp93_); _tmp95_ = _tmp94_; if (_tmp95_) { ValaCCodeExpression* _tmp96_; ValaCCodeUnaryExpression* _tmp97_; _tmp96_ = *cleft; _tmp97_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp96_); _vala_ccode_node_unref0 (*cleft); *cleft = (ValaCCodeExpression*) _tmp97_; } else { ValaDataType* _tmp98_; gboolean _tmp99_; gboolean _tmp100_; _tmp98_ = *right_type; _tmp99_ = vala_data_type_get_nullable (_tmp98_); _tmp100_ = _tmp99_; if (_tmp100_) { ValaCCodeExpression* _tmp101_; ValaCCodeUnaryExpression* _tmp102_; _tmp101_ = *cright; _tmp102_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp101_); _vala_ccode_node_unref0 (*cright); *cright = (ValaCCodeExpression*) _tmp102_; } } } } } } _vala_ccode_node_unref0 (valuecast); _vala_code_node_unref0 (right_type_as_struct); _vala_code_node_unref0 (left_type_as_struct); } static gchar* vala_ccode_base_module_generate_struct_equal_function (ValaCCodeBaseModule* self, ValaStruct* st) { gchar* result = NULL; ValaStruct* _tmp0_; gchar* _tmp1_ = NULL; gchar* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gchar* equal_func; const gchar* _tmp5_; gboolean _tmp6_ = FALSE; const gchar* _tmp7_; ValaCCodeFunction* _tmp8_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp9_; ValaCCodeFunction* _tmp10_; ValaStruct* _tmp11_; gchar* _tmp12_ = NULL; gchar* _tmp13_; gchar* _tmp14_; gchar* _tmp15_; gchar* _tmp16_; gchar* _tmp17_; ValaCCodeParameter* _tmp18_; ValaCCodeParameter* _tmp19_; ValaCCodeFunction* _tmp20_; ValaStruct* _tmp21_; gchar* _tmp22_ = NULL; gchar* _tmp23_; gchar* _tmp24_; gchar* _tmp25_; gchar* _tmp26_; gchar* _tmp27_; ValaCCodeParameter* _tmp28_; ValaCCodeParameter* _tmp29_; ValaCCodeFunction* _tmp30_; gboolean has_instance_fields; gboolean _tmp159_; ValaCCodeFile* _tmp183_; ValaCCodeFunction* _tmp184_; ValaCCodeFile* _tmp185_; ValaCCodeFunction* _tmp186_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (st != NULL, NULL); _tmp0_ = st; _tmp1_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = g_strdup_printf ("_%sequal", _tmp2_); _tmp4_ = _tmp3_; _g_free0 (_tmp2_); equal_func = _tmp4_; _tmp5_ = equal_func; _tmp6_ = vala_ccode_base_module_add_wrapper (self, _tmp5_); if (!_tmp6_) { result = equal_func; return result; } _tmp7_ = equal_func; _tmp8_ = vala_ccode_function_new (_tmp7_, "gboolean"); function = _tmp8_; _tmp9_ = function; vala_ccode_function_set_modifiers (_tmp9_, VALA_CCODE_MODIFIERS_STATIC); _tmp10_ = function; _tmp11_ = st; _tmp12_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = g_strconcat ("const ", _tmp13_, NULL); _tmp15_ = _tmp14_; _tmp16_ = g_strconcat (_tmp15_, "*", NULL); _tmp17_ = _tmp16_; _tmp18_ = vala_ccode_parameter_new ("s1", _tmp17_); _tmp19_ = _tmp18_; vala_ccode_function_add_parameter (_tmp10_, _tmp19_); _vala_ccode_node_unref0 (_tmp19_); _g_free0 (_tmp17_); _g_free0 (_tmp15_); _g_free0 (_tmp13_); _tmp20_ = function; _tmp21_ = st; _tmp22_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp21_); _tmp23_ = _tmp22_; _tmp24_ = g_strconcat ("const ", _tmp23_, NULL); _tmp25_ = _tmp24_; _tmp26_ = g_strconcat (_tmp25_, "*", NULL); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_parameter_new ("s2", _tmp27_); _tmp29_ = _tmp28_; vala_ccode_function_add_parameter (_tmp20_, _tmp29_); _vala_ccode_node_unref0 (_tmp29_); _g_free0 (_tmp27_); _g_free0 (_tmp25_); _g_free0 (_tmp23_); _tmp30_ = function; vala_ccode_base_module_push_function (self, _tmp30_); { ValaCCodeIdentifier* _tmp31_; ValaCCodeIdentifier* _tmp32_; ValaCCodeIdentifier* _tmp33_; ValaCCodeIdentifier* _tmp34_; ValaCCodeBinaryExpression* _tmp35_; ValaCCodeBinaryExpression* _tmp36_; ValaCCodeBinaryExpression* cexp; ValaCCodeFunction* _tmp37_; ValaCCodeFunction* _tmp38_; ValaCCodeBinaryExpression* _tmp39_; ValaCCodeFunction* _tmp40_; ValaCCodeFunction* _tmp41_; ValaCCodeConstant* _tmp42_; ValaCCodeConstant* _tmp43_; ValaCCodeFunction* _tmp44_; ValaCCodeFunction* _tmp45_; _tmp31_ = vala_ccode_identifier_new ("s1"); _tmp32_ = _tmp31_; _tmp33_ = vala_ccode_identifier_new ("s2"); _tmp34_ = _tmp33_; _tmp35_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp32_, (ValaCCodeExpression*) _tmp34_); _tmp36_ = _tmp35_; _vala_ccode_node_unref0 (_tmp34_); _vala_ccode_node_unref0 (_tmp32_); cexp = _tmp36_; _tmp37_ = vala_ccode_base_module_get_ccode (self); _tmp38_ = _tmp37_; _tmp39_ = cexp; vala_ccode_function_open_if (_tmp38_, (ValaCCodeExpression*) _tmp39_); _tmp40_ = vala_ccode_base_module_get_ccode (self); _tmp41_ = _tmp40_; _tmp42_ = vala_ccode_constant_new ("TRUE"); _tmp43_ = _tmp42_; vala_ccode_function_add_return (_tmp41_, (ValaCCodeExpression*) _tmp43_); _vala_ccode_node_unref0 (_tmp43_); _tmp44_ = vala_ccode_base_module_get_ccode (self); _tmp45_ = _tmp44_; vala_ccode_function_close (_tmp45_); _vala_ccode_node_unref0 (cexp); } { ValaCCodeIdentifier* _tmp46_; ValaCCodeIdentifier* _tmp47_; ValaCCodeConstant* _tmp48_; ValaCCodeConstant* _tmp49_; ValaCCodeBinaryExpression* _tmp50_; ValaCCodeBinaryExpression* _tmp51_; ValaCCodeBinaryExpression* cexp; ValaCCodeFunction* _tmp52_; ValaCCodeFunction* _tmp53_; ValaCCodeBinaryExpression* _tmp54_; ValaCCodeFunction* _tmp55_; ValaCCodeFunction* _tmp56_; ValaCCodeConstant* _tmp57_; ValaCCodeConstant* _tmp58_; ValaCCodeFunction* _tmp59_; ValaCCodeFunction* _tmp60_; ValaCCodeIdentifier* _tmp61_; ValaCCodeIdentifier* _tmp62_; ValaCCodeConstant* _tmp63_; ValaCCodeConstant* _tmp64_; ValaCCodeBinaryExpression* _tmp65_; ValaCCodeFunction* _tmp66_; ValaCCodeFunction* _tmp67_; ValaCCodeBinaryExpression* _tmp68_; ValaCCodeFunction* _tmp69_; ValaCCodeFunction* _tmp70_; ValaCCodeConstant* _tmp71_; ValaCCodeConstant* _tmp72_; ValaCCodeFunction* _tmp73_; ValaCCodeFunction* _tmp74_; _tmp46_ = vala_ccode_identifier_new ("s1"); _tmp47_ = _tmp46_; _tmp48_ = vala_ccode_constant_new ("NULL"); _tmp49_ = _tmp48_; _tmp50_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp47_, (ValaCCodeExpression*) _tmp49_); _tmp51_ = _tmp50_; _vala_ccode_node_unref0 (_tmp49_); _vala_ccode_node_unref0 (_tmp47_); cexp = _tmp51_; _tmp52_ = vala_ccode_base_module_get_ccode (self); _tmp53_ = _tmp52_; _tmp54_ = cexp; vala_ccode_function_open_if (_tmp53_, (ValaCCodeExpression*) _tmp54_); _tmp55_ = vala_ccode_base_module_get_ccode (self); _tmp56_ = _tmp55_; _tmp57_ = vala_ccode_constant_new ("FALSE"); _tmp58_ = _tmp57_; vala_ccode_function_add_return (_tmp56_, (ValaCCodeExpression*) _tmp58_); _vala_ccode_node_unref0 (_tmp58_); _tmp59_ = vala_ccode_base_module_get_ccode (self); _tmp60_ = _tmp59_; vala_ccode_function_close (_tmp60_); _tmp61_ = vala_ccode_identifier_new ("s2"); _tmp62_ = _tmp61_; _tmp63_ = vala_ccode_constant_new ("NULL"); _tmp64_ = _tmp63_; _tmp65_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp62_, (ValaCCodeExpression*) _tmp64_); _vala_ccode_node_unref0 (cexp); cexp = _tmp65_; _vala_ccode_node_unref0 (_tmp64_); _vala_ccode_node_unref0 (_tmp62_); _tmp66_ = vala_ccode_base_module_get_ccode (self); _tmp67_ = _tmp66_; _tmp68_ = cexp; vala_ccode_function_open_if (_tmp67_, (ValaCCodeExpression*) _tmp68_); _tmp69_ = vala_ccode_base_module_get_ccode (self); _tmp70_ = _tmp69_; _tmp71_ = vala_ccode_constant_new ("FALSE"); _tmp72_ = _tmp71_; vala_ccode_function_add_return (_tmp70_, (ValaCCodeExpression*) _tmp72_); _vala_ccode_node_unref0 (_tmp72_); _tmp73_ = vala_ccode_base_module_get_ccode (self); _tmp74_ = _tmp73_; vala_ccode_function_close (_tmp74_); _vala_ccode_node_unref0 (cexp); } has_instance_fields = FALSE; { ValaStruct* _tmp75_; ValaList* _tmp76_ = NULL; ValaList* _f_list; ValaList* _tmp77_; gint _tmp78_; gint _tmp79_; gint _f_size; gint _f_index; _tmp75_ = st; _tmp76_ = vala_struct_get_fields (_tmp75_); _f_list = _tmp76_; _tmp77_ = _f_list; _tmp78_ = vala_collection_get_size ((ValaCollection*) _tmp77_); _tmp79_ = _tmp78_; _f_size = _tmp79_; _f_index = -1; while (TRUE) { gint _tmp80_; gint _tmp81_; gint _tmp82_; ValaList* _tmp83_; gint _tmp84_; gpointer _tmp85_ = NULL; ValaField* f; ValaField* _tmp86_; ValaMemberBinding _tmp87_; ValaMemberBinding _tmp88_; ValaCCodeExpression* cexp = NULL; ValaCCodeIdentifier* _tmp89_; ValaCCodeIdentifier* _tmp90_; ValaField* _tmp91_; const gchar* _tmp92_; const gchar* _tmp93_; ValaCCodeMemberAccess* _tmp94_; ValaCCodeExpression* _tmp95_; ValaCCodeExpression* s1; ValaCCodeIdentifier* _tmp96_; ValaCCodeIdentifier* _tmp97_; ValaField* _tmp98_; const gchar* _tmp99_; const gchar* _tmp100_; ValaCCodeMemberAccess* _tmp101_; ValaCCodeExpression* _tmp102_; ValaCCodeExpression* s2; ValaField* _tmp103_; ValaDataType* _tmp104_; ValaDataType* _tmp105_; ValaDataType* _tmp106_ = NULL; ValaDataType* variable_type; gboolean _tmp107_ = FALSE; ValaField* _tmp108_; ValaDataType* _tmp109_; ValaDataType* _tmp110_; gboolean _tmp116_; ValaCCodeFunction* _tmp150_; ValaCCodeFunction* _tmp151_; ValaCCodeExpression* _tmp152_; ValaCCodeFunction* _tmp153_; ValaCCodeFunction* _tmp154_; ValaCCodeConstant* _tmp155_; ValaCCodeConstant* _tmp156_; ValaCCodeFunction* _tmp157_; ValaCCodeFunction* _tmp158_; _tmp80_ = _f_index; _f_index = _tmp80_ + 1; _tmp81_ = _f_index; _tmp82_ = _f_size; if (!(_tmp81_ < _tmp82_)) { break; } _tmp83_ = _f_list; _tmp84_ = _f_index; _tmp85_ = vala_list_get (_tmp83_, _tmp84_); f = (ValaField*) _tmp85_; _tmp86_ = f; _tmp87_ = vala_field_get_binding (_tmp86_); _tmp88_ = _tmp87_; if (_tmp88_ != VALA_MEMBER_BINDING_INSTANCE) { _vala_code_node_unref0 (f); continue; } has_instance_fields = TRUE; _tmp89_ = vala_ccode_identifier_new ("s1"); _tmp90_ = _tmp89_; _tmp91_ = f; _tmp92_ = vala_symbol_get_name ((ValaSymbol*) _tmp91_); _tmp93_ = _tmp92_; _tmp94_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp90_, _tmp93_); _tmp95_ = VALA_CCODE_EXPRESSION (_tmp94_); _vala_ccode_node_unref0 (_tmp90_); s1 = _tmp95_; _tmp96_ = vala_ccode_identifier_new ("s2"); _tmp97_ = _tmp96_; _tmp98_ = f; _tmp99_ = vala_symbol_get_name ((ValaSymbol*) _tmp98_); _tmp100_ = _tmp99_; _tmp101_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp97_, _tmp100_); _tmp102_ = VALA_CCODE_EXPRESSION (_tmp101_); _vala_ccode_node_unref0 (_tmp97_); s2 = _tmp102_; _tmp103_ = f; _tmp104_ = vala_variable_get_variable_type ((ValaVariable*) _tmp103_); _tmp105_ = _tmp104_; _tmp106_ = vala_data_type_copy (_tmp105_); variable_type = _tmp106_; vala_ccode_base_module_make_comparable_cexpression (self, &variable_type, &s1, &variable_type, &s2); _tmp108_ = f; _tmp109_ = vala_variable_get_variable_type ((ValaVariable*) _tmp108_); _tmp110_ = _tmp109_; if (!VALA_IS_NULL_TYPE (_tmp110_)) { ValaField* _tmp111_; ValaDataType* _tmp112_; ValaDataType* _tmp113_; ValaDataType* _tmp114_; gboolean _tmp115_ = FALSE; _tmp111_ = f; _tmp112_ = vala_variable_get_variable_type ((ValaVariable*) _tmp111_); _tmp113_ = _tmp112_; _tmp114_ = self->string_type; _tmp115_ = vala_data_type_compatible (_tmp113_, _tmp114_); _tmp107_ = _tmp115_; } else { _tmp107_ = FALSE; } _tmp116_ = _tmp107_; if (_tmp116_) { ValaCCodeIdentifier* _tmp117_; ValaCCodeIdentifier* _tmp118_; ValaCCodeFunctionCall* _tmp119_; ValaCCodeFunctionCall* _tmp120_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp121_; ValaCCodeExpression* _tmp122_; ValaCCodeFunctionCall* _tmp123_; ValaCCodeExpression* _tmp124_; ValaCCodeFunctionCall* _tmp125_; ValaCCodeExpression* _tmp126_; _tmp117_ = vala_ccode_identifier_new ("g_strcmp0"); _tmp118_ = _tmp117_; _tmp119_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp118_); _tmp120_ = _tmp119_; _vala_ccode_node_unref0 (_tmp118_); ccall = _tmp120_; _tmp121_ = ccall; _tmp122_ = s1; vala_ccode_function_call_add_argument (_tmp121_, _tmp122_); _tmp123_ = ccall; _tmp124_ = s2; vala_ccode_function_call_add_argument (_tmp123_, _tmp124_); _tmp125_ = ccall; _tmp126_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp125_); _vala_ccode_node_unref0 (cexp); cexp = _tmp126_; _vala_ccode_node_unref0 (ccall); } else { ValaField* _tmp127_; ValaDataType* _tmp128_; ValaDataType* _tmp129_; _tmp127_ = f; _tmp128_ = vala_variable_get_variable_type ((ValaVariable*) _tmp127_); _tmp129_ = _tmp128_; if (VALA_IS_STRUCT_VALUE_TYPE (_tmp129_)) { ValaField* _tmp130_; ValaDataType* _tmp131_; ValaDataType* _tmp132_; ValaTypeSymbol* _tmp133_; ValaTypeSymbol* _tmp134_; gchar* _tmp135_ = NULL; gchar* equalfunc; const gchar* _tmp136_; ValaCCodeIdentifier* _tmp137_; ValaCCodeIdentifier* _tmp138_; ValaCCodeFunctionCall* _tmp139_; ValaCCodeFunctionCall* _tmp140_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp141_; ValaCCodeExpression* _tmp142_; ValaCCodeFunctionCall* _tmp143_; ValaCCodeExpression* _tmp144_; ValaCCodeFunctionCall* _tmp145_; ValaCCodeUnaryExpression* _tmp146_; _tmp130_ = f; _tmp131_ = vala_variable_get_variable_type ((ValaVariable*) _tmp130_); _tmp132_ = _tmp131_; _tmp133_ = vala_data_type_get_data_type (_tmp132_); _tmp134_ = _tmp133_; _tmp135_ = vala_ccode_base_module_generate_struct_equal_function (self, VALA_IS_STRUCT (_tmp134_) ? ((ValaStruct*) _tmp134_) : NULL); equalfunc = _tmp135_; _tmp136_ = equalfunc; _tmp137_ = vala_ccode_identifier_new (_tmp136_); _tmp138_ = _tmp137_; _tmp139_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp138_); _tmp140_ = _tmp139_; _vala_ccode_node_unref0 (_tmp138_); ccall = _tmp140_; _tmp141_ = ccall; _tmp142_ = s1; vala_ccode_function_call_add_argument (_tmp141_, _tmp142_); _tmp143_ = ccall; _tmp144_ = s2; vala_ccode_function_call_add_argument (_tmp143_, _tmp144_); _tmp145_ = ccall; _tmp146_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp145_); _vala_ccode_node_unref0 (cexp); cexp = (ValaCCodeExpression*) _tmp146_; _vala_ccode_node_unref0 (ccall); _g_free0 (equalfunc); } else { ValaCCodeExpression* _tmp147_; ValaCCodeExpression* _tmp148_; ValaCCodeBinaryExpression* _tmp149_; _tmp147_ = s1; _tmp148_ = s2; _tmp149_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp147_, _tmp148_); _vala_ccode_node_unref0 (cexp); cexp = (ValaCCodeExpression*) _tmp149_; } } _tmp150_ = vala_ccode_base_module_get_ccode (self); _tmp151_ = _tmp150_; _tmp152_ = cexp; vala_ccode_function_open_if (_tmp151_, _tmp152_); _tmp153_ = vala_ccode_base_module_get_ccode (self); _tmp154_ = _tmp153_; _tmp155_ = vala_ccode_constant_new ("FALSE"); _tmp156_ = _tmp155_; vala_ccode_function_add_return (_tmp154_, (ValaCCodeExpression*) _tmp156_); _vala_ccode_node_unref0 (_tmp156_); _tmp157_ = vala_ccode_base_module_get_ccode (self); _tmp158_ = _tmp157_; vala_ccode_function_close (_tmp158_); _vala_code_node_unref0 (variable_type); _vala_ccode_node_unref0 (s2); _vala_ccode_node_unref0 (s1); _vala_ccode_node_unref0 (cexp); _vala_code_node_unref0 (f); } _vala_iterable_unref0 (_f_list); } _tmp159_ = has_instance_fields; if (!_tmp159_) { ValaStruct* _tmp160_; gboolean _tmp161_ = FALSE; _tmp160_ = st; _tmp161_ = vala_struct_is_simple_type (_tmp160_); if (_tmp161_) { ValaCCodeIdentifier* _tmp162_; ValaCCodeIdentifier* _tmp163_; ValaCCodeUnaryExpression* _tmp164_; ValaCCodeUnaryExpression* _tmp165_; ValaCCodeIdentifier* _tmp166_; ValaCCodeIdentifier* _tmp167_; ValaCCodeUnaryExpression* _tmp168_; ValaCCodeUnaryExpression* _tmp169_; ValaCCodeBinaryExpression* _tmp170_; ValaCCodeBinaryExpression* _tmp171_; ValaCCodeBinaryExpression* cexp; ValaCCodeFunction* _tmp172_; ValaCCodeFunction* _tmp173_; ValaCCodeBinaryExpression* _tmp174_; _tmp162_ = vala_ccode_identifier_new ("s1"); _tmp163_ = _tmp162_; _tmp164_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp163_); _tmp165_ = _tmp164_; _tmp166_ = vala_ccode_identifier_new ("s2"); _tmp167_ = _tmp166_; _tmp168_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp167_); _tmp169_ = _tmp168_; _tmp170_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp165_, (ValaCCodeExpression*) _tmp169_); _tmp171_ = _tmp170_; _vala_ccode_node_unref0 (_tmp169_); _vala_ccode_node_unref0 (_tmp167_); _vala_ccode_node_unref0 (_tmp165_); _vala_ccode_node_unref0 (_tmp163_); cexp = _tmp171_; _tmp172_ = vala_ccode_base_module_get_ccode (self); _tmp173_ = _tmp172_; _tmp174_ = cexp; vala_ccode_function_add_return (_tmp173_, (ValaCCodeExpression*) _tmp174_); _vala_ccode_node_unref0 (cexp); } else { ValaCCodeFunction* _tmp175_; ValaCCodeFunction* _tmp176_; ValaCCodeConstant* _tmp177_; ValaCCodeConstant* _tmp178_; _tmp175_ = vala_ccode_base_module_get_ccode (self); _tmp176_ = _tmp175_; _tmp177_ = vala_ccode_constant_new ("FALSE"); _tmp178_ = _tmp177_; vala_ccode_function_add_return (_tmp176_, (ValaCCodeExpression*) _tmp178_); _vala_ccode_node_unref0 (_tmp178_); } } else { ValaCCodeFunction* _tmp179_; ValaCCodeFunction* _tmp180_; ValaCCodeConstant* _tmp181_; ValaCCodeConstant* _tmp182_; _tmp179_ = vala_ccode_base_module_get_ccode (self); _tmp180_ = _tmp179_; _tmp181_ = vala_ccode_constant_new ("TRUE"); _tmp182_ = _tmp181_; vala_ccode_function_add_return (_tmp180_, (ValaCCodeExpression*) _tmp182_); _vala_ccode_node_unref0 (_tmp182_); } vala_ccode_base_module_pop_function (self); _tmp183_ = self->cfile; _tmp184_ = function; vala_ccode_file_add_function_declaration (_tmp183_, _tmp184_); _tmp185_ = self->cfile; _tmp186_ = function; vala_ccode_file_add_function (_tmp185_, _tmp186_); result = equal_func; _vala_ccode_node_unref0 (function); return result; } static gchar* vala_ccode_base_module_generate_numeric_equal_function (ValaCCodeBaseModule* self, ValaTypeSymbol* sym) { gchar* result = NULL; ValaTypeSymbol* _tmp0_; gchar* _tmp1_ = NULL; gchar* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gchar* equal_func; const gchar* _tmp5_; gboolean _tmp6_ = FALSE; const gchar* _tmp7_; ValaCCodeFunction* _tmp8_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp9_; ValaCCodeFunction* _tmp10_; ValaTypeSymbol* _tmp11_; gchar* _tmp12_ = NULL; gchar* _tmp13_; gchar* _tmp14_; gchar* _tmp15_; gchar* _tmp16_; gchar* _tmp17_; ValaCCodeParameter* _tmp18_; ValaCCodeParameter* _tmp19_; ValaCCodeFunction* _tmp20_; ValaTypeSymbol* _tmp21_; gchar* _tmp22_ = NULL; gchar* _tmp23_; gchar* _tmp24_; gchar* _tmp25_; gchar* _tmp26_; gchar* _tmp27_; ValaCCodeParameter* _tmp28_; ValaCCodeParameter* _tmp29_; ValaCCodeFunction* _tmp30_; ValaCCodeFile* _tmp88_; ValaCCodeFunction* _tmp89_; ValaCCodeFile* _tmp90_; ValaCCodeFunction* _tmp91_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = g_strdup_printf ("_%sequal", _tmp2_); _tmp4_ = _tmp3_; _g_free0 (_tmp2_); equal_func = _tmp4_; _tmp5_ = equal_func; _tmp6_ = vala_ccode_base_module_add_wrapper (self, _tmp5_); if (!_tmp6_) { result = equal_func; return result; } _tmp7_ = equal_func; _tmp8_ = vala_ccode_function_new (_tmp7_, "gboolean"); function = _tmp8_; _tmp9_ = function; vala_ccode_function_set_modifiers (_tmp9_, VALA_CCODE_MODIFIERS_STATIC); _tmp10_ = function; _tmp11_ = sym; _tmp12_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = g_strconcat ("const ", _tmp13_, NULL); _tmp15_ = _tmp14_; _tmp16_ = g_strconcat (_tmp15_, "*", NULL); _tmp17_ = _tmp16_; _tmp18_ = vala_ccode_parameter_new ("s1", _tmp17_); _tmp19_ = _tmp18_; vala_ccode_function_add_parameter (_tmp10_, _tmp19_); _vala_ccode_node_unref0 (_tmp19_); _g_free0 (_tmp17_); _g_free0 (_tmp15_); _g_free0 (_tmp13_); _tmp20_ = function; _tmp21_ = sym; _tmp22_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp21_); _tmp23_ = _tmp22_; _tmp24_ = g_strconcat ("const ", _tmp23_, NULL); _tmp25_ = _tmp24_; _tmp26_ = g_strconcat (_tmp25_, "*", NULL); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_parameter_new ("s2", _tmp27_); _tmp29_ = _tmp28_; vala_ccode_function_add_parameter (_tmp20_, _tmp29_); _vala_ccode_node_unref0 (_tmp29_); _g_free0 (_tmp27_); _g_free0 (_tmp25_); _g_free0 (_tmp23_); _tmp30_ = function; vala_ccode_base_module_push_function (self, _tmp30_); { ValaCCodeIdentifier* _tmp31_; ValaCCodeIdentifier* _tmp32_; ValaCCodeIdentifier* _tmp33_; ValaCCodeIdentifier* _tmp34_; ValaCCodeBinaryExpression* _tmp35_; ValaCCodeBinaryExpression* _tmp36_; ValaCCodeBinaryExpression* cexp; ValaCCodeFunction* _tmp37_; ValaCCodeFunction* _tmp38_; ValaCCodeBinaryExpression* _tmp39_; ValaCCodeFunction* _tmp40_; ValaCCodeFunction* _tmp41_; ValaCCodeConstant* _tmp42_; ValaCCodeConstant* _tmp43_; ValaCCodeFunction* _tmp44_; ValaCCodeFunction* _tmp45_; _tmp31_ = vala_ccode_identifier_new ("s1"); _tmp32_ = _tmp31_; _tmp33_ = vala_ccode_identifier_new ("s2"); _tmp34_ = _tmp33_; _tmp35_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp32_, (ValaCCodeExpression*) _tmp34_); _tmp36_ = _tmp35_; _vala_ccode_node_unref0 (_tmp34_); _vala_ccode_node_unref0 (_tmp32_); cexp = _tmp36_; _tmp37_ = vala_ccode_base_module_get_ccode (self); _tmp38_ = _tmp37_; _tmp39_ = cexp; vala_ccode_function_open_if (_tmp38_, (ValaCCodeExpression*) _tmp39_); _tmp40_ = vala_ccode_base_module_get_ccode (self); _tmp41_ = _tmp40_; _tmp42_ = vala_ccode_constant_new ("TRUE"); _tmp43_ = _tmp42_; vala_ccode_function_add_return (_tmp41_, (ValaCCodeExpression*) _tmp43_); _vala_ccode_node_unref0 (_tmp43_); _tmp44_ = vala_ccode_base_module_get_ccode (self); _tmp45_ = _tmp44_; vala_ccode_function_close (_tmp45_); _vala_ccode_node_unref0 (cexp); } { ValaCCodeIdentifier* _tmp46_; ValaCCodeIdentifier* _tmp47_; ValaCCodeConstant* _tmp48_; ValaCCodeConstant* _tmp49_; ValaCCodeBinaryExpression* _tmp50_; ValaCCodeBinaryExpression* _tmp51_; ValaCCodeBinaryExpression* cexp; ValaCCodeFunction* _tmp52_; ValaCCodeFunction* _tmp53_; ValaCCodeBinaryExpression* _tmp54_; ValaCCodeFunction* _tmp55_; ValaCCodeFunction* _tmp56_; ValaCCodeConstant* _tmp57_; ValaCCodeConstant* _tmp58_; ValaCCodeFunction* _tmp59_; ValaCCodeFunction* _tmp60_; ValaCCodeIdentifier* _tmp61_; ValaCCodeIdentifier* _tmp62_; ValaCCodeConstant* _tmp63_; ValaCCodeConstant* _tmp64_; ValaCCodeBinaryExpression* _tmp65_; ValaCCodeFunction* _tmp66_; ValaCCodeFunction* _tmp67_; ValaCCodeBinaryExpression* _tmp68_; ValaCCodeFunction* _tmp69_; ValaCCodeFunction* _tmp70_; ValaCCodeConstant* _tmp71_; ValaCCodeConstant* _tmp72_; ValaCCodeFunction* _tmp73_; ValaCCodeFunction* _tmp74_; _tmp46_ = vala_ccode_identifier_new ("s1"); _tmp47_ = _tmp46_; _tmp48_ = vala_ccode_constant_new ("NULL"); _tmp49_ = _tmp48_; _tmp50_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp47_, (ValaCCodeExpression*) _tmp49_); _tmp51_ = _tmp50_; _vala_ccode_node_unref0 (_tmp49_); _vala_ccode_node_unref0 (_tmp47_); cexp = _tmp51_; _tmp52_ = vala_ccode_base_module_get_ccode (self); _tmp53_ = _tmp52_; _tmp54_ = cexp; vala_ccode_function_open_if (_tmp53_, (ValaCCodeExpression*) _tmp54_); _tmp55_ = vala_ccode_base_module_get_ccode (self); _tmp56_ = _tmp55_; _tmp57_ = vala_ccode_constant_new ("FALSE"); _tmp58_ = _tmp57_; vala_ccode_function_add_return (_tmp56_, (ValaCCodeExpression*) _tmp58_); _vala_ccode_node_unref0 (_tmp58_); _tmp59_ = vala_ccode_base_module_get_ccode (self); _tmp60_ = _tmp59_; vala_ccode_function_close (_tmp60_); _tmp61_ = vala_ccode_identifier_new ("s2"); _tmp62_ = _tmp61_; _tmp63_ = vala_ccode_constant_new ("NULL"); _tmp64_ = _tmp63_; _tmp65_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp62_, (ValaCCodeExpression*) _tmp64_); _vala_ccode_node_unref0 (cexp); cexp = _tmp65_; _vala_ccode_node_unref0 (_tmp64_); _vala_ccode_node_unref0 (_tmp62_); _tmp66_ = vala_ccode_base_module_get_ccode (self); _tmp67_ = _tmp66_; _tmp68_ = cexp; vala_ccode_function_open_if (_tmp67_, (ValaCCodeExpression*) _tmp68_); _tmp69_ = vala_ccode_base_module_get_ccode (self); _tmp70_ = _tmp69_; _tmp71_ = vala_ccode_constant_new ("FALSE"); _tmp72_ = _tmp71_; vala_ccode_function_add_return (_tmp70_, (ValaCCodeExpression*) _tmp72_); _vala_ccode_node_unref0 (_tmp72_); _tmp73_ = vala_ccode_base_module_get_ccode (self); _tmp74_ = _tmp73_; vala_ccode_function_close (_tmp74_); _vala_ccode_node_unref0 (cexp); } { ValaCCodeIdentifier* _tmp75_; ValaCCodeIdentifier* _tmp76_; ValaCCodeUnaryExpression* _tmp77_; ValaCCodeUnaryExpression* _tmp78_; ValaCCodeIdentifier* _tmp79_; ValaCCodeIdentifier* _tmp80_; ValaCCodeUnaryExpression* _tmp81_; ValaCCodeUnaryExpression* _tmp82_; ValaCCodeBinaryExpression* _tmp83_; ValaCCodeBinaryExpression* _tmp84_; ValaCCodeBinaryExpression* cexp; ValaCCodeFunction* _tmp85_; ValaCCodeFunction* _tmp86_; ValaCCodeBinaryExpression* _tmp87_; _tmp75_ = vala_ccode_identifier_new ("s1"); _tmp76_ = _tmp75_; _tmp77_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp76_); _tmp78_ = _tmp77_; _tmp79_ = vala_ccode_identifier_new ("s2"); _tmp80_ = _tmp79_; _tmp81_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp80_); _tmp82_ = _tmp81_; _tmp83_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp78_, (ValaCCodeExpression*) _tmp82_); _tmp84_ = _tmp83_; _vala_ccode_node_unref0 (_tmp82_); _vala_ccode_node_unref0 (_tmp80_); _vala_ccode_node_unref0 (_tmp78_); _vala_ccode_node_unref0 (_tmp76_); cexp = _tmp84_; _tmp85_ = vala_ccode_base_module_get_ccode (self); _tmp86_ = _tmp85_; _tmp87_ = cexp; vala_ccode_function_add_return (_tmp86_, (ValaCCodeExpression*) _tmp87_); _vala_ccode_node_unref0 (cexp); } vala_ccode_base_module_pop_function (self); _tmp88_ = self->cfile; _tmp89_ = function; vala_ccode_file_add_function_declaration (_tmp88_, _tmp89_); _tmp90_ = self->cfile; _tmp91_ = function; vala_ccode_file_add_function (_tmp90_, _tmp91_); result = equal_func; _vala_ccode_node_unref0 (function); return result; } static gchar* vala_ccode_base_module_generate_struct_dup_wrapper (ValaCCodeBaseModule* self, ValaValueType* value_type) { gchar* result = NULL; ValaValueType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gchar* _tmp5_ = NULL; gchar* _tmp6_; gchar* dup_func; const gchar* _tmp7_; gboolean _tmp8_ = FALSE; const gchar* _tmp9_; ValaValueType* _tmp10_; gchar* _tmp11_ = NULL; gchar* _tmp12_; ValaCCodeFunction* _tmp13_; ValaCCodeFunction* _tmp14_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp15_; ValaCCodeFunction* _tmp16_; ValaValueType* _tmp17_; gchar* _tmp18_ = NULL; gchar* _tmp19_; ValaCCodeParameter* _tmp20_; ValaCCodeParameter* _tmp21_; ValaCCodeFunction* _tmp22_; ValaValueType* _tmp23_; ValaTypeSymbol* _tmp24_; ValaTypeSymbol* _tmp25_; ValaStruct* _tmp26_; ValaCCodeFile* _tmp127_; ValaCCodeFunction* _tmp128_; ValaCCodeFile* _tmp129_; ValaCCodeFunction* _tmp130_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (value_type != NULL, NULL); _tmp0_ = value_type; _tmp1_ = vala_value_type_get_type_symbol (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup_printf ("_%sdup", _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); dup_func = _tmp6_; _tmp7_ = dup_func; _tmp8_ = vala_ccode_base_module_add_wrapper (self, _tmp7_); if (!_tmp8_) { result = dup_func; return result; } _tmp9_ = dup_func; _tmp10_ = value_type; _tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_function_new (_tmp9_, _tmp12_); _tmp14_ = _tmp13_; _g_free0 (_tmp12_); function = _tmp14_; _tmp15_ = function; vala_ccode_function_set_modifiers (_tmp15_, VALA_CCODE_MODIFIERS_STATIC); _tmp16_ = function; _tmp17_ = value_type; _tmp18_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp17_); _tmp19_ = _tmp18_; _tmp20_ = vala_ccode_parameter_new ("self", _tmp19_); _tmp21_ = _tmp20_; vala_ccode_function_add_parameter (_tmp16_, _tmp21_); _vala_ccode_node_unref0 (_tmp21_); _g_free0 (_tmp19_); _tmp22_ = function; vala_ccode_base_module_push_function (self, _tmp22_); _tmp23_ = value_type; _tmp24_ = vala_value_type_get_type_symbol (_tmp23_); _tmp25_ = _tmp24_; _tmp26_ = self->gvalue_type; if (_tmp25_ == VALA_TYPESYMBOL (_tmp26_)) { ValaCCodeIdentifier* _tmp27_; ValaCCodeIdentifier* _tmp28_; ValaCCodeFunctionCall* _tmp29_; ValaCCodeFunctionCall* _tmp30_; ValaCCodeFunctionCall* dup_call; ValaCCodeFunctionCall* _tmp31_; ValaCCodeIdentifier* _tmp32_; ValaCCodeIdentifier* _tmp33_; ValaCCodeFunctionCall* _tmp34_; ValaCCodeIdentifier* _tmp35_; ValaCCodeIdentifier* _tmp36_; ValaCCodeFunction* _tmp37_; ValaCCodeFunction* _tmp38_; ValaCCodeFunctionCall* _tmp39_; _tmp27_ = vala_ccode_identifier_new ("g_boxed_copy"); _tmp28_ = _tmp27_; _tmp29_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp28_); _tmp30_ = _tmp29_; _vala_ccode_node_unref0 (_tmp28_); dup_call = _tmp30_; _tmp31_ = dup_call; _tmp32_ = vala_ccode_identifier_new ("G_TYPE_VALUE"); _tmp33_ = _tmp32_; vala_ccode_function_call_add_argument (_tmp31_, (ValaCCodeExpression*) _tmp33_); _vala_ccode_node_unref0 (_tmp33_); _tmp34_ = dup_call; _tmp35_ = vala_ccode_identifier_new ("self"); _tmp36_ = _tmp35_; vala_ccode_function_call_add_argument (_tmp34_, (ValaCCodeExpression*) _tmp36_); _vala_ccode_node_unref0 (_tmp36_); _tmp37_ = vala_ccode_base_module_get_ccode (self); _tmp38_ = _tmp37_; _tmp39_ = dup_call; vala_ccode_function_add_return (_tmp38_, (ValaCCodeExpression*) _tmp39_); _vala_ccode_node_unref0 (dup_call); } else { ValaCCodeFunction* _tmp40_; ValaCCodeFunction* _tmp41_; ValaValueType* _tmp42_; gchar* _tmp43_ = NULL; gchar* _tmp44_; ValaCCodeVariableDeclarator* _tmp45_; ValaCCodeVariableDeclarator* _tmp46_; ValaCCodeIdentifier* _tmp47_; ValaCCodeIdentifier* _tmp48_; ValaCCodeFunctionCall* _tmp49_; ValaCCodeFunctionCall* _tmp50_; ValaCCodeFunctionCall* creation_call; ValaCCodeFunctionCall* _tmp51_; ValaValueType* _tmp52_; ValaTypeSymbol* _tmp53_; ValaTypeSymbol* _tmp54_; gchar* _tmp55_ = NULL; gchar* _tmp56_; ValaCCodeConstant* _tmp57_; ValaCCodeConstant* _tmp58_; ValaCCodeFunctionCall* _tmp59_; ValaCCodeConstant* _tmp60_; ValaCCodeConstant* _tmp61_; ValaCCodeFunction* _tmp62_; ValaCCodeFunction* _tmp63_; ValaCCodeIdentifier* _tmp64_; ValaCCodeIdentifier* _tmp65_; ValaCCodeFunctionCall* _tmp66_; ValaValueType* _tmp67_; ValaTypeSymbol* _tmp68_; ValaTypeSymbol* _tmp69_; ValaStruct* _tmp70_; ValaStruct* st; gboolean _tmp71_ = FALSE; ValaStruct* _tmp72_; gboolean _tmp75_; ValaCCodeFunction* _tmp123_; ValaCCodeFunction* _tmp124_; ValaCCodeIdentifier* _tmp125_; ValaCCodeIdentifier* _tmp126_; _tmp40_ = vala_ccode_base_module_get_ccode (self); _tmp41_ = _tmp40_; _tmp42_ = value_type; _tmp43_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp42_); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_variable_declarator_new ("dup", NULL, NULL); _tmp46_ = _tmp45_; vala_ccode_function_add_declaration (_tmp41_, _tmp44_, (ValaCCodeDeclarator*) _tmp46_, 0); _vala_ccode_node_unref0 (_tmp46_); _g_free0 (_tmp44_); _tmp47_ = vala_ccode_identifier_new ("g_new0"); _tmp48_ = _tmp47_; _tmp49_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp48_); _tmp50_ = _tmp49_; _vala_ccode_node_unref0 (_tmp48_); creation_call = _tmp50_; _tmp51_ = creation_call; _tmp52_ = value_type; _tmp53_ = vala_data_type_get_data_type ((ValaDataType*) _tmp52_); _tmp54_ = _tmp53_; _tmp55_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp54_); _tmp56_ = _tmp55_; _tmp57_ = vala_ccode_constant_new (_tmp56_); _tmp58_ = _tmp57_; vala_ccode_function_call_add_argument (_tmp51_, (ValaCCodeExpression*) _tmp58_); _vala_ccode_node_unref0 (_tmp58_); _g_free0 (_tmp56_); _tmp59_ = creation_call; _tmp60_ = vala_ccode_constant_new ("1"); _tmp61_ = _tmp60_; vala_ccode_function_call_add_argument (_tmp59_, (ValaCCodeExpression*) _tmp61_); _vala_ccode_node_unref0 (_tmp61_); _tmp62_ = vala_ccode_base_module_get_ccode (self); _tmp63_ = _tmp62_; _tmp64_ = vala_ccode_identifier_new ("dup"); _tmp65_ = _tmp64_; _tmp66_ = creation_call; vala_ccode_function_add_assignment (_tmp63_, (ValaCCodeExpression*) _tmp65_, (ValaCCodeExpression*) _tmp66_); _vala_ccode_node_unref0 (_tmp65_); _tmp67_ = value_type; _tmp68_ = vala_data_type_get_data_type ((ValaDataType*) _tmp67_); _tmp69_ = _tmp68_; _tmp70_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp69_) ? ((ValaStruct*) _tmp69_) : NULL); st = _tmp70_; _tmp72_ = st; if (_tmp72_ != NULL) { ValaStruct* _tmp73_; gboolean _tmp74_ = FALSE; _tmp73_ = st; _tmp74_ = vala_struct_is_disposable (_tmp73_); _tmp71_ = _tmp74_; } else { _tmp71_ = FALSE; } _tmp75_ = _tmp71_; if (_tmp75_) { ValaStruct* _tmp76_; gboolean _tmp77_ = FALSE; ValaStruct* _tmp79_; gchar* _tmp80_ = NULL; gchar* _tmp81_; ValaCCodeIdentifier* _tmp82_; ValaCCodeIdentifier* _tmp83_; ValaCCodeFunctionCall* _tmp84_; ValaCCodeFunctionCall* _tmp85_; ValaCCodeFunctionCall* copy_call; ValaCCodeFunctionCall* _tmp86_; ValaCCodeIdentifier* _tmp87_; ValaCCodeIdentifier* _tmp88_; ValaCCodeFunctionCall* _tmp89_; ValaCCodeIdentifier* _tmp90_; ValaCCodeIdentifier* _tmp91_; ValaCCodeFunction* _tmp92_; ValaCCodeFunction* _tmp93_; ValaCCodeFunctionCall* _tmp94_; _tmp76_ = st; _tmp77_ = vala_ccode_base_module_get_ccode_has_copy_function (_tmp76_); if (!_tmp77_) { ValaStruct* _tmp78_; _tmp78_ = st; vala_ccode_base_module_generate_struct_copy_function (self, _tmp78_); } _tmp79_ = st; _tmp80_ = vala_ccode_base_module_get_ccode_copy_function ((ValaTypeSymbol*) _tmp79_); _tmp81_ = _tmp80_; _tmp82_ = vala_ccode_identifier_new (_tmp81_); _tmp83_ = _tmp82_; _tmp84_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp83_); _tmp85_ = _tmp84_; _vala_ccode_node_unref0 (_tmp83_); _g_free0 (_tmp81_); copy_call = _tmp85_; _tmp86_ = copy_call; _tmp87_ = vala_ccode_identifier_new ("self"); _tmp88_ = _tmp87_; vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp88_); _vala_ccode_node_unref0 (_tmp88_); _tmp89_ = copy_call; _tmp90_ = vala_ccode_identifier_new ("dup"); _tmp91_ = _tmp90_; vala_ccode_function_call_add_argument (_tmp89_, (ValaCCodeExpression*) _tmp91_); _vala_ccode_node_unref0 (_tmp91_); _tmp92_ = vala_ccode_base_module_get_ccode (self); _tmp93_ = _tmp92_; _tmp94_ = copy_call; vala_ccode_function_add_expression (_tmp93_, (ValaCCodeExpression*) _tmp94_); _vala_ccode_node_unref0 (copy_call); } else { ValaCCodeFile* _tmp95_; ValaCCodeIdentifier* _tmp96_; ValaCCodeIdentifier* _tmp97_; ValaCCodeFunctionCall* _tmp98_; ValaCCodeFunctionCall* _tmp99_; ValaCCodeFunctionCall* sizeof_call; ValaCCodeFunctionCall* _tmp100_; ValaValueType* _tmp101_; ValaTypeSymbol* _tmp102_; ValaTypeSymbol* _tmp103_; gchar* _tmp104_ = NULL; gchar* _tmp105_; ValaCCodeConstant* _tmp106_; ValaCCodeConstant* _tmp107_; ValaCCodeIdentifier* _tmp108_; ValaCCodeIdentifier* _tmp109_; ValaCCodeFunctionCall* _tmp110_; ValaCCodeFunctionCall* _tmp111_; ValaCCodeFunctionCall* copy_call; ValaCCodeFunctionCall* _tmp112_; ValaCCodeIdentifier* _tmp113_; ValaCCodeIdentifier* _tmp114_; ValaCCodeFunctionCall* _tmp115_; ValaCCodeIdentifier* _tmp116_; ValaCCodeIdentifier* _tmp117_; ValaCCodeFunctionCall* _tmp118_; ValaCCodeFunctionCall* _tmp119_; ValaCCodeFunction* _tmp120_; ValaCCodeFunction* _tmp121_; ValaCCodeFunctionCall* _tmp122_; _tmp95_ = self->cfile; vala_ccode_file_add_include (_tmp95_, "string.h", FALSE); _tmp96_ = vala_ccode_identifier_new ("sizeof"); _tmp97_ = _tmp96_; _tmp98_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp97_); _tmp99_ = _tmp98_; _vala_ccode_node_unref0 (_tmp97_); sizeof_call = _tmp99_; _tmp100_ = sizeof_call; _tmp101_ = value_type; _tmp102_ = vala_data_type_get_data_type ((ValaDataType*) _tmp101_); _tmp103_ = _tmp102_; _tmp104_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp103_); _tmp105_ = _tmp104_; _tmp106_ = vala_ccode_constant_new (_tmp105_); _tmp107_ = _tmp106_; vala_ccode_function_call_add_argument (_tmp100_, (ValaCCodeExpression*) _tmp107_); _vala_ccode_node_unref0 (_tmp107_); _g_free0 (_tmp105_); _tmp108_ = vala_ccode_identifier_new ("memcpy"); _tmp109_ = _tmp108_; _tmp110_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp109_); _tmp111_ = _tmp110_; _vala_ccode_node_unref0 (_tmp109_); copy_call = _tmp111_; _tmp112_ = copy_call; _tmp113_ = vala_ccode_identifier_new ("dup"); _tmp114_ = _tmp113_; vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) _tmp114_); _vala_ccode_node_unref0 (_tmp114_); _tmp115_ = copy_call; _tmp116_ = vala_ccode_identifier_new ("self"); _tmp117_ = _tmp116_; vala_ccode_function_call_add_argument (_tmp115_, (ValaCCodeExpression*) _tmp117_); _vala_ccode_node_unref0 (_tmp117_); _tmp118_ = copy_call; _tmp119_ = sizeof_call; vala_ccode_function_call_add_argument (_tmp118_, (ValaCCodeExpression*) _tmp119_); _tmp120_ = vala_ccode_base_module_get_ccode (self); _tmp121_ = _tmp120_; _tmp122_ = copy_call; vala_ccode_function_add_expression (_tmp121_, (ValaCCodeExpression*) _tmp122_); _vala_ccode_node_unref0 (copy_call); _vala_ccode_node_unref0 (sizeof_call); } _tmp123_ = vala_ccode_base_module_get_ccode (self); _tmp124_ = _tmp123_; _tmp125_ = vala_ccode_identifier_new ("dup"); _tmp126_ = _tmp125_; vala_ccode_function_add_return (_tmp124_, (ValaCCodeExpression*) _tmp126_); _vala_ccode_node_unref0 (_tmp126_); _vala_code_node_unref0 (st); _vala_ccode_node_unref0 (creation_call); } vala_ccode_base_module_pop_function (self); _tmp127_ = self->cfile; _tmp128_ = function; vala_ccode_file_add_function_declaration (_tmp127_, _tmp128_); _tmp129_ = self->cfile; _tmp130_ = function; vala_ccode_file_add_function (_tmp129_, _tmp130_); result = dup_func; _vala_ccode_node_unref0 (function); return result; } gchar* vala_ccode_base_module_generate_dup_func_wrapper (ValaCCodeBaseModule* self, ValaDataType* type) { gchar* result = NULL; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gchar* _tmp5_ = NULL; gchar* _tmp6_; gchar* destroy_func; const gchar* _tmp7_; gboolean _tmp8_ = FALSE; const gchar* _tmp9_; ValaDataType* _tmp10_; gchar* _tmp11_ = NULL; gchar* _tmp12_; ValaCCodeFunction* _tmp13_; ValaCCodeFunction* _tmp14_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp15_; ValaCCodeFunction* _tmp16_; ValaDataType* _tmp17_; gchar* _tmp18_ = NULL; gchar* _tmp19_; ValaCCodeParameter* _tmp20_; ValaCCodeParameter* _tmp21_; ValaCCodeFunction* _tmp22_; ValaDataType* _tmp23_; ValaTypeSymbol* _tmp24_; ValaTypeSymbol* _tmp25_; ValaClass* _tmp26_; ValaClass* cl; gboolean _tmp27_ = FALSE; ValaClass* _tmp28_; gboolean _tmp31_; ValaCCodeIdentifier* _tmp32_; ValaCCodeIdentifier* _tmp33_; ValaCCodeFunctionCall* _tmp34_; ValaCCodeFunctionCall* _tmp35_; ValaCCodeFunctionCall* free_call; ValaCCodeFunctionCall* _tmp36_; ValaClass* _tmp37_; gchar* _tmp38_ = NULL; gchar* _tmp39_; ValaCCodeIdentifier* _tmp40_; ValaCCodeIdentifier* _tmp41_; ValaCCodeFunctionCall* _tmp42_; ValaCCodeIdentifier* _tmp43_; ValaCCodeIdentifier* _tmp44_; ValaCCodeFunction* _tmp45_; ValaCCodeFunction* _tmp46_; ValaCCodeFunctionCall* _tmp47_; ValaCCodeFile* _tmp48_; ValaCCodeFunction* _tmp49_; ValaCCodeFile* _tmp50_; ValaCCodeFunction* _tmp51_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup_printf ("_vala_%s_copy", _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); destroy_func = _tmp6_; _tmp7_ = destroy_func; _tmp8_ = vala_ccode_base_module_add_wrapper (self, _tmp7_); if (!_tmp8_) { result = destroy_func; return result; } _tmp9_ = destroy_func; _tmp10_ = type; _tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_function_new (_tmp9_, _tmp12_); _tmp14_ = _tmp13_; _g_free0 (_tmp12_); function = _tmp14_; _tmp15_ = function; vala_ccode_function_set_modifiers (_tmp15_, VALA_CCODE_MODIFIERS_STATIC); _tmp16_ = function; _tmp17_ = type; _tmp18_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp17_); _tmp19_ = _tmp18_; _tmp20_ = vala_ccode_parameter_new ("self", _tmp19_); _tmp21_ = _tmp20_; vala_ccode_function_add_parameter (_tmp16_, _tmp21_); _vala_ccode_node_unref0 (_tmp21_); _g_free0 (_tmp19_); _tmp22_ = function; vala_ccode_base_module_push_function (self, _tmp22_); _tmp23_ = type; _tmp24_ = vala_data_type_get_data_type (_tmp23_); _tmp25_ = _tmp24_; _tmp26_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp25_) ? ((ValaClass*) _tmp25_) : NULL); cl = _tmp26_; _tmp28_ = cl; if (_tmp28_ != NULL) { ValaClass* _tmp29_; gboolean _tmp30_ = FALSE; _tmp29_ = cl; _tmp30_ = vala_ccode_base_module_get_ccode_is_gboxed ((ValaTypeSymbol*) _tmp29_); _tmp27_ = _tmp30_; } else { _tmp27_ = FALSE; } _tmp31_ = _tmp27_; g_assert (_tmp31_); _tmp32_ = vala_ccode_identifier_new ("g_boxed_copy"); _tmp33_ = _tmp32_; _tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_); _tmp35_ = _tmp34_; _vala_ccode_node_unref0 (_tmp33_); free_call = _tmp35_; _tmp36_ = free_call; _tmp37_ = cl; _tmp38_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp37_); _tmp39_ = _tmp38_; _tmp40_ = vala_ccode_identifier_new (_tmp39_); _tmp41_ = _tmp40_; vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp41_); _vala_ccode_node_unref0 (_tmp41_); _g_free0 (_tmp39_); _tmp42_ = free_call; _tmp43_ = vala_ccode_identifier_new ("self"); _tmp44_ = _tmp43_; vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp44_); _vala_ccode_node_unref0 (_tmp44_); _tmp45_ = vala_ccode_base_module_get_ccode (self); _tmp46_ = _tmp45_; _tmp47_ = free_call; vala_ccode_function_add_return (_tmp46_, (ValaCCodeExpression*) _tmp47_); vala_ccode_base_module_pop_function (self); _tmp48_ = self->cfile; _tmp49_ = function; vala_ccode_file_add_function_declaration (_tmp48_, _tmp49_); _tmp50_ = self->cfile; _tmp51_ = function; vala_ccode_file_add_function (_tmp50_, _tmp51_); result = destroy_func; _vala_ccode_node_unref0 (free_call); _vala_code_node_unref0 (cl); _vala_ccode_node_unref0 (function); return result; } gchar* vala_ccode_base_module_generate_free_function_address_of_wrapper (ValaCCodeBaseModule* self, ValaDataType* type) { gchar* result = NULL; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gchar* _tmp5_ = NULL; gchar* _tmp6_; gchar* destroy_func; const gchar* _tmp7_; gboolean _tmp8_ = FALSE; const gchar* _tmp9_; ValaCCodeFunction* _tmp10_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp11_; ValaCCodeFunction* _tmp12_; ValaDataType* _tmp13_; gchar* _tmp14_ = NULL; gchar* _tmp15_; ValaCCodeParameter* _tmp16_; ValaCCodeParameter* _tmp17_; ValaCCodeFunction* _tmp18_; ValaDataType* _tmp19_; ValaTypeSymbol* _tmp20_; ValaTypeSymbol* _tmp21_; ValaClass* _tmp22_; ValaClass* cl; ValaClass* _tmp23_; gchar* _tmp24_ = NULL; gchar* _tmp25_; ValaCCodeIdentifier* _tmp26_; ValaCCodeIdentifier* _tmp27_; ValaCCodeFunctionCall* _tmp28_; ValaCCodeFunctionCall* _tmp29_; ValaCCodeFunctionCall* free_call; ValaCCodeFunctionCall* _tmp30_; ValaCCodeIdentifier* _tmp31_; ValaCCodeIdentifier* _tmp32_; ValaCCodeUnaryExpression* _tmp33_; ValaCCodeUnaryExpression* _tmp34_; ValaCCodeFunction* _tmp35_; ValaCCodeFunction* _tmp36_; ValaCCodeFunctionCall* _tmp37_; ValaCCodeFile* _tmp38_; ValaCCodeFunction* _tmp39_; ValaCCodeFile* _tmp40_; ValaCCodeFunction* _tmp41_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup_printf ("_vala_%s_free_function_address_of", _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); destroy_func = _tmp6_; _tmp7_ = destroy_func; _tmp8_ = vala_ccode_base_module_add_wrapper (self, _tmp7_); if (!_tmp8_) { result = destroy_func; return result; } _tmp9_ = destroy_func; _tmp10_ = vala_ccode_function_new (_tmp9_, "void"); function = _tmp10_; _tmp11_ = function; vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC); _tmp12_ = function; _tmp13_ = type; _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = vala_ccode_parameter_new ("self", _tmp15_); _tmp17_ = _tmp16_; vala_ccode_function_add_parameter (_tmp12_, _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _g_free0 (_tmp15_); _tmp18_ = function; vala_ccode_base_module_push_function (self, _tmp18_); _tmp19_ = type; _tmp20_ = vala_data_type_get_data_type (_tmp19_); _tmp21_ = _tmp20_; _tmp22_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp21_) ? ((ValaClass*) _tmp21_) : NULL); cl = _tmp22_; _tmp23_ = cl; _tmp24_ = vala_ccode_base_module_get_ccode_free_function ((ValaTypeSymbol*) _tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_identifier_new (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_); _tmp29_ = _tmp28_; _vala_ccode_node_unref0 (_tmp27_); _g_free0 (_tmp25_); free_call = _tmp29_; _tmp30_ = free_call; _tmp31_ = vala_ccode_identifier_new ("self"); _tmp32_ = _tmp31_; _tmp33_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp32_); _tmp34_ = _tmp33_; vala_ccode_function_call_add_argument (_tmp30_, (ValaCCodeExpression*) _tmp34_); _vala_ccode_node_unref0 (_tmp34_); _vala_ccode_node_unref0 (_tmp32_); _tmp35_ = vala_ccode_base_module_get_ccode (self); _tmp36_ = _tmp35_; _tmp37_ = free_call; vala_ccode_function_add_expression (_tmp36_, (ValaCCodeExpression*) _tmp37_); vala_ccode_base_module_pop_function (self); _tmp38_ = self->cfile; _tmp39_ = function; vala_ccode_file_add_function_declaration (_tmp38_, _tmp39_); _tmp40_ = self->cfile; _tmp41_ = function; vala_ccode_file_add_function (_tmp40_, _tmp41_); result = destroy_func; _vala_ccode_node_unref0 (free_call); _vala_code_node_unref0 (cl); _vala_ccode_node_unref0 (function); return result; } gchar* vala_ccode_base_module_generate_free_func_wrapper (ValaCCodeBaseModule* self, ValaDataType* type) { gchar* result = NULL; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gchar* _tmp5_ = NULL; gchar* _tmp6_; gchar* destroy_func; const gchar* _tmp7_; gboolean _tmp8_ = FALSE; const gchar* _tmp9_; ValaCCodeFunction* _tmp10_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp11_; ValaCCodeFunction* _tmp12_; ValaDataType* _tmp13_; gchar* _tmp14_ = NULL; gchar* _tmp15_; ValaCCodeParameter* _tmp16_; ValaCCodeParameter* _tmp17_; ValaCCodeFunction* _tmp18_; ValaDataType* _tmp19_; ValaTypeSymbol* _tmp20_; ValaTypeSymbol* _tmp21_; ValaClass* _tmp22_; ValaClass* cl; gboolean _tmp23_ = FALSE; ValaClass* _tmp24_; gboolean _tmp27_; ValaCCodeFile* _tmp79_; ValaCCodeFunction* _tmp80_; ValaCCodeFile* _tmp81_; ValaCCodeFunction* _tmp82_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup_printf ("_vala_%s_free", _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); destroy_func = _tmp6_; _tmp7_ = destroy_func; _tmp8_ = vala_ccode_base_module_add_wrapper (self, _tmp7_); if (!_tmp8_) { result = destroy_func; return result; } _tmp9_ = destroy_func; _tmp10_ = vala_ccode_function_new (_tmp9_, "void"); function = _tmp10_; _tmp11_ = function; vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC); _tmp12_ = function; _tmp13_ = type; _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = vala_ccode_parameter_new ("self", _tmp15_); _tmp17_ = _tmp16_; vala_ccode_function_add_parameter (_tmp12_, _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _g_free0 (_tmp15_); _tmp18_ = function; vala_ccode_base_module_push_function (self, _tmp18_); _tmp19_ = type; _tmp20_ = vala_data_type_get_data_type (_tmp19_); _tmp21_ = _tmp20_; _tmp22_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp21_) ? ((ValaClass*) _tmp21_) : NULL); cl = _tmp22_; _tmp24_ = cl; if (_tmp24_ != NULL) { ValaClass* _tmp25_; gboolean _tmp26_ = FALSE; _tmp25_ = cl; _tmp26_ = vala_ccode_base_module_get_ccode_is_gboxed ((ValaTypeSymbol*) _tmp25_); _tmp23_ = _tmp26_; } else { _tmp23_ = FALSE; } _tmp27_ = _tmp23_; if (_tmp27_) { ValaCCodeIdentifier* _tmp28_; ValaCCodeIdentifier* _tmp29_; ValaCCodeFunctionCall* _tmp30_; ValaCCodeFunctionCall* _tmp31_; ValaCCodeFunctionCall* free_call; ValaCCodeFunctionCall* _tmp32_; ValaClass* _tmp33_; gchar* _tmp34_ = NULL; gchar* _tmp35_; ValaCCodeIdentifier* _tmp36_; ValaCCodeIdentifier* _tmp37_; ValaCCodeFunctionCall* _tmp38_; ValaCCodeIdentifier* _tmp39_; ValaCCodeIdentifier* _tmp40_; ValaCCodeFunction* _tmp41_; ValaCCodeFunction* _tmp42_; ValaCCodeFunctionCall* _tmp43_; _tmp28_ = vala_ccode_identifier_new ("g_boxed_free"); _tmp29_ = _tmp28_; _tmp30_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp29_); _tmp31_ = _tmp30_; _vala_ccode_node_unref0 (_tmp29_); free_call = _tmp31_; _tmp32_ = free_call; _tmp33_ = cl; _tmp34_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp33_); _tmp35_ = _tmp34_; _tmp36_ = vala_ccode_identifier_new (_tmp35_); _tmp37_ = _tmp36_; vala_ccode_function_call_add_argument (_tmp32_, (ValaCCodeExpression*) _tmp37_); _vala_ccode_node_unref0 (_tmp37_); _g_free0 (_tmp35_); _tmp38_ = free_call; _tmp39_ = vala_ccode_identifier_new ("self"); _tmp40_ = _tmp39_; vala_ccode_function_call_add_argument (_tmp38_, (ValaCCodeExpression*) _tmp40_); _vala_ccode_node_unref0 (_tmp40_); _tmp41_ = vala_ccode_base_module_get_ccode (self); _tmp42_ = _tmp41_; _tmp43_ = free_call; vala_ccode_function_add_expression (_tmp42_, (ValaCCodeExpression*) _tmp43_); _vala_ccode_node_unref0 (free_call); } else { ValaDataType* _tmp44_; ValaTypeSymbol* _tmp45_; ValaTypeSymbol* _tmp46_; ValaStruct* _tmp47_; ValaStruct* st; gboolean _tmp48_ = FALSE; ValaStruct* _tmp49_; gboolean _tmp52_; ValaCCodeIdentifier* _tmp69_; ValaCCodeIdentifier* _tmp70_; ValaCCodeFunctionCall* _tmp71_; ValaCCodeFunctionCall* _tmp72_; ValaCCodeFunctionCall* free_call; ValaCCodeFunctionCall* _tmp73_; ValaCCodeIdentifier* _tmp74_; ValaCCodeIdentifier* _tmp75_; ValaCCodeFunction* _tmp76_; ValaCCodeFunction* _tmp77_; ValaCCodeFunctionCall* _tmp78_; _tmp44_ = type; _tmp45_ = vala_data_type_get_data_type (_tmp44_); _tmp46_ = _tmp45_; _tmp47_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp46_) ? ((ValaStruct*) _tmp46_) : NULL); st = _tmp47_; _tmp49_ = st; if (_tmp49_ != NULL) { ValaStruct* _tmp50_; gboolean _tmp51_ = FALSE; _tmp50_ = st; _tmp51_ = vala_struct_is_disposable (_tmp50_); _tmp48_ = _tmp51_; } else { _tmp48_ = FALSE; } _tmp52_ = _tmp48_; if (_tmp52_) { ValaStruct* _tmp53_; gboolean _tmp54_ = FALSE; ValaStruct* _tmp56_; gchar* _tmp57_ = NULL; gchar* _tmp58_; ValaCCodeIdentifier* _tmp59_; ValaCCodeIdentifier* _tmp60_; ValaCCodeFunctionCall* _tmp61_; ValaCCodeFunctionCall* _tmp62_; ValaCCodeFunctionCall* destroy_call; ValaCCodeFunctionCall* _tmp63_; ValaCCodeIdentifier* _tmp64_; ValaCCodeIdentifier* _tmp65_; ValaCCodeFunction* _tmp66_; ValaCCodeFunction* _tmp67_; ValaCCodeFunctionCall* _tmp68_; _tmp53_ = st; _tmp54_ = vala_ccode_base_module_get_ccode_has_destroy_function (_tmp53_); if (!_tmp54_) { ValaStruct* _tmp55_; _tmp55_ = st; vala_ccode_base_module_generate_struct_destroy_function (self, _tmp55_); } _tmp56_ = st; _tmp57_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp56_); _tmp58_ = _tmp57_; _tmp59_ = vala_ccode_identifier_new (_tmp58_); _tmp60_ = _tmp59_; _tmp61_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp60_); _tmp62_ = _tmp61_; _vala_ccode_node_unref0 (_tmp60_); _g_free0 (_tmp58_); destroy_call = _tmp62_; _tmp63_ = destroy_call; _tmp64_ = vala_ccode_identifier_new ("self"); _tmp65_ = _tmp64_; vala_ccode_function_call_add_argument (_tmp63_, (ValaCCodeExpression*) _tmp65_); _vala_ccode_node_unref0 (_tmp65_); _tmp66_ = vala_ccode_base_module_get_ccode (self); _tmp67_ = _tmp66_; _tmp68_ = destroy_call; vala_ccode_function_add_expression (_tmp67_, (ValaCCodeExpression*) _tmp68_); _vala_ccode_node_unref0 (destroy_call); } _tmp69_ = vala_ccode_identifier_new ("g_free"); _tmp70_ = _tmp69_; _tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_); _tmp72_ = _tmp71_; _vala_ccode_node_unref0 (_tmp70_); free_call = _tmp72_; _tmp73_ = free_call; _tmp74_ = vala_ccode_identifier_new ("self"); _tmp75_ = _tmp74_; vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp75_); _vala_ccode_node_unref0 (_tmp75_); _tmp76_ = vala_ccode_base_module_get_ccode (self); _tmp77_ = _tmp76_; _tmp78_ = free_call; vala_ccode_function_add_expression (_tmp77_, (ValaCCodeExpression*) _tmp78_); _vala_ccode_node_unref0 (free_call); _vala_code_node_unref0 (st); } vala_ccode_base_module_pop_function (self); _tmp79_ = self->cfile; _tmp80_ = function; vala_ccode_file_add_function_declaration (_tmp79_, _tmp80_); _tmp81_ = self->cfile; _tmp82_ = function; vala_ccode_file_add_function (_tmp81_, _tmp82_); result = destroy_func; _vala_code_node_unref0 (cl); _vala_ccode_node_unref0 (function); return result; } ValaCCodeExpression* vala_ccode_base_module_get_destroy0_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup) { ValaCCodeExpression* result = NULL; ValaDataType* _tmp0_; gboolean _tmp1_; ValaCCodeExpression* _tmp2_ = NULL; ValaCCodeExpression* element_destroy_func_expression; ValaCCodeExpression* _tmp3_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; _tmp1_ = is_chainup; _tmp2_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp0_, _tmp1_); element_destroy_func_expression = _tmp2_; _tmp3_ = element_destroy_func_expression; if (VALA_IS_CCODE_IDENTIFIER (_tmp3_)) { ValaCCodeExpression* _tmp4_; ValaCCodeIdentifier* _tmp5_; ValaCCodeIdentifier* freeid; ValaCCodeIdentifier* _tmp6_; const gchar* _tmp7_; const gchar* _tmp8_; gchar* _tmp9_ = NULL; gchar* free0_func; const gchar* _tmp10_; gboolean _tmp11_ = FALSE; const gchar* _tmp32_; ValaCCodeIdentifier* _tmp33_; _tmp4_ = element_destroy_func_expression; _tmp5_ = _vala_ccode_node_ref0 (VALA_CCODE_IDENTIFIER (_tmp4_)); freeid = _tmp5_; _tmp6_ = freeid; _tmp7_ = vala_ccode_identifier_get_name (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = g_strdup_printf ("_%s0_", _tmp8_); free0_func = _tmp9_; _tmp10_ = free0_func; _tmp11_ = vala_ccode_base_module_add_wrapper (self, _tmp10_); if (_tmp11_) { const gchar* _tmp12_; ValaCCodeFunction* _tmp13_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp14_; ValaCCodeFunction* _tmp15_; ValaCCodeParameter* _tmp16_; ValaCCodeParameter* _tmp17_; ValaCCodeFunction* _tmp18_; ValaCCodeFunction* _tmp19_; ValaCCodeFunction* _tmp20_; ValaDataType* _tmp21_; ValaCCodeIdentifier* _tmp22_; ValaCCodeIdentifier* _tmp23_; ValaGLibValue* _tmp24_; ValaGLibValue* _tmp25_; ValaCCodeExpression* _tmp26_ = NULL; ValaCCodeExpression* _tmp27_; ValaCCodeFile* _tmp28_; ValaCCodeFunction* _tmp29_; ValaCCodeFile* _tmp30_; ValaCCodeFunction* _tmp31_; _tmp12_ = free0_func; _tmp13_ = vala_ccode_function_new (_tmp12_, "void"); function = _tmp13_; _tmp14_ = function; vala_ccode_function_set_modifiers (_tmp14_, VALA_CCODE_MODIFIERS_STATIC); _tmp15_ = function; _tmp16_ = vala_ccode_parameter_new ("var", "gpointer"); _tmp17_ = _tmp16_; vala_ccode_function_add_parameter (_tmp15_, _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _tmp18_ = function; vala_ccode_base_module_push_function (self, _tmp18_); _tmp19_ = vala_ccode_base_module_get_ccode (self); _tmp20_ = _tmp19_; _tmp21_ = type; _tmp22_ = vala_ccode_identifier_new ("var"); _tmp23_ = _tmp22_; _tmp24_ = vala_glib_value_new (_tmp21_, (ValaCCodeExpression*) _tmp23_, TRUE); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_base_module_destroy_value (self, (ValaTargetValue*) _tmp25_, TRUE); _tmp27_ = _tmp26_; vala_ccode_function_add_expression (_tmp20_, _tmp27_); _vala_ccode_node_unref0 (_tmp27_); _vala_target_value_unref0 (_tmp25_); _vala_ccode_node_unref0 (_tmp23_); vala_ccode_base_module_pop_function (self); _tmp28_ = self->cfile; _tmp29_ = function; vala_ccode_file_add_function_declaration (_tmp28_, _tmp29_); _tmp30_ = self->cfile; _tmp31_ = function; vala_ccode_file_add_function (_tmp30_, _tmp31_); _vala_ccode_node_unref0 (function); } _tmp32_ = free0_func; _tmp33_ = vala_ccode_identifier_new (_tmp32_); _vala_ccode_node_unref0 (element_destroy_func_expression); element_destroy_func_expression = (ValaCCodeExpression*) _tmp33_; _g_free0 (free0_func); _vala_ccode_node_unref0 (freeid); } result = element_destroy_func_expression; return result; } ValaCCodeExpression* vala_ccode_base_module_get_destroy_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup) { ValaCCodeExpression* result = NULL; gboolean _tmp0_ = FALSE; ValaCodeContext* _tmp1_; ValaProfile _tmp2_; ValaProfile _tmp3_; gboolean _tmp26_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp1_ = self->priv->_context; _tmp2_ = vala_code_context_get_profile (_tmp1_); _tmp3_ = _tmp2_; if (_tmp3_ == VALA_PROFILE_GOBJECT) { gboolean _tmp4_ = FALSE; gboolean _tmp5_ = FALSE; gboolean _tmp6_ = FALSE; ValaDataType* _tmp7_; ValaTypeSymbol* _tmp8_; ValaTypeSymbol* _tmp9_; ValaClass* _tmp10_; gboolean _tmp15_; gboolean _tmp20_; gboolean _tmp25_; _tmp7_ = type; _tmp8_ = vala_data_type_get_data_type (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = self->glist_type; if (_tmp9_ == VALA_TYPESYMBOL (_tmp10_)) { _tmp6_ = TRUE; } else { ValaDataType* _tmp11_; ValaTypeSymbol* _tmp12_; ValaTypeSymbol* _tmp13_; ValaClass* _tmp14_; _tmp11_ = type; _tmp12_ = vala_data_type_get_data_type (_tmp11_); _tmp13_ = _tmp12_; _tmp14_ = self->gslist_type; _tmp6_ = _tmp13_ == VALA_TYPESYMBOL (_tmp14_); } _tmp15_ = _tmp6_; if (_tmp15_) { _tmp5_ = TRUE; } else { ValaDataType* _tmp16_; ValaTypeSymbol* _tmp17_; ValaTypeSymbol* _tmp18_; ValaClass* _tmp19_; _tmp16_ = type; _tmp17_ = vala_data_type_get_data_type (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = self->gnode_type; _tmp5_ = _tmp18_ == VALA_TYPESYMBOL (_tmp19_); } _tmp20_ = _tmp5_; if (_tmp20_) { _tmp4_ = TRUE; } else { ValaDataType* _tmp21_; ValaTypeSymbol* _tmp22_; ValaTypeSymbol* _tmp23_; ValaClass* _tmp24_; _tmp21_ = type; _tmp22_ = vala_data_type_get_data_type (_tmp21_); _tmp23_ = _tmp22_; _tmp24_ = self->gqueue_type; _tmp4_ = _tmp23_ == VALA_TYPESYMBOL (_tmp24_); } _tmp25_ = _tmp4_; _tmp0_ = _tmp25_; } else { _tmp0_ = FALSE; } _tmp26_ = _tmp0_; if (_tmp26_) { gboolean elements_require_free; ValaCCodeExpression* element_destroy_func_expression; gboolean _tmp43_ = FALSE; gboolean _tmp44_; gboolean _tmp46_; elements_require_free = FALSE; element_destroy_func_expression = NULL; { ValaDataType* _tmp27_; ValaList* _tmp28_ = NULL; ValaList* _type_arg_list; ValaList* _tmp29_; gint _tmp30_; gint _tmp31_; gint _type_arg_size; gint _type_arg_index; _tmp27_ = type; _tmp28_ = vala_data_type_get_type_arguments (_tmp27_); _type_arg_list = _tmp28_; _tmp29_ = _type_arg_list; _tmp30_ = vala_collection_get_size ((ValaCollection*) _tmp29_); _tmp31_ = _tmp30_; _type_arg_size = _tmp31_; _type_arg_index = -1; while (TRUE) { gint _tmp32_; gint _tmp33_; gint _tmp34_; ValaList* _tmp35_; gint _tmp36_; gpointer _tmp37_ = NULL; ValaDataType* type_arg; ValaDataType* _tmp38_; gboolean _tmp39_ = FALSE; gboolean _tmp40_; _tmp32_ = _type_arg_index; _type_arg_index = _tmp32_ + 1; _tmp33_ = _type_arg_index; _tmp34_ = _type_arg_size; if (!(_tmp33_ < _tmp34_)) { break; } _tmp35_ = _type_arg_list; _tmp36_ = _type_arg_index; _tmp37_ = vala_list_get (_tmp35_, _tmp36_); type_arg = (ValaDataType*) _tmp37_; _tmp38_ = type_arg; _tmp39_ = vala_ccode_base_module_requires_destroy (self, _tmp38_); elements_require_free = _tmp39_; _tmp40_ = elements_require_free; if (_tmp40_) { ValaDataType* _tmp41_; ValaCCodeExpression* _tmp42_ = NULL; _tmp41_ = type_arg; _tmp42_ = vala_ccode_base_module_get_destroy0_func_expression (self, _tmp41_, FALSE); _vala_ccode_node_unref0 (element_destroy_func_expression); element_destroy_func_expression = _tmp42_; } _vala_code_node_unref0 (type_arg); } _vala_iterable_unref0 (_type_arg_list); } _tmp44_ = elements_require_free; if (_tmp44_) { ValaCCodeExpression* _tmp45_; _tmp45_ = element_destroy_func_expression; _tmp43_ = VALA_IS_CCODE_IDENTIFIER (_tmp45_); } else { _tmp43_ = FALSE; } _tmp46_ = _tmp43_; if (_tmp46_) { ValaDataType* _tmp47_; ValaCCodeExpression* _tmp48_; gchar* _tmp49_ = NULL; gchar* _tmp50_; ValaCCodeIdentifier* _tmp51_; ValaCCodeExpression* _tmp52_; _tmp47_ = type; _tmp48_ = element_destroy_func_expression; _tmp49_ = vala_ccode_base_module_generate_collection_free_wrapper (self, _tmp47_, VALA_CCODE_IDENTIFIER (_tmp48_)); _tmp50_ = _tmp49_; _tmp51_ = vala_ccode_identifier_new (_tmp50_); _tmp52_ = (ValaCCodeExpression*) _tmp51_; _g_free0 (_tmp50_); result = _tmp52_; _vala_ccode_node_unref0 (element_destroy_func_expression); return result; } else { ValaDataType* _tmp53_; ValaTypeSymbol* _tmp54_; ValaTypeSymbol* _tmp55_; gchar* _tmp56_ = NULL; gchar* _tmp57_; ValaCCodeIdentifier* _tmp58_; ValaCCodeExpression* _tmp59_; _tmp53_ = type; _tmp54_ = vala_data_type_get_data_type (_tmp53_); _tmp55_ = _tmp54_; _tmp56_ = vala_ccode_base_module_get_ccode_free_function (_tmp55_); _tmp57_ = _tmp56_; _tmp58_ = vala_ccode_identifier_new (_tmp57_); _tmp59_ = (ValaCCodeExpression*) _tmp58_; _g_free0 (_tmp57_); result = _tmp59_; _vala_ccode_node_unref0 (element_destroy_func_expression); return result; } _vala_ccode_node_unref0 (element_destroy_func_expression); } else { ValaDataType* _tmp60_; _tmp60_ = type; if (VALA_IS_ERROR_TYPE (_tmp60_)) { ValaCCodeIdentifier* _tmp61_; _tmp61_ = vala_ccode_identifier_new ("g_error_free"); result = (ValaCCodeExpression*) _tmp61_; return result; } else { ValaDataType* _tmp62_; ValaTypeSymbol* _tmp63_; ValaTypeSymbol* _tmp64_; _tmp62_ = type; _tmp63_ = vala_data_type_get_data_type (_tmp62_); _tmp64_ = _tmp63_; if (_tmp64_ != NULL) { gchar* unref_function = NULL; ValaDataType* _tmp65_; const gchar* _tmp138_; const gchar* _tmp140_; ValaCCodeIdentifier* _tmp141_; _tmp65_ = type; if (VALA_IS_REFERENCE_TYPE (_tmp65_)) { ValaDataType* _tmp66_; ValaTypeSymbol* _tmp67_; ValaTypeSymbol* _tmp68_; gboolean _tmp69_ = FALSE; _tmp66_ = type; _tmp67_ = vala_data_type_get_data_type (_tmp66_); _tmp68_ = _tmp67_; _tmp69_ = vala_ccode_base_module_is_reference_counting (_tmp68_); if (_tmp69_) { ValaDataType* _tmp70_; ValaTypeSymbol* _tmp71_; ValaTypeSymbol* _tmp72_; gchar* _tmp73_ = NULL; gboolean _tmp74_ = FALSE; ValaDataType* _tmp75_; ValaTypeSymbol* _tmp76_; ValaTypeSymbol* _tmp77_; gboolean _tmp79_; _tmp70_ = type; _tmp71_ = vala_data_type_get_data_type (_tmp70_); _tmp72_ = _tmp71_; _tmp73_ = vala_ccode_base_module_get_ccode_unref_function (VALA_OBJECT_TYPE_SYMBOL (_tmp72_)); _g_free0 (unref_function); unref_function = _tmp73_; _tmp75_ = type; _tmp76_ = vala_data_type_get_data_type (_tmp75_); _tmp77_ = _tmp76_; if (VALA_IS_INTERFACE (_tmp77_)) { const gchar* _tmp78_; _tmp78_ = unref_function; _tmp74_ = _tmp78_ == NULL; } else { _tmp74_ = FALSE; } _tmp79_ = _tmp74_; if (_tmp79_) { ValaDataType* _tmp80_; ValaSourceReference* _tmp81_; ValaSourceReference* _tmp82_; ValaDataType* _tmp83_; ValaTypeSymbol* _tmp84_; ValaTypeSymbol* _tmp85_; gchar* _tmp86_ = NULL; gchar* _tmp87_; gchar* _tmp88_ = NULL; gchar* _tmp89_; _tmp80_ = type; _tmp81_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp80_); _tmp82_ = _tmp81_; _tmp83_ = type; _tmp84_ = vala_data_type_get_data_type (_tmp83_); _tmp85_ = _tmp84_; _tmp86_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp85_); _tmp87_ = _tmp86_; _tmp88_ = g_strdup_printf ("missing class prerequisite for interface `%s', add GLib.Object to inte" \ "rface declaration if unsure", _tmp87_); _tmp89_ = _tmp88_; vala_report_error (_tmp82_, _tmp89_); _g_free0 (_tmp89_); _g_free0 (_tmp87_); result = NULL; _g_free0 (unref_function); return result; } } else { ValaDataType* _tmp90_; ValaTypeSymbol* _tmp91_; ValaTypeSymbol* _tmp92_; ValaClass* _tmp93_; ValaClass* cl; gboolean _tmp94_ = FALSE; ValaClass* _tmp95_; gboolean _tmp98_; _tmp90_ = type; _tmp91_ = vala_data_type_get_data_type (_tmp90_); _tmp92_ = _tmp91_; _tmp93_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp92_) ? ((ValaClass*) _tmp92_) : NULL); cl = _tmp93_; _tmp95_ = cl; if (_tmp95_ != NULL) { ValaClass* _tmp96_; gboolean _tmp97_ = FALSE; _tmp96_ = cl; _tmp97_ = vala_ccode_base_module_get_ccode_is_gboxed ((ValaTypeSymbol*) _tmp96_); _tmp94_ = _tmp97_; } else { _tmp94_ = FALSE; } _tmp98_ = _tmp94_; if (_tmp98_) { ValaDataType* _tmp99_; gchar* _tmp100_ = NULL; _tmp99_ = type; _tmp100_ = vala_ccode_base_module_generate_free_func_wrapper (self, _tmp99_); _g_free0 (unref_function); unref_function = _tmp100_; } else { ValaDataType* _tmp101_; gboolean _tmp102_ = FALSE; _tmp101_ = type; _tmp102_ = vala_ccode_base_module_is_free_function_address_of (self, _tmp101_); if (_tmp102_) { ValaDataType* _tmp103_; gchar* _tmp104_ = NULL; _tmp103_ = type; _tmp104_ = vala_ccode_base_module_generate_free_function_address_of_wrapper (self, _tmp103_); _g_free0 (unref_function); unref_function = _tmp104_; } else { ValaDataType* _tmp105_; ValaTypeSymbol* _tmp106_; ValaTypeSymbol* _tmp107_; gchar* _tmp108_ = NULL; _tmp105_ = type; _tmp106_ = vala_data_type_get_data_type (_tmp105_); _tmp107_ = _tmp106_; _tmp108_ = vala_ccode_base_module_get_ccode_free_function (_tmp107_); _g_free0 (unref_function); unref_function = _tmp108_; } } _vala_code_node_unref0 (cl); } } else { ValaDataType* _tmp109_; gboolean _tmp110_; gboolean _tmp111_; _tmp109_ = type; _tmp110_ = vala_data_type_get_nullable (_tmp109_); _tmp111_ = _tmp110_; if (_tmp111_) { ValaDataType* _tmp112_; ValaTypeSymbol* _tmp113_; ValaTypeSymbol* _tmp114_; gchar* _tmp115_ = NULL; const gchar* _tmp116_; _tmp112_ = type; _tmp113_ = vala_data_type_get_data_type (_tmp112_); _tmp114_ = _tmp113_; _tmp115_ = vala_ccode_base_module_get_ccode_free_function (_tmp114_); _g_free0 (unref_function); unref_function = _tmp115_; _tmp116_ = unref_function; if (_tmp116_ == NULL) { gboolean _tmp117_ = FALSE; ValaDataType* _tmp118_; ValaTypeSymbol* _tmp119_; ValaTypeSymbol* _tmp120_; gboolean _tmp125_; _tmp118_ = type; _tmp119_ = vala_data_type_get_data_type (_tmp118_); _tmp120_ = _tmp119_; if (VALA_IS_STRUCT (_tmp120_)) { ValaDataType* _tmp121_; ValaTypeSymbol* _tmp122_; ValaTypeSymbol* _tmp123_; gboolean _tmp124_ = FALSE; _tmp121_ = type; _tmp122_ = vala_data_type_get_data_type (_tmp121_); _tmp123_ = _tmp122_; _tmp124_ = vala_struct_is_disposable (VALA_STRUCT (_tmp123_)); _tmp117_ = _tmp124_; } else { _tmp117_ = FALSE; } _tmp125_ = _tmp117_; if (_tmp125_) { ValaDataType* _tmp126_; gchar* _tmp127_ = NULL; _tmp126_ = type; _tmp127_ = vala_ccode_base_module_generate_free_func_wrapper (self, _tmp126_); _g_free0 (unref_function); unref_function = _tmp127_; } else { gchar* _tmp128_; _tmp128_ = g_strdup ("g_free"); _g_free0 (unref_function); unref_function = _tmp128_; } } } else { ValaDataType* _tmp129_; ValaTypeSymbol* _tmp130_; ValaTypeSymbol* _tmp131_; ValaStruct* _tmp132_; ValaStruct* st; ValaStruct* _tmp133_; gboolean _tmp134_ = FALSE; ValaStruct* _tmp136_; gchar* _tmp137_ = NULL; _tmp129_ = type; _tmp130_ = vala_data_type_get_data_type (_tmp129_); _tmp131_ = _tmp130_; _tmp132_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp131_)); st = _tmp132_; _tmp133_ = st; _tmp134_ = vala_ccode_base_module_get_ccode_has_destroy_function (_tmp133_); if (!_tmp134_) { ValaStruct* _tmp135_; _tmp135_ = st; vala_ccode_base_module_generate_struct_destroy_function (self, _tmp135_); } _tmp136_ = st; _tmp137_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp136_); _g_free0 (unref_function); unref_function = _tmp137_; _vala_code_node_unref0 (st); } } _tmp138_ = unref_function; if (_tmp138_ == NULL) { ValaCCodeConstant* _tmp139_; _tmp139_ = vala_ccode_constant_new ("NULL"); result = (ValaCCodeExpression*) _tmp139_; _g_free0 (unref_function); return result; } _tmp140_ = unref_function; _tmp141_ = vala_ccode_identifier_new (_tmp140_); result = (ValaCCodeExpression*) _tmp141_; _g_free0 (unref_function); return result; } else { ValaDataType* _tmp142_; ValaTypeParameter* _tmp143_; ValaTypeParameter* _tmp144_; _tmp142_ = type; _tmp143_ = vala_data_type_get_type_parameter (_tmp142_); _tmp144_ = _tmp143_; if (_tmp144_ != NULL) { ValaDataType* _tmp145_; ValaTypeParameter* _tmp146_; ValaTypeParameter* _tmp147_; const gchar* _tmp148_; const gchar* _tmp149_; gchar* _tmp150_ = NULL; gchar* _tmp151_; gchar* _tmp152_ = NULL; gchar* _tmp153_; gchar* func_name; gboolean _tmp154_ = FALSE; gboolean _tmp155_ = FALSE; ValaDataType* _tmp156_; gboolean _tmp157_ = FALSE; gboolean _tmp159_; gboolean _tmp162_; _tmp145_ = type; _tmp146_ = vala_data_type_get_type_parameter (_tmp145_); _tmp147_ = _tmp146_; _tmp148_ = vala_symbol_get_name ((ValaSymbol*) _tmp147_); _tmp149_ = _tmp148_; _tmp150_ = g_utf8_strdown (_tmp149_, (gssize) (-1)); _tmp151_ = _tmp150_; _tmp152_ = g_strdup_printf ("%s_destroy_func", _tmp151_); _tmp153_ = _tmp152_; _g_free0 (_tmp151_); func_name = _tmp153_; _tmp156_ = type; _tmp157_ = vala_ccode_base_module_is_in_generic_type (self, _tmp156_); if (_tmp157_) { gboolean _tmp158_; _tmp158_ = is_chainup; _tmp155_ = !_tmp158_; } else { _tmp155_ = FALSE; } _tmp159_ = _tmp155_; if (_tmp159_) { gboolean _tmp160_; gboolean _tmp161_; _tmp160_ = vala_ccode_base_module_get_in_creation_method (self); _tmp161_ = _tmp160_; _tmp154_ = !_tmp161_; } else { _tmp154_ = FALSE; } _tmp162_ = _tmp154_; if (_tmp162_) { ValaCCodeExpression* _tmp163_ = NULL; ValaCCodeExpression* _tmp164_; ValaCCodeMemberAccess* _tmp165_; ValaCCodeMemberAccess* _tmp166_; const gchar* _tmp167_; ValaCCodeMemberAccess* _tmp168_; ValaCCodeExpression* _tmp169_; _tmp163_ = vala_ccode_base_module_get_result_cexpression (self, "self"); _tmp164_ = _tmp163_; _tmp165_ = vala_ccode_member_access_new_pointer (_tmp164_, "priv"); _tmp166_ = _tmp165_; _tmp167_ = func_name; _tmp168_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp166_, _tmp167_); _tmp169_ = (ValaCCodeExpression*) _tmp168_; _vala_ccode_node_unref0 (_tmp166_); _vala_ccode_node_unref0 (_tmp164_); result = _tmp169_; _g_free0 (func_name); return result; } else { const gchar* _tmp170_; ValaCCodeExpression* _tmp171_ = NULL; _tmp170_ = func_name; _tmp171_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp170_); result = _tmp171_; _g_free0 (func_name); return result; } _g_free0 (func_name); } else { ValaDataType* _tmp172_; _tmp172_ = type; if (VALA_IS_ARRAY_TYPE (_tmp172_)) { ValaCodeContext* _tmp173_; ValaProfile _tmp174_; ValaProfile _tmp175_; _tmp173_ = self->priv->_context; _tmp174_ = vala_code_context_get_profile (_tmp173_); _tmp175_ = _tmp174_; if (_tmp175_ == VALA_PROFILE_POSIX) { ValaCCodeIdentifier* _tmp176_; _tmp176_ = vala_ccode_identifier_new ("free"); result = (ValaCCodeExpression*) _tmp176_; return result; } else { ValaCCodeIdentifier* _tmp177_; _tmp177_ = vala_ccode_identifier_new ("g_free"); result = (ValaCCodeExpression*) _tmp177_; return result; } } else { ValaDataType* _tmp178_; _tmp178_ = type; if (VALA_IS_POINTER_TYPE (_tmp178_)) { ValaCodeContext* _tmp179_; ValaProfile _tmp180_; ValaProfile _tmp181_; _tmp179_ = self->priv->_context; _tmp180_ = vala_code_context_get_profile (_tmp179_); _tmp181_ = _tmp180_; if (_tmp181_ == VALA_PROFILE_POSIX) { ValaCCodeIdentifier* _tmp182_; _tmp182_ = vala_ccode_identifier_new ("free"); result = (ValaCCodeExpression*) _tmp182_; return result; } else { ValaCCodeIdentifier* _tmp183_; _tmp183_ = vala_ccode_identifier_new ("g_free"); result = (ValaCCodeExpression*) _tmp183_; return result; } } else { ValaCCodeConstant* _tmp184_; _tmp184_ = vala_ccode_constant_new ("NULL"); result = (ValaCCodeExpression*) _tmp184_; return result; } } } } } } } static gchar* vala_ccode_base_module_generate_collection_free_wrapper (ValaCCodeBaseModule* self, ValaDataType* collection_type, ValaCCodeIdentifier* element_destroy_func_expression) { gchar* result = NULL; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; ValaCCodeIdentifier* _tmp5_; const gchar* _tmp6_; const gchar* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; gchar* destroy_func; const gchar* _tmp10_; gboolean _tmp11_ = FALSE; const gchar* _tmp12_; ValaCCodeFunction* _tmp13_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp14_; ValaCCodeFunction* _tmp15_; ValaDataType* _tmp16_; gchar* _tmp17_ = NULL; gchar* _tmp18_; ValaCCodeParameter* _tmp19_; ValaCCodeParameter* _tmp20_; ValaCCodeFunction* _tmp21_; ValaCCodeFunctionCall* element_free_call = NULL; ValaDataType* _tmp22_; ValaTypeSymbol* _tmp23_; ValaTypeSymbol* _tmp24_; ValaClass* _tmp25_; ValaCCodeFunction* _tmp108_; ValaCCodeFunction* _tmp109_; ValaCCodeFunctionCall* _tmp110_; ValaDataType* _tmp111_; ValaTypeSymbol* _tmp112_; ValaTypeSymbol* _tmp113_; gchar* _tmp114_ = NULL; gchar* _tmp115_; ValaCCodeIdentifier* _tmp116_; ValaCCodeIdentifier* _tmp117_; ValaCCodeFunctionCall* _tmp118_; ValaCCodeFunctionCall* _tmp119_; ValaCCodeFunctionCall* cfreecall; ValaCCodeFunctionCall* _tmp120_; ValaCCodeIdentifier* _tmp121_; ValaCCodeIdentifier* _tmp122_; ValaCCodeFunction* _tmp123_; ValaCCodeFunction* _tmp124_; ValaCCodeFunctionCall* _tmp125_; ValaCCodeFile* _tmp126_; ValaCCodeFunction* _tmp127_; ValaCCodeFile* _tmp128_; ValaCCodeFunction* _tmp129_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (collection_type != NULL, NULL); g_return_val_if_fail (element_destroy_func_expression != NULL, NULL); _tmp0_ = collection_type; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_ccode_free_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = element_destroy_func_expression; _tmp6_ = vala_ccode_identifier_get_name (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = g_strdup_printf ("_%s_%s", _tmp4_, _tmp7_); _tmp9_ = _tmp8_; _g_free0 (_tmp4_); destroy_func = _tmp9_; _tmp10_ = destroy_func; _tmp11_ = vala_ccode_base_module_add_wrapper (self, _tmp10_); if (!_tmp11_) { result = destroy_func; return result; } _tmp12_ = destroy_func; _tmp13_ = vala_ccode_function_new (_tmp12_, "void"); function = _tmp13_; _tmp14_ = function; vala_ccode_function_set_modifiers (_tmp14_, VALA_CCODE_MODIFIERS_STATIC); _tmp15_ = function; _tmp16_ = collection_type; _tmp17_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp16_); _tmp18_ = _tmp17_; _tmp19_ = vala_ccode_parameter_new ("self", _tmp18_); _tmp20_ = _tmp19_; vala_ccode_function_add_parameter (_tmp15_, _tmp20_); _vala_ccode_node_unref0 (_tmp20_); _g_free0 (_tmp18_); _tmp21_ = function; vala_ccode_base_module_push_function (self, _tmp21_); _tmp22_ = collection_type; _tmp23_ = vala_data_type_get_data_type (_tmp22_); _tmp24_ = _tmp23_; _tmp25_ = self->gnode_type; if (_tmp24_ == VALA_TYPESYMBOL (_tmp25_)) { const gchar* _tmp26_; gchar* _tmp27_ = NULL; gchar* destroy_node_func; const gchar* _tmp28_; ValaCCodeFunction* _tmp29_; ValaCCodeFunction* wrapper; ValaCCodeFunction* _tmp30_; ValaCCodeFunction* _tmp31_; ValaDataType* _tmp32_; gchar* _tmp33_ = NULL; gchar* _tmp34_; ValaCCodeParameter* _tmp35_; ValaCCodeParameter* _tmp36_; ValaCCodeFunction* _tmp37_; ValaCCodeParameter* _tmp38_; ValaCCodeParameter* _tmp39_; ValaCCodeFunction* _tmp40_; ValaCCodeIdentifier* _tmp41_; ValaCCodeFunctionCall* _tmp42_; ValaCCodeFunctionCall* free_call; ValaCCodeFunctionCall* _tmp43_; ValaCCodeIdentifier* _tmp44_; ValaCCodeIdentifier* _tmp45_; ValaCCodeMemberAccess* _tmp46_; ValaCCodeMemberAccess* _tmp47_; ValaCCodeFunction* _tmp48_; ValaCCodeFunction* _tmp49_; ValaCCodeFunctionCall* _tmp50_; ValaCCodeFunction* _tmp51_; ValaCCodeFunction* _tmp52_; ValaCCodeConstant* _tmp53_; ValaCCodeConstant* _tmp54_; ValaCCodeFile* _tmp55_; ValaCCodeFunction* _tmp56_; ValaCCodeFile* _tmp57_; ValaCCodeFunction* _tmp58_; ValaCCodeIdentifier* _tmp59_; ValaCCodeIdentifier* _tmp60_; ValaCCodeFunctionCall* _tmp61_; ValaCCodeFunctionCall* _tmp62_; ValaCCodeIdentifier* _tmp63_; ValaCCodeIdentifier* _tmp64_; ValaCCodeFunctionCall* _tmp65_; ValaCCodeConstant* _tmp66_; ValaCCodeConstant* _tmp67_; ValaCCodeFunctionCall* _tmp68_; ValaCCodeConstant* _tmp69_; ValaCCodeConstant* _tmp70_; ValaCCodeFunctionCall* _tmp71_; ValaCCodeConstant* _tmp72_; ValaCCodeConstant* _tmp73_; ValaCCodeFunctionCall* _tmp74_; const gchar* _tmp75_; ValaCCodeIdentifier* _tmp76_; ValaCCodeIdentifier* _tmp77_; ValaCCodeFunctionCall* _tmp78_; ValaCCodeConstant* _tmp79_; ValaCCodeConstant* _tmp80_; _tmp26_ = destroy_func; _tmp27_ = g_strdup_printf ("%s_node", _tmp26_); destroy_node_func = _tmp27_; _tmp28_ = destroy_node_func; _tmp29_ = vala_ccode_function_new (_tmp28_, "gboolean"); wrapper = _tmp29_; _tmp30_ = wrapper; vala_ccode_function_set_modifiers (_tmp30_, VALA_CCODE_MODIFIERS_STATIC); _tmp31_ = wrapper; _tmp32_ = collection_type; _tmp33_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp32_); _tmp34_ = _tmp33_; _tmp35_ = vala_ccode_parameter_new ("node", _tmp34_); _tmp36_ = _tmp35_; vala_ccode_function_add_parameter (_tmp31_, _tmp36_); _vala_ccode_node_unref0 (_tmp36_); _g_free0 (_tmp34_); _tmp37_ = wrapper; _tmp38_ = vala_ccode_parameter_new ("unused", "gpointer"); _tmp39_ = _tmp38_; vala_ccode_function_add_parameter (_tmp37_, _tmp39_); _vala_ccode_node_unref0 (_tmp39_); _tmp40_ = wrapper; vala_ccode_base_module_push_function (self, _tmp40_); _tmp41_ = element_destroy_func_expression; _tmp42_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp41_); free_call = _tmp42_; _tmp43_ = free_call; _tmp44_ = vala_ccode_identifier_new ("node"); _tmp45_ = _tmp44_; _tmp46_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp45_, "data"); _tmp47_ = _tmp46_; vala_ccode_function_call_add_argument (_tmp43_, (ValaCCodeExpression*) _tmp47_); _vala_ccode_node_unref0 (_tmp47_); _vala_ccode_node_unref0 (_tmp45_); _tmp48_ = vala_ccode_base_module_get_ccode (self); _tmp49_ = _tmp48_; _tmp50_ = free_call; vala_ccode_function_add_expression (_tmp49_, (ValaCCodeExpression*) _tmp50_); _tmp51_ = vala_ccode_base_module_get_ccode (self); _tmp52_ = _tmp51_; _tmp53_ = vala_ccode_constant_new ("FALSE"); _tmp54_ = _tmp53_; vala_ccode_function_add_return (_tmp52_, (ValaCCodeExpression*) _tmp54_); _vala_ccode_node_unref0 (_tmp54_); vala_ccode_base_module_pop_function (self); _tmp55_ = self->cfile; _tmp56_ = function; vala_ccode_file_add_function_declaration (_tmp55_, _tmp56_); _tmp57_ = self->cfile; _tmp58_ = wrapper; vala_ccode_file_add_function (_tmp57_, _tmp58_); _tmp59_ = vala_ccode_identifier_new ("g_node_traverse"); _tmp60_ = _tmp59_; _tmp61_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp60_); _vala_ccode_node_unref0 (element_free_call); element_free_call = _tmp61_; _vala_ccode_node_unref0 (_tmp60_); _tmp62_ = element_free_call; _tmp63_ = vala_ccode_identifier_new ("self"); _tmp64_ = _tmp63_; vala_ccode_function_call_add_argument (_tmp62_, (ValaCCodeExpression*) _tmp64_); _vala_ccode_node_unref0 (_tmp64_); _tmp65_ = element_free_call; _tmp66_ = vala_ccode_constant_new ("G_POST_ORDER"); _tmp67_ = _tmp66_; vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp67_); _vala_ccode_node_unref0 (_tmp67_); _tmp68_ = element_free_call; _tmp69_ = vala_ccode_constant_new ("G_TRAVERSE_ALL"); _tmp70_ = _tmp69_; vala_ccode_function_call_add_argument (_tmp68_, (ValaCCodeExpression*) _tmp70_); _vala_ccode_node_unref0 (_tmp70_); _tmp71_ = element_free_call; _tmp72_ = vala_ccode_constant_new ("-1"); _tmp73_ = _tmp72_; vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_); _vala_ccode_node_unref0 (_tmp73_); _tmp74_ = element_free_call; _tmp75_ = destroy_node_func; _tmp76_ = vala_ccode_identifier_new (_tmp75_); _tmp77_ = _tmp76_; vala_ccode_function_call_add_argument (_tmp74_, (ValaCCodeExpression*) _tmp77_); _vala_ccode_node_unref0 (_tmp77_); _tmp78_ = element_free_call; _tmp79_ = vala_ccode_constant_new ("NULL"); _tmp80_ = _tmp79_; vala_ccode_function_call_add_argument (_tmp78_, (ValaCCodeExpression*) _tmp80_); _vala_ccode_node_unref0 (_tmp80_); _vala_ccode_node_unref0 (free_call); _vala_ccode_node_unref0 (wrapper); _g_free0 (destroy_node_func); } else { ValaDataType* _tmp81_; ValaTypeSymbol* _tmp82_; ValaTypeSymbol* _tmp83_; ValaClass* _tmp84_; ValaCCodeFunctionCall* _tmp98_; ValaCCodeIdentifier* _tmp99_; ValaCCodeIdentifier* _tmp100_; ValaCCodeFunctionCall* _tmp101_; ValaCCodeIdentifier* _tmp102_; ValaCCodeCastExpression* _tmp103_; ValaCCodeCastExpression* _tmp104_; ValaCCodeFunctionCall* _tmp105_; ValaCCodeConstant* _tmp106_; ValaCCodeConstant* _tmp107_; _tmp81_ = collection_type; _tmp82_ = vala_data_type_get_data_type (_tmp81_); _tmp83_ = _tmp82_; _tmp84_ = self->glist_type; if (_tmp83_ == VALA_TYPESYMBOL (_tmp84_)) { ValaCCodeIdentifier* _tmp85_; ValaCCodeIdentifier* _tmp86_; ValaCCodeFunctionCall* _tmp87_; _tmp85_ = vala_ccode_identifier_new ("g_list_foreach"); _tmp86_ = _tmp85_; _tmp87_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp86_); _vala_ccode_node_unref0 (element_free_call); element_free_call = _tmp87_; _vala_ccode_node_unref0 (_tmp86_); } else { ValaDataType* _tmp88_; ValaTypeSymbol* _tmp89_; ValaTypeSymbol* _tmp90_; ValaClass* _tmp91_; _tmp88_ = collection_type; _tmp89_ = vala_data_type_get_data_type (_tmp88_); _tmp90_ = _tmp89_; _tmp91_ = self->gslist_type; if (_tmp90_ == VALA_TYPESYMBOL (_tmp91_)) { ValaCCodeIdentifier* _tmp92_; ValaCCodeIdentifier* _tmp93_; ValaCCodeFunctionCall* _tmp94_; _tmp92_ = vala_ccode_identifier_new ("g_slist_foreach"); _tmp93_ = _tmp92_; _tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_); _vala_ccode_node_unref0 (element_free_call); element_free_call = _tmp94_; _vala_ccode_node_unref0 (_tmp93_); } else { ValaCCodeIdentifier* _tmp95_; ValaCCodeIdentifier* _tmp96_; ValaCCodeFunctionCall* _tmp97_; _tmp95_ = vala_ccode_identifier_new ("g_queue_foreach"); _tmp96_ = _tmp95_; _tmp97_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp96_); _vala_ccode_node_unref0 (element_free_call); element_free_call = _tmp97_; _vala_ccode_node_unref0 (_tmp96_); } } _tmp98_ = element_free_call; _tmp99_ = vala_ccode_identifier_new ("self"); _tmp100_ = _tmp99_; vala_ccode_function_call_add_argument (_tmp98_, (ValaCCodeExpression*) _tmp100_); _vala_ccode_node_unref0 (_tmp100_); _tmp101_ = element_free_call; _tmp102_ = element_destroy_func_expression; _tmp103_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp102_, "GFunc"); _tmp104_ = _tmp103_; vala_ccode_function_call_add_argument (_tmp101_, (ValaCCodeExpression*) _tmp104_); _vala_ccode_node_unref0 (_tmp104_); _tmp105_ = element_free_call; _tmp106_ = vala_ccode_constant_new ("NULL"); _tmp107_ = _tmp106_; vala_ccode_function_call_add_argument (_tmp105_, (ValaCCodeExpression*) _tmp107_); _vala_ccode_node_unref0 (_tmp107_); } _tmp108_ = vala_ccode_base_module_get_ccode (self); _tmp109_ = _tmp108_; _tmp110_ = element_free_call; vala_ccode_function_add_expression (_tmp109_, (ValaCCodeExpression*) _tmp110_); _tmp111_ = collection_type; _tmp112_ = vala_data_type_get_data_type (_tmp111_); _tmp113_ = _tmp112_; _tmp114_ = vala_ccode_base_module_get_ccode_free_function (_tmp113_); _tmp115_ = _tmp114_; _tmp116_ = vala_ccode_identifier_new (_tmp115_); _tmp117_ = _tmp116_; _tmp118_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp117_); _tmp119_ = _tmp118_; _vala_ccode_node_unref0 (_tmp117_); _g_free0 (_tmp115_); cfreecall = _tmp119_; _tmp120_ = cfreecall; _tmp121_ = vala_ccode_identifier_new ("self"); _tmp122_ = _tmp121_; vala_ccode_function_call_add_argument (_tmp120_, (ValaCCodeExpression*) _tmp122_); _vala_ccode_node_unref0 (_tmp122_); _tmp123_ = vala_ccode_base_module_get_ccode (self); _tmp124_ = _tmp123_; _tmp125_ = cfreecall; vala_ccode_function_add_expression (_tmp124_, (ValaCCodeExpression*) _tmp125_); vala_ccode_base_module_pop_function (self); _tmp126_ = self->cfile; _tmp127_ = function; vala_ccode_file_add_function_declaration (_tmp126_, _tmp127_); _tmp128_ = self->cfile; _tmp129_ = function; vala_ccode_file_add_function (_tmp128_, _tmp129_); result = destroy_func; _vala_ccode_node_unref0 (cfreecall); _vala_ccode_node_unref0 (element_free_call); _vala_ccode_node_unref0 (function); return result; } static gchar* vala_ccode_base_module_real_append_struct_array_free (ValaCCodeBaseModule* self, ValaStruct* st) { gchar* result = NULL; g_return_val_if_fail (st != NULL, NULL); result = NULL; return result; } gchar* vala_ccode_base_module_append_struct_array_free (ValaCCodeBaseModule* self, ValaStruct* st) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->append_struct_array_free (self, st); } ValaCCodeExpression* vala_ccode_base_module_destroy_local (ValaCCodeBaseModule* self, ValaLocalVariable* local) { ValaCCodeExpression* result = NULL; ValaLocalVariable* _tmp0_; ValaTargetValue* _tmp1_ = NULL; ValaTargetValue* _tmp2_; ValaCCodeExpression* _tmp3_ = NULL; ValaCCodeExpression* _tmp4_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (local != NULL, NULL); _tmp0_ = local; _tmp1_ = vala_ccode_base_module_get_local_cvalue (self, _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_destroy_value (self, _tmp2_, FALSE); _tmp4_ = _tmp3_; _vala_target_value_unref0 (_tmp2_); result = _tmp4_; return result; } ValaCCodeExpression* vala_ccode_base_module_destroy_parameter (ValaCCodeBaseModule* self, ValaParameter* param) { ValaCCodeExpression* result = NULL; ValaParameter* _tmp0_; ValaTargetValue* _tmp1_ = NULL; ValaTargetValue* _tmp2_; ValaCCodeExpression* _tmp3_ = NULL; ValaCCodeExpression* _tmp4_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (param != NULL, NULL); _tmp0_ = param; _tmp1_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_destroy_value (self, _tmp2_, FALSE); _tmp4_ = _tmp3_; _vala_target_value_unref0 (_tmp2_); result = _tmp4_; return result; } ValaCCodeExpression* vala_ccode_base_module_destroy_field (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance) { ValaCCodeExpression* result = NULL; ValaField* _tmp0_; ValaTargetValue* _tmp1_; ValaTargetValue* _tmp2_ = NULL; ValaTargetValue* _tmp3_; ValaCCodeExpression* _tmp4_ = NULL; ValaCCodeExpression* _tmp5_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (field != NULL, NULL); _tmp0_ = field; _tmp1_ = instance; _tmp2_ = vala_ccode_base_module_get_field_cvalue (self, _tmp0_, _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_base_module_destroy_value (self, _tmp3_, FALSE); _tmp5_ = _tmp4_; _vala_target_value_unref0 (_tmp3_); result = _tmp5_; return result; } static ValaCCodeExpression* vala_ccode_base_module_real_destroy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition) { ValaCCodeExpression* result = NULL; ValaTargetValue* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaDataType* _tmp3_; ValaDataType* type; ValaTargetValue* _tmp4_; ValaDataType* _tmp5_; ValaDataType* _tmp6_; ValaTargetValue* _tmp11_; ValaCCodeExpression* _tmp12_ = NULL; ValaCCodeExpression* cvar; ValaDataType* _tmp13_; ValaDataType* _tmp59_; ValaCCodeExpression* _tmp60_ = NULL; ValaCCodeExpression* _tmp61_; ValaCCodeFunctionCall* _tmp62_; ValaCCodeFunctionCall* _tmp63_; ValaCCodeFunctionCall* ccall; gboolean _tmp64_ = FALSE; ValaDataType* _tmp65_; gboolean _tmp69_; gboolean _tmp112_ = FALSE; gboolean _tmp113_ = FALSE; ValaCCodeFunctionCall* _tmp114_; ValaCCodeExpression* _tmp115_; ValaCCodeExpression* _tmp116_; gboolean _tmp118_; gboolean _tmp120_; ValaCCodeExpression* _tmp151_; ValaCCodeConstant* _tmp152_; ValaCCodeConstant* _tmp153_; ValaCCodeBinaryExpression* _tmp154_; ValaCCodeBinaryExpression* _tmp155_; ValaCCodeBinaryExpression* cisnull; ValaDataType* _tmp156_; ValaTypeParameter* _tmp157_; ValaTypeParameter* _tmp158_; ValaCCodeFunctionCall* _tmp193_; ValaCCodeExpression* _tmp194_; ValaCCodeCommaExpression* _tmp195_; ValaCCodeCommaExpression* ccomma; ValaCodeContext* _tmp196_; ValaProfile _tmp197_; ValaProfile _tmp198_; ValaCCodeCommaExpression* _tmp304_; ValaCCodeFunctionCall* _tmp305_; ValaCCodeCommaExpression* _tmp306_; ValaCCodeConstant* _tmp307_; ValaCCodeConstant* _tmp308_; ValaCCodeExpression* _tmp309_; ValaCCodeCommaExpression* _tmp310_; ValaCCodeAssignment* _tmp311_; ValaCCodeAssignment* cassign; gboolean _tmp312_ = FALSE; gboolean _tmp313_ = FALSE; ValaDataType* _tmp314_; ValaTypeSymbol* _tmp315_; ValaTypeSymbol* _tmp316_; gboolean _tmp321_; gboolean _tmp327_; gboolean uses_gfree; gboolean _tmp328_ = FALSE; gboolean _tmp329_; gboolean _tmp331_; gboolean _tmp332_; ValaCCodeBinaryExpression* _tmp333_; ValaCCodeConstant* _tmp334_; ValaCCodeConstant* _tmp335_; ValaCCodeAssignment* _tmp336_; ValaCCodeConditionalExpression* _tmp337_; ValaCCodeExpression* _tmp338_; g_return_val_if_fail (value != NULL, NULL); _tmp0_ = value; _tmp1_ = vala_target_value_get_value_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (_tmp2_); type = _tmp3_; _tmp4_ = value; _tmp5_ = vala_target_value_get_actual_value_type (_tmp4_); _tmp6_ = _tmp5_; if (_tmp6_ != NULL) { ValaTargetValue* _tmp7_; ValaDataType* _tmp8_; ValaDataType* _tmp9_; ValaDataType* _tmp10_; _tmp7_ = value; _tmp8_ = vala_target_value_get_actual_value_type (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = _vala_code_node_ref0 (_tmp9_); _vala_code_node_unref0 (type); type = _tmp10_; } _tmp11_ = value; _tmp12_ = vala_ccode_base_module_get_cvalue_ (self, _tmp11_); cvar = _tmp12_; _tmp13_ = type; if (VALA_IS_DELEGATE_TYPE (_tmp13_)) { ValaTargetValue* _tmp14_; ValaCCodeExpression* _tmp15_ = NULL; ValaCCodeExpression* delegate_target; ValaTargetValue* _tmp16_; ValaCCodeExpression* _tmp17_ = NULL; ValaCCodeExpression* delegate_target_destroy_notify; ValaCCodeExpression* _tmp18_; ValaCCodeFunctionCall* _tmp19_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp20_; ValaCCodeExpression* _tmp21_; ValaCCodeCommaExpression* _tmp22_; ValaCCodeCommaExpression* destroy_call; ValaCCodeCommaExpression* _tmp23_; ValaCCodeFunctionCall* _tmp24_; ValaCCodeCommaExpression* _tmp25_; ValaCCodeConstant* _tmp26_; ValaCCodeConstant* _tmp27_; ValaCCodeExpression* _tmp28_; ValaCCodeConstant* _tmp29_; ValaCCodeConstant* _tmp30_; ValaCCodeBinaryExpression* _tmp31_; ValaCCodeBinaryExpression* _tmp32_; ValaCCodeBinaryExpression* cisnull; ValaCCodeCommaExpression* _tmp33_; ValaCCodeCommaExpression* ccomma; ValaCCodeCommaExpression* _tmp34_; ValaCCodeBinaryExpression* _tmp35_; ValaCCodeConstant* _tmp36_; ValaCCodeConstant* _tmp37_; ValaCCodeCommaExpression* _tmp38_; ValaCCodeConditionalExpression* _tmp39_; ValaCCodeConditionalExpression* _tmp40_; ValaCCodeCommaExpression* _tmp41_; ValaCCodeExpression* _tmp42_; ValaCCodeConstant* _tmp43_; ValaCCodeConstant* _tmp44_; ValaCCodeAssignment* _tmp45_; ValaCCodeAssignment* _tmp46_; ValaCCodeCommaExpression* _tmp47_; ValaCCodeExpression* _tmp48_; ValaCCodeConstant* _tmp49_; ValaCCodeConstant* _tmp50_; ValaCCodeAssignment* _tmp51_; ValaCCodeAssignment* _tmp52_; ValaCCodeCommaExpression* _tmp53_; ValaCCodeExpression* _tmp54_; ValaCCodeConstant* _tmp55_; ValaCCodeConstant* _tmp56_; ValaCCodeAssignment* _tmp57_; ValaCCodeAssignment* _tmp58_; _tmp14_ = value; _tmp15_ = vala_ccode_base_module_get_delegate_target_cvalue (self, _tmp14_); delegate_target = _tmp15_; _tmp16_ = value; _tmp17_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp16_); delegate_target_destroy_notify = _tmp17_; _tmp18_ = delegate_target_destroy_notify; _tmp19_ = vala_ccode_function_call_new (_tmp18_); ccall = _tmp19_; _tmp20_ = ccall; _tmp21_ = delegate_target; vala_ccode_function_call_add_argument (_tmp20_, _tmp21_); _tmp22_ = vala_ccode_comma_expression_new (); destroy_call = _tmp22_; _tmp23_ = destroy_call; _tmp24_ = ccall; vala_ccode_comma_expression_append_expression (_tmp23_, (ValaCCodeExpression*) _tmp24_); _tmp25_ = destroy_call; _tmp26_ = vala_ccode_constant_new ("NULL"); _tmp27_ = _tmp26_; vala_ccode_comma_expression_append_expression (_tmp25_, (ValaCCodeExpression*) _tmp27_); _vala_ccode_node_unref0 (_tmp27_); _tmp28_ = delegate_target_destroy_notify; _tmp29_ = vala_ccode_constant_new ("NULL"); _tmp30_ = _tmp29_; _tmp31_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, _tmp28_, (ValaCCodeExpression*) _tmp30_); _tmp32_ = _tmp31_; _vala_ccode_node_unref0 (_tmp30_); cisnull = _tmp32_; _tmp33_ = vala_ccode_comma_expression_new (); ccomma = _tmp33_; _tmp34_ = ccomma; _tmp35_ = cisnull; _tmp36_ = vala_ccode_constant_new ("NULL"); _tmp37_ = _tmp36_; _tmp38_ = destroy_call; _tmp39_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp35_, (ValaCCodeExpression*) _tmp37_, (ValaCCodeExpression*) _tmp38_); _tmp40_ = _tmp39_; vala_ccode_comma_expression_append_expression (_tmp34_, (ValaCCodeExpression*) _tmp40_); _vala_ccode_node_unref0 (_tmp40_); _vala_ccode_node_unref0 (_tmp37_); _tmp41_ = ccomma; _tmp42_ = cvar; _tmp43_ = vala_ccode_constant_new ("NULL"); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_assignment_new (_tmp42_, (ValaCCodeExpression*) _tmp44_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp46_ = _tmp45_; vala_ccode_comma_expression_append_expression (_tmp41_, (ValaCCodeExpression*) _tmp46_); _vala_ccode_node_unref0 (_tmp46_); _vala_ccode_node_unref0 (_tmp44_); _tmp47_ = ccomma; _tmp48_ = delegate_target; _tmp49_ = vala_ccode_constant_new ("NULL"); _tmp50_ = _tmp49_; _tmp51_ = vala_ccode_assignment_new (_tmp48_, (ValaCCodeExpression*) _tmp50_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp52_ = _tmp51_; vala_ccode_comma_expression_append_expression (_tmp47_, (ValaCCodeExpression*) _tmp52_); _vala_ccode_node_unref0 (_tmp52_); _vala_ccode_node_unref0 (_tmp50_); _tmp53_ = ccomma; _tmp54_ = delegate_target_destroy_notify; _tmp55_ = vala_ccode_constant_new ("NULL"); _tmp56_ = _tmp55_; _tmp57_ = vala_ccode_assignment_new (_tmp54_, (ValaCCodeExpression*) _tmp56_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp58_ = _tmp57_; vala_ccode_comma_expression_append_expression (_tmp53_, (ValaCCodeExpression*) _tmp58_); _vala_ccode_node_unref0 (_tmp58_); _vala_ccode_node_unref0 (_tmp56_); result = (ValaCCodeExpression*) ccomma; _vala_ccode_node_unref0 (cisnull); _vala_ccode_node_unref0 (destroy_call); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (delegate_target_destroy_notify); _vala_ccode_node_unref0 (delegate_target); _vala_ccode_node_unref0 (cvar); _vala_code_node_unref0 (type); return result; } _tmp59_ = type; _tmp60_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp59_, FALSE); _tmp61_ = _tmp60_; _tmp62_ = vala_ccode_function_call_new (_tmp61_); _tmp63_ = _tmp62_; _vala_ccode_node_unref0 (_tmp61_); ccall = _tmp63_; _tmp65_ = type; if (VALA_IS_VALUE_TYPE (_tmp65_)) { ValaDataType* _tmp66_; gboolean _tmp67_; gboolean _tmp68_; _tmp66_ = type; _tmp67_ = vala_data_type_get_nullable (_tmp66_); _tmp68_ = _tmp67_; _tmp64_ = !_tmp68_; } else { _tmp64_ = FALSE; } _tmp69_ = _tmp64_; if (_tmp69_) { ValaDataType* _tmp70_; ValaTypeSymbol* _tmp71_; ValaTypeSymbol* _tmp72_; ValaStruct* _tmp73_; ValaStruct* st; gboolean _tmp74_ = FALSE; ValaStruct* _tmp75_; gboolean _tmp78_; gboolean _tmp85_ = FALSE; ValaStruct* _tmp86_; gboolean _tmp91_; _tmp70_ = type; _tmp71_ = vala_data_type_get_data_type (_tmp70_); _tmp72_ = _tmp71_; _tmp73_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp72_) ? ((ValaStruct*) _tmp72_) : NULL); st = _tmp73_; _tmp75_ = st; if (_tmp75_ != NULL) { ValaStruct* _tmp76_; gboolean _tmp77_ = FALSE; _tmp76_ = st; _tmp77_ = vala_struct_is_simple_type (_tmp76_); _tmp74_ = _tmp77_; } else { _tmp74_ = FALSE; } _tmp78_ = _tmp74_; if (_tmp78_) { ValaCCodeFunctionCall* _tmp79_; ValaCCodeExpression* _tmp80_; _tmp79_ = ccall; _tmp80_ = cvar; vala_ccode_function_call_add_argument (_tmp79_, _tmp80_); } else { ValaCCodeFunctionCall* _tmp81_; ValaCCodeExpression* _tmp82_; ValaCCodeUnaryExpression* _tmp83_; ValaCCodeUnaryExpression* _tmp84_; _tmp81_ = ccall; _tmp82_ = cvar; _tmp83_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp82_); _tmp84_ = _tmp83_; vala_ccode_function_call_add_argument (_tmp81_, (ValaCCodeExpression*) _tmp84_); _vala_ccode_node_unref0 (_tmp84_); } _tmp86_ = self->gvalue_type; if (_tmp86_ != NULL) { ValaDataType* _tmp87_; ValaTypeSymbol* _tmp88_; ValaTypeSymbol* _tmp89_; ValaStruct* _tmp90_; _tmp87_ = type; _tmp88_ = vala_data_type_get_data_type (_tmp87_); _tmp89_ = _tmp88_; _tmp90_ = self->gvalue_type; _tmp85_ = _tmp89_ == VALA_TYPESYMBOL (_tmp90_); } else { _tmp85_ = FALSE; } _tmp91_ = _tmp85_; if (_tmp91_) { ValaCCodeIdentifier* _tmp92_; ValaCCodeIdentifier* _tmp93_; ValaCCodeFunctionCall* _tmp94_; ValaCCodeFunctionCall* _tmp95_; ValaCCodeFunctionCall* cisvalid; ValaCCodeFunctionCall* _tmp96_; ValaCCodeExpression* _tmp97_; ValaCCodeUnaryExpression* _tmp98_; ValaCCodeUnaryExpression* _tmp99_; ValaCCodeCommaExpression* _tmp100_; ValaCCodeCommaExpression* ccomma; ValaCCodeCommaExpression* _tmp101_; ValaCCodeFunctionCall* _tmp102_; ValaCCodeCommaExpression* _tmp103_; ValaCCodeConstant* _tmp104_; ValaCCodeConstant* _tmp105_; ValaCCodeFunctionCall* _tmp106_; ValaCCodeCommaExpression* _tmp107_; ValaCCodeConstant* _tmp108_; ValaCCodeConstant* _tmp109_; ValaCCodeConditionalExpression* _tmp110_; ValaCCodeExpression* _tmp111_; _tmp92_ = vala_ccode_identifier_new ("G_IS_VALUE"); _tmp93_ = _tmp92_; _tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_); _tmp95_ = _tmp94_; _vala_ccode_node_unref0 (_tmp93_); cisvalid = _tmp95_; _tmp96_ = cisvalid; _tmp97_ = cvar; _tmp98_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp97_); _tmp99_ = _tmp98_; vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp99_); _vala_ccode_node_unref0 (_tmp99_); _tmp100_ = vala_ccode_comma_expression_new (); ccomma = _tmp100_; _tmp101_ = ccomma; _tmp102_ = ccall; vala_ccode_comma_expression_append_expression (_tmp101_, (ValaCCodeExpression*) _tmp102_); _tmp103_ = ccomma; _tmp104_ = vala_ccode_constant_new ("NULL"); _tmp105_ = _tmp104_; vala_ccode_comma_expression_append_expression (_tmp103_, (ValaCCodeExpression*) _tmp105_); _vala_ccode_node_unref0 (_tmp105_); _tmp106_ = cisvalid; _tmp107_ = ccomma; _tmp108_ = vala_ccode_constant_new ("NULL"); _tmp109_ = _tmp108_; _tmp110_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp106_, (ValaCCodeExpression*) _tmp107_, (ValaCCodeExpression*) _tmp109_); _tmp111_ = (ValaCCodeExpression*) _tmp110_; _vala_ccode_node_unref0 (_tmp109_); result = _tmp111_; _vala_ccode_node_unref0 (ccomma); _vala_ccode_node_unref0 (cisvalid); _vala_code_node_unref0 (st); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (cvar); _vala_code_node_unref0 (type); return result; } else { result = (ValaCCodeExpression*) ccall; _vala_code_node_unref0 (st); _vala_ccode_node_unref0 (cvar); _vala_code_node_unref0 (type); return result; } _vala_code_node_unref0 (st); } _tmp114_ = ccall; _tmp115_ = vala_ccode_function_call_get_call (_tmp114_); _tmp116_ = _tmp115_; if (VALA_IS_CCODE_IDENTIFIER (_tmp116_)) { ValaDataType* _tmp117_; _tmp117_ = type; _tmp113_ = !VALA_IS_ARRAY_TYPE (_tmp117_); } else { _tmp113_ = FALSE; } _tmp118_ = _tmp113_; if (_tmp118_) { gboolean _tmp119_; _tmp119_ = is_macro_definition; _tmp112_ = !_tmp119_; } else { _tmp112_ = FALSE; } _tmp120_ = _tmp112_; if (_tmp120_) { ValaCCodeFunctionCall* _tmp121_; ValaCCodeExpression* _tmp122_; ValaCCodeExpression* _tmp123_; ValaCCodeIdentifier* _tmp124_; ValaCCodeIdentifier* freeid; ValaCCodeIdentifier* _tmp125_; const gchar* _tmp126_; const gchar* _tmp127_; gchar* _tmp128_ = NULL; gchar* free0_func; const gchar* _tmp129_; gboolean _tmp130_ = FALSE; const gchar* _tmp145_; ValaCCodeIdentifier* _tmp146_; ValaCCodeIdentifier* _tmp147_; ValaCCodeFunctionCall* _tmp148_; ValaCCodeFunctionCall* _tmp149_; ValaCCodeExpression* _tmp150_; _tmp121_ = ccall; _tmp122_ = vala_ccode_function_call_get_call (_tmp121_); _tmp123_ = _tmp122_; _tmp124_ = _vala_ccode_node_ref0 (VALA_CCODE_IDENTIFIER (_tmp123_)); freeid = _tmp124_; _tmp125_ = freeid; _tmp126_ = vala_ccode_identifier_get_name (_tmp125_); _tmp127_ = _tmp126_; _tmp128_ = g_strdup_printf ("_%s0", _tmp127_); free0_func = _tmp128_; _tmp129_ = free0_func; _tmp130_ = vala_ccode_base_module_add_wrapper (self, _tmp129_); if (_tmp130_) { ValaDataType* _tmp131_; ValaCCodeIdentifier* _tmp132_; ValaCCodeIdentifier* _tmp133_; ValaGLibValue* _tmp134_; ValaGLibValue* _tmp135_; ValaCCodeExpression* _tmp136_ = NULL; ValaCCodeExpression* _tmp137_; ValaCCodeExpression* macro; ValaCCodeFile* _tmp138_; const gchar* _tmp139_; gchar* _tmp140_ = NULL; gchar* _tmp141_; ValaCCodeExpression* _tmp142_; ValaCCodeMacroReplacement* _tmp143_; ValaCCodeMacroReplacement* _tmp144_; _tmp131_ = type; _tmp132_ = vala_ccode_identifier_new ("var"); _tmp133_ = _tmp132_; _tmp134_ = vala_glib_value_new (_tmp131_, (ValaCCodeExpression*) _tmp133_, TRUE); _tmp135_ = _tmp134_; _tmp136_ = vala_ccode_base_module_destroy_value (self, (ValaTargetValue*) _tmp135_, TRUE); _tmp137_ = _tmp136_; _vala_target_value_unref0 (_tmp135_); _vala_ccode_node_unref0 (_tmp133_); macro = _tmp137_; _tmp138_ = self->cfile; _tmp139_ = free0_func; _tmp140_ = g_strdup_printf ("%s(var)", _tmp139_); _tmp141_ = _tmp140_; _tmp142_ = macro; _tmp143_ = vala_ccode_macro_replacement_new_with_expression (_tmp141_, _tmp142_); _tmp144_ = _tmp143_; vala_ccode_file_add_type_declaration (_tmp138_, (ValaCCodeNode*) _tmp144_); _vala_ccode_node_unref0 (_tmp144_); _g_free0 (_tmp141_); _vala_ccode_node_unref0 (macro); } _tmp145_ = free0_func; _tmp146_ = vala_ccode_identifier_new (_tmp145_); _tmp147_ = _tmp146_; _tmp148_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp147_); _vala_ccode_node_unref0 (ccall); ccall = _tmp148_; _vala_ccode_node_unref0 (_tmp147_); _tmp149_ = ccall; _tmp150_ = cvar; vala_ccode_function_call_add_argument (_tmp149_, _tmp150_); result = (ValaCCodeExpression*) ccall; _g_free0 (free0_func); _vala_ccode_node_unref0 (freeid); _vala_ccode_node_unref0 (cvar); _vala_code_node_unref0 (type); return result; } _tmp151_ = cvar; _tmp152_ = vala_ccode_constant_new ("NULL"); _tmp153_ = _tmp152_; _tmp154_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, _tmp151_, (ValaCCodeExpression*) _tmp153_); _tmp155_ = _tmp154_; _vala_ccode_node_unref0 (_tmp153_); cisnull = _tmp155_; _tmp156_ = type; _tmp157_ = vala_data_type_get_type_parameter (_tmp156_); _tmp158_ = _tmp157_; if (_tmp158_ != NULL) { ValaDataType* _tmp159_; ValaTypeParameter* _tmp160_; ValaTypeParameter* _tmp161_; ValaSymbol* _tmp162_; ValaSymbol* _tmp163_; ValaSymbol* _tmp164_; ValaSymbol* parent; ValaSymbol* _tmp165_; ValaClass* _tmp166_; ValaClass* cl; gboolean _tmp167_ = FALSE; gboolean _tmp168_ = FALSE; gboolean _tmp169_ = FALSE; ValaSymbol* _tmp170_; gboolean _tmp172_; gboolean _tmp179_; gboolean _tmp181_; ValaDataType* _tmp183_; ValaCCodeExpression* _tmp184_ = NULL; ValaCCodeExpression* _tmp185_; ValaCCodeConstant* _tmp186_; ValaCCodeConstant* _tmp187_; ValaCCodeBinaryExpression* _tmp188_; ValaCCodeBinaryExpression* _tmp189_; ValaCCodeBinaryExpression* cunrefisnull; ValaCCodeBinaryExpression* _tmp190_; ValaCCodeBinaryExpression* _tmp191_; ValaCCodeBinaryExpression* _tmp192_; _tmp159_ = type; _tmp160_ = vala_data_type_get_type_parameter (_tmp159_); _tmp161_ = _tmp160_; _tmp162_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp161_); _tmp163_ = _tmp162_; _tmp164_ = _vala_code_node_ref0 (_tmp163_); parent = _tmp164_; _tmp165_ = parent; _tmp166_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp165_) ? ((ValaClass*) _tmp165_) : NULL); cl = _tmp166_; _tmp170_ = parent; if (!VALA_IS_METHOD (_tmp170_)) { ValaSymbol* _tmp171_; _tmp171_ = parent; _tmp169_ = !VALA_IS_OBJECT_TYPE_SYMBOL (_tmp171_); } else { _tmp169_ = FALSE; } _tmp172_ = _tmp169_; if (_tmp172_) { _tmp168_ = TRUE; } else { gboolean _tmp173_ = FALSE; ValaClass* _tmp174_; gboolean _tmp178_; _tmp174_ = cl; if (_tmp174_ != NULL) { ValaClass* _tmp175_; gboolean _tmp176_; gboolean _tmp177_; _tmp175_ = cl; _tmp176_ = vala_class_get_is_compact (_tmp175_); _tmp177_ = _tmp176_; _tmp173_ = _tmp177_; } else { _tmp173_ = FALSE; } _tmp178_ = _tmp173_; _tmp168_ = _tmp178_; } _tmp179_ = _tmp168_; if (_tmp179_) { _tmp167_ = TRUE; } else { ValaSymbol* _tmp180_; _tmp180_ = parent; _tmp167_ = VALA_IS_INTERFACE (_tmp180_); } _tmp181_ = _tmp167_; if (_tmp181_) { ValaCCodeConstant* _tmp182_; _tmp182_ = vala_ccode_constant_new ("NULL"); result = (ValaCCodeExpression*) _tmp182_; _vala_code_node_unref0 (cl); _vala_code_node_unref0 (parent); _vala_ccode_node_unref0 (cisnull); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (cvar); _vala_code_node_unref0 (type); return result; } _tmp183_ = type; _tmp184_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp183_, FALSE); _tmp185_ = _tmp184_; _tmp186_ = vala_ccode_constant_new ("NULL"); _tmp187_ = _tmp186_; _tmp188_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, _tmp185_, (ValaCCodeExpression*) _tmp187_); _tmp189_ = _tmp188_; _vala_ccode_node_unref0 (_tmp187_); _vala_ccode_node_unref0 (_tmp185_); cunrefisnull = _tmp189_; _tmp190_ = cisnull; _tmp191_ = cunrefisnull; _tmp192_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_OR, (ValaCCodeExpression*) _tmp190_, (ValaCCodeExpression*) _tmp191_); _vala_ccode_node_unref0 (cisnull); cisnull = _tmp192_; _vala_ccode_node_unref0 (cunrefisnull); _vala_code_node_unref0 (cl); _vala_code_node_unref0 (parent); } _tmp193_ = ccall; _tmp194_ = cvar; vala_ccode_function_call_add_argument (_tmp193_, _tmp194_); _tmp195_ = vala_ccode_comma_expression_new (); ccomma = _tmp195_; _tmp196_ = self->priv->_context; _tmp197_ = vala_code_context_get_profile (_tmp196_); _tmp198_ = _tmp197_; if (_tmp198_ == VALA_PROFILE_GOBJECT) { gboolean _tmp199_ = FALSE; gboolean _tmp200_ = FALSE; ValaDataType* _tmp201_; ValaTypeSymbol* _tmp202_; ValaTypeSymbol* _tmp203_; gboolean _tmp208_; gboolean _tmp231_; _tmp201_ = type; _tmp202_ = vala_data_type_get_data_type (_tmp201_); _tmp203_ = _tmp202_; if (_tmp203_ != NULL) { ValaDataType* _tmp204_; ValaTypeSymbol* _tmp205_; ValaTypeSymbol* _tmp206_; gboolean _tmp207_ = FALSE; _tmp204_ = type; _tmp205_ = vala_data_type_get_data_type (_tmp204_); _tmp206_ = _tmp205_; _tmp207_ = vala_ccode_base_module_is_reference_counting (_tmp206_); _tmp200_ = !_tmp207_; } else { _tmp200_ = FALSE; } _tmp208_ = _tmp200_; if (_tmp208_) { gboolean _tmp209_ = FALSE; gboolean _tmp210_ = FALSE; gboolean _tmp211_ = FALSE; ValaDataType* _tmp212_; ValaTypeSymbol* _tmp213_; ValaTypeSymbol* _tmp214_; ValaTypeSymbol* _tmp215_; gboolean _tmp220_; gboolean _tmp225_; gboolean _tmp230_; _tmp212_ = type; _tmp213_ = vala_data_type_get_data_type (_tmp212_); _tmp214_ = _tmp213_; _tmp215_ = self->gstringbuilder_type; if (_tmp214_ == _tmp215_) { _tmp211_ = TRUE; } else { ValaDataType* _tmp216_; ValaTypeSymbol* _tmp217_; ValaTypeSymbol* _tmp218_; ValaTypeSymbol* _tmp219_; _tmp216_ = type; _tmp217_ = vala_data_type_get_data_type (_tmp216_); _tmp218_ = _tmp217_; _tmp219_ = self->garray_type; _tmp211_ = _tmp218_ == _tmp219_; } _tmp220_ = _tmp211_; if (_tmp220_) { _tmp210_ = TRUE; } else { ValaDataType* _tmp221_; ValaTypeSymbol* _tmp222_; ValaTypeSymbol* _tmp223_; ValaTypeSymbol* _tmp224_; _tmp221_ = type; _tmp222_ = vala_data_type_get_data_type (_tmp221_); _tmp223_ = _tmp222_; _tmp224_ = self->gbytearray_type; _tmp210_ = _tmp223_ == _tmp224_; } _tmp225_ = _tmp210_; if (_tmp225_) { _tmp209_ = TRUE; } else { ValaDataType* _tmp226_; ValaTypeSymbol* _tmp227_; ValaTypeSymbol* _tmp228_; ValaTypeSymbol* _tmp229_; _tmp226_ = type; _tmp227_ = vala_data_type_get_data_type (_tmp226_); _tmp228_ = _tmp227_; _tmp229_ = self->gptrarray_type; _tmp209_ = _tmp228_ == _tmp229_; } _tmp230_ = _tmp209_; _tmp199_ = _tmp230_; } else { _tmp199_ = FALSE; } _tmp231_ = _tmp199_; if (_tmp231_) { ValaCCodeFunctionCall* _tmp232_; ValaCCodeConstant* _tmp233_; ValaCCodeConstant* _tmp234_; _tmp232_ = ccall; _tmp233_ = vala_ccode_constant_new ("TRUE"); _tmp234_ = _tmp233_; vala_ccode_function_call_add_argument (_tmp232_, (ValaCCodeExpression*) _tmp234_); _vala_ccode_node_unref0 (_tmp234_); } else { ValaDataType* _tmp235_; ValaTypeSymbol* _tmp236_; ValaTypeSymbol* _tmp237_; ValaTypeSymbol* _tmp238_; _tmp235_ = type; _tmp236_ = vala_data_type_get_data_type (_tmp235_); _tmp237_ = _tmp236_; _tmp238_ = self->gthreadpool_type; if (_tmp237_ == _tmp238_) { ValaCCodeFunctionCall* _tmp239_; ValaCCodeConstant* _tmp240_; ValaCCodeConstant* _tmp241_; ValaCCodeFunctionCall* _tmp242_; ValaCCodeConstant* _tmp243_; ValaCCodeConstant* _tmp244_; _tmp239_ = ccall; _tmp240_ = vala_ccode_constant_new ("FALSE"); _tmp241_ = _tmp240_; vala_ccode_function_call_add_argument (_tmp239_, (ValaCCodeExpression*) _tmp241_); _vala_ccode_node_unref0 (_tmp241_); _tmp242_ = ccall; _tmp243_ = vala_ccode_constant_new ("TRUE"); _tmp244_ = _tmp243_; vala_ccode_function_call_add_argument (_tmp242_, (ValaCCodeExpression*) _tmp244_); _vala_ccode_node_unref0 (_tmp244_); } else { ValaDataType* _tmp245_; _tmp245_ = type; if (VALA_IS_ARRAY_TYPE (_tmp245_)) { ValaDataType* _tmp246_; ValaArrayType* _tmp247_; ValaArrayType* array_type; ValaArrayType* _tmp248_; ValaDataType* _tmp249_; ValaDataType* _tmp250_; gboolean _tmp251_ = FALSE; _tmp246_ = type; _tmp247_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp246_)); array_type = _tmp247_; _tmp248_ = array_type; _tmp249_ = vala_array_type_get_element_type (_tmp248_); _tmp250_ = _tmp249_; _tmp251_ = vala_ccode_base_module_requires_destroy (self, _tmp250_); if (_tmp251_) { ValaCCodeExpression* csizeexpr; ValaTargetValue* _tmp252_; ValaList* _tmp253_; ValaCCodeExpression* _tmp268_; csizeexpr = NULL; _tmp252_ = value; _tmp253_ = VALA_GLIB_VALUE (_tmp252_)->array_length_cvalues; if (_tmp253_ != NULL) { ValaTargetValue* _tmp254_; ValaCCodeExpression* _tmp255_ = NULL; _tmp254_ = value; _tmp255_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp254_, -1); _vala_ccode_node_unref0 (csizeexpr); csizeexpr = _tmp255_; } else { ValaTargetValue* _tmp256_; gboolean _tmp257_ = FALSE; _tmp256_ = value; _tmp257_ = vala_ccode_base_module_get_array_null_terminated (self, _tmp256_); if (_tmp257_) { ValaCCodeIdentifier* _tmp258_; ValaCCodeIdentifier* _tmp259_; ValaCCodeFunctionCall* _tmp260_; ValaCCodeFunctionCall* _tmp261_; ValaCCodeFunctionCall* len_call; ValaCCodeFunctionCall* _tmp262_; ValaCCodeExpression* _tmp263_; ValaCCodeFunctionCall* _tmp264_; ValaCCodeExpression* _tmp265_; self->requires_array_length = TRUE; _tmp258_ = vala_ccode_identifier_new ("_vala_array_length"); _tmp259_ = _tmp258_; _tmp260_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp259_); _tmp261_ = _tmp260_; _vala_ccode_node_unref0 (_tmp259_); len_call = _tmp261_; _tmp262_ = len_call; _tmp263_ = cvar; vala_ccode_function_call_add_argument (_tmp262_, _tmp263_); _tmp264_ = len_call; _tmp265_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp264_); _vala_ccode_node_unref0 (csizeexpr); csizeexpr = _tmp265_; _vala_ccode_node_unref0 (len_call); } else { ValaTargetValue* _tmp266_; ValaCCodeExpression* _tmp267_ = NULL; _tmp266_ = value; _tmp267_ = vala_ccode_base_module_get_array_length_cexpr (self, _tmp266_); _vala_ccode_node_unref0 (csizeexpr); csizeexpr = _tmp267_; } } _tmp268_ = csizeexpr; if (_tmp268_ != NULL) { ValaArrayType* _tmp269_; ValaDataType* _tmp270_; ValaDataType* _tmp271_; ValaTypeSymbol* _tmp272_; ValaTypeSymbol* _tmp273_; ValaStruct* _tmp274_; ValaStruct* st; gboolean _tmp275_ = FALSE; ValaStruct* _tmp276_; gboolean _tmp282_; _tmp269_ = array_type; _tmp270_ = vala_array_type_get_element_type (_tmp269_); _tmp271_ = _tmp270_; _tmp272_ = vala_data_type_get_data_type (_tmp271_); _tmp273_ = _tmp272_; _tmp274_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp273_) ? ((ValaStruct*) _tmp273_) : NULL); st = _tmp274_; _tmp276_ = st; if (_tmp276_ != NULL) { ValaArrayType* _tmp277_; ValaDataType* _tmp278_; ValaDataType* _tmp279_; gboolean _tmp280_; gboolean _tmp281_; _tmp277_ = array_type; _tmp278_ = vala_array_type_get_element_type (_tmp277_); _tmp279_ = _tmp278_; _tmp280_ = vala_data_type_get_nullable (_tmp279_); _tmp281_ = _tmp280_; _tmp275_ = !_tmp281_; } else { _tmp275_ = FALSE; } _tmp282_ = _tmp275_; if (_tmp282_) { ValaCCodeFunctionCall* _tmp283_; ValaStruct* _tmp284_; gchar* _tmp285_ = NULL; gchar* _tmp286_; ValaCCodeIdentifier* _tmp287_; ValaCCodeIdentifier* _tmp288_; ValaCCodeFunctionCall* _tmp289_; ValaCCodeExpression* _tmp290_; _tmp283_ = ccall; _tmp284_ = st; _tmp285_ = vala_ccode_base_module_append_struct_array_free (self, _tmp284_); _tmp286_ = _tmp285_; _tmp287_ = vala_ccode_identifier_new (_tmp286_); _tmp288_ = _tmp287_; vala_ccode_function_call_set_call (_tmp283_, (ValaCCodeExpression*) _tmp288_); _vala_ccode_node_unref0 (_tmp288_); _g_free0 (_tmp286_); _tmp289_ = ccall; _tmp290_ = csizeexpr; vala_ccode_function_call_add_argument (_tmp289_, _tmp290_); } else { ValaCCodeFunctionCall* _tmp291_; ValaCCodeIdentifier* _tmp292_; ValaCCodeIdentifier* _tmp293_; ValaCCodeFunctionCall* _tmp294_; ValaCCodeExpression* _tmp295_; ValaCCodeFunctionCall* _tmp296_; ValaArrayType* _tmp297_; ValaDataType* _tmp298_; ValaDataType* _tmp299_; ValaCCodeExpression* _tmp300_ = NULL; ValaCCodeExpression* _tmp301_; ValaCCodeCastExpression* _tmp302_; ValaCCodeCastExpression* _tmp303_; self->requires_array_free = TRUE; _tmp291_ = ccall; _tmp292_ = vala_ccode_identifier_new ("_vala_array_free"); _tmp293_ = _tmp292_; vala_ccode_function_call_set_call (_tmp291_, (ValaCCodeExpression*) _tmp293_); _vala_ccode_node_unref0 (_tmp293_); _tmp294_ = ccall; _tmp295_ = csizeexpr; vala_ccode_function_call_add_argument (_tmp294_, _tmp295_); _tmp296_ = ccall; _tmp297_ = array_type; _tmp298_ = vala_array_type_get_element_type (_tmp297_); _tmp299_ = _tmp298_; _tmp300_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp299_, FALSE); _tmp301_ = _tmp300_; _tmp302_ = vala_ccode_cast_expression_new (_tmp301_, "GDestroyNotify"); _tmp303_ = _tmp302_; vala_ccode_function_call_add_argument (_tmp296_, (ValaCCodeExpression*) _tmp303_); _vala_ccode_node_unref0 (_tmp303_); _vala_ccode_node_unref0 (_tmp301_); } _vala_code_node_unref0 (st); } _vala_ccode_node_unref0 (csizeexpr); } _vala_code_node_unref0 (array_type); } } } } _tmp304_ = ccomma; _tmp305_ = ccall; vala_ccode_comma_expression_append_expression (_tmp304_, (ValaCCodeExpression*) _tmp305_); _tmp306_ = ccomma; _tmp307_ = vala_ccode_constant_new ("NULL"); _tmp308_ = _tmp307_; vala_ccode_comma_expression_append_expression (_tmp306_, (ValaCCodeExpression*) _tmp308_); _vala_ccode_node_unref0 (_tmp308_); _tmp309_ = cvar; _tmp310_ = ccomma; _tmp311_ = vala_ccode_assignment_new (_tmp309_, (ValaCCodeExpression*) _tmp310_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); cassign = _tmp311_; _tmp314_ = type; _tmp315_ = vala_data_type_get_data_type (_tmp314_); _tmp316_ = _tmp315_; if (_tmp316_ != NULL) { ValaDataType* _tmp317_; ValaTypeSymbol* _tmp318_; ValaTypeSymbol* _tmp319_; gboolean _tmp320_ = FALSE; _tmp317_ = type; _tmp318_ = vala_data_type_get_data_type (_tmp317_); _tmp319_ = _tmp318_; _tmp320_ = vala_ccode_base_module_is_reference_counting (_tmp319_); _tmp313_ = !_tmp320_; } else { _tmp313_ = FALSE; } _tmp321_ = _tmp313_; if (_tmp321_) { ValaDataType* _tmp322_; ValaTypeSymbol* _tmp323_; ValaTypeSymbol* _tmp324_; gchar* _tmp325_ = NULL; gchar* _tmp326_; _tmp322_ = type; _tmp323_ = vala_data_type_get_data_type (_tmp322_); _tmp324_ = _tmp323_; _tmp325_ = vala_ccode_base_module_get_ccode_free_function (_tmp324_); _tmp326_ = _tmp325_; _tmp312_ = g_strcmp0 (_tmp326_, "g_free") == 0; _g_free0 (_tmp326_); } else { _tmp312_ = FALSE; } _tmp327_ = _tmp312_; uses_gfree = _tmp327_; _tmp329_ = uses_gfree; if (_tmp329_) { _tmp328_ = TRUE; } else { ValaDataType* _tmp330_; _tmp330_ = type; _tmp328_ = VALA_IS_ARRAY_TYPE (_tmp330_); } _tmp331_ = _tmp328_; uses_gfree = _tmp331_; _tmp332_ = uses_gfree; if (_tmp332_) { result = (ValaCCodeExpression*) cassign; _vala_ccode_node_unref0 (ccomma); _vala_ccode_node_unref0 (cisnull); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (cvar); _vala_code_node_unref0 (type); return result; } _tmp333_ = cisnull; _tmp334_ = vala_ccode_constant_new ("NULL"); _tmp335_ = _tmp334_; _tmp336_ = cassign; _tmp337_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp333_, (ValaCCodeExpression*) _tmp335_, (ValaCCodeExpression*) _tmp336_); _tmp338_ = (ValaCCodeExpression*) _tmp337_; _vala_ccode_node_unref0 (_tmp335_); result = _tmp338_; _vala_ccode_node_unref0 (cassign); _vala_ccode_node_unref0 (ccomma); _vala_ccode_node_unref0 (cisnull); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (cvar); _vala_code_node_unref0 (type); return result; } ValaCCodeExpression* vala_ccode_base_module_destroy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->destroy_value (self, value, is_macro_definition); } static void vala_ccode_base_module_real_visit_end_full_expression (ValaCodeVisitor* base, ValaExpression* expr) { ValaCCodeBaseModule * self; ValaArrayList* _tmp0_; ValaArrayList* _tmp1_; gint _tmp2_; gint _tmp3_; ValaExpression* _tmp4_; ValaCodeNode* _tmp5_; ValaCodeNode* _tmp6_; ValaLocalVariable* _tmp7_; ValaLocalVariable* local_decl; gboolean _tmp8_ = FALSE; ValaLocalVariable* _tmp9_; gboolean _tmp15_; ValaArrayList* _tmp40_; ValaArrayList* _tmp41_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp1_ = _tmp0_; _tmp2_ = vala_collection_get_size ((ValaCollection*) _tmp1_); _tmp3_ = _tmp2_; if (_tmp3_ == 0) { return; } _tmp4_ = expr; _tmp5_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp4_); _tmp6_ = _tmp5_; _tmp7_ = _vala_code_node_ref0 (VALA_IS_LOCAL_VARIABLE (_tmp6_) ? ((ValaLocalVariable*) _tmp6_) : NULL); local_decl = _tmp7_; _tmp9_ = local_decl; if (_tmp9_ != NULL) { ValaLocalVariable* _tmp10_; ValaLocalVariable* _tmp11_; ValaExpression* _tmp12_; ValaExpression* _tmp13_; gboolean _tmp14_ = FALSE; _tmp10_ = local_decl; _tmp11_ = local_decl; _tmp12_ = vala_variable_get_initializer ((ValaVariable*) _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp10_, _tmp13_); _tmp8_ = _tmp14_; } else { _tmp8_ = FALSE; } _tmp15_ = _tmp8_; if (!_tmp15_) { ValaExpression* _tmp16_; ValaExpression* _tmp17_; ValaTargetValue* _tmp18_; ValaTargetValue* _tmp19_; ValaExpression* _tmp20_; ValaTargetValue* _tmp21_ = NULL; ValaTargetValue* _tmp22_; _tmp16_ = expr; _tmp17_ = expr; _tmp18_ = vala_expression_get_target_value (_tmp17_); _tmp19_ = _tmp18_; _tmp20_ = expr; _tmp21_ = vala_ccode_base_module_store_temp_value (self, _tmp19_, (ValaCodeNode*) _tmp20_, NULL); _tmp22_ = _tmp21_; vala_expression_set_target_value (_tmp16_, _tmp22_); _vala_target_value_unref0 (_tmp22_); } { ValaArrayList* _tmp23_; ValaArrayList* _tmp24_; ValaArrayList* _tmp25_; ValaArrayList* _value_list; ValaArrayList* _tmp26_; gint _tmp27_; gint _tmp28_; gint _value_size; gint _value_index; _tmp23_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp24_ = _tmp23_; _tmp25_ = _vala_iterable_ref0 (_tmp24_); _value_list = _tmp25_; _tmp26_ = _value_list; _tmp27_ = vala_collection_get_size ((ValaCollection*) _tmp26_); _tmp28_ = _tmp27_; _value_size = _tmp28_; _value_index = -1; while (TRUE) { gint _tmp29_; gint _tmp30_; gint _tmp31_; ValaArrayList* _tmp32_; gint _tmp33_; gpointer _tmp34_ = NULL; ValaTargetValue* value; ValaCCodeFunction* _tmp35_; ValaCCodeFunction* _tmp36_; ValaTargetValue* _tmp37_; ValaCCodeExpression* _tmp38_ = NULL; ValaCCodeExpression* _tmp39_; _tmp29_ = _value_index; _value_index = _tmp29_ + 1; _tmp30_ = _value_index; _tmp31_ = _value_size; if (!(_tmp30_ < _tmp31_)) { break; } _tmp32_ = _value_list; _tmp33_ = _value_index; _tmp34_ = vala_list_get ((ValaList*) _tmp32_, _tmp33_); value = (ValaTargetValue*) _tmp34_; _tmp35_ = vala_ccode_base_module_get_ccode (self); _tmp36_ = _tmp35_; _tmp37_ = value; _tmp38_ = vala_ccode_base_module_destroy_value (self, _tmp37_, FALSE); _tmp39_ = _tmp38_; vala_ccode_function_add_expression (_tmp36_, _tmp39_); _vala_ccode_node_unref0 (_tmp39_); _vala_target_value_unref0 (value); } _vala_iterable_unref0 (_value_list); } _tmp40_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp41_ = _tmp40_; vala_collection_clear ((ValaCollection*) _tmp41_); _vala_code_node_unref0 (local_decl); } void vala_ccode_base_module_emit_temp_var (ValaCCodeBaseModule* self, ValaLocalVariable* local) { gboolean _tmp0_ = FALSE; ValaLocalVariable* _tmp1_; const gchar* _tmp2_; const gchar* _tmp3_; gboolean _tmp4_ = FALSE; gboolean _tmp8_; gboolean init; gboolean _tmp9_ = FALSE; g_return_if_fail (self != NULL); g_return_if_fail (local != NULL); _tmp1_ = local; _tmp2_ = vala_symbol_get_name ((ValaSymbol*) _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = g_str_has_prefix (_tmp3_, "*"); if (_tmp4_) { _tmp0_ = TRUE; } else { ValaLocalVariable* _tmp5_; gboolean _tmp6_; gboolean _tmp7_; _tmp5_ = local; _tmp6_ = vala_local_variable_get_no_init (_tmp5_); _tmp7_ = _tmp6_; _tmp0_ = _tmp7_; } _tmp8_ = _tmp0_; init = !_tmp8_; _tmp9_ = vala_ccode_base_module_is_in_coroutine (self); if (_tmp9_) { ValaCCodeStruct* _tmp10_; ValaLocalVariable* _tmp11_; ValaDataType* _tmp12_; ValaDataType* _tmp13_; gchar* _tmp14_ = NULL; gchar* _tmp15_; ValaLocalVariable* _tmp16_; const gchar* _tmp17_; const gchar* _tmp18_; gboolean _tmp19_; _tmp10_ = self->closure_struct; _tmp11_ = local; _tmp12_ = vala_variable_get_variable_type ((ValaVariable*) _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = local; _tmp17_ = vala_symbol_get_name ((ValaSymbol*) _tmp16_); _tmp18_ = _tmp17_; vala_ccode_struct_add_field (_tmp10_, _tmp15_, _tmp18_, NULL); _g_free0 (_tmp15_); _tmp19_ = init; if (_tmp19_) { ValaLocalVariable* _tmp20_; ValaDataType* _tmp21_; ValaDataType* _tmp22_; ValaCCodeExpression* _tmp23_ = NULL; ValaCCodeExpression* initializer; ValaCCodeExpression* _tmp24_; _tmp20_ = local; _tmp21_ = vala_variable_get_variable_type ((ValaVariable*) _tmp20_); _tmp22_ = _tmp21_; _tmp23_ = vala_ccode_base_module_default_value_for_type (self, _tmp22_, FALSE); initializer = _tmp23_; _tmp24_ = initializer; if (_tmp24_ == NULL) { ValaCCodeFile* _tmp25_; ValaCCodeIdentifier* _tmp26_; ValaCCodeIdentifier* _tmp27_; ValaCCodeFunctionCall* _tmp28_; ValaCCodeFunctionCall* _tmp29_; ValaCCodeFunctionCall* memset_call; ValaCCodeFunctionCall* _tmp30_; ValaLocalVariable* _tmp31_; const gchar* _tmp32_; const gchar* _tmp33_; ValaCCodeExpression* _tmp34_ = NULL; ValaCCodeExpression* _tmp35_; ValaCCodeUnaryExpression* _tmp36_; ValaCCodeUnaryExpression* _tmp37_; ValaCCodeFunctionCall* _tmp38_; ValaCCodeConstant* _tmp39_; ValaCCodeConstant* _tmp40_; ValaCCodeFunctionCall* _tmp41_; ValaLocalVariable* _tmp42_; ValaDataType* _tmp43_; ValaDataType* _tmp44_; gchar* _tmp45_ = NULL; gchar* _tmp46_; gchar* _tmp47_ = NULL; gchar* _tmp48_; ValaCCodeIdentifier* _tmp49_; ValaCCodeIdentifier* _tmp50_; ValaCCodeFunction* _tmp51_; ValaCCodeFunction* _tmp52_; ValaCCodeFunctionCall* _tmp53_; _tmp25_ = self->cfile; vala_ccode_file_add_include (_tmp25_, "string.h", FALSE); _tmp26_ = vala_ccode_identifier_new ("memset"); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_); _tmp29_ = _tmp28_; _vala_ccode_node_unref0 (_tmp27_); memset_call = _tmp29_; _tmp30_ = memset_call; _tmp31_ = local; _tmp32_ = vala_symbol_get_name ((ValaSymbol*) _tmp31_); _tmp33_ = _tmp32_; _tmp34_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp33_); _tmp35_ = _tmp34_; _tmp36_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp35_); _tmp37_ = _tmp36_; vala_ccode_function_call_add_argument (_tmp30_, (ValaCCodeExpression*) _tmp37_); _vala_ccode_node_unref0 (_tmp37_); _vala_ccode_node_unref0 (_tmp35_); _tmp38_ = memset_call; _tmp39_ = vala_ccode_constant_new ("0"); _tmp40_ = _tmp39_; vala_ccode_function_call_add_argument (_tmp38_, (ValaCCodeExpression*) _tmp40_); _vala_ccode_node_unref0 (_tmp40_); _tmp41_ = memset_call; _tmp42_ = local; _tmp43_ = vala_variable_get_variable_type ((ValaVariable*) _tmp42_); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp44_); _tmp46_ = _tmp45_; _tmp47_ = g_strdup_printf ("sizeof (%s)", _tmp46_); _tmp48_ = _tmp47_; _tmp49_ = vala_ccode_identifier_new (_tmp48_); _tmp50_ = _tmp49_; vala_ccode_function_call_add_argument (_tmp41_, (ValaCCodeExpression*) _tmp50_); _vala_ccode_node_unref0 (_tmp50_); _g_free0 (_tmp48_); _g_free0 (_tmp46_); _tmp51_ = vala_ccode_base_module_get_ccode (self); _tmp52_ = _tmp51_; _tmp53_ = memset_call; vala_ccode_function_add_expression (_tmp52_, (ValaCCodeExpression*) _tmp53_); _vala_ccode_node_unref0 (memset_call); } else { ValaCCodeFunction* _tmp54_; ValaCCodeFunction* _tmp55_; ValaLocalVariable* _tmp56_; const gchar* _tmp57_; const gchar* _tmp58_; ValaCCodeExpression* _tmp59_ = NULL; ValaCCodeExpression* _tmp60_; ValaCCodeExpression* _tmp61_; _tmp54_ = vala_ccode_base_module_get_ccode (self); _tmp55_ = _tmp54_; _tmp56_ = local; _tmp57_ = vala_symbol_get_name ((ValaSymbol*) _tmp56_); _tmp58_ = _tmp57_; _tmp59_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp58_); _tmp60_ = _tmp59_; _tmp61_ = initializer; vala_ccode_function_add_assignment (_tmp55_, _tmp60_, _tmp61_); _vala_ccode_node_unref0 (_tmp60_); } _vala_ccode_node_unref0 (initializer); } } else { ValaLocalVariable* _tmp62_; const gchar* _tmp63_; const gchar* _tmp64_; ValaLocalVariable* _tmp65_; ValaDataType* _tmp66_; ValaDataType* _tmp67_; gchar* _tmp68_ = NULL; gchar* _tmp69_; ValaCCodeVariableDeclarator* _tmp70_; ValaCCodeVariableDeclarator* _tmp71_; ValaCCodeVariableDeclarator* cvar; gboolean _tmp72_; ValaCCodeFunction* _tmp80_; ValaCCodeFunction* _tmp81_; ValaLocalVariable* _tmp82_; ValaDataType* _tmp83_; ValaDataType* _tmp84_; gchar* _tmp85_ = NULL; gchar* _tmp86_; ValaCCodeVariableDeclarator* _tmp87_; _tmp62_ = local; _tmp63_ = vala_symbol_get_name ((ValaSymbol*) _tmp62_); _tmp64_ = _tmp63_; _tmp65_ = local; _tmp66_ = vala_variable_get_variable_type ((ValaVariable*) _tmp65_); _tmp67_ = _tmp66_; _tmp68_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp67_); _tmp69_ = _tmp68_; _tmp70_ = vala_ccode_variable_declarator_new (_tmp64_, NULL, _tmp69_); _tmp71_ = _tmp70_; _g_free0 (_tmp69_); cvar = _tmp71_; _tmp72_ = init; if (_tmp72_) { ValaCCodeVariableDeclarator* _tmp73_; ValaLocalVariable* _tmp74_; ValaDataType* _tmp75_; ValaDataType* _tmp76_; ValaCCodeExpression* _tmp77_ = NULL; ValaCCodeExpression* _tmp78_; ValaCCodeVariableDeclarator* _tmp79_; _tmp73_ = cvar; _tmp74_ = local; _tmp75_ = vala_variable_get_variable_type ((ValaVariable*) _tmp74_); _tmp76_ = _tmp75_; _tmp77_ = vala_ccode_base_module_default_value_for_type (self, _tmp76_, TRUE); _tmp78_ = _tmp77_; vala_ccode_variable_declarator_set_initializer (_tmp73_, _tmp78_); _vala_ccode_node_unref0 (_tmp78_); _tmp79_ = cvar; vala_ccode_variable_declarator_set_init0 (_tmp79_, TRUE); } _tmp80_ = vala_ccode_base_module_get_ccode (self); _tmp81_ = _tmp80_; _tmp82_ = local; _tmp83_ = vala_variable_get_variable_type ((ValaVariable*) _tmp82_); _tmp84_ = _tmp83_; _tmp85_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp84_); _tmp86_ = _tmp85_; _tmp87_ = cvar; vala_ccode_function_add_declaration (_tmp81_, _tmp86_, (ValaCCodeDeclarator*) _tmp87_, 0); _g_free0 (_tmp86_); _vala_ccode_node_unref0 (cvar); } } static void vala_ccode_base_module_real_visit_expression_statement (ValaCodeVisitor* base, ValaExpressionStatement* stmt) { ValaCCodeBaseModule * self; ValaExpressionStatement* _tmp0_; ValaExpression* _tmp1_; ValaExpression* _tmp2_; gboolean _tmp3_; gboolean _tmp4_; gboolean _tmp23_ = FALSE; ValaExpressionStatement* _tmp24_; gboolean _tmp25_; gboolean _tmp26_; gboolean _tmp32_; ValaArrayList* _tmp36_; ValaArrayList* _tmp37_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (stmt != NULL); _tmp0_ = stmt; _tmp1_ = vala_expression_statement_get_expression (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_code_node_get_error ((ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; if (_tmp4_) { ValaExpressionStatement* _tmp5_; _tmp5_ = stmt; vala_code_node_set_error ((ValaCodeNode*) _tmp5_, TRUE); return; } { ValaArrayList* _tmp6_; ValaArrayList* _tmp7_; ValaArrayList* _tmp8_; ValaArrayList* _value_list; ValaArrayList* _tmp9_; gint _tmp10_; gint _tmp11_; gint _value_size; gint _value_index; _tmp6_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp7_ = _tmp6_; _tmp8_ = _vala_iterable_ref0 (_tmp7_); _value_list = _tmp8_; _tmp9_ = _value_list; _tmp10_ = vala_collection_get_size ((ValaCollection*) _tmp9_); _tmp11_ = _tmp10_; _value_size = _tmp11_; _value_index = -1; while (TRUE) { gint _tmp12_; gint _tmp13_; gint _tmp14_; ValaArrayList* _tmp15_; gint _tmp16_; gpointer _tmp17_ = NULL; ValaTargetValue* value; ValaCCodeFunction* _tmp18_; ValaCCodeFunction* _tmp19_; ValaTargetValue* _tmp20_; ValaCCodeExpression* _tmp21_ = NULL; ValaCCodeExpression* _tmp22_; _tmp12_ = _value_index; _value_index = _tmp12_ + 1; _tmp13_ = _value_index; _tmp14_ = _value_size; if (!(_tmp13_ < _tmp14_)) { break; } _tmp15_ = _value_list; _tmp16_ = _value_index; _tmp17_ = vala_list_get ((ValaList*) _tmp15_, _tmp16_); value = (ValaTargetValue*) _tmp17_; _tmp18_ = vala_ccode_base_module_get_ccode (self); _tmp19_ = _tmp18_; _tmp20_ = value; _tmp21_ = vala_ccode_base_module_destroy_value (self, _tmp20_, FALSE); _tmp22_ = _tmp21_; vala_ccode_function_add_expression (_tmp19_, _tmp22_); _vala_ccode_node_unref0 (_tmp22_); _vala_target_value_unref0 (value); } _vala_iterable_unref0 (_value_list); } _tmp24_ = stmt; _tmp25_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp24_); _tmp26_ = _tmp25_; if (_tmp26_) { ValaExpressionStatement* _tmp27_; ValaExpression* _tmp28_; ValaExpression* _tmp29_; gboolean _tmp30_; gboolean _tmp31_; _tmp27_ = stmt; _tmp28_ = vala_expression_statement_get_expression (_tmp27_); _tmp29_ = _tmp28_; _tmp30_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp29_); _tmp31_ = _tmp30_; _tmp23_ = _tmp31_; } else { _tmp23_ = FALSE; } _tmp32_ = _tmp23_; if (_tmp32_) { ValaExpressionStatement* _tmp33_; ValaExpression* _tmp34_; ValaExpression* _tmp35_; _tmp33_ = stmt; _tmp34_ = vala_expression_statement_get_expression (_tmp33_); _tmp35_ = _tmp34_; vala_ccode_base_module_add_simple_check (self, (ValaCodeNode*) _tmp35_, FALSE); } _tmp36_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp37_ = _tmp36_; vala_collection_clear ((ValaCollection*) _tmp37_); } static void vala_ccode_base_module_real_append_scope_free (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at) { ValaSymbol* _tmp0_; ValaBlock* _tmp1_; ValaBlock* b; ValaBlock* _tmp2_; ValaList* _tmp3_ = NULL; ValaList* local_vars; ValaBlock* _tmp43_; gboolean _tmp44_; gboolean _tmp45_; g_return_if_fail (sym != NULL); _tmp0_ = sym; _tmp1_ = _vala_code_node_ref0 (VALA_BLOCK (_tmp0_)); b = _tmp1_; _tmp2_ = b; _tmp3_ = vala_block_get_local_variables (_tmp2_); local_vars = _tmp3_; { ValaList* _tmp4_; gint _tmp5_; gint _tmp6_; gint i; _tmp4_ = local_vars; _tmp5_ = vala_collection_get_size ((ValaCollection*) _tmp4_); _tmp6_ = _tmp5_; i = _tmp6_ - 1; { gboolean _tmp7_; _tmp7_ = TRUE; while (TRUE) { gboolean _tmp8_; gint _tmp10_; ValaList* _tmp11_; gint _tmp12_; gpointer _tmp13_ = NULL; ValaLocalVariable* local; gboolean _tmp14_ = FALSE; gboolean _tmp15_ = FALSE; gboolean _tmp16_ = FALSE; gboolean _tmp17_ = FALSE; ValaLocalVariable* _tmp18_; gboolean _tmp19_; gboolean _tmp20_; gboolean _tmp24_; gboolean _tmp28_; gboolean _tmp32_; gboolean _tmp37_; _tmp8_ = _tmp7_; if (!_tmp8_) { gint _tmp9_; _tmp9_ = i; i = _tmp9_ - 1; } _tmp7_ = FALSE; _tmp10_ = i; if (!(_tmp10_ >= 0)) { break; } _tmp11_ = local_vars; _tmp12_ = i; _tmp13_ = vala_list_get (_tmp11_, _tmp12_); local = (ValaLocalVariable*) _tmp13_; _tmp18_ = local; _tmp19_ = vala_code_node_get_unreachable ((ValaCodeNode*) _tmp18_); _tmp20_ = _tmp19_; if (!_tmp20_) { ValaLocalVariable* _tmp21_; gboolean _tmp22_; gboolean _tmp23_; _tmp21_ = local; _tmp22_ = vala_symbol_get_active ((ValaSymbol*) _tmp21_); _tmp23_ = _tmp22_; _tmp17_ = _tmp23_; } else { _tmp17_ = FALSE; } _tmp24_ = _tmp17_; if (_tmp24_) { ValaLocalVariable* _tmp25_; gboolean _tmp26_; gboolean _tmp27_; _tmp25_ = local; _tmp26_ = vala_local_variable_get_floating (_tmp25_); _tmp27_ = _tmp26_; _tmp16_ = !_tmp27_; } else { _tmp16_ = FALSE; } _tmp28_ = _tmp16_; if (_tmp28_) { ValaLocalVariable* _tmp29_; gboolean _tmp30_; gboolean _tmp31_; _tmp29_ = local; _tmp30_ = vala_local_variable_get_captured (_tmp29_); _tmp31_ = _tmp30_; _tmp15_ = !_tmp31_; } else { _tmp15_ = FALSE; } _tmp32_ = _tmp15_; if (_tmp32_) { ValaLocalVariable* _tmp33_; ValaDataType* _tmp34_; ValaDataType* _tmp35_; gboolean _tmp36_ = FALSE; _tmp33_ = local; _tmp34_ = vala_variable_get_variable_type ((ValaVariable*) _tmp33_); _tmp35_ = _tmp34_; _tmp36_ = vala_ccode_base_module_requires_destroy (self, _tmp35_); _tmp14_ = _tmp36_; } else { _tmp14_ = FALSE; } _tmp37_ = _tmp14_; if (_tmp37_) { ValaCCodeFunction* _tmp38_; ValaCCodeFunction* _tmp39_; ValaLocalVariable* _tmp40_; ValaCCodeExpression* _tmp41_ = NULL; ValaCCodeExpression* _tmp42_; _tmp38_ = vala_ccode_base_module_get_ccode (self); _tmp39_ = _tmp38_; _tmp40_ = local; _tmp41_ = vala_ccode_base_module_destroy_local (self, _tmp40_); _tmp42_ = _tmp41_; vala_ccode_function_add_expression (_tmp39_, _tmp42_); _vala_ccode_node_unref0 (_tmp42_); } _vala_code_node_unref0 (local); } } } _tmp43_ = b; _tmp44_ = vala_block_get_captured (_tmp43_); _tmp45_ = _tmp44_; if (_tmp45_) { ValaBlock* _tmp46_; gint _tmp47_ = 0; gint block_id; gint _tmp48_; gchar* _tmp49_ = NULL; gchar* _tmp50_; ValaCCodeIdentifier* _tmp51_; ValaCCodeIdentifier* _tmp52_; ValaCCodeFunctionCall* _tmp53_; ValaCCodeFunctionCall* _tmp54_; ValaCCodeFunctionCall* data_unref; ValaCCodeFunctionCall* _tmp55_; gint _tmp56_; gchar* _tmp57_ = NULL; gchar* _tmp58_; ValaCCodeExpression* _tmp59_ = NULL; ValaCCodeExpression* _tmp60_; ValaCCodeFunction* _tmp61_; ValaCCodeFunction* _tmp62_; ValaCCodeFunctionCall* _tmp63_; ValaCCodeFunction* _tmp64_; ValaCCodeFunction* _tmp65_; gint _tmp66_; gchar* _tmp67_ = NULL; gchar* _tmp68_; ValaCCodeExpression* _tmp69_ = NULL; ValaCCodeExpression* _tmp70_; ValaCCodeConstant* _tmp71_; ValaCCodeConstant* _tmp72_; _tmp46_ = b; _tmp47_ = vala_ccode_base_module_get_block_id (self, _tmp46_); block_id = _tmp47_; _tmp48_ = block_id; _tmp49_ = g_strdup_printf ("block%d_data_unref", _tmp48_); _tmp50_ = _tmp49_; _tmp51_ = vala_ccode_identifier_new (_tmp50_); _tmp52_ = _tmp51_; _tmp53_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp52_); _tmp54_ = _tmp53_; _vala_ccode_node_unref0 (_tmp52_); _g_free0 (_tmp50_); data_unref = _tmp54_; _tmp55_ = data_unref; _tmp56_ = block_id; _tmp57_ = g_strdup_printf ("_data%d_", _tmp56_); _tmp58_ = _tmp57_; _tmp59_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp58_); _tmp60_ = _tmp59_; vala_ccode_function_call_add_argument (_tmp55_, _tmp60_); _vala_ccode_node_unref0 (_tmp60_); _g_free0 (_tmp58_); _tmp61_ = vala_ccode_base_module_get_ccode (self); _tmp62_ = _tmp61_; _tmp63_ = data_unref; vala_ccode_function_add_expression (_tmp62_, (ValaCCodeExpression*) _tmp63_); _tmp64_ = vala_ccode_base_module_get_ccode (self); _tmp65_ = _tmp64_; _tmp66_ = block_id; _tmp67_ = g_strdup_printf ("_data%d_", _tmp66_); _tmp68_ = _tmp67_; _tmp69_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp68_); _tmp70_ = _tmp69_; _tmp71_ = vala_ccode_constant_new ("NULL"); _tmp72_ = _tmp71_; vala_ccode_function_add_assignment (_tmp65_, _tmp70_, (ValaCCodeExpression*) _tmp72_); _vala_ccode_node_unref0 (_tmp72_); _vala_ccode_node_unref0 (_tmp70_); _g_free0 (_tmp68_); _vala_ccode_node_unref0 (data_unref); } _vala_iterable_unref0 (local_vars); _vala_code_node_unref0 (b); } void vala_ccode_base_module_append_scope_free (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->append_scope_free (self, sym, stop_at); } void vala_ccode_base_module_append_local_free (ValaCCodeBaseModule* self, ValaSymbol* sym, gboolean stop_at_loop, ValaCodeNode* stop_at) { ValaSymbol* _tmp0_; ValaBlock* _tmp1_; ValaBlock* b; ValaSymbol* _tmp2_; ValaCodeNode* _tmp3_; gboolean _tmp4_; gboolean _tmp18_ = FALSE; ValaCodeNode* _tmp19_; gboolean _tmp24_; ValaSymbol* _tmp25_; ValaSymbol* _tmp26_; ValaSymbol* _tmp27_; g_return_if_fail (self != NULL); g_return_if_fail (sym != NULL); _tmp0_ = sym; _tmp1_ = _vala_code_node_ref0 (VALA_BLOCK (_tmp0_)); b = _tmp1_; _tmp2_ = sym; _tmp3_ = stop_at; vala_ccode_base_module_append_scope_free (self, _tmp2_, _tmp3_); _tmp4_ = stop_at_loop; if (_tmp4_) { gboolean _tmp5_ = FALSE; gboolean _tmp6_ = FALSE; ValaBlock* _tmp7_; ValaCodeNode* _tmp8_; ValaCodeNode* _tmp9_; gboolean _tmp13_; gboolean _tmp17_; _tmp7_ = b; _tmp8_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp7_); _tmp9_ = _tmp8_; if (VALA_IS_LOOP (_tmp9_)) { _tmp6_ = TRUE; } else { ValaBlock* _tmp10_; ValaCodeNode* _tmp11_; ValaCodeNode* _tmp12_; _tmp10_ = b; _tmp11_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp10_); _tmp12_ = _tmp11_; _tmp6_ = VALA_IS_FOREACH_STATEMENT (_tmp12_); } _tmp13_ = _tmp6_; if (_tmp13_) { _tmp5_ = TRUE; } else { ValaBlock* _tmp14_; ValaCodeNode* _tmp15_; ValaCodeNode* _tmp16_; _tmp14_ = b; _tmp15_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp14_); _tmp16_ = _tmp15_; _tmp5_ = VALA_IS_SWITCH_STATEMENT (_tmp16_); } _tmp17_ = _tmp5_; if (_tmp17_) { _vala_code_node_unref0 (b); return; } } _tmp19_ = stop_at; if (_tmp19_ != NULL) { ValaBlock* _tmp20_; ValaCodeNode* _tmp21_; ValaCodeNode* _tmp22_; ValaCodeNode* _tmp23_; _tmp20_ = b; _tmp21_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp20_); _tmp22_ = _tmp21_; _tmp23_ = stop_at; _tmp18_ = _tmp22_ == _tmp23_; } else { _tmp18_ = FALSE; } _tmp24_ = _tmp18_; if (_tmp24_) { _vala_code_node_unref0 (b); return; } _tmp25_ = sym; _tmp26_ = vala_symbol_get_parent_symbol (_tmp25_); _tmp27_ = _tmp26_; if (VALA_IS_BLOCK (_tmp27_)) { ValaSymbol* _tmp28_; ValaSymbol* _tmp29_; ValaSymbol* _tmp30_; gboolean _tmp31_; ValaCodeNode* _tmp32_; _tmp28_ = sym; _tmp29_ = vala_symbol_get_parent_symbol (_tmp28_); _tmp30_ = _tmp29_; _tmp31_ = stop_at_loop; _tmp32_ = stop_at; vala_ccode_base_module_append_local_free (self, _tmp30_, _tmp31_, _tmp32_); } else { ValaSymbol* _tmp33_; ValaSymbol* _tmp34_; ValaSymbol* _tmp35_; _tmp33_ = sym; _tmp34_ = vala_symbol_get_parent_symbol (_tmp33_); _tmp35_ = _tmp34_; if (VALA_IS_METHOD (_tmp35_)) { ValaSymbol* _tmp36_; ValaSymbol* _tmp37_; ValaSymbol* _tmp38_; _tmp36_ = sym; _tmp37_ = vala_symbol_get_parent_symbol (_tmp36_); _tmp38_ = _tmp37_; vala_ccode_base_module_append_param_free (self, VALA_METHOD (_tmp38_)); } else { ValaSymbol* _tmp39_; ValaSymbol* _tmp40_; ValaSymbol* _tmp41_; _tmp39_ = sym; _tmp40_ = vala_symbol_get_parent_symbol (_tmp39_); _tmp41_ = _tmp40_; if (VALA_IS_PROPERTY_ACCESSOR (_tmp41_)) { ValaSymbol* _tmp42_; ValaSymbol* _tmp43_; ValaSymbol* _tmp44_; ValaPropertyAccessor* _tmp45_; ValaPropertyAccessor* acc; gboolean _tmp46_ = FALSE; ValaPropertyAccessor* _tmp47_; ValaParameter* _tmp48_; ValaParameter* _tmp49_; gboolean _tmp56_; _tmp42_ = sym; _tmp43_ = vala_symbol_get_parent_symbol (_tmp42_); _tmp44_ = _tmp43_; _tmp45_ = _vala_code_node_ref0 (VALA_PROPERTY_ACCESSOR (_tmp44_)); acc = _tmp45_; _tmp47_ = acc; _tmp48_ = vala_property_accessor_get_value_parameter (_tmp47_); _tmp49_ = _tmp48_; if (_tmp49_ != NULL) { ValaPropertyAccessor* _tmp50_; ValaParameter* _tmp51_; ValaParameter* _tmp52_; ValaDataType* _tmp53_; ValaDataType* _tmp54_; gboolean _tmp55_ = FALSE; _tmp50_ = acc; _tmp51_ = vala_property_accessor_get_value_parameter (_tmp50_); _tmp52_ = _tmp51_; _tmp53_ = vala_variable_get_variable_type ((ValaVariable*) _tmp52_); _tmp54_ = _tmp53_; _tmp55_ = vala_ccode_base_module_requires_destroy (self, _tmp54_); _tmp46_ = _tmp55_; } else { _tmp46_ = FALSE; } _tmp56_ = _tmp46_; if (_tmp56_) { ValaCCodeFunction* _tmp57_; ValaCCodeFunction* _tmp58_; ValaPropertyAccessor* _tmp59_; ValaParameter* _tmp60_; ValaParameter* _tmp61_; ValaCCodeExpression* _tmp62_ = NULL; ValaCCodeExpression* _tmp63_; _tmp57_ = vala_ccode_base_module_get_ccode (self); _tmp58_ = _tmp57_; _tmp59_ = acc; _tmp60_ = vala_property_accessor_get_value_parameter (_tmp59_); _tmp61_ = _tmp60_; _tmp62_ = vala_ccode_base_module_destroy_parameter (self, _tmp61_); _tmp63_ = _tmp62_; vala_ccode_function_add_expression (_tmp58_, _tmp63_); _vala_ccode_node_unref0 (_tmp63_); } _vala_code_node_unref0 (acc); } } } _vala_code_node_unref0 (b); } static void vala_ccode_base_module_append_param_free (ValaCCodeBaseModule* self, ValaMethod* m) { g_return_if_fail (self != NULL); g_return_if_fail (m != NULL); { ValaMethod* _tmp0_; ValaList* _tmp1_ = NULL; ValaList* _param_list; ValaList* _tmp2_; gint _tmp3_; gint _tmp4_; gint _param_size; gint _param_index; _tmp0_ = m; _tmp1_ = vala_method_get_parameters (_tmp0_); _param_list = _tmp1_; _tmp2_ = _param_list; _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_); _tmp4_ = _tmp3_; _param_size = _tmp4_; _param_index = -1; while (TRUE) { gint _tmp5_; gint _tmp6_; gint _tmp7_; ValaList* _tmp8_; gint _tmp9_; gpointer _tmp10_ = NULL; ValaParameter* param; gboolean _tmp11_ = FALSE; gboolean _tmp12_ = FALSE; gboolean _tmp13_ = FALSE; ValaParameter* _tmp14_; gboolean _tmp15_; gboolean _tmp16_; gboolean _tmp20_; gboolean _tmp25_; gboolean _tmp29_; _tmp5_ = _param_index; _param_index = _tmp5_ + 1; _tmp6_ = _param_index; _tmp7_ = _param_size; if (!(_tmp6_ < _tmp7_)) { break; } _tmp8_ = _param_list; _tmp9_ = _param_index; _tmp10_ = vala_list_get (_tmp8_, _tmp9_); param = (ValaParameter*) _tmp10_; _tmp14_ = param; _tmp15_ = vala_parameter_get_captured (_tmp14_); _tmp16_ = _tmp15_; if (!_tmp16_) { ValaParameter* _tmp17_; gboolean _tmp18_; gboolean _tmp19_; _tmp17_ = param; _tmp18_ = vala_parameter_get_ellipsis (_tmp17_); _tmp19_ = _tmp18_; _tmp13_ = !_tmp19_; } else { _tmp13_ = FALSE; } _tmp20_ = _tmp13_; if (_tmp20_) { ValaParameter* _tmp21_; ValaDataType* _tmp22_; ValaDataType* _tmp23_; gboolean _tmp24_ = FALSE; _tmp21_ = param; _tmp22_ = vala_variable_get_variable_type ((ValaVariable*) _tmp21_); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_base_module_requires_destroy (self, _tmp23_); _tmp12_ = _tmp24_; } else { _tmp12_ = FALSE; } _tmp25_ = _tmp12_; if (_tmp25_) { ValaParameter* _tmp26_; ValaParameterDirection _tmp27_; ValaParameterDirection _tmp28_; _tmp26_ = param; _tmp27_ = vala_parameter_get_direction (_tmp26_); _tmp28_ = _tmp27_; _tmp11_ = _tmp28_ == VALA_PARAMETER_DIRECTION_IN; } else { _tmp11_ = FALSE; } _tmp29_ = _tmp11_; if (_tmp29_) { ValaCCodeFunction* _tmp30_; ValaCCodeFunction* _tmp31_; ValaParameter* _tmp32_; ValaCCodeExpression* _tmp33_ = NULL; ValaCCodeExpression* _tmp34_; _tmp30_ = vala_ccode_base_module_get_ccode (self); _tmp31_ = _tmp30_; _tmp32_ = param; _tmp33_ = vala_ccode_base_module_destroy_parameter (self, _tmp32_); _tmp34_ = _tmp33_; vala_ccode_function_add_expression (_tmp31_, _tmp34_); _vala_ccode_node_unref0 (_tmp34_); } _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } } gboolean vala_ccode_base_module_variable_accessible_in_finally (ValaCCodeBaseModule* self, ValaLocalVariable* local) { gboolean result = FALSE; ValaTryStatement* _tmp0_; ValaTryStatement* _tmp1_; ValaSymbol* _tmp2_; ValaSymbol* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* sym; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (local != NULL, FALSE); _tmp0_ = vala_ccode_base_module_get_current_try (self); _tmp1_ = _tmp0_; if (_tmp1_ == NULL) { result = FALSE; return result; } _tmp2_ = vala_ccode_base_module_get_current_symbol (self); _tmp3_ = _tmp2_; _tmp4_ = _vala_code_node_ref0 (_tmp3_); sym = _tmp4_; while (TRUE) { gboolean _tmp5_ = FALSE; gboolean _tmp6_ = FALSE; ValaSymbol* _tmp7_; gboolean _tmp9_; gboolean _tmp18_; gboolean _tmp19_ = FALSE; gboolean _tmp20_ = FALSE; ValaSymbol* _tmp21_; ValaCodeNode* _tmp22_; ValaCodeNode* _tmp23_; gboolean _tmp29_; gboolean _tmp42_; ValaSymbol* _tmp43_; ValaSymbol* _tmp44_; ValaSymbol* _tmp45_; ValaSymbol* _tmp46_; _tmp7_ = sym; if (VALA_IS_METHOD (_tmp7_)) { _tmp6_ = TRUE; } else { ValaSymbol* _tmp8_; _tmp8_ = sym; _tmp6_ = VALA_IS_PROPERTY_ACCESSOR (_tmp8_); } _tmp9_ = _tmp6_; if (!_tmp9_) { ValaSymbol* _tmp10_; ValaScope* _tmp11_; ValaScope* _tmp12_; ValaLocalVariable* _tmp13_; const gchar* _tmp14_; const gchar* _tmp15_; ValaSymbol* _tmp16_ = NULL; ValaSymbol* _tmp17_; _tmp10_ = sym; _tmp11_ = vala_symbol_get_scope (_tmp10_); _tmp12_ = _tmp11_; _tmp13_ = local; _tmp14_ = vala_symbol_get_name ((ValaSymbol*) _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = vala_scope_lookup (_tmp12_, _tmp15_); _tmp17_ = _tmp16_; _tmp5_ = _tmp17_ == NULL; _vala_code_node_unref0 (_tmp17_); } else { _tmp5_ = FALSE; } _tmp18_ = _tmp5_; if (!_tmp18_) { break; } _tmp21_ = sym; _tmp22_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp21_); _tmp23_ = _tmp22_; if (VALA_IS_TRY_STATEMENT (_tmp23_)) { ValaSymbol* _tmp24_; ValaCodeNode* _tmp25_; ValaCodeNode* _tmp26_; ValaBlock* _tmp27_; ValaBlock* _tmp28_; _tmp24_ = sym; _tmp25_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp24_); _tmp26_ = _tmp25_; _tmp27_ = vala_try_statement_get_finally_body (VALA_TRY_STATEMENT (_tmp26_)); _tmp28_ = _tmp27_; _tmp20_ = _tmp28_ != NULL; } else { _tmp20_ = FALSE; } _tmp29_ = _tmp20_; if (_tmp29_) { _tmp19_ = TRUE; } else { gboolean _tmp30_ = FALSE; ValaSymbol* _tmp31_; ValaCodeNode* _tmp32_; ValaCodeNode* _tmp33_; gboolean _tmp41_; _tmp31_ = sym; _tmp32_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp31_); _tmp33_ = _tmp32_; if (VALA_IS_CATCH_CLAUSE (_tmp33_)) { ValaSymbol* _tmp34_; ValaCodeNode* _tmp35_; ValaCodeNode* _tmp36_; ValaCodeNode* _tmp37_; ValaCodeNode* _tmp38_; ValaBlock* _tmp39_; ValaBlock* _tmp40_; _tmp34_ = sym; _tmp35_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp34_); _tmp36_ = _tmp35_; _tmp37_ = vala_code_node_get_parent_node (_tmp36_); _tmp38_ = _tmp37_; _tmp39_ = vala_try_statement_get_finally_body (VALA_TRY_STATEMENT (_tmp38_)); _tmp40_ = _tmp39_; _tmp30_ = _tmp40_ != NULL; } else { _tmp30_ = FALSE; } _tmp41_ = _tmp30_; _tmp19_ = _tmp41_; } _tmp42_ = _tmp19_; if (_tmp42_) { result = TRUE; _vala_code_node_unref0 (sym); return result; } _tmp43_ = sym; _tmp44_ = vala_symbol_get_parent_symbol (_tmp43_); _tmp45_ = _tmp44_; _tmp46_ = _vala_code_node_ref0 (_tmp45_); _vala_code_node_unref0 (sym); sym = _tmp46_; } result = FALSE; _vala_code_node_unref0 (sym); return result; } void vala_ccode_base_module_return_out_parameter (ValaCCodeBaseModule* self, ValaParameter* param) { ValaParameter* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaDelegateType* _tmp3_; ValaDelegateType* delegate_type; ValaParameter* _tmp4_; ValaTargetValue* _tmp5_ = NULL; ValaTargetValue* value; gboolean _tmp6_ = FALSE; gboolean old_coroutine; ValaMethod* _tmp7_; ValaMethod* _tmp8_; ValaCCodeFunction* _tmp9_; ValaCCodeFunction* _tmp10_; ValaParameter* _tmp11_; const gchar* _tmp12_; const gchar* _tmp13_; ValaCCodeExpression* _tmp14_ = NULL; ValaCCodeExpression* _tmp15_; ValaCCodeFunction* _tmp16_; ValaCCodeFunction* _tmp17_; ValaParameter* _tmp18_; const gchar* _tmp19_; const gchar* _tmp20_; ValaCCodeExpression* _tmp21_ = NULL; ValaCCodeExpression* _tmp22_; ValaCCodeUnaryExpression* _tmp23_; ValaCCodeUnaryExpression* _tmp24_; ValaTargetValue* _tmp25_; ValaCCodeExpression* _tmp26_ = NULL; ValaCCodeExpression* _tmp27_; gboolean _tmp28_ = FALSE; ValaDelegateType* _tmp29_; gboolean _tmp35_; ValaParameter* _tmp69_; ValaDataType* _tmp70_; ValaDataType* _tmp71_; gboolean _tmp72_ = FALSE; ValaCCodeFunction* _tmp85_; ValaCCodeFunction* _tmp86_; ValaParameter* _tmp87_; ValaDataType* _tmp88_; ValaDataType* _tmp89_; ValaArrayType* _tmp90_; ValaArrayType* array_type; gboolean _tmp91_ = FALSE; gboolean _tmp92_ = FALSE; ValaArrayType* _tmp93_; gboolean _tmp97_; gboolean _tmp100_; ValaMethod* _tmp132_; ValaMethod* _tmp133_; gboolean _tmp134_; g_return_if_fail (self != NULL); g_return_if_fail (param != NULL); _tmp0_ = param; _tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp2_) ? ((ValaDelegateType*) _tmp2_) : NULL); delegate_type = _tmp3_; _tmp4_ = param; _tmp5_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp4_); value = _tmp5_; _tmp6_ = vala_ccode_base_module_is_in_coroutine (self); old_coroutine = _tmp6_; _tmp7_ = vala_ccode_base_module_get_current_method (self); _tmp8_ = _tmp7_; vala_method_set_coroutine (_tmp8_, FALSE); _tmp9_ = vala_ccode_base_module_get_ccode (self); _tmp10_ = _tmp9_; _tmp11_ = param; _tmp12_ = vala_symbol_get_name ((ValaSymbol*) _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp13_); _tmp15_ = _tmp14_; vala_ccode_function_open_if (_tmp10_, _tmp15_); _vala_ccode_node_unref0 (_tmp15_); _tmp16_ = vala_ccode_base_module_get_ccode (self); _tmp17_ = _tmp16_; _tmp18_ = param; _tmp19_ = vala_symbol_get_name ((ValaSymbol*) _tmp18_); _tmp20_ = _tmp19_; _tmp21_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp20_); _tmp22_ = _tmp21_; _tmp23_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp22_); _tmp24_ = _tmp23_; _tmp25_ = value; _tmp26_ = vala_ccode_base_module_get_cvalue_ (self, _tmp25_); _tmp27_ = _tmp26_; vala_ccode_function_add_assignment (_tmp17_, (ValaCCodeExpression*) _tmp24_, _tmp27_); _vala_ccode_node_unref0 (_tmp27_); _vala_ccode_node_unref0 (_tmp24_); _vala_ccode_node_unref0 (_tmp22_); _tmp29_ = delegate_type; if (_tmp29_ != NULL) { ValaDelegateType* _tmp30_; ValaDelegate* _tmp31_; ValaDelegate* _tmp32_; gboolean _tmp33_; gboolean _tmp34_; _tmp30_ = delegate_type; _tmp31_ = vala_delegate_type_get_delegate_symbol (_tmp30_); _tmp32_ = _tmp31_; _tmp33_ = vala_delegate_get_has_target (_tmp32_); _tmp34_ = _tmp33_; _tmp28_ = _tmp34_; } else { _tmp28_ = FALSE; } _tmp35_ = _tmp28_; if (_tmp35_) { ValaCCodeFunction* _tmp36_; ValaCCodeFunction* _tmp37_; ValaParameter* _tmp38_; const gchar* _tmp39_; const gchar* _tmp40_; gchar* _tmp41_ = NULL; gchar* _tmp42_; ValaCCodeExpression* _tmp43_ = NULL; ValaCCodeExpression* _tmp44_; ValaCCodeUnaryExpression* _tmp45_; ValaCCodeUnaryExpression* _tmp46_; ValaTargetValue* _tmp47_; ValaCCodeExpression* _tmp48_ = NULL; ValaCCodeExpression* _tmp49_; ValaDelegateType* _tmp50_; gboolean _tmp51_; gboolean _tmp52_; _tmp36_ = vala_ccode_base_module_get_ccode (self); _tmp37_ = _tmp36_; _tmp38_ = param; _tmp39_ = vala_symbol_get_name ((ValaSymbol*) _tmp38_); _tmp40_ = _tmp39_; _tmp41_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp40_); _tmp42_ = _tmp41_; _tmp43_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp42_); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp44_); _tmp46_ = _tmp45_; _tmp47_ = value; _tmp48_ = vala_ccode_base_module_get_delegate_target_cvalue (self, _tmp47_); _tmp49_ = _tmp48_; vala_ccode_function_add_assignment (_tmp37_, (ValaCCodeExpression*) _tmp46_, _tmp49_); _vala_ccode_node_unref0 (_tmp49_); _vala_ccode_node_unref0 (_tmp46_); _vala_ccode_node_unref0 (_tmp44_); _g_free0 (_tmp42_); _tmp50_ = delegate_type; _tmp51_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp50_); _tmp52_ = _tmp51_; if (_tmp52_) { ValaCCodeFunction* _tmp53_; ValaCCodeFunction* _tmp54_; ValaParameter* _tmp55_; const gchar* _tmp56_; const gchar* _tmp57_; gchar* _tmp58_ = NULL; gchar* _tmp59_; ValaCCodeExpression* _tmp60_ = NULL; ValaCCodeExpression* _tmp61_; ValaCCodeUnaryExpression* _tmp62_; ValaCCodeUnaryExpression* _tmp63_; ValaParameter* _tmp64_; ValaTargetValue* _tmp65_ = NULL; ValaTargetValue* _tmp66_; ValaCCodeExpression* _tmp67_ = NULL; ValaCCodeExpression* _tmp68_; _tmp53_ = vala_ccode_base_module_get_ccode (self); _tmp54_ = _tmp53_; _tmp55_ = param; _tmp56_ = vala_symbol_get_name ((ValaSymbol*) _tmp55_); _tmp57_ = _tmp56_; _tmp58_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp57_); _tmp59_ = _tmp58_; _tmp60_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp59_); _tmp61_ = _tmp60_; _tmp62_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp61_); _tmp63_ = _tmp62_; _tmp64_ = param; _tmp65_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp64_); _tmp66_ = _tmp65_; _tmp67_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp66_); _tmp68_ = _tmp67_; vala_ccode_function_add_assignment (_tmp54_, (ValaCCodeExpression*) _tmp63_, _tmp68_); _vala_ccode_node_unref0 (_tmp68_); _vala_target_value_unref0 (_tmp66_); _vala_ccode_node_unref0 (_tmp63_); _vala_ccode_node_unref0 (_tmp61_); _g_free0 (_tmp59_); } } _tmp69_ = param; _tmp70_ = vala_variable_get_variable_type ((ValaVariable*) _tmp69_); _tmp71_ = _tmp70_; _tmp72_ = vala_data_type_is_disposable (_tmp71_); if (_tmp72_) { ValaCCodeFunction* _tmp73_; ValaCCodeFunction* _tmp74_; ValaMethod* _tmp75_; ValaMethod* _tmp76_; gboolean _tmp77_; ValaCCodeFunction* _tmp78_; ValaCCodeFunction* _tmp79_; ValaParameter* _tmp80_; ValaCCodeExpression* _tmp81_ = NULL; ValaCCodeExpression* _tmp82_; ValaMethod* _tmp83_; ValaMethod* _tmp84_; _tmp73_ = vala_ccode_base_module_get_ccode (self); _tmp74_ = _tmp73_; vala_ccode_function_add_else (_tmp74_); _tmp75_ = vala_ccode_base_module_get_current_method (self); _tmp76_ = _tmp75_; _tmp77_ = old_coroutine; vala_method_set_coroutine (_tmp76_, _tmp77_); _tmp78_ = vala_ccode_base_module_get_ccode (self); _tmp79_ = _tmp78_; _tmp80_ = param; _tmp81_ = vala_ccode_base_module_destroy_parameter (self, _tmp80_); _tmp82_ = _tmp81_; vala_ccode_function_add_expression (_tmp79_, _tmp82_); _vala_ccode_node_unref0 (_tmp82_); _tmp83_ = vala_ccode_base_module_get_current_method (self); _tmp84_ = _tmp83_; vala_method_set_coroutine (_tmp84_, FALSE); } _tmp85_ = vala_ccode_base_module_get_ccode (self); _tmp86_ = _tmp85_; vala_ccode_function_close (_tmp86_); _tmp87_ = param; _tmp88_ = vala_variable_get_variable_type ((ValaVariable*) _tmp87_); _tmp89_ = _tmp88_; _tmp90_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp89_) ? ((ValaArrayType*) _tmp89_) : NULL); array_type = _tmp90_; _tmp93_ = array_type; if (_tmp93_ != NULL) { ValaArrayType* _tmp94_; gboolean _tmp95_; gboolean _tmp96_; _tmp94_ = array_type; _tmp95_ = vala_array_type_get_fixed_length (_tmp94_); _tmp96_ = _tmp95_; _tmp92_ = !_tmp96_; } else { _tmp92_ = FALSE; } _tmp97_ = _tmp92_; if (_tmp97_) { ValaParameter* _tmp98_; gboolean _tmp99_ = FALSE; _tmp98_ = param; _tmp99_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp98_); _tmp91_ = _tmp99_; } else { _tmp91_ = FALSE; } _tmp100_ = _tmp91_; if (_tmp100_) { { gint dim; dim = 1; { gboolean _tmp101_; _tmp101_ = TRUE; while (TRUE) { gboolean _tmp102_; gint _tmp104_; ValaArrayType* _tmp105_; gint _tmp106_; gint _tmp107_; ValaCCodeFunction* _tmp108_; ValaCCodeFunction* _tmp109_; ValaParameter* _tmp110_; gint _tmp111_; gchar* _tmp112_ = NULL; gchar* _tmp113_; ValaCCodeExpression* _tmp114_ = NULL; ValaCCodeExpression* _tmp115_; ValaCCodeFunction* _tmp116_; ValaCCodeFunction* _tmp117_; ValaParameter* _tmp118_; gint _tmp119_; gchar* _tmp120_ = NULL; gchar* _tmp121_; ValaCCodeExpression* _tmp122_ = NULL; ValaCCodeExpression* _tmp123_; ValaCCodeUnaryExpression* _tmp124_; ValaCCodeUnaryExpression* _tmp125_; ValaTargetValue* _tmp126_; gint _tmp127_; ValaCCodeExpression* _tmp128_ = NULL; ValaCCodeExpression* _tmp129_; ValaCCodeFunction* _tmp130_; ValaCCodeFunction* _tmp131_; _tmp102_ = _tmp101_; if (!_tmp102_) { gint _tmp103_; _tmp103_ = dim; dim = _tmp103_ + 1; } _tmp101_ = FALSE; _tmp104_ = dim; _tmp105_ = array_type; _tmp106_ = vala_array_type_get_rank (_tmp105_); _tmp107_ = _tmp106_; if (!(_tmp104_ <= _tmp107_)) { break; } _tmp108_ = vala_ccode_base_module_get_ccode (self); _tmp109_ = _tmp108_; _tmp110_ = param; _tmp111_ = dim; _tmp112_ = vala_ccode_base_module_get_parameter_array_length_cname (self, _tmp110_, _tmp111_); _tmp113_ = _tmp112_; _tmp114_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp113_); _tmp115_ = _tmp114_; vala_ccode_function_open_if (_tmp109_, _tmp115_); _vala_ccode_node_unref0 (_tmp115_); _g_free0 (_tmp113_); _tmp116_ = vala_ccode_base_module_get_ccode (self); _tmp117_ = _tmp116_; _tmp118_ = param; _tmp119_ = dim; _tmp120_ = vala_ccode_base_module_get_parameter_array_length_cname (self, _tmp118_, _tmp119_); _tmp121_ = _tmp120_; _tmp122_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp121_); _tmp123_ = _tmp122_; _tmp124_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp123_); _tmp125_ = _tmp124_; _tmp126_ = value; _tmp127_ = dim; _tmp128_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp126_, _tmp127_); _tmp129_ = _tmp128_; vala_ccode_function_add_assignment (_tmp117_, (ValaCCodeExpression*) _tmp125_, _tmp129_); _vala_ccode_node_unref0 (_tmp129_); _vala_ccode_node_unref0 (_tmp125_); _vala_ccode_node_unref0 (_tmp123_); _g_free0 (_tmp121_); _tmp130_ = vala_ccode_base_module_get_ccode (self); _tmp131_ = _tmp130_; vala_ccode_function_close (_tmp131_); } } } } _tmp132_ = vala_ccode_base_module_get_current_method (self); _tmp133_ = _tmp132_; _tmp134_ = old_coroutine; vala_method_set_coroutine (_tmp133_, _tmp134_); _vala_code_node_unref0 (array_type); _vala_target_value_unref0 (value); _vala_code_node_unref0 (delegate_type); } static void vala_ccode_base_module_real_visit_return_statement (ValaCodeVisitor* base, ValaReturnStatement* stmt) { ValaCCodeBaseModule * self; ValaSymbol* return_expression_symbol; ValaReturnStatement* _tmp0_; ValaExpression* _tmp1_; ValaExpression* _tmp2_; gboolean _tmp17_ = FALSE; gboolean _tmp18_ = FALSE; gboolean _tmp19_ = FALSE; ValaMethod* _tmp20_; ValaMethod* _tmp21_; gboolean _tmp25_; gboolean _tmp28_; gboolean _tmp31_; ValaReturnStatement* _tmp135_; ValaExpression* _tmp136_; ValaExpression* _tmp137_; ValaSymbol* _tmp155_; ValaSymbol* _tmp156_; ValaMethod* _tmp157_; ValaMethod* _tmp158_; gboolean _tmp172_ = FALSE; ValaMethod* _tmp173_; ValaMethod* _tmp174_; gboolean _tmp179_; gboolean _tmp196_ = FALSE; ValaSymbol* _tmp224_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (stmt != NULL); return_expression_symbol = NULL; _tmp0_ = stmt; _tmp1_ = vala_return_statement_get_return_expression (_tmp0_); _tmp2_ = _tmp1_; if (_tmp2_ != NULL) { ValaReturnStatement* _tmp3_; ValaExpression* _tmp4_; ValaExpression* _tmp5_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; ValaLocalVariable* _tmp8_; ValaLocalVariable* local; gboolean _tmp9_ = FALSE; ValaLocalVariable* _tmp10_; gboolean _tmp14_; _tmp3_ = stmt; _tmp4_ = vala_return_statement_get_return_expression (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = vala_expression_get_symbol_reference (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = _vala_code_node_ref0 (VALA_IS_LOCAL_VARIABLE (_tmp7_) ? ((ValaLocalVariable*) _tmp7_) : NULL); local = _tmp8_; _tmp10_ = local; if (_tmp10_ != NULL) { ValaLocalVariable* _tmp11_; gboolean _tmp12_; gboolean _tmp13_; _tmp11_ = local; _tmp12_ = vala_symbol_get_active ((ValaSymbol*) _tmp11_); _tmp13_ = _tmp12_; _tmp9_ = !_tmp13_; } else { _tmp9_ = FALSE; } _tmp14_ = _tmp9_; if (_tmp14_) { ValaLocalVariable* _tmp15_; ValaSymbol* _tmp16_; _tmp15_ = local; _tmp16_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp15_); _vala_code_node_unref0 (return_expression_symbol); return_expression_symbol = _tmp16_; } _vala_code_node_unref0 (local); } _tmp20_ = vala_ccode_base_module_get_current_method (self); _tmp21_ = _tmp20_; if (_tmp21_ != NULL) { ValaMethod* _tmp22_; ValaMethod* _tmp23_; gboolean _tmp24_ = FALSE; _tmp22_ = vala_ccode_base_module_get_current_method (self); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp23_); _tmp19_ = _tmp24_; } else { _tmp19_ = FALSE; } _tmp25_ = _tmp19_; if (_tmp25_) { _tmp18_ = TRUE; } else { ValaPropertyAccessor* _tmp26_; ValaPropertyAccessor* _tmp27_; _tmp26_ = vala_ccode_base_module_get_current_property_accessor (self); _tmp27_ = _tmp26_; _tmp18_ = _tmp27_ != NULL; } _tmp28_ = _tmp18_; if (_tmp28_) { ValaDataType* _tmp29_; ValaDataType* _tmp30_; _tmp29_ = vala_ccode_base_module_get_current_return_type (self); _tmp30_ = _tmp29_; _tmp17_ = VALA_IS_ARRAY_TYPE (_tmp30_); } else { _tmp17_ = FALSE; } _tmp31_ = _tmp17_; if (_tmp31_) { ValaReturnStatement* _tmp32_; ValaExpression* _tmp33_; ValaExpression* _tmp34_; ValaTargetValue* _tmp35_; ValaTargetValue* _tmp36_; ValaReturnStatement* _tmp37_; ValaTargetValue* _tmp38_ = NULL; ValaTargetValue* temp_value; ValaDataType* _tmp39_; ValaDataType* _tmp40_; ValaArrayType* _tmp41_; ValaArrayType* array_type; ValaReturnStatement* _tmp73_; ValaExpression* _tmp74_; ValaExpression* _tmp75_; ValaTargetValue* _tmp76_; _tmp32_ = stmt; _tmp33_ = vala_return_statement_get_return_expression (_tmp32_); _tmp34_ = _tmp33_; _tmp35_ = vala_expression_get_target_value (_tmp34_); _tmp36_ = _tmp35_; _tmp37_ = stmt; _tmp38_ = vala_ccode_base_module_store_temp_value (self, _tmp36_, (ValaCodeNode*) _tmp37_, NULL); temp_value = _tmp38_; _tmp39_ = vala_ccode_base_module_get_current_return_type (self); _tmp40_ = _tmp39_; _tmp41_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp40_)); array_type = _tmp41_; { gint dim; dim = 1; { gboolean _tmp42_; _tmp42_ = TRUE; while (TRUE) { gboolean _tmp43_; gint _tmp45_; ValaArrayType* _tmp46_; gint _tmp47_; gint _tmp48_; gint _tmp49_; gchar* _tmp50_ = NULL; gchar* _tmp51_; ValaCCodeExpression* _tmp52_ = NULL; ValaCCodeExpression* _tmp53_; ValaCCodeExpression* len_l; ValaTargetValue* _tmp54_; gint _tmp55_; ValaCCodeExpression* _tmp56_ = NULL; ValaCCodeExpression* len_r; gboolean _tmp57_ = FALSE; _tmp43_ = _tmp42_; if (!_tmp43_) { gint _tmp44_; _tmp44_ = dim; dim = _tmp44_ + 1; } _tmp42_ = FALSE; _tmp45_ = dim; _tmp46_ = array_type; _tmp47_ = vala_array_type_get_rank (_tmp46_); _tmp48_ = _tmp47_; if (!(_tmp45_ <= _tmp48_)) { break; } _tmp49_ = dim; _tmp50_ = vala_ccode_base_module_get_array_length_cname (self, "result", _tmp49_); _tmp51_ = _tmp50_; _tmp52_ = vala_ccode_base_module_get_result_cexpression (self, _tmp51_); _tmp53_ = _tmp52_; _g_free0 (_tmp51_); len_l = _tmp53_; _tmp54_ = temp_value; _tmp55_ = dim; _tmp56_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp54_, _tmp55_); len_r = _tmp56_; _tmp57_ = vala_ccode_base_module_is_in_coroutine (self); if (!_tmp57_) { ValaCCodeFunction* _tmp58_; ValaCCodeFunction* _tmp59_; ValaCCodeExpression* _tmp60_; ValaCCodeExpression* _tmp61_; ValaCCodeUnaryExpression* _tmp62_; ValaCCodeFunction* _tmp63_; ValaCCodeFunction* _tmp64_; ValaCCodeExpression* _tmp65_; ValaCCodeExpression* _tmp66_; ValaCCodeFunction* _tmp67_; ValaCCodeFunction* _tmp68_; _tmp58_ = vala_ccode_base_module_get_ccode (self); _tmp59_ = _tmp58_; _tmp60_ = len_l; vala_ccode_function_open_if (_tmp59_, _tmp60_); _tmp61_ = len_l; _tmp62_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp61_); _vala_ccode_node_unref0 (len_l); len_l = (ValaCCodeExpression*) _tmp62_; _tmp63_ = vala_ccode_base_module_get_ccode (self); _tmp64_ = _tmp63_; _tmp65_ = len_l; _tmp66_ = len_r; vala_ccode_function_add_assignment (_tmp64_, _tmp65_, _tmp66_); _tmp67_ = vala_ccode_base_module_get_ccode (self); _tmp68_ = _tmp67_; vala_ccode_function_close (_tmp68_); } else { ValaCCodeFunction* _tmp69_; ValaCCodeFunction* _tmp70_; ValaCCodeExpression* _tmp71_; ValaCCodeExpression* _tmp72_; _tmp69_ = vala_ccode_base_module_get_ccode (self); _tmp70_ = _tmp69_; _tmp71_ = len_l; _tmp72_ = len_r; vala_ccode_function_add_assignment (_tmp70_, _tmp71_, _tmp72_); } _vala_ccode_node_unref0 (len_r); _vala_ccode_node_unref0 (len_l); } } } _tmp73_ = stmt; _tmp74_ = vala_return_statement_get_return_expression (_tmp73_); _tmp75_ = _tmp74_; _tmp76_ = temp_value; vala_expression_set_target_value (_tmp75_, _tmp76_); _vala_code_node_unref0 (array_type); _vala_target_value_unref0 (temp_value); } else { gboolean _tmp77_ = FALSE; gboolean _tmp78_ = FALSE; ValaMethod* _tmp79_; ValaMethod* _tmp80_; gboolean _tmp83_; gboolean _tmp86_; _tmp79_ = vala_ccode_base_module_get_current_method (self); _tmp80_ = _tmp79_; if (_tmp80_ != NULL) { _tmp78_ = TRUE; } else { ValaPropertyAccessor* _tmp81_; ValaPropertyAccessor* _tmp82_; _tmp81_ = vala_ccode_base_module_get_current_property_accessor (self); _tmp82_ = _tmp81_; _tmp78_ = _tmp82_ != NULL; } _tmp83_ = _tmp78_; if (_tmp83_) { ValaDataType* _tmp84_; ValaDataType* _tmp85_; _tmp84_ = vala_ccode_base_module_get_current_return_type (self); _tmp85_ = _tmp84_; _tmp77_ = VALA_IS_DELEGATE_TYPE (_tmp85_); } else { _tmp77_ = FALSE; } _tmp86_ = _tmp77_; if (_tmp86_) { ValaDataType* _tmp87_; ValaDataType* _tmp88_; ValaDelegateType* _tmp89_; ValaDelegateType* delegate_type; ValaDelegateType* _tmp90_; ValaDelegate* _tmp91_; ValaDelegate* _tmp92_; gboolean _tmp93_; gboolean _tmp94_; _tmp87_ = vala_ccode_base_module_get_current_return_type (self); _tmp88_ = _tmp87_; _tmp89_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp88_)); delegate_type = _tmp89_; _tmp90_ = delegate_type; _tmp91_ = vala_delegate_type_get_delegate_symbol (_tmp90_); _tmp92_ = _tmp91_; _tmp93_ = vala_delegate_get_has_target (_tmp92_); _tmp94_ = _tmp93_; if (_tmp94_) { ValaReturnStatement* _tmp95_; ValaExpression* _tmp96_; ValaExpression* _tmp97_; ValaTargetValue* _tmp98_; ValaTargetValue* _tmp99_; ValaReturnStatement* _tmp100_; ValaTargetValue* _tmp101_ = NULL; ValaTargetValue* temp_value; gchar* _tmp102_ = NULL; gchar* _tmp103_; ValaCCodeExpression* _tmp104_ = NULL; ValaCCodeExpression* _tmp105_; ValaCCodeExpression* target_l; gboolean _tmp106_ = FALSE; ValaTargetValue* _tmp109_; ValaCCodeExpression* _tmp110_ = NULL; ValaCCodeExpression* target_r; ValaCCodeFunction* _tmp111_; ValaCCodeFunction* _tmp112_; ValaCCodeExpression* _tmp113_; ValaCCodeExpression* _tmp114_; ValaDelegateType* _tmp115_; gboolean _tmp116_; gboolean _tmp117_; ValaReturnStatement* _tmp131_; ValaExpression* _tmp132_; ValaExpression* _tmp133_; ValaTargetValue* _tmp134_; _tmp95_ = stmt; _tmp96_ = vala_return_statement_get_return_expression (_tmp95_); _tmp97_ = _tmp96_; _tmp98_ = vala_expression_get_target_value (_tmp97_); _tmp99_ = _tmp98_; _tmp100_ = stmt; _tmp101_ = vala_ccode_base_module_store_temp_value (self, _tmp99_, (ValaCodeNode*) _tmp100_, NULL); temp_value = _tmp101_; _tmp102_ = vala_ccode_base_module_get_delegate_target_cname (self, "result"); _tmp103_ = _tmp102_; _tmp104_ = vala_ccode_base_module_get_result_cexpression (self, _tmp103_); _tmp105_ = _tmp104_; _g_free0 (_tmp103_); target_l = _tmp105_; _tmp106_ = vala_ccode_base_module_is_in_coroutine (self); if (!_tmp106_) { ValaCCodeExpression* _tmp107_; ValaCCodeUnaryExpression* _tmp108_; _tmp107_ = target_l; _tmp108_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp107_); _vala_ccode_node_unref0 (target_l); target_l = (ValaCCodeExpression*) _tmp108_; } _tmp109_ = temp_value; _tmp110_ = vala_ccode_base_module_get_delegate_target_cvalue (self, _tmp109_); target_r = _tmp110_; _tmp111_ = vala_ccode_base_module_get_ccode (self); _tmp112_ = _tmp111_; _tmp113_ = target_l; _tmp114_ = target_r; vala_ccode_function_add_assignment (_tmp112_, _tmp113_, _tmp114_); _tmp115_ = delegate_type; _tmp116_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp115_); _tmp117_ = _tmp116_; if (_tmp117_) { gchar* _tmp118_ = NULL; gchar* _tmp119_; ValaCCodeExpression* _tmp120_ = NULL; ValaCCodeExpression* _tmp121_; ValaCCodeExpression* target_l_destroy_notify; gboolean _tmp122_ = FALSE; ValaTargetValue* _tmp125_; ValaCCodeExpression* _tmp126_ = NULL; ValaCCodeExpression* target_r_destroy_notify; ValaCCodeFunction* _tmp127_; ValaCCodeFunction* _tmp128_; ValaCCodeExpression* _tmp129_; ValaCCodeExpression* _tmp130_; _tmp118_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "result"); _tmp119_ = _tmp118_; _tmp120_ = vala_ccode_base_module_get_result_cexpression (self, _tmp119_); _tmp121_ = _tmp120_; _g_free0 (_tmp119_); target_l_destroy_notify = _tmp121_; _tmp122_ = vala_ccode_base_module_is_in_coroutine (self); if (!_tmp122_) { ValaCCodeExpression* _tmp123_; ValaCCodeUnaryExpression* _tmp124_; _tmp123_ = target_l_destroy_notify; _tmp124_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp123_); _vala_ccode_node_unref0 (target_l_destroy_notify); target_l_destroy_notify = (ValaCCodeExpression*) _tmp124_; } _tmp125_ = temp_value; _tmp126_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp125_); target_r_destroy_notify = _tmp126_; _tmp127_ = vala_ccode_base_module_get_ccode (self); _tmp128_ = _tmp127_; _tmp129_ = target_l_destroy_notify; _tmp130_ = target_r_destroy_notify; vala_ccode_function_add_assignment (_tmp128_, _tmp129_, _tmp130_); _vala_ccode_node_unref0 (target_r_destroy_notify); _vala_ccode_node_unref0 (target_l_destroy_notify); } _tmp131_ = stmt; _tmp132_ = vala_return_statement_get_return_expression (_tmp131_); _tmp133_ = _tmp132_; _tmp134_ = temp_value; vala_expression_set_target_value (_tmp133_, _tmp134_); _vala_ccode_node_unref0 (target_r); _vala_ccode_node_unref0 (target_l); _vala_target_value_unref0 (temp_value); } _vala_code_node_unref0 (delegate_type); } } _tmp135_ = stmt; _tmp136_ = vala_return_statement_get_return_expression (_tmp135_); _tmp137_ = _tmp136_; if (_tmp137_ != NULL) { ValaCCodeExpression* _tmp138_ = NULL; ValaCCodeExpression* result_lhs; gboolean _tmp139_ = FALSE; ValaDataType* _tmp140_; ValaDataType* _tmp141_; gboolean _tmp142_ = FALSE; gboolean _tmp144_; ValaCCodeFunction* _tmp147_; ValaCCodeFunction* _tmp148_; ValaCCodeExpression* _tmp149_; ValaReturnStatement* _tmp150_; ValaExpression* _tmp151_; ValaExpression* _tmp152_; ValaCCodeExpression* _tmp153_ = NULL; ValaCCodeExpression* _tmp154_; _tmp138_ = vala_ccode_base_module_get_result_cexpression (self, "result"); result_lhs = _tmp138_; _tmp140_ = vala_ccode_base_module_get_current_return_type (self); _tmp141_ = _tmp140_; _tmp142_ = vala_data_type_is_real_non_null_struct_type (_tmp141_); if (_tmp142_) { gboolean _tmp143_ = FALSE; _tmp143_ = vala_ccode_base_module_is_in_coroutine (self); _tmp139_ = !_tmp143_; } else { _tmp139_ = FALSE; } _tmp144_ = _tmp139_; if (_tmp144_) { ValaCCodeExpression* _tmp145_; ValaCCodeUnaryExpression* _tmp146_; _tmp145_ = result_lhs; _tmp146_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp145_); _vala_ccode_node_unref0 (result_lhs); result_lhs = (ValaCCodeExpression*) _tmp146_; } _tmp147_ = vala_ccode_base_module_get_ccode (self); _tmp148_ = _tmp147_; _tmp149_ = result_lhs; _tmp150_ = stmt; _tmp151_ = vala_return_statement_get_return_expression (_tmp150_); _tmp152_ = _tmp151_; _tmp153_ = vala_ccode_base_module_get_cvalue (self, _tmp152_); _tmp154_ = _tmp153_; vala_ccode_function_add_assignment (_tmp148_, _tmp149_, _tmp154_); _vala_ccode_node_unref0 (_tmp154_); _vala_ccode_node_unref0 (result_lhs); } _tmp155_ = vala_ccode_base_module_get_current_symbol (self); _tmp156_ = _tmp155_; vala_ccode_base_module_append_local_free (self, _tmp156_, FALSE, NULL); _tmp157_ = vala_ccode_base_module_get_current_method (self); _tmp158_ = _tmp157_; if (_tmp158_ != NULL) { { ValaMethod* _tmp159_; ValaMethod* _tmp160_; ValaList* _tmp161_ = NULL; ValaList* _postcondition_list; ValaList* _tmp162_; gint _tmp163_; gint _tmp164_; gint _postcondition_size; gint _postcondition_index; _tmp159_ = vala_ccode_base_module_get_current_method (self); _tmp160_ = _tmp159_; _tmp161_ = vala_method_get_postconditions (_tmp160_); _postcondition_list = _tmp161_; _tmp162_ = _postcondition_list; _tmp163_ = vala_collection_get_size ((ValaCollection*) _tmp162_); _tmp164_ = _tmp163_; _postcondition_size = _tmp164_; _postcondition_index = -1; while (TRUE) { gint _tmp165_; gint _tmp166_; gint _tmp167_; ValaList* _tmp168_; gint _tmp169_; gpointer _tmp170_ = NULL; ValaExpression* postcondition; ValaExpression* _tmp171_; _tmp165_ = _postcondition_index; _postcondition_index = _tmp165_ + 1; _tmp166_ = _postcondition_index; _tmp167_ = _postcondition_size; if (!(_tmp166_ < _tmp167_)) { break; } _tmp168_ = _postcondition_list; _tmp169_ = _postcondition_index; _tmp170_ = vala_list_get (_tmp168_, _tmp169_); postcondition = (ValaExpression*) _tmp170_; _tmp171_ = postcondition; vala_ccode_base_module_create_postcondition_statement (self, _tmp171_); _vala_code_node_unref0 (postcondition); } _vala_iterable_unref0 (_postcondition_list); } } _tmp173_ = vala_ccode_base_module_get_current_method (self); _tmp174_ = _tmp173_; if (_tmp174_ != NULL) { ValaMethod* _tmp175_; ValaMethod* _tmp176_; gboolean _tmp177_; gboolean _tmp178_; _tmp175_ = vala_ccode_base_module_get_current_method (self); _tmp176_ = _tmp175_; _tmp177_ = vala_method_get_coroutine (_tmp176_); _tmp178_ = _tmp177_; _tmp172_ = !_tmp178_; } else { _tmp172_ = FALSE; } _tmp179_ = _tmp172_; if (_tmp179_) { { ValaMethod* _tmp180_; ValaMethod* _tmp181_; ValaList* _tmp182_ = NULL; ValaList* _param_list; ValaList* _tmp183_; gint _tmp184_; gint _tmp185_; gint _param_size; gint _param_index; _tmp180_ = vala_ccode_base_module_get_current_method (self); _tmp181_ = _tmp180_; _tmp182_ = vala_method_get_parameters (_tmp181_); _param_list = _tmp182_; _tmp183_ = _param_list; _tmp184_ = vala_collection_get_size ((ValaCollection*) _tmp183_); _tmp185_ = _tmp184_; _param_size = _tmp185_; _param_index = -1; while (TRUE) { gint _tmp186_; gint _tmp187_; gint _tmp188_; ValaList* _tmp189_; gint _tmp190_; gpointer _tmp191_ = NULL; ValaParameter* param; ValaParameter* _tmp192_; ValaParameterDirection _tmp193_; ValaParameterDirection _tmp194_; ValaParameter* _tmp195_; _tmp186_ = _param_index; _param_index = _tmp186_ + 1; _tmp187_ = _param_index; _tmp188_ = _param_size; if (!(_tmp187_ < _tmp188_)) { break; } _tmp189_ = _param_list; _tmp190_ = _param_index; _tmp191_ = vala_list_get (_tmp189_, _tmp190_); param = (ValaParameter*) _tmp191_; _tmp192_ = param; _tmp193_ = vala_parameter_get_direction (_tmp192_); _tmp194_ = _tmp193_; if (_tmp194_ != VALA_PARAMETER_DIRECTION_OUT) { _vala_code_node_unref0 (param); continue; } _tmp195_ = param; vala_ccode_base_module_return_out_parameter (self, _tmp195_); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } } _tmp196_ = vala_ccode_base_module_is_in_constructor (self); if (_tmp196_) { ValaCCodeFunction* _tmp197_; ValaCCodeFunction* _tmp198_; ValaCCodeIdentifier* _tmp199_; ValaCCodeIdentifier* _tmp200_; _tmp197_ = vala_ccode_base_module_get_ccode (self); _tmp198_ = _tmp197_; _tmp199_ = vala_ccode_identifier_new ("obj"); _tmp200_ = _tmp199_; vala_ccode_function_add_return (_tmp198_, (ValaCCodeExpression*) _tmp200_); _vala_ccode_node_unref0 (_tmp200_); } else { gboolean _tmp201_ = FALSE; _tmp201_ = vala_ccode_base_module_is_in_destructor (self); if (_tmp201_) { ValaCCodeFunction* _tmp202_; ValaCCodeFunction* _tmp203_; _tmp202_ = vala_ccode_base_module_get_ccode (self); _tmp203_ = _tmp202_; vala_ccode_function_add_goto (_tmp203_, "_return"); } else { ValaMethod* _tmp204_; ValaMethod* _tmp205_; _tmp204_ = vala_ccode_base_module_get_current_method (self); _tmp205_ = _tmp204_; if (VALA_IS_CREATION_METHOD (_tmp205_)) { ValaCCodeFunction* _tmp206_; ValaCCodeFunction* _tmp207_; ValaCCodeIdentifier* _tmp208_; ValaCCodeIdentifier* _tmp209_; _tmp206_ = vala_ccode_base_module_get_ccode (self); _tmp207_ = _tmp206_; _tmp208_ = vala_ccode_identifier_new ("self"); _tmp209_ = _tmp208_; vala_ccode_function_add_return (_tmp207_, (ValaCCodeExpression*) _tmp209_); _vala_ccode_node_unref0 (_tmp209_); } else { gboolean _tmp210_ = FALSE; _tmp210_ = vala_ccode_base_module_is_in_coroutine (self); if (_tmp210_) { } else { gboolean _tmp211_ = FALSE; ValaDataType* _tmp212_; ValaDataType* _tmp213_; gboolean _tmp217_; _tmp212_ = vala_ccode_base_module_get_current_return_type (self); _tmp213_ = _tmp212_; if (VALA_IS_VOID_TYPE (_tmp213_)) { _tmp211_ = TRUE; } else { ValaDataType* _tmp214_; ValaDataType* _tmp215_; gboolean _tmp216_ = FALSE; _tmp214_ = vala_ccode_base_module_get_current_return_type (self); _tmp215_ = _tmp214_; _tmp216_ = vala_data_type_is_real_non_null_struct_type (_tmp215_); _tmp211_ = _tmp216_; } _tmp217_ = _tmp211_; if (_tmp217_) { ValaCCodeFunction* _tmp218_; ValaCCodeFunction* _tmp219_; _tmp218_ = vala_ccode_base_module_get_ccode (self); _tmp219_ = _tmp218_; vala_ccode_function_add_return (_tmp219_, NULL); } else { ValaCCodeFunction* _tmp220_; ValaCCodeFunction* _tmp221_; ValaCCodeIdentifier* _tmp222_; ValaCCodeIdentifier* _tmp223_; _tmp220_ = vala_ccode_base_module_get_ccode (self); _tmp221_ = _tmp220_; _tmp222_ = vala_ccode_identifier_new ("result"); _tmp223_ = _tmp222_; vala_ccode_function_add_return (_tmp221_, (ValaCCodeExpression*) _tmp223_); _vala_ccode_node_unref0 (_tmp223_); } } } } } _tmp224_ = return_expression_symbol; if (_tmp224_ != NULL) { ValaSymbol* _tmp225_; _tmp225_ = return_expression_symbol; vala_symbol_set_active (_tmp225_, TRUE); } vala_ccode_base_module_set_current_method_return (self, TRUE); _vala_code_node_unref0 (return_expression_symbol); } gchar* vala_ccode_base_module_get_symbol_lock_name (ValaCCodeBaseModule* self, const gchar* symname) { gchar* result = NULL; const gchar* _tmp0_; gchar* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (symname != NULL, NULL); _tmp0_ = symname; _tmp1_ = g_strdup_printf ("__lock_%s", _tmp0_); result = _tmp1_; return result; } static ValaCCodeExpression* vala_ccode_base_module_get_lock_expression (ValaCCodeBaseModule* self, ValaStatement* stmt, ValaExpression* resource) { ValaCCodeExpression* result = NULL; ValaCCodeExpression* l; ValaExpression* _tmp0_; ValaExpression* _tmp1_; ValaExpression* _tmp2_; ValaExpression* _tmp3_; ValaExpression* inner_node; ValaExpression* _tmp4_; ValaSymbol* _tmp5_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; ValaSymbol* member; ValaExpression* _tmp8_; ValaSymbol* _tmp9_; ValaSymbol* _tmp10_; ValaSymbol* _tmp11_; ValaSymbol* _tmp12_; ValaTypeSymbol* _tmp13_; ValaTypeSymbol* parent; ValaSymbol* _tmp14_; gboolean _tmp15_ = FALSE; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (stmt != NULL, NULL); g_return_val_if_fail (resource != NULL, NULL); l = NULL; _tmp0_ = resource; _tmp1_ = vala_member_access_get_inner (VALA_MEMBER_ACCESS (_tmp0_)); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (_tmp2_); inner_node = _tmp3_; _tmp4_ = resource; _tmp5_ = vala_expression_get_symbol_reference (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = _vala_code_node_ref0 (_tmp6_); member = _tmp7_; _tmp8_ = resource; _tmp9_ = vala_expression_get_symbol_reference (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_symbol_get_parent_symbol (_tmp10_); _tmp12_ = _tmp11_; _tmp13_ = _vala_code_node_ref0 (VALA_TYPESYMBOL (_tmp12_)); parent = _tmp13_; _tmp14_ = member; _tmp15_ = vala_symbol_is_instance_member (_tmp14_); if (_tmp15_) { ValaExpression* _tmp16_; ValaCCodeExpression* _tmp32_; ValaCCodeMemberAccess* _tmp33_; ValaCCodeMemberAccess* _tmp34_; ValaExpression* _tmp35_; ValaSymbol* _tmp36_; ValaSymbol* _tmp37_; const gchar* _tmp38_; const gchar* _tmp39_; gchar* _tmp40_ = NULL; gchar* _tmp41_; ValaCCodeMemberAccess* _tmp42_; _tmp16_ = inner_node; if (_tmp16_ == NULL) { ValaCCodeIdentifier* _tmp17_; _tmp17_ = vala_ccode_identifier_new ("self"); _vala_ccode_node_unref0 (l); l = (ValaCCodeExpression*) _tmp17_; } else { ValaExpression* _tmp18_; ValaSymbol* _tmp19_; ValaSymbol* _tmp20_; ValaSymbol* _tmp21_; ValaSymbol* _tmp22_; ValaTypeSymbol* _tmp23_; ValaTypeSymbol* _tmp24_; _tmp18_ = resource; _tmp19_ = vala_expression_get_symbol_reference (_tmp18_); _tmp20_ = _tmp19_; _tmp21_ = vala_symbol_get_parent_symbol (_tmp20_); _tmp22_ = _tmp21_; _tmp23_ = vala_ccode_base_module_get_current_type_symbol (self); _tmp24_ = _tmp23_; if (_tmp22_ != VALA_SYMBOL (_tmp24_)) { ValaExpression* _tmp25_; ValaCCodeExpression* _tmp26_ = NULL; ValaCCodeExpression* _tmp27_; ValaTypeSymbol* _tmp28_; ValaCCodeFunctionCall* _tmp29_ = NULL; _tmp25_ = inner_node; _tmp26_ = vala_ccode_base_module_get_cvalue (self, _tmp25_); _tmp27_ = _tmp26_; _tmp28_ = parent; _tmp29_ = vala_ccode_base_module_generate_instance_cast (self, _tmp27_, _tmp28_); _vala_ccode_node_unref0 (l); l = (ValaCCodeExpression*) _tmp29_; _vala_ccode_node_unref0 (_tmp27_); } else { ValaExpression* _tmp30_; ValaCCodeExpression* _tmp31_ = NULL; _tmp30_ = inner_node; _tmp31_ = vala_ccode_base_module_get_cvalue (self, _tmp30_); _vala_ccode_node_unref0 (l); l = _tmp31_; } } _tmp32_ = l; _tmp33_ = vala_ccode_member_access_new_pointer (_tmp32_, "priv"); _tmp34_ = _tmp33_; _tmp35_ = resource; _tmp36_ = vala_expression_get_symbol_reference (_tmp35_); _tmp37_ = _tmp36_; _tmp38_ = vala_symbol_get_name (_tmp37_); _tmp39_ = _tmp38_; _tmp40_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp39_); _tmp41_ = _tmp40_; _tmp42_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp34_, _tmp41_); _vala_ccode_node_unref0 (l); l = (ValaCCodeExpression*) _tmp42_; _g_free0 (_tmp41_); _vala_ccode_node_unref0 (_tmp34_); } else { ValaSymbol* _tmp43_; gboolean _tmp44_ = FALSE; _tmp43_ = member; _tmp44_ = vala_symbol_is_class_member (_tmp43_); if (_tmp44_) { ValaCCodeExpression* klass = NULL; ValaDataType* _tmp45_ = NULL; ValaDataType* _tmp46_; gboolean _tmp47_; ValaTypeSymbol* _tmp58_; gchar* _tmp59_ = NULL; gchar* _tmp60_; gchar* _tmp61_ = NULL; gchar* _tmp62_; ValaCCodeIdentifier* _tmp63_; ValaCCodeIdentifier* _tmp64_; ValaCCodeFunctionCall* _tmp65_; ValaCCodeFunctionCall* _tmp66_; ValaCCodeFunctionCall* get_class_private_call; ValaCCodeFunctionCall* _tmp67_; ValaCCodeExpression* _tmp68_; ValaCCodeFunctionCall* _tmp69_; ValaExpression* _tmp70_; ValaSymbol* _tmp71_; ValaSymbol* _tmp72_; const gchar* _tmp73_; const gchar* _tmp74_; gchar* _tmp75_ = NULL; gchar* _tmp76_; ValaCCodeMemberAccess* _tmp77_; _tmp45_ = vala_ccode_base_module_get_this_type (self); _tmp46_ = _tmp45_; _tmp47_ = _tmp46_ != NULL; _vala_code_node_unref0 (_tmp46_); if (_tmp47_) { ValaCCodeIdentifier* _tmp48_; ValaCCodeIdentifier* _tmp49_; ValaCCodeFunctionCall* _tmp50_; ValaCCodeFunctionCall* _tmp51_; ValaCCodeFunctionCall* k; ValaCCodeFunctionCall* _tmp52_; ValaCCodeIdentifier* _tmp53_; ValaCCodeIdentifier* _tmp54_; ValaCCodeFunctionCall* _tmp55_; ValaCCodeExpression* _tmp56_; _tmp48_ = vala_ccode_identifier_new ("G_OBJECT_GET_CLASS"); _tmp49_ = _tmp48_; _tmp50_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp49_); _tmp51_ = _tmp50_; _vala_ccode_node_unref0 (_tmp49_); k = _tmp51_; _tmp52_ = k; _tmp53_ = vala_ccode_identifier_new ("self"); _tmp54_ = _tmp53_; vala_ccode_function_call_add_argument (_tmp52_, (ValaCCodeExpression*) _tmp54_); _vala_ccode_node_unref0 (_tmp54_); _tmp55_ = k; _tmp56_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp55_); _vala_ccode_node_unref0 (klass); klass = _tmp56_; _vala_ccode_node_unref0 (k); } else { ValaCCodeIdentifier* _tmp57_; _tmp57_ = vala_ccode_identifier_new ("klass"); _vala_ccode_node_unref0 (klass); klass = (ValaCCodeExpression*) _tmp57_; } _tmp58_ = parent; _tmp59_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp58_, NULL); _tmp60_ = _tmp59_; _tmp61_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp60_); _tmp62_ = _tmp61_; _tmp63_ = vala_ccode_identifier_new (_tmp62_); _tmp64_ = _tmp63_; _tmp65_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp64_); _tmp66_ = _tmp65_; _vala_ccode_node_unref0 (_tmp64_); _g_free0 (_tmp62_); _g_free0 (_tmp60_); get_class_private_call = _tmp66_; _tmp67_ = get_class_private_call; _tmp68_ = klass; vala_ccode_function_call_add_argument (_tmp67_, _tmp68_); _tmp69_ = get_class_private_call; _tmp70_ = resource; _tmp71_ = vala_expression_get_symbol_reference (_tmp70_); _tmp72_ = _tmp71_; _tmp73_ = vala_symbol_get_name (_tmp72_); _tmp74_ = _tmp73_; _tmp75_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp74_); _tmp76_ = _tmp75_; _tmp77_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp69_, _tmp76_); _vala_ccode_node_unref0 (l); l = (ValaCCodeExpression*) _tmp77_; _g_free0 (_tmp76_); _vala_ccode_node_unref0 (get_class_private_call); _vala_ccode_node_unref0 (klass); } else { ValaTypeSymbol* _tmp78_; gchar* _tmp79_ = NULL; gchar* _tmp80_; ValaExpression* _tmp81_; ValaSymbol* _tmp82_; ValaSymbol* _tmp83_; const gchar* _tmp84_; const gchar* _tmp85_; gchar* _tmp86_ = NULL; gchar* _tmp87_; gchar* lock_name; const gchar* _tmp88_; gchar* _tmp89_ = NULL; gchar* _tmp90_; ValaCCodeIdentifier* _tmp91_; _tmp78_ = parent; _tmp79_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp78_, NULL); _tmp80_ = _tmp79_; _tmp81_ = resource; _tmp82_ = vala_expression_get_symbol_reference (_tmp81_); _tmp83_ = _tmp82_; _tmp84_ = vala_symbol_get_name (_tmp83_); _tmp85_ = _tmp84_; _tmp86_ = g_strdup_printf ("%s_%s", _tmp80_, _tmp85_); _tmp87_ = _tmp86_; _g_free0 (_tmp80_); lock_name = _tmp87_; _tmp88_ = lock_name; _tmp89_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp88_); _tmp90_ = _tmp89_; _tmp91_ = vala_ccode_identifier_new (_tmp90_); _vala_ccode_node_unref0 (l); l = (ValaCCodeExpression*) _tmp91_; _g_free0 (_tmp90_); _g_free0 (lock_name); } } result = l; _vala_code_node_unref0 (parent); _vala_code_node_unref0 (member); _vala_code_node_unref0 (inner_node); return result; } static void vala_ccode_base_module_real_visit_lock_statement (ValaCodeVisitor* base, ValaLockStatement* stmt) { ValaCCodeBaseModule * self; ValaLockStatement* _tmp0_; ValaLockStatement* _tmp1_; ValaExpression* _tmp2_; ValaExpression* _tmp3_; ValaCCodeExpression* _tmp4_ = NULL; ValaCCodeExpression* l; ValaStruct* _tmp5_; ValaScope* _tmp6_; ValaScope* _tmp7_; ValaSymbol* _tmp8_ = NULL; ValaSymbol* _tmp9_; gchar* _tmp10_ = NULL; gchar* _tmp11_; ValaCCodeIdentifier* _tmp12_; ValaCCodeIdentifier* _tmp13_; ValaCCodeFunctionCall* _tmp14_; ValaCCodeFunctionCall* _tmp15_; ValaCCodeFunctionCall* fc; ValaCCodeUnaryExpression* _tmp16_; ValaCCodeUnaryExpression* _tmp17_; ValaCCodeFunction* _tmp18_; ValaCCodeFunction* _tmp19_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (stmt != NULL); _tmp0_ = stmt; _tmp1_ = stmt; _tmp2_ = vala_lock_statement_get_resource (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_base_module_get_lock_expression (self, (ValaStatement*) _tmp0_, _tmp3_); l = _tmp4_; _tmp5_ = self->mutex_type; _tmp6_ = vala_symbol_get_scope ((ValaSymbol*) _tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_scope_lookup (_tmp7_, "lock"); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp9_); _tmp11_ = _tmp10_; _tmp12_ = vala_ccode_identifier_new (_tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp13_); _tmp15_ = _tmp14_; _vala_ccode_node_unref0 (_tmp13_); _g_free0 (_tmp11_); _vala_code_node_unref0 (_tmp9_); fc = _tmp15_; _tmp16_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, l); _tmp17_ = _tmp16_; vala_ccode_function_call_add_argument (fc, (ValaCCodeExpression*) _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _tmp18_ = vala_ccode_base_module_get_ccode (self); _tmp19_ = _tmp18_; vala_ccode_function_add_expression (_tmp19_, (ValaCCodeExpression*) fc); _vala_ccode_node_unref0 (fc); _vala_ccode_node_unref0 (l); } static void vala_ccode_base_module_real_visit_unlock_statement (ValaCodeVisitor* base, ValaUnlockStatement* stmt) { ValaCCodeBaseModule * self; ValaUnlockStatement* _tmp0_; ValaUnlockStatement* _tmp1_; ValaExpression* _tmp2_; ValaExpression* _tmp3_; ValaCCodeExpression* _tmp4_ = NULL; ValaCCodeExpression* l; ValaStruct* _tmp5_; ValaScope* _tmp6_; ValaScope* _tmp7_; ValaSymbol* _tmp8_ = NULL; ValaSymbol* _tmp9_; gchar* _tmp10_ = NULL; gchar* _tmp11_; ValaCCodeIdentifier* _tmp12_; ValaCCodeIdentifier* _tmp13_; ValaCCodeFunctionCall* _tmp14_; ValaCCodeFunctionCall* _tmp15_; ValaCCodeFunctionCall* fc; ValaCCodeUnaryExpression* _tmp16_; ValaCCodeUnaryExpression* _tmp17_; ValaCCodeFunction* _tmp18_; ValaCCodeFunction* _tmp19_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (stmt != NULL); _tmp0_ = stmt; _tmp1_ = stmt; _tmp2_ = vala_unlock_statement_get_resource (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_base_module_get_lock_expression (self, (ValaStatement*) _tmp0_, _tmp3_); l = _tmp4_; _tmp5_ = self->mutex_type; _tmp6_ = vala_symbol_get_scope ((ValaSymbol*) _tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_scope_lookup (_tmp7_, "unlock"); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp9_); _tmp11_ = _tmp10_; _tmp12_ = vala_ccode_identifier_new (_tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp13_); _tmp15_ = _tmp14_; _vala_ccode_node_unref0 (_tmp13_); _g_free0 (_tmp11_); _vala_code_node_unref0 (_tmp9_); fc = _tmp15_; _tmp16_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, l); _tmp17_ = _tmp16_; vala_ccode_function_call_add_argument (fc, (ValaCCodeExpression*) _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _tmp18_ = vala_ccode_base_module_get_ccode (self); _tmp19_ = _tmp18_; vala_ccode_function_add_expression (_tmp19_, (ValaCCodeExpression*) fc); _vala_ccode_node_unref0 (fc); _vala_ccode_node_unref0 (l); } static void vala_ccode_base_module_real_visit_delete_statement (ValaCodeVisitor* base, ValaDeleteStatement* stmt) { ValaCCodeBaseModule * self; ValaDeleteStatement* _tmp0_; ValaExpression* _tmp1_; ValaExpression* _tmp2_; ValaDataType* _tmp3_; ValaDataType* _tmp4_; ValaPointerType* _tmp5_; ValaPointerType* pointer_type; ValaPointerType* _tmp6_; ValaDataType* _tmp7_; ValaDataType* type; gboolean _tmp8_ = FALSE; ValaPointerType* _tmp9_; ValaDataType* _tmp10_; ValaDataType* _tmp11_; ValaTypeSymbol* _tmp12_; ValaTypeSymbol* _tmp13_; gboolean _tmp20_; ValaDataType* _tmp25_; ValaCCodeExpression* _tmp26_ = NULL; ValaCCodeExpression* _tmp27_; ValaCCodeFunctionCall* _tmp28_; ValaCCodeFunctionCall* _tmp29_; ValaCCodeFunctionCall* ccall; ValaDeleteStatement* _tmp30_; ValaExpression* _tmp31_; ValaExpression* _tmp32_; ValaCCodeExpression* _tmp33_ = NULL; ValaCCodeExpression* _tmp34_; ValaCCodeFunction* _tmp35_; ValaCCodeFunction* _tmp36_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (stmt != NULL); _tmp0_ = stmt; _tmp1_ = vala_delete_statement_get_expression (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_expression_get_value_type (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _vala_code_node_ref0 (VALA_POINTER_TYPE (_tmp4_)); pointer_type = _tmp5_; _tmp6_ = pointer_type; _tmp7_ = _vala_code_node_ref0 ((ValaDataType*) _tmp6_); type = _tmp7_; _tmp9_ = pointer_type; _tmp10_ = vala_pointer_type_get_base_type (_tmp9_); _tmp11_ = _tmp10_; _tmp12_ = vala_data_type_get_data_type (_tmp11_); _tmp13_ = _tmp12_; if (_tmp13_ != NULL) { ValaPointerType* _tmp14_; ValaDataType* _tmp15_; ValaDataType* _tmp16_; ValaTypeSymbol* _tmp17_; ValaTypeSymbol* _tmp18_; gboolean _tmp19_ = FALSE; _tmp14_ = pointer_type; _tmp15_ = vala_pointer_type_get_base_type (_tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_data_type_get_data_type (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = vala_typesymbol_is_reference_type (_tmp18_); _tmp8_ = _tmp19_; } else { _tmp8_ = FALSE; } _tmp20_ = _tmp8_; if (_tmp20_) { ValaPointerType* _tmp21_; ValaDataType* _tmp22_; ValaDataType* _tmp23_; ValaDataType* _tmp24_; _tmp21_ = pointer_type; _tmp22_ = vala_pointer_type_get_base_type (_tmp21_); _tmp23_ = _tmp22_; _tmp24_ = _vala_code_node_ref0 (_tmp23_); _vala_code_node_unref0 (type); type = _tmp24_; } _tmp25_ = type; _tmp26_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp25_, FALSE); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_function_call_new (_tmp27_); _tmp29_ = _tmp28_; _vala_ccode_node_unref0 (_tmp27_); ccall = _tmp29_; _tmp30_ = stmt; _tmp31_ = vala_delete_statement_get_expression (_tmp30_); _tmp32_ = _tmp31_; _tmp33_ = vala_ccode_base_module_get_cvalue (self, _tmp32_); _tmp34_ = _tmp33_; vala_ccode_function_call_add_argument (ccall, _tmp34_); _vala_ccode_node_unref0 (_tmp34_); _tmp35_ = vala_ccode_base_module_get_ccode (self); _tmp36_ = _tmp35_; vala_ccode_function_add_expression (_tmp36_, (ValaCCodeExpression*) ccall); _vala_ccode_node_unref0 (ccall); _vala_code_node_unref0 (type); _vala_code_node_unref0 (pointer_type); } static void vala_ccode_base_module_real_visit_expression (ValaCodeVisitor* base, ValaExpression* expr) { ValaCCodeBaseModule * self; gboolean _tmp0_ = FALSE; ValaExpression* _tmp1_; ValaCCodeExpression* _tmp2_ = NULL; ValaCCodeExpression* _tmp3_; gboolean _tmp4_; gboolean _tmp8_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp1_ = expr; _tmp2_ = vala_ccode_base_module_get_cvalue (self, _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = _tmp3_ != NULL; _vala_ccode_node_unref0 (_tmp3_); if (_tmp4_) { ValaExpression* _tmp5_; gboolean _tmp6_; gboolean _tmp7_; _tmp5_ = expr; _tmp6_ = vala_expression_get_lvalue (_tmp5_); _tmp7_ = _tmp6_; _tmp0_ = !_tmp7_; } else { _tmp0_ = FALSE; } _tmp8_ = _tmp0_; if (_tmp8_) { gboolean _tmp9_ = FALSE; ValaExpression* _tmp10_; ValaDataType* _tmp11_; ValaDataType* _tmp12_; gboolean _tmp16_; ValaExpression* _tmp52_; ValaDataType* _tmp53_; ValaDataType* _tmp54_; ValaExpression* _tmp71_; ValaTargetValue* _tmp72_; ValaTargetValue* _tmp73_; gboolean _tmp74_ = FALSE; ValaExpression* _tmp75_; ValaDataType* _tmp76_; ValaDataType* _tmp77_; gboolean _tmp81_; gboolean _tmp99_ = FALSE; ValaExpression* _tmp100_; ValaDataType* _tmp101_; ValaDataType* _tmp102_; gboolean _tmp108_; _tmp10_ = expr; _tmp11_ = vala_expression_get_formal_value_type (_tmp10_); _tmp12_ = _tmp11_; if (VALA_IS_GENERIC_TYPE (_tmp12_)) { ValaExpression* _tmp13_; ValaDataType* _tmp14_; ValaDataType* _tmp15_; _tmp13_ = expr; _tmp14_ = vala_expression_get_value_type (_tmp13_); _tmp15_ = _tmp14_; _tmp9_ = !VALA_IS_GENERIC_TYPE (_tmp15_); } else { _tmp9_ = FALSE; } _tmp16_ = _tmp9_; if (_tmp16_) { ValaExpression* _tmp17_; ValaDataType* _tmp18_; ValaDataType* _tmp19_; ValaTypeParameter* _tmp20_; ValaTypeParameter* _tmp21_; ValaSymbol* _tmp22_; ValaSymbol* _tmp23_; ValaSymbol* _tmp24_; ValaSymbol* _tmp25_; ValaStruct* _tmp26_; ValaStruct* st; gboolean _tmp27_ = FALSE; ValaExpression* _tmp28_; ValaDataType* _tmp29_; ValaDataType* _tmp30_; ValaTypeParameter* _tmp31_; ValaTypeParameter* _tmp32_; ValaSymbol* _tmp33_; ValaSymbol* _tmp34_; ValaTypeSymbol* _tmp35_; gboolean _tmp42_; _tmp17_ = expr; _tmp18_ = vala_expression_get_formal_value_type (_tmp17_); _tmp19_ = _tmp18_; _tmp20_ = vala_data_type_get_type_parameter (_tmp19_); _tmp21_ = _tmp20_; _tmp22_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp21_); _tmp23_ = _tmp22_; _tmp24_ = vala_symbol_get_parent_symbol (_tmp23_); _tmp25_ = _tmp24_; _tmp26_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp25_) ? ((ValaStruct*) _tmp25_) : NULL); st = _tmp26_; _tmp28_ = expr; _tmp29_ = vala_expression_get_formal_value_type (_tmp28_); _tmp30_ = _tmp29_; _tmp31_ = vala_data_type_get_type_parameter (_tmp30_); _tmp32_ = _tmp31_; _tmp33_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp32_); _tmp34_ = _tmp33_; _tmp35_ = self->garray_type; if (_tmp34_ != VALA_SYMBOL (_tmp35_)) { gboolean _tmp36_ = FALSE; ValaStruct* _tmp37_; gboolean _tmp41_; _tmp37_ = st; if (_tmp37_ == NULL) { _tmp36_ = TRUE; } else { ValaStruct* _tmp38_; gchar* _tmp39_ = NULL; gchar* _tmp40_; _tmp38_ = st; _tmp39_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp38_); _tmp40_ = _tmp39_; _tmp36_ = g_strcmp0 (_tmp40_, "va_list") != 0; _g_free0 (_tmp40_); } _tmp41_ = _tmp36_; _tmp27_ = _tmp41_; } else { _tmp27_ = FALSE; } _tmp42_ = _tmp27_; if (_tmp42_) { ValaExpression* _tmp43_; ValaExpression* _tmp44_; ValaCCodeExpression* _tmp45_ = NULL; ValaCCodeExpression* _tmp46_; ValaExpression* _tmp47_; ValaDataType* _tmp48_; ValaDataType* _tmp49_; ValaCCodeExpression* _tmp50_ = NULL; ValaCCodeExpression* _tmp51_; _tmp43_ = expr; _tmp44_ = expr; _tmp45_ = vala_ccode_base_module_get_cvalue (self, _tmp44_); _tmp46_ = _tmp45_; _tmp47_ = expr; _tmp48_ = vala_expression_get_value_type (_tmp47_); _tmp49_ = _tmp48_; _tmp50_ = vala_ccode_base_module_convert_from_generic_pointer (self, _tmp46_, _tmp49_); _tmp51_ = _tmp50_; vala_ccode_base_module_set_cvalue (self, _tmp43_, _tmp51_); _vala_ccode_node_unref0 (_tmp51_); _vala_ccode_node_unref0 (_tmp46_); } _vala_code_node_unref0 (st); } _tmp52_ = expr; _tmp53_ = vala_expression_get_value_type (_tmp52_); _tmp54_ = _tmp53_; if (_tmp54_ != NULL) { ValaExpression* _tmp55_; ValaTargetValue* _tmp56_; ValaTargetValue* _tmp57_; ValaExpression* _tmp58_; ValaDataType* _tmp59_; ValaDataType* _tmp60_; ValaExpression* _tmp61_; ValaExpression* _tmp62_; ValaTargetValue* _tmp63_; ValaTargetValue* _tmp64_; ValaExpression* _tmp65_; ValaDataType* _tmp66_; ValaDataType* _tmp67_; ValaExpression* _tmp68_; ValaTargetValue* _tmp69_ = NULL; ValaTargetValue* _tmp70_; _tmp55_ = expr; _tmp56_ = vala_expression_get_target_value (_tmp55_); _tmp57_ = _tmp56_; _tmp58_ = expr; _tmp59_ = vala_expression_get_value_type (_tmp58_); _tmp60_ = _tmp59_; vala_target_value_set_value_type (_tmp57_, _tmp60_); _tmp61_ = expr; _tmp62_ = expr; _tmp63_ = vala_expression_get_target_value (_tmp62_); _tmp64_ = _tmp63_; _tmp65_ = expr; _tmp66_ = vala_expression_get_target_type (_tmp65_); _tmp67_ = _tmp66_; _tmp68_ = expr; _tmp69_ = vala_ccode_base_module_transform_value (self, _tmp64_, _tmp67_, (ValaCodeNode*) _tmp68_); _tmp70_ = _tmp69_; vala_expression_set_target_value (_tmp61_, _tmp70_); _vala_target_value_unref0 (_tmp70_); } _tmp71_ = expr; _tmp72_ = vala_expression_get_target_value (_tmp71_); _tmp73_ = _tmp72_; if (_tmp73_ == NULL) { return; } _tmp75_ = expr; _tmp76_ = vala_expression_get_formal_target_type (_tmp75_); _tmp77_ = _tmp76_; if (VALA_IS_GENERIC_TYPE (_tmp77_)) { ValaExpression* _tmp78_; ValaDataType* _tmp79_; ValaDataType* _tmp80_; _tmp78_ = expr; _tmp79_ = vala_expression_get_target_type (_tmp78_); _tmp80_ = _tmp79_; _tmp74_ = !VALA_IS_GENERIC_TYPE (_tmp80_); } else { _tmp74_ = FALSE; } _tmp81_ = _tmp74_; if (_tmp81_) { ValaExpression* _tmp82_; ValaDataType* _tmp83_; ValaDataType* _tmp84_; ValaTypeParameter* _tmp85_; ValaTypeParameter* _tmp86_; ValaSymbol* _tmp87_; ValaSymbol* _tmp88_; ValaTypeSymbol* _tmp89_; _tmp82_ = expr; _tmp83_ = vala_expression_get_formal_target_type (_tmp82_); _tmp84_ = _tmp83_; _tmp85_ = vala_data_type_get_type_parameter (_tmp84_); _tmp86_ = _tmp85_; _tmp87_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp86_); _tmp88_ = _tmp87_; _tmp89_ = self->garray_type; if (_tmp88_ != VALA_SYMBOL (_tmp89_)) { ValaExpression* _tmp90_; ValaExpression* _tmp91_; ValaCCodeExpression* _tmp92_ = NULL; ValaCCodeExpression* _tmp93_; ValaExpression* _tmp94_; ValaDataType* _tmp95_; ValaDataType* _tmp96_; ValaCCodeExpression* _tmp97_ = NULL; ValaCCodeExpression* _tmp98_; _tmp90_ = expr; _tmp91_ = expr; _tmp92_ = vala_ccode_base_module_get_cvalue (self, _tmp91_); _tmp93_ = _tmp92_; _tmp94_ = expr; _tmp95_ = vala_expression_get_target_type (_tmp94_); _tmp96_ = _tmp95_; _tmp97_ = vala_ccode_base_module_convert_to_generic_pointer (self, _tmp93_, _tmp96_); _tmp98_ = _tmp97_; vala_ccode_base_module_set_cvalue (self, _tmp90_, _tmp98_); _vala_ccode_node_unref0 (_tmp98_); _vala_ccode_node_unref0 (_tmp93_); } } _tmp100_ = expr; _tmp101_ = vala_expression_get_value_type (_tmp100_); _tmp102_ = _tmp101_; if (VALA_IS_VALUE_TYPE (_tmp102_)) { ValaExpression* _tmp103_; ValaDataType* _tmp104_; ValaDataType* _tmp105_; gboolean _tmp106_; gboolean _tmp107_; _tmp103_ = expr; _tmp104_ = vala_expression_get_value_type (_tmp103_); _tmp105_ = _tmp104_; _tmp106_ = vala_data_type_get_nullable (_tmp105_); _tmp107_ = _tmp106_; _tmp99_ = !_tmp107_; } else { _tmp99_ = FALSE; } _tmp108_ = _tmp99_; if (!_tmp108_) { ValaExpression* _tmp109_; ValaTargetValue* _tmp110_; ValaTargetValue* _tmp111_; ValaExpression* _tmp112_; gboolean _tmp113_ = FALSE; _tmp109_ = expr; _tmp110_ = vala_expression_get_target_value (_tmp109_); _tmp111_ = _tmp110_; _tmp112_ = expr; _tmp113_ = vala_expression_is_non_null (_tmp112_); VALA_GLIB_VALUE (_tmp111_)->non_null = _tmp113_; } } } static void vala_ccode_base_module_real_visit_boolean_literal (ValaCodeVisitor* base, ValaBooleanLiteral* expr) { ValaCCodeBaseModule * self; ValaCodeContext* _tmp0_; ValaProfile _tmp1_; ValaProfile _tmp2_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = self->priv->_context; _tmp1_ = vala_code_context_get_profile (_tmp0_); _tmp2_ = _tmp1_; if (_tmp2_ == VALA_PROFILE_GOBJECT) { const gchar* _tmp3_ = NULL; ValaBooleanLiteral* _tmp4_; gboolean _tmp5_; gboolean _tmp6_; ValaBooleanLiteral* _tmp7_; const gchar* _tmp8_; ValaCCodeConstant* _tmp9_; ValaCCodeConstant* _tmp10_; _tmp4_ = expr; _tmp5_ = vala_boolean_literal_get_value (_tmp4_); _tmp6_ = _tmp5_; if (_tmp6_) { _tmp3_ = "TRUE"; } else { _tmp3_ = "FALSE"; } _tmp7_ = expr; _tmp8_ = _tmp3_; _tmp9_ = vala_ccode_constant_new (_tmp8_); _tmp10_ = _tmp9_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp7_, (ValaCCodeExpression*) _tmp10_); _vala_ccode_node_unref0 (_tmp10_); } else { ValaCCodeFile* _tmp11_; const gchar* _tmp12_ = NULL; ValaBooleanLiteral* _tmp13_; gboolean _tmp14_; gboolean _tmp15_; ValaBooleanLiteral* _tmp16_; const gchar* _tmp17_; ValaCCodeConstant* _tmp18_; ValaCCodeConstant* _tmp19_; _tmp11_ = self->cfile; vala_ccode_file_add_include (_tmp11_, "stdbool.h", FALSE); _tmp13_ = expr; _tmp14_ = vala_boolean_literal_get_value (_tmp13_); _tmp15_ = _tmp14_; if (_tmp15_) { _tmp12_ = "true"; } else { _tmp12_ = "false"; } _tmp16_ = expr; _tmp17_ = _tmp12_; _tmp18_ = vala_ccode_constant_new (_tmp17_); _tmp19_ = _tmp18_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp16_, (ValaCCodeExpression*) _tmp19_); _vala_ccode_node_unref0 (_tmp19_); } } static void vala_ccode_base_module_real_visit_character_literal (ValaCodeVisitor* base, ValaCharacterLiteral* expr) { ValaCCodeBaseModule * self; gboolean _tmp0_ = FALSE; ValaCharacterLiteral* _tmp1_; gunichar _tmp2_ = 0U; gboolean _tmp5_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp1_ = expr; _tmp2_ = vala_character_literal_get_char (_tmp1_); if (_tmp2_ >= ((gunichar) 0x20)) { ValaCharacterLiteral* _tmp3_; gunichar _tmp4_ = 0U; _tmp3_ = expr; _tmp4_ = vala_character_literal_get_char (_tmp3_); _tmp0_ = _tmp4_ < ((gunichar) 0x80); } else { _tmp0_ = FALSE; } _tmp5_ = _tmp0_; if (_tmp5_) { ValaCharacterLiteral* _tmp6_; ValaCharacterLiteral* _tmp7_; const gchar* _tmp8_; const gchar* _tmp9_; ValaCCodeConstant* _tmp10_; ValaCCodeConstant* _tmp11_; _tmp6_ = expr; _tmp7_ = expr; _tmp8_ = vala_character_literal_get_value (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_constant_new (_tmp9_); _tmp11_ = _tmp10_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp6_, (ValaCCodeExpression*) _tmp11_); _vala_ccode_node_unref0 (_tmp11_); } else { ValaCharacterLiteral* _tmp12_; ValaCharacterLiteral* _tmp13_; gunichar _tmp14_ = 0U; gchar* _tmp15_ = NULL; gchar* _tmp16_; ValaCCodeConstant* _tmp17_; ValaCCodeConstant* _tmp18_; _tmp12_ = expr; _tmp13_ = expr; _tmp14_ = vala_character_literal_get_char (_tmp13_); _tmp15_ = g_strdup_printf ("%uU", (guint) _tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_ccode_constant_new (_tmp16_); _tmp18_ = _tmp17_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp12_, (ValaCCodeExpression*) _tmp18_); _vala_ccode_node_unref0 (_tmp18_); _g_free0 (_tmp16_); } } static void vala_ccode_base_module_real_visit_integer_literal (ValaCodeVisitor* base, ValaIntegerLiteral* expr) { ValaCCodeBaseModule * self; ValaIntegerLiteral* _tmp0_; ValaIntegerLiteral* _tmp1_; const gchar* _tmp2_; const gchar* _tmp3_; ValaIntegerLiteral* _tmp4_; const gchar* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_; gchar* _tmp8_; ValaCCodeConstant* _tmp9_; ValaCCodeConstant* _tmp10_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = expr; _tmp2_ = vala_integer_literal_get_value (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = expr; _tmp5_ = vala_integer_literal_get_type_suffix (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = g_strconcat (_tmp3_, _tmp6_, NULL); _tmp8_ = _tmp7_; _tmp9_ = vala_ccode_constant_new (_tmp8_); _tmp10_ = _tmp9_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, (ValaCCodeExpression*) _tmp10_); _vala_ccode_node_unref0 (_tmp10_); _g_free0 (_tmp8_); } static glong string_strnlen (gchar* str, glong maxlen) { glong result = 0L; gchar* _tmp0_; glong _tmp1_; gchar* _tmp2_ = NULL; gchar* end; gchar* _tmp3_; _tmp0_ = str; _tmp1_ = maxlen; _tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_); end = _tmp2_; _tmp3_ = end; if (_tmp3_ == NULL) { glong _tmp4_; _tmp4_ = maxlen; result = _tmp4_; return result; } else { gchar* _tmp5_; gchar* _tmp6_; _tmp5_ = end; _tmp6_ = str; result = (glong) (_tmp5_ - _tmp6_); return result; } } static gchar* string_substring (const gchar* self, glong offset, glong len) { gchar* result = NULL; glong string_length = 0L; gboolean _tmp0_ = FALSE; glong _tmp1_; gboolean _tmp3_; glong _tmp9_; glong _tmp15_; glong _tmp18_; glong _tmp19_; glong _tmp20_; glong _tmp21_; glong _tmp22_; gchar* _tmp23_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp1_ = offset; if (_tmp1_ >= ((glong) 0)) { glong _tmp2_; _tmp2_ = len; _tmp0_ = _tmp2_ >= ((glong) 0); } else { _tmp0_ = FALSE; } _tmp3_ = _tmp0_; if (_tmp3_) { glong _tmp4_; glong _tmp5_; glong _tmp6_ = 0L; _tmp4_ = offset; _tmp5_ = len; _tmp6_ = string_strnlen ((gchar*) self, _tmp4_ + _tmp5_); string_length = _tmp6_; } else { gint _tmp7_; gint _tmp8_; _tmp7_ = strlen (self); _tmp8_ = _tmp7_; string_length = (glong) _tmp8_; } _tmp9_ = offset; if (_tmp9_ < ((glong) 0)) { glong _tmp10_; glong _tmp11_; glong _tmp12_; _tmp10_ = string_length; _tmp11_ = offset; offset = _tmp10_ + _tmp11_; _tmp12_ = offset; g_return_val_if_fail (_tmp12_ >= ((glong) 0), NULL); } else { glong _tmp13_; glong _tmp14_; _tmp13_ = offset; _tmp14_ = string_length; g_return_val_if_fail (_tmp13_ <= _tmp14_, NULL); } _tmp15_ = len; if (_tmp15_ < ((glong) 0)) { glong _tmp16_; glong _tmp17_; _tmp16_ = string_length; _tmp17_ = offset; len = _tmp16_ - _tmp17_; } _tmp18_ = offset; _tmp19_ = len; _tmp20_ = string_length; g_return_val_if_fail ((_tmp18_ + _tmp19_) <= _tmp20_, NULL); _tmp21_ = offset; _tmp22_ = len; _tmp23_ = g_strndup (((gchar*) self) + _tmp21_, (gsize) _tmp22_); result = _tmp23_; return result; } static gboolean string_contains (const gchar* self, const gchar* needle) { gboolean result = FALSE; const gchar* _tmp0_; gchar* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (needle != NULL, FALSE); _tmp0_ = needle; _tmp1_ = strstr ((gchar*) self, (gchar*) _tmp0_); result = _tmp1_ != NULL; return result; } static void vala_ccode_base_module_real_visit_real_literal (ValaCodeVisitor* base, ValaRealLiteral* expr) { ValaCCodeBaseModule * self; ValaRealLiteral* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_; gchar* c_literal; gboolean _tmp4_ = FALSE; const gchar* _tmp5_; gboolean _tmp6_ = FALSE; gboolean _tmp9_; gboolean _tmp15_ = FALSE; gboolean _tmp16_ = FALSE; const gchar* _tmp17_; gboolean _tmp18_ = FALSE; gboolean _tmp21_; gboolean _tmp24_; ValaRealLiteral* _tmp40_; const gchar* _tmp41_; ValaCCodeConstant* _tmp42_; ValaCCodeConstant* _tmp43_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_real_literal_get_value (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = g_strdup (_tmp2_); c_literal = _tmp3_; _tmp5_ = c_literal; _tmp6_ = g_str_has_suffix (_tmp5_, "d"); if (_tmp6_) { _tmp4_ = TRUE; } else { const gchar* _tmp7_; gboolean _tmp8_ = FALSE; _tmp7_ = c_literal; _tmp8_ = g_str_has_suffix (_tmp7_, "D"); _tmp4_ = _tmp8_; } _tmp9_ = _tmp4_; if (_tmp9_) { const gchar* _tmp10_; const gchar* _tmp11_; gint _tmp12_; gint _tmp13_; gchar* _tmp14_ = NULL; _tmp10_ = c_literal; _tmp11_ = c_literal; _tmp12_ = strlen (_tmp11_); _tmp13_ = _tmp12_; _tmp14_ = string_substring (_tmp10_, (glong) 0, (glong) (_tmp13_ - 1)); _g_free0 (c_literal); c_literal = _tmp14_; } _tmp17_ = c_literal; _tmp18_ = string_contains (_tmp17_, "."); if (_tmp18_) { _tmp16_ = TRUE; } else { const gchar* _tmp19_; gboolean _tmp20_ = FALSE; _tmp19_ = c_literal; _tmp20_ = string_contains (_tmp19_, "e"); _tmp16_ = _tmp20_; } _tmp21_ = _tmp16_; if (_tmp21_) { _tmp15_ = TRUE; } else { const gchar* _tmp22_; gboolean _tmp23_ = FALSE; _tmp22_ = c_literal; _tmp23_ = string_contains (_tmp22_, "E"); _tmp15_ = _tmp23_; } _tmp24_ = _tmp15_; if (!_tmp24_) { gboolean _tmp25_ = FALSE; const gchar* _tmp26_; gboolean _tmp27_ = FALSE; gboolean _tmp30_; _tmp26_ = c_literal; _tmp27_ = string_contains (_tmp26_, "f"); if (_tmp27_) { _tmp25_ = TRUE; } else { const gchar* _tmp28_; gboolean _tmp29_ = FALSE; _tmp28_ = c_literal; _tmp29_ = string_contains (_tmp28_, "F"); _tmp25_ = _tmp29_; } _tmp30_ = _tmp25_; if (_tmp30_) { const gchar* _tmp31_; const gchar* _tmp32_; gint _tmp33_; gint _tmp34_; gchar* _tmp35_ = NULL; gchar* _tmp36_; gchar* _tmp37_; _tmp31_ = c_literal; _tmp32_ = c_literal; _tmp33_ = strlen (_tmp32_); _tmp34_ = _tmp33_; _tmp35_ = string_substring (_tmp31_, (glong) 0, (glong) (_tmp34_ - 1)); _tmp36_ = _tmp35_; _tmp37_ = g_strconcat (_tmp36_, ".f", NULL); _g_free0 (c_literal); c_literal = _tmp37_; _g_free0 (_tmp36_); } else { const gchar* _tmp38_; gchar* _tmp39_; _tmp38_ = c_literal; _tmp39_ = g_strconcat (_tmp38_, ".", NULL); _g_free0 (c_literal); c_literal = _tmp39_; } } _tmp40_ = expr; _tmp41_ = c_literal; _tmp42_ = vala_ccode_constant_new (_tmp41_); _tmp43_ = _tmp42_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp40_, (ValaCCodeExpression*) _tmp43_); _vala_ccode_node_unref0 (_tmp43_); _g_free0 (c_literal); } static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) { gchar* result = NULL; GError * _inner_error_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (old != NULL, NULL); g_return_val_if_fail (replacement != NULL, NULL); { const gchar* _tmp0_; gchar* _tmp1_ = NULL; gchar* _tmp2_; GRegex* _tmp3_; GRegex* _tmp4_; GRegex* regex; GRegex* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_ = NULL; gchar* _tmp8_; _tmp0_ = old; _tmp1_ = g_regex_escape_string (_tmp0_, -1); _tmp2_ = _tmp1_; _tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_); _tmp4_ = _tmp3_; _g_free0 (_tmp2_); regex = _tmp4_; if (_inner_error_ != NULL) { if (_inner_error_->domain == G_REGEX_ERROR) { goto __catch0_g_regex_error; } g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } _tmp5_ = regex; _tmp6_ = replacement; _tmp7_ = g_regex_replace_literal (_tmp5_, self, (gssize) (-1), 0, _tmp6_, 0, &_inner_error_); _tmp8_ = _tmp7_; if (_inner_error_ != NULL) { _g_regex_unref0 (regex); if (_inner_error_->domain == G_REGEX_ERROR) { goto __catch0_g_regex_error; } _g_regex_unref0 (regex); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } result = _tmp8_; _g_regex_unref0 (regex); return result; } goto __finally0; __catch0_g_regex_error: { GError* e = NULL; e = _inner_error_; _inner_error_ = NULL; g_assert_not_reached (); _g_error_free0 (e); } __finally0: if (_inner_error_ != NULL) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } } static void vala_ccode_base_module_real_visit_string_literal (ValaCodeVisitor* base, ValaStringLiteral* expr) { ValaCCodeBaseModule * self; ValaStringLiteral* _tmp0_; ValaStringLiteral* _tmp1_; const gchar* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_ = NULL; gchar* _tmp5_; ValaCCodeConstant* _tmp6_; ValaCCodeConstant* _tmp7_; ValaStringLiteral* _tmp8_; gboolean _tmp9_; gboolean _tmp10_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = expr; _tmp2_ = vala_string_literal_get_value (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = string_replace (_tmp3_, "\n", "\\n"); _tmp5_ = _tmp4_; _tmp6_ = vala_ccode_constant_new_string (_tmp5_); _tmp7_ = _tmp6_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, (ValaCCodeExpression*) _tmp7_); _vala_ccode_node_unref0 (_tmp7_); _g_free0 (_tmp5_); _tmp8_ = expr; _tmp9_ = vala_string_literal_get_translate (_tmp8_); _tmp10_ = _tmp9_; if (_tmp10_) { ValaSymbol* _tmp11_; ValaScope* _tmp12_; ValaScope* _tmp13_; ValaSymbol* _tmp14_ = NULL; ValaSymbol* _tmp15_; ValaScope* _tmp16_; ValaScope* _tmp17_; ValaSymbol* _tmp18_ = NULL; ValaMethod* _tmp19_; ValaMethod* m; ValaCCodeFile* _tmp20_; ValaMethod* _tmp21_; ValaMethod* _tmp22_; gchar* _tmp23_ = NULL; gchar* _tmp24_; ValaCCodeIdentifier* _tmp25_; ValaCCodeIdentifier* _tmp26_; ValaCCodeFunctionCall* _tmp27_; ValaCCodeFunctionCall* _tmp28_; ValaCCodeFunctionCall* translate; ValaCCodeFunctionCall* _tmp29_; ValaStringLiteral* _tmp30_; ValaCCodeExpression* _tmp31_ = NULL; ValaCCodeExpression* _tmp32_; ValaStringLiteral* _tmp33_; ValaCCodeFunctionCall* _tmp34_; _tmp11_ = self->root_symbol; _tmp12_ = vala_symbol_get_scope (_tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_scope_lookup (_tmp13_, "GLib"); _tmp15_ = _tmp14_; _tmp16_ = vala_symbol_get_scope (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = vala_scope_lookup (_tmp17_, "_"); _tmp19_ = VALA_METHOD (_tmp18_); _vala_code_node_unref0 (_tmp15_); m = _tmp19_; _tmp20_ = self->cfile; _tmp21_ = m; _tmp22_ = m; _tmp23_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp22_); _tmp24_ = _tmp23_; vala_ccode_base_module_add_symbol_declaration (self, _tmp20_, (ValaSymbol*) _tmp21_, _tmp24_); _g_free0 (_tmp24_); _tmp25_ = vala_ccode_identifier_new ("_"); _tmp26_ = _tmp25_; _tmp27_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp26_); _tmp28_ = _tmp27_; _vala_ccode_node_unref0 (_tmp26_); translate = _tmp28_; _tmp29_ = translate; _tmp30_ = expr; _tmp31_ = vala_ccode_base_module_get_cvalue (self, (ValaExpression*) _tmp30_); _tmp32_ = _tmp31_; vala_ccode_function_call_add_argument (_tmp29_, _tmp32_); _vala_ccode_node_unref0 (_tmp32_); _tmp33_ = expr; _tmp34_ = translate; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp33_, (ValaCCodeExpression*) _tmp34_); _vala_ccode_node_unref0 (translate); _vala_code_node_unref0 (m); } } static void vala_ccode_base_module_real_visit_regex_literal (ValaCodeVisitor* base, ValaRegexLiteral* expr) { ValaCCodeBaseModule * self; ValaRegexLiteral* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; gchar** _tmp3_; gchar** _tmp4_ = NULL; gchar** parts; gint parts_length1; gint _parts_size_; gchar** _tmp5_; gint _tmp5__length1; const gchar* _tmp6_; gchar* _tmp7_ = NULL; gchar* re; gchar* _tmp8_; gchar* flags; gchar** _tmp9_; gint _tmp9__length1; const gchar* _tmp10_; gboolean _tmp11_ = FALSE; gchar** _tmp14_; gint _tmp14__length1; const gchar* _tmp15_; gboolean _tmp16_ = FALSE; gchar** _tmp19_; gint _tmp19__length1; const gchar* _tmp20_; gboolean _tmp21_ = FALSE; gchar** _tmp24_; gint _tmp24__length1; const gchar* _tmp25_; gboolean _tmp26_ = FALSE; ValaCCodeDeclaration* _tmp29_; ValaCCodeDeclaration* _cdecl_; gint _tmp30_; gchar* _tmp31_ = NULL; gchar* cname; gint _tmp32_; gint _tmp97_; ValaCCodeDeclaration* _tmp98_; const gchar* _tmp99_; gchar* _tmp100_; gchar* _tmp101_; ValaCCodeVariableDeclarator* _tmp102_; ValaCCodeVariableDeclarator* _tmp103_; ValaCCodeDeclaration* _tmp104_; const gchar* _tmp105_; const gchar* _tmp106_; const gchar* _tmp107_; gchar* _tmp108_ = NULL; gchar* _tmp109_; ValaCCodeConstant* _tmp110_; ValaCCodeConstant* _tmp111_; ValaCCodeConstant* regex_const; ValaCCodeFile* _tmp112_; ValaCCodeDeclaration* _tmp113_; ValaRegexLiteral* _tmp114_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_regex_literal_get_value (_tmp0_); _tmp2_ = _tmp1_; _tmp4_ = _tmp3_ = g_strsplit (_tmp2_, "/", 3); parts = _tmp4_; parts_length1 = _vala_array_length (_tmp3_); _parts_size_ = parts_length1; _tmp5_ = parts; _tmp5__length1 = parts_length1; _tmp6_ = _tmp5_[2]; _tmp7_ = g_strescape (_tmp6_, ""); re = _tmp7_; _tmp8_ = g_strdup ("0"); flags = _tmp8_; _tmp9_ = parts; _tmp9__length1 = parts_length1; _tmp10_ = _tmp9_[1]; _tmp11_ = string_contains (_tmp10_, "i"); if (_tmp11_) { const gchar* _tmp12_; gchar* _tmp13_; _tmp12_ = flags; _tmp13_ = g_strconcat (_tmp12_, " | G_REGEX_CASELESS", NULL); _g_free0 (flags); flags = _tmp13_; } _tmp14_ = parts; _tmp14__length1 = parts_length1; _tmp15_ = _tmp14_[1]; _tmp16_ = string_contains (_tmp15_, "m"); if (_tmp16_) { const gchar* _tmp17_; gchar* _tmp18_; _tmp17_ = flags; _tmp18_ = g_strconcat (_tmp17_, " | G_REGEX_MULTILINE", NULL); _g_free0 (flags); flags = _tmp18_; } _tmp19_ = parts; _tmp19__length1 = parts_length1; _tmp20_ = _tmp19_[1]; _tmp21_ = string_contains (_tmp20_, "s"); if (_tmp21_) { const gchar* _tmp22_; gchar* _tmp23_; _tmp22_ = flags; _tmp23_ = g_strconcat (_tmp22_, " | G_REGEX_DOTALL", NULL); _g_free0 (flags); flags = _tmp23_; } _tmp24_ = parts; _tmp24__length1 = parts_length1; _tmp25_ = _tmp24_[1]; _tmp26_ = string_contains (_tmp25_, "x"); if (_tmp26_) { const gchar* _tmp27_; gchar* _tmp28_; _tmp27_ = flags; _tmp28_ = g_strconcat (_tmp27_, " | G_REGEX_EXTENDED", NULL); _g_free0 (flags); flags = _tmp28_; } _tmp29_ = vala_ccode_declaration_new ("GRegex*"); _cdecl_ = _tmp29_; _tmp30_ = self->next_regex_id; _tmp31_ = g_strdup_printf ("_tmp_regex_%d", _tmp30_); cname = _tmp31_; _tmp32_ = self->next_regex_id; if (_tmp32_ == 0) { ValaCCodeFunction* _tmp33_; ValaCCodeFunction* fun; ValaCCodeFunction* _tmp34_; ValaCCodeFunction* _tmp35_; ValaCCodeParameter* _tmp36_; ValaCCodeParameter* _tmp37_; ValaCCodeFunction* _tmp38_; ValaCCodeParameter* _tmp39_; ValaCCodeParameter* _tmp40_; ValaCCodeFunction* _tmp41_; ValaCCodeParameter* _tmp42_; ValaCCodeParameter* _tmp43_; ValaCCodeFunction* _tmp44_; ValaCCodeIdentifier* _tmp45_; ValaCCodeIdentifier* _tmp46_; ValaCCodeFunctionCall* _tmp47_; ValaCCodeFunctionCall* _tmp48_; ValaCCodeFunctionCall* once_enter_call; ValaCCodeFunctionCall* _tmp49_; ValaCCodeConstant* _tmp50_; ValaCCodeConstant* _tmp51_; ValaCCodeFunction* _tmp52_; ValaCCodeFunction* _tmp53_; ValaCCodeFunctionCall* _tmp54_; ValaCCodeIdentifier* _tmp55_; ValaCCodeIdentifier* _tmp56_; ValaCCodeFunctionCall* _tmp57_; ValaCCodeFunctionCall* _tmp58_; ValaCCodeFunctionCall* regex_new_call; ValaCCodeFunctionCall* _tmp59_; ValaCCodeConstant* _tmp60_; ValaCCodeConstant* _tmp61_; ValaCCodeFunctionCall* _tmp62_; ValaCCodeConstant* _tmp63_; ValaCCodeConstant* _tmp64_; ValaCCodeFunctionCall* _tmp65_; ValaCCodeConstant* _tmp66_; ValaCCodeConstant* _tmp67_; ValaCCodeFunctionCall* _tmp68_; ValaCCodeConstant* _tmp69_; ValaCCodeConstant* _tmp70_; ValaCCodeFunction* _tmp71_; ValaCCodeFunction* _tmp72_; ValaCCodeIdentifier* _tmp73_; ValaCCodeIdentifier* _tmp74_; ValaCCodeFunctionCall* _tmp75_; ValaCCodeIdentifier* _tmp76_; ValaCCodeIdentifier* _tmp77_; ValaCCodeFunctionCall* _tmp78_; ValaCCodeFunctionCall* _tmp79_; ValaCCodeFunctionCall* once_leave_call; ValaCCodeFunctionCall* _tmp80_; ValaCCodeConstant* _tmp81_; ValaCCodeConstant* _tmp82_; ValaCCodeFunctionCall* _tmp83_; ValaCCodeConstant* _tmp84_; ValaCCodeConstant* _tmp85_; ValaCCodeFunction* _tmp86_; ValaCCodeFunction* _tmp87_; ValaCCodeFunctionCall* _tmp88_; ValaCCodeFunction* _tmp89_; ValaCCodeFunction* _tmp90_; ValaCCodeFunction* _tmp91_; ValaCCodeFunction* _tmp92_; ValaCCodeIdentifier* _tmp93_; ValaCCodeIdentifier* _tmp94_; ValaCCodeFile* _tmp95_; ValaCCodeFunction* _tmp96_; _tmp33_ = vala_ccode_function_new ("_thread_safe_regex_init", "GRegex*"); fun = _tmp33_; _tmp34_ = fun; vala_ccode_function_set_modifiers (_tmp34_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_INLINE); _tmp35_ = fun; _tmp36_ = vala_ccode_parameter_new ("re", "GRegex**"); _tmp37_ = _tmp36_; vala_ccode_function_add_parameter (_tmp35_, _tmp37_); _vala_ccode_node_unref0 (_tmp37_); _tmp38_ = fun; _tmp39_ = vala_ccode_parameter_new ("pattern", "const gchar *"); _tmp40_ = _tmp39_; vala_ccode_function_add_parameter (_tmp38_, _tmp40_); _vala_ccode_node_unref0 (_tmp40_); _tmp41_ = fun; _tmp42_ = vala_ccode_parameter_new ("match_options", "GRegexMatchFlags"); _tmp43_ = _tmp42_; vala_ccode_function_add_parameter (_tmp41_, _tmp43_); _vala_ccode_node_unref0 (_tmp43_); _tmp44_ = fun; vala_ccode_base_module_push_function (self, _tmp44_); _tmp45_ = vala_ccode_identifier_new ("g_once_init_enter"); _tmp46_ = _tmp45_; _tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_); _tmp48_ = _tmp47_; _vala_ccode_node_unref0 (_tmp46_); once_enter_call = _tmp48_; _tmp49_ = once_enter_call; _tmp50_ = vala_ccode_constant_new ("(volatile gsize*) re"); _tmp51_ = _tmp50_; vala_ccode_function_call_add_argument (_tmp49_, (ValaCCodeExpression*) _tmp51_); _vala_ccode_node_unref0 (_tmp51_); _tmp52_ = vala_ccode_base_module_get_ccode (self); _tmp53_ = _tmp52_; _tmp54_ = once_enter_call; vala_ccode_function_open_if (_tmp53_, (ValaCCodeExpression*) _tmp54_); _tmp55_ = vala_ccode_identifier_new ("g_regex_new"); _tmp56_ = _tmp55_; _tmp57_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp56_); _tmp58_ = _tmp57_; _vala_ccode_node_unref0 (_tmp56_); regex_new_call = _tmp58_; _tmp59_ = regex_new_call; _tmp60_ = vala_ccode_constant_new ("pattern"); _tmp61_ = _tmp60_; vala_ccode_function_call_add_argument (_tmp59_, (ValaCCodeExpression*) _tmp61_); _vala_ccode_node_unref0 (_tmp61_); _tmp62_ = regex_new_call; _tmp63_ = vala_ccode_constant_new ("match_options"); _tmp64_ = _tmp63_; vala_ccode_function_call_add_argument (_tmp62_, (ValaCCodeExpression*) _tmp64_); _vala_ccode_node_unref0 (_tmp64_); _tmp65_ = regex_new_call; _tmp66_ = vala_ccode_constant_new ("0"); _tmp67_ = _tmp66_; vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp67_); _vala_ccode_node_unref0 (_tmp67_); _tmp68_ = regex_new_call; _tmp69_ = vala_ccode_constant_new ("NULL"); _tmp70_ = _tmp69_; vala_ccode_function_call_add_argument (_tmp68_, (ValaCCodeExpression*) _tmp70_); _vala_ccode_node_unref0 (_tmp70_); _tmp71_ = vala_ccode_base_module_get_ccode (self); _tmp72_ = _tmp71_; _tmp73_ = vala_ccode_identifier_new ("GRegex* val"); _tmp74_ = _tmp73_; _tmp75_ = regex_new_call; vala_ccode_function_add_assignment (_tmp72_, (ValaCCodeExpression*) _tmp74_, (ValaCCodeExpression*) _tmp75_); _vala_ccode_node_unref0 (_tmp74_); _tmp76_ = vala_ccode_identifier_new ("g_once_init_leave"); _tmp77_ = _tmp76_; _tmp78_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp77_); _tmp79_ = _tmp78_; _vala_ccode_node_unref0 (_tmp77_); once_leave_call = _tmp79_; _tmp80_ = once_leave_call; _tmp81_ = vala_ccode_constant_new ("(volatile gsize*) re"); _tmp82_ = _tmp81_; vala_ccode_function_call_add_argument (_tmp80_, (ValaCCodeExpression*) _tmp82_); _vala_ccode_node_unref0 (_tmp82_); _tmp83_ = once_leave_call; _tmp84_ = vala_ccode_constant_new ("(gsize) val"); _tmp85_ = _tmp84_; vala_ccode_function_call_add_argument (_tmp83_, (ValaCCodeExpression*) _tmp85_); _vala_ccode_node_unref0 (_tmp85_); _tmp86_ = vala_ccode_base_module_get_ccode (self); _tmp87_ = _tmp86_; _tmp88_ = once_leave_call; vala_ccode_function_add_expression (_tmp87_, (ValaCCodeExpression*) _tmp88_); _tmp89_ = vala_ccode_base_module_get_ccode (self); _tmp90_ = _tmp89_; vala_ccode_function_close (_tmp90_); _tmp91_ = vala_ccode_base_module_get_ccode (self); _tmp92_ = _tmp91_; _tmp93_ = vala_ccode_identifier_new ("*re"); _tmp94_ = _tmp93_; vala_ccode_function_add_return (_tmp92_, (ValaCCodeExpression*) _tmp94_); _vala_ccode_node_unref0 (_tmp94_); vala_ccode_base_module_pop_function (self); _tmp95_ = self->cfile; _tmp96_ = fun; vala_ccode_file_add_function (_tmp95_, _tmp96_); _vala_ccode_node_unref0 (once_leave_call); _vala_ccode_node_unref0 (regex_new_call); _vala_ccode_node_unref0 (once_enter_call); _vala_ccode_node_unref0 (fun); } _tmp97_ = self->next_regex_id; self->next_regex_id = _tmp97_ + 1; _tmp98_ = _cdecl_; _tmp99_ = cname; _tmp100_ = g_strconcat (_tmp99_, " = NULL", NULL); _tmp101_ = _tmp100_; _tmp102_ = vala_ccode_variable_declarator_new (_tmp101_, NULL, NULL); _tmp103_ = _tmp102_; vala_ccode_declaration_add_declarator (_tmp98_, (ValaCCodeDeclarator*) _tmp103_); _vala_ccode_node_unref0 (_tmp103_); _g_free0 (_tmp101_); _tmp104_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp104_, VALA_CCODE_MODIFIERS_STATIC); _tmp105_ = cname; _tmp106_ = re; _tmp107_ = flags; _tmp108_ = g_strdup_printf ("_thread_safe_regex_init (&%s, \"%s\", %s)", _tmp105_, _tmp106_, _tmp107_); _tmp109_ = _tmp108_; _tmp110_ = vala_ccode_constant_new (_tmp109_); _tmp111_ = _tmp110_; _g_free0 (_tmp109_); regex_const = _tmp111_; _tmp112_ = self->cfile; _tmp113_ = _cdecl_; vala_ccode_file_add_constant_declaration (_tmp112_, (ValaCCodeNode*) _tmp113_); _tmp114_ = expr; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp114_, (ValaCCodeExpression*) regex_const); _vala_ccode_node_unref0 (regex_const); _g_free0 (cname); _vala_ccode_node_unref0 (_cdecl_); _g_free0 (flags); _g_free0 (re); parts = (_vala_array_free (parts, parts_length1, (GDestroyNotify) g_free), NULL); } static void vala_ccode_base_module_real_visit_null_literal (ValaCodeVisitor* base, ValaNullLiteral* expr) { ValaCCodeBaseModule * self; ValaCodeContext* _tmp0_; ValaProfile _tmp1_; ValaProfile _tmp2_; ValaNullLiteral* _tmp4_; ValaCCodeConstant* _tmp5_; ValaCCodeConstant* _tmp6_; ValaNullLiteral* _tmp7_; ValaDataType* _tmp8_; ValaDataType* _tmp9_; ValaArrayType* _tmp10_; ValaArrayType* array_type; ValaNullLiteral* _tmp11_; ValaDataType* _tmp12_; ValaDataType* _tmp13_; ValaDelegateType* _tmp14_; ValaDelegateType* delegate_type; ValaArrayType* _tmp15_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = self->priv->_context; _tmp1_ = vala_code_context_get_profile (_tmp0_); _tmp2_ = _tmp1_; if (_tmp2_ != VALA_PROFILE_GOBJECT) { ValaCCodeFile* _tmp3_; _tmp3_ = self->cfile; vala_ccode_file_add_include (_tmp3_, "stddef.h", FALSE); } _tmp4_ = expr; _tmp5_ = vala_ccode_constant_new ("NULL"); _tmp6_ = _tmp5_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp4_, (ValaCCodeExpression*) _tmp6_); _vala_ccode_node_unref0 (_tmp6_); _tmp7_ = expr; _tmp8_ = vala_expression_get_target_type ((ValaExpression*) _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp9_) ? ((ValaArrayType*) _tmp9_) : NULL); array_type = _tmp10_; _tmp11_ = expr; _tmp12_ = vala_expression_get_target_type ((ValaExpression*) _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp13_) ? ((ValaDelegateType*) _tmp13_) : NULL); delegate_type = _tmp14_; _tmp15_ = array_type; if (_tmp15_ != NULL) { { gint dim; dim = 1; { gboolean _tmp16_; _tmp16_ = TRUE; while (TRUE) { gboolean _tmp17_; gint _tmp19_; ValaArrayType* _tmp20_; gint _tmp21_; gint _tmp22_; ValaNullLiteral* _tmp23_; ValaCCodeConstant* _tmp24_; ValaCCodeConstant* _tmp25_; _tmp17_ = _tmp16_; if (!_tmp17_) { gint _tmp18_; _tmp18_ = dim; dim = _tmp18_ + 1; } _tmp16_ = FALSE; _tmp19_ = dim; _tmp20_ = array_type; _tmp21_ = vala_array_type_get_rank (_tmp20_); _tmp22_ = _tmp21_; if (!(_tmp19_ <= _tmp22_)) { break; } _tmp23_ = expr; _tmp24_ = vala_ccode_constant_new ("0"); _tmp25_ = _tmp24_; vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp23_, (ValaCCodeExpression*) _tmp25_); _vala_ccode_node_unref0 (_tmp25_); } } } } else { gboolean _tmp26_ = FALSE; ValaDelegateType* _tmp27_; gboolean _tmp33_; _tmp27_ = delegate_type; if (_tmp27_ != NULL) { ValaDelegateType* _tmp28_; ValaDelegate* _tmp29_; ValaDelegate* _tmp30_; gboolean _tmp31_; gboolean _tmp32_; _tmp28_ = delegate_type; _tmp29_ = vala_delegate_type_get_delegate_symbol (_tmp28_); _tmp30_ = _tmp29_; _tmp31_ = vala_delegate_get_has_target (_tmp30_); _tmp32_ = _tmp31_; _tmp26_ = _tmp32_; } else { _tmp26_ = FALSE; } _tmp33_ = _tmp26_; if (_tmp33_) { ValaNullLiteral* _tmp34_; ValaCCodeConstant* _tmp35_; ValaCCodeConstant* _tmp36_; ValaNullLiteral* _tmp37_; ValaCCodeConstant* _tmp38_; ValaCCodeConstant* _tmp39_; _tmp34_ = expr; _tmp35_ = vala_ccode_constant_new ("NULL"); _tmp36_ = _tmp35_; vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp34_, (ValaCCodeExpression*) _tmp36_); _vala_ccode_node_unref0 (_tmp36_); _tmp37_ = expr; _tmp38_ = vala_ccode_constant_new ("NULL"); _tmp39_ = _tmp38_; vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp37_, (ValaCCodeExpression*) _tmp39_); _vala_ccode_node_unref0 (_tmp39_); } } _vala_code_node_unref0 (delegate_type); _vala_code_node_unref0 (array_type); } static ValaTargetValue* vala_ccode_base_module_real_get_local_cvalue (ValaCCodeBaseModule* self, ValaLocalVariable* local) { g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_get_local_cvalue'", g_type_name (G_TYPE_FROM_INSTANCE (self))); return NULL; } ValaTargetValue* vala_ccode_base_module_get_local_cvalue (ValaCCodeBaseModule* self, ValaLocalVariable* local) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_local_cvalue (self, local); } static ValaTargetValue* vala_ccode_base_module_real_get_parameter_cvalue (ValaCCodeBaseModule* self, ValaParameter* param) { g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_get_parameter_cvalue'", g_type_name (G_TYPE_FROM_INSTANCE (self))); return NULL; } ValaTargetValue* vala_ccode_base_module_get_parameter_cvalue (ValaCCodeBaseModule* self, ValaParameter* param) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_parameter_cvalue (self, param); } static ValaTargetValue* vala_ccode_base_module_real_get_field_cvalue (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance) { g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_get_field_cvalue'", g_type_name (G_TYPE_FROM_INSTANCE (self))); return NULL; } ValaTargetValue* vala_ccode_base_module_get_field_cvalue (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_field_cvalue (self, field, instance); } static ValaTargetValue* vala_ccode_base_module_real_load_variable (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value) { g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_load_variable'", g_type_name (G_TYPE_FROM_INSTANCE (self))); return NULL; } ValaTargetValue* vala_ccode_base_module_load_variable (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->load_variable (self, variable, value); } static ValaTargetValue* vala_ccode_base_module_real_load_this_parameter (ValaCCodeBaseModule* self, ValaTypeSymbol* sym) { g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_load_this_parameter'", g_type_name (G_TYPE_FROM_INSTANCE (self))); return NULL; } ValaTargetValue* vala_ccode_base_module_load_this_parameter (ValaCCodeBaseModule* self, ValaTypeSymbol* sym) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->load_this_parameter (self, sym); } static void vala_ccode_base_module_real_store_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value) { g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_store_value'", g_type_name (G_TYPE_FROM_INSTANCE (self))); return; } void vala_ccode_base_module_store_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->store_value (self, lvalue, value); } static gchar* vala_ccode_base_module_real_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname) { gchar* result = NULL; g_return_val_if_fail (delegate_cname != NULL, NULL); g_assert_not_reached (); return result; } gchar* vala_ccode_base_module_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_delegate_target_cname (self, delegate_cname); } static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_cexpression (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify) { ValaCCodeExpression* _vala_delegate_target_destroy_notify = NULL; ValaCCodeExpression* result = NULL; g_return_val_if_fail (delegate_expr != NULL, NULL); g_assert_not_reached (); if (delegate_target_destroy_notify) { *delegate_target_destroy_notify = _vala_delegate_target_destroy_notify; } else { _vala_ccode_node_unref0 (_vala_delegate_target_destroy_notify); } return result; } ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cexpression (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_delegate_target_cexpression (self, delegate_expr, delegate_target_destroy_notify); } static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) { ValaCCodeExpression* result = NULL; ValaCCodeInvalidExpression* _tmp0_; g_return_val_if_fail (value != NULL, NULL); _tmp0_ = vala_ccode_invalid_expression_new (); result = (ValaCCodeExpression*) _tmp0_; return result; } ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_delegate_target_cvalue (self, value); } static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) { ValaCCodeExpression* result = NULL; ValaCCodeInvalidExpression* _tmp0_; g_return_val_if_fail (value != NULL, NULL); _tmp0_ = vala_ccode_invalid_expression_new (); result = (ValaCCodeExpression*) _tmp0_; return result; } ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_delegate_target_destroy_notify_cvalue (self, value); } static gchar* vala_ccode_base_module_real_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname) { gchar* result = NULL; g_return_val_if_fail (delegate_cname != NULL, NULL); g_assert_not_reached (); return result; } gchar* vala_ccode_base_module_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_delegate_target_destroy_notify_cname (self, delegate_cname); } static void vala_ccode_base_module_real_visit_base_access (ValaCodeVisitor* base, ValaBaseAccess* expr) { ValaCCodeBaseModule * self; ValaCCodeExpression* this_access = NULL; gboolean _tmp0_ = FALSE; ValaBaseAccess* _tmp5_; ValaCCodeExpression* _tmp6_; ValaBaseAccess* _tmp7_; ValaDataType* _tmp8_; ValaDataType* _tmp9_; ValaTypeSymbol* _tmp10_; ValaTypeSymbol* _tmp11_; ValaCCodeFunctionCall* _tmp12_ = NULL; ValaCCodeFunctionCall* _tmp13_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = vala_ccode_base_module_is_in_coroutine (self); if (_tmp0_) { ValaCCodeIdentifier* _tmp1_; ValaCCodeIdentifier* _tmp2_; ValaCCodeMemberAccess* _tmp3_; _tmp1_ = vala_ccode_identifier_new ("_data_"); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp2_, "self"); _vala_ccode_node_unref0 (this_access); this_access = (ValaCCodeExpression*) _tmp3_; _vala_ccode_node_unref0 (_tmp2_); } else { ValaCCodeIdentifier* _tmp4_; _tmp4_ = vala_ccode_identifier_new ("self"); _vala_ccode_node_unref0 (this_access); this_access = (ValaCCodeExpression*) _tmp4_; } _tmp5_ = expr; _tmp6_ = this_access; _tmp7_ = expr; _tmp8_ = vala_expression_get_value_type ((ValaExpression*) _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_data_type_get_data_type (_tmp9_); _tmp11_ = _tmp10_; _tmp12_ = vala_ccode_base_module_generate_instance_cast (self, _tmp6_, _tmp11_); _tmp13_ = _tmp12_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp5_, (ValaCCodeExpression*) _tmp13_); _vala_ccode_node_unref0 (_tmp13_); _vala_ccode_node_unref0 (this_access); } static void vala_ccode_base_module_real_visit_postfix_expression (ValaCodeVisitor* base, ValaPostfixExpression* expr) { ValaCCodeBaseModule * self; ValaPostfixExpression* _tmp0_; ValaExpression* _tmp1_; ValaExpression* _tmp2_; ValaMemberAccess* _tmp3_ = NULL; ValaMemberAccess* ma; ValaMemberAccess* _tmp4_; ValaPostfixExpression* _tmp40_; ValaExpression* _tmp41_; ValaExpression* _tmp42_; ValaTargetValue* _tmp43_; ValaTargetValue* _tmp44_; ValaPostfixExpression* _tmp45_; ValaTargetValue* _tmp46_ = NULL; ValaTargetValue* temp_value; ValaCCodeBinaryOperator _tmp47_ = 0; ValaPostfixExpression* _tmp48_; gboolean _tmp49_; gboolean _tmp50_; ValaCCodeBinaryOperator _tmp51_; ValaCCodeBinaryOperator op; ValaCCodeBinaryOperator _tmp52_; ValaTargetValue* _tmp53_; ValaCCodeExpression* _tmp54_ = NULL; ValaCCodeExpression* _tmp55_; ValaCCodeConstant* _tmp56_; ValaCCodeConstant* _tmp57_; ValaCCodeBinaryExpression* _tmp58_; ValaCCodeBinaryExpression* _tmp59_; ValaCCodeBinaryExpression* cexpr; ValaCCodeFunction* _tmp60_; ValaCCodeFunction* _tmp61_; ValaPostfixExpression* _tmp62_; ValaExpression* _tmp63_; ValaExpression* _tmp64_; ValaCCodeExpression* _tmp65_ = NULL; ValaCCodeExpression* _tmp66_; ValaCCodeBinaryExpression* _tmp67_; ValaPostfixExpression* _tmp68_; ValaTargetValue* _tmp69_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_postfix_expression_get_inner (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_find_property_access (self, _tmp2_); ma = _tmp3_; _tmp4_ = ma; if (_tmp4_ != NULL) { ValaMemberAccess* _tmp5_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; ValaProperty* _tmp8_; ValaProperty* prop; ValaCCodeBinaryOperator _tmp9_ = 0; ValaPostfixExpression* _tmp10_; gboolean _tmp11_; gboolean _tmp12_; ValaCCodeBinaryOperator _tmp13_; ValaCCodeBinaryOperator op; ValaCCodeBinaryOperator _tmp14_; ValaPostfixExpression* _tmp15_; ValaExpression* _tmp16_; ValaExpression* _tmp17_; ValaCCodeExpression* _tmp18_ = NULL; ValaCCodeExpression* _tmp19_; ValaCCodeConstant* _tmp20_; ValaCCodeConstant* _tmp21_; ValaCCodeBinaryExpression* _tmp22_; ValaCCodeBinaryExpression* _tmp23_; ValaCCodeBinaryExpression* cexpr; ValaProperty* _tmp24_; ValaMemberAccess* _tmp25_; ValaExpression* _tmp26_; ValaExpression* _tmp27_; ValaPostfixExpression* _tmp28_; ValaDataType* _tmp29_; ValaDataType* _tmp30_; ValaCCodeBinaryExpression* _tmp31_; ValaGLibValue* _tmp32_; ValaGLibValue* _tmp33_; ValaPostfixExpression* _tmp34_; ValaPostfixExpression* _tmp35_; ValaExpression* _tmp36_; ValaExpression* _tmp37_; ValaTargetValue* _tmp38_; ValaTargetValue* _tmp39_; _tmp5_ = ma; _tmp6_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp5_); _tmp7_ = _tmp6_; _tmp8_ = _vala_code_node_ref0 (VALA_PROPERTY (_tmp7_)); prop = _tmp8_; _tmp10_ = expr; _tmp11_ = vala_postfix_expression_get_increment (_tmp10_); _tmp12_ = _tmp11_; if (_tmp12_) { _tmp9_ = VALA_CCODE_BINARY_OPERATOR_PLUS; } else { _tmp9_ = VALA_CCODE_BINARY_OPERATOR_MINUS; } _tmp13_ = _tmp9_; op = _tmp13_; _tmp14_ = op; _tmp15_ = expr; _tmp16_ = vala_postfix_expression_get_inner (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = vala_ccode_base_module_get_cvalue (self, _tmp17_); _tmp19_ = _tmp18_; _tmp20_ = vala_ccode_constant_new ("1"); _tmp21_ = _tmp20_; _tmp22_ = vala_ccode_binary_expression_new (_tmp14_, _tmp19_, (ValaCCodeExpression*) _tmp21_); _tmp23_ = _tmp22_; _vala_ccode_node_unref0 (_tmp21_); _vala_ccode_node_unref0 (_tmp19_); cexpr = _tmp23_; _tmp24_ = prop; _tmp25_ = ma; _tmp26_ = vala_member_access_get_inner (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = expr; _tmp29_ = vala_expression_get_value_type ((ValaExpression*) _tmp28_); _tmp30_ = _tmp29_; _tmp31_ = cexpr; _tmp32_ = vala_glib_value_new (_tmp30_, (ValaCCodeExpression*) _tmp31_, FALSE); _tmp33_ = _tmp32_; vala_ccode_base_module_store_property (self, _tmp24_, _tmp27_, (ValaTargetValue*) _tmp33_); _vala_target_value_unref0 (_tmp33_); _tmp34_ = expr; _tmp35_ = expr; _tmp36_ = vala_postfix_expression_get_inner (_tmp35_); _tmp37_ = _tmp36_; _tmp38_ = vala_expression_get_target_value (_tmp37_); _tmp39_ = _tmp38_; vala_expression_set_target_value ((ValaExpression*) _tmp34_, _tmp39_); _vala_ccode_node_unref0 (cexpr); _vala_code_node_unref0 (prop); _vala_code_node_unref0 (ma); return; } _tmp40_ = expr; _tmp41_ = vala_postfix_expression_get_inner (_tmp40_); _tmp42_ = _tmp41_; _tmp43_ = vala_expression_get_target_value (_tmp42_); _tmp44_ = _tmp43_; _tmp45_ = expr; _tmp46_ = vala_ccode_base_module_store_temp_value (self, _tmp44_, (ValaCodeNode*) _tmp45_, NULL); temp_value = _tmp46_; _tmp48_ = expr; _tmp49_ = vala_postfix_expression_get_increment (_tmp48_); _tmp50_ = _tmp49_; if (_tmp50_) { _tmp47_ = VALA_CCODE_BINARY_OPERATOR_PLUS; } else { _tmp47_ = VALA_CCODE_BINARY_OPERATOR_MINUS; } _tmp51_ = _tmp47_; op = _tmp51_; _tmp52_ = op; _tmp53_ = temp_value; _tmp54_ = vala_ccode_base_module_get_cvalue_ (self, _tmp53_); _tmp55_ = _tmp54_; _tmp56_ = vala_ccode_constant_new ("1"); _tmp57_ = _tmp56_; _tmp58_ = vala_ccode_binary_expression_new (_tmp52_, _tmp55_, (ValaCCodeExpression*) _tmp57_); _tmp59_ = _tmp58_; _vala_ccode_node_unref0 (_tmp57_); _vala_ccode_node_unref0 (_tmp55_); cexpr = _tmp59_; _tmp60_ = vala_ccode_base_module_get_ccode (self); _tmp61_ = _tmp60_; _tmp62_ = expr; _tmp63_ = vala_postfix_expression_get_inner (_tmp62_); _tmp64_ = _tmp63_; _tmp65_ = vala_ccode_base_module_get_cvalue (self, _tmp64_); _tmp66_ = _tmp65_; _tmp67_ = cexpr; vala_ccode_function_add_assignment (_tmp61_, _tmp66_, (ValaCCodeExpression*) _tmp67_); _vala_ccode_node_unref0 (_tmp66_); _tmp68_ = expr; _tmp69_ = temp_value; vala_expression_set_target_value ((ValaExpression*) _tmp68_, _tmp69_); _vala_ccode_node_unref0 (cexpr); _vala_target_value_unref0 (temp_value); _vala_code_node_unref0 (ma); } static ValaMemberAccess* vala_ccode_base_module_find_property_access (ValaCCodeBaseModule* self, ValaExpression* expr) { ValaMemberAccess* result = NULL; ValaExpression* _tmp0_; ValaExpression* _tmp1_; ValaMemberAccess* _tmp2_; ValaMemberAccess* ma; ValaMemberAccess* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* _tmp5_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (expr != NULL, NULL); _tmp0_ = expr; if (!VALA_IS_MEMBER_ACCESS (_tmp0_)) { result = NULL; return result; } _tmp1_ = expr; _tmp2_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp1_)); ma = _tmp2_; _tmp3_ = ma; _tmp4_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp3_); _tmp5_ = _tmp4_; if (VALA_IS_PROPERTY (_tmp5_)) { result = ma; return result; } result = NULL; _vala_code_node_unref0 (ma); return result; } static gboolean vala_ccode_base_module_is_limited_generic_type (ValaCCodeBaseModule* self, ValaDataType* type) { gboolean result = FALSE; ValaDataType* _tmp0_; ValaTypeParameter* _tmp1_; ValaTypeParameter* _tmp2_; ValaSymbol* _tmp3_; ValaSymbol* _tmp4_; ValaClass* _tmp5_; ValaClass* cl; ValaDataType* _tmp6_; ValaTypeParameter* _tmp7_; ValaTypeParameter* _tmp8_; ValaSymbol* _tmp9_; ValaSymbol* _tmp10_; ValaStruct* _tmp11_; ValaStruct* st; gboolean _tmp12_ = FALSE; gboolean _tmp13_ = FALSE; ValaClass* _tmp14_; gboolean _tmp18_; gboolean _tmp20_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type != NULL, FALSE); _tmp0_ = type; _tmp1_ = vala_data_type_get_type_parameter (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp4_) ? ((ValaClass*) _tmp4_) : NULL); cl = _tmp5_; _tmp6_ = type; _tmp7_ = vala_data_type_get_type_parameter (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp8_); _tmp10_ = _tmp9_; _tmp11_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp10_) ? ((ValaStruct*) _tmp10_) : NULL); st = _tmp11_; _tmp14_ = cl; if (_tmp14_ != NULL) { ValaClass* _tmp15_; gboolean _tmp16_; gboolean _tmp17_; _tmp15_ = cl; _tmp16_ = vala_class_get_is_compact (_tmp15_); _tmp17_ = _tmp16_; _tmp13_ = _tmp17_; } else { _tmp13_ = FALSE; } _tmp18_ = _tmp13_; if (_tmp18_) { _tmp12_ = TRUE; } else { ValaStruct* _tmp19_; _tmp19_ = st; _tmp12_ = _tmp19_ != NULL; } _tmp20_ = _tmp12_; if (_tmp20_) { result = TRUE; _vala_code_node_unref0 (st); _vala_code_node_unref0 (cl); return result; } result = FALSE; _vala_code_node_unref0 (st); _vala_code_node_unref0 (cl); return result; } gboolean vala_ccode_base_module_requires_copy (ValaCCodeBaseModule* self, ValaDataType* type) { gboolean result = FALSE; ValaDataType* _tmp0_; gboolean _tmp1_ = FALSE; ValaDataType* _tmp2_; ValaTypeSymbol* _tmp3_; ValaTypeSymbol* _tmp4_; ValaClass* _tmp5_; ValaClass* cl; gboolean _tmp6_ = FALSE; gboolean _tmp7_ = FALSE; ValaClass* _tmp8_; gboolean _tmp11_; gboolean _tmp15_; ValaDataType* _tmp16_; ValaTypeParameter* _tmp17_; ValaTypeParameter* _tmp18_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type != NULL, FALSE); _tmp0_ = type; _tmp1_ = vala_data_type_is_disposable (_tmp0_); if (!_tmp1_) { result = FALSE; return result; } _tmp2_ = type; _tmp3_ = vala_data_type_get_data_type (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp4_) ? ((ValaClass*) _tmp4_) : NULL); cl = _tmp5_; _tmp8_ = cl; if (_tmp8_ != NULL) { ValaClass* _tmp9_; gboolean _tmp10_ = FALSE; _tmp9_ = cl; _tmp10_ = vala_ccode_base_module_is_reference_counting ((ValaTypeSymbol*) _tmp9_); _tmp7_ = _tmp10_; } else { _tmp7_ = FALSE; } _tmp11_ = _tmp7_; if (_tmp11_) { ValaClass* _tmp12_; gchar* _tmp13_ = NULL; gchar* _tmp14_; _tmp12_ = cl; _tmp13_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) _tmp12_); _tmp14_ = _tmp13_; _tmp6_ = g_strcmp0 (_tmp14_, "") == 0; _g_free0 (_tmp14_); } else { _tmp6_ = FALSE; } _tmp15_ = _tmp6_; if (_tmp15_) { result = FALSE; _vala_code_node_unref0 (cl); return result; } _tmp16_ = type; _tmp17_ = vala_data_type_get_type_parameter (_tmp16_); _tmp18_ = _tmp17_; if (_tmp18_ != NULL) { ValaDataType* _tmp19_; gboolean _tmp20_ = FALSE; _tmp19_ = type; _tmp20_ = vala_ccode_base_module_is_limited_generic_type (self, _tmp19_); if (_tmp20_) { result = FALSE; _vala_code_node_unref0 (cl); return result; } } result = TRUE; _vala_code_node_unref0 (cl); return result; } gboolean vala_ccode_base_module_requires_destroy (ValaCCodeBaseModule* self, ValaDataType* type) { gboolean result = FALSE; ValaDataType* _tmp0_; gboolean _tmp1_ = FALSE; ValaDataType* _tmp2_; ValaArrayType* _tmp3_; ValaArrayType* array_type; gboolean _tmp4_ = FALSE; ValaArrayType* _tmp5_; gboolean _tmp9_; ValaDataType* _tmp14_; ValaTypeSymbol* _tmp15_; ValaTypeSymbol* _tmp16_; ValaClass* _tmp17_; ValaClass* cl; gboolean _tmp18_ = FALSE; gboolean _tmp19_ = FALSE; ValaClass* _tmp20_; gboolean _tmp23_; gboolean _tmp27_; ValaDataType* _tmp28_; ValaTypeParameter* _tmp29_; ValaTypeParameter* _tmp30_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type != NULL, FALSE); _tmp0_ = type; _tmp1_ = vala_data_type_is_disposable (_tmp0_); if (!_tmp1_) { result = FALSE; return result; } _tmp2_ = type; _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_; ValaDataType* _tmp11_; ValaDataType* _tmp12_; gboolean _tmp13_ = FALSE; _tmp10_ = array_type; _tmp11_ = vala_array_type_get_element_type (_tmp10_); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_base_module_requires_destroy (self, _tmp12_); result = _tmp13_; _vala_code_node_unref0 (array_type); return result; } _tmp14_ = type; _tmp15_ = vala_data_type_get_data_type (_tmp14_); _tmp16_ = _tmp15_; _tmp17_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp16_) ? ((ValaClass*) _tmp16_) : NULL); cl = _tmp17_; _tmp20_ = cl; if (_tmp20_ != NULL) { ValaClass* _tmp21_; gboolean _tmp22_ = FALSE; _tmp21_ = cl; _tmp22_ = vala_ccode_base_module_is_reference_counting ((ValaTypeSymbol*) _tmp21_); _tmp19_ = _tmp22_; } else { _tmp19_ = FALSE; } _tmp23_ = _tmp19_; if (_tmp23_) { ValaClass* _tmp24_; gchar* _tmp25_ = NULL; gchar* _tmp26_; _tmp24_ = cl; _tmp25_ = vala_ccode_base_module_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp24_); _tmp26_ = _tmp25_; _tmp18_ = g_strcmp0 (_tmp26_, "") == 0; _g_free0 (_tmp26_); } else { _tmp18_ = FALSE; } _tmp27_ = _tmp18_; if (_tmp27_) { result = FALSE; _vala_code_node_unref0 (cl); _vala_code_node_unref0 (array_type); return result; } _tmp28_ = type; _tmp29_ = vala_data_type_get_type_parameter (_tmp28_); _tmp30_ = _tmp29_; if (_tmp30_ != NULL) { ValaDataType* _tmp31_; gboolean _tmp32_ = FALSE; _tmp31_ = type; _tmp32_ = vala_ccode_base_module_is_limited_generic_type (self, _tmp31_); if (_tmp32_) { result = FALSE; _vala_code_node_unref0 (cl); _vala_code_node_unref0 (array_type); return result; } } result = TRUE; _vala_code_node_unref0 (cl); _vala_code_node_unref0 (array_type); return result; } static gboolean vala_ccode_base_module_is_ref_function_void (ValaCCodeBaseModule* self, ValaDataType* type) { gboolean result = FALSE; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; ValaClass* _tmp3_; ValaClass* cl; ValaClass* _tmp4_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type != NULL, FALSE); _tmp0_ = type; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp2_) ? ((ValaClass*) _tmp2_) : NULL); cl = _tmp3_; _tmp4_ = cl; if (_tmp4_ != NULL) { ValaClass* _tmp5_; gboolean _tmp6_ = FALSE; _tmp5_ = cl; _tmp6_ = vala_ccode_base_module_get_ccode_ref_function_void (_tmp5_); result = _tmp6_; _vala_code_node_unref0 (cl); return result; } else { result = FALSE; _vala_code_node_unref0 (cl); return result; } _vala_code_node_unref0 (cl); } static gboolean vala_ccode_base_module_is_ref_sink_function_void (ValaCCodeBaseModule* self, ValaDataType* type) { gboolean result = FALSE; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; ValaClass* _tmp3_; ValaClass* cl; ValaClass* _tmp4_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type != NULL, FALSE); _tmp0_ = type; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp2_) ? ((ValaClass*) _tmp2_) : NULL); cl = _tmp3_; _tmp4_ = cl; if (_tmp4_ != NULL) { ValaClass* _tmp5_; gboolean _tmp6_ = FALSE; _tmp5_ = cl; _tmp6_ = vala_ccode_base_module_get_ccode_ref_sink_function_void (_tmp5_); result = _tmp6_; _vala_code_node_unref0 (cl); return result; } else { result = FALSE; _vala_code_node_unref0 (cl); return result; } _vala_code_node_unref0 (cl); } static gboolean vala_ccode_base_module_is_free_function_address_of (ValaCCodeBaseModule* self, ValaDataType* type) { gboolean result = FALSE; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; ValaClass* _tmp3_; ValaClass* cl; ValaClass* _tmp4_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type != NULL, FALSE); _tmp0_ = type; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp2_) ? ((ValaClass*) _tmp2_) : NULL); cl = _tmp3_; _tmp4_ = cl; if (_tmp4_ != NULL) { ValaClass* _tmp5_; gboolean _tmp6_ = FALSE; _tmp5_ = cl; _tmp6_ = vala_ccode_base_module_get_ccode_free_function_address_of (_tmp5_); result = _tmp6_; _vala_code_node_unref0 (cl); return result; } else { result = FALSE; _vala_code_node_unref0 (cl); return result; } _vala_code_node_unref0 (cl); } static ValaTargetValue* vala_ccode_base_module_real_copy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node) { ValaTargetValue* result = NULL; ValaTargetValue* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaDataType* _tmp3_; ValaDataType* type; ValaTargetValue* _tmp4_; ValaCCodeExpression* _tmp5_ = NULL; ValaCCodeExpression* cexpr; ValaTargetValue* _tmp6_; ValaGLibValue* _tmp7_ = NULL; ValaGLibValue* _result_; ValaDataType* _tmp8_; gboolean _tmp26_ = FALSE; ValaDataType* _tmp27_; gboolean _tmp31_; ValaDataType* _tmp113_; ValaCodeNode* _tmp114_; ValaSourceReference* _tmp115_; ValaSourceReference* _tmp116_; ValaCCodeExpression* _tmp117_ = NULL; ValaCCodeExpression* dupexpr; ValaCCodeExpression* _tmp118_; gboolean _tmp120_ = FALSE; gboolean _tmp121_ = FALSE; gboolean _tmp122_ = FALSE; ValaCCodeExpression* _tmp123_; gboolean _tmp125_; gboolean _tmp127_; gboolean _tmp130_; ValaCCodeExpression* _tmp192_; ValaCCodeFunctionCall* _tmp193_; ValaCCodeFunctionCall* ccall; gboolean _tmp194_ = FALSE; gboolean _tmp195_ = FALSE; ValaDataType* _tmp196_; gboolean _tmp199_; gboolean _tmp202_; g_return_val_if_fail (value != NULL, NULL); g_return_val_if_fail (node != NULL, NULL); _tmp0_ = value; _tmp1_ = vala_target_value_get_value_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (_tmp2_); type = _tmp3_; _tmp4_ = value; _tmp5_ = vala_ccode_base_module_get_cvalue_ (self, _tmp4_); cexpr = _tmp5_; _tmp6_ = value; _tmp7_ = vala_glib_value_copy (VALA_GLIB_VALUE (_tmp6_)); _result_ = _tmp7_; _tmp8_ = type; if (VALA_IS_DELEGATE_TYPE (_tmp8_)) { ValaDataType* _tmp9_; ValaDelegateType* _tmp10_; ValaDelegateType* delegate_type; gboolean _tmp11_ = FALSE; ValaDelegateType* _tmp12_; ValaDelegate* _tmp13_; ValaDelegate* _tmp14_; gboolean _tmp15_; gboolean _tmp16_; gboolean _tmp20_; ValaGLibValue* _tmp24_; ValaCCodeConstant* _tmp25_; _tmp9_ = type; _tmp10_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp9_)); delegate_type = _tmp10_; _tmp12_ = delegate_type; _tmp13_ = vala_delegate_type_get_delegate_symbol (_tmp12_); _tmp14_ = _tmp13_; _tmp15_ = vala_delegate_get_has_target (_tmp14_); _tmp16_ = _tmp15_; if (_tmp16_) { ValaCodeContext* _tmp17_; gboolean _tmp18_; gboolean _tmp19_; _tmp17_ = self->priv->_context; _tmp18_ = vala_code_context_get_deprecated (_tmp17_); _tmp19_ = _tmp18_; _tmp11_ = !_tmp19_; } else { _tmp11_ = FALSE; } _tmp20_ = _tmp11_; if (_tmp20_) { ValaCodeNode* _tmp21_; ValaSourceReference* _tmp22_; ValaSourceReference* _tmp23_; _tmp21_ = node; _tmp22_ = vala_code_node_get_source_reference (_tmp21_); _tmp23_ = _tmp22_; vala_report_deprecated (_tmp23_, "copying delegates is discouraged"); } _tmp24_ = _result_; _tmp25_ = vala_ccode_constant_new ("NULL"); _vala_ccode_node_unref0 (_tmp24_->delegate_target_destroy_notify_cvalue); _tmp24_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp25_; result = (ValaTargetValue*) _result_; _vala_code_node_unref0 (delegate_type); _vala_ccode_node_unref0 (cexpr); _vala_code_node_unref0 (type); return result; } _tmp27_ = type; if (VALA_IS_VALUE_TYPE (_tmp27_)) { ValaDataType* _tmp28_; gboolean _tmp29_; gboolean _tmp30_; _tmp28_ = type; _tmp29_ = vala_data_type_get_nullable (_tmp28_); _tmp30_ = _tmp29_; _tmp26_ = !_tmp30_; } else { _tmp26_ = FALSE; } _tmp31_ = _tmp26_; if (_tmp31_) { ValaDataType* _tmp32_; ValaCodeNode* _tmp33_; gboolean _tmp34_; ValaTargetValue* _tmp35_ = NULL; ValaTargetValue* temp_value; ValaTargetValue* _tmp36_; ValaCCodeExpression* _tmp37_ = NULL; ValaCCodeExpression* ctemp; ValaDataType* _tmp38_; ValaValueType* _tmp39_; ValaValueType* vt; ValaValueType* _tmp40_; ValaTypeSymbol* _tmp41_; ValaTypeSymbol* _tmp42_; ValaStruct* _tmp43_; ValaStruct* st; ValaStruct* _tmp44_; gchar* _tmp45_ = NULL; gchar* _tmp46_; ValaCCodeIdentifier* _tmp47_; ValaCCodeIdentifier* _tmp48_; ValaCCodeFunctionCall* _tmp49_; ValaCCodeFunctionCall* _tmp50_; ValaCCodeFunctionCall* copy_call; ValaCCodeFunctionCall* _tmp51_; ValaCCodeExpression* _tmp52_; ValaCCodeUnaryExpression* _tmp53_; ValaCCodeUnaryExpression* _tmp54_; ValaCCodeFunctionCall* _tmp55_; ValaCCodeExpression* _tmp56_; ValaCCodeUnaryExpression* _tmp57_; ValaCCodeUnaryExpression* _tmp58_; ValaStruct* _tmp59_; gboolean _tmp60_ = FALSE; gboolean _tmp62_ = FALSE; ValaStruct* _tmp63_; gboolean _tmp68_; _tmp32_ = type; _tmp33_ = node; _tmp34_ = TRUE; _tmp35_ = vala_ccode_base_module_create_temp_value (self, _tmp32_, TRUE, _tmp33_, &_tmp34_); temp_value = _tmp35_; _tmp36_ = temp_value; _tmp37_ = vala_ccode_base_module_get_cvalue_ (self, _tmp36_); ctemp = _tmp37_; _tmp38_ = type; _tmp39_ = _vala_code_node_ref0 (VALA_VALUE_TYPE (_tmp38_)); vt = _tmp39_; _tmp40_ = vt; _tmp41_ = vala_value_type_get_type_symbol (_tmp40_); _tmp42_ = _tmp41_; _tmp43_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp42_)); st = _tmp43_; _tmp44_ = st; _tmp45_ = vala_ccode_base_module_get_ccode_copy_function ((ValaTypeSymbol*) _tmp44_); _tmp46_ = _tmp45_; _tmp47_ = vala_ccode_identifier_new (_tmp46_); _tmp48_ = _tmp47_; _tmp49_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp48_); _tmp50_ = _tmp49_; _vala_ccode_node_unref0 (_tmp48_); _g_free0 (_tmp46_); copy_call = _tmp50_; _tmp51_ = copy_call; _tmp52_ = cexpr; _tmp53_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp52_); _tmp54_ = _tmp53_; vala_ccode_function_call_add_argument (_tmp51_, (ValaCCodeExpression*) _tmp54_); _vala_ccode_node_unref0 (_tmp54_); _tmp55_ = copy_call; _tmp56_ = ctemp; _tmp57_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp56_); _tmp58_ = _tmp57_; vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp58_); _vala_ccode_node_unref0 (_tmp58_); _tmp59_ = st; _tmp60_ = vala_ccode_base_module_get_ccode_has_copy_function (_tmp59_); if (!_tmp60_) { ValaStruct* _tmp61_; _tmp61_ = st; vala_ccode_base_module_generate_struct_copy_function (self, _tmp61_); } _tmp63_ = self->gvalue_type; if (_tmp63_ != NULL) { ValaDataType* _tmp64_; ValaTypeSymbol* _tmp65_; ValaTypeSymbol* _tmp66_; ValaStruct* _tmp67_; _tmp64_ = type; _tmp65_ = vala_data_type_get_data_type (_tmp64_); _tmp66_ = _tmp65_; _tmp67_ = self->gvalue_type; _tmp62_ = _tmp66_ == VALA_TYPESYMBOL (_tmp67_); } else { _tmp62_ = FALSE; } _tmp68_ = _tmp62_; if (_tmp68_) { ValaCCodeIdentifier* _tmp69_; ValaCCodeIdentifier* _tmp70_; ValaCCodeFunctionCall* _tmp71_; ValaCCodeFunctionCall* _tmp72_; ValaCCodeFunctionCall* cisvalid; ValaCCodeFunctionCall* _tmp73_; ValaCCodeExpression* _tmp74_; ValaCCodeUnaryExpression* _tmp75_; ValaCCodeUnaryExpression* _tmp76_; ValaCCodeFunction* _tmp77_; ValaCCodeFunction* _tmp78_; ValaCCodeFunctionCall* _tmp79_; ValaCCodeIdentifier* _tmp80_; ValaCCodeIdentifier* _tmp81_; ValaCCodeFunctionCall* _tmp82_; ValaCCodeFunctionCall* _tmp83_; ValaCCodeFunctionCall* value_type_call; ValaCCodeFunctionCall* _tmp84_; ValaCCodeExpression* _tmp85_; ValaCCodeUnaryExpression* _tmp86_; ValaCCodeUnaryExpression* _tmp87_; ValaCCodeIdentifier* _tmp88_; ValaCCodeIdentifier* _tmp89_; ValaCCodeFunctionCall* _tmp90_; ValaCCodeFunctionCall* _tmp91_; ValaCCodeFunctionCall* init_call; ValaCCodeFunctionCall* _tmp92_; ValaCCodeExpression* _tmp93_; ValaCCodeUnaryExpression* _tmp94_; ValaCCodeUnaryExpression* _tmp95_; ValaCCodeFunctionCall* _tmp96_; ValaCCodeFunctionCall* _tmp97_; ValaCCodeFunction* _tmp98_; ValaCCodeFunction* _tmp99_; ValaCCodeFunctionCall* _tmp100_; ValaCCodeFunction* _tmp101_; ValaCCodeFunction* _tmp102_; ValaCCodeFunctionCall* _tmp103_; ValaCCodeFunction* _tmp104_; ValaCCodeFunction* _tmp105_; ValaTargetValue* _tmp106_; ValaTargetValue* _tmp107_; ValaCCodeFunction* _tmp108_; ValaCCodeFunction* _tmp109_; _tmp69_ = vala_ccode_identifier_new ("G_IS_VALUE"); _tmp70_ = _tmp69_; _tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_); _tmp72_ = _tmp71_; _vala_ccode_node_unref0 (_tmp70_); cisvalid = _tmp72_; _tmp73_ = cisvalid; _tmp74_ = cexpr; _tmp75_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp74_); _tmp76_ = _tmp75_; vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp76_); _vala_ccode_node_unref0 (_tmp76_); _tmp77_ = vala_ccode_base_module_get_ccode (self); _tmp78_ = _tmp77_; _tmp79_ = cisvalid; vala_ccode_function_open_if (_tmp78_, (ValaCCodeExpression*) _tmp79_); _tmp80_ = vala_ccode_identifier_new ("G_VALUE_TYPE"); _tmp81_ = _tmp80_; _tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_); _tmp83_ = _tmp82_; _vala_ccode_node_unref0 (_tmp81_); value_type_call = _tmp83_; _tmp84_ = value_type_call; _tmp85_ = cexpr; _tmp86_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp85_); _tmp87_ = _tmp86_; vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp87_); _vala_ccode_node_unref0 (_tmp87_); _tmp88_ = vala_ccode_identifier_new ("g_value_init"); _tmp89_ = _tmp88_; _tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_); _tmp91_ = _tmp90_; _vala_ccode_node_unref0 (_tmp89_); init_call = _tmp91_; _tmp92_ = init_call; _tmp93_ = ctemp; _tmp94_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp93_); _tmp95_ = _tmp94_; vala_ccode_function_call_add_argument (_tmp92_, (ValaCCodeExpression*) _tmp95_); _vala_ccode_node_unref0 (_tmp95_); _tmp96_ = init_call; _tmp97_ = value_type_call; vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp97_); _tmp98_ = vala_ccode_base_module_get_ccode (self); _tmp99_ = _tmp98_; _tmp100_ = init_call; vala_ccode_function_add_expression (_tmp99_, (ValaCCodeExpression*) _tmp100_); _tmp101_ = vala_ccode_base_module_get_ccode (self); _tmp102_ = _tmp101_; _tmp103_ = copy_call; vala_ccode_function_add_expression (_tmp102_, (ValaCCodeExpression*) _tmp103_); _tmp104_ = vala_ccode_base_module_get_ccode (self); _tmp105_ = _tmp104_; vala_ccode_function_add_else (_tmp105_); _tmp106_ = temp_value; _tmp107_ = value; vala_ccode_base_module_store_value (self, _tmp106_, _tmp107_); _tmp108_ = vala_ccode_base_module_get_ccode (self); _tmp109_ = _tmp108_; vala_ccode_function_close (_tmp109_); _vala_ccode_node_unref0 (init_call); _vala_ccode_node_unref0 (value_type_call); _vala_ccode_node_unref0 (cisvalid); } else { ValaCCodeFunction* _tmp110_; ValaCCodeFunction* _tmp111_; ValaCCodeFunctionCall* _tmp112_; _tmp110_ = vala_ccode_base_module_get_ccode (self); _tmp111_ = _tmp110_; _tmp112_ = copy_call; vala_ccode_function_add_expression (_tmp111_, (ValaCCodeExpression*) _tmp112_); } result = temp_value; _vala_ccode_node_unref0 (copy_call); _vala_code_node_unref0 (st); _vala_code_node_unref0 (vt); _vala_ccode_node_unref0 (ctemp); _vala_target_value_unref0 (_result_); _vala_ccode_node_unref0 (cexpr); _vala_code_node_unref0 (type); return result; } _tmp113_ = type; _tmp114_ = node; _tmp115_ = vala_code_node_get_source_reference (_tmp114_); _tmp116_ = _tmp115_; _tmp117_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp113_, _tmp116_, FALSE); dupexpr = _tmp117_; _tmp118_ = dupexpr; if (_tmp118_ == NULL) { ValaCodeNode* _tmp119_; _tmp119_ = node; vala_code_node_set_error (_tmp119_, TRUE); result = NULL; _vala_ccode_node_unref0 (dupexpr); _vala_target_value_unref0 (_result_); _vala_ccode_node_unref0 (cexpr); _vala_code_node_unref0 (type); return result; } _tmp123_ = dupexpr; if (VALA_IS_CCODE_IDENTIFIER (_tmp123_)) { ValaDataType* _tmp124_; _tmp124_ = type; _tmp122_ = !VALA_IS_ARRAY_TYPE (_tmp124_); } else { _tmp122_ = FALSE; } _tmp125_ = _tmp122_; if (_tmp125_) { ValaDataType* _tmp126_; _tmp126_ = type; _tmp121_ = !VALA_IS_GENERIC_TYPE (_tmp126_); } else { _tmp121_ = FALSE; } _tmp127_ = _tmp121_; if (_tmp127_) { ValaDataType* _tmp128_; gboolean _tmp129_ = FALSE; _tmp128_ = type; _tmp129_ = vala_ccode_base_module_is_ref_function_void (self, _tmp128_); _tmp120_ = !_tmp129_; } else { _tmp120_ = FALSE; } _tmp130_ = _tmp120_; if (_tmp130_) { ValaCCodeExpression* _tmp131_; ValaCCodeIdentifier* _tmp132_; ValaCCodeIdentifier* dupid; ValaCCodeIdentifier* _tmp133_; const gchar* _tmp134_; const gchar* _tmp135_; gchar* _tmp136_ = NULL; gchar* dup0_func; ValaCCodeIdentifier* _tmp137_; const gchar* _tmp138_; const gchar* _tmp139_; const gchar* _tmp176_; ValaCCodeIdentifier* _tmp177_; ValaCCodeIdentifier* _tmp178_; ValaCCodeFunctionCall* _tmp179_; ValaCCodeFunctionCall* _tmp180_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp181_; ValaCCodeExpression* _tmp182_; ValaGLibValue* _tmp183_; ValaCCodeFunctionCall* _tmp184_; ValaCCodeExpression* _tmp185_; ValaGLibValue* _tmp186_; ValaDataType* _tmp187_; ValaDataType* _tmp188_; ValaGLibValue* _tmp189_; ValaCodeNode* _tmp190_; ValaTargetValue* _tmp191_ = NULL; _tmp131_ = dupexpr; _tmp132_ = _vala_ccode_node_ref0 (VALA_CCODE_IDENTIFIER (_tmp131_)); dupid = _tmp132_; _tmp133_ = dupid; _tmp134_ = vala_ccode_identifier_get_name (_tmp133_); _tmp135_ = _tmp134_; _tmp136_ = g_strdup_printf ("_%s0", _tmp135_); dup0_func = _tmp136_; _tmp137_ = dupid; _tmp138_ = vala_ccode_identifier_get_name (_tmp137_); _tmp139_ = _tmp138_; if (g_strcmp0 (_tmp139_, "g_strdup") == 0) { ValaCCodeIdentifier* _tmp140_; const gchar* _tmp141_; const gchar* _tmp142_; gchar* _tmp143_; _tmp140_ = dupid; _tmp141_ = vala_ccode_identifier_get_name (_tmp140_); _tmp142_ = _tmp141_; _tmp143_ = g_strdup (_tmp142_); _g_free0 (dup0_func); dup0_func = _tmp143_; } else { const gchar* _tmp144_; gboolean _tmp145_ = FALSE; _tmp144_ = dup0_func; _tmp145_ = vala_ccode_base_module_add_wrapper (self, _tmp144_); if (_tmp145_) { gchar* _tmp146_; gchar* pointer_cname; ValaCodeContext* _tmp147_; ValaProfile _tmp148_; ValaProfile _tmp149_; const gchar* _tmp151_; const gchar* _tmp152_; ValaCCodeFunction* _tmp153_; ValaCCodeFunction* dup0_fun; ValaCCodeFunction* _tmp154_; const gchar* _tmp155_; ValaCCodeParameter* _tmp156_; ValaCCodeParameter* _tmp157_; ValaCCodeFunction* _tmp158_; ValaCCodeFunction* _tmp159_; ValaCCodeExpression* _tmp160_; ValaCCodeFunctionCall* _tmp161_; ValaCCodeFunctionCall* dup_call; ValaCCodeFunctionCall* _tmp162_; ValaCCodeIdentifier* _tmp163_; ValaCCodeIdentifier* _tmp164_; ValaCCodeFunction* _tmp165_; ValaCCodeFunction* _tmp166_; ValaCCodeIdentifier* _tmp167_; ValaCCodeIdentifier* _tmp168_; ValaCCodeFunctionCall* _tmp169_; ValaCCodeConstant* _tmp170_; ValaCCodeConstant* _tmp171_; ValaCCodeConditionalExpression* _tmp172_; ValaCCodeConditionalExpression* _tmp173_; ValaCCodeFile* _tmp174_; ValaCCodeFunction* _tmp175_; _tmp146_ = g_strdup ("gpointer"); pointer_cname = _tmp146_; _tmp147_ = self->priv->_context; _tmp148_ = vala_code_context_get_profile (_tmp147_); _tmp149_ = _tmp148_; if (_tmp149_ == VALA_PROFILE_POSIX) { gchar* _tmp150_; _tmp150_ = g_strdup ("void*"); _g_free0 (pointer_cname); pointer_cname = _tmp150_; } _tmp151_ = dup0_func; _tmp152_ = pointer_cname; _tmp153_ = vala_ccode_function_new (_tmp151_, _tmp152_); dup0_fun = _tmp153_; _tmp154_ = dup0_fun; _tmp155_ = pointer_cname; _tmp156_ = vala_ccode_parameter_new ("self", _tmp155_); _tmp157_ = _tmp156_; vala_ccode_function_add_parameter (_tmp154_, _tmp157_); _vala_ccode_node_unref0 (_tmp157_); _tmp158_ = dup0_fun; vala_ccode_function_set_modifiers (_tmp158_, VALA_CCODE_MODIFIERS_STATIC); _tmp159_ = dup0_fun; vala_ccode_base_module_push_function (self, _tmp159_); _tmp160_ = dupexpr; _tmp161_ = vala_ccode_function_call_new (_tmp160_); dup_call = _tmp161_; _tmp162_ = dup_call; _tmp163_ = vala_ccode_identifier_new ("self"); _tmp164_ = _tmp163_; vala_ccode_function_call_add_argument (_tmp162_, (ValaCCodeExpression*) _tmp164_); _vala_ccode_node_unref0 (_tmp164_); _tmp165_ = vala_ccode_base_module_get_ccode (self); _tmp166_ = _tmp165_; _tmp167_ = vala_ccode_identifier_new ("self"); _tmp168_ = _tmp167_; _tmp169_ = dup_call; _tmp170_ = vala_ccode_constant_new ("NULL"); _tmp171_ = _tmp170_; _tmp172_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp168_, (ValaCCodeExpression*) _tmp169_, (ValaCCodeExpression*) _tmp171_); _tmp173_ = _tmp172_; vala_ccode_function_add_return (_tmp166_, (ValaCCodeExpression*) _tmp173_); _vala_ccode_node_unref0 (_tmp173_); _vala_ccode_node_unref0 (_tmp171_); _vala_ccode_node_unref0 (_tmp168_); vala_ccode_base_module_pop_function (self); _tmp174_ = self->cfile; _tmp175_ = dup0_fun; vala_ccode_file_add_function (_tmp174_, _tmp175_); _vala_ccode_node_unref0 (dup_call); _vala_ccode_node_unref0 (dup0_fun); _g_free0 (pointer_cname); } } _tmp176_ = dup0_func; _tmp177_ = vala_ccode_identifier_new (_tmp176_); _tmp178_ = _tmp177_; _tmp179_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp178_); _tmp180_ = _tmp179_; _vala_ccode_node_unref0 (_tmp178_); ccall = _tmp180_; _tmp181_ = ccall; _tmp182_ = cexpr; vala_ccode_function_call_add_argument (_tmp181_, _tmp182_); _tmp183_ = _result_; _tmp184_ = ccall; _tmp185_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp184_); _vala_ccode_node_unref0 (_tmp183_->cvalue); _tmp183_->cvalue = _tmp185_; _tmp186_ = _result_; _tmp187_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp186_); _tmp188_ = _tmp187_; vala_data_type_set_value_owned (_tmp188_, TRUE); _tmp189_ = _result_; _tmp190_ = node; _tmp191_ = vala_ccode_base_module_store_temp_value (self, (ValaTargetValue*) _tmp189_, _tmp190_, NULL); result = _tmp191_; _vala_ccode_node_unref0 (ccall); _g_free0 (dup0_func); _vala_ccode_node_unref0 (dupid); _vala_ccode_node_unref0 (dupexpr); _vala_target_value_unref0 (_result_); _vala_ccode_node_unref0 (cexpr); _vala_code_node_unref0 (type); return result; } _tmp192_ = dupexpr; _tmp193_ = vala_ccode_function_call_new (_tmp192_); ccall = _tmp193_; _tmp196_ = type; if (!VALA_IS_ARRAY_TYPE (_tmp196_)) { ValaTargetValue* _tmp197_; gboolean _tmp198_ = FALSE; _tmp197_ = value; _tmp198_ = vala_ccode_base_module_get_non_null (self, _tmp197_); _tmp195_ = _tmp198_; } else { _tmp195_ = FALSE; } _tmp199_ = _tmp195_; if (_tmp199_) { ValaDataType* _tmp200_; gboolean _tmp201_ = FALSE; _tmp200_ = type; _tmp201_ = vala_ccode_base_module_is_ref_function_void (self, _tmp200_); _tmp194_ = !_tmp201_; } else { _tmp194_ = FALSE; } _tmp202_ = _tmp194_; if (_tmp202_) { ValaCCodeFunctionCall* _tmp203_; ValaCCodeExpression* _tmp204_; ValaDataType* _tmp205_; ValaCCodeFunctionCall* _tmp206_; ValaGLibValue* _tmp207_; ValaGLibValue* _tmp208_; ValaCodeNode* _tmp209_; ValaTargetValue* _tmp210_ = NULL; ValaTargetValue* _tmp211_; _tmp203_ = ccall; _tmp204_ = cexpr; vala_ccode_function_call_add_argument (_tmp203_, _tmp204_); _tmp205_ = type; _tmp206_ = ccall; _tmp207_ = vala_glib_value_new (_tmp205_, (ValaCCodeExpression*) _tmp206_, FALSE); _tmp208_ = _tmp207_; _tmp209_ = node; _tmp210_ = vala_ccode_base_module_store_temp_value (self, (ValaTargetValue*) _tmp208_, _tmp209_, NULL); _tmp211_ = _tmp210_; _vala_target_value_unref0 (_tmp208_); result = _tmp211_; _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (dupexpr); _vala_target_value_unref0 (_result_); _vala_ccode_node_unref0 (cexpr); _vala_code_node_unref0 (type); return result; } else { ValaCCodeExpression* _tmp212_; ValaCCodeConstant* _tmp213_; ValaCCodeConstant* _tmp214_; ValaCCodeBinaryExpression* _tmp215_; ValaCCodeBinaryExpression* _tmp216_; ValaCCodeBinaryExpression* cnotnull; ValaDataType* _tmp217_; ValaTypeParameter* _tmp218_; ValaTypeParameter* _tmp219_; ValaDataType* _tmp233_; ValaTypeParameter* _tmp234_; ValaTypeParameter* _tmp235_; ValaDataType* _tmp242_; ValaCCodeExpression* cifnull = NULL; ValaDataType* _tmp263_; ValaTypeSymbol* _tmp264_; ValaTypeSymbol* _tmp265_; ValaDataType* _tmp269_; gboolean _tmp270_ = FALSE; _tmp212_ = cexpr; _tmp213_ = vala_ccode_constant_new ("NULL"); _tmp214_ = _tmp213_; _tmp215_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp212_, (ValaCCodeExpression*) _tmp214_); _tmp216_ = _tmp215_; _vala_ccode_node_unref0 (_tmp214_); cnotnull = _tmp216_; _tmp217_ = type; _tmp218_ = vala_data_type_get_type_parameter (_tmp217_); _tmp219_ = _tmp218_; if (_tmp219_ != NULL) { ValaDataType* _tmp220_; ValaCodeNode* _tmp221_; ValaSourceReference* _tmp222_; ValaSourceReference* _tmp223_; ValaCCodeExpression* _tmp224_ = NULL; ValaCCodeExpression* _tmp225_; ValaCCodeConstant* _tmp226_; ValaCCodeConstant* _tmp227_; ValaCCodeBinaryExpression* _tmp228_; ValaCCodeBinaryExpression* _tmp229_; ValaCCodeBinaryExpression* cdupnotnull; ValaCCodeBinaryExpression* _tmp230_; ValaCCodeBinaryExpression* _tmp231_; ValaCCodeBinaryExpression* _tmp232_; _tmp220_ = type; _tmp221_ = node; _tmp222_ = vala_code_node_get_source_reference (_tmp221_); _tmp223_ = _tmp222_; _tmp224_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp220_, _tmp223_, FALSE); _tmp225_ = _tmp224_; _tmp226_ = vala_ccode_constant_new ("NULL"); _tmp227_ = _tmp226_; _tmp228_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp225_, (ValaCCodeExpression*) _tmp227_); _tmp229_ = _tmp228_; _vala_ccode_node_unref0 (_tmp227_); _vala_ccode_node_unref0 (_tmp225_); cdupnotnull = _tmp229_; _tmp230_ = cnotnull; _tmp231_ = cdupnotnull; _tmp232_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_AND, (ValaCCodeExpression*) _tmp230_, (ValaCCodeExpression*) _tmp231_); _vala_ccode_node_unref0 (cnotnull); cnotnull = _tmp232_; _vala_ccode_node_unref0 (cdupnotnull); } _tmp233_ = type; _tmp234_ = vala_data_type_get_type_parameter (_tmp233_); _tmp235_ = _tmp234_; if (_tmp235_ != NULL) { ValaCCodeFunctionCall* _tmp236_; ValaCCodeExpression* _tmp237_; ValaCCodeCastExpression* _tmp238_; ValaCCodeCastExpression* _tmp239_; _tmp236_ = ccall; _tmp237_ = cexpr; _tmp238_ = vala_ccode_cast_expression_new (_tmp237_, "gpointer"); _tmp239_ = _tmp238_; vala_ccode_function_call_add_argument (_tmp236_, (ValaCCodeExpression*) _tmp239_); _vala_ccode_node_unref0 (_tmp239_); } else { ValaCCodeFunctionCall* _tmp240_; ValaCCodeExpression* _tmp241_; _tmp240_ = ccall; _tmp241_ = cexpr; vala_ccode_function_call_add_argument (_tmp240_, _tmp241_); } _tmp242_ = type; if (VALA_IS_ARRAY_TYPE (_tmp242_)) { ValaDataType* _tmp243_; ValaArrayType* _tmp244_; ValaArrayType* array_type; ValaCCodeFunctionCall* _tmp245_; ValaTargetValue* _tmp246_; ValaCCodeExpression* _tmp247_ = NULL; ValaCCodeExpression* _tmp248_; ValaArrayType* _tmp249_; ValaDataType* _tmp250_; ValaDataType* _tmp251_; _tmp243_ = type; _tmp244_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp243_)); array_type = _tmp244_; _tmp245_ = ccall; _tmp246_ = value; _tmp247_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp246_, -1); _tmp248_ = _tmp247_; vala_ccode_function_call_add_argument (_tmp245_, _tmp248_); _vala_ccode_node_unref0 (_tmp248_); _tmp249_ = array_type; _tmp250_ = vala_array_type_get_element_type (_tmp249_); _tmp251_ = _tmp250_; if (VALA_IS_GENERIC_TYPE (_tmp251_)) { ValaArrayType* _tmp252_; ValaDataType* _tmp253_; ValaDataType* _tmp254_; ValaCodeNode* _tmp255_; ValaSourceReference* _tmp256_; ValaSourceReference* _tmp257_; ValaCCodeExpression* _tmp258_ = NULL; ValaCCodeExpression* elem_dupexpr; ValaCCodeExpression* _tmp259_; ValaCCodeFunctionCall* _tmp261_; ValaCCodeExpression* _tmp262_; _tmp252_ = array_type; _tmp253_ = vala_array_type_get_element_type (_tmp252_); _tmp254_ = _tmp253_; _tmp255_ = node; _tmp256_ = vala_code_node_get_source_reference (_tmp255_); _tmp257_ = _tmp256_; _tmp258_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp254_, _tmp257_, FALSE); elem_dupexpr = _tmp258_; _tmp259_ = elem_dupexpr; if (_tmp259_ == NULL) { ValaCCodeConstant* _tmp260_; _tmp260_ = vala_ccode_constant_new ("NULL"); _vala_ccode_node_unref0 (elem_dupexpr); elem_dupexpr = (ValaCCodeExpression*) _tmp260_; } _tmp261_ = ccall; _tmp262_ = elem_dupexpr; vala_ccode_function_call_add_argument (_tmp261_, _tmp262_); _vala_ccode_node_unref0 (elem_dupexpr); } _vala_code_node_unref0 (array_type); } _tmp263_ = type; _tmp264_ = vala_data_type_get_data_type (_tmp263_); _tmp265_ = _tmp264_; if (_tmp265_ != NULL) { ValaCCodeConstant* _tmp266_; _tmp266_ = vala_ccode_constant_new ("NULL"); _vala_ccode_node_unref0 (cifnull); cifnull = (ValaCCodeExpression*) _tmp266_; } else { ValaCCodeExpression* _tmp267_; ValaCCodeCastExpression* _tmp268_; _tmp267_ = cexpr; _tmp268_ = vala_ccode_cast_expression_new (_tmp267_, "gpointer"); _vala_ccode_node_unref0 (cifnull); cifnull = (ValaCCodeExpression*) _tmp268_; } _tmp269_ = type; _tmp270_ = vala_ccode_base_module_is_ref_function_void (self, _tmp269_); if (_tmp270_) { ValaCCodeFunction* _tmp271_; ValaCCodeFunction* _tmp272_; ValaCCodeBinaryExpression* _tmp273_; ValaCCodeFunction* _tmp274_; ValaCCodeFunction* _tmp275_; ValaCCodeFunctionCall* _tmp276_; ValaCCodeFunction* _tmp277_; ValaCCodeFunction* _tmp278_; _tmp271_ = vala_ccode_base_module_get_ccode (self); _tmp272_ = _tmp271_; _tmp273_ = cnotnull; vala_ccode_function_open_if (_tmp272_, (ValaCCodeExpression*) _tmp273_); _tmp274_ = vala_ccode_base_module_get_ccode (self); _tmp275_ = _tmp274_; _tmp276_ = ccall; vala_ccode_function_add_expression (_tmp275_, (ValaCCodeExpression*) _tmp276_); _tmp277_ = vala_ccode_base_module_get_ccode (self); _tmp278_ = _tmp277_; vala_ccode_function_close (_tmp278_); } else { ValaCCodeBinaryExpression* _tmp279_; ValaCCodeFunctionCall* _tmp280_; ValaCCodeExpression* _tmp281_; ValaCCodeConditionalExpression* _tmp282_; ValaCCodeConditionalExpression* ccond; ValaGLibValue* _tmp283_; ValaCCodeConditionalExpression* _tmp284_; ValaCCodeExpression* _tmp285_; ValaGLibValue* _tmp286_; ValaCodeNode* _tmp287_; gboolean _tmp288_; ValaTargetValue* _tmp289_ = NULL; _tmp279_ = cnotnull; _tmp280_ = ccall; _tmp281_ = cifnull; _tmp282_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp279_, (ValaCCodeExpression*) _tmp280_, _tmp281_); ccond = _tmp282_; _tmp283_ = _result_; _tmp284_ = ccond; _tmp285_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp284_); _vala_ccode_node_unref0 (_tmp283_->cvalue); _tmp283_->cvalue = _tmp285_; _tmp286_ = _result_; _tmp287_ = node; _tmp288_ = TRUE; _tmp289_ = vala_ccode_base_module_store_temp_value (self, (ValaTargetValue*) _tmp286_, _tmp287_, &_tmp288_); _vala_target_value_unref0 (_result_); _result_ = VALA_GLIB_VALUE (_tmp289_); _vala_ccode_node_unref0 (ccond); } result = (ValaTargetValue*) _result_; _vala_ccode_node_unref0 (cifnull); _vala_ccode_node_unref0 (cnotnull); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (dupexpr); _vala_ccode_node_unref0 (cexpr); _vala_code_node_unref0 (type); return result; } _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (dupexpr); _vala_target_value_unref0 (_result_); _vala_ccode_node_unref0 (cexpr); _vala_code_node_unref0 (type); } ValaTargetValue* vala_ccode_base_module_copy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->copy_value (self, value, node); } static gboolean vala_ccode_base_module_is_reference_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; ValaDataType* _tmp1_; gboolean _tmp11_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type_arg != NULL, FALSE); _tmp1_ = type_arg; if (VALA_IS_ERROR_TYPE (_tmp1_)) { _tmp0_ = TRUE; } else { gboolean _tmp2_ = FALSE; ValaDataType* _tmp3_; ValaTypeSymbol* _tmp4_; ValaTypeSymbol* _tmp5_; gboolean _tmp10_; _tmp3_ = type_arg; _tmp4_ = vala_data_type_get_data_type (_tmp3_); _tmp5_ = _tmp4_; if (_tmp5_ != NULL) { ValaDataType* _tmp6_; ValaTypeSymbol* _tmp7_; ValaTypeSymbol* _tmp8_; gboolean _tmp9_ = FALSE; _tmp6_ = type_arg; _tmp7_ = vala_data_type_get_data_type (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = vala_typesymbol_is_reference_type (_tmp8_); _tmp2_ = _tmp9_; } else { _tmp2_ = FALSE; } _tmp10_ = _tmp2_; _tmp0_ = _tmp10_; } _tmp11_ = _tmp0_; if (_tmp11_) { result = TRUE; return result; } else { result = FALSE; return result; } } static gboolean vala_ccode_base_module_is_nullable_value_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; ValaDataType* _tmp1_; gboolean _tmp5_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type_arg != NULL, FALSE); _tmp1_ = type_arg; if (VALA_IS_VALUE_TYPE (_tmp1_)) { ValaDataType* _tmp2_; gboolean _tmp3_; gboolean _tmp4_; _tmp2_ = type_arg; _tmp3_ = vala_data_type_get_nullable (_tmp2_); _tmp4_ = _tmp3_; _tmp0_ = _tmp4_; } else { _tmp0_ = FALSE; } _tmp5_ = _tmp0_; if (_tmp5_) { result = TRUE; return result; } else { result = FALSE; return result; } } static gboolean vala_ccode_base_module_is_signed_integer_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg) { gboolean result = FALSE; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; ValaStruct* _tmp3_; ValaStruct* st; ValaDataType* _tmp4_; gboolean _tmp5_; gboolean _tmp6_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type_arg != NULL, FALSE); _tmp0_ = type_arg; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp2_) ? ((ValaStruct*) _tmp2_) : NULL); st = _tmp3_; _tmp4_ = type_arg; _tmp5_ = vala_data_type_get_nullable (_tmp4_); _tmp6_ = _tmp5_; if (_tmp6_) { result = FALSE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp7_; ValaDataType* _tmp8_; ValaTypeSymbol* _tmp9_; ValaTypeSymbol* _tmp10_; _tmp7_ = st; _tmp8_ = self->bool_type; _tmp9_ = vala_data_type_get_data_type (_tmp8_); _tmp10_ = _tmp9_; if (VALA_TYPESYMBOL (_tmp7_) == _tmp10_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp11_; ValaDataType* _tmp12_; ValaTypeSymbol* _tmp13_; ValaTypeSymbol* _tmp14_; _tmp11_ = st; _tmp12_ = self->char_type; _tmp13_ = vala_data_type_get_data_type (_tmp12_); _tmp14_ = _tmp13_; if (VALA_TYPESYMBOL (_tmp11_) == _tmp14_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { gboolean _tmp15_ = FALSE; ValaDataType* _tmp16_; gboolean _tmp21_; _tmp16_ = self->unichar_type; if (_tmp16_ != NULL) { ValaStruct* _tmp17_; ValaDataType* _tmp18_; ValaTypeSymbol* _tmp19_; ValaTypeSymbol* _tmp20_; _tmp17_ = st; _tmp18_ = self->unichar_type; _tmp19_ = vala_data_type_get_data_type (_tmp18_); _tmp20_ = _tmp19_; _tmp15_ = VALA_TYPESYMBOL (_tmp17_) == _tmp20_; } else { _tmp15_ = FALSE; } _tmp21_ = _tmp15_; if (_tmp21_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp22_; ValaDataType* _tmp23_; ValaTypeSymbol* _tmp24_; ValaTypeSymbol* _tmp25_; _tmp22_ = st; _tmp23_ = self->short_type; _tmp24_ = vala_data_type_get_data_type (_tmp23_); _tmp25_ = _tmp24_; if (VALA_TYPESYMBOL (_tmp22_) == _tmp25_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp26_; ValaDataType* _tmp27_; ValaTypeSymbol* _tmp28_; ValaTypeSymbol* _tmp29_; _tmp26_ = st; _tmp27_ = self->int_type; _tmp28_ = vala_data_type_get_data_type (_tmp27_); _tmp29_ = _tmp28_; if (VALA_TYPESYMBOL (_tmp26_) == _tmp29_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp30_; ValaDataType* _tmp31_; ValaTypeSymbol* _tmp32_; ValaTypeSymbol* _tmp33_; _tmp30_ = st; _tmp31_ = self->long_type; _tmp32_ = vala_data_type_get_data_type (_tmp31_); _tmp33_ = _tmp32_; if (VALA_TYPESYMBOL (_tmp30_) == _tmp33_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp34_; ValaDataType* _tmp35_; ValaTypeSymbol* _tmp36_; ValaTypeSymbol* _tmp37_; _tmp34_ = st; _tmp35_ = self->int8_type; _tmp36_ = vala_data_type_get_data_type (_tmp35_); _tmp37_ = _tmp36_; if (VALA_TYPESYMBOL (_tmp34_) == _tmp37_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp38_; ValaDataType* _tmp39_; ValaTypeSymbol* _tmp40_; ValaTypeSymbol* _tmp41_; _tmp38_ = st; _tmp39_ = self->int16_type; _tmp40_ = vala_data_type_get_data_type (_tmp39_); _tmp41_ = _tmp40_; if (VALA_TYPESYMBOL (_tmp38_) == _tmp41_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp42_; ValaDataType* _tmp43_; ValaTypeSymbol* _tmp44_; ValaTypeSymbol* _tmp45_; _tmp42_ = st; _tmp43_ = self->int32_type; _tmp44_ = vala_data_type_get_data_type (_tmp43_); _tmp45_ = _tmp44_; if (VALA_TYPESYMBOL (_tmp42_) == _tmp45_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp46_; ValaTypeSymbol* _tmp47_; _tmp46_ = st; _tmp47_ = self->gtype_type; if (VALA_TYPESYMBOL (_tmp46_) == _tmp47_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaDataType* _tmp48_; _tmp48_ = type_arg; if (VALA_IS_ENUM_VALUE_TYPE (_tmp48_)) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { result = FALSE; _vala_code_node_unref0 (st); return result; } } } } } } } } } } } } _vala_code_node_unref0 (st); } static gboolean vala_ccode_base_module_is_unsigned_integer_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg) { gboolean result = FALSE; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; ValaStruct* _tmp3_; ValaStruct* st; ValaDataType* _tmp4_; gboolean _tmp5_; gboolean _tmp6_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type_arg != NULL, FALSE); _tmp0_ = type_arg; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp2_) ? ((ValaStruct*) _tmp2_) : NULL); st = _tmp3_; _tmp4_ = type_arg; _tmp5_ = vala_data_type_get_nullable (_tmp4_); _tmp6_ = _tmp5_; if (_tmp6_) { result = FALSE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp7_; ValaDataType* _tmp8_; ValaTypeSymbol* _tmp9_; ValaTypeSymbol* _tmp10_; _tmp7_ = st; _tmp8_ = self->uchar_type; _tmp9_ = vala_data_type_get_data_type (_tmp8_); _tmp10_ = _tmp9_; if (VALA_TYPESYMBOL (_tmp7_) == _tmp10_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp11_; ValaDataType* _tmp12_; ValaTypeSymbol* _tmp13_; ValaTypeSymbol* _tmp14_; _tmp11_ = st; _tmp12_ = self->ushort_type; _tmp13_ = vala_data_type_get_data_type (_tmp12_); _tmp14_ = _tmp13_; if (VALA_TYPESYMBOL (_tmp11_) == _tmp14_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp15_; ValaDataType* _tmp16_; ValaTypeSymbol* _tmp17_; ValaTypeSymbol* _tmp18_; _tmp15_ = st; _tmp16_ = self->uint_type; _tmp17_ = vala_data_type_get_data_type (_tmp16_); _tmp18_ = _tmp17_; if (VALA_TYPESYMBOL (_tmp15_) == _tmp18_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp19_; ValaDataType* _tmp20_; ValaTypeSymbol* _tmp21_; ValaTypeSymbol* _tmp22_; _tmp19_ = st; _tmp20_ = self->ulong_type; _tmp21_ = vala_data_type_get_data_type (_tmp20_); _tmp22_ = _tmp21_; if (VALA_TYPESYMBOL (_tmp19_) == _tmp22_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp23_; ValaDataType* _tmp24_; ValaTypeSymbol* _tmp25_; ValaTypeSymbol* _tmp26_; _tmp23_ = st; _tmp24_ = self->uint8_type; _tmp25_ = vala_data_type_get_data_type (_tmp24_); _tmp26_ = _tmp25_; if (VALA_TYPESYMBOL (_tmp23_) == _tmp26_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp27_; ValaDataType* _tmp28_; ValaTypeSymbol* _tmp29_; ValaTypeSymbol* _tmp30_; _tmp27_ = st; _tmp28_ = self->uint16_type; _tmp29_ = vala_data_type_get_data_type (_tmp28_); _tmp30_ = _tmp29_; if (VALA_TYPESYMBOL (_tmp27_) == _tmp30_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { ValaStruct* _tmp31_; ValaDataType* _tmp32_; ValaTypeSymbol* _tmp33_; ValaTypeSymbol* _tmp34_; _tmp31_ = st; _tmp32_ = self->uint32_type; _tmp33_ = vala_data_type_get_data_type (_tmp32_); _tmp34_ = _tmp33_; if (VALA_TYPESYMBOL (_tmp31_) == _tmp34_) { result = TRUE; _vala_code_node_unref0 (st); return result; } else { result = FALSE; _vala_code_node_unref0 (st); return result; } } } } } } } } _vala_code_node_unref0 (st); } void vala_ccode_base_module_check_type (ValaCCodeBaseModule* self, ValaDataType* type) { ValaDataType* _tmp0_; ValaArrayType* _tmp1_; ValaArrayType* array_type; ValaArrayType* _tmp2_; g_return_if_fail (self != NULL); g_return_if_fail (type != NULL); _tmp0_ = type; _tmp1_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp0_) ? ((ValaArrayType*) _tmp0_) : NULL); array_type = _tmp1_; _tmp2_ = array_type; if (_tmp2_ != NULL) { ValaArrayType* _tmp3_; ValaDataType* _tmp4_; ValaDataType* _tmp5_; ValaArrayType* _tmp6_; ValaDataType* _tmp7_; ValaDataType* _tmp8_; _tmp3_ = array_type; _tmp4_ = vala_array_type_get_element_type (_tmp3_); _tmp5_ = _tmp4_; vala_ccode_base_module_check_type (self, _tmp5_); _tmp6_ = array_type; _tmp7_ = vala_array_type_get_element_type (_tmp6_); _tmp8_ = _tmp7_; if (VALA_IS_ARRAY_TYPE (_tmp8_)) { ValaDataType* _tmp9_; ValaSourceReference* _tmp10_; ValaSourceReference* _tmp11_; _tmp9_ = type; _tmp10_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp9_); _tmp11_ = _tmp10_; vala_report_error (_tmp11_, "Stacked arrays are not supported"); } else { ValaArrayType* _tmp12_; ValaDataType* _tmp13_; ValaDataType* _tmp14_; _tmp12_ = array_type; _tmp13_ = vala_array_type_get_element_type (_tmp12_); _tmp14_ = _tmp13_; if (VALA_IS_DELEGATE_TYPE (_tmp14_)) { ValaArrayType* _tmp15_; ValaDataType* _tmp16_; ValaDataType* _tmp17_; ValaDelegateType* _tmp18_; ValaDelegateType* delegate_type; ValaDelegateType* _tmp19_; ValaDelegate* _tmp20_; ValaDelegate* _tmp21_; gboolean _tmp22_; gboolean _tmp23_; _tmp15_ = array_type; _tmp16_ = vala_array_type_get_element_type (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp17_)); delegate_type = _tmp18_; _tmp19_ = delegate_type; _tmp20_ = vala_delegate_type_get_delegate_symbol (_tmp19_); _tmp21_ = _tmp20_; _tmp22_ = vala_delegate_get_has_target (_tmp21_); _tmp23_ = _tmp22_; if (_tmp23_) { ValaDataType* _tmp24_; ValaSourceReference* _tmp25_; ValaSourceReference* _tmp26_; _tmp24_ = type; _tmp25_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp24_); _tmp26_ = _tmp25_; vala_report_error (_tmp26_, "Delegates with target are not supported as array element type"); } _vala_code_node_unref0 (delegate_type); } } } { ValaDataType* _tmp27_; ValaList* _tmp28_ = NULL; ValaList* _type_arg_list; ValaList* _tmp29_; gint _tmp30_; gint _tmp31_; gint _type_arg_size; gint _type_arg_index; _tmp27_ = type; _tmp28_ = vala_data_type_get_type_arguments (_tmp27_); _type_arg_list = _tmp28_; _tmp29_ = _type_arg_list; _tmp30_ = vala_collection_get_size ((ValaCollection*) _tmp29_); _tmp31_ = _tmp30_; _type_arg_size = _tmp31_; _type_arg_index = -1; while (TRUE) { gint _tmp32_; gint _tmp33_; gint _tmp34_; ValaList* _tmp35_; gint _tmp36_; gpointer _tmp37_ = NULL; ValaDataType* type_arg; ValaDataType* _tmp38_; ValaDataType* _tmp39_; _tmp32_ = _type_arg_index; _type_arg_index = _tmp32_ + 1; _tmp33_ = _type_arg_index; _tmp34_ = _type_arg_size; if (!(_tmp33_ < _tmp34_)) { break; } _tmp35_ = _type_arg_list; _tmp36_ = _type_arg_index; _tmp37_ = vala_list_get (_tmp35_, _tmp36_); type_arg = (ValaDataType*) _tmp37_; _tmp38_ = type_arg; vala_ccode_base_module_check_type (self, _tmp38_); _tmp39_ = type_arg; vala_ccode_base_module_check_type_argument (self, _tmp39_); _vala_code_node_unref0 (type_arg); } _vala_iterable_unref0 (_type_arg_list); } _vala_code_node_unref0 (array_type); } static void vala_ccode_base_module_check_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; gboolean _tmp4_ = FALSE; ValaDataType* _tmp5_; gboolean _tmp7_; gboolean _tmp10_; gboolean _tmp13_; gboolean _tmp16_; gboolean _tmp19_; g_return_if_fail (self != NULL); g_return_if_fail (type_arg != NULL); _tmp5_ = type_arg; if (VALA_IS_GENERIC_TYPE (_tmp5_)) { _tmp4_ = TRUE; } else { ValaDataType* _tmp6_; _tmp6_ = type_arg; _tmp4_ = VALA_IS_POINTER_TYPE (_tmp6_); } _tmp7_ = _tmp4_; if (_tmp7_) { _tmp3_ = TRUE; } else { ValaDataType* _tmp8_; gboolean _tmp9_ = FALSE; _tmp8_ = type_arg; _tmp9_ = vala_ccode_base_module_is_reference_type_argument (self, _tmp8_); _tmp3_ = _tmp9_; } _tmp10_ = _tmp3_; if (_tmp10_) { _tmp2_ = TRUE; } else { ValaDataType* _tmp11_; gboolean _tmp12_ = FALSE; _tmp11_ = type_arg; _tmp12_ = vala_ccode_base_module_is_nullable_value_type_argument (self, _tmp11_); _tmp2_ = _tmp12_; } _tmp13_ = _tmp2_; if (_tmp13_) { _tmp1_ = TRUE; } else { ValaDataType* _tmp14_; gboolean _tmp15_ = FALSE; _tmp14_ = type_arg; _tmp15_ = vala_ccode_base_module_is_signed_integer_type_argument (self, _tmp14_); _tmp1_ = _tmp15_; } _tmp16_ = _tmp1_; if (_tmp16_) { _tmp0_ = TRUE; } else { ValaDataType* _tmp17_; gboolean _tmp18_ = FALSE; _tmp17_ = type_arg; _tmp18_ = vala_ccode_base_module_is_unsigned_integer_type_argument (self, _tmp17_); _tmp0_ = _tmp18_; } _tmp19_ = _tmp0_; if (_tmp19_) { } else { ValaDataType* _tmp20_; _tmp20_ = type_arg; if (VALA_IS_DELEGATE_TYPE (_tmp20_)) { ValaDataType* _tmp21_; ValaDelegateType* _tmp22_; ValaDelegateType* delegate_type; ValaDelegateType* _tmp23_; ValaDelegate* _tmp24_; ValaDelegate* _tmp25_; gboolean _tmp26_; gboolean _tmp27_; _tmp21_ = type_arg; _tmp22_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp21_)); delegate_type = _tmp22_; _tmp23_ = delegate_type; _tmp24_ = vala_delegate_type_get_delegate_symbol (_tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_delegate_get_has_target (_tmp25_); _tmp27_ = _tmp26_; if (_tmp27_) { ValaDataType* _tmp28_; ValaSourceReference* _tmp29_; ValaSourceReference* _tmp30_; _tmp28_ = type_arg; _tmp29_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp28_); _tmp30_ = _tmp29_; vala_report_error (_tmp30_, "Delegates with target are not supported as generic type arguments"); } _vala_code_node_unref0 (delegate_type); } else { ValaDataType* _tmp31_; ValaSourceReference* _tmp32_; ValaSourceReference* _tmp33_; ValaDataType* _tmp34_; gchar* _tmp35_ = NULL; gchar* _tmp36_; gchar* _tmp37_ = NULL; gchar* _tmp38_; _tmp31_ = type_arg; _tmp32_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp31_); _tmp33_ = _tmp32_; _tmp34_ = type_arg; _tmp35_ = vala_code_node_to_string ((ValaCodeNode*) _tmp34_); _tmp36_ = _tmp35_; _tmp37_ = g_strdup_printf ("`%s' is not a supported generic type argument, use `?' to box value ty" \ "pes", _tmp36_); _tmp38_ = _tmp37_; vala_report_error (_tmp33_, _tmp38_); _g_free0 (_tmp38_); _g_free0 (_tmp36_); } } } static void vala_ccode_base_module_real_generate_class_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space) { ValaCCodeFile* _tmp0_; ValaClass* _tmp1_; ValaClass* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gboolean _tmp5_ = FALSE; gboolean _tmp6_; g_return_if_fail (cl != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = cl; _tmp2_ = cl; _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_ccode_base_module_add_symbol_declaration (self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); if (_tmp6_) { return; } } void vala_ccode_base_module_generate_class_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_class_declaration (self, cl, decl_space); } static void vala_ccode_base_module_real_generate_interface_declaration (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space) { g_return_if_fail (iface != NULL); g_return_if_fail (decl_space != NULL); } void vala_ccode_base_module_generate_interface_declaration (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_interface_declaration (self, iface, decl_space); } static void vala_ccode_base_module_real_generate_method_declaration (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space) { g_return_if_fail (m != NULL); g_return_if_fail (decl_space != NULL); } void vala_ccode_base_module_generate_method_declaration (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_method_declaration (self, m, decl_space); } static void vala_ccode_base_module_real_generate_error_domain_declaration (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space) { g_return_if_fail (edomain != NULL); g_return_if_fail (decl_space != NULL); } void vala_ccode_base_module_generate_error_domain_declaration (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_error_domain_declaration (self, edomain, decl_space); } void vala_ccode_base_module_add_generic_type_arguments (ValaCCodeBaseModule* self, ValaMap* arg_map, ValaList* type_args, ValaCodeNode* expr, gboolean is_chainup, ValaList* type_parameters) { gint type_param_index; g_return_if_fail (self != NULL); g_return_if_fail (arg_map != NULL); g_return_if_fail (type_args != NULL); g_return_if_fail (expr != NULL); type_param_index = 0; { ValaList* _tmp0_; ValaList* _tmp1_; ValaList* _type_arg_list; ValaList* _tmp2_; gint _tmp3_; gint _tmp4_; gint _type_arg_size; gint _type_arg_index; _tmp0_ = type_args; _tmp1_ = _vala_iterable_ref0 (_tmp0_); _type_arg_list = _tmp1_; _tmp2_ = _type_arg_list; _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_); _tmp4_ = _tmp3_; _type_arg_size = _tmp4_; _type_arg_index = -1; while (TRUE) { gint _tmp5_; gint _tmp6_; gint _tmp7_; ValaList* _tmp8_; gint _tmp9_; gpointer _tmp10_ = NULL; ValaDataType* type_arg; ValaList* _tmp11_; ValaMap* _tmp44_; gint _tmp45_; gint _tmp46_ = 0; ValaDataType* _tmp47_; gboolean _tmp48_; ValaCCodeExpression* _tmp49_ = NULL; ValaCCodeExpression* _tmp50_; ValaDataType* _tmp51_; gboolean _tmp52_ = FALSE; gint _tmp84_; _tmp5_ = _type_arg_index; _type_arg_index = _tmp5_ + 1; _tmp6_ = _type_arg_index; _tmp7_ = _type_arg_size; if (!(_tmp6_ < _tmp7_)) { break; } _tmp8_ = _type_arg_list; _tmp9_ = _type_arg_index; _tmp10_ = vala_list_get (_tmp8_, _tmp9_); type_arg = (ValaDataType*) _tmp10_; _tmp11_ = type_parameters; if (_tmp11_ != NULL) { ValaList* _tmp12_; gint _tmp13_; gpointer _tmp14_ = NULL; ValaTypeParameter* _tmp15_; const gchar* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_ = NULL; gchar* _tmp19_; gchar* type_param_name; ValaMap* _tmp20_; gint _tmp21_; gint _tmp22_ = 0; const gchar* _tmp23_; gchar* _tmp24_ = NULL; gchar* _tmp25_; ValaCCodeConstant* _tmp26_; ValaCCodeConstant* _tmp27_; ValaMap* _tmp28_; gint _tmp29_; gint _tmp30_ = 0; const gchar* _tmp31_; gchar* _tmp32_ = NULL; gchar* _tmp33_; ValaCCodeConstant* _tmp34_; ValaCCodeConstant* _tmp35_; ValaMap* _tmp36_; gint _tmp37_; gint _tmp38_ = 0; const gchar* _tmp39_; gchar* _tmp40_ = NULL; gchar* _tmp41_; ValaCCodeConstant* _tmp42_; ValaCCodeConstant* _tmp43_; _tmp12_ = type_parameters; _tmp13_ = type_param_index; _tmp14_ = vala_list_get (_tmp12_, _tmp13_); _tmp15_ = (ValaTypeParameter*) _tmp14_; _tmp16_ = vala_symbol_get_name ((ValaSymbol*) _tmp15_); _tmp17_ = _tmp16_; _tmp18_ = g_utf8_strdown (_tmp17_, (gssize) (-1)); _tmp19_ = _tmp18_; _vala_code_node_unref0 (_tmp15_); type_param_name = _tmp19_; _tmp20_ = arg_map; _tmp21_ = type_param_index; _tmp22_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp21_) + 0.01, FALSE); _tmp23_ = type_param_name; _tmp24_ = g_strdup_printf ("\"%s_type\"", _tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_constant_new (_tmp25_); _tmp27_ = _tmp26_; vala_map_set (_tmp20_, GINT_TO_POINTER (_tmp22_), (ValaCCodeExpression*) _tmp27_); _vala_ccode_node_unref0 (_tmp27_); _g_free0 (_tmp25_); _tmp28_ = arg_map; _tmp29_ = type_param_index; _tmp30_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp29_) + 0.03, FALSE); _tmp31_ = type_param_name; _tmp32_ = g_strdup_printf ("\"%s_dup_func\"", _tmp31_); _tmp33_ = _tmp32_; _tmp34_ = vala_ccode_constant_new (_tmp33_); _tmp35_ = _tmp34_; vala_map_set (_tmp28_, GINT_TO_POINTER (_tmp30_), (ValaCCodeExpression*) _tmp35_); _vala_ccode_node_unref0 (_tmp35_); _g_free0 (_tmp33_); _tmp36_ = arg_map; _tmp37_ = type_param_index; _tmp38_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp37_) + 0.05, FALSE); _tmp39_ = type_param_name; _tmp40_ = g_strdup_printf ("\"%s_destroy_func\"", _tmp39_); _tmp41_ = _tmp40_; _tmp42_ = vala_ccode_constant_new (_tmp41_); _tmp43_ = _tmp42_; vala_map_set (_tmp36_, GINT_TO_POINTER (_tmp38_), (ValaCCodeExpression*) _tmp43_); _vala_ccode_node_unref0 (_tmp43_); _g_free0 (_tmp41_); _g_free0 (type_param_name); } _tmp44_ = arg_map; _tmp45_ = type_param_index; _tmp46_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp45_) + 0.02, FALSE); _tmp47_ = type_arg; _tmp48_ = is_chainup; _tmp49_ = vala_ccode_base_module_get_type_id_expression (self, _tmp47_, _tmp48_); _tmp50_ = _tmp49_; vala_map_set (_tmp44_, GINT_TO_POINTER (_tmp46_), _tmp50_); _vala_ccode_node_unref0 (_tmp50_); _tmp51_ = type_arg; _tmp52_ = vala_ccode_base_module_requires_copy (self, _tmp51_); if (_tmp52_) { ValaDataType* _tmp53_; ValaDataType* _tmp54_; ValaSourceReference* _tmp55_; ValaSourceReference* _tmp56_; gboolean _tmp57_; ValaCCodeExpression* _tmp58_ = NULL; ValaCCodeExpression* dup_func; ValaCCodeExpression* _tmp59_; ValaMap* _tmp61_; gint _tmp62_; gint _tmp63_ = 0; ValaCCodeExpression* _tmp64_; ValaCCodeCastExpression* _tmp65_; ValaCCodeCastExpression* _tmp66_; ValaMap* _tmp67_; gint _tmp68_; gint _tmp69_ = 0; ValaDataType* _tmp70_; gboolean _tmp71_; ValaCCodeExpression* _tmp72_ = NULL; ValaCCodeExpression* _tmp73_; _tmp53_ = type_arg; _tmp54_ = type_arg; _tmp55_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp54_); _tmp56_ = _tmp55_; _tmp57_ = is_chainup; _tmp58_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp53_, _tmp56_, _tmp57_); dup_func = _tmp58_; _tmp59_ = dup_func; if (_tmp59_ == NULL) { ValaCodeNode* _tmp60_; _tmp60_ = expr; vala_code_node_set_error (_tmp60_, TRUE); _vala_ccode_node_unref0 (dup_func); _vala_code_node_unref0 (type_arg); _vala_iterable_unref0 (_type_arg_list); return; } _tmp61_ = arg_map; _tmp62_ = type_param_index; _tmp63_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp62_) + 0.04, FALSE); _tmp64_ = dup_func; _tmp65_ = vala_ccode_cast_expression_new (_tmp64_, "GBoxedCopyFunc"); _tmp66_ = _tmp65_; vala_map_set (_tmp61_, GINT_TO_POINTER (_tmp63_), (ValaCCodeExpression*) _tmp66_); _vala_ccode_node_unref0 (_tmp66_); _tmp67_ = arg_map; _tmp68_ = type_param_index; _tmp69_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp68_) + 0.06, FALSE); _tmp70_ = type_arg; _tmp71_ = is_chainup; _tmp72_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp70_, _tmp71_); _tmp73_ = _tmp72_; vala_map_set (_tmp67_, GINT_TO_POINTER (_tmp69_), _tmp73_); _vala_ccode_node_unref0 (_tmp73_); _vala_ccode_node_unref0 (dup_func); } else { ValaMap* _tmp74_; gint _tmp75_; gint _tmp76_ = 0; ValaCCodeConstant* _tmp77_; ValaCCodeConstant* _tmp78_; ValaMap* _tmp79_; gint _tmp80_; gint _tmp81_ = 0; ValaCCodeConstant* _tmp82_; ValaCCodeConstant* _tmp83_; _tmp74_ = arg_map; _tmp75_ = type_param_index; _tmp76_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp75_) + 0.04, FALSE); _tmp77_ = vala_ccode_constant_new ("NULL"); _tmp78_ = _tmp77_; vala_map_set (_tmp74_, GINT_TO_POINTER (_tmp76_), (ValaCCodeExpression*) _tmp78_); _vala_ccode_node_unref0 (_tmp78_); _tmp79_ = arg_map; _tmp80_ = type_param_index; _tmp81_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp80_) + 0.06, FALSE); _tmp82_ = vala_ccode_constant_new ("NULL"); _tmp83_ = _tmp82_; vala_map_set (_tmp79_, GINT_TO_POINTER (_tmp81_), (ValaCCodeExpression*) _tmp83_); _vala_ccode_node_unref0 (_tmp83_); } _tmp84_ = type_param_index; type_param_index = _tmp84_ + 1; _vala_code_node_unref0 (type_arg); } _vala_iterable_unref0 (_type_arg_list); } } static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCodeVisitor* base, ValaObjectCreationExpression* expr) { ValaCCodeBaseModule * self; ValaCCodeExpression* instance; ValaCCodeExpression* creation_expr; ValaObjectCreationExpression* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaObjectCreationExpression* _tmp3_; ValaDataType* _tmp4_; ValaDataType* _tmp5_; ValaTypeSymbol* _tmp6_; ValaTypeSymbol* _tmp7_; ValaStruct* _tmp8_; ValaStruct* st; gboolean _tmp9_ = FALSE; gboolean _tmp10_ = FALSE; ValaStruct* _tmp11_; gboolean _tmp19_; gboolean _tmp25_; ValaObjectCreationExpression* _tmp132_; ValaSymbol* _tmp133_; ValaSymbol* _tmp134_; ValaObjectCreationExpression* _tmp619_; ValaCodeNode* _tmp620_; ValaCodeNode* _tmp621_; ValaLocalVariable* _tmp622_; ValaLocalVariable* local; gboolean _tmp623_ = FALSE; ValaLocalVariable* _tmp624_; gboolean _tmp630_; ValaObjectCreationExpression* _tmp730_; ValaTargetValue* _tmp731_; ValaTargetValue* _tmp732_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); instance = NULL; creation_expr = NULL; _tmp0_ = expr; _tmp1_ = vala_object_creation_expression_get_type_reference (_tmp0_); _tmp2_ = _tmp1_; vala_ccode_base_module_check_type (self, _tmp2_); _tmp3_ = expr; _tmp4_ = vala_object_creation_expression_get_type_reference (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = vala_data_type_get_data_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp7_) ? ((ValaStruct*) _tmp7_) : NULL); st = _tmp8_; _tmp11_ = st; if (_tmp11_ != NULL) { gboolean _tmp12_ = FALSE; ValaStruct* _tmp13_; gboolean _tmp14_ = FALSE; gboolean _tmp18_; _tmp13_ = st; _tmp14_ = vala_struct_is_simple_type (_tmp13_); if (!_tmp14_) { _tmp12_ = TRUE; } else { ValaStruct* _tmp15_; gchar* _tmp16_ = NULL; gchar* _tmp17_; _tmp15_ = st; _tmp16_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp15_); _tmp17_ = _tmp16_; _tmp12_ = g_strcmp0 (_tmp17_, "va_list") == 0; _g_free0 (_tmp17_); } _tmp18_ = _tmp12_; _tmp10_ = _tmp18_; } else { _tmp10_ = FALSE; } _tmp19_ = _tmp10_; if (_tmp19_) { _tmp9_ = TRUE; } else { ValaObjectCreationExpression* _tmp20_; ValaList* _tmp21_ = NULL; ValaList* _tmp22_; gint _tmp23_; gint _tmp24_; _tmp20_ = expr; _tmp21_ = vala_object_creation_expression_get_object_initializer (_tmp20_); _tmp22_ = _tmp21_; _tmp23_ = vala_collection_get_size ((ValaCollection*) _tmp22_); _tmp24_ = _tmp23_; _tmp9_ = _tmp24_ > 0; _vala_iterable_unref0 (_tmp22_); } _tmp25_ = _tmp9_; if (_tmp25_) { ValaObjectCreationExpression* _tmp26_; ValaCodeNode* _tmp27_; ValaCodeNode* _tmp28_; ValaLocalVariable* _tmp29_; ValaLocalVariable* local; ValaObjectCreationExpression* _tmp30_; ValaCodeNode* _tmp31_; ValaCodeNode* _tmp32_; ValaAssignment* _tmp33_; ValaAssignment* a; gboolean _tmp34_ = FALSE; ValaLocalVariable* _tmp35_; gboolean _tmp41_; _tmp26_ = expr; _tmp27_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp26_); _tmp28_ = _tmp27_; _tmp29_ = _vala_code_node_ref0 (VALA_IS_LOCAL_VARIABLE (_tmp28_) ? ((ValaLocalVariable*) _tmp28_) : NULL); local = _tmp29_; _tmp30_ = expr; _tmp31_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp30_); _tmp32_ = _tmp31_; _tmp33_ = _vala_code_node_ref0 (VALA_IS_ASSIGNMENT (_tmp32_) ? ((ValaAssignment*) _tmp32_) : NULL); a = _tmp33_; _tmp35_ = local; if (_tmp35_ != NULL) { ValaLocalVariable* _tmp36_; ValaLocalVariable* _tmp37_; ValaExpression* _tmp38_; ValaExpression* _tmp39_; gboolean _tmp40_ = FALSE; _tmp36_ = local; _tmp37_ = local; _tmp38_ = vala_variable_get_initializer ((ValaVariable*) _tmp37_); _tmp39_ = _tmp38_; _tmp40_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp36_, _tmp39_); _tmp34_ = _tmp40_; } else { _tmp34_ = FALSE; } _tmp41_ = _tmp34_; if (_tmp41_) { ValaLocalVariable* _tmp42_; ValaTargetValue* _tmp43_ = NULL; ValaTargetValue* _tmp44_; ValaCCodeExpression* _tmp45_ = NULL; _tmp42_ = local; _tmp43_ = vala_ccode_base_module_get_local_cvalue (self, _tmp42_); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_base_module_get_cvalue_ (self, _tmp44_); _vala_ccode_node_unref0 (instance); instance = _tmp45_; _vala_target_value_unref0 (_tmp44_); } else { gboolean _tmp46_ = FALSE; gboolean _tmp47_ = FALSE; ValaAssignment* _tmp48_; gboolean _tmp54_; gboolean _tmp64_; _tmp48_ = a; if (_tmp48_ != NULL) { ValaAssignment* _tmp49_; ValaExpression* _tmp50_; ValaExpression* _tmp51_; ValaSymbol* _tmp52_; ValaSymbol* _tmp53_; _tmp49_ = a; _tmp50_ = vala_assignment_get_left (_tmp49_); _tmp51_ = _tmp50_; _tmp52_ = vala_expression_get_symbol_reference (_tmp51_); _tmp53_ = _tmp52_; _tmp47_ = VALA_IS_VARIABLE (_tmp53_); } else { _tmp47_ = FALSE; } _tmp54_ = _tmp47_; if (_tmp54_) { ValaAssignment* _tmp55_; ValaExpression* _tmp56_; ValaExpression* _tmp57_; ValaSymbol* _tmp58_; ValaSymbol* _tmp59_; ValaAssignment* _tmp60_; ValaExpression* _tmp61_; ValaExpression* _tmp62_; gboolean _tmp63_ = FALSE; _tmp55_ = a; _tmp56_ = vala_assignment_get_left (_tmp55_); _tmp57_ = _tmp56_; _tmp58_ = vala_expression_get_symbol_reference (_tmp57_); _tmp59_ = _tmp58_; _tmp60_ = a; _tmp61_ = vala_assignment_get_right (_tmp60_); _tmp62_ = _tmp61_; _tmp63_ = vala_ccode_base_module_is_simple_struct_creation (self, VALA_VARIABLE (_tmp59_), _tmp62_); _tmp46_ = _tmp63_; } else { _tmp46_ = FALSE; } _tmp64_ = _tmp46_; if (_tmp64_) { ValaAssignment* _tmp65_; ValaExpression* _tmp66_; ValaExpression* _tmp67_; ValaDataType* _tmp68_; ValaDataType* _tmp69_; gboolean _tmp70_ = FALSE; ValaAssignment* _tmp80_; ValaExpression* _tmp81_; ValaExpression* _tmp82_; ValaSymbol* _tmp83_; ValaSymbol* _tmp84_; ValaLocalVariable* _tmp85_; ValaAssignment* _tmp86_; ValaExpression* _tmp87_; ValaExpression* _tmp88_; ValaSymbol* _tmp89_; ValaSymbol* _tmp90_; ValaField* _tmp91_; ValaField* field; ValaAssignment* _tmp92_; ValaExpression* _tmp93_; ValaExpression* _tmp94_; ValaSymbol* _tmp95_; ValaSymbol* _tmp96_; ValaParameter* _tmp97_; ValaParameter* param; ValaLocalVariable* _tmp98_; _tmp65_ = a; _tmp66_ = vala_assignment_get_left (_tmp65_); _tmp67_ = _tmp66_; _tmp68_ = vala_expression_get_value_type (_tmp67_); _tmp69_ = _tmp68_; _tmp70_ = vala_ccode_base_module_requires_destroy (self, _tmp69_); if (_tmp70_) { ValaCCodeFunction* _tmp71_; ValaCCodeFunction* _tmp72_; ValaAssignment* _tmp73_; ValaExpression* _tmp74_; ValaExpression* _tmp75_; ValaTargetValue* _tmp76_; ValaTargetValue* _tmp77_; ValaCCodeExpression* _tmp78_ = NULL; ValaCCodeExpression* _tmp79_; _tmp71_ = vala_ccode_base_module_get_ccode (self); _tmp72_ = _tmp71_; _tmp73_ = a; _tmp74_ = vala_assignment_get_left (_tmp73_); _tmp75_ = _tmp74_; _tmp76_ = vala_expression_get_target_value (_tmp75_); _tmp77_ = _tmp76_; _tmp78_ = vala_ccode_base_module_destroy_value (self, _tmp77_, FALSE); _tmp79_ = _tmp78_; vala_ccode_function_add_expression (_tmp72_, _tmp79_); _vala_ccode_node_unref0 (_tmp79_); } _tmp80_ = a; _tmp81_ = vala_assignment_get_left (_tmp80_); _tmp82_ = _tmp81_; _tmp83_ = vala_expression_get_symbol_reference (_tmp82_); _tmp84_ = _tmp83_; _tmp85_ = _vala_code_node_ref0 (VALA_IS_LOCAL_VARIABLE (_tmp84_) ? ((ValaLocalVariable*) _tmp84_) : NULL); _vala_code_node_unref0 (local); local = _tmp85_; _tmp86_ = a; _tmp87_ = vala_assignment_get_left (_tmp86_); _tmp88_ = _tmp87_; _tmp89_ = vala_expression_get_symbol_reference (_tmp88_); _tmp90_ = _tmp89_; _tmp91_ = _vala_code_node_ref0 (VALA_IS_FIELD (_tmp90_) ? ((ValaField*) _tmp90_) : NULL); field = _tmp91_; _tmp92_ = a; _tmp93_ = vala_assignment_get_left (_tmp92_); _tmp94_ = _tmp93_; _tmp95_ = vala_expression_get_symbol_reference (_tmp94_); _tmp96_ = _tmp95_; _tmp97_ = _vala_code_node_ref0 (VALA_IS_PARAMETER (_tmp96_) ? ((ValaParameter*) _tmp96_) : NULL); param = _tmp97_; _tmp98_ = local; if (_tmp98_ != NULL) { ValaLocalVariable* _tmp99_; ValaTargetValue* _tmp100_ = NULL; ValaTargetValue* _tmp101_; ValaCCodeExpression* _tmp102_ = NULL; _tmp99_ = local; _tmp100_ = vala_ccode_base_module_get_local_cvalue (self, _tmp99_); _tmp101_ = _tmp100_; _tmp102_ = vala_ccode_base_module_get_cvalue_ (self, _tmp101_); _vala_ccode_node_unref0 (instance); instance = _tmp102_; _vala_target_value_unref0 (_tmp101_); } else { ValaField* _tmp103_; _tmp103_ = field; if (_tmp103_ != NULL) { ValaAssignment* _tmp104_; ValaExpression* _tmp105_; ValaExpression* _tmp106_; ValaExpression* _tmp107_; ValaExpression* _tmp108_; ValaExpression* _tmp109_; ValaExpression* inner; ValaTargetValue* _tmp110_ = NULL; ValaExpression* _tmp111_; ValaField* _tmp115_; ValaTargetValue* _tmp116_; ValaTargetValue* _tmp117_ = NULL; ValaTargetValue* _tmp118_; ValaCCodeExpression* _tmp119_ = NULL; _tmp104_ = a; _tmp105_ = vala_assignment_get_left (_tmp104_); _tmp106_ = _tmp105_; _tmp107_ = vala_member_access_get_inner (VALA_MEMBER_ACCESS (_tmp106_)); _tmp108_ = _tmp107_; _tmp109_ = _vala_code_node_ref0 (_tmp108_); inner = _tmp109_; _tmp111_ = inner; if (_tmp111_ != NULL) { ValaExpression* _tmp112_; ValaTargetValue* _tmp113_; ValaTargetValue* _tmp114_; _tmp112_ = inner; _tmp113_ = vala_expression_get_target_value (_tmp112_); _tmp114_ = _tmp113_; _tmp110_ = _tmp114_; } else { _tmp110_ = NULL; } _tmp115_ = field; _tmp116_ = _tmp110_; _tmp117_ = vala_ccode_base_module_get_field_cvalue (self, _tmp115_, _tmp116_); _tmp118_ = _tmp117_; _tmp119_ = vala_ccode_base_module_get_cvalue_ (self, _tmp118_); _vala_ccode_node_unref0 (instance); instance = _tmp119_; _vala_target_value_unref0 (_tmp118_); _vala_code_node_unref0 (inner); } else { ValaParameter* _tmp120_; _tmp120_ = param; if (_tmp120_ != NULL) { ValaParameter* _tmp121_; ValaTargetValue* _tmp122_ = NULL; ValaTargetValue* _tmp123_; ValaCCodeExpression* _tmp124_ = NULL; _tmp121_ = param; _tmp122_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp121_); _tmp123_ = _tmp122_; _tmp124_ = vala_ccode_base_module_get_cvalue_ (self, _tmp123_); _vala_ccode_node_unref0 (instance); instance = _tmp124_; _vala_target_value_unref0 (_tmp123_); } } } _vala_code_node_unref0 (param); _vala_code_node_unref0 (field); } else { ValaObjectCreationExpression* _tmp125_; ValaDataType* _tmp126_; ValaDataType* _tmp127_; ValaObjectCreationExpression* _tmp128_; ValaTargetValue* _tmp129_ = NULL; ValaTargetValue* temp_value; ValaTargetValue* _tmp130_; ValaCCodeExpression* _tmp131_ = NULL; _tmp125_ = expr; _tmp126_ = vala_object_creation_expression_get_type_reference (_tmp125_); _tmp127_ = _tmp126_; _tmp128_ = expr; _tmp129_ = vala_ccode_base_module_create_temp_value (self, _tmp127_, TRUE, (ValaCodeNode*) _tmp128_, NULL); temp_value = _tmp129_; _tmp130_ = temp_value; _tmp131_ = vala_ccode_base_module_get_cvalue_ (self, _tmp130_); _vala_ccode_node_unref0 (instance); instance = _tmp131_; _vala_target_value_unref0 (temp_value); } } _vala_code_node_unref0 (a); _vala_code_node_unref0 (local); } _tmp132_ = expr; _tmp133_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp132_); _tmp134_ = _tmp133_; if (_tmp134_ == NULL) { ValaObjectCreationExpression* _tmp135_; ValaDataType* _tmp136_; ValaDataType* _tmp137_; ValaTypeSymbol* _tmp138_; ValaTypeSymbol* _tmp139_; _tmp135_ = expr; _tmp136_ = vala_object_creation_expression_get_type_reference (_tmp135_); _tmp137_ = _tmp136_; _tmp138_ = vala_data_type_get_data_type (_tmp137_); _tmp139_ = _tmp138_; if (VALA_IS_STRUCT (_tmp139_)) { ValaCCodeFile* _tmp140_; ValaCCodeIdentifier* _tmp141_; ValaCCodeIdentifier* _tmp142_; ValaCCodeFunctionCall* _tmp143_; ValaCCodeFunctionCall* _tmp144_; ValaCCodeFunctionCall* creation_call; ValaCCodeFunctionCall* _tmp145_; ValaCCodeExpression* _tmp146_; ValaCCodeUnaryExpression* _tmp147_; ValaCCodeUnaryExpression* _tmp148_; ValaCCodeFunctionCall* _tmp149_; ValaCCodeConstant* _tmp150_; ValaCCodeConstant* _tmp151_; ValaCCodeFunctionCall* _tmp152_; ValaObjectCreationExpression* _tmp153_; ValaDataType* _tmp154_; ValaDataType* _tmp155_; gchar* _tmp156_ = NULL; gchar* _tmp157_; gchar* _tmp158_ = NULL; gchar* _tmp159_; ValaCCodeIdentifier* _tmp160_; ValaCCodeIdentifier* _tmp161_; ValaCCodeFunctionCall* _tmp162_; ValaCCodeExpression* _tmp163_; _tmp140_ = self->cfile; vala_ccode_file_add_include (_tmp140_, "string.h", FALSE); _tmp141_ = vala_ccode_identifier_new ("memset"); _tmp142_ = _tmp141_; _tmp143_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp142_); _tmp144_ = _tmp143_; _vala_ccode_node_unref0 (_tmp142_); creation_call = _tmp144_; _tmp145_ = creation_call; _tmp146_ = instance; _tmp147_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp146_); _tmp148_ = _tmp147_; vala_ccode_function_call_add_argument (_tmp145_, (ValaCCodeExpression*) _tmp148_); _vala_ccode_node_unref0 (_tmp148_); _tmp149_ = creation_call; _tmp150_ = vala_ccode_constant_new ("0"); _tmp151_ = _tmp150_; vala_ccode_function_call_add_argument (_tmp149_, (ValaCCodeExpression*) _tmp151_); _vala_ccode_node_unref0 (_tmp151_); _tmp152_ = creation_call; _tmp153_ = expr; _tmp154_ = vala_object_creation_expression_get_type_reference (_tmp153_); _tmp155_ = _tmp154_; _tmp156_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp155_); _tmp157_ = _tmp156_; _tmp158_ = g_strdup_printf ("sizeof (%s)", _tmp157_); _tmp159_ = _tmp158_; _tmp160_ = vala_ccode_identifier_new (_tmp159_); _tmp161_ = _tmp160_; vala_ccode_function_call_add_argument (_tmp152_, (ValaCCodeExpression*) _tmp161_); _vala_ccode_node_unref0 (_tmp161_); _g_free0 (_tmp159_); _g_free0 (_tmp157_); _tmp162_ = creation_call; _tmp163_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp162_); _vala_ccode_node_unref0 (creation_expr); creation_expr = _tmp163_; _vala_ccode_node_unref0 (creation_call); } } else { gboolean _tmp164_ = FALSE; ValaObjectCreationExpression* _tmp165_; ValaDataType* _tmp166_; ValaDataType* _tmp167_; ValaTypeSymbol* _tmp168_; ValaTypeSymbol* _tmp169_; ValaClass* _tmp170_; gboolean _tmp177_; _tmp165_ = expr; _tmp166_ = vala_object_creation_expression_get_type_reference (_tmp165_); _tmp167_ = _tmp166_; _tmp168_ = vala_data_type_get_data_type (_tmp167_); _tmp169_ = _tmp168_; _tmp170_ = self->glist_type; if (_tmp169_ == VALA_TYPESYMBOL (_tmp170_)) { _tmp164_ = TRUE; } else { ValaObjectCreationExpression* _tmp171_; ValaDataType* _tmp172_; ValaDataType* _tmp173_; ValaTypeSymbol* _tmp174_; ValaTypeSymbol* _tmp175_; ValaClass* _tmp176_; _tmp171_ = expr; _tmp172_ = vala_object_creation_expression_get_type_reference (_tmp171_); _tmp173_ = _tmp172_; _tmp174_ = vala_data_type_get_data_type (_tmp173_); _tmp175_ = _tmp174_; _tmp176_ = self->gslist_type; _tmp164_ = _tmp175_ == VALA_TYPESYMBOL (_tmp176_); } _tmp177_ = _tmp164_; if (_tmp177_) { ValaObjectCreationExpression* _tmp178_; ValaCCodeConstant* _tmp179_; ValaCCodeConstant* _tmp180_; _tmp178_ = expr; _tmp179_ = vala_ccode_constant_new ("NULL"); _tmp180_ = _tmp179_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp178_, (ValaCCodeExpression*) _tmp180_); _vala_ccode_node_unref0 (_tmp180_); } else { ValaObjectCreationExpression* _tmp181_; ValaSymbol* _tmp182_; ValaSymbol* _tmp183_; _tmp181_ = expr; _tmp182_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp181_); _tmp183_ = _tmp182_; if (VALA_IS_METHOD (_tmp183_)) { ValaObjectCreationExpression* _tmp184_; ValaSymbol* _tmp185_; ValaSymbol* _tmp186_; ValaMethod* _tmp187_; ValaMethod* m; ValaMethod* _tmp188_; ValaList* _tmp189_ = NULL; ValaList* params; ValaCCodeFunctionCall* creation_call = NULL; ValaMethod* _tmp190_; ValaCCodeFile* _tmp191_; ValaObjectCreationExpression* _tmp192_; ValaDataType* _tmp193_; ValaDataType* _tmp194_; ValaTypeSymbol* _tmp195_; ValaTypeSymbol* _tmp196_; ValaClass* _tmp197_; ValaClass* cl; ValaMethod* _tmp198_; gboolean _tmp199_ = FALSE; gboolean _tmp218_ = FALSE; gboolean _tmp219_ = FALSE; ValaStruct* _tmp220_; gboolean _tmp223_; gboolean _tmp226_; ValaObjectCreationExpression* _tmp268_; ValaDataType* _tmp269_; ValaDataType* _tmp270_; ValaCCodeFile* _tmp271_; GHashFunc _tmp272_; GEqualFunc _tmp273_; GEqualFunc _tmp274_; ValaHashMap* _tmp275_; ValaHashMap* carg_map; gboolean _tmp276_ = FALSE; ValaClass* _tmp277_; gboolean _tmp281_; gboolean ellipsis; gint i; gint arg_pos = 0; ValaList* _tmp321_; ValaIterator* _tmp322_ = NULL; ValaIterator* params_it; gint last_pos; gint min_pos = 0; gboolean _tmp511_ = FALSE; gboolean _tmp512_ = FALSE; ValaStruct* _tmp513_; gboolean _tmp516_; gboolean _tmp519_; ValaObjectCreationExpression* _tmp524_; gboolean _tmp525_; gboolean _tmp526_; gboolean _tmp532_; ValaCCodeFunctionCall* _tmp552_; ValaCCodeExpression* _tmp553_; ValaMethod* _tmp554_; gchar* _tmp555_ = NULL; gchar* _tmp556_; gboolean _tmp557_; _tmp184_ = expr; _tmp185_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp184_); _tmp186_ = _tmp185_; _tmp187_ = _vala_code_node_ref0 (VALA_METHOD (_tmp186_)); m = _tmp187_; _tmp188_ = m; _tmp189_ = vala_method_get_parameters (_tmp188_); params = _tmp189_; _tmp190_ = m; _tmp191_ = self->cfile; vala_ccode_base_module_generate_method_declaration (self, _tmp190_, _tmp191_); _tmp192_ = expr; _tmp193_ = vala_object_creation_expression_get_type_reference (_tmp192_); _tmp194_ = _tmp193_; _tmp195_ = vala_data_type_get_data_type (_tmp194_); _tmp196_ = _tmp195_; _tmp197_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp196_) ? ((ValaClass*) _tmp196_) : NULL); cl = _tmp197_; _tmp198_ = m; _tmp199_ = vala_ccode_base_module_get_ccode_has_new_function (_tmp198_); if (!_tmp199_) { ValaMethod* _tmp200_; gchar* _tmp201_ = NULL; gchar* _tmp202_; ValaCCodeIdentifier* _tmp203_; ValaCCodeIdentifier* _tmp204_; ValaCCodeFunctionCall* _tmp205_; ValaCCodeFunctionCall* _tmp206_; ValaClass* _tmp207_; gchar* _tmp208_ = NULL; gchar* _tmp209_; ValaCCodeIdentifier* _tmp210_; ValaCCodeIdentifier* _tmp211_; _tmp200_ = m; _tmp201_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp200_); _tmp202_ = _tmp201_; _tmp203_ = vala_ccode_identifier_new (_tmp202_); _tmp204_ = _tmp203_; _tmp205_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp204_); _vala_ccode_node_unref0 (creation_call); creation_call = _tmp205_; _vala_ccode_node_unref0 (_tmp204_); _g_free0 (_tmp202_); _tmp206_ = creation_call; _tmp207_ = cl; _tmp208_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp207_); _tmp209_ = _tmp208_; _tmp210_ = vala_ccode_identifier_new (_tmp209_); _tmp211_ = _tmp210_; vala_ccode_function_call_add_argument (_tmp206_, (ValaCCodeExpression*) _tmp211_); _vala_ccode_node_unref0 (_tmp211_); _g_free0 (_tmp209_); } else { ValaMethod* _tmp212_; gchar* _tmp213_ = NULL; gchar* _tmp214_; ValaCCodeIdentifier* _tmp215_; ValaCCodeIdentifier* _tmp216_; ValaCCodeFunctionCall* _tmp217_; _tmp212_ = m; _tmp213_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp212_); _tmp214_ = _tmp213_; _tmp215_ = vala_ccode_identifier_new (_tmp214_); _tmp216_ = _tmp215_; _tmp217_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp216_); _vala_ccode_node_unref0 (creation_call); creation_call = _tmp217_; _vala_ccode_node_unref0 (_tmp216_); _g_free0 (_tmp214_); } _tmp220_ = st; if (_tmp220_ != NULL) { ValaStruct* _tmp221_; gboolean _tmp222_ = FALSE; _tmp221_ = st; _tmp222_ = vala_struct_is_simple_type (_tmp221_); _tmp219_ = !_tmp222_; } else { _tmp219_ = FALSE; } _tmp223_ = _tmp219_; if (_tmp223_) { ValaMethod* _tmp224_; gdouble _tmp225_ = 0.0; _tmp224_ = m; _tmp225_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp224_); _tmp218_ = !(_tmp225_ < ((gdouble) 0)); } else { _tmp218_ = FALSE; } _tmp226_ = _tmp218_; if (_tmp226_) { ValaCCodeFunctionCall* _tmp227_; ValaCCodeExpression* _tmp228_; ValaCCodeUnaryExpression* _tmp229_; ValaCCodeUnaryExpression* _tmp230_; _tmp227_ = creation_call; _tmp228_ = instance; _tmp229_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp228_); _tmp230_ = _tmp229_; vala_ccode_function_call_add_argument (_tmp227_, (ValaCCodeExpression*) _tmp230_); _vala_ccode_node_unref0 (_tmp230_); } else { gboolean _tmp231_ = FALSE; ValaStruct* _tmp232_; gboolean _tmp236_; _tmp232_ = st; if (_tmp232_ != NULL) { ValaStruct* _tmp233_; gchar* _tmp234_ = NULL; gchar* _tmp235_; _tmp233_ = st; _tmp234_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp233_); _tmp235_ = _tmp234_; _tmp231_ = g_strcmp0 (_tmp235_, "va_list") == 0; _g_free0 (_tmp235_); } else { _tmp231_ = FALSE; } _tmp236_ = _tmp231_; if (_tmp236_) { ValaCCodeFunctionCall* _tmp237_; ValaCCodeExpression* _tmp238_; ValaMethod* _tmp239_; gchar* _tmp240_ = NULL; gchar* _tmp241_; gboolean _tmp242_; _tmp237_ = creation_call; _tmp238_ = instance; vala_ccode_function_call_add_argument (_tmp237_, _tmp238_); _tmp239_ = m; _tmp240_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp239_); _tmp241_ = _tmp240_; _tmp242_ = g_strcmp0 (_tmp241_, "va_start") == 0; _g_free0 (_tmp241_); if (_tmp242_) { ValaParameter* last_param; ValaCCodeFunctionCall* _tmp260_; ValaParameter* _tmp261_; const gchar* _tmp262_; const gchar* _tmp263_; gchar* _tmp264_ = NULL; gchar* _tmp265_; ValaCCodeIdentifier* _tmp266_; ValaCCodeIdentifier* _tmp267_; last_param = NULL; { ValaMethod* _tmp243_; ValaMethod* _tmp244_; ValaList* _tmp245_ = NULL; ValaList* _param_list; ValaList* _tmp246_; gint _tmp247_; gint _tmp248_; gint _param_size; gint _param_index; _tmp243_ = vala_ccode_base_module_get_current_method (self); _tmp244_ = _tmp243_; _tmp245_ = vala_method_get_parameters (_tmp244_); _param_list = _tmp245_; _tmp246_ = _param_list; _tmp247_ = vala_collection_get_size ((ValaCollection*) _tmp246_); _tmp248_ = _tmp247_; _param_size = _tmp248_; _param_index = -1; while (TRUE) { gint _tmp249_; gint _tmp250_; gint _tmp251_; ValaList* _tmp252_; gint _tmp253_; gpointer _tmp254_ = NULL; ValaParameter* param; ValaParameter* _tmp255_; gboolean _tmp256_; gboolean _tmp257_; ValaParameter* _tmp258_; ValaParameter* _tmp259_; _tmp249_ = _param_index; _param_index = _tmp249_ + 1; _tmp250_ = _param_index; _tmp251_ = _param_size; if (!(_tmp250_ < _tmp251_)) { break; } _tmp252_ = _param_list; _tmp253_ = _param_index; _tmp254_ = vala_list_get (_tmp252_, _tmp253_); param = (ValaParameter*) _tmp254_; _tmp255_ = param; _tmp256_ = vala_parameter_get_ellipsis (_tmp255_); _tmp257_ = _tmp256_; if (_tmp257_) { _vala_code_node_unref0 (param); break; } _tmp258_ = param; _tmp259_ = _vala_code_node_ref0 (_tmp258_); _vala_code_node_unref0 (last_param); last_param = _tmp259_; _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp260_ = creation_call; _tmp261_ = last_param; _tmp262_ = vala_symbol_get_name ((ValaSymbol*) _tmp261_); _tmp263_ = _tmp262_; _tmp264_ = vala_ccode_base_module_get_variable_cname (self, _tmp263_); _tmp265_ = _tmp264_; _tmp266_ = vala_ccode_identifier_new (_tmp265_); _tmp267_ = _tmp266_; vala_ccode_function_call_add_argument (_tmp260_, (ValaCCodeExpression*) _tmp267_); _vala_ccode_node_unref0 (_tmp267_); _g_free0 (_tmp265_); _vala_code_node_unref0 (last_param); } } } _tmp268_ = expr; _tmp269_ = vala_object_creation_expression_get_type_reference (_tmp268_); _tmp270_ = _tmp269_; _tmp271_ = self->cfile; vala_ccode_base_module_generate_type_declaration (self, _tmp270_, _tmp271_); _tmp272_ = g_direct_hash; _tmp273_ = g_direct_equal; _tmp274_ = g_direct_equal; _tmp275_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp272_, _tmp273_, _tmp274_); carg_map = _tmp275_; _tmp277_ = cl; if (_tmp277_ != NULL) { ValaClass* _tmp278_; gboolean _tmp279_; gboolean _tmp280_; _tmp278_ = cl; _tmp279_ = vala_class_get_is_compact (_tmp278_); _tmp280_ = _tmp279_; _tmp276_ = !_tmp280_; } else { _tmp276_ = FALSE; } _tmp281_ = _tmp276_; if (_tmp281_) { ValaHashMap* _tmp282_; ValaObjectCreationExpression* _tmp283_; ValaDataType* _tmp284_; ValaDataType* _tmp285_; ValaList* _tmp286_ = NULL; ValaList* _tmp287_; ValaObjectCreationExpression* _tmp288_; _tmp282_ = carg_map; _tmp283_ = expr; _tmp284_ = vala_object_creation_expression_get_type_reference (_tmp283_); _tmp285_ = _tmp284_; _tmp286_ = vala_data_type_get_type_arguments (_tmp285_); _tmp287_ = _tmp286_; _tmp288_ = expr; vala_ccode_base_module_add_generic_type_arguments (self, (ValaMap*) _tmp282_, _tmp287_, (ValaCodeNode*) _tmp288_, FALSE, NULL); _vala_iterable_unref0 (_tmp287_); } else { gboolean _tmp289_ = FALSE; ValaClass* _tmp290_; gboolean _tmp293_; _tmp290_ = cl; if (_tmp290_ != NULL) { ValaMethod* _tmp291_; gboolean _tmp292_ = FALSE; _tmp291_ = m; _tmp292_ = vala_ccode_base_module_get_ccode_simple_generics (_tmp291_); _tmp289_ = _tmp292_; } else { _tmp289_ = FALSE; } _tmp293_ = _tmp289_; if (_tmp293_) { gint type_param_index; type_param_index = 0; { ValaObjectCreationExpression* _tmp294_; ValaDataType* _tmp295_; ValaDataType* _tmp296_; ValaList* _tmp297_ = NULL; ValaList* _type_arg_list; ValaList* _tmp298_; gint _tmp299_; gint _tmp300_; gint _type_arg_size; gint _type_arg_index; _tmp294_ = expr; _tmp295_ = vala_object_creation_expression_get_type_reference (_tmp294_); _tmp296_ = _tmp295_; _tmp297_ = vala_data_type_get_type_arguments (_tmp296_); _type_arg_list = _tmp297_; _tmp298_ = _type_arg_list; _tmp299_ = vala_collection_get_size ((ValaCollection*) _tmp298_); _tmp300_ = _tmp299_; _type_arg_size = _tmp300_; _type_arg_index = -1; while (TRUE) { gint _tmp301_; gint _tmp302_; gint _tmp303_; ValaList* _tmp304_; gint _tmp305_; gpointer _tmp306_ = NULL; ValaDataType* type_arg; ValaDataType* _tmp307_; gboolean _tmp308_ = FALSE; gint _tmp320_; _tmp301_ = _type_arg_index; _type_arg_index = _tmp301_ + 1; _tmp302_ = _type_arg_index; _tmp303_ = _type_arg_size; if (!(_tmp302_ < _tmp303_)) { break; } _tmp304_ = _type_arg_list; _tmp305_ = _type_arg_index; _tmp306_ = vala_list_get (_tmp304_, _tmp305_); type_arg = (ValaDataType*) _tmp306_; _tmp307_ = type_arg; _tmp308_ = vala_ccode_base_module_requires_copy (self, _tmp307_); if (_tmp308_) { ValaHashMap* _tmp309_; gint _tmp310_; gint _tmp311_ = 0; ValaDataType* _tmp312_; ValaCCodeExpression* _tmp313_ = NULL; ValaCCodeExpression* _tmp314_; _tmp309_ = carg_map; _tmp310_ = type_param_index; _tmp311_ = vala_ccode_base_module_get_param_pos (self, ((-1) + (0.1 * _tmp310_)) + 0.03, FALSE); _tmp312_ = type_arg; _tmp313_ = vala_ccode_base_module_get_destroy0_func_expression (self, _tmp312_, FALSE); _tmp314_ = _tmp313_; vala_map_set ((ValaMap*) _tmp309_, GINT_TO_POINTER (_tmp311_), _tmp314_); _vala_ccode_node_unref0 (_tmp314_); } else { ValaHashMap* _tmp315_; gint _tmp316_; gint _tmp317_ = 0; ValaCCodeConstant* _tmp318_; ValaCCodeConstant* _tmp319_; _tmp315_ = carg_map; _tmp316_ = type_param_index; _tmp317_ = vala_ccode_base_module_get_param_pos (self, ((-1) + (0.1 * _tmp316_)) + 0.03, FALSE); _tmp318_ = vala_ccode_constant_new ("NULL"); _tmp319_ = _tmp318_; vala_map_set ((ValaMap*) _tmp315_, GINT_TO_POINTER (_tmp317_), (ValaCCodeExpression*) _tmp319_); _vala_ccode_node_unref0 (_tmp319_); } _tmp320_ = type_param_index; type_param_index = _tmp320_ + 1; _vala_code_node_unref0 (type_arg); } _vala_iterable_unref0 (_type_arg_list); } } } ellipsis = FALSE; i = 1; _tmp321_ = params; _tmp322_ = vala_iterable_iterator ((ValaIterable*) _tmp321_); params_it = _tmp322_; { ValaObjectCreationExpression* _tmp323_; ValaList* _tmp324_ = NULL; ValaList* _arg_list; ValaList* _tmp325_; gint _tmp326_; gint _tmp327_; gint _arg_size; gint _arg_index; _tmp323_ = expr; _tmp324_ = vala_object_creation_expression_get_argument_list (_tmp323_); _arg_list = _tmp324_; _tmp325_ = _arg_list; _tmp326_ = vala_collection_get_size ((ValaCollection*) _tmp325_); _tmp327_ = _tmp326_; _arg_size = _tmp327_; _arg_index = -1; while (TRUE) { gint _tmp328_; gint _tmp329_; gint _tmp330_; ValaList* _tmp331_; gint _tmp332_; gpointer _tmp333_ = NULL; ValaExpression* arg; ValaExpression* _tmp334_; ValaCCodeExpression* _tmp335_ = NULL; ValaCCodeExpression* cexpr; ValaParameter* param; ValaIterator* _tmp336_; gboolean _tmp337_ = FALSE; ValaHashMap* _tmp452_; gint _tmp453_; ValaCCodeExpression* _tmp454_; gint _tmp455_; _tmp328_ = _arg_index; _arg_index = _tmp328_ + 1; _tmp329_ = _arg_index; _tmp330_ = _arg_size; if (!(_tmp329_ < _tmp330_)) { break; } _tmp331_ = _arg_list; _tmp332_ = _arg_index; _tmp333_ = vala_list_get (_tmp331_, _tmp332_); arg = (ValaExpression*) _tmp333_; _tmp334_ = arg; _tmp335_ = vala_ccode_base_module_get_cvalue (self, _tmp334_); cexpr = _tmp335_; param = NULL; _tmp336_ = params_it; _tmp337_ = vala_iterator_next (_tmp336_); if (_tmp337_) { ValaIterator* _tmp338_; gpointer _tmp339_ = NULL; ValaParameter* _tmp340_; gboolean _tmp341_; gboolean _tmp342_; gboolean _tmp343_; ValaParameter* _tmp442_; gdouble _tmp443_ = 0.0; gboolean _tmp444_; gint _tmp445_ = 0; _tmp338_ = params_it; _tmp339_ = vala_iterator_get (_tmp338_); _vala_code_node_unref0 (param); param = (ValaParameter*) _tmp339_; _tmp340_ = param; _tmp341_ = vala_parameter_get_ellipsis (_tmp340_); _tmp342_ = _tmp341_; ellipsis = _tmp342_; _tmp343_ = ellipsis; if (!_tmp343_) { gboolean _tmp344_ = FALSE; ValaClass* _tmp345_; ValaTypeSymbol* _tmp346_; gboolean _tmp350_; gboolean _tmp369_ = FALSE; ValaParameter* _tmp370_; gboolean _tmp371_ = FALSE; gboolean _tmp375_; ValaParameter* _tmp426_; ValaExpression* _tmp427_; ValaCCodeExpression* _tmp428_; ValaCCodeExpression* _tmp429_ = NULL; ValaParameter* _tmp430_; gchar* _tmp431_ = NULL; gchar* _tmp432_; gboolean _tmp433_; _tmp345_ = cl; _tmp346_ = self->garray_type; if (VALA_TYPESYMBOL (_tmp345_) == _tmp346_) { ValaParameter* _tmp347_; const gchar* _tmp348_; const gchar* _tmp349_; _tmp347_ = param; _tmp348_ = vala_symbol_get_name ((ValaSymbol*) _tmp347_); _tmp349_ = _tmp348_; _tmp344_ = g_strcmp0 (_tmp349_, "element_size") == 0; } else { _tmp344_ = FALSE; } _tmp350_ = _tmp344_; if (_tmp350_) { ValaCCodeIdentifier* _tmp351_; ValaCCodeIdentifier* _tmp352_; ValaCCodeFunctionCall* _tmp353_; ValaCCodeFunctionCall* _tmp354_; ValaCCodeFunctionCall* csizeof; ValaCCodeFunctionCall* _tmp355_; ValaObjectCreationExpression* _tmp356_; ValaDataType* _tmp357_; ValaDataType* _tmp358_; ValaList* _tmp359_ = NULL; ValaList* _tmp360_; gpointer _tmp361_ = NULL; ValaDataType* _tmp362_; gchar* _tmp363_ = NULL; gchar* _tmp364_; ValaCCodeIdentifier* _tmp365_; ValaCCodeIdentifier* _tmp366_; ValaCCodeFunctionCall* _tmp367_; ValaCCodeExpression* _tmp368_; _tmp351_ = vala_ccode_identifier_new ("sizeof"); _tmp352_ = _tmp351_; _tmp353_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp352_); _tmp354_ = _tmp353_; _vala_ccode_node_unref0 (_tmp352_); csizeof = _tmp354_; _tmp355_ = csizeof; _tmp356_ = expr; _tmp357_ = vala_object_creation_expression_get_type_reference (_tmp356_); _tmp358_ = _tmp357_; _tmp359_ = vala_data_type_get_type_arguments (_tmp358_); _tmp360_ = _tmp359_; _tmp361_ = vala_list_get (_tmp360_, 0); _tmp362_ = (ValaDataType*) _tmp361_; _tmp363_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp362_); _tmp364_ = _tmp363_; _tmp365_ = vala_ccode_identifier_new (_tmp364_); _tmp366_ = _tmp365_; vala_ccode_function_call_add_argument (_tmp355_, (ValaCCodeExpression*) _tmp366_); _vala_ccode_node_unref0 (_tmp366_); _g_free0 (_tmp364_); _vala_code_node_unref0 (_tmp362_); _vala_iterable_unref0 (_tmp360_); _tmp367_ = csizeof; _tmp368_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp367_); _vala_ccode_node_unref0 (cexpr); cexpr = _tmp368_; _vala_ccode_node_unref0 (csizeof); } _tmp370_ = param; _tmp371_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp370_); if (_tmp371_) { ValaParameter* _tmp372_; ValaDataType* _tmp373_; ValaDataType* _tmp374_; _tmp372_ = param; _tmp373_ = vala_variable_get_variable_type ((ValaVariable*) _tmp372_); _tmp374_ = _tmp373_; _tmp369_ = VALA_IS_ARRAY_TYPE (_tmp374_); } else { _tmp369_ = FALSE; } _tmp375_ = _tmp369_; if (_tmp375_) { ValaParameter* _tmp376_; ValaDataType* _tmp377_; ValaDataType* _tmp378_; ValaArrayType* _tmp379_; ValaArrayType* array_type; _tmp376_ = param; _tmp377_ = vala_variable_get_variable_type ((ValaVariable*) _tmp376_); _tmp378_ = _tmp377_; _tmp379_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp378_)); array_type = _tmp379_; { gint dim; dim = 1; { gboolean _tmp380_; _tmp380_ = TRUE; while (TRUE) { gboolean _tmp381_; gint _tmp383_; ValaArrayType* _tmp384_; gint _tmp385_; gint _tmp386_; ValaHashMap* _tmp387_; ValaParameter* _tmp388_; gdouble _tmp389_ = 0.0; gint _tmp390_; gint _tmp391_ = 0; ValaExpression* _tmp392_; gint _tmp393_; ValaCCodeExpression* _tmp394_ = NULL; ValaCCodeExpression* _tmp395_; _tmp381_ = _tmp380_; if (!_tmp381_) { gint _tmp382_; _tmp382_ = dim; dim = _tmp382_ + 1; } _tmp380_ = FALSE; _tmp383_ = dim; _tmp384_ = array_type; _tmp385_ = vala_array_type_get_rank (_tmp384_); _tmp386_ = _tmp385_; if (!(_tmp383_ <= _tmp386_)) { break; } _tmp387_ = carg_map; _tmp388_ = param; _tmp389_ = vala_ccode_base_module_get_ccode_array_length_pos ((ValaCodeNode*) _tmp388_); _tmp390_ = dim; _tmp391_ = vala_ccode_base_module_get_param_pos (self, _tmp389_ + (0.01 * _tmp390_), FALSE); _tmp392_ = arg; _tmp393_ = dim; _tmp394_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp392_, _tmp393_); _tmp395_ = _tmp394_; vala_map_set ((ValaMap*) _tmp387_, GINT_TO_POINTER (_tmp391_), _tmp395_); _vala_ccode_node_unref0 (_tmp395_); } } } _vala_code_node_unref0 (array_type); } else { ValaParameter* _tmp396_; ValaDataType* _tmp397_; ValaDataType* _tmp398_; _tmp396_ = param; _tmp397_ = vala_variable_get_variable_type ((ValaVariable*) _tmp396_); _tmp398_ = _tmp397_; if (VALA_IS_DELEGATE_TYPE (_tmp398_)) { ValaParameter* _tmp399_; ValaDataType* _tmp400_; ValaDataType* _tmp401_; ValaDelegateType* _tmp402_; ValaDelegateType* deleg_type; ValaDelegateType* _tmp403_; ValaDelegate* _tmp404_; ValaDelegate* _tmp405_; ValaDelegate* _tmp406_; ValaDelegate* d; ValaDelegate* _tmp407_; gboolean _tmp408_; gboolean _tmp409_; _tmp399_ = param; _tmp400_ = vala_variable_get_variable_type ((ValaVariable*) _tmp399_); _tmp401_ = _tmp400_; _tmp402_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp401_)); deleg_type = _tmp402_; _tmp403_ = deleg_type; _tmp404_ = vala_delegate_type_get_delegate_symbol (_tmp403_); _tmp405_ = _tmp404_; _tmp406_ = _vala_code_node_ref0 (_tmp405_); d = _tmp406_; _tmp407_ = d; _tmp408_ = vala_delegate_get_has_target (_tmp407_); _tmp409_ = _tmp408_; if (_tmp409_) { ValaCCodeExpression* delegate_target_destroy_notify = NULL; ValaExpression* _tmp410_; ValaCCodeExpression* _tmp411_ = NULL; ValaCCodeExpression* _tmp412_ = NULL; ValaCCodeExpression* delegate_target; ValaHashMap* _tmp413_; ValaParameter* _tmp414_; gdouble _tmp415_ = 0.0; gint _tmp416_ = 0; ValaCCodeExpression* _tmp417_; ValaDelegateType* _tmp418_; gboolean _tmp419_; gboolean _tmp420_; _tmp410_ = arg; _tmp412_ = vala_ccode_base_module_get_delegate_target_cexpression (self, _tmp410_, &_tmp411_); _vala_ccode_node_unref0 (delegate_target_destroy_notify); delegate_target_destroy_notify = _tmp411_; delegate_target = _tmp412_; _tmp413_ = carg_map; _tmp414_ = param; _tmp415_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp414_); _tmp416_ = vala_ccode_base_module_get_param_pos (self, _tmp415_, FALSE); _tmp417_ = delegate_target; vala_map_set ((ValaMap*) _tmp413_, GINT_TO_POINTER (_tmp416_), _tmp417_); _tmp418_ = deleg_type; _tmp419_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp418_); _tmp420_ = _tmp419_; if (_tmp420_) { ValaHashMap* _tmp421_; ValaParameter* _tmp422_; gdouble _tmp423_ = 0.0; gint _tmp424_ = 0; ValaCCodeExpression* _tmp425_; _tmp421_ = carg_map; _tmp422_ = param; _tmp423_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp422_); _tmp424_ = vala_ccode_base_module_get_param_pos (self, _tmp423_ + 0.01, FALSE); _tmp425_ = delegate_target_destroy_notify; vala_map_set ((ValaMap*) _tmp421_, GINT_TO_POINTER (_tmp424_), _tmp425_); } _vala_ccode_node_unref0 (delegate_target); _vala_ccode_node_unref0 (delegate_target_destroy_notify); } _vala_code_node_unref0 (d); _vala_code_node_unref0 (deleg_type); } } _tmp426_ = param; _tmp427_ = arg; _tmp428_ = cexpr; _tmp429_ = vala_ccode_base_module_handle_struct_argument (self, _tmp426_, _tmp427_, _tmp428_); _vala_ccode_node_unref0 (cexpr); cexpr = _tmp429_; _tmp430_ = param; _tmp431_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp430_); _tmp432_ = _tmp431_; _tmp433_ = _tmp432_ != NULL; _g_free0 (_tmp432_); if (_tmp433_) { ValaCCodeExpression* _tmp434_; ValaParameter* _tmp435_; gchar* _tmp436_ = NULL; gchar* _tmp437_; ValaCCodeCastExpression* _tmp438_; _tmp434_ = cexpr; _tmp435_ = param; _tmp436_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp435_); _tmp437_ = _tmp436_; _tmp438_ = vala_ccode_cast_expression_new (_tmp434_, _tmp437_); _vala_ccode_node_unref0 (cexpr); cexpr = (ValaCCodeExpression*) _tmp438_; _g_free0 (_tmp437_); } } else { ValaExpression* _tmp439_; ValaCCodeExpression* _tmp440_; ValaCCodeExpression* _tmp441_ = NULL; _tmp439_ = arg; _tmp440_ = cexpr; _tmp441_ = vala_ccode_base_module_handle_struct_argument (self, NULL, _tmp439_, _tmp440_); _vala_ccode_node_unref0 (cexpr); cexpr = _tmp441_; } _tmp442_ = param; _tmp443_ = vala_ccode_base_module_get_ccode_pos (_tmp442_); _tmp444_ = ellipsis; _tmp445_ = vala_ccode_base_module_get_param_pos (self, _tmp443_, _tmp444_); arg_pos = _tmp445_; } else { ValaExpression* _tmp446_; ValaCCodeExpression* _tmp447_; ValaCCodeExpression* _tmp448_ = NULL; gint _tmp449_; gboolean _tmp450_; gint _tmp451_ = 0; _tmp446_ = arg; _tmp447_ = cexpr; _tmp448_ = vala_ccode_base_module_handle_struct_argument (self, NULL, _tmp446_, _tmp447_); _vala_ccode_node_unref0 (cexpr); cexpr = _tmp448_; _tmp449_ = i; _tmp450_ = ellipsis; _tmp451_ = vala_ccode_base_module_get_param_pos (self, (gdouble) _tmp449_, _tmp450_); arg_pos = _tmp451_; } _tmp452_ = carg_map; _tmp453_ = arg_pos; _tmp454_ = cexpr; vala_map_set ((ValaMap*) _tmp452_, GINT_TO_POINTER (_tmp453_), _tmp454_); _tmp455_ = i; i = _tmp455_ + 1; _vala_code_node_unref0 (param); _vala_ccode_node_unref0 (cexpr); _vala_code_node_unref0 (arg); } _vala_iterable_unref0 (_arg_list); } while (TRUE) { ValaIterator* _tmp456_; gboolean _tmp457_ = FALSE; ValaIterator* _tmp458_; gpointer _tmp459_ = NULL; ValaParameter* param; ValaParameter* _tmp460_; gboolean _tmp461_; gboolean _tmp462_; ValaParameter* _tmp463_; ValaExpression* _tmp464_; ValaExpression* _tmp465_; ValaParameter* _tmp472_; ValaExpression* _tmp473_; ValaExpression* _tmp474_; ValaHashMap* _tmp475_; ValaParameter* _tmp476_; gdouble _tmp477_ = 0.0; gint _tmp478_ = 0; ValaParameter* _tmp479_; ValaExpression* _tmp480_; ValaExpression* _tmp481_; ValaCCodeExpression* _tmp482_ = NULL; ValaCCodeExpression* _tmp483_; gint _tmp484_; _tmp456_ = params_it; _tmp457_ = vala_iterator_next (_tmp456_); if (!_tmp457_) { break; } _tmp458_ = params_it; _tmp459_ = vala_iterator_get (_tmp458_); param = (ValaParameter*) _tmp459_; _tmp460_ = param; _tmp461_ = vala_parameter_get_ellipsis (_tmp460_); _tmp462_ = _tmp461_; if (_tmp462_) { ellipsis = TRUE; _vala_code_node_unref0 (param); break; } _tmp463_ = param; _tmp464_ = vala_variable_get_initializer ((ValaVariable*) _tmp463_); _tmp465_ = _tmp464_; if (_tmp465_ == NULL) { ValaObjectCreationExpression* _tmp466_; ValaSourceReference* _tmp467_; ValaSourceReference* _tmp468_; gint _tmp469_; gchar* _tmp470_ = NULL; gchar* _tmp471_; _tmp466_ = expr; _tmp467_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp466_); _tmp468_ = _tmp467_; _tmp469_ = i; _tmp470_ = g_strdup_printf ("no default expression for argument %d", _tmp469_); _tmp471_ = _tmp470_; vala_report_error (_tmp468_, _tmp471_); _g_free0 (_tmp471_); _vala_code_node_unref0 (param); _vala_iterator_unref0 (params_it); _vala_map_unref0 (carg_map); _vala_code_node_unref0 (cl); _vala_ccode_node_unref0 (creation_call); _vala_iterable_unref0 (params); _vala_code_node_unref0 (m); _vala_code_node_unref0 (st); _vala_ccode_node_unref0 (creation_expr); _vala_ccode_node_unref0 (instance); return; } _tmp472_ = param; _tmp473_ = vala_variable_get_initializer ((ValaVariable*) _tmp472_); _tmp474_ = _tmp473_; vala_code_node_emit ((ValaCodeNode*) _tmp474_, (ValaCodeGenerator*) self); _tmp475_ = carg_map; _tmp476_ = param; _tmp477_ = vala_ccode_base_module_get_ccode_pos (_tmp476_); _tmp478_ = vala_ccode_base_module_get_param_pos (self, _tmp477_, FALSE); _tmp479_ = param; _tmp480_ = vala_variable_get_initializer ((ValaVariable*) _tmp479_); _tmp481_ = _tmp480_; _tmp482_ = vala_ccode_base_module_get_cvalue (self, _tmp481_); _tmp483_ = _tmp482_; vala_map_set ((ValaMap*) _tmp475_, GINT_TO_POINTER (_tmp478_), _tmp483_); _vala_ccode_node_unref0 (_tmp483_); _tmp484_ = i; i = _tmp484_ + 1; _vala_code_node_unref0 (param); } last_pos = -1; while (TRUE) { gint _tmp504_; ValaCCodeFunctionCall* _tmp505_; ValaHashMap* _tmp506_; gint _tmp507_; gpointer _tmp508_ = NULL; ValaCCodeExpression* _tmp509_; gint _tmp510_; min_pos = -1; { ValaHashMap* _tmp485_; ValaSet* _tmp486_ = NULL; ValaSet* _tmp487_; ValaIterator* _tmp488_ = NULL; ValaIterator* _tmp489_; ValaIterator* _pos_it; _tmp485_ = carg_map; _tmp486_ = vala_map_get_keys ((ValaMap*) _tmp485_); _tmp487_ = _tmp486_; _tmp488_ = vala_iterable_iterator ((ValaIterable*) _tmp487_); _tmp489_ = _tmp488_; _vala_iterable_unref0 (_tmp487_); _pos_it = _tmp489_; while (TRUE) { ValaIterator* _tmp490_; gboolean _tmp491_ = FALSE; ValaIterator* _tmp492_; gpointer _tmp493_ = NULL; gint pos; gboolean _tmp494_ = FALSE; gint _tmp495_; gint _tmp496_; gboolean _tmp502_; _tmp490_ = _pos_it; _tmp491_ = vala_iterator_next (_tmp490_); if (!_tmp491_) { break; } _tmp492_ = _pos_it; _tmp493_ = vala_iterator_get (_tmp492_); pos = GPOINTER_TO_INT (_tmp493_); _tmp495_ = pos; _tmp496_ = last_pos; if (_tmp495_ > _tmp496_) { gboolean _tmp497_ = FALSE; gint _tmp498_; gboolean _tmp501_; _tmp498_ = min_pos; if (_tmp498_ == (-1)) { _tmp497_ = TRUE; } else { gint _tmp499_; gint _tmp500_; _tmp499_ = pos; _tmp500_ = min_pos; _tmp497_ = _tmp499_ < _tmp500_; } _tmp501_ = _tmp497_; _tmp494_ = _tmp501_; } else { _tmp494_ = FALSE; } _tmp502_ = _tmp494_; if (_tmp502_) { gint _tmp503_; _tmp503_ = pos; min_pos = _tmp503_; } } _vala_iterator_unref0 (_pos_it); } _tmp504_ = min_pos; if (_tmp504_ == (-1)) { break; } _tmp505_ = creation_call; _tmp506_ = carg_map; _tmp507_ = min_pos; _tmp508_ = vala_map_get ((ValaMap*) _tmp506_, GINT_TO_POINTER (_tmp507_)); _tmp509_ = (ValaCCodeExpression*) _tmp508_; vala_ccode_function_call_add_argument (_tmp505_, _tmp509_); _vala_ccode_node_unref0 (_tmp509_); _tmp510_ = min_pos; last_pos = _tmp510_; } _tmp513_ = st; if (_tmp513_ != NULL) { ValaStruct* _tmp514_; gboolean _tmp515_ = FALSE; _tmp514_ = st; _tmp515_ = vala_struct_is_simple_type (_tmp514_); _tmp512_ = !_tmp515_; } else { _tmp512_ = FALSE; } _tmp516_ = _tmp512_; if (_tmp516_) { ValaMethod* _tmp517_; gdouble _tmp518_ = 0.0; _tmp517_ = m; _tmp518_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp517_); _tmp511_ = _tmp518_ < ((gdouble) 0); } else { _tmp511_ = FALSE; } _tmp519_ = _tmp511_; if (_tmp519_) { ValaCCodeFunctionCall* _tmp520_; ValaCCodeExpression* _tmp521_; ValaCCodeUnaryExpression* _tmp522_; ValaCCodeUnaryExpression* _tmp523_; _tmp520_ = creation_call; _tmp521_ = instance; _tmp522_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp521_); _tmp523_ = _tmp522_; vala_ccode_function_call_add_argument (_tmp520_, (ValaCCodeExpression*) _tmp523_); _vala_ccode_node_unref0 (_tmp523_); } _tmp524_ = expr; _tmp525_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp524_); _tmp526_ = _tmp525_; if (_tmp526_) { ValaCCodeFunctionCall* _tmp527_; ValaCCodeExpression* _tmp528_ = NULL; ValaCCodeExpression* _tmp529_; ValaCCodeUnaryExpression* _tmp530_; ValaCCodeUnaryExpression* _tmp531_; vala_ccode_base_module_set_current_method_inner_error (self, TRUE); _tmp527_ = creation_call; _tmp528_ = vala_ccode_base_module_get_variable_cexpression (self, "_inner_error_"); _tmp529_ = _tmp528_; _tmp530_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp529_); _tmp531_ = _tmp530_; vala_ccode_function_call_add_argument (_tmp527_, (ValaCCodeExpression*) _tmp531_); _vala_ccode_node_unref0 (_tmp531_); _vala_ccode_node_unref0 (_tmp529_); } _tmp532_ = ellipsis; if (_tmp532_) { gboolean _tmp533_ = FALSE; gboolean _tmp534_ = FALSE; ValaMethod* _tmp535_; gboolean _tmp536_; gboolean _tmp537_; gboolean _tmp541_; gboolean _tmp545_; _tmp535_ = m; _tmp536_ = vala_method_get_printf_format (_tmp535_); _tmp537_ = _tmp536_; if (!_tmp537_) { ValaMethod* _tmp538_; gboolean _tmp539_; gboolean _tmp540_; _tmp538_ = m; _tmp539_ = vala_method_get_scanf_format (_tmp538_); _tmp540_ = _tmp539_; _tmp534_ = !_tmp540_; } else { _tmp534_ = FALSE; } _tmp541_ = _tmp534_; if (_tmp541_) { ValaMethod* _tmp542_; gchar* _tmp543_ = NULL; gchar* _tmp544_; _tmp542_ = m; _tmp543_ = vala_ccode_base_module_get_ccode_sentinel (_tmp542_); _tmp544_ = _tmp543_; _tmp533_ = g_strcmp0 (_tmp544_, "") != 0; _g_free0 (_tmp544_); } else { _tmp533_ = FALSE; } _tmp545_ = _tmp533_; if (_tmp545_) { ValaCCodeFunctionCall* _tmp546_; ValaMethod* _tmp547_; gchar* _tmp548_ = NULL; gchar* _tmp549_; ValaCCodeConstant* _tmp550_; ValaCCodeConstant* _tmp551_; _tmp546_ = creation_call; _tmp547_ = m; _tmp548_ = vala_ccode_base_module_get_ccode_sentinel (_tmp547_); _tmp549_ = _tmp548_; _tmp550_ = vala_ccode_constant_new (_tmp549_); _tmp551_ = _tmp550_; vala_ccode_function_call_add_argument (_tmp546_, (ValaCCodeExpression*) _tmp551_); _vala_ccode_node_unref0 (_tmp551_); _g_free0 (_tmp549_); } } _tmp552_ = creation_call; _tmp553_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp552_); _vala_ccode_node_unref0 (creation_expr); creation_expr = _tmp553_; _tmp554_ = m; _tmp555_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp554_); _tmp556_ = _tmp555_; _tmp557_ = _tmp556_ != NULL; _g_free0 (_tmp556_); if (_tmp557_) { ValaCCodeExpression* _tmp558_; ValaObjectCreationExpression* _tmp559_; ValaDataType* _tmp560_; ValaDataType* _tmp561_; gchar* _tmp562_ = NULL; gchar* _tmp563_; ValaCCodeCastExpression* _tmp564_; _tmp558_ = creation_expr; _tmp559_ = expr; _tmp560_ = vala_object_creation_expression_get_type_reference (_tmp559_); _tmp561_ = _tmp560_; _tmp562_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp561_); _tmp563_ = _tmp562_; _tmp564_ = vala_ccode_cast_expression_new (_tmp558_, _tmp563_); _vala_ccode_node_unref0 (creation_expr); creation_expr = (ValaCCodeExpression*) _tmp564_; _g_free0 (_tmp563_); } _vala_iterator_unref0 (params_it); _vala_map_unref0 (carg_map); _vala_code_node_unref0 (cl); _vala_ccode_node_unref0 (creation_call); _vala_iterable_unref0 (params); _vala_code_node_unref0 (m); } else { ValaObjectCreationExpression* _tmp565_; ValaSymbol* _tmp566_; ValaSymbol* _tmp567_; _tmp565_ = expr; _tmp566_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp565_); _tmp567_ = _tmp566_; if (VALA_IS_ERROR_CODE (_tmp567_)) { ValaObjectCreationExpression* _tmp568_; ValaSymbol* _tmp569_; ValaSymbol* _tmp570_; ValaErrorCode* _tmp571_; ValaErrorCode* ecode; ValaErrorCode* _tmp572_; ValaSymbol* _tmp573_; ValaSymbol* _tmp574_; ValaErrorDomain* _tmp575_; ValaErrorDomain* edomain; ValaCCodeFunctionCall* creation_call = NULL; ValaErrorDomain* _tmp576_; ValaCCodeFile* _tmp577_; ValaObjectCreationExpression* _tmp578_; ValaList* _tmp579_ = NULL; ValaList* _tmp580_; gint _tmp581_; gint _tmp582_; gboolean _tmp583_; ValaCCodeFunctionCall* _tmp590_; ValaErrorDomain* _tmp591_; gchar* _tmp592_ = NULL; gchar* _tmp593_; ValaCCodeIdentifier* _tmp594_; ValaCCodeIdentifier* _tmp595_; ValaCCodeFunctionCall* _tmp596_; ValaErrorCode* _tmp597_; gchar* _tmp598_ = NULL; gchar* _tmp599_; ValaCCodeIdentifier* _tmp600_; ValaCCodeIdentifier* _tmp601_; ValaCCodeFunctionCall* _tmp617_; ValaCCodeExpression* _tmp618_; _tmp568_ = expr; _tmp569_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp568_); _tmp570_ = _tmp569_; _tmp571_ = _vala_code_node_ref0 (VALA_ERROR_CODE (_tmp570_)); ecode = _tmp571_; _tmp572_ = ecode; _tmp573_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp572_); _tmp574_ = _tmp573_; _tmp575_ = _vala_code_node_ref0 (VALA_ERROR_DOMAIN (_tmp574_)); edomain = _tmp575_; _tmp576_ = edomain; _tmp577_ = self->cfile; vala_ccode_base_module_generate_error_domain_declaration (self, _tmp576_, _tmp577_); _tmp578_ = expr; _tmp579_ = vala_object_creation_expression_get_argument_list (_tmp578_); _tmp580_ = _tmp579_; _tmp581_ = vala_collection_get_size ((ValaCollection*) _tmp580_); _tmp582_ = _tmp581_; _tmp583_ = _tmp582_ == 1; _vala_iterable_unref0 (_tmp580_); if (_tmp583_) { ValaCCodeIdentifier* _tmp584_; ValaCCodeIdentifier* _tmp585_; ValaCCodeFunctionCall* _tmp586_; _tmp584_ = vala_ccode_identifier_new ("g_error_new_literal"); _tmp585_ = _tmp584_; _tmp586_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp585_); _vala_ccode_node_unref0 (creation_call); creation_call = _tmp586_; _vala_ccode_node_unref0 (_tmp585_); } else { ValaCCodeIdentifier* _tmp587_; ValaCCodeIdentifier* _tmp588_; ValaCCodeFunctionCall* _tmp589_; _tmp587_ = vala_ccode_identifier_new ("g_error_new"); _tmp588_ = _tmp587_; _tmp589_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp588_); _vala_ccode_node_unref0 (creation_call); creation_call = _tmp589_; _vala_ccode_node_unref0 (_tmp588_); } _tmp590_ = creation_call; _tmp591_ = edomain; _tmp592_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp591_, NULL); _tmp593_ = _tmp592_; _tmp594_ = vala_ccode_identifier_new (_tmp593_); _tmp595_ = _tmp594_; vala_ccode_function_call_add_argument (_tmp590_, (ValaCCodeExpression*) _tmp595_); _vala_ccode_node_unref0 (_tmp595_); _g_free0 (_tmp593_); _tmp596_ = creation_call; _tmp597_ = ecode; _tmp598_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp597_); _tmp599_ = _tmp598_; _tmp600_ = vala_ccode_identifier_new (_tmp599_); _tmp601_ = _tmp600_; vala_ccode_function_call_add_argument (_tmp596_, (ValaCCodeExpression*) _tmp601_); _vala_ccode_node_unref0 (_tmp601_); _g_free0 (_tmp599_); { ValaObjectCreationExpression* _tmp602_; ValaList* _tmp603_ = NULL; ValaList* _arg_list; ValaList* _tmp604_; gint _tmp605_; gint _tmp606_; gint _arg_size; gint _arg_index; _tmp602_ = expr; _tmp603_ = vala_object_creation_expression_get_argument_list (_tmp602_); _arg_list = _tmp603_; _tmp604_ = _arg_list; _tmp605_ = vala_collection_get_size ((ValaCollection*) _tmp604_); _tmp606_ = _tmp605_; _arg_size = _tmp606_; _arg_index = -1; while (TRUE) { gint _tmp607_; gint _tmp608_; gint _tmp609_; ValaList* _tmp610_; gint _tmp611_; gpointer _tmp612_ = NULL; ValaExpression* arg; ValaCCodeFunctionCall* _tmp613_; ValaExpression* _tmp614_; ValaCCodeExpression* _tmp615_ = NULL; ValaCCodeExpression* _tmp616_; _tmp607_ = _arg_index; _arg_index = _tmp607_ + 1; _tmp608_ = _arg_index; _tmp609_ = _arg_size; if (!(_tmp608_ < _tmp609_)) { break; } _tmp610_ = _arg_list; _tmp611_ = _arg_index; _tmp612_ = vala_list_get (_tmp610_, _tmp611_); arg = (ValaExpression*) _tmp612_; _tmp613_ = creation_call; _tmp614_ = arg; _tmp615_ = vala_ccode_base_module_get_cvalue (self, _tmp614_); _tmp616_ = _tmp615_; vala_ccode_function_call_add_argument (_tmp613_, _tmp616_); _vala_ccode_node_unref0 (_tmp616_); _vala_code_node_unref0 (arg); } _vala_iterable_unref0 (_arg_list); } _tmp617_ = creation_call; _tmp618_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp617_); _vala_ccode_node_unref0 (creation_expr); creation_expr = _tmp618_; _vala_ccode_node_unref0 (creation_call); _vala_code_node_unref0 (edomain); _vala_code_node_unref0 (ecode); } else { g_assert (FALSE); } } } } _tmp619_ = expr; _tmp620_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp619_); _tmp621_ = _tmp620_; _tmp622_ = _vala_code_node_ref0 (VALA_IS_LOCAL_VARIABLE (_tmp621_) ? ((ValaLocalVariable*) _tmp621_) : NULL); local = _tmp622_; _tmp624_ = local; if (_tmp624_ != NULL) { ValaLocalVariable* _tmp625_; ValaLocalVariable* _tmp626_; ValaExpression* _tmp627_; ValaExpression* _tmp628_; gboolean _tmp629_ = FALSE; _tmp625_ = local; _tmp626_ = local; _tmp627_ = vala_variable_get_initializer ((ValaVariable*) _tmp626_); _tmp628_ = _tmp627_; _tmp629_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp625_, _tmp628_); _tmp623_ = _tmp629_; } else { _tmp623_ = FALSE; } _tmp630_ = _tmp623_; if (_tmp630_) { ValaCCodeFunction* _tmp631_; ValaCCodeFunction* _tmp632_; ValaCCodeExpression* _tmp633_; ValaObjectCreationExpression* _tmp634_; ValaCCodeExpression* _tmp635_; _tmp631_ = vala_ccode_base_module_get_ccode (self); _tmp632_ = _tmp631_; _tmp633_ = creation_expr; vala_ccode_function_add_expression (_tmp632_, _tmp633_); _tmp634_ = expr; _tmp635_ = instance; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp634_, _tmp635_); } else { ValaCCodeExpression* _tmp636_; _tmp636_ = instance; if (_tmp636_ != NULL) { ValaObjectCreationExpression* _tmp637_; ValaDataType* _tmp638_; ValaDataType* _tmp639_; ValaTypeSymbol* _tmp640_; ValaTypeSymbol* _tmp641_; ValaObjectCreationExpression* _tmp714_; ValaCCodeExpression* _tmp715_; _tmp637_ = expr; _tmp638_ = vala_object_creation_expression_get_type_reference (_tmp637_); _tmp639_ = _tmp638_; _tmp640_ = vala_data_type_get_data_type (_tmp639_); _tmp641_ = _tmp640_; if (VALA_IS_STRUCT (_tmp641_)) { ValaCCodeFunction* _tmp642_; ValaCCodeFunction* _tmp643_; ValaCCodeExpression* _tmp644_; _tmp642_ = vala_ccode_base_module_get_ccode (self); _tmp643_ = _tmp642_; _tmp644_ = creation_expr; vala_ccode_function_add_expression (_tmp643_, _tmp644_); } else { ValaCCodeFunction* _tmp645_; ValaCCodeFunction* _tmp646_; ValaCCodeExpression* _tmp647_; ValaCCodeExpression* _tmp648_; _tmp645_ = vala_ccode_base_module_get_ccode (self); _tmp646_ = _tmp645_; _tmp647_ = instance; _tmp648_ = creation_expr; vala_ccode_function_add_assignment (_tmp646_, _tmp647_, _tmp648_); } { ValaObjectCreationExpression* _tmp649_; ValaList* _tmp650_ = NULL; ValaList* _init_list; ValaList* _tmp651_; gint _tmp652_; gint _tmp653_; gint _init_size; gint _init_index; _tmp649_ = expr; _tmp650_ = vala_object_creation_expression_get_object_initializer (_tmp649_); _init_list = _tmp650_; _tmp651_ = _init_list; _tmp652_ = vala_collection_get_size ((ValaCollection*) _tmp651_); _tmp653_ = _tmp652_; _init_size = _tmp653_; _init_index = -1; while (TRUE) { gint _tmp654_; gint _tmp655_; gint _tmp656_; ValaList* _tmp657_; gint _tmp658_; gpointer _tmp659_ = NULL; ValaMemberInitializer* init; ValaMemberInitializer* _tmp660_; ValaSymbol* _tmp661_; ValaSymbol* _tmp662_; _tmp654_ = _init_index; _init_index = _tmp654_ + 1; _tmp655_ = _init_index; _tmp656_ = _init_size; if (!(_tmp655_ < _tmp656_)) { break; } _tmp657_ = _init_list; _tmp658_ = _init_index; _tmp659_ = vala_list_get (_tmp657_, _tmp658_); init = (ValaMemberInitializer*) _tmp659_; _tmp660_ = init; _tmp661_ = vala_member_initializer_get_symbol_reference (_tmp660_); _tmp662_ = _tmp661_; if (VALA_IS_FIELD (_tmp662_)) { ValaMemberInitializer* _tmp663_; ValaSymbol* _tmp664_; ValaSymbol* _tmp665_; ValaField* _tmp666_; ValaField* f; ValaField* _tmp667_; ValaSymbol* _tmp668_; ValaSymbol* _tmp669_; ValaDataType* _tmp670_ = NULL; ValaDataType* instance_target_type; ValaObjectCreationExpression* _tmp671_; ValaDataType* _tmp672_; ValaDataType* _tmp673_; ValaCCodeExpression* _tmp674_; ValaGLibValue* _tmp675_; ValaGLibValue* _tmp676_; ValaDataType* _tmp677_; ValaMemberInitializer* _tmp678_; ValaTargetValue* _tmp679_ = NULL; ValaTargetValue* _tmp680_; ValaTargetValue* typed_inst; ValaField* _tmp681_; ValaTargetValue* _tmp682_; ValaMemberInitializer* _tmp683_; ValaExpression* _tmp684_; ValaExpression* _tmp685_; ValaTargetValue* _tmp686_; ValaTargetValue* _tmp687_; ValaField* _tmp688_; ValaSymbol* _tmp689_; ValaSymbol* _tmp690_; ValaClass* _tmp691_; ValaClass* cl; ValaClass* _tmp692_; _tmp663_ = init; _tmp664_ = vala_member_initializer_get_symbol_reference (_tmp663_); _tmp665_ = _tmp664_; _tmp666_ = _vala_code_node_ref0 (VALA_FIELD (_tmp665_)); f = _tmp666_; _tmp667_ = f; _tmp668_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp667_); _tmp669_ = _tmp668_; _tmp670_ = vala_ccode_base_module_get_data_type_for_symbol (VALA_TYPESYMBOL (_tmp669_)); instance_target_type = _tmp670_; _tmp671_ = expr; _tmp672_ = vala_object_creation_expression_get_type_reference (_tmp671_); _tmp673_ = _tmp672_; _tmp674_ = instance; _tmp675_ = vala_glib_value_new (_tmp673_, _tmp674_, TRUE); _tmp676_ = _tmp675_; _tmp677_ = instance_target_type; _tmp678_ = init; _tmp679_ = vala_ccode_base_module_transform_value (self, (ValaTargetValue*) _tmp676_, _tmp677_, (ValaCodeNode*) _tmp678_); _tmp680_ = _tmp679_; _vala_target_value_unref0 (_tmp676_); typed_inst = _tmp680_; _tmp681_ = f; _tmp682_ = typed_inst; _tmp683_ = init; _tmp684_ = vala_member_initializer_get_initializer (_tmp683_); _tmp685_ = _tmp684_; _tmp686_ = vala_expression_get_target_value (_tmp685_); _tmp687_ = _tmp686_; vala_code_generator_store_field ((ValaCodeGenerator*) self, _tmp681_, _tmp682_, _tmp687_); _tmp688_ = f; _tmp689_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp688_); _tmp690_ = _tmp689_; _tmp691_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp690_) ? ((ValaClass*) _tmp690_) : NULL); cl = _tmp691_; _tmp692_ = cl; if (_tmp692_ != NULL) { ValaClass* _tmp693_; ValaCCodeFile* _tmp694_; _tmp693_ = cl; _tmp694_ = self->cfile; vala_ccode_base_module_generate_class_struct_declaration (self, _tmp693_, _tmp694_); } _vala_code_node_unref0 (cl); _vala_target_value_unref0 (typed_inst); _vala_code_node_unref0 (instance_target_type); _vala_code_node_unref0 (f); } else { ValaMemberInitializer* _tmp695_; ValaSymbol* _tmp696_; ValaSymbol* _tmp697_; _tmp695_ = init; _tmp696_ = vala_member_initializer_get_symbol_reference (_tmp695_); _tmp697_ = _tmp696_; if (VALA_IS_PROPERTY (_tmp697_)) { ValaMemberAccess* _tmp698_; ValaMemberAccess* inst_ma; ValaMemberAccess* _tmp699_; ValaObjectCreationExpression* _tmp700_; ValaDataType* _tmp701_; ValaDataType* _tmp702_; ValaMemberAccess* _tmp703_; ValaCCodeExpression* _tmp704_; ValaMemberInitializer* _tmp705_; ValaSymbol* _tmp706_; ValaSymbol* _tmp707_; ValaMemberAccess* _tmp708_; ValaMemberInitializer* _tmp709_; ValaExpression* _tmp710_; ValaExpression* _tmp711_; ValaTargetValue* _tmp712_; ValaTargetValue* _tmp713_; _tmp698_ = vala_member_access_new_simple ("new", NULL); inst_ma = _tmp698_; _tmp699_ = inst_ma; _tmp700_ = expr; _tmp701_ = vala_object_creation_expression_get_type_reference (_tmp700_); _tmp702_ = _tmp701_; vala_expression_set_value_type ((ValaExpression*) _tmp699_, _tmp702_); _tmp703_ = inst_ma; _tmp704_ = instance; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp703_, _tmp704_); _tmp705_ = init; _tmp706_ = vala_member_initializer_get_symbol_reference (_tmp705_); _tmp707_ = _tmp706_; _tmp708_ = inst_ma; _tmp709_ = init; _tmp710_ = vala_member_initializer_get_initializer (_tmp709_); _tmp711_ = _tmp710_; _tmp712_ = vala_expression_get_target_value (_tmp711_); _tmp713_ = _tmp712_; vala_ccode_base_module_store_property (self, VALA_PROPERTY (_tmp707_), (ValaExpression*) _tmp708_, _tmp713_); _vala_code_node_unref0 (inst_ma); } } _vala_code_node_unref0 (init); } _vala_iterable_unref0 (_init_list); } _tmp714_ = expr; _tmp715_ = instance; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp714_, _tmp715_); } else { ValaCCodeExpression* _tmp716_; _tmp716_ = creation_expr; if (_tmp716_ != NULL) { ValaObjectCreationExpression* _tmp717_; ValaDataType* _tmp718_; ValaDataType* _tmp719_; ValaObjectCreationExpression* _tmp720_; ValaTargetValue* _tmp721_ = NULL; ValaTargetValue* temp_value; ValaCCodeFunction* _tmp722_; ValaCCodeFunction* _tmp723_; ValaTargetValue* _tmp724_; ValaCCodeExpression* _tmp725_ = NULL; ValaCCodeExpression* _tmp726_; ValaCCodeExpression* _tmp727_; ValaObjectCreationExpression* _tmp728_; ValaTargetValue* _tmp729_; _tmp717_ = expr; _tmp718_ = vala_expression_get_value_type ((ValaExpression*) _tmp717_); _tmp719_ = _tmp718_; _tmp720_ = expr; _tmp721_ = vala_ccode_base_module_create_temp_value (self, _tmp719_, FALSE, (ValaCodeNode*) _tmp720_, NULL); temp_value = _tmp721_; _tmp722_ = vala_ccode_base_module_get_ccode (self); _tmp723_ = _tmp722_; _tmp724_ = temp_value; _tmp725_ = vala_ccode_base_module_get_cvalue_ (self, _tmp724_); _tmp726_ = _tmp725_; _tmp727_ = creation_expr; vala_ccode_function_add_assignment (_tmp723_, _tmp726_, _tmp727_); _vala_ccode_node_unref0 (_tmp726_); _tmp728_ = expr; _tmp729_ = temp_value; vala_expression_set_target_value ((ValaExpression*) _tmp728_, _tmp729_); _vala_target_value_unref0 (temp_value); } } } _tmp730_ = expr; _tmp731_ = vala_expression_get_target_value ((ValaExpression*) _tmp730_); _tmp732_ = _tmp731_; VALA_GLIB_VALUE (_tmp732_)->lvalue = TRUE; _vala_code_node_unref0 (local); _vala_code_node_unref0 (st); _vala_ccode_node_unref0 (creation_expr); _vala_ccode_node_unref0 (instance); } ValaCCodeExpression* vala_ccode_base_module_handle_struct_argument (ValaCCodeBaseModule* self, ValaParameter* param, ValaExpression* arg, ValaCCodeExpression* cexpr) { ValaCCodeExpression* result = NULL; ValaDataType* type = NULL; ValaParameter* _tmp0_; ValaExpression* _tmp9_; ValaUnaryExpression* _tmp10_; ValaUnaryExpression* unary; gboolean _tmp11_ = FALSE; ValaExpression* _tmp12_; ValaDataType* _tmp13_; ValaDataType* _tmp14_; gboolean _tmp17_; ValaCCodeExpression* _tmp54_; ValaCCodeExpression* _tmp55_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (arg != NULL, NULL); _tmp0_ = param; if (_tmp0_ != NULL) { ValaParameter* _tmp1_; ValaDataType* _tmp2_; ValaDataType* _tmp3_; ValaDataType* _tmp4_; _tmp1_ = param; _tmp2_ = vala_variable_get_variable_type ((ValaVariable*) _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = _vala_code_node_ref0 (_tmp3_); _vala_code_node_unref0 (type); type = _tmp4_; } else { ValaExpression* _tmp5_; ValaDataType* _tmp6_; ValaDataType* _tmp7_; ValaDataType* _tmp8_; _tmp5_ = arg; _tmp6_ = vala_expression_get_value_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = _vala_code_node_ref0 (_tmp7_); _vala_code_node_unref0 (type); type = _tmp8_; } _tmp9_ = arg; _tmp10_ = _vala_code_node_ref0 (VALA_IS_UNARY_EXPRESSION (_tmp9_) ? ((ValaUnaryExpression*) _tmp9_) : NULL); unary = _tmp10_; _tmp12_ = arg; _tmp13_ = vala_expression_get_value_type (_tmp12_); _tmp14_ = _tmp13_; if (!VALA_IS_NULL_TYPE (_tmp14_)) { ValaDataType* _tmp15_; gboolean _tmp16_ = FALSE; _tmp15_ = type; _tmp16_ = vala_data_type_is_real_struct_type (_tmp15_); _tmp11_ = _tmp16_; } else { _tmp11_ = FALSE; } _tmp17_ = _tmp11_; if (_tmp17_) { gboolean _tmp18_ = FALSE; gboolean _tmp19_ = FALSE; ValaUnaryExpression* _tmp20_; gboolean _tmp29_; gboolean _tmp33_; _tmp20_ = unary; if (_tmp20_ != NULL) { gboolean _tmp21_ = FALSE; ValaUnaryExpression* _tmp22_; ValaUnaryOperator _tmp23_; ValaUnaryOperator _tmp24_; gboolean _tmp28_; _tmp22_ = unary; _tmp23_ = vala_unary_expression_get_operator (_tmp22_); _tmp24_ = _tmp23_; if (_tmp24_ == VALA_UNARY_OPERATOR_OUT) { _tmp21_ = TRUE; } else { ValaUnaryExpression* _tmp25_; ValaUnaryOperator _tmp26_; ValaUnaryOperator _tmp27_; _tmp25_ = unary; _tmp26_ = vala_unary_expression_get_operator (_tmp25_); _tmp27_ = _tmp26_; _tmp21_ = _tmp27_ == VALA_UNARY_OPERATOR_REF; } _tmp28_ = _tmp21_; _tmp19_ = _tmp28_; } else { _tmp19_ = FALSE; } _tmp29_ = _tmp19_; if (!_tmp29_) { ValaDataType* _tmp30_; gboolean _tmp31_; gboolean _tmp32_; _tmp30_ = type; _tmp31_ = vala_data_type_get_nullable (_tmp30_); _tmp32_ = _tmp31_; _tmp18_ = !_tmp32_; } else { _tmp18_ = FALSE; } _tmp33_ = _tmp18_; if (_tmp33_) { gboolean _tmp34_ = FALSE; ValaCCodeExpression* _tmp35_; gboolean _tmp37_; _tmp35_ = cexpr; if (VALA_IS_CCODE_IDENTIFIER (_tmp35_)) { _tmp34_ = TRUE; } else { ValaCCodeExpression* _tmp36_; _tmp36_ = cexpr; _tmp34_ = VALA_IS_CCODE_MEMBER_ACCESS (_tmp36_); } _tmp37_ = _tmp34_; if (_tmp37_) { ValaCCodeExpression* _tmp38_; ValaCCodeUnaryExpression* _tmp39_; _tmp38_ = cexpr; _tmp39_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp38_); result = (ValaCCodeExpression*) _tmp39_; _vala_code_node_unref0 (unary); _vala_code_node_unref0 (type); return result; } else { ValaDataType* _tmp40_; ValaExpression* _tmp41_; ValaTargetValue* _tmp42_ = NULL; ValaTargetValue* temp_value; ValaCCodeFunction* _tmp43_; ValaCCodeFunction* _tmp44_; ValaTargetValue* _tmp45_; ValaCCodeExpression* _tmp46_ = NULL; ValaCCodeExpression* _tmp47_; ValaCCodeExpression* _tmp48_; ValaTargetValue* _tmp49_; ValaCCodeExpression* _tmp50_ = NULL; ValaCCodeExpression* _tmp51_; ValaCCodeUnaryExpression* _tmp52_; ValaCCodeExpression* _tmp53_; _tmp40_ = type; _tmp41_ = arg; _tmp42_ = vala_ccode_base_module_create_temp_value (self, _tmp40_, FALSE, (ValaCodeNode*) _tmp41_, NULL); temp_value = _tmp42_; _tmp43_ = vala_ccode_base_module_get_ccode (self); _tmp44_ = _tmp43_; _tmp45_ = temp_value; _tmp46_ = vala_ccode_base_module_get_cvalue_ (self, _tmp45_); _tmp47_ = _tmp46_; _tmp48_ = cexpr; vala_ccode_function_add_assignment (_tmp44_, _tmp47_, _tmp48_); _vala_ccode_node_unref0 (_tmp47_); _tmp49_ = temp_value; _tmp50_ = vala_ccode_base_module_get_cvalue_ (self, _tmp49_); _tmp51_ = _tmp50_; _tmp52_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp51_); _tmp53_ = (ValaCCodeExpression*) _tmp52_; _vala_ccode_node_unref0 (_tmp51_); result = _tmp53_; _vala_target_value_unref0 (temp_value); _vala_code_node_unref0 (unary); _vala_code_node_unref0 (type); return result; } } } _tmp54_ = cexpr; _tmp55_ = _vala_ccode_node_ref0 (_tmp54_); result = _tmp55_; _vala_code_node_unref0 (unary); _vala_code_node_unref0 (type); return result; } static void vala_ccode_base_module_real_visit_sizeof_expression (ValaCodeVisitor* base, ValaSizeofExpression* expr) { ValaCCodeBaseModule * self; ValaSizeofExpression* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaCCodeFile* _tmp3_; ValaCCodeIdentifier* _tmp4_; ValaCCodeIdentifier* _tmp5_; ValaCCodeFunctionCall* _tmp6_; ValaCCodeFunctionCall* _tmp7_; ValaCCodeFunctionCall* csizeof; ValaSizeofExpression* _tmp8_; ValaDataType* _tmp9_; ValaDataType* _tmp10_; gchar* _tmp11_ = NULL; gchar* _tmp12_; ValaCCodeIdentifier* _tmp13_; ValaCCodeIdentifier* _tmp14_; ValaSizeofExpression* _tmp15_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_sizeof_expression_get_type_reference (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = self->cfile; vala_ccode_base_module_generate_type_declaration (self, _tmp2_, _tmp3_); _tmp4_ = vala_ccode_identifier_new ("sizeof"); _tmp5_ = _tmp4_; _tmp6_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp5_); _tmp7_ = _tmp6_; _vala_ccode_node_unref0 (_tmp5_); csizeof = _tmp7_; _tmp8_ = expr; _tmp9_ = vala_sizeof_expression_get_type_reference (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_identifier_new (_tmp12_); _tmp14_ = _tmp13_; vala_ccode_function_call_add_argument (csizeof, (ValaCCodeExpression*) _tmp14_); _vala_ccode_node_unref0 (_tmp14_); _g_free0 (_tmp12_); _tmp15_ = expr; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp15_, (ValaCCodeExpression*) csizeof); _vala_ccode_node_unref0 (csizeof); } static void vala_ccode_base_module_real_visit_typeof_expression (ValaCodeVisitor* base, ValaTypeofExpression* expr) { ValaCCodeBaseModule * self; ValaTypeofExpression* _tmp0_; ValaTypeofExpression* _tmp1_; ValaDataType* _tmp2_; ValaDataType* _tmp3_; ValaCCodeExpression* _tmp4_ = NULL; ValaCCodeExpression* _tmp5_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = expr; _tmp2_ = vala_typeof_expression_get_type_reference (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_base_module_get_type_id_expression (self, _tmp3_, FALSE); _tmp5_ = _tmp4_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, _tmp5_); _vala_ccode_node_unref0 (_tmp5_); } static gpointer _vala_target_value_ref0 (gpointer self) { return self ? vala_target_value_ref (self) : NULL; } static void vala_ccode_base_module_real_visit_unary_expression (ValaCodeVisitor* base, ValaUnaryExpression* expr) { ValaCCodeBaseModule * self; gboolean _tmp0_ = FALSE; ValaUnaryExpression* _tmp1_; ValaUnaryOperator _tmp2_; ValaUnaryOperator _tmp3_; gboolean _tmp7_; ValaCCodeUnaryOperator op = 0; ValaUnaryExpression* _tmp54_; ValaUnaryOperator _tmp55_; ValaUnaryOperator _tmp56_; ValaUnaryExpression* _tmp72_; ValaCCodeUnaryOperator _tmp73_; ValaUnaryExpression* _tmp74_; ValaExpression* _tmp75_; ValaExpression* _tmp76_; ValaCCodeExpression* _tmp77_ = NULL; ValaCCodeExpression* _tmp78_; ValaCCodeUnaryExpression* _tmp79_; ValaCCodeUnaryExpression* _tmp80_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp1_ = expr; _tmp2_ = vala_unary_expression_get_operator (_tmp1_); _tmp3_ = _tmp2_; if (_tmp3_ == VALA_UNARY_OPERATOR_REF) { _tmp0_ = TRUE; } else { ValaUnaryExpression* _tmp4_; ValaUnaryOperator _tmp5_; ValaUnaryOperator _tmp6_; _tmp4_ = expr; _tmp5_ = vala_unary_expression_get_operator (_tmp4_); _tmp6_ = _tmp5_; _tmp0_ = _tmp6_ == VALA_UNARY_OPERATOR_OUT; } _tmp7_ = _tmp0_; if (_tmp7_) { ValaUnaryExpression* _tmp8_; ValaExpression* _tmp9_; ValaExpression* _tmp10_; ValaTargetValue* _tmp11_; ValaTargetValue* _tmp12_; ValaGLibValue* _tmp13_; ValaGLibValue* glib_value; ValaGLibValue* _tmp14_; ValaDataType* _tmp15_; ValaDataType* _tmp16_; ValaGLibValue* _tmp17_; ValaGLibValue* ref_value; ValaGLibValue* _tmp18_; ValaGLibValue* _tmp19_; ValaCCodeExpression* _tmp20_; ValaCCodeUnaryExpression* _tmp21_; ValaGLibValue* _tmp22_; ValaList* _tmp23_; ValaGLibValue* _tmp40_; ValaCCodeExpression* _tmp41_; ValaGLibValue* _tmp46_; ValaCCodeExpression* _tmp47_; ValaUnaryExpression* _tmp52_; ValaGLibValue* _tmp53_; _tmp8_ = expr; _tmp9_ = vala_unary_expression_get_inner (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_expression_get_target_value (_tmp10_); _tmp12_ = _tmp11_; _tmp13_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp12_)); glib_value = _tmp13_; _tmp14_ = glib_value; _tmp15_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_glib_value_new (_tmp16_, NULL, FALSE); ref_value = _tmp17_; _tmp18_ = ref_value; _tmp19_ = glib_value; _tmp20_ = _tmp19_->cvalue; _tmp21_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp20_); _vala_ccode_node_unref0 (_tmp18_->cvalue); _tmp18_->cvalue = (ValaCCodeExpression*) _tmp21_; _tmp22_ = glib_value; _tmp23_ = _tmp22_->array_length_cvalues; if (_tmp23_ != NULL) { { gint i; i = 0; { gboolean _tmp24_; _tmp24_ = TRUE; while (TRUE) { gboolean _tmp25_; gint _tmp27_; ValaGLibValue* _tmp28_; ValaList* _tmp29_; gint _tmp30_; gint _tmp31_; ValaGLibValue* _tmp32_; ValaGLibValue* _tmp33_; ValaList* _tmp34_; gint _tmp35_; gpointer _tmp36_ = NULL; ValaCCodeExpression* _tmp37_; ValaCCodeUnaryExpression* _tmp38_; ValaCCodeUnaryExpression* _tmp39_; _tmp25_ = _tmp24_; if (!_tmp25_) { gint _tmp26_; _tmp26_ = i; i = _tmp26_ + 1; } _tmp24_ = FALSE; _tmp27_ = i; _tmp28_ = glib_value; _tmp29_ = _tmp28_->array_length_cvalues; _tmp30_ = vala_collection_get_size ((ValaCollection*) _tmp29_); _tmp31_ = _tmp30_; if (!(_tmp27_ < _tmp31_)) { break; } _tmp32_ = ref_value; _tmp33_ = glib_value; _tmp34_ = _tmp33_->array_length_cvalues; _tmp35_ = i; _tmp36_ = vala_list_get (_tmp34_, _tmp35_); _tmp37_ = (ValaCCodeExpression*) _tmp36_; _tmp38_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp37_); _tmp39_ = _tmp38_; vala_glib_value_append_array_length_cvalue (_tmp32_, (ValaCCodeExpression*) _tmp39_); _vala_ccode_node_unref0 (_tmp39_); _vala_ccode_node_unref0 (_tmp37_); } } } } _tmp40_ = glib_value; _tmp41_ = _tmp40_->delegate_target_cvalue; if (_tmp41_ != NULL) { ValaGLibValue* _tmp42_; ValaGLibValue* _tmp43_; ValaCCodeExpression* _tmp44_; ValaCCodeUnaryExpression* _tmp45_; _tmp42_ = ref_value; _tmp43_ = glib_value; _tmp44_ = _tmp43_->delegate_target_cvalue; _tmp45_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp44_); _vala_ccode_node_unref0 (_tmp42_->delegate_target_cvalue); _tmp42_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp45_; } _tmp46_ = glib_value; _tmp47_ = _tmp46_->delegate_target_destroy_notify_cvalue; if (_tmp47_ != NULL) { ValaGLibValue* _tmp48_; ValaGLibValue* _tmp49_; ValaCCodeExpression* _tmp50_; ValaCCodeUnaryExpression* _tmp51_; _tmp48_ = ref_value; _tmp49_ = glib_value; _tmp50_ = _tmp49_->delegate_target_destroy_notify_cvalue; _tmp51_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp50_); _vala_ccode_node_unref0 (_tmp48_->delegate_target_destroy_notify_cvalue); _tmp48_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp51_; } _tmp52_ = expr; _tmp53_ = ref_value; vala_expression_set_target_value ((ValaExpression*) _tmp52_, (ValaTargetValue*) _tmp53_); _vala_target_value_unref0 (ref_value); _vala_target_value_unref0 (glib_value); return; } _tmp54_ = expr; _tmp55_ = vala_unary_expression_get_operator (_tmp54_); _tmp56_ = _tmp55_; if (_tmp56_ == VALA_UNARY_OPERATOR_PLUS) { op = VALA_CCODE_UNARY_OPERATOR_PLUS; } else { ValaUnaryExpression* _tmp57_; ValaUnaryOperator _tmp58_; ValaUnaryOperator _tmp59_; _tmp57_ = expr; _tmp58_ = vala_unary_expression_get_operator (_tmp57_); _tmp59_ = _tmp58_; if (_tmp59_ == VALA_UNARY_OPERATOR_MINUS) { op = VALA_CCODE_UNARY_OPERATOR_MINUS; } else { ValaUnaryExpression* _tmp60_; ValaUnaryOperator _tmp61_; ValaUnaryOperator _tmp62_; _tmp60_ = expr; _tmp61_ = vala_unary_expression_get_operator (_tmp60_); _tmp62_ = _tmp61_; if (_tmp62_ == VALA_UNARY_OPERATOR_LOGICAL_NEGATION) { op = VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION; } else { ValaUnaryExpression* _tmp63_; ValaUnaryOperator _tmp64_; ValaUnaryOperator _tmp65_; _tmp63_ = expr; _tmp64_ = vala_unary_expression_get_operator (_tmp63_); _tmp65_ = _tmp64_; if (_tmp65_ == VALA_UNARY_OPERATOR_BITWISE_COMPLEMENT) { op = VALA_CCODE_UNARY_OPERATOR_BITWISE_COMPLEMENT; } else { ValaUnaryExpression* _tmp66_; ValaUnaryOperator _tmp67_; ValaUnaryOperator _tmp68_; _tmp66_ = expr; _tmp67_ = vala_unary_expression_get_operator (_tmp66_); _tmp68_ = _tmp67_; if (_tmp68_ == VALA_UNARY_OPERATOR_INCREMENT) { op = VALA_CCODE_UNARY_OPERATOR_PREFIX_INCREMENT; } else { ValaUnaryExpression* _tmp69_; ValaUnaryOperator _tmp70_; ValaUnaryOperator _tmp71_; _tmp69_ = expr; _tmp70_ = vala_unary_expression_get_operator (_tmp69_); _tmp71_ = _tmp70_; if (_tmp71_ == VALA_UNARY_OPERATOR_DECREMENT) { op = VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT; } else { g_assert_not_reached (); } } } } } } _tmp72_ = expr; _tmp73_ = op; _tmp74_ = expr; _tmp75_ = vala_unary_expression_get_inner (_tmp74_); _tmp76_ = _tmp75_; _tmp77_ = vala_ccode_base_module_get_cvalue (self, _tmp76_); _tmp78_ = _tmp77_; _tmp79_ = vala_ccode_unary_expression_new (_tmp73_, _tmp78_); _tmp80_ = _tmp79_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp72_, (ValaCCodeExpression*) _tmp80_); _vala_ccode_node_unref0 (_tmp80_); _vala_ccode_node_unref0 (_tmp78_); } ValaCCodeExpression* vala_ccode_base_module_try_cast_value_to_type (ValaCCodeBaseModule* self, ValaCCodeExpression* ccodeexpr, ValaDataType* from, ValaDataType* to, ValaExpression* expr) { ValaCCodeExpression* result = NULL; gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; ValaDataType* _tmp4_; gboolean _tmp6_; gboolean _tmp11_; gboolean _tmp16_; gboolean _tmp20_; ValaDataType* _tmp21_; ValaCCodeIdentifier* _tmp22_ = NULL; ValaCCodeIdentifier* _tmp23_; ValaCCodeFunctionCall* _tmp24_; ValaCCodeFunctionCall* _tmp25_; ValaCCodeFunctionCall* ccall; ValaCCodeExpression* gvalue = NULL; ValaDataType* _tmp26_; gboolean _tmp27_; gboolean _tmp28_; ValaCCodeFunctionCall* _tmp33_; ValaCCodeExpression* _tmp34_; ValaCCodeFunctionCall* _tmp35_; ValaCCodeExpression* _tmp36_; ValaCCodeExpression* rv; gboolean _tmp37_ = FALSE; ValaExpression* _tmp38_; gboolean _tmp40_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (ccodeexpr != NULL, NULL); g_return_val_if_fail (from != NULL, NULL); g_return_val_if_fail (to != NULL, NULL); _tmp4_ = from; if (_tmp4_ == NULL) { _tmp3_ = TRUE; } else { ValaStruct* _tmp5_; _tmp5_ = self->gvalue_type; _tmp3_ = _tmp5_ == NULL; } _tmp6_ = _tmp3_; if (_tmp6_) { _tmp2_ = TRUE; } else { ValaDataType* _tmp7_; ValaTypeSymbol* _tmp8_; ValaTypeSymbol* _tmp9_; ValaStruct* _tmp10_; _tmp7_ = from; _tmp8_ = vala_data_type_get_data_type (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = self->gvalue_type; _tmp2_ = _tmp9_ != VALA_TYPESYMBOL (_tmp10_); } _tmp11_ = _tmp2_; if (_tmp11_) { _tmp1_ = TRUE; } else { ValaDataType* _tmp12_; ValaTypeSymbol* _tmp13_; ValaTypeSymbol* _tmp14_; ValaStruct* _tmp15_; _tmp12_ = to; _tmp13_ = vala_data_type_get_data_type (_tmp12_); _tmp14_ = _tmp13_; _tmp15_ = self->gvalue_type; _tmp1_ = _tmp14_ == VALA_TYPESYMBOL (_tmp15_); } _tmp16_ = _tmp1_; if (_tmp16_) { _tmp0_ = TRUE; } else { ValaDataType* _tmp17_; gchar* _tmp18_ = NULL; gchar* _tmp19_; _tmp17_ = to; _tmp18_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp17_); _tmp19_ = _tmp18_; _tmp0_ = g_strcmp0 (_tmp19_, "") == 0; _g_free0 (_tmp19_); } _tmp20_ = _tmp0_; if (_tmp20_) { result = NULL; return result; } _tmp21_ = to; _tmp22_ = vala_ccode_base_module_get_value_getter_function (self, _tmp21_); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp23_); _tmp25_ = _tmp24_; _vala_ccode_node_unref0 (_tmp23_); ccall = _tmp25_; _tmp26_ = from; _tmp27_ = vala_data_type_get_nullable (_tmp26_); _tmp28_ = _tmp27_; if (_tmp28_) { ValaCCodeExpression* _tmp29_; ValaCCodeExpression* _tmp30_; _tmp29_ = ccodeexpr; _tmp30_ = _vala_ccode_node_ref0 (_tmp29_); _vala_ccode_node_unref0 (gvalue); gvalue = _tmp30_; } else { ValaCCodeExpression* _tmp31_; ValaCCodeUnaryExpression* _tmp32_; _tmp31_ = ccodeexpr; _tmp32_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp31_); _vala_ccode_node_unref0 (gvalue); gvalue = (ValaCCodeExpression*) _tmp32_; } _tmp33_ = ccall; _tmp34_ = gvalue; vala_ccode_function_call_add_argument (_tmp33_, _tmp34_); _tmp35_ = ccall; _tmp36_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp35_); rv = _tmp36_; _tmp38_ = expr; if (_tmp38_ != NULL) { ValaDataType* _tmp39_; _tmp39_ = to; _tmp37_ = VALA_IS_ARRAY_TYPE (_tmp39_); } else { _tmp37_ = FALSE; } _tmp40_ = _tmp37_; if (_tmp40_) { ValaCCodeIdentifier* _tmp41_; ValaCCodeIdentifier* _tmp42_; ValaCCodeFunctionCall* _tmp43_; ValaCCodeFunctionCall* _tmp44_; ValaCCodeFunctionCall* len_call; ValaCCodeFunctionCall* _tmp45_; ValaCCodeExpression* _tmp46_; ValaExpression* _tmp47_; ValaCCodeFunctionCall* _tmp48_; _tmp41_ = vala_ccode_identifier_new ("g_strv_length"); _tmp42_ = _tmp41_; _tmp43_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp42_); _tmp44_ = _tmp43_; _vala_ccode_node_unref0 (_tmp42_); len_call = _tmp44_; _tmp45_ = len_call; _tmp46_ = rv; vala_ccode_function_call_add_argument (_tmp45_, _tmp46_); _tmp47_ = expr; _tmp48_ = len_call; vala_ccode_base_module_append_array_length (self, _tmp47_, (ValaCCodeExpression*) _tmp48_); _vala_ccode_node_unref0 (len_call); } else { ValaDataType* _tmp49_; _tmp49_ = to; if (VALA_IS_STRUCT_VALUE_TYPE (_tmp49_)) { ValaCodeNode* _tmp50_ = NULL; ValaExpression* _tmp51_; ValaCodeNode* _tmp54_; ValaCodeNode* _tmp55_; ValaCodeNode* node; ValaDataType* _tmp56_; ValaCodeNode* _tmp57_; gboolean _tmp58_; ValaTargetValue* _tmp59_ = NULL; ValaTargetValue* temp_value; ValaTargetValue* _tmp60_; ValaCCodeExpression* _tmp61_ = NULL; ValaCCodeExpression* ctemp; ValaCCodeExpression* _tmp62_; ValaDataType* _tmp63_; ValaPointerType* _tmp64_; ValaPointerType* _tmp65_; gchar* _tmp66_ = NULL; gchar* _tmp67_; ValaCCodeCastExpression* _tmp68_; ValaCCodeCastExpression* _tmp69_; ValaCCodeUnaryExpression* _tmp70_; ValaCCodeIdentifier* _tmp71_; ValaCCodeIdentifier* _tmp72_; ValaCCodeFunctionCall* _tmp73_; ValaCCodeFunctionCall* _tmp74_; ValaCCodeFunctionCall* holds; ValaCCodeFunctionCall* _tmp75_; ValaCCodeExpression* _tmp76_; ValaCCodeFunctionCall* _tmp77_; ValaDataType* _tmp78_; gchar* _tmp79_ = NULL; gchar* _tmp80_; ValaCCodeIdentifier* _tmp81_; ValaCCodeIdentifier* _tmp82_; ValaCCodeFunctionCall* _tmp83_; ValaCCodeFunctionCall* _tmp84_; ValaCCodeBinaryExpression* _tmp85_; ValaCCodeBinaryExpression* cond; ValaCCodeIdentifier* _tmp86_; ValaCCodeIdentifier* _tmp87_; ValaCCodeFunctionCall* _tmp88_; ValaCCodeFunctionCall* _tmp89_; ValaCCodeFunctionCall* warn; ValaCCodeFunctionCall* _tmp90_; ValaCCodeConstant* _tmp91_; ValaCCodeConstant* _tmp92_; ValaCCodeCommaExpression* _tmp93_; ValaCCodeCommaExpression* fail; ValaCCodeCommaExpression* _tmp94_; ValaCCodeFunctionCall* _tmp95_; ValaCCodeCommaExpression* _tmp96_; ValaCCodeExpression* _tmp97_; ValaCCodeBinaryExpression* _tmp98_; ValaCCodeExpression* _tmp99_; ValaCCodeCommaExpression* _tmp100_; ValaCCodeConditionalExpression* _tmp101_; _tmp51_ = expr; if (_tmp51_ != NULL) { ValaExpression* _tmp52_; _tmp52_ = expr; _tmp50_ = VALA_CODE_NODE (_tmp52_); } else { ValaDataType* _tmp53_; _tmp53_ = to; _tmp50_ = (ValaCodeNode*) _tmp53_; } _tmp54_ = _tmp50_; _tmp55_ = _vala_code_node_ref0 (_tmp54_); node = _tmp55_; _tmp56_ = to; _tmp57_ = node; _tmp58_ = TRUE; _tmp59_ = vala_ccode_base_module_create_temp_value (self, _tmp56_, TRUE, _tmp57_, &_tmp58_); temp_value = _tmp59_; _tmp60_ = temp_value; _tmp61_ = vala_ccode_base_module_get_cvalue_ (self, _tmp60_); ctemp = _tmp61_; _tmp62_ = rv; _tmp63_ = to; _tmp64_ = vala_pointer_type_new (_tmp63_, NULL); _tmp65_ = _tmp64_; _tmp66_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp65_); _tmp67_ = _tmp66_; _tmp68_ = vala_ccode_cast_expression_new (_tmp62_, _tmp67_); _tmp69_ = _tmp68_; _tmp70_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp69_); _vala_ccode_node_unref0 (rv); rv = (ValaCCodeExpression*) _tmp70_; _vala_ccode_node_unref0 (_tmp69_); _g_free0 (_tmp67_); _vala_code_node_unref0 (_tmp65_); _tmp71_ = vala_ccode_identifier_new ("G_VALUE_HOLDS"); _tmp72_ = _tmp71_; _tmp73_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp72_); _tmp74_ = _tmp73_; _vala_ccode_node_unref0 (_tmp72_); holds = _tmp74_; _tmp75_ = holds; _tmp76_ = gvalue; vala_ccode_function_call_add_argument (_tmp75_, _tmp76_); _tmp77_ = holds; _tmp78_ = to; _tmp79_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp78_); _tmp80_ = _tmp79_; _tmp81_ = vala_ccode_identifier_new (_tmp80_); _tmp82_ = _tmp81_; vala_ccode_function_call_add_argument (_tmp77_, (ValaCCodeExpression*) _tmp82_); _vala_ccode_node_unref0 (_tmp82_); _g_free0 (_tmp80_); _tmp83_ = holds; _tmp84_ = ccall; _tmp85_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_AND, (ValaCCodeExpression*) _tmp83_, (ValaCCodeExpression*) _tmp84_); cond = _tmp85_; _tmp86_ = vala_ccode_identifier_new ("g_warning"); _tmp87_ = _tmp86_; _tmp88_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp87_); _tmp89_ = _tmp88_; _vala_ccode_node_unref0 (_tmp87_); warn = _tmp89_; _tmp90_ = warn; _tmp91_ = vala_ccode_constant_new ("\"Invalid GValue unboxing (wrong type or NULL)\""); _tmp92_ = _tmp91_; vala_ccode_function_call_add_argument (_tmp90_, (ValaCCodeExpression*) _tmp92_); _vala_ccode_node_unref0 (_tmp92_); _tmp93_ = vala_ccode_comma_expression_new (); fail = _tmp93_; _tmp94_ = fail; _tmp95_ = warn; vala_ccode_comma_expression_append_expression (_tmp94_, (ValaCCodeExpression*) _tmp95_); _tmp96_ = fail; _tmp97_ = ctemp; vala_ccode_comma_expression_append_expression (_tmp96_, _tmp97_); _tmp98_ = cond; _tmp99_ = rv; _tmp100_ = fail; _tmp101_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp98_, _tmp99_, (ValaCCodeExpression*) _tmp100_); _vala_ccode_node_unref0 (rv); rv = (ValaCCodeExpression*) _tmp101_; _vala_ccode_node_unref0 (fail); _vala_ccode_node_unref0 (warn); _vala_ccode_node_unref0 (cond); _vala_ccode_node_unref0 (holds); _vala_ccode_node_unref0 (ctemp); _vala_target_value_unref0 (temp_value); _vala_code_node_unref0 (node); } } result = rv; _vala_ccode_node_unref0 (gvalue); _vala_ccode_node_unref0 (ccall); return result; } ValaTargetValue* vala_ccode_base_module_try_cast_variant_to_type (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaDataType* to, ValaCodeNode* node) { ValaTargetValue* result = NULL; gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; ValaTargetValue* _tmp2_; ValaDataType* _tmp3_; ValaDataType* _tmp4_; gboolean _tmp6_; gboolean _tmp13_; gint _tmp14_; gint _tmp15_; gchar* _tmp16_ = NULL; gchar* variant_func; ValaTargetValue* _tmp17_; ValaTargetValue* _tmp18_; ValaTargetValue* variant; ValaTargetValue* _tmp19_; ValaDataType* _tmp20_; ValaDataType* _tmp21_; gboolean _tmp22_; gboolean _tmp23_; const gchar* _tmp34_; ValaCCodeIdentifier* _tmp35_; ValaCCodeIdentifier* _tmp36_; ValaCCodeFunctionCall* _tmp37_; ValaCCodeFunctionCall* _tmp38_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp39_; ValaTargetValue* _tmp40_; ValaCCodeExpression* _tmp41_ = NULL; ValaCCodeExpression* _tmp42_; ValaDataType* _tmp43_; ValaCodeNode* _tmp44_; ValaTargetValue* _tmp45_ = NULL; ValaTargetValue* _result_; const gchar* _tmp46_; ValaCCodeFunction* _tmp47_; ValaCCodeFunction* cfunc; ValaCCodeFunction* _tmp48_; ValaCCodeFunction* _tmp49_; ValaCCodeParameter* _tmp50_; ValaCCodeParameter* _tmp51_; ValaDataType* _tmp52_; gboolean _tmp53_ = FALSE; ValaDataType* _tmp58_; gboolean _tmp59_ = FALSE; ValaDataType* _tmp97_; gboolean _tmp98_ = FALSE; ValaCCodeFunction* _tmp108_; ValaDataType* _tmp109_; ValaCCodeIdentifier* _tmp110_; ValaCCodeIdentifier* _tmp111_; ValaCCodeIdentifier* _tmp112_; ValaCCodeIdentifier* _tmp113_; ValaCCodeExpression* _tmp114_ = NULL; ValaCCodeExpression* _tmp115_; ValaCCodeExpression* func_result; ValaDataType* _tmp116_; gboolean _tmp117_ = FALSE; ValaCCodeFile* _tmp126_; ValaCCodeFunction* _tmp127_; ValaCCodeFile* _tmp128_; ValaCCodeFunction* _tmp129_; ValaTargetValue* _tmp130_; ValaTargetValue* _tmp131_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (value != NULL, NULL); g_return_val_if_fail (to != NULL, NULL); _tmp2_ = value; _tmp3_ = vala_target_value_get_value_type (_tmp2_); _tmp4_ = _tmp3_; if (_tmp4_ == NULL) { _tmp1_ = TRUE; } else { ValaClass* _tmp5_; _tmp5_ = self->gvariant_type; _tmp1_ = _tmp5_ == NULL; } _tmp6_ = _tmp1_; if (_tmp6_) { _tmp0_ = TRUE; } else { ValaTargetValue* _tmp7_; ValaDataType* _tmp8_; ValaDataType* _tmp9_; ValaTypeSymbol* _tmp10_; ValaTypeSymbol* _tmp11_; ValaClass* _tmp12_; _tmp7_ = value; _tmp8_ = vala_target_value_get_value_type (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_data_type_get_data_type (_tmp9_); _tmp11_ = _tmp10_; _tmp12_ = self->gvariant_type; _tmp0_ = _tmp11_ != VALA_TYPESYMBOL (_tmp12_); } _tmp13_ = _tmp0_; if (_tmp13_) { result = NULL; return result; } _tmp14_ = self->priv->next_variant_function_id; self->priv->next_variant_function_id = _tmp14_ + 1; _tmp15_ = self->priv->next_variant_function_id; _tmp16_ = g_strdup_printf ("_variant_get%d", _tmp15_); variant_func = _tmp16_; _tmp17_ = value; _tmp18_ = _vala_target_value_ref0 (_tmp17_); variant = _tmp18_; _tmp19_ = value; _tmp20_ = vala_target_value_get_value_type (_tmp19_); _tmp21_ = _tmp20_; _tmp22_ = vala_data_type_get_value_owned (_tmp21_); _tmp23_ = _tmp22_; if (_tmp23_) { ValaTargetValue* _tmp24_; ValaCodeNode* _tmp25_; ValaTargetValue* _tmp26_ = NULL; ValaTargetValue* temp_value; ValaArrayList* _tmp27_; ValaArrayList* _tmp28_; ValaTargetValue* _tmp29_; ValaGLibValue* _tmp30_ = NULL; ValaGLibValue* _tmp31_; ValaTargetValue* _tmp32_; ValaTargetValue* _tmp33_; _tmp24_ = value; _tmp25_ = node; _tmp26_ = vala_ccode_base_module_store_temp_value (self, _tmp24_, _tmp25_, NULL); temp_value = _tmp26_; _tmp27_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp28_ = _tmp27_; _tmp29_ = temp_value; _tmp30_ = vala_glib_value_copy (VALA_GLIB_VALUE (_tmp29_)); _tmp31_ = _tmp30_; vala_list_insert ((ValaList*) _tmp28_, 0, (ValaTargetValue*) _tmp31_); _vala_target_value_unref0 (_tmp31_); _tmp32_ = temp_value; _tmp33_ = _vala_target_value_ref0 (_tmp32_); _vala_target_value_unref0 (variant); variant = _tmp33_; _vala_target_value_unref0 (temp_value); } _tmp34_ = variant_func; _tmp35_ = vala_ccode_identifier_new (_tmp34_); _tmp36_ = _tmp35_; _tmp37_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp36_); _tmp38_ = _tmp37_; _vala_ccode_node_unref0 (_tmp36_); ccall = _tmp38_; _tmp39_ = ccall; _tmp40_ = variant; _tmp41_ = vala_ccode_base_module_get_cvalue_ (self, _tmp40_); _tmp42_ = _tmp41_; vala_ccode_function_call_add_argument (_tmp39_, _tmp42_); _vala_ccode_node_unref0 (_tmp42_); _tmp43_ = to; _tmp44_ = node; _tmp45_ = vala_ccode_base_module_create_temp_value (self, _tmp43_, FALSE, _tmp44_, NULL); _result_ = _tmp45_; _tmp46_ = variant_func; _tmp47_ = vala_ccode_function_new (_tmp46_, "void"); cfunc = _tmp47_; _tmp48_ = cfunc; vala_ccode_function_set_modifiers (_tmp48_, VALA_CCODE_MODIFIERS_STATIC); _tmp49_ = cfunc; _tmp50_ = vala_ccode_parameter_new ("value", "GVariant*"); _tmp51_ = _tmp50_; vala_ccode_function_add_parameter (_tmp49_, _tmp51_); _vala_ccode_node_unref0 (_tmp51_); _tmp52_ = to; _tmp53_ = vala_data_type_is_real_non_null_struct_type (_tmp52_); if (!_tmp53_) { ValaCCodeFunction* _tmp54_; ValaDataType* _tmp55_; gchar* _tmp56_ = NULL; gchar* _tmp57_; _tmp54_ = cfunc; _tmp55_ = to; _tmp56_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp55_); _tmp57_ = _tmp56_; vala_ccode_function_set_return_type (_tmp54_, _tmp57_); _g_free0 (_tmp57_); } _tmp58_ = to; _tmp59_ = vala_data_type_is_real_non_null_struct_type (_tmp58_); if (_tmp59_) { ValaCCodeFunction* _tmp60_; ValaDataType* _tmp61_; gchar* _tmp62_ = NULL; gchar* _tmp63_; gchar* _tmp64_; gchar* _tmp65_; ValaCCodeParameter* _tmp66_; ValaCCodeParameter* _tmp67_; ValaCCodeFunctionCall* _tmp68_; ValaTargetValue* _tmp69_; ValaCCodeExpression* _tmp70_ = NULL; ValaCCodeExpression* _tmp71_; ValaCCodeUnaryExpression* _tmp72_; ValaCCodeUnaryExpression* _tmp73_; _tmp60_ = cfunc; _tmp61_ = to; _tmp62_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp61_); _tmp63_ = _tmp62_; _tmp64_ = g_strconcat (_tmp63_, "*", NULL); _tmp65_ = _tmp64_; _tmp66_ = vala_ccode_parameter_new ("result", _tmp65_); _tmp67_ = _tmp66_; vala_ccode_function_add_parameter (_tmp60_, _tmp67_); _vala_ccode_node_unref0 (_tmp67_); _g_free0 (_tmp65_); _g_free0 (_tmp63_); _tmp68_ = ccall; _tmp69_ = _result_; _tmp70_ = vala_ccode_base_module_get_cvalue_ (self, _tmp69_); _tmp71_ = _tmp70_; _tmp72_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp71_); _tmp73_ = _tmp72_; vala_ccode_function_call_add_argument (_tmp68_, (ValaCCodeExpression*) _tmp73_); _vala_ccode_node_unref0 (_tmp73_); _vala_ccode_node_unref0 (_tmp71_); } else { ValaDataType* _tmp74_; _tmp74_ = to; if (VALA_IS_ARRAY_TYPE (_tmp74_)) { ValaDataType* _tmp75_; ValaArrayType* _tmp76_; ValaArrayType* array_type; _tmp75_ = to; _tmp76_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp75_)); array_type = _tmp76_; { gint dim; dim = 1; { gboolean _tmp77_; _tmp77_ = TRUE; while (TRUE) { gboolean _tmp78_; gint _tmp80_; ValaArrayType* _tmp81_; gint _tmp82_; gint _tmp83_; ValaCCodeFunctionCall* _tmp84_; ValaTargetValue* _tmp85_; gint _tmp86_; ValaCCodeExpression* _tmp87_ = NULL; ValaCCodeExpression* _tmp88_; ValaCCodeUnaryExpression* _tmp89_; ValaCCodeUnaryExpression* _tmp90_; ValaCCodeFunction* _tmp91_; gint _tmp92_; gchar* _tmp93_ = NULL; gchar* _tmp94_; ValaCCodeParameter* _tmp95_; ValaCCodeParameter* _tmp96_; _tmp78_ = _tmp77_; if (!_tmp78_) { gint _tmp79_; _tmp79_ = dim; dim = _tmp79_ + 1; } _tmp77_ = FALSE; _tmp80_ = dim; _tmp81_ = array_type; _tmp82_ = vala_array_type_get_rank (_tmp81_); _tmp83_ = _tmp82_; if (!(_tmp80_ <= _tmp83_)) { break; } _tmp84_ = ccall; _tmp85_ = _result_; _tmp86_ = dim; _tmp87_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp85_, _tmp86_); _tmp88_ = _tmp87_; _tmp89_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp88_); _tmp90_ = _tmp89_; vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp90_); _vala_ccode_node_unref0 (_tmp90_); _vala_ccode_node_unref0 (_tmp88_); _tmp91_ = cfunc; _tmp92_ = dim; _tmp93_ = vala_ccode_base_module_get_array_length_cname (self, "result", _tmp92_); _tmp94_ = _tmp93_; _tmp95_ = vala_ccode_parameter_new (_tmp94_, "int*"); _tmp96_ = _tmp95_; vala_ccode_function_add_parameter (_tmp91_, _tmp96_); _vala_ccode_node_unref0 (_tmp96_); _g_free0 (_tmp94_); } } } _vala_code_node_unref0 (array_type); } } _tmp97_ = to; _tmp98_ = vala_data_type_is_real_non_null_struct_type (_tmp97_); if (!_tmp98_) { ValaCCodeFunction* _tmp99_; ValaCCodeFunction* _tmp100_; ValaTargetValue* _tmp101_; ValaCCodeExpression* _tmp102_ = NULL; ValaCCodeExpression* _tmp103_; ValaCCodeFunctionCall* _tmp104_; _tmp99_ = vala_ccode_base_module_get_ccode (self); _tmp100_ = _tmp99_; _tmp101_ = _result_; _tmp102_ = vala_ccode_base_module_get_cvalue_ (self, _tmp101_); _tmp103_ = _tmp102_; _tmp104_ = ccall; vala_ccode_function_add_assignment (_tmp100_, _tmp103_, (ValaCCodeExpression*) _tmp104_); _vala_ccode_node_unref0 (_tmp103_); } else { ValaCCodeFunction* _tmp105_; ValaCCodeFunction* _tmp106_; ValaCCodeFunctionCall* _tmp107_; _tmp105_ = vala_ccode_base_module_get_ccode (self); _tmp106_ = _tmp105_; _tmp107_ = ccall; vala_ccode_function_add_expression (_tmp106_, (ValaCCodeExpression*) _tmp107_); } _tmp108_ = cfunc; vala_ccode_base_module_push_function (self, _tmp108_); _tmp109_ = to; _tmp110_ = vala_ccode_identifier_new ("value"); _tmp111_ = _tmp110_; _tmp112_ = vala_ccode_identifier_new ("*result"); _tmp113_ = _tmp112_; _tmp114_ = vala_ccode_base_module_deserialize_expression (self, _tmp109_, (ValaCCodeExpression*) _tmp111_, (ValaCCodeExpression*) _tmp113_, NULL, NULL); _tmp115_ = _tmp114_; _vala_ccode_node_unref0 (_tmp113_); _vala_ccode_node_unref0 (_tmp111_); func_result = _tmp115_; _tmp116_ = to; _tmp117_ = vala_data_type_is_real_non_null_struct_type (_tmp116_); if (_tmp117_) { ValaCCodeFunction* _tmp118_; ValaCCodeFunction* _tmp119_; ValaCCodeIdentifier* _tmp120_; ValaCCodeIdentifier* _tmp121_; ValaCCodeExpression* _tmp122_; _tmp118_ = vala_ccode_base_module_get_ccode (self); _tmp119_ = _tmp118_; _tmp120_ = vala_ccode_identifier_new ("*result"); _tmp121_ = _tmp120_; _tmp122_ = func_result; vala_ccode_function_add_assignment (_tmp119_, (ValaCCodeExpression*) _tmp121_, _tmp122_); _vala_ccode_node_unref0 (_tmp121_); } else { ValaCCodeFunction* _tmp123_; ValaCCodeFunction* _tmp124_; ValaCCodeExpression* _tmp125_; _tmp123_ = vala_ccode_base_module_get_ccode (self); _tmp124_ = _tmp123_; _tmp125_ = func_result; vala_ccode_function_add_return (_tmp124_, _tmp125_); } vala_ccode_base_module_pop_function (self); _tmp126_ = self->cfile; _tmp127_ = cfunc; vala_ccode_file_add_function_declaration (_tmp126_, _tmp127_); _tmp128_ = self->cfile; _tmp129_ = cfunc; vala_ccode_file_add_function (_tmp128_, _tmp129_); _tmp130_ = _result_; _tmp131_ = vala_ccode_base_module_load_temp_value (self, _tmp130_); result = _tmp131_; _vala_ccode_node_unref0 (func_result); _vala_ccode_node_unref0 (cfunc); _vala_target_value_unref0 (_result_); _vala_ccode_node_unref0 (ccall); _vala_target_value_unref0 (variant); _g_free0 (variant_func); return result; } static ValaCCodeExpression* vala_ccode_base_module_real_deserialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail) { gboolean _vala_may_fail = FALSE; ValaCCodeExpression* result = NULL; g_return_val_if_fail (type != NULL, NULL); g_return_val_if_fail (variant_expr != NULL, NULL); g_assert_not_reached (); if (may_fail) { *may_fail = _vala_may_fail; } return result; } ValaCCodeExpression* vala_ccode_base_module_deserialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->deserialize_expression (self, type, variant_expr, expr, error_expr, may_fail); } static ValaCCodeExpression* vala_ccode_base_module_real_serialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr) { ValaCCodeExpression* result = NULL; g_return_val_if_fail (type != NULL, NULL); g_return_val_if_fail (expr != NULL, NULL); g_assert_not_reached (); return result; } ValaCCodeExpression* vala_ccode_base_module_serialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->serialize_expression (self, type, expr); } static void vala_ccode_base_module_real_visit_cast_expression (ValaCodeVisitor* base, ValaCastExpression* expr) { ValaCCodeBaseModule * self; ValaCastExpression* _tmp0_; ValaExpression* _tmp1_; ValaExpression* _tmp2_; ValaCCodeExpression* _tmp3_ = NULL; ValaCCodeExpression* _tmp4_; ValaCastExpression* _tmp5_; ValaExpression* _tmp6_; ValaExpression* _tmp7_; ValaDataType* _tmp8_; ValaDataType* _tmp9_; ValaCastExpression* _tmp10_; ValaDataType* _tmp11_; ValaDataType* _tmp12_; ValaCastExpression* _tmp13_; ValaCCodeExpression* _tmp14_ = NULL; ValaCCodeExpression* _tmp15_; ValaCCodeExpression* valuecast; ValaCCodeExpression* _tmp16_; ValaCastExpression* _tmp19_; ValaExpression* _tmp20_; ValaExpression* _tmp21_; ValaTargetValue* _tmp22_; ValaTargetValue* _tmp23_; ValaCastExpression* _tmp24_; ValaDataType* _tmp25_; ValaDataType* _tmp26_; ValaCastExpression* _tmp27_; ValaTargetValue* _tmp28_ = NULL; ValaTargetValue* variantcast; ValaTargetValue* _tmp29_; ValaCastExpression* _tmp32_; ValaDataType* _tmp33_; ValaDataType* _tmp34_; ValaCCodeFile* _tmp35_; ValaCastExpression* _tmp36_; ValaDataType* _tmp37_; ValaDataType* _tmp38_; ValaTypeSymbol* _tmp39_; ValaTypeSymbol* _tmp40_; ValaClass* _tmp41_; ValaClass* cl; ValaCastExpression* _tmp42_; ValaDataType* _tmp43_; ValaDataType* _tmp44_; ValaTypeSymbol* _tmp45_; ValaTypeSymbol* _tmp46_; ValaInterface* _tmp47_; ValaInterface* iface; gboolean _tmp48_ = FALSE; ValaCodeContext* _tmp49_; ValaProfile _tmp50_; ValaProfile _tmp51_; gboolean _tmp61_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_cast_expression_get_inner (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_cvalue (self, _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = expr; _tmp6_ = vala_cast_expression_get_inner (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_expression_get_value_type (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = expr; _tmp11_ = vala_cast_expression_get_type_reference (_tmp10_); _tmp12_ = _tmp11_; _tmp13_ = expr; _tmp14_ = vala_ccode_base_module_try_cast_value_to_type (self, _tmp4_, _tmp9_, _tmp12_, (ValaExpression*) _tmp13_); _tmp15_ = _tmp14_; _vala_ccode_node_unref0 (_tmp4_); valuecast = _tmp15_; _tmp16_ = valuecast; if (_tmp16_ != NULL) { ValaCastExpression* _tmp17_; ValaCCodeExpression* _tmp18_; _tmp17_ = expr; _tmp18_ = valuecast; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp17_, _tmp18_); _vala_ccode_node_unref0 (valuecast); return; } _tmp19_ = expr; _tmp20_ = vala_cast_expression_get_inner (_tmp19_); _tmp21_ = _tmp20_; _tmp22_ = vala_expression_get_target_value (_tmp21_); _tmp23_ = _tmp22_; _tmp24_ = expr; _tmp25_ = vala_cast_expression_get_type_reference (_tmp24_); _tmp26_ = _tmp25_; _tmp27_ = expr; _tmp28_ = vala_ccode_base_module_try_cast_variant_to_type (self, _tmp23_, _tmp26_, (ValaCodeNode*) _tmp27_); variantcast = _tmp28_; _tmp29_ = variantcast; if (_tmp29_ != NULL) { ValaCastExpression* _tmp30_; ValaTargetValue* _tmp31_; _tmp30_ = expr; _tmp31_ = variantcast; vala_expression_set_target_value ((ValaExpression*) _tmp30_, _tmp31_); _vala_target_value_unref0 (variantcast); _vala_ccode_node_unref0 (valuecast); return; } _tmp32_ = expr; _tmp33_ = vala_cast_expression_get_type_reference (_tmp32_); _tmp34_ = _tmp33_; _tmp35_ = self->cfile; vala_ccode_base_module_generate_type_declaration (self, _tmp34_, _tmp35_); _tmp36_ = expr; _tmp37_ = vala_cast_expression_get_type_reference (_tmp36_); _tmp38_ = _tmp37_; _tmp39_ = vala_data_type_get_data_type (_tmp38_); _tmp40_ = _tmp39_; _tmp41_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp40_) ? ((ValaClass*) _tmp40_) : NULL); cl = _tmp41_; _tmp42_ = expr; _tmp43_ = vala_cast_expression_get_type_reference (_tmp42_); _tmp44_ = _tmp43_; _tmp45_ = vala_data_type_get_data_type (_tmp44_); _tmp46_ = _tmp45_; _tmp47_ = _vala_code_node_ref0 (VALA_IS_INTERFACE (_tmp46_) ? ((ValaInterface*) _tmp46_) : NULL); iface = _tmp47_; _tmp49_ = self->priv->_context; _tmp50_ = vala_code_context_get_profile (_tmp49_); _tmp51_ = _tmp50_; if (_tmp51_ == VALA_PROFILE_GOBJECT) { gboolean _tmp52_ = FALSE; ValaInterface* _tmp53_; gboolean _tmp60_; _tmp53_ = iface; if (_tmp53_ != NULL) { _tmp52_ = TRUE; } else { gboolean _tmp54_ = FALSE; ValaClass* _tmp55_; gboolean _tmp59_; _tmp55_ = cl; if (_tmp55_ != NULL) { ValaClass* _tmp56_; gboolean _tmp57_; gboolean _tmp58_; _tmp56_ = cl; _tmp57_ = vala_class_get_is_compact (_tmp56_); _tmp58_ = _tmp57_; _tmp54_ = !_tmp58_; } else { _tmp54_ = FALSE; } _tmp59_ = _tmp54_; _tmp52_ = _tmp59_; } _tmp60_ = _tmp52_; _tmp48_ = _tmp60_; } else { _tmp48_ = FALSE; } _tmp61_ = _tmp48_; if (_tmp61_) { ValaCastExpression* _tmp62_; gboolean _tmp63_; gboolean _tmp64_; _tmp62_ = expr; _tmp63_ = vala_cast_expression_get_is_silent_cast (_tmp62_); _tmp64_ = _tmp63_; if (_tmp64_) { ValaCastExpression* _tmp65_; ValaExpression* _tmp66_; ValaExpression* _tmp67_; ValaCCodeExpression* _tmp68_ = NULL; ValaCCodeExpression* cexpr; ValaCCodeExpression* _tmp69_; ValaCastExpression* _tmp70_; ValaDataType* _tmp71_; ValaDataType* _tmp72_; ValaCCodeExpression* _tmp73_ = NULL; ValaCCodeExpression* ccheck; ValaCCodeExpression* _tmp74_; ValaCastExpression* _tmp75_; ValaDataType* _tmp76_; ValaDataType* _tmp77_; gchar* _tmp78_ = NULL; gchar* _tmp79_; ValaCCodeCastExpression* _tmp80_; ValaCCodeCastExpression* _tmp81_; ValaCCodeCastExpression* ccast; ValaCCodeConstant* _tmp82_; ValaCCodeConstant* cnull; ValaCastExpression* _tmp83_; ValaCCodeExpression* _tmp84_; ValaCCodeCastExpression* _tmp85_; ValaCCodeConstant* _tmp86_; ValaCCodeConditionalExpression* _tmp87_; ValaCCodeConditionalExpression* _tmp88_; _tmp65_ = expr; _tmp66_ = vala_cast_expression_get_inner (_tmp65_); _tmp67_ = _tmp66_; _tmp68_ = vala_ccode_base_module_get_cvalue (self, _tmp67_); cexpr = _tmp68_; _tmp69_ = cexpr; _tmp70_ = expr; _tmp71_ = vala_cast_expression_get_type_reference (_tmp70_); _tmp72_ = _tmp71_; _tmp73_ = vala_ccode_base_module_create_type_check (self, (ValaCCodeNode*) _tmp69_, _tmp72_); ccheck = _tmp73_; _tmp74_ = cexpr; _tmp75_ = expr; _tmp76_ = vala_cast_expression_get_type_reference (_tmp75_); _tmp77_ = _tmp76_; _tmp78_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp77_); _tmp79_ = _tmp78_; _tmp80_ = vala_ccode_cast_expression_new (_tmp74_, _tmp79_); _tmp81_ = _tmp80_; _g_free0 (_tmp79_); ccast = _tmp81_; _tmp82_ = vala_ccode_constant_new ("NULL"); cnull = _tmp82_; _tmp83_ = expr; _tmp84_ = ccheck; _tmp85_ = ccast; _tmp86_ = cnull; _tmp87_ = vala_ccode_conditional_expression_new (_tmp84_, (ValaCCodeExpression*) _tmp85_, (ValaCCodeExpression*) _tmp86_); _tmp88_ = _tmp87_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp83_, (ValaCCodeExpression*) _tmp88_); _vala_ccode_node_unref0 (_tmp88_); _vala_ccode_node_unref0 (cnull); _vala_ccode_node_unref0 (ccast); _vala_ccode_node_unref0 (ccheck); _vala_ccode_node_unref0 (cexpr); } else { ValaCastExpression* _tmp89_; ValaCastExpression* _tmp90_; ValaExpression* _tmp91_; ValaExpression* _tmp92_; ValaCCodeExpression* _tmp93_ = NULL; ValaCCodeExpression* _tmp94_; ValaCastExpression* _tmp95_; ValaDataType* _tmp96_; ValaDataType* _tmp97_; ValaTypeSymbol* _tmp98_; ValaTypeSymbol* _tmp99_; ValaCCodeFunctionCall* _tmp100_ = NULL; ValaCCodeFunctionCall* _tmp101_; _tmp89_ = expr; _tmp90_ = expr; _tmp91_ = vala_cast_expression_get_inner (_tmp90_); _tmp92_ = _tmp91_; _tmp93_ = vala_ccode_base_module_get_cvalue (self, _tmp92_); _tmp94_ = _tmp93_; _tmp95_ = expr; _tmp96_ = vala_cast_expression_get_type_reference (_tmp95_); _tmp97_ = _tmp96_; _tmp98_ = vala_data_type_get_data_type (_tmp97_); _tmp99_ = _tmp98_; _tmp100_ = vala_ccode_base_module_generate_instance_cast (self, _tmp94_, _tmp99_); _tmp101_ = _tmp100_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp89_, (ValaCCodeExpression*) _tmp101_); _vala_ccode_node_unref0 (_tmp101_); _vala_ccode_node_unref0 (_tmp94_); } } else { ValaCastExpression* _tmp102_; gboolean _tmp103_; gboolean _tmp104_; ValaCastExpression* _tmp109_; ValaDataType* _tmp110_; ValaDataType* _tmp111_; ValaArrayType* _tmp112_; ValaArrayType* array_type; gboolean _tmp113_ = FALSE; ValaArrayType* _tmp114_; gboolean _tmp120_; ValaCastExpression* _tmp146_; ValaExpression* _tmp147_; ValaExpression* _tmp148_; ValaCCodeExpression* _tmp149_ = NULL; ValaCCodeExpression* innercexpr; gboolean _tmp150_ = FALSE; gboolean _tmp151_ = FALSE; gboolean _tmp152_ = FALSE; ValaCastExpression* _tmp153_; ValaDataType* _tmp154_; ValaDataType* _tmp155_; ValaTypeSymbol* _tmp156_; ValaTypeSymbol* _tmp157_; gboolean _tmp163_; gboolean _tmp171_; gboolean _tmp179_; ValaCastExpression* _tmp182_; ValaCCodeExpression* _tmp183_; ValaCastExpression* _tmp184_; ValaDataType* _tmp185_; ValaDataType* _tmp186_; gchar* _tmp187_ = NULL; gchar* _tmp188_; ValaCCodeCastExpression* _tmp189_; ValaCCodeCastExpression* _tmp190_; ValaCastExpression* _tmp191_; ValaDataType* _tmp192_; ValaDataType* _tmp193_; _tmp102_ = expr; _tmp103_ = vala_cast_expression_get_is_silent_cast (_tmp102_); _tmp104_ = _tmp103_; if (_tmp104_) { ValaCastExpression* _tmp105_; ValaCastExpression* _tmp106_; ValaSourceReference* _tmp107_; ValaSourceReference* _tmp108_; _tmp105_ = expr; vala_code_node_set_error ((ValaCodeNode*) _tmp105_, TRUE); _tmp106_ = expr; _tmp107_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp106_); _tmp108_ = _tmp107_; vala_report_error (_tmp108_, "Operation not supported for this type"); _vala_code_node_unref0 (iface); _vala_code_node_unref0 (cl); _vala_target_value_unref0 (variantcast); _vala_ccode_node_unref0 (valuecast); return; } _tmp109_ = expr; _tmp110_ = vala_cast_expression_get_type_reference (_tmp109_); _tmp111_ = _tmp110_; _tmp112_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp111_) ? ((ValaArrayType*) _tmp111_) : NULL); array_type = _tmp112_; _tmp114_ = array_type; if (_tmp114_ != NULL) { ValaCastExpression* _tmp115_; ValaExpression* _tmp116_; ValaExpression* _tmp117_; ValaDataType* _tmp118_; ValaDataType* _tmp119_; _tmp115_ = expr; _tmp116_ = vala_cast_expression_get_inner (_tmp115_); _tmp117_ = _tmp116_; _tmp118_ = vala_expression_get_value_type (_tmp117_); _tmp119_ = _tmp118_; _tmp113_ = VALA_IS_ARRAY_TYPE (_tmp119_); } else { _tmp113_ = FALSE; } _tmp120_ = _tmp113_; if (_tmp120_) { { gint dim; dim = 1; { gboolean _tmp121_; _tmp121_ = TRUE; while (TRUE) { gboolean _tmp122_; gint _tmp124_; ValaArrayType* _tmp125_; gint _tmp126_; gint _tmp127_; ValaCastExpression* _tmp128_; ValaCastExpression* _tmp129_; ValaExpression* _tmp130_; ValaExpression* _tmp131_; gint _tmp132_; ValaCCodeExpression* _tmp133_ = NULL; ValaCCodeExpression* _tmp134_; _tmp122_ = _tmp121_; if (!_tmp122_) { gint _tmp123_; _tmp123_ = dim; dim = _tmp123_ + 1; } _tmp121_ = FALSE; _tmp124_ = dim; _tmp125_ = array_type; _tmp126_ = vala_array_type_get_rank (_tmp125_); _tmp127_ = _tmp126_; if (!(_tmp124_ <= _tmp127_)) { break; } _tmp128_ = expr; _tmp129_ = expr; _tmp130_ = vala_cast_expression_get_inner (_tmp129_); _tmp131_ = _tmp130_; _tmp132_ = dim; _tmp133_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp131_, _tmp132_); _tmp134_ = _tmp133_; vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp128_, _tmp134_); _vala_ccode_node_unref0 (_tmp134_); } } } } else { ValaArrayType* _tmp135_; _tmp135_ = array_type; if (_tmp135_ != NULL) { { gint dim; dim = 1; { gboolean _tmp136_; _tmp136_ = TRUE; while (TRUE) { gboolean _tmp137_; gint _tmp139_; ValaArrayType* _tmp140_; gint _tmp141_; gint _tmp142_; ValaCastExpression* _tmp143_; ValaCCodeConstant* _tmp144_; ValaCCodeConstant* _tmp145_; _tmp137_ = _tmp136_; if (!_tmp137_) { gint _tmp138_; _tmp138_ = dim; dim = _tmp138_ + 1; } _tmp136_ = FALSE; _tmp139_ = dim; _tmp140_ = array_type; _tmp141_ = vala_array_type_get_rank (_tmp140_); _tmp142_ = _tmp141_; if (!(_tmp139_ <= _tmp142_)) { break; } _tmp143_ = expr; _tmp144_ = vala_ccode_constant_new ("-1"); _tmp145_ = _tmp144_; vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp143_, (ValaCCodeExpression*) _tmp145_); _vala_ccode_node_unref0 (_tmp145_); } } } } } _tmp146_ = expr; _tmp147_ = vala_cast_expression_get_inner (_tmp146_); _tmp148_ = _tmp147_; _tmp149_ = vala_ccode_base_module_get_cvalue (self, _tmp148_); innercexpr = _tmp149_; _tmp153_ = expr; _tmp154_ = vala_cast_expression_get_type_reference (_tmp153_); _tmp155_ = _tmp154_; _tmp156_ = vala_data_type_get_data_type (_tmp155_); _tmp157_ = _tmp156_; if (VALA_IS_STRUCT (_tmp157_)) { ValaCastExpression* _tmp158_; ValaDataType* _tmp159_; ValaDataType* _tmp160_; gboolean _tmp161_; gboolean _tmp162_; _tmp158_ = expr; _tmp159_ = vala_cast_expression_get_type_reference (_tmp158_); _tmp160_ = _tmp159_; _tmp161_ = vala_data_type_get_nullable (_tmp160_); _tmp162_ = _tmp161_; _tmp152_ = !_tmp162_; } else { _tmp152_ = FALSE; } _tmp163_ = _tmp152_; if (_tmp163_) { ValaCastExpression* _tmp164_; ValaExpression* _tmp165_; ValaExpression* _tmp166_; ValaDataType* _tmp167_; ValaDataType* _tmp168_; ValaTypeSymbol* _tmp169_; ValaTypeSymbol* _tmp170_; _tmp164_ = expr; _tmp165_ = vala_cast_expression_get_inner (_tmp164_); _tmp166_ = _tmp165_; _tmp167_ = vala_expression_get_value_type (_tmp166_); _tmp168_ = _tmp167_; _tmp169_ = vala_data_type_get_data_type (_tmp168_); _tmp170_ = _tmp169_; _tmp151_ = VALA_IS_STRUCT (_tmp170_); } else { _tmp151_ = FALSE; } _tmp171_ = _tmp151_; if (_tmp171_) { ValaCastExpression* _tmp172_; ValaExpression* _tmp173_; ValaExpression* _tmp174_; ValaDataType* _tmp175_; ValaDataType* _tmp176_; gboolean _tmp177_; gboolean _tmp178_; _tmp172_ = expr; _tmp173_ = vala_cast_expression_get_inner (_tmp172_); _tmp174_ = _tmp173_; _tmp175_ = vala_expression_get_value_type (_tmp174_); _tmp176_ = _tmp175_; _tmp177_ = vala_data_type_get_nullable (_tmp176_); _tmp178_ = _tmp177_; _tmp150_ = _tmp178_; } else { _tmp150_ = FALSE; } _tmp179_ = _tmp150_; if (_tmp179_) { ValaCCodeExpression* _tmp180_; ValaCCodeUnaryExpression* _tmp181_; _tmp180_ = innercexpr; _tmp181_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp180_); _vala_ccode_node_unref0 (innercexpr); innercexpr = (ValaCCodeExpression*) _tmp181_; } _tmp182_ = expr; _tmp183_ = innercexpr; _tmp184_ = expr; _tmp185_ = vala_cast_expression_get_type_reference (_tmp184_); _tmp186_ = _tmp185_; _tmp187_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp186_); _tmp188_ = _tmp187_; _tmp189_ = vala_ccode_cast_expression_new (_tmp183_, _tmp188_); _tmp190_ = _tmp189_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp182_, (ValaCCodeExpression*) _tmp190_); _vala_ccode_node_unref0 (_tmp190_); _g_free0 (_tmp188_); _tmp191_ = expr; _tmp192_ = vala_cast_expression_get_type_reference (_tmp191_); _tmp193_ = _tmp192_; if (VALA_IS_DELEGATE_TYPE (_tmp193_)) { ValaCastExpression* _tmp194_; ValaExpression* _tmp195_; ValaExpression* _tmp196_; ValaCCodeExpression* _tmp197_ = NULL; ValaCCodeExpression* _tmp198_; gboolean _tmp199_; ValaCastExpression* _tmp209_; ValaExpression* _tmp210_; ValaExpression* _tmp211_; ValaCCodeExpression* _tmp212_ = NULL; ValaCCodeExpression* _tmp213_; gboolean _tmp214_; _tmp194_ = expr; _tmp195_ = vala_cast_expression_get_inner (_tmp194_); _tmp196_ = _tmp195_; _tmp197_ = vala_ccode_base_module_get_delegate_target (self, _tmp196_); _tmp198_ = _tmp197_; _tmp199_ = _tmp198_ != NULL; _vala_ccode_node_unref0 (_tmp198_); if (_tmp199_) { ValaCastExpression* _tmp200_; ValaCastExpression* _tmp201_; ValaExpression* _tmp202_; ValaExpression* _tmp203_; ValaCCodeExpression* _tmp204_ = NULL; ValaCCodeExpression* _tmp205_; _tmp200_ = expr; _tmp201_ = expr; _tmp202_ = vala_cast_expression_get_inner (_tmp201_); _tmp203_ = _tmp202_; _tmp204_ = vala_ccode_base_module_get_delegate_target (self, _tmp203_); _tmp205_ = _tmp204_; vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp200_, _tmp205_); _vala_ccode_node_unref0 (_tmp205_); } else { ValaCastExpression* _tmp206_; ValaCCodeConstant* _tmp207_; ValaCCodeConstant* _tmp208_; _tmp206_ = expr; _tmp207_ = vala_ccode_constant_new ("NULL"); _tmp208_ = _tmp207_; vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp206_, (ValaCCodeExpression*) _tmp208_); _vala_ccode_node_unref0 (_tmp208_); } _tmp209_ = expr; _tmp210_ = vala_cast_expression_get_inner (_tmp209_); _tmp211_ = _tmp210_; _tmp212_ = vala_ccode_base_module_get_delegate_target_destroy_notify (self, _tmp211_); _tmp213_ = _tmp212_; _tmp214_ = _tmp213_ != NULL; _vala_ccode_node_unref0 (_tmp213_); if (_tmp214_) { ValaCastExpression* _tmp215_; ValaCastExpression* _tmp216_; ValaExpression* _tmp217_; ValaExpression* _tmp218_; ValaCCodeExpression* _tmp219_ = NULL; ValaCCodeExpression* _tmp220_; _tmp215_ = expr; _tmp216_ = expr; _tmp217_ = vala_cast_expression_get_inner (_tmp216_); _tmp218_ = _tmp217_; _tmp219_ = vala_ccode_base_module_get_delegate_target_destroy_notify (self, _tmp218_); _tmp220_ = _tmp219_; vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp215_, _tmp220_); _vala_ccode_node_unref0 (_tmp220_); } else { ValaCastExpression* _tmp221_; ValaCCodeConstant* _tmp222_; ValaCCodeConstant* _tmp223_; _tmp221_ = expr; _tmp222_ = vala_ccode_constant_new ("NULL"); _tmp223_ = _tmp222_; vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp221_, (ValaCCodeExpression*) _tmp223_); _vala_ccode_node_unref0 (_tmp223_); } } _vala_ccode_node_unref0 (innercexpr); _vala_code_node_unref0 (array_type); } _vala_code_node_unref0 (iface); _vala_code_node_unref0 (cl); _vala_target_value_unref0 (variantcast); _vala_ccode_node_unref0 (valuecast); } static void vala_ccode_base_module_real_visit_named_argument (ValaCodeVisitor* base, ValaNamedArgument* expr) { ValaCCodeBaseModule * self; ValaNamedArgument* _tmp0_; ValaNamedArgument* _tmp1_; ValaExpression* _tmp2_; ValaExpression* _tmp3_; ValaCCodeExpression* _tmp4_ = NULL; ValaCCodeExpression* _tmp5_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = expr; _tmp2_ = vala_named_argument_get_inner (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_base_module_get_cvalue (self, _tmp3_); _tmp5_ = _tmp4_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, _tmp5_); _vala_ccode_node_unref0 (_tmp5_); } static void vala_ccode_base_module_real_visit_pointer_indirection (ValaCodeVisitor* base, ValaPointerIndirection* expr) { ValaCCodeBaseModule * self; ValaPointerIndirection* _tmp0_; ValaPointerIndirection* _tmp1_; ValaExpression* _tmp2_; ValaExpression* _tmp3_; ValaCCodeExpression* _tmp4_ = NULL; ValaCCodeExpression* _tmp5_; ValaCCodeUnaryExpression* _tmp6_; ValaCCodeUnaryExpression* _tmp7_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = expr; _tmp2_ = vala_pointer_indirection_get_inner (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_base_module_get_cvalue (self, _tmp3_); _tmp5_ = _tmp4_; _tmp6_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp5_); _tmp7_ = _tmp6_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, (ValaCCodeExpression*) _tmp7_); _vala_ccode_node_unref0 (_tmp7_); _vala_ccode_node_unref0 (_tmp5_); } static void vala_ccode_base_module_real_visit_addressof_expression (ValaCodeVisitor* base, ValaAddressofExpression* expr) { ValaCCodeBaseModule * self; ValaAddressofExpression* _tmp0_; ValaAddressofExpression* _tmp1_; ValaExpression* _tmp2_; ValaExpression* _tmp3_; ValaCCodeExpression* _tmp4_ = NULL; ValaCCodeExpression* _tmp5_; ValaCCodeUnaryExpression* _tmp6_; ValaCCodeUnaryExpression* _tmp7_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = expr; _tmp2_ = vala_addressof_expression_get_inner (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_base_module_get_cvalue (self, _tmp3_); _tmp5_ = _tmp4_; _tmp6_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp5_); _tmp7_ = _tmp6_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, (ValaCCodeExpression*) _tmp7_); _vala_ccode_node_unref0 (_tmp7_); _vala_ccode_node_unref0 (_tmp5_); } static void vala_ccode_base_module_real_visit_reference_transfer_expression (ValaCodeVisitor* base, ValaReferenceTransferExpression* expr) { ValaCCodeBaseModule * self; ValaReferenceTransferExpression* _tmp0_; ValaReferenceTransferExpression* _tmp1_; ValaExpression* _tmp2_; ValaExpression* _tmp3_; ValaTargetValue* _tmp4_; ValaTargetValue* _tmp5_; ValaReferenceTransferExpression* _tmp6_; ValaTargetValue* _tmp7_ = NULL; ValaTargetValue* _tmp8_; gboolean _tmp9_ = FALSE; ValaReferenceTransferExpression* _tmp10_; ValaExpression* _tmp11_; ValaExpression* _tmp12_; ValaDataType* _tmp13_; ValaDataType* _tmp14_; gboolean _tmp22_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = expr; _tmp2_ = vala_reference_transfer_expression_get_inner (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_expression_get_target_value (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = expr; _tmp7_ = vala_ccode_base_module_store_temp_value (self, _tmp5_, (ValaCodeNode*) _tmp6_, NULL); _tmp8_ = _tmp7_; vala_expression_set_target_value ((ValaExpression*) _tmp0_, _tmp8_); _vala_target_value_unref0 (_tmp8_); _tmp10_ = expr; _tmp11_ = vala_reference_transfer_expression_get_inner (_tmp10_); _tmp12_ = _tmp11_; _tmp13_ = vala_expression_get_value_type (_tmp12_); _tmp14_ = _tmp13_; if (VALA_IS_STRUCT_VALUE_TYPE (_tmp14_)) { ValaReferenceTransferExpression* _tmp15_; ValaExpression* _tmp16_; ValaExpression* _tmp17_; ValaDataType* _tmp18_; ValaDataType* _tmp19_; gboolean _tmp20_; gboolean _tmp21_; _tmp15_ = expr; _tmp16_ = vala_reference_transfer_expression_get_inner (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = vala_expression_get_value_type (_tmp17_); _tmp19_ = _tmp18_; _tmp20_ = vala_data_type_get_nullable (_tmp19_); _tmp21_ = _tmp20_; _tmp9_ = !_tmp21_; } else { _tmp9_ = FALSE; } _tmp22_ = _tmp9_; if (_tmp22_) { ValaCCodeFile* _tmp23_; ValaCCodeIdentifier* _tmp24_; ValaCCodeIdentifier* _tmp25_; ValaCCodeFunctionCall* _tmp26_; ValaCCodeFunctionCall* _tmp27_; ValaCCodeFunctionCall* creation_call; ValaCCodeFunctionCall* _tmp28_; ValaReferenceTransferExpression* _tmp29_; ValaExpression* _tmp30_; ValaExpression* _tmp31_; ValaCCodeExpression* _tmp32_ = NULL; ValaCCodeExpression* _tmp33_; ValaCCodeUnaryExpression* _tmp34_; ValaCCodeUnaryExpression* _tmp35_; ValaCCodeFunctionCall* _tmp36_; ValaCCodeConstant* _tmp37_; ValaCCodeConstant* _tmp38_; ValaCCodeFunctionCall* _tmp39_; ValaReferenceTransferExpression* _tmp40_; ValaExpression* _tmp41_; ValaExpression* _tmp42_; ValaDataType* _tmp43_; ValaDataType* _tmp44_; gchar* _tmp45_ = NULL; gchar* _tmp46_; gchar* _tmp47_ = NULL; gchar* _tmp48_; ValaCCodeIdentifier* _tmp49_; ValaCCodeIdentifier* _tmp50_; ValaCCodeFunction* _tmp51_; ValaCCodeFunction* _tmp52_; ValaCCodeFunctionCall* _tmp53_; _tmp23_ = self->cfile; vala_ccode_file_add_include (_tmp23_, "string.h", FALSE); _tmp24_ = vala_ccode_identifier_new ("memset"); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp25_); _tmp27_ = _tmp26_; _vala_ccode_node_unref0 (_tmp25_); creation_call = _tmp27_; _tmp28_ = creation_call; _tmp29_ = expr; _tmp30_ = vala_reference_transfer_expression_get_inner (_tmp29_); _tmp31_ = _tmp30_; _tmp32_ = vala_ccode_base_module_get_cvalue (self, _tmp31_); _tmp33_ = _tmp32_; _tmp34_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp33_); _tmp35_ = _tmp34_; vala_ccode_function_call_add_argument (_tmp28_, (ValaCCodeExpression*) _tmp35_); _vala_ccode_node_unref0 (_tmp35_); _vala_ccode_node_unref0 (_tmp33_); _tmp36_ = creation_call; _tmp37_ = vala_ccode_constant_new ("0"); _tmp38_ = _tmp37_; vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp38_); _vala_ccode_node_unref0 (_tmp38_); _tmp39_ = creation_call; _tmp40_ = expr; _tmp41_ = vala_reference_transfer_expression_get_inner (_tmp40_); _tmp42_ = _tmp41_; _tmp43_ = vala_expression_get_value_type (_tmp42_); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp44_); _tmp46_ = _tmp45_; _tmp47_ = g_strdup_printf ("sizeof (%s)", _tmp46_); _tmp48_ = _tmp47_; _tmp49_ = vala_ccode_identifier_new (_tmp48_); _tmp50_ = _tmp49_; vala_ccode_function_call_add_argument (_tmp39_, (ValaCCodeExpression*) _tmp50_); _vala_ccode_node_unref0 (_tmp50_); _g_free0 (_tmp48_); _g_free0 (_tmp46_); _tmp51_ = vala_ccode_base_module_get_ccode (self); _tmp52_ = _tmp51_; _tmp53_ = creation_call; vala_ccode_function_add_expression (_tmp52_, (ValaCCodeExpression*) _tmp53_); _vala_ccode_node_unref0 (creation_call); } else { ValaReferenceTransferExpression* _tmp54_; ValaDataType* _tmp55_; ValaDataType* _tmp56_; _tmp54_ = expr; _tmp55_ = vala_expression_get_value_type ((ValaExpression*) _tmp54_); _tmp56_ = _tmp55_; if (VALA_IS_DELEGATE_TYPE (_tmp56_)) { ValaReferenceTransferExpression* _tmp57_; ValaExpression* _tmp58_; ValaExpression* _tmp59_; ValaTargetValue* _tmp60_; ValaTargetValue* _tmp61_; ValaCCodeExpression* _tmp62_ = NULL; ValaCCodeExpression* target_destroy_notify; ValaCCodeExpression* _tmp63_; _tmp57_ = expr; _tmp58_ = vala_reference_transfer_expression_get_inner (_tmp57_); _tmp59_ = _tmp58_; _tmp60_ = vala_expression_get_target_value (_tmp59_); _tmp61_ = _tmp60_; _tmp62_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp61_); target_destroy_notify = _tmp62_; _tmp63_ = target_destroy_notify; if (_tmp63_ != NULL) { ValaCCodeFunction* _tmp64_; ValaCCodeFunction* _tmp65_; ValaCCodeExpression* _tmp66_; ValaCCodeConstant* _tmp67_; ValaCCodeConstant* _tmp68_; _tmp64_ = vala_ccode_base_module_get_ccode (self); _tmp65_ = _tmp64_; _tmp66_ = target_destroy_notify; _tmp67_ = vala_ccode_constant_new ("NULL"); _tmp68_ = _tmp67_; vala_ccode_function_add_assignment (_tmp65_, _tmp66_, (ValaCCodeExpression*) _tmp68_); _vala_ccode_node_unref0 (_tmp68_); } _vala_ccode_node_unref0 (target_destroy_notify); } else { ValaCCodeFunction* _tmp69_; ValaCCodeFunction* _tmp70_; ValaReferenceTransferExpression* _tmp71_; ValaExpression* _tmp72_; ValaExpression* _tmp73_; ValaCCodeExpression* _tmp74_ = NULL; ValaCCodeExpression* _tmp75_; ValaCCodeConstant* _tmp76_; ValaCCodeConstant* _tmp77_; _tmp69_ = vala_ccode_base_module_get_ccode (self); _tmp70_ = _tmp69_; _tmp71_ = expr; _tmp72_ = vala_reference_transfer_expression_get_inner (_tmp71_); _tmp73_ = _tmp72_; _tmp74_ = vala_ccode_base_module_get_cvalue (self, _tmp73_); _tmp75_ = _tmp74_; _tmp76_ = vala_ccode_constant_new ("NULL"); _tmp77_ = _tmp76_; vala_ccode_function_add_assignment (_tmp70_, _tmp75_, (ValaCCodeExpression*) _tmp77_); _vala_ccode_node_unref0 (_tmp77_); _vala_ccode_node_unref0 (_tmp75_); } } } static void vala_ccode_base_module_real_visit_binary_expression (ValaCodeVisitor* base, ValaBinaryExpression* expr) { ValaCCodeBaseModule * self; ValaBinaryExpression* _tmp0_; ValaExpression* _tmp1_; ValaExpression* _tmp2_; ValaCCodeExpression* _tmp3_ = NULL; ValaCCodeExpression* cleft; ValaBinaryExpression* _tmp4_; ValaExpression* _tmp5_; ValaExpression* _tmp6_; ValaCCodeExpression* _tmp7_ = NULL; ValaCCodeExpression* cright; ValaCCodeExpression* left_chain; ValaBinaryExpression* _tmp8_; gboolean _tmp9_; ValaCCodeBinaryOperator op = 0; ValaBinaryExpression* _tmp51_; ValaBinaryOperator _tmp52_; ValaBinaryOperator _tmp53_; gboolean _tmp185_ = FALSE; ValaBinaryExpression* _tmp186_; ValaBinaryOperator _tmp187_; ValaBinaryOperator _tmp188_; gboolean _tmp192_; gboolean _tmp273_ = FALSE; gboolean _tmp274_ = FALSE; gboolean _tmp275_ = FALSE; ValaBinaryExpression* _tmp276_; ValaExpression* _tmp277_; ValaExpression* _tmp278_; ValaDataType* _tmp279_; ValaDataType* _tmp280_; gboolean _tmp288_; gboolean _tmp294_; gboolean _tmp302_; ValaBinaryExpression* _tmp453_; ValaCCodeBinaryOperator _tmp454_; ValaCCodeExpression* _tmp455_; ValaCCodeExpression* _tmp456_; ValaCCodeBinaryExpression* _tmp457_; ValaCCodeBinaryExpression* _tmp458_; ValaCCodeExpression* _tmp459_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_binary_expression_get_left (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_cvalue (self, _tmp2_); cleft = _tmp3_; _tmp4_ = expr; _tmp5_ = vala_binary_expression_get_right (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_ccode_base_module_get_cvalue (self, _tmp6_); cright = _tmp7_; left_chain = NULL; _tmp8_ = expr; _tmp9_ = _tmp8_->chained; if (_tmp9_) { ValaBinaryExpression* _tmp10_; ValaExpression* _tmp11_; ValaExpression* _tmp12_; ValaBinaryExpression* _tmp13_; ValaBinaryExpression* lbe; ValaBinaryExpression* _tmp14_; ValaExpression* _tmp15_; ValaExpression* _tmp16_; ValaDataType* _tmp17_; ValaDataType* _tmp18_; ValaLocalVariable* _tmp19_ = NULL; ValaLocalVariable* temp_decl; ValaLocalVariable* _tmp20_; ValaLocalVariable* _tmp21_; const gchar* _tmp22_; const gchar* _tmp23_; ValaCCodeExpression* _tmp24_ = NULL; ValaCCodeExpression* cvar; ValaBinaryExpression* _tmp25_; ValaCCodeExpression* _tmp26_ = NULL; ValaCCodeBinaryExpression* clbe; ValaBinaryExpression* _tmp27_; gboolean _tmp28_; ValaCCodeFunction* _tmp33_; ValaCCodeFunction* _tmp34_; ValaCCodeExpression* _tmp35_; ValaBinaryExpression* _tmp36_; ValaExpression* _tmp37_; ValaExpression* _tmp38_; ValaCCodeExpression* _tmp39_ = NULL; ValaCCodeExpression* _tmp40_; ValaCCodeBinaryExpression* _tmp41_; ValaLocalVariable* _tmp42_; const gchar* _tmp43_; const gchar* _tmp44_; ValaCCodeExpression* _tmp45_ = NULL; ValaCCodeExpression* _tmp46_; ValaCCodeExpression* _tmp47_; ValaCCodeExpression* _tmp48_; ValaCCodeExpression* _tmp49_; ValaCCodeExpression* _tmp50_; _tmp10_ = expr; _tmp11_ = vala_binary_expression_get_left (_tmp10_); _tmp12_ = _tmp11_; _tmp13_ = _vala_code_node_ref0 (VALA_BINARY_EXPRESSION (_tmp12_)); lbe = _tmp13_; _tmp14_ = lbe; _tmp15_ = vala_binary_expression_get_right (_tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_expression_get_target_type (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = vala_ccode_base_module_get_temp_variable (self, _tmp18_, TRUE, NULL, FALSE); temp_decl = _tmp19_; _tmp20_ = temp_decl; vala_ccode_base_module_emit_temp_var (self, _tmp20_); _tmp21_ = temp_decl; _tmp22_ = vala_symbol_get_name ((ValaSymbol*) _tmp21_); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp23_); cvar = _tmp24_; _tmp25_ = lbe; _tmp26_ = vala_ccode_base_module_get_cvalue (self, (ValaExpression*) _tmp25_); clbe = VALA_CCODE_BINARY_EXPRESSION (_tmp26_); _tmp27_ = lbe; _tmp28_ = _tmp27_->chained; if (_tmp28_) { ValaCCodeBinaryExpression* _tmp29_; ValaCCodeExpression* _tmp30_; ValaCCodeExpression* _tmp31_; ValaCCodeBinaryExpression* _tmp32_; _tmp29_ = clbe; _tmp30_ = vala_ccode_binary_expression_get_right (_tmp29_); _tmp31_ = _tmp30_; _tmp32_ = _vala_ccode_node_ref0 (VALA_CCODE_BINARY_EXPRESSION (_tmp31_)); _vala_ccode_node_unref0 (clbe); clbe = _tmp32_; } _tmp33_ = vala_ccode_base_module_get_ccode (self); _tmp34_ = _tmp33_; _tmp35_ = cvar; _tmp36_ = lbe; _tmp37_ = vala_binary_expression_get_right (_tmp36_); _tmp38_ = _tmp37_; _tmp39_ = vala_ccode_base_module_get_cvalue (self, _tmp38_); _tmp40_ = _tmp39_; vala_ccode_function_add_assignment (_tmp34_, _tmp35_, _tmp40_); _vala_ccode_node_unref0 (_tmp40_); _tmp41_ = clbe; _tmp42_ = temp_decl; _tmp43_ = vala_symbol_get_name ((ValaSymbol*) _tmp42_); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp44_); _tmp46_ = _tmp45_; vala_ccode_binary_expression_set_right (_tmp41_, _tmp46_); _vala_ccode_node_unref0 (_tmp46_); _tmp47_ = cleft; _tmp48_ = _vala_ccode_node_ref0 (_tmp47_); _vala_ccode_node_unref0 (left_chain); left_chain = _tmp48_; _tmp49_ = cvar; _tmp50_ = _vala_ccode_node_ref0 (_tmp49_); _vala_ccode_node_unref0 (cleft); cleft = _tmp50_; _vala_ccode_node_unref0 (clbe); _vala_ccode_node_unref0 (cvar); _vala_code_node_unref0 (temp_decl); _vala_code_node_unref0 (lbe); } _tmp51_ = expr; _tmp52_ = vala_binary_expression_get_operator (_tmp51_); _tmp53_ = _tmp52_; if (_tmp53_ == VALA_BINARY_OPERATOR_PLUS) { op = VALA_CCODE_BINARY_OPERATOR_PLUS; } else { ValaBinaryExpression* _tmp54_; ValaBinaryOperator _tmp55_; ValaBinaryOperator _tmp56_; _tmp54_ = expr; _tmp55_ = vala_binary_expression_get_operator (_tmp54_); _tmp56_ = _tmp55_; if (_tmp56_ == VALA_BINARY_OPERATOR_MINUS) { op = VALA_CCODE_BINARY_OPERATOR_MINUS; } else { ValaBinaryExpression* _tmp57_; ValaBinaryOperator _tmp58_; ValaBinaryOperator _tmp59_; _tmp57_ = expr; _tmp58_ = vala_binary_expression_get_operator (_tmp57_); _tmp59_ = _tmp58_; if (_tmp59_ == VALA_BINARY_OPERATOR_MUL) { op = VALA_CCODE_BINARY_OPERATOR_MUL; } else { ValaBinaryExpression* _tmp60_; ValaBinaryOperator _tmp61_; ValaBinaryOperator _tmp62_; _tmp60_ = expr; _tmp61_ = vala_binary_expression_get_operator (_tmp60_); _tmp62_ = _tmp61_; if (_tmp62_ == VALA_BINARY_OPERATOR_DIV) { op = VALA_CCODE_BINARY_OPERATOR_DIV; } else { ValaBinaryExpression* _tmp63_; ValaBinaryOperator _tmp64_; ValaBinaryOperator _tmp65_; _tmp63_ = expr; _tmp64_ = vala_binary_expression_get_operator (_tmp63_); _tmp65_ = _tmp64_; if (_tmp65_ == VALA_BINARY_OPERATOR_MOD) { ValaBinaryExpression* _tmp66_; ValaDataType* _tmp67_; ValaDataType* _tmp68_; ValaDataType* _tmp69_; gboolean _tmp70_ = FALSE; _tmp66_ = expr; _tmp67_ = vala_expression_get_value_type ((ValaExpression*) _tmp66_); _tmp68_ = _tmp67_; _tmp69_ = self->double_type; _tmp70_ = vala_data_type_equals (_tmp68_, _tmp69_); if (_tmp70_) { ValaCCodeFile* _tmp71_; ValaCCodeIdentifier* _tmp72_; ValaCCodeIdentifier* _tmp73_; ValaCCodeFunctionCall* _tmp74_; ValaCCodeFunctionCall* _tmp75_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp76_; ValaCCodeExpression* _tmp77_; ValaCCodeFunctionCall* _tmp78_; ValaCCodeExpression* _tmp79_; ValaBinaryExpression* _tmp80_; ValaCCodeFunctionCall* _tmp81_; _tmp71_ = self->cfile; vala_ccode_file_add_include (_tmp71_, "math.h", FALSE); _tmp72_ = vala_ccode_identifier_new ("fmod"); _tmp73_ = _tmp72_; _tmp74_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp73_); _tmp75_ = _tmp74_; _vala_ccode_node_unref0 (_tmp73_); ccall = _tmp75_; _tmp76_ = ccall; _tmp77_ = cleft; vala_ccode_function_call_add_argument (_tmp76_, _tmp77_); _tmp78_ = ccall; _tmp79_ = cright; vala_ccode_function_call_add_argument (_tmp78_, _tmp79_); _tmp80_ = expr; _tmp81_ = ccall; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp80_, (ValaCCodeExpression*) _tmp81_); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (left_chain); _vala_ccode_node_unref0 (cright); _vala_ccode_node_unref0 (cleft); return; } else { ValaBinaryExpression* _tmp82_; ValaDataType* _tmp83_; ValaDataType* _tmp84_; ValaDataType* _tmp85_; gboolean _tmp86_ = FALSE; _tmp82_ = expr; _tmp83_ = vala_expression_get_value_type ((ValaExpression*) _tmp82_); _tmp84_ = _tmp83_; _tmp85_ = self->float_type; _tmp86_ = vala_data_type_equals (_tmp84_, _tmp85_); if (_tmp86_) { ValaCCodeFile* _tmp87_; ValaCCodeIdentifier* _tmp88_; ValaCCodeIdentifier* _tmp89_; ValaCCodeFunctionCall* _tmp90_; ValaCCodeFunctionCall* _tmp91_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp92_; ValaCCodeExpression* _tmp93_; ValaCCodeFunctionCall* _tmp94_; ValaCCodeExpression* _tmp95_; ValaBinaryExpression* _tmp96_; ValaCCodeFunctionCall* _tmp97_; _tmp87_ = self->cfile; vala_ccode_file_add_include (_tmp87_, "math.h", FALSE); _tmp88_ = vala_ccode_identifier_new ("fmodf"); _tmp89_ = _tmp88_; _tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_); _tmp91_ = _tmp90_; _vala_ccode_node_unref0 (_tmp89_); ccall = _tmp91_; _tmp92_ = ccall; _tmp93_ = cleft; vala_ccode_function_call_add_argument (_tmp92_, _tmp93_); _tmp94_ = ccall; _tmp95_ = cright; vala_ccode_function_call_add_argument (_tmp94_, _tmp95_); _tmp96_ = expr; _tmp97_ = ccall; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp96_, (ValaCCodeExpression*) _tmp97_); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (left_chain); _vala_ccode_node_unref0 (cright); _vala_ccode_node_unref0 (cleft); return; } else { op = VALA_CCODE_BINARY_OPERATOR_MOD; } } } else { ValaBinaryExpression* _tmp98_; ValaBinaryOperator _tmp99_; ValaBinaryOperator _tmp100_; _tmp98_ = expr; _tmp99_ = vala_binary_expression_get_operator (_tmp98_); _tmp100_ = _tmp99_; if (_tmp100_ == VALA_BINARY_OPERATOR_SHIFT_LEFT) { op = VALA_CCODE_BINARY_OPERATOR_SHIFT_LEFT; } else { ValaBinaryExpression* _tmp101_; ValaBinaryOperator _tmp102_; ValaBinaryOperator _tmp103_; _tmp101_ = expr; _tmp102_ = vala_binary_expression_get_operator (_tmp101_); _tmp103_ = _tmp102_; if (_tmp103_ == VALA_BINARY_OPERATOR_SHIFT_RIGHT) { op = VALA_CCODE_BINARY_OPERATOR_SHIFT_RIGHT; } else { ValaBinaryExpression* _tmp104_; ValaBinaryOperator _tmp105_; ValaBinaryOperator _tmp106_; _tmp104_ = expr; _tmp105_ = vala_binary_expression_get_operator (_tmp104_); _tmp106_ = _tmp105_; if (_tmp106_ == VALA_BINARY_OPERATOR_LESS_THAN) { op = VALA_CCODE_BINARY_OPERATOR_LESS_THAN; } else { ValaBinaryExpression* _tmp107_; ValaBinaryOperator _tmp108_; ValaBinaryOperator _tmp109_; _tmp107_ = expr; _tmp108_ = vala_binary_expression_get_operator (_tmp107_); _tmp109_ = _tmp108_; if (_tmp109_ == VALA_BINARY_OPERATOR_GREATER_THAN) { op = VALA_CCODE_BINARY_OPERATOR_GREATER_THAN; } else { ValaBinaryExpression* _tmp110_; ValaBinaryOperator _tmp111_; ValaBinaryOperator _tmp112_; _tmp110_ = expr; _tmp111_ = vala_binary_expression_get_operator (_tmp110_); _tmp112_ = _tmp111_; if (_tmp112_ == VALA_BINARY_OPERATOR_LESS_THAN_OR_EQUAL) { op = VALA_CCODE_BINARY_OPERATOR_LESS_THAN_OR_EQUAL; } else { ValaBinaryExpression* _tmp113_; ValaBinaryOperator _tmp114_; ValaBinaryOperator _tmp115_; _tmp113_ = expr; _tmp114_ = vala_binary_expression_get_operator (_tmp113_); _tmp115_ = _tmp114_; if (_tmp115_ == VALA_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL) { op = VALA_CCODE_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL; } else { ValaBinaryExpression* _tmp116_; ValaBinaryOperator _tmp117_; ValaBinaryOperator _tmp118_; _tmp116_ = expr; _tmp117_ = vala_binary_expression_get_operator (_tmp116_); _tmp118_ = _tmp117_; if (_tmp118_ == VALA_BINARY_OPERATOR_EQUALITY) { op = VALA_CCODE_BINARY_OPERATOR_EQUALITY; } else { ValaBinaryExpression* _tmp119_; ValaBinaryOperator _tmp120_; ValaBinaryOperator _tmp121_; _tmp119_ = expr; _tmp120_ = vala_binary_expression_get_operator (_tmp119_); _tmp121_ = _tmp120_; if (_tmp121_ == VALA_BINARY_OPERATOR_INEQUALITY) { op = VALA_CCODE_BINARY_OPERATOR_INEQUALITY; } else { ValaBinaryExpression* _tmp122_; ValaBinaryOperator _tmp123_; ValaBinaryOperator _tmp124_; _tmp122_ = expr; _tmp123_ = vala_binary_expression_get_operator (_tmp122_); _tmp124_ = _tmp123_; if (_tmp124_ == VALA_BINARY_OPERATOR_BITWISE_AND) { op = VALA_CCODE_BINARY_OPERATOR_BITWISE_AND; } else { ValaBinaryExpression* _tmp125_; ValaBinaryOperator _tmp126_; ValaBinaryOperator _tmp127_; _tmp125_ = expr; _tmp126_ = vala_binary_expression_get_operator (_tmp125_); _tmp127_ = _tmp126_; if (_tmp127_ == VALA_BINARY_OPERATOR_BITWISE_OR) { op = VALA_CCODE_BINARY_OPERATOR_BITWISE_OR; } else { ValaBinaryExpression* _tmp128_; ValaBinaryOperator _tmp129_; ValaBinaryOperator _tmp130_; _tmp128_ = expr; _tmp129_ = vala_binary_expression_get_operator (_tmp128_); _tmp130_ = _tmp129_; if (_tmp130_ == VALA_BINARY_OPERATOR_BITWISE_XOR) { op = VALA_CCODE_BINARY_OPERATOR_BITWISE_XOR; } else { ValaBinaryExpression* _tmp131_; ValaBinaryOperator _tmp132_; ValaBinaryOperator _tmp133_; _tmp131_ = expr; _tmp132_ = vala_binary_expression_get_operator (_tmp131_); _tmp133_ = _tmp132_; if (_tmp133_ == VALA_BINARY_OPERATOR_AND) { op = VALA_CCODE_BINARY_OPERATOR_AND; } else { ValaBinaryExpression* _tmp134_; ValaBinaryOperator _tmp135_; ValaBinaryOperator _tmp136_; _tmp134_ = expr; _tmp135_ = vala_binary_expression_get_operator (_tmp134_); _tmp136_ = _tmp135_; if (_tmp136_ == VALA_BINARY_OPERATOR_OR) { op = VALA_CCODE_BINARY_OPERATOR_OR; } else { ValaBinaryExpression* _tmp137_; ValaBinaryOperator _tmp138_; ValaBinaryOperator _tmp139_; _tmp137_ = expr; _tmp138_ = vala_binary_expression_get_operator (_tmp137_); _tmp139_ = _tmp138_; if (_tmp139_ == VALA_BINARY_OPERATOR_IN) { ValaBinaryExpression* _tmp140_; ValaExpression* _tmp141_; ValaExpression* _tmp142_; ValaDataType* _tmp143_; ValaDataType* _tmp144_; _tmp140_ = expr; _tmp141_ = vala_binary_expression_get_right (_tmp140_); _tmp142_ = _tmp141_; _tmp143_ = vala_expression_get_value_type (_tmp142_); _tmp144_ = _tmp143_; if (VALA_IS_ARRAY_TYPE (_tmp144_)) { ValaBinaryExpression* _tmp145_; ValaExpression* _tmp146_; ValaExpression* _tmp147_; ValaDataType* _tmp148_; ValaDataType* _tmp149_; ValaArrayType* _tmp150_; ValaArrayType* array_type; ValaArrayType* _tmp151_; gchar* _tmp152_ = NULL; gchar* _tmp153_; ValaCCodeIdentifier* _tmp154_; ValaCCodeIdentifier* _tmp155_; ValaCCodeFunctionCall* _tmp156_; ValaCCodeFunctionCall* _tmp157_; ValaCCodeFunctionCall* node; ValaCCodeFunctionCall* _tmp158_; ValaCCodeExpression* _tmp159_; ValaCCodeFunctionCall* _tmp160_; ValaBinaryExpression* _tmp161_; ValaExpression* _tmp162_; ValaExpression* _tmp163_; ValaCCodeExpression* _tmp164_ = NULL; ValaCCodeExpression* _tmp165_; ValaArrayType* _tmp166_; ValaDataType* _tmp167_; ValaDataType* _tmp168_; ValaBinaryExpression* _tmp175_; ValaCCodeFunctionCall* _tmp176_; _tmp145_ = expr; _tmp146_ = vala_binary_expression_get_right (_tmp145_); _tmp147_ = _tmp146_; _tmp148_ = vala_expression_get_value_type (_tmp147_); _tmp149_ = _tmp148_; _tmp150_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp149_)); array_type = _tmp150_; _tmp151_ = array_type; _tmp152_ = vala_ccode_base_module_generate_array_contains_wrapper (self, _tmp151_); _tmp153_ = _tmp152_; _tmp154_ = vala_ccode_identifier_new (_tmp153_); _tmp155_ = _tmp154_; _tmp156_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp155_); _tmp157_ = _tmp156_; _vala_ccode_node_unref0 (_tmp155_); _g_free0 (_tmp153_); node = _tmp157_; _tmp158_ = node; _tmp159_ = cright; vala_ccode_function_call_add_argument (_tmp158_, _tmp159_); _tmp160_ = node; _tmp161_ = expr; _tmp162_ = vala_binary_expression_get_right (_tmp161_); _tmp163_ = _tmp162_; _tmp164_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp163_, -1); _tmp165_ = _tmp164_; vala_ccode_function_call_add_argument (_tmp160_, _tmp165_); _vala_ccode_node_unref0 (_tmp165_); _tmp166_ = array_type; _tmp167_ = vala_array_type_get_element_type (_tmp166_); _tmp168_ = _tmp167_; if (VALA_IS_STRUCT_VALUE_TYPE (_tmp168_)) { ValaCCodeFunctionCall* _tmp169_; ValaCCodeExpression* _tmp170_; ValaCCodeUnaryExpression* _tmp171_; ValaCCodeUnaryExpression* _tmp172_; _tmp169_ = node; _tmp170_ = cleft; _tmp171_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp170_); _tmp172_ = _tmp171_; vala_ccode_function_call_add_argument (_tmp169_, (ValaCCodeExpression*) _tmp172_); _vala_ccode_node_unref0 (_tmp172_); } else { ValaCCodeFunctionCall* _tmp173_; ValaCCodeExpression* _tmp174_; _tmp173_ = node; _tmp174_ = cleft; vala_ccode_function_call_add_argument (_tmp173_, _tmp174_); } _tmp175_ = expr; _tmp176_ = node; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp175_, (ValaCCodeExpression*) _tmp176_); _vala_ccode_node_unref0 (node); _vala_code_node_unref0 (array_type); } else { ValaBinaryExpression* _tmp177_; ValaCCodeExpression* _tmp178_; ValaCCodeExpression* _tmp179_; ValaCCodeBinaryExpression* _tmp180_; ValaCCodeBinaryExpression* _tmp181_; ValaCCodeExpression* _tmp182_; ValaCCodeBinaryExpression* _tmp183_; ValaCCodeBinaryExpression* _tmp184_; _tmp177_ = expr; _tmp178_ = cright; _tmp179_ = cleft; _tmp180_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_BITWISE_AND, _tmp178_, _tmp179_); _tmp181_ = _tmp180_; _tmp182_ = cleft; _tmp183_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp181_, _tmp182_); _tmp184_ = _tmp183_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp177_, (ValaCCodeExpression*) _tmp184_); _vala_ccode_node_unref0 (_tmp184_); _vala_ccode_node_unref0 (_tmp181_); } _vala_ccode_node_unref0 (left_chain); _vala_ccode_node_unref0 (cright); _vala_ccode_node_unref0 (cleft); return; } else { g_assert_not_reached (); } } } } } } } } } } } } } } } } } } } _tmp186_ = expr; _tmp187_ = vala_binary_expression_get_operator (_tmp186_); _tmp188_ = _tmp187_; if (_tmp188_ == VALA_BINARY_OPERATOR_EQUALITY) { _tmp185_ = TRUE; } else { ValaBinaryExpression* _tmp189_; ValaBinaryOperator _tmp190_; ValaBinaryOperator _tmp191_; _tmp189_ = expr; _tmp190_ = vala_binary_expression_get_operator (_tmp189_); _tmp191_ = _tmp190_; _tmp185_ = _tmp191_ == VALA_BINARY_OPERATOR_INEQUALITY; } _tmp192_ = _tmp185_; if (_tmp192_) { ValaBinaryExpression* _tmp193_; ValaExpression* _tmp194_; ValaExpression* _tmp195_; ValaDataType* _tmp196_; ValaDataType* _tmp197_; ValaDataType* _tmp198_; ValaDataType* left_type; ValaBinaryExpression* _tmp199_; ValaExpression* _tmp200_; ValaExpression* _tmp201_; ValaDataType* _tmp202_; ValaDataType* _tmp203_; ValaDataType* _tmp204_; ValaDataType* right_type; gboolean _tmp205_ = FALSE; ValaDataType* _tmp206_; gboolean _tmp208_; _tmp193_ = expr; _tmp194_ = vala_binary_expression_get_left (_tmp193_); _tmp195_ = _tmp194_; _tmp196_ = vala_expression_get_target_type (_tmp195_); _tmp197_ = _tmp196_; _tmp198_ = _vala_code_node_ref0 (_tmp197_); left_type = _tmp198_; _tmp199_ = expr; _tmp200_ = vala_binary_expression_get_right (_tmp199_); _tmp201_ = _tmp200_; _tmp202_ = vala_expression_get_target_type (_tmp201_); _tmp203_ = _tmp202_; _tmp204_ = _vala_code_node_ref0 (_tmp203_); right_type = _tmp204_; vala_ccode_base_module_make_comparable_cexpression (self, &left_type, &cleft, &right_type, &cright); _tmp206_ = left_type; if (VALA_IS_STRUCT_VALUE_TYPE (_tmp206_)) { ValaDataType* _tmp207_; _tmp207_ = right_type; _tmp205_ = VALA_IS_STRUCT_VALUE_TYPE (_tmp207_); } else { _tmp205_ = FALSE; } _tmp208_ = _tmp205_; if (_tmp208_) { ValaDataType* _tmp209_; ValaTypeSymbol* _tmp210_; ValaTypeSymbol* _tmp211_; gchar* _tmp212_ = NULL; gchar* equalfunc; const gchar* _tmp213_; ValaCCodeIdentifier* _tmp214_; ValaCCodeIdentifier* _tmp215_; ValaCCodeFunctionCall* _tmp216_; ValaCCodeFunctionCall* _tmp217_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp218_; ValaCCodeExpression* _tmp219_; ValaCCodeFunctionCall* _tmp220_; ValaCCodeExpression* _tmp221_; ValaCCodeFunctionCall* _tmp222_; ValaCCodeExpression* _tmp223_; ValaCCodeConstant* _tmp224_; _tmp209_ = left_type; _tmp210_ = vala_data_type_get_data_type (_tmp209_); _tmp211_ = _tmp210_; _tmp212_ = vala_ccode_base_module_generate_struct_equal_function (self, VALA_IS_STRUCT (VALA_STRUCT (_tmp211_)) ? ((ValaStruct*) VALA_STRUCT (_tmp211_)) : NULL); equalfunc = _tmp212_; _tmp213_ = equalfunc; _tmp214_ = vala_ccode_identifier_new (_tmp213_); _tmp215_ = _tmp214_; _tmp216_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp215_); _tmp217_ = _tmp216_; _vala_ccode_node_unref0 (_tmp215_); ccall = _tmp217_; _tmp218_ = ccall; _tmp219_ = cleft; vala_ccode_function_call_add_argument (_tmp218_, _tmp219_); _tmp220_ = ccall; _tmp221_ = cright; vala_ccode_function_call_add_argument (_tmp220_, _tmp221_); _tmp222_ = ccall; _tmp223_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp222_); _vala_ccode_node_unref0 (cleft); cleft = _tmp223_; _tmp224_ = vala_ccode_constant_new ("TRUE"); _vala_ccode_node_unref0 (cright); cright = (ValaCCodeExpression*) _tmp224_; _vala_ccode_node_unref0 (ccall); _g_free0 (equalfunc); } else { gboolean _tmp225_ = FALSE; gboolean _tmp226_ = FALSE; gboolean _tmp227_ = FALSE; gboolean _tmp228_ = FALSE; gboolean _tmp229_ = FALSE; gboolean _tmp230_ = FALSE; ValaDataType* _tmp231_; gboolean _tmp233_; gboolean _tmp235_; gboolean _tmp237_; gboolean _tmp241_; gboolean _tmp252_; gboolean _tmp256_; _tmp231_ = left_type; if (VALA_IS_INTEGER_TYPE (_tmp231_)) { _tmp230_ = TRUE; } else { ValaDataType* _tmp232_; _tmp232_ = left_type; _tmp230_ = VALA_IS_FLOATING_TYPE (_tmp232_); } _tmp233_ = _tmp230_; if (_tmp233_) { _tmp229_ = TRUE; } else { ValaDataType* _tmp234_; _tmp234_ = left_type; _tmp229_ = VALA_IS_BOOLEAN_TYPE (_tmp234_); } _tmp235_ = _tmp229_; if (_tmp235_) { _tmp228_ = TRUE; } else { ValaDataType* _tmp236_; _tmp236_ = left_type; _tmp228_ = VALA_IS_ENUM_VALUE_TYPE (_tmp236_); } _tmp237_ = _tmp228_; if (_tmp237_) { ValaDataType* _tmp238_; gboolean _tmp239_; gboolean _tmp240_; _tmp238_ = left_type; _tmp239_ = vala_data_type_get_nullable (_tmp238_); _tmp240_ = _tmp239_; _tmp227_ = _tmp240_; } else { _tmp227_ = FALSE; } _tmp241_ = _tmp227_; if (_tmp241_) { gboolean _tmp242_ = FALSE; gboolean _tmp243_ = FALSE; gboolean _tmp244_ = FALSE; ValaDataType* _tmp245_; gboolean _tmp247_; gboolean _tmp249_; gboolean _tmp251_; _tmp245_ = right_type; if (VALA_IS_INTEGER_TYPE (_tmp245_)) { _tmp244_ = TRUE; } else { ValaDataType* _tmp246_; _tmp246_ = right_type; _tmp244_ = VALA_IS_FLOATING_TYPE (_tmp246_); } _tmp247_ = _tmp244_; if (_tmp247_) { _tmp243_ = TRUE; } else { ValaDataType* _tmp248_; _tmp248_ = right_type; _tmp243_ = VALA_IS_BOOLEAN_TYPE (_tmp248_); } _tmp249_ = _tmp243_; if (_tmp249_) { _tmp242_ = TRUE; } else { ValaDataType* _tmp250_; _tmp250_ = right_type; _tmp242_ = VALA_IS_ENUM_VALUE_TYPE (_tmp250_); } _tmp251_ = _tmp242_; _tmp226_ = _tmp251_; } else { _tmp226_ = FALSE; } _tmp252_ = _tmp226_; if (_tmp252_) { ValaDataType* _tmp253_; gboolean _tmp254_; gboolean _tmp255_; _tmp253_ = right_type; _tmp254_ = vala_data_type_get_nullable (_tmp253_); _tmp255_ = _tmp254_; _tmp225_ = _tmp255_; } else { _tmp225_ = FALSE; } _tmp256_ = _tmp225_; if (_tmp256_) { ValaDataType* _tmp257_; ValaTypeSymbol* _tmp258_; ValaTypeSymbol* _tmp259_; gchar* _tmp260_ = NULL; gchar* equalfunc; const gchar* _tmp261_; ValaCCodeIdentifier* _tmp262_; ValaCCodeIdentifier* _tmp263_; ValaCCodeFunctionCall* _tmp264_; ValaCCodeFunctionCall* _tmp265_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp266_; ValaCCodeExpression* _tmp267_; ValaCCodeFunctionCall* _tmp268_; ValaCCodeExpression* _tmp269_; ValaCCodeFunctionCall* _tmp270_; ValaCCodeExpression* _tmp271_; ValaCCodeConstant* _tmp272_; _tmp257_ = left_type; _tmp258_ = vala_data_type_get_data_type (_tmp257_); _tmp259_ = _tmp258_; _tmp260_ = vala_ccode_base_module_generate_numeric_equal_function (self, VALA_TYPESYMBOL (_tmp259_)); equalfunc = _tmp260_; _tmp261_ = equalfunc; _tmp262_ = vala_ccode_identifier_new (_tmp261_); _tmp263_ = _tmp262_; _tmp264_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp263_); _tmp265_ = _tmp264_; _vala_ccode_node_unref0 (_tmp263_); ccall = _tmp265_; _tmp266_ = ccall; _tmp267_ = cleft; vala_ccode_function_call_add_argument (_tmp266_, _tmp267_); _tmp268_ = ccall; _tmp269_ = cright; vala_ccode_function_call_add_argument (_tmp268_, _tmp269_); _tmp270_ = ccall; _tmp271_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp270_); _vala_ccode_node_unref0 (cleft); cleft = _tmp271_; _tmp272_ = vala_ccode_constant_new ("TRUE"); _vala_ccode_node_unref0 (cright); cright = (ValaCCodeExpression*) _tmp272_; _vala_ccode_node_unref0 (ccall); _g_free0 (equalfunc); } } _vala_code_node_unref0 (right_type); _vala_code_node_unref0 (left_type); } _tmp276_ = expr; _tmp277_ = vala_binary_expression_get_left (_tmp276_); _tmp278_ = _tmp277_; _tmp279_ = vala_expression_get_value_type (_tmp278_); _tmp280_ = _tmp279_; if (!VALA_IS_NULL_TYPE (_tmp280_)) { ValaBinaryExpression* _tmp281_; ValaExpression* _tmp282_; ValaExpression* _tmp283_; ValaDataType* _tmp284_; ValaDataType* _tmp285_; ValaDataType* _tmp286_; gboolean _tmp287_ = FALSE; _tmp281_ = expr; _tmp282_ = vala_binary_expression_get_left (_tmp281_); _tmp283_ = _tmp282_; _tmp284_ = vala_expression_get_value_type (_tmp283_); _tmp285_ = _tmp284_; _tmp286_ = self->string_type; _tmp287_ = vala_data_type_compatible (_tmp285_, _tmp286_); _tmp275_ = _tmp287_; } else { _tmp275_ = FALSE; } _tmp288_ = _tmp275_; if (_tmp288_) { ValaBinaryExpression* _tmp289_; ValaExpression* _tmp290_; ValaExpression* _tmp291_; ValaDataType* _tmp292_; ValaDataType* _tmp293_; _tmp289_ = expr; _tmp290_ = vala_binary_expression_get_right (_tmp289_); _tmp291_ = _tmp290_; _tmp292_ = vala_expression_get_value_type (_tmp291_); _tmp293_ = _tmp292_; _tmp274_ = !VALA_IS_NULL_TYPE (_tmp293_); } else { _tmp274_ = FALSE; } _tmp294_ = _tmp274_; if (_tmp294_) { ValaBinaryExpression* _tmp295_; ValaExpression* _tmp296_; ValaExpression* _tmp297_; ValaDataType* _tmp298_; ValaDataType* _tmp299_; ValaDataType* _tmp300_; gboolean _tmp301_ = FALSE; _tmp295_ = expr; _tmp296_ = vala_binary_expression_get_right (_tmp295_); _tmp297_ = _tmp296_; _tmp298_ = vala_expression_get_value_type (_tmp297_); _tmp299_ = _tmp298_; _tmp300_ = self->string_type; _tmp301_ = vala_data_type_compatible (_tmp299_, _tmp300_); _tmp273_ = _tmp301_; } else { _tmp273_ = FALSE; } _tmp302_ = _tmp273_; if (_tmp302_) { ValaBinaryExpression* _tmp303_; ValaBinaryOperator _tmp304_; ValaBinaryOperator _tmp305_; _tmp303_ = expr; _tmp304_ = vala_binary_expression_get_operator (_tmp303_); _tmp305_ = _tmp304_; if (_tmp305_ == VALA_BINARY_OPERATOR_PLUS) { gboolean _tmp306_ = FALSE; ValaBinaryExpression* _tmp307_; ValaExpression* _tmp308_; ValaExpression* _tmp309_; gboolean _tmp310_ = FALSE; gboolean _tmp315_; _tmp307_ = expr; _tmp308_ = vala_binary_expression_get_left (_tmp307_); _tmp309_ = _tmp308_; _tmp310_ = vala_expression_is_constant (_tmp309_); if (_tmp310_) { ValaBinaryExpression* _tmp311_; ValaExpression* _tmp312_; ValaExpression* _tmp313_; gboolean _tmp314_ = FALSE; _tmp311_ = expr; _tmp312_ = vala_binary_expression_get_right (_tmp311_); _tmp313_ = _tmp312_; _tmp314_ = vala_expression_is_constant (_tmp313_); _tmp306_ = _tmp314_; } else { _tmp306_ = FALSE; } _tmp315_ = _tmp306_; if (_tmp315_) { gchar* left = NULL; gchar* right = NULL; ValaCCodeExpression* _tmp316_; ValaCCodeExpression* _tmp326_; ValaBinaryExpression* _tmp336_; const gchar* _tmp337_; const gchar* _tmp338_; gchar* _tmp339_ = NULL; gchar* _tmp340_; ValaCCodeConstant* _tmp341_; ValaCCodeConstant* _tmp342_; _tmp316_ = cleft; if (VALA_IS_CCODE_IDENTIFIER (_tmp316_)) { ValaCCodeExpression* _tmp317_; const gchar* _tmp318_; const gchar* _tmp319_; gchar* _tmp320_; _tmp317_ = cleft; _tmp318_ = vala_ccode_identifier_get_name (VALA_CCODE_IDENTIFIER (_tmp317_)); _tmp319_ = _tmp318_; _tmp320_ = g_strdup (_tmp319_); _g_free0 (left); left = _tmp320_; } else { ValaCCodeExpression* _tmp321_; _tmp321_ = cleft; if (VALA_IS_CCODE_CONSTANT (_tmp321_)) { ValaCCodeExpression* _tmp322_; const gchar* _tmp323_; const gchar* _tmp324_; gchar* _tmp325_; _tmp322_ = cleft; _tmp323_ = vala_ccode_constant_get_name (VALA_CCODE_CONSTANT (_tmp322_)); _tmp324_ = _tmp323_; _tmp325_ = g_strdup (_tmp324_); _g_free0 (left); left = _tmp325_; } else { g_assert_not_reached (); } } _tmp326_ = cright; if (VALA_IS_CCODE_IDENTIFIER (_tmp326_)) { ValaCCodeExpression* _tmp327_; const gchar* _tmp328_; const gchar* _tmp329_; gchar* _tmp330_; _tmp327_ = cright; _tmp328_ = vala_ccode_identifier_get_name (VALA_CCODE_IDENTIFIER (_tmp327_)); _tmp329_ = _tmp328_; _tmp330_ = g_strdup (_tmp329_); _g_free0 (right); right = _tmp330_; } else { ValaCCodeExpression* _tmp331_; _tmp331_ = cright; if (VALA_IS_CCODE_CONSTANT (_tmp331_)) { ValaCCodeExpression* _tmp332_; const gchar* _tmp333_; const gchar* _tmp334_; gchar* _tmp335_; _tmp332_ = cright; _tmp333_ = vala_ccode_constant_get_name (VALA_CCODE_CONSTANT (_tmp332_)); _tmp334_ = _tmp333_; _tmp335_ = g_strdup (_tmp334_); _g_free0 (right); right = _tmp335_; } else { g_assert_not_reached (); } } _tmp336_ = expr; _tmp337_ = left; _tmp338_ = right; _tmp339_ = g_strdup_printf ("%s %s", _tmp337_, _tmp338_); _tmp340_ = _tmp339_; _tmp341_ = vala_ccode_constant_new (_tmp340_); _tmp342_ = _tmp341_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp336_, (ValaCCodeExpression*) _tmp342_); _vala_ccode_node_unref0 (_tmp342_); _g_free0 (_tmp340_); _g_free0 (right); _g_free0 (left); _vala_ccode_node_unref0 (left_chain); _vala_ccode_node_unref0 (cright); _vala_ccode_node_unref0 (cleft); return; } else { ValaCodeContext* _tmp343_; ValaProfile _tmp344_; ValaProfile _tmp345_; _tmp343_ = self->priv->_context; _tmp344_ = vala_code_context_get_profile (_tmp343_); _tmp345_ = _tmp344_; if (_tmp345_ == VALA_PROFILE_POSIX) { ValaCCodeIdentifier* _tmp346_; ValaCCodeIdentifier* _tmp347_; ValaCCodeFunctionCall* _tmp348_; ValaCCodeFunctionCall* _tmp349_; ValaCCodeFunctionCall* strcat; ValaCCodeIdentifier* _tmp350_; ValaCCodeIdentifier* _tmp351_; ValaCCodeFunctionCall* _tmp352_; ValaCCodeFunctionCall* _tmp353_; ValaCCodeFunctionCall* strcpy; ValaCCodeIdentifier* _tmp354_; ValaCCodeIdentifier* _tmp355_; ValaCCodeFunctionCall* _tmp356_; ValaCCodeFunctionCall* _tmp357_; ValaCCodeFunctionCall* malloc; ValaCCodeIdentifier* _tmp358_; ValaCCodeIdentifier* _tmp359_; ValaCCodeFunctionCall* _tmp360_; ValaCCodeFunctionCall* _tmp361_; ValaCCodeFunctionCall* strlen_a; ValaCCodeFunctionCall* _tmp362_; ValaCCodeExpression* _tmp363_; ValaCCodeIdentifier* _tmp364_; ValaCCodeIdentifier* _tmp365_; ValaCCodeFunctionCall* _tmp366_; ValaCCodeFunctionCall* _tmp367_; ValaCCodeFunctionCall* strlen_b; ValaCCodeFunctionCall* _tmp368_; ValaCCodeExpression* _tmp369_; ValaCCodeIdentifier* _tmp370_; ValaCCodeIdentifier* _tmp371_; ValaCCodeFunctionCall* _tmp372_; ValaCCodeFunctionCall* _tmp373_; ValaCCodeBinaryExpression* _tmp374_; ValaCCodeBinaryExpression* _tmp375_; ValaCCodeBinaryExpression* _tmp376_; ValaCCodeBinaryExpression* _tmp377_; ValaCCodeBinaryExpression* newlength; ValaCCodeFunctionCall* _tmp378_; ValaCCodeBinaryExpression* _tmp379_; ValaCCodeFunctionCall* _tmp380_; ValaCCodeFunctionCall* _tmp381_; ValaCCodeFunctionCall* _tmp382_; ValaCCodeExpression* _tmp383_; ValaCCodeFunctionCall* _tmp384_; ValaCCodeFunctionCall* _tmp385_; ValaCCodeFunctionCall* _tmp386_; ValaCCodeExpression* _tmp387_; ValaBinaryExpression* _tmp388_; ValaCCodeFunctionCall* _tmp389_; _tmp346_ = vala_ccode_identifier_new ("strcat"); _tmp347_ = _tmp346_; _tmp348_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp347_); _tmp349_ = _tmp348_; _vala_ccode_node_unref0 (_tmp347_); strcat = _tmp349_; _tmp350_ = vala_ccode_identifier_new ("strcpy"); _tmp351_ = _tmp350_; _tmp352_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp351_); _tmp353_ = _tmp352_; _vala_ccode_node_unref0 (_tmp351_); strcpy = _tmp353_; _tmp354_ = vala_ccode_identifier_new ("malloc"); _tmp355_ = _tmp354_; _tmp356_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp355_); _tmp357_ = _tmp356_; _vala_ccode_node_unref0 (_tmp355_); malloc = _tmp357_; _tmp358_ = vala_ccode_identifier_new ("strlen"); _tmp359_ = _tmp358_; _tmp360_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp359_); _tmp361_ = _tmp360_; _vala_ccode_node_unref0 (_tmp359_); strlen_a = _tmp361_; _tmp362_ = strlen_a; _tmp363_ = cleft; vala_ccode_function_call_add_argument (_tmp362_, _tmp363_); _tmp364_ = vala_ccode_identifier_new ("strlen"); _tmp365_ = _tmp364_; _tmp366_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp365_); _tmp367_ = _tmp366_; _vala_ccode_node_unref0 (_tmp365_); strlen_b = _tmp367_; _tmp368_ = strlen_b; _tmp369_ = cright; vala_ccode_function_call_add_argument (_tmp368_, _tmp369_); _tmp370_ = vala_ccode_identifier_new ("1"); _tmp371_ = _tmp370_; _tmp372_ = strlen_a; _tmp373_ = strlen_b; _tmp374_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp372_, (ValaCCodeExpression*) _tmp373_); _tmp375_ = _tmp374_; _tmp376_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp371_, (ValaCCodeExpression*) _tmp375_); _tmp377_ = _tmp376_; _vala_ccode_node_unref0 (_tmp375_); _vala_ccode_node_unref0 (_tmp371_); newlength = _tmp377_; _tmp378_ = malloc; _tmp379_ = newlength; vala_ccode_function_call_add_argument (_tmp378_, (ValaCCodeExpression*) _tmp379_); _tmp380_ = strcpy; _tmp381_ = malloc; vala_ccode_function_call_add_argument (_tmp380_, (ValaCCodeExpression*) _tmp381_); _tmp382_ = strcpy; _tmp383_ = cleft; vala_ccode_function_call_add_argument (_tmp382_, _tmp383_); _tmp384_ = strcat; _tmp385_ = strcpy; vala_ccode_function_call_add_argument (_tmp384_, (ValaCCodeExpression*) _tmp385_); _tmp386_ = strcat; _tmp387_ = cright; vala_ccode_function_call_add_argument (_tmp386_, _tmp387_); _tmp388_ = expr; _tmp389_ = strcat; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp388_, (ValaCCodeExpression*) _tmp389_); _vala_ccode_node_unref0 (newlength); _vala_ccode_node_unref0 (strlen_b); _vala_ccode_node_unref0 (strlen_a); _vala_ccode_node_unref0 (malloc); _vala_ccode_node_unref0 (strcpy); _vala_ccode_node_unref0 (strcat); } else { ValaBinaryExpression* _tmp390_; ValaDataType* _tmp391_; ValaDataType* _tmp392_; ValaBinaryExpression* _tmp393_; ValaTargetValue* _tmp394_ = NULL; ValaTargetValue* temp_value; ValaCCodeIdentifier* _tmp395_; ValaCCodeIdentifier* _tmp396_; ValaCCodeFunctionCall* _tmp397_; ValaCCodeFunctionCall* _tmp398_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp399_; ValaCCodeExpression* _tmp400_; ValaCCodeFunctionCall* _tmp401_; ValaCCodeExpression* _tmp402_; ValaCCodeFunctionCall* _tmp403_; ValaCCodeConstant* _tmp404_; ValaCCodeConstant* _tmp405_; ValaCCodeFunction* _tmp406_; ValaCCodeFunction* _tmp407_; ValaTargetValue* _tmp408_; ValaCCodeExpression* _tmp409_ = NULL; ValaCCodeExpression* _tmp410_; ValaCCodeFunctionCall* _tmp411_; ValaBinaryExpression* _tmp412_; ValaTargetValue* _tmp413_; _tmp390_ = expr; _tmp391_ = vala_expression_get_value_type ((ValaExpression*) _tmp390_); _tmp392_ = _tmp391_; _tmp393_ = expr; _tmp394_ = vala_ccode_base_module_create_temp_value (self, _tmp392_, FALSE, (ValaCodeNode*) _tmp393_, NULL); temp_value = _tmp394_; _tmp395_ = vala_ccode_identifier_new ("g_strconcat"); _tmp396_ = _tmp395_; _tmp397_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp396_); _tmp398_ = _tmp397_; _vala_ccode_node_unref0 (_tmp396_); ccall = _tmp398_; _tmp399_ = ccall; _tmp400_ = cleft; vala_ccode_function_call_add_argument (_tmp399_, _tmp400_); _tmp401_ = ccall; _tmp402_ = cright; vala_ccode_function_call_add_argument (_tmp401_, _tmp402_); _tmp403_ = ccall; _tmp404_ = vala_ccode_constant_new ("NULL"); _tmp405_ = _tmp404_; vala_ccode_function_call_add_argument (_tmp403_, (ValaCCodeExpression*) _tmp405_); _vala_ccode_node_unref0 (_tmp405_); _tmp406_ = vala_ccode_base_module_get_ccode (self); _tmp407_ = _tmp406_; _tmp408_ = temp_value; _tmp409_ = vala_ccode_base_module_get_cvalue_ (self, _tmp408_); _tmp410_ = _tmp409_; _tmp411_ = ccall; vala_ccode_function_add_assignment (_tmp407_, _tmp410_, (ValaCCodeExpression*) _tmp411_); _vala_ccode_node_unref0 (_tmp410_); _tmp412_ = expr; _tmp413_ = temp_value; vala_expression_set_target_value ((ValaExpression*) _tmp412_, _tmp413_); _vala_ccode_node_unref0 (ccall); _vala_target_value_unref0 (temp_value); } _vala_ccode_node_unref0 (left_chain); _vala_ccode_node_unref0 (cright); _vala_ccode_node_unref0 (cleft); return; } } else { gboolean _tmp414_ = FALSE; gboolean _tmp415_ = FALSE; gboolean _tmp416_ = FALSE; gboolean _tmp417_ = FALSE; gboolean _tmp418_ = FALSE; ValaBinaryExpression* _tmp419_; ValaBinaryOperator _tmp420_; ValaBinaryOperator _tmp421_; gboolean _tmp425_; gboolean _tmp429_; gboolean _tmp433_; gboolean _tmp437_; gboolean _tmp441_; _tmp419_ = expr; _tmp420_ = vala_binary_expression_get_operator (_tmp419_); _tmp421_ = _tmp420_; if (_tmp421_ == VALA_BINARY_OPERATOR_EQUALITY) { _tmp418_ = TRUE; } else { ValaBinaryExpression* _tmp422_; ValaBinaryOperator _tmp423_; ValaBinaryOperator _tmp424_; _tmp422_ = expr; _tmp423_ = vala_binary_expression_get_operator (_tmp422_); _tmp424_ = _tmp423_; _tmp418_ = _tmp424_ == VALA_BINARY_OPERATOR_INEQUALITY; } _tmp425_ = _tmp418_; if (_tmp425_) { _tmp417_ = TRUE; } else { ValaBinaryExpression* _tmp426_; ValaBinaryOperator _tmp427_; ValaBinaryOperator _tmp428_; _tmp426_ = expr; _tmp427_ = vala_binary_expression_get_operator (_tmp426_); _tmp428_ = _tmp427_; _tmp417_ = _tmp428_ == VALA_BINARY_OPERATOR_LESS_THAN; } _tmp429_ = _tmp417_; if (_tmp429_) { _tmp416_ = TRUE; } else { ValaBinaryExpression* _tmp430_; ValaBinaryOperator _tmp431_; ValaBinaryOperator _tmp432_; _tmp430_ = expr; _tmp431_ = vala_binary_expression_get_operator (_tmp430_); _tmp432_ = _tmp431_; _tmp416_ = _tmp432_ == VALA_BINARY_OPERATOR_GREATER_THAN; } _tmp433_ = _tmp416_; if (_tmp433_) { _tmp415_ = TRUE; } else { ValaBinaryExpression* _tmp434_; ValaBinaryOperator _tmp435_; ValaBinaryOperator _tmp436_; _tmp434_ = expr; _tmp435_ = vala_binary_expression_get_operator (_tmp434_); _tmp436_ = _tmp435_; _tmp415_ = _tmp436_ == VALA_BINARY_OPERATOR_LESS_THAN_OR_EQUAL; } _tmp437_ = _tmp415_; if (_tmp437_) { _tmp414_ = TRUE; } else { ValaBinaryExpression* _tmp438_; ValaBinaryOperator _tmp439_; ValaBinaryOperator _tmp440_; _tmp438_ = expr; _tmp439_ = vala_binary_expression_get_operator (_tmp438_); _tmp440_ = _tmp439_; _tmp414_ = _tmp440_ == VALA_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL; } _tmp441_ = _tmp414_; if (_tmp441_) { ValaCCodeIdentifier* _tmp442_; ValaCCodeIdentifier* _tmp443_; ValaCCodeFunctionCall* _tmp444_; ValaCCodeFunctionCall* _tmp445_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp446_; ValaCCodeExpression* _tmp447_; ValaCCodeFunctionCall* _tmp448_; ValaCCodeExpression* _tmp449_; ValaCCodeFunctionCall* _tmp450_; ValaCCodeExpression* _tmp451_; ValaCCodeConstant* _tmp452_; _tmp442_ = vala_ccode_identifier_new ("g_strcmp0"); _tmp443_ = _tmp442_; _tmp444_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp443_); _tmp445_ = _tmp444_; _vala_ccode_node_unref0 (_tmp443_); ccall = _tmp445_; _tmp446_ = ccall; _tmp447_ = cleft; vala_ccode_function_call_add_argument (_tmp446_, _tmp447_); _tmp448_ = ccall; _tmp449_ = cright; vala_ccode_function_call_add_argument (_tmp448_, _tmp449_); _tmp450_ = ccall; _tmp451_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp450_); _vala_ccode_node_unref0 (cleft); cleft = _tmp451_; _tmp452_ = vala_ccode_constant_new ("0"); _vala_ccode_node_unref0 (cright); cright = (ValaCCodeExpression*) _tmp452_; _vala_ccode_node_unref0 (ccall); } } } _tmp453_ = expr; _tmp454_ = op; _tmp455_ = cleft; _tmp456_ = cright; _tmp457_ = vala_ccode_binary_expression_new (_tmp454_, _tmp455_, _tmp456_); _tmp458_ = _tmp457_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp453_, (ValaCCodeExpression*) _tmp458_); _vala_ccode_node_unref0 (_tmp458_); _tmp459_ = left_chain; if (_tmp459_ != NULL) { ValaBinaryExpression* _tmp460_; ValaCCodeExpression* _tmp461_; ValaBinaryExpression* _tmp462_; ValaCCodeExpression* _tmp463_ = NULL; ValaCCodeExpression* _tmp464_; ValaCCodeBinaryExpression* _tmp465_; ValaCCodeBinaryExpression* _tmp466_; _tmp460_ = expr; _tmp461_ = left_chain; _tmp462_ = expr; _tmp463_ = vala_ccode_base_module_get_cvalue (self, (ValaExpression*) _tmp462_); _tmp464_ = _tmp463_; _tmp465_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_AND, _tmp461_, _tmp464_); _tmp466_ = _tmp465_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp460_, (ValaCCodeExpression*) _tmp466_); _vala_ccode_node_unref0 (_tmp466_); _vala_ccode_node_unref0 (_tmp464_); } _vala_ccode_node_unref0 (left_chain); _vala_ccode_node_unref0 (cright); _vala_ccode_node_unref0 (cleft); } static ValaCCodeExpression* vala_ccode_base_module_create_type_check (ValaCCodeBaseModule* self, ValaCCodeNode* ccodenode, ValaDataType* type) { ValaCCodeExpression* result = NULL; ValaDataType* _tmp0_; ValaErrorType* _tmp1_; ValaErrorType* et; gboolean _tmp2_ = FALSE; ValaErrorType* _tmp3_; gboolean _tmp7_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (ccodenode != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; _tmp1_ = _vala_code_node_ref0 (VALA_IS_ERROR_TYPE (_tmp0_) ? ((ValaErrorType*) _tmp0_) : NULL); et = _tmp1_; _tmp3_ = et; if (_tmp3_ != NULL) { ValaErrorType* _tmp4_; ValaErrorCode* _tmp5_; ValaErrorCode* _tmp6_; _tmp4_ = et; _tmp5_ = vala_error_type_get_error_code (_tmp4_); _tmp6_ = _tmp5_; _tmp2_ = _tmp6_ != NULL; } else { _tmp2_ = FALSE; } _tmp7_ = _tmp2_; if (_tmp7_) { ValaCCodeIdentifier* _tmp8_; ValaCCodeIdentifier* _tmp9_; ValaCCodeFunctionCall* _tmp10_; ValaCCodeFunctionCall* _tmp11_; ValaCCodeFunctionCall* matches_call; ValaCCodeFunctionCall* _tmp12_; ValaCCodeNode* _tmp13_; ValaCCodeFunctionCall* _tmp14_; ValaErrorType* _tmp15_; ValaErrorDomain* _tmp16_; ValaErrorDomain* _tmp17_; gchar* _tmp18_ = NULL; gchar* _tmp19_; ValaCCodeIdentifier* _tmp20_; ValaCCodeIdentifier* _tmp21_; ValaCCodeFunctionCall* _tmp22_; ValaErrorType* _tmp23_; ValaErrorCode* _tmp24_; ValaErrorCode* _tmp25_; gchar* _tmp26_ = NULL; gchar* _tmp27_; ValaCCodeIdentifier* _tmp28_; ValaCCodeIdentifier* _tmp29_; _tmp8_ = vala_ccode_identifier_new ("g_error_matches"); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp9_); _tmp11_ = _tmp10_; _vala_ccode_node_unref0 (_tmp9_); matches_call = _tmp11_; _tmp12_ = matches_call; _tmp13_ = ccodenode; vala_ccode_function_call_add_argument (_tmp12_, VALA_CCODE_EXPRESSION (_tmp13_)); _tmp14_ = matches_call; _tmp15_ = et; _tmp16_ = vala_error_type_get_error_domain (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp17_, NULL); _tmp19_ = _tmp18_; _tmp20_ = vala_ccode_identifier_new (_tmp19_); _tmp21_ = _tmp20_; vala_ccode_function_call_add_argument (_tmp14_, (ValaCCodeExpression*) _tmp21_); _vala_ccode_node_unref0 (_tmp21_); _g_free0 (_tmp19_); _tmp22_ = matches_call; _tmp23_ = et; _tmp24_ = vala_error_type_get_error_code (_tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp25_); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_identifier_new (_tmp27_); _tmp29_ = _tmp28_; vala_ccode_function_call_add_argument (_tmp22_, (ValaCCodeExpression*) _tmp29_); _vala_ccode_node_unref0 (_tmp29_); _g_free0 (_tmp27_); result = (ValaCCodeExpression*) matches_call; _vala_code_node_unref0 (et); return result; } else { gboolean _tmp30_ = FALSE; ValaErrorType* _tmp31_; gboolean _tmp35_; _tmp31_ = et; if (_tmp31_ != NULL) { ValaErrorType* _tmp32_; ValaErrorDomain* _tmp33_; ValaErrorDomain* _tmp34_; _tmp32_ = et; _tmp33_ = vala_error_type_get_error_domain (_tmp32_); _tmp34_ = _tmp33_; _tmp30_ = _tmp34_ != NULL; } else { _tmp30_ = FALSE; } _tmp35_ = _tmp30_; if (_tmp35_) { ValaCCodeNode* _tmp36_; ValaCCodeMemberAccess* _tmp37_; ValaCCodeMemberAccess* instance_domain; ValaErrorType* _tmp38_; ValaErrorDomain* _tmp39_; ValaErrorDomain* _tmp40_; gchar* _tmp41_ = NULL; gchar* _tmp42_; ValaCCodeIdentifier* _tmp43_; ValaCCodeIdentifier* _tmp44_; ValaCCodeIdentifier* type_domain; ValaCCodeMemberAccess* _tmp45_; ValaCCodeIdentifier* _tmp46_; ValaCCodeBinaryExpression* _tmp47_; _tmp36_ = ccodenode; _tmp37_ = vala_ccode_member_access_new_pointer (VALA_CCODE_EXPRESSION (_tmp36_), "domain"); instance_domain = _tmp37_; _tmp38_ = et; _tmp39_ = vala_error_type_get_error_domain (_tmp38_); _tmp40_ = _tmp39_; _tmp41_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp40_, NULL); _tmp42_ = _tmp41_; _tmp43_ = vala_ccode_identifier_new (_tmp42_); _tmp44_ = _tmp43_; _g_free0 (_tmp42_); type_domain = _tmp44_; _tmp45_ = instance_domain; _tmp46_ = type_domain; _tmp47_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp45_, (ValaCCodeExpression*) _tmp46_); result = (ValaCCodeExpression*) _tmp47_; _vala_ccode_node_unref0 (type_domain); _vala_ccode_node_unref0 (instance_domain); _vala_code_node_unref0 (et); return result; } else { ValaDataType* _tmp48_; ValaTypeSymbol* _tmp49_; ValaTypeSymbol* _tmp50_; gchar* _tmp51_ = NULL; gchar* type_check_func; const gchar* _tmp52_; const gchar* _tmp54_; ValaCCodeIdentifier* _tmp55_; ValaCCodeIdentifier* _tmp56_; ValaCCodeFunctionCall* _tmp57_; ValaCCodeFunctionCall* _tmp58_; ValaCCodeFunctionCall* ccheck; ValaCCodeFunctionCall* _tmp59_; ValaCCodeNode* _tmp60_; _tmp48_ = type; _tmp49_ = vala_data_type_get_data_type (_tmp48_); _tmp50_ = _tmp49_; _tmp51_ = vala_ccode_base_module_get_ccode_type_check_function (_tmp50_); type_check_func = _tmp51_; _tmp52_ = type_check_func; if (g_strcmp0 (_tmp52_, "") == 0) { ValaCCodeInvalidExpression* _tmp53_; _tmp53_ = vala_ccode_invalid_expression_new (); result = (ValaCCodeExpression*) _tmp53_; _g_free0 (type_check_func); _vala_code_node_unref0 (et); return result; } _tmp54_ = type_check_func; _tmp55_ = vala_ccode_identifier_new (_tmp54_); _tmp56_ = _tmp55_; _tmp57_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp56_); _tmp58_ = _tmp57_; _vala_ccode_node_unref0 (_tmp56_); ccheck = _tmp58_; _tmp59_ = ccheck; _tmp60_ = ccodenode; vala_ccode_function_call_add_argument (_tmp59_, VALA_CCODE_EXPRESSION (_tmp60_)); result = (ValaCCodeExpression*) ccheck; _g_free0 (type_check_func); _vala_code_node_unref0 (et); return result; } } _vala_code_node_unref0 (et); } static gchar* vala_ccode_base_module_generate_array_contains_wrapper (ValaCCodeBaseModule* self, ValaArrayType* array_type) { gchar* result = NULL; ValaArrayType* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gchar* _tmp5_ = NULL; gchar* _tmp6_; gchar* array_contains_func; const gchar* _tmp7_; gboolean _tmp8_ = FALSE; const gchar* _tmp9_; ValaCCodeFunction* _tmp10_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp11_; ValaCCodeFunction* _tmp12_; ValaArrayType* _tmp13_; gchar* _tmp14_ = NULL; gchar* _tmp15_; ValaCCodeParameter* _tmp16_; ValaCCodeParameter* _tmp17_; ValaCCodeFunction* _tmp18_; ValaCCodeParameter* _tmp19_; ValaCCodeParameter* _tmp20_; ValaArrayType* _tmp21_; ValaDataType* _tmp22_; ValaDataType* _tmp23_; ValaCCodeFunction* _tmp42_; ValaCCodeFunction* _tmp43_; ValaCCodeFunction* _tmp44_; ValaCCodeVariableDeclarator* _tmp45_; ValaCCodeVariableDeclarator* _tmp46_; ValaCCodeIdentifier* _tmp47_; ValaCCodeIdentifier* _tmp48_; ValaCCodeConstant* _tmp49_; ValaCCodeConstant* _tmp50_; ValaCCodeAssignment* _tmp51_; ValaCCodeAssignment* _tmp52_; ValaCCodeAssignment* cloop_initializer; ValaCCodeIdentifier* _tmp53_; ValaCCodeIdentifier* _tmp54_; ValaCCodeIdentifier* _tmp55_; ValaCCodeIdentifier* _tmp56_; ValaCCodeBinaryExpression* _tmp57_; ValaCCodeBinaryExpression* _tmp58_; ValaCCodeBinaryExpression* cloop_condition; ValaCCodeIdentifier* _tmp59_; ValaCCodeIdentifier* _tmp60_; ValaCCodeUnaryExpression* _tmp61_; ValaCCodeUnaryExpression* _tmp62_; ValaCCodeUnaryExpression* cloop_iterator; ValaCCodeFunction* _tmp63_; ValaCCodeFunction* _tmp64_; ValaCCodeAssignment* _tmp65_; ValaCCodeBinaryExpression* _tmp66_; ValaCCodeUnaryExpression* _tmp67_; ValaCCodeIdentifier* _tmp68_; ValaCCodeIdentifier* _tmp69_; ValaCCodeIdentifier* _tmp70_; ValaCCodeIdentifier* _tmp71_; ValaCCodeElementAccess* _tmp72_; ValaCCodeElementAccess* _tmp73_; ValaCCodeElementAccess* celement; ValaCCodeIdentifier* _tmp74_; ValaCCodeIdentifier* cneedle; ValaCCodeBinaryExpression* cif_condition = NULL; ValaArrayType* _tmp75_; ValaDataType* _tmp76_; ValaDataType* _tmp77_; ValaDataType* _tmp78_; gboolean _tmp79_ = FALSE; ValaCCodeFunction* _tmp119_; ValaCCodeFunction* _tmp120_; ValaCCodeBinaryExpression* _tmp121_; ValaCCodeFunction* _tmp122_; ValaCCodeFunction* _tmp123_; ValaCCodeConstant* _tmp124_; ValaCCodeConstant* _tmp125_; ValaCCodeFunction* _tmp126_; ValaCCodeFunction* _tmp127_; ValaCCodeFunction* _tmp128_; ValaCCodeFunction* _tmp129_; ValaCCodeFunction* _tmp130_; ValaCCodeFunction* _tmp131_; ValaCCodeConstant* _tmp132_; ValaCCodeConstant* _tmp133_; ValaCCodeFile* _tmp134_; ValaCCodeFunction* _tmp135_; ValaCCodeFile* _tmp136_; ValaCCodeFunction* _tmp137_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (array_type != NULL, NULL); _tmp0_ = array_type; _tmp1_ = vala_array_type_get_element_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp2_, NULL); _tmp4_ = _tmp3_; _tmp5_ = g_strdup_printf ("_vala_%s_array_contains", _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); array_contains_func = _tmp6_; _tmp7_ = array_contains_func; _tmp8_ = vala_ccode_base_module_add_wrapper (self, _tmp7_); if (!_tmp8_) { result = array_contains_func; return result; } _tmp9_ = array_contains_func; _tmp10_ = vala_ccode_function_new (_tmp9_, "gboolean"); function = _tmp10_; _tmp11_ = function; vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC); _tmp12_ = function; _tmp13_ = array_type; _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = vala_ccode_parameter_new ("stack", _tmp15_); _tmp17_ = _tmp16_; vala_ccode_function_add_parameter (_tmp12_, _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _g_free0 (_tmp15_); _tmp18_ = function; _tmp19_ = vala_ccode_parameter_new ("stack_length", "int"); _tmp20_ = _tmp19_; vala_ccode_function_add_parameter (_tmp18_, _tmp20_); _vala_ccode_node_unref0 (_tmp20_); _tmp21_ = array_type; _tmp22_ = vala_array_type_get_element_type (_tmp21_); _tmp23_ = _tmp22_; if (VALA_IS_STRUCT_VALUE_TYPE (_tmp23_)) { ValaCCodeFunction* _tmp24_; ValaArrayType* _tmp25_; ValaDataType* _tmp26_; ValaDataType* _tmp27_; gchar* _tmp28_ = NULL; gchar* _tmp29_; gchar* _tmp30_; gchar* _tmp31_; ValaCCodeParameter* _tmp32_; ValaCCodeParameter* _tmp33_; _tmp24_ = function; _tmp25_ = array_type; _tmp26_ = vala_array_type_get_element_type (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp27_); _tmp29_ = _tmp28_; _tmp30_ = g_strconcat (_tmp29_, "*", NULL); _tmp31_ = _tmp30_; _tmp32_ = vala_ccode_parameter_new ("needle", _tmp31_); _tmp33_ = _tmp32_; vala_ccode_function_add_parameter (_tmp24_, _tmp33_); _vala_ccode_node_unref0 (_tmp33_); _g_free0 (_tmp31_); _g_free0 (_tmp29_); } else { ValaCCodeFunction* _tmp34_; ValaArrayType* _tmp35_; ValaDataType* _tmp36_; ValaDataType* _tmp37_; gchar* _tmp38_ = NULL; gchar* _tmp39_; ValaCCodeParameter* _tmp40_; ValaCCodeParameter* _tmp41_; _tmp34_ = function; _tmp35_ = array_type; _tmp36_ = vala_array_type_get_element_type (_tmp35_); _tmp37_ = _tmp36_; _tmp38_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp37_); _tmp39_ = _tmp38_; _tmp40_ = vala_ccode_parameter_new ("needle", _tmp39_); _tmp41_ = _tmp40_; vala_ccode_function_add_parameter (_tmp34_, _tmp41_); _vala_ccode_node_unref0 (_tmp41_); _g_free0 (_tmp39_); } _tmp42_ = function; vala_ccode_base_module_push_function (self, _tmp42_); _tmp43_ = vala_ccode_base_module_get_ccode (self); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_variable_declarator_new ("i", NULL, NULL); _tmp46_ = _tmp45_; vala_ccode_function_add_declaration (_tmp44_, "int", (ValaCCodeDeclarator*) _tmp46_, 0); _vala_ccode_node_unref0 (_tmp46_); _tmp47_ = vala_ccode_identifier_new ("i"); _tmp48_ = _tmp47_; _tmp49_ = vala_ccode_constant_new ("0"); _tmp50_ = _tmp49_; _tmp51_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp48_, (ValaCCodeExpression*) _tmp50_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp52_ = _tmp51_; _vala_ccode_node_unref0 (_tmp50_); _vala_ccode_node_unref0 (_tmp48_); cloop_initializer = _tmp52_; _tmp53_ = vala_ccode_identifier_new ("i"); _tmp54_ = _tmp53_; _tmp55_ = vala_ccode_identifier_new ("stack_length"); _tmp56_ = _tmp55_; _tmp57_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_LESS_THAN, (ValaCCodeExpression*) _tmp54_, (ValaCCodeExpression*) _tmp56_); _tmp58_ = _tmp57_; _vala_ccode_node_unref0 (_tmp56_); _vala_ccode_node_unref0 (_tmp54_); cloop_condition = _tmp58_; _tmp59_ = vala_ccode_identifier_new ("i"); _tmp60_ = _tmp59_; _tmp61_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp60_); _tmp62_ = _tmp61_; _vala_ccode_node_unref0 (_tmp60_); cloop_iterator = _tmp62_; _tmp63_ = vala_ccode_base_module_get_ccode (self); _tmp64_ = _tmp63_; _tmp65_ = cloop_initializer; _tmp66_ = cloop_condition; _tmp67_ = cloop_iterator; vala_ccode_function_open_for (_tmp64_, (ValaCCodeExpression*) _tmp65_, (ValaCCodeExpression*) _tmp66_, (ValaCCodeExpression*) _tmp67_); _tmp68_ = vala_ccode_identifier_new ("stack"); _tmp69_ = _tmp68_; _tmp70_ = vala_ccode_identifier_new ("i"); _tmp71_ = _tmp70_; _tmp72_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp69_, (ValaCCodeExpression*) _tmp71_); _tmp73_ = _tmp72_; _vala_ccode_node_unref0 (_tmp71_); _vala_ccode_node_unref0 (_tmp69_); celement = _tmp73_; _tmp74_ = vala_ccode_identifier_new ("needle"); cneedle = _tmp74_; _tmp75_ = array_type; _tmp76_ = vala_array_type_get_element_type (_tmp75_); _tmp77_ = _tmp76_; _tmp78_ = self->string_type; _tmp79_ = vala_data_type_compatible (_tmp77_, _tmp78_); if (_tmp79_) { ValaCCodeIdentifier* _tmp80_; ValaCCodeIdentifier* _tmp81_; ValaCCodeFunctionCall* _tmp82_; ValaCCodeFunctionCall* _tmp83_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp84_; ValaCCodeElementAccess* _tmp85_; ValaCCodeFunctionCall* _tmp86_; ValaCCodeIdentifier* _tmp87_; ValaCCodeFunctionCall* _tmp88_; ValaCCodeConstant* _tmp89_; ValaCCodeConstant* _tmp90_; ValaCCodeBinaryExpression* _tmp91_; _tmp80_ = vala_ccode_identifier_new ("g_strcmp0"); _tmp81_ = _tmp80_; _tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_); _tmp83_ = _tmp82_; _vala_ccode_node_unref0 (_tmp81_); ccall = _tmp83_; _tmp84_ = ccall; _tmp85_ = celement; vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp85_); _tmp86_ = ccall; _tmp87_ = cneedle; vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp87_); _tmp88_ = ccall; _tmp89_ = vala_ccode_constant_new ("0"); _tmp90_ = _tmp89_; _tmp91_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp88_, (ValaCCodeExpression*) _tmp90_); _vala_ccode_node_unref0 (cif_condition); cif_condition = _tmp91_; _vala_ccode_node_unref0 (_tmp90_); _vala_ccode_node_unref0 (ccall); } else { ValaArrayType* _tmp92_; ValaDataType* _tmp93_; ValaDataType* _tmp94_; _tmp92_ = array_type; _tmp93_ = vala_array_type_get_element_type (_tmp92_); _tmp94_ = _tmp93_; if (VALA_IS_STRUCT_VALUE_TYPE (_tmp94_)) { ValaArrayType* _tmp95_; ValaDataType* _tmp96_; ValaDataType* _tmp97_; ValaTypeSymbol* _tmp98_; ValaTypeSymbol* _tmp99_; gchar* _tmp100_ = NULL; gchar* equalfunc; const gchar* _tmp101_; ValaCCodeIdentifier* _tmp102_; ValaCCodeIdentifier* _tmp103_; ValaCCodeFunctionCall* _tmp104_; ValaCCodeFunctionCall* _tmp105_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp106_; ValaCCodeElementAccess* _tmp107_; ValaCCodeUnaryExpression* _tmp108_; ValaCCodeUnaryExpression* _tmp109_; ValaCCodeFunctionCall* _tmp110_; ValaCCodeIdentifier* _tmp111_; ValaCCodeFunctionCall* _tmp112_; ValaCCodeConstant* _tmp113_; ValaCCodeConstant* _tmp114_; ValaCCodeBinaryExpression* _tmp115_; _tmp95_ = array_type; _tmp96_ = vala_array_type_get_element_type (_tmp95_); _tmp97_ = _tmp96_; _tmp98_ = vala_data_type_get_data_type (_tmp97_); _tmp99_ = _tmp98_; _tmp100_ = vala_ccode_base_module_generate_struct_equal_function (self, VALA_IS_STRUCT (VALA_STRUCT (_tmp99_)) ? ((ValaStruct*) VALA_STRUCT (_tmp99_)) : NULL); equalfunc = _tmp100_; _tmp101_ = equalfunc; _tmp102_ = vala_ccode_identifier_new (_tmp101_); _tmp103_ = _tmp102_; _tmp104_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp103_); _tmp105_ = _tmp104_; _vala_ccode_node_unref0 (_tmp103_); ccall = _tmp105_; _tmp106_ = ccall; _tmp107_ = celement; _tmp108_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp107_); _tmp109_ = _tmp108_; vala_ccode_function_call_add_argument (_tmp106_, (ValaCCodeExpression*) _tmp109_); _vala_ccode_node_unref0 (_tmp109_); _tmp110_ = ccall; _tmp111_ = cneedle; vala_ccode_function_call_add_argument (_tmp110_, (ValaCCodeExpression*) _tmp111_); _tmp112_ = ccall; _tmp113_ = vala_ccode_constant_new ("TRUE"); _tmp114_ = _tmp113_; _tmp115_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp112_, (ValaCCodeExpression*) _tmp114_); _vala_ccode_node_unref0 (cif_condition); cif_condition = _tmp115_; _vala_ccode_node_unref0 (_tmp114_); _vala_ccode_node_unref0 (ccall); _g_free0 (equalfunc); } else { ValaCCodeIdentifier* _tmp116_; ValaCCodeElementAccess* _tmp117_; ValaCCodeBinaryExpression* _tmp118_; _tmp116_ = cneedle; _tmp117_ = celement; _tmp118_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp116_, (ValaCCodeExpression*) _tmp117_); _vala_ccode_node_unref0 (cif_condition); cif_condition = _tmp118_; } } _tmp119_ = vala_ccode_base_module_get_ccode (self); _tmp120_ = _tmp119_; _tmp121_ = cif_condition; vala_ccode_function_open_if (_tmp120_, (ValaCCodeExpression*) _tmp121_); _tmp122_ = vala_ccode_base_module_get_ccode (self); _tmp123_ = _tmp122_; _tmp124_ = vala_ccode_constant_new ("TRUE"); _tmp125_ = _tmp124_; vala_ccode_function_add_return (_tmp123_, (ValaCCodeExpression*) _tmp125_); _vala_ccode_node_unref0 (_tmp125_); _tmp126_ = vala_ccode_base_module_get_ccode (self); _tmp127_ = _tmp126_; vala_ccode_function_close (_tmp127_); _tmp128_ = vala_ccode_base_module_get_ccode (self); _tmp129_ = _tmp128_; vala_ccode_function_close (_tmp129_); _tmp130_ = vala_ccode_base_module_get_ccode (self); _tmp131_ = _tmp130_; _tmp132_ = vala_ccode_constant_new ("FALSE"); _tmp133_ = _tmp132_; vala_ccode_function_add_return (_tmp131_, (ValaCCodeExpression*) _tmp133_); _vala_ccode_node_unref0 (_tmp133_); vala_ccode_base_module_pop_function (self); _tmp134_ = self->cfile; _tmp135_ = function; vala_ccode_file_add_function_declaration (_tmp134_, _tmp135_); _tmp136_ = self->cfile; _tmp137_ = function; vala_ccode_file_add_function (_tmp136_, _tmp137_); result = array_contains_func; _vala_ccode_node_unref0 (cif_condition); _vala_ccode_node_unref0 (cneedle); _vala_ccode_node_unref0 (celement); _vala_ccode_node_unref0 (cloop_iterator); _vala_ccode_node_unref0 (cloop_condition); _vala_ccode_node_unref0 (cloop_initializer); _vala_ccode_node_unref0 (function); return result; } static void vala_ccode_base_module_real_visit_type_check (ValaCodeVisitor* base, ValaTypeCheck* expr) { ValaCCodeBaseModule * self; ValaTypeCheck* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaCCodeFile* _tmp3_; ValaTypeCheck* _tmp4_; ValaTypeCheck* _tmp5_; ValaExpression* _tmp6_; ValaExpression* _tmp7_; ValaCCodeExpression* _tmp8_ = NULL; ValaCCodeExpression* _tmp9_; ValaTypeCheck* _tmp10_; ValaDataType* _tmp11_; ValaDataType* _tmp12_; ValaCCodeExpression* _tmp13_ = NULL; ValaCCodeExpression* _tmp14_; ValaTypeCheck* _tmp15_; ValaCCodeExpression* _tmp16_ = NULL; ValaCCodeExpression* _tmp17_; gboolean _tmp18_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_typecheck_get_type_reference (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = self->cfile; vala_ccode_base_module_generate_type_declaration (self, _tmp2_, _tmp3_); _tmp4_ = expr; _tmp5_ = expr; _tmp6_ = vala_typecheck_get_expression (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_ccode_base_module_get_cvalue (self, _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = expr; _tmp11_ = vala_typecheck_get_type_reference (_tmp10_); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_base_module_create_type_check (self, (ValaCCodeNode*) _tmp9_, _tmp12_); _tmp14_ = _tmp13_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp4_, _tmp14_); _vala_ccode_node_unref0 (_tmp14_); _vala_ccode_node_unref0 (_tmp9_); _tmp15_ = expr; _tmp16_ = vala_ccode_base_module_get_cvalue (self, (ValaExpression*) _tmp15_); _tmp17_ = _tmp16_; _tmp18_ = VALA_IS_CCODE_INVALID_EXPRESSION (_tmp17_); _vala_ccode_node_unref0 (_tmp17_); if (_tmp18_) { ValaTypeCheck* _tmp19_; ValaSourceReference* _tmp20_; ValaSourceReference* _tmp21_; _tmp19_ = expr; _tmp20_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp19_); _tmp21_ = _tmp20_; vala_report_error (_tmp21_, "type check expressions not supported for compact classes, structs, and" \ " enums"); } } static void vala_ccode_base_module_real_visit_lambda_expression (ValaCodeVisitor* base, ValaLambdaExpression* lambda) { ValaCCodeBaseModule * self; ValaLambdaExpression* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaDelegateType* _tmp3_; ValaDelegateType* delegate_type; ValaDelegateType* _tmp4_; ValaDelegate* _tmp5_; ValaDelegate* _tmp6_; ValaDelegate* _tmp7_; ValaDelegate* d; ValaLambdaExpression* _tmp8_; ValaMethod* _tmp9_; ValaMethod* _tmp10_; ValaDelegate* _tmp11_; gboolean _tmp12_ = FALSE; ValaLambdaExpression* _tmp13_; ValaMethod* _tmp14_; ValaMethod* _tmp15_; ValaDelegate* _tmp16_; gboolean _tmp17_ = FALSE; ValaLambdaExpression* _tmp18_; ValaMethod* _tmp19_; ValaMethod* _tmp20_; ValaDelegate* _tmp21_; gchar* _tmp22_ = NULL; gchar* _tmp23_; ValaLambdaExpression* _tmp24_; ValaLambdaExpression* _tmp25_; ValaDataType* _tmp26_; ValaDataType* _tmp27_; gboolean _tmp28_; gboolean _tmp29_; gboolean expr_owned; ValaLambdaExpression* _tmp30_; ValaLambdaExpression* _tmp31_; ValaMethod* _tmp32_; ValaMethod* _tmp33_; gchar* _tmp34_ = NULL; gchar* _tmp35_; ValaCCodeIdentifier* _tmp36_; ValaCCodeIdentifier* _tmp37_; ValaLambdaExpression* _tmp38_; ValaMethod* _tmp39_; ValaMethod* _tmp40_; gboolean _tmp41_; gboolean _tmp42_; self = (ValaCCodeBaseModule*) base; g_return_if_fail (lambda != NULL); _tmp0_ = lambda; _tmp1_ = vala_expression_get_target_type ((ValaExpression*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp2_)); delegate_type = _tmp3_; _tmp4_ = delegate_type; _tmp5_ = vala_delegate_type_get_delegate_symbol (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = _vala_code_node_ref0 (_tmp6_); d = _tmp7_; _tmp8_ = lambda; _tmp9_ = vala_lambda_expression_get_method (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = d; _tmp12_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp11_, "CCode", "array_length", FALSE); vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp10_, "CCode", "array_length", _tmp12_, NULL); _tmp13_ = lambda; _tmp14_ = vala_lambda_expression_get_method (_tmp13_); _tmp15_ = _tmp14_; _tmp16_ = d; _tmp17_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp16_, "CCode", "array_null_terminated", FALSE); vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp15_, "CCode", "array_null_terminated", _tmp17_, NULL); _tmp18_ = lambda; _tmp19_ = vala_lambda_expression_get_method (_tmp18_); _tmp20_ = _tmp19_; _tmp21_ = d; _tmp22_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp21_, "CCode", "array_length_type"); _tmp23_ = _tmp22_; vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp20_, "CCode", "array_length_type", _tmp23_, NULL); _g_free0 (_tmp23_); _tmp24_ = lambda; vala_code_node_accept_children ((ValaCodeNode*) _tmp24_, (ValaCodeVisitor*) self); _tmp25_ = lambda; _tmp26_ = vala_expression_get_value_type ((ValaExpression*) _tmp25_); _tmp27_ = _tmp26_; _tmp28_ = vala_data_type_get_value_owned (_tmp27_); _tmp29_ = _tmp28_; expr_owned = _tmp29_; _tmp30_ = lambda; _tmp31_ = lambda; _tmp32_ = vala_lambda_expression_get_method (_tmp31_); _tmp33_ = _tmp32_; _tmp34_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp33_); _tmp35_ = _tmp34_; _tmp36_ = vala_ccode_identifier_new (_tmp35_); _tmp37_ = _tmp36_; vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp30_, (ValaCCodeExpression*) _tmp37_); _vala_ccode_node_unref0 (_tmp37_); _g_free0 (_tmp35_); _tmp38_ = lambda; _tmp39_ = vala_lambda_expression_get_method (_tmp38_); _tmp40_ = _tmp39_; _tmp41_ = vala_method_get_closure (_tmp40_); _tmp42_ = _tmp41_; if (_tmp42_) { ValaBlock* _tmp43_; ValaBlock* _tmp44_; gint _tmp45_ = 0; gint block_id; gint _tmp46_; gchar* _tmp47_ = NULL; gchar* _tmp48_; ValaCCodeExpression* _tmp49_ = NULL; ValaCCodeExpression* _tmp50_; ValaCCodeExpression* delegate_target; gboolean _tmp51_ = FALSE; gboolean _tmp52_; gboolean _tmp56_; ValaLambdaExpression* _tmp77_; ValaCCodeExpression* _tmp78_; _tmp43_ = vala_ccode_base_module_get_current_closure_block (self); _tmp44_ = _tmp43_; _tmp45_ = vala_ccode_base_module_get_block_id (self, _tmp44_); block_id = _tmp45_; _tmp46_ = block_id; _tmp47_ = g_strdup_printf ("_data%d_", _tmp46_); _tmp48_ = _tmp47_; _tmp49_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp48_); _tmp50_ = _tmp49_; _g_free0 (_tmp48_); delegate_target = _tmp50_; _tmp52_ = expr_owned; if (_tmp52_) { _tmp51_ = TRUE; } else { ValaDelegateType* _tmp53_; gboolean _tmp54_; gboolean _tmp55_; _tmp53_ = delegate_type; _tmp54_ = vala_delegate_type_get_is_called_once (_tmp53_); _tmp55_ = _tmp54_; _tmp51_ = _tmp55_; } _tmp56_ = _tmp51_; if (_tmp56_) { gint _tmp57_; gchar* _tmp58_ = NULL; gchar* _tmp59_; ValaCCodeIdentifier* _tmp60_; ValaCCodeIdentifier* _tmp61_; ValaCCodeFunctionCall* _tmp62_; ValaCCodeFunctionCall* _tmp63_; ValaCCodeFunctionCall* ref_call; ValaCCodeFunctionCall* _tmp64_; ValaCCodeExpression* _tmp65_; ValaCCodeFunctionCall* _tmp66_; ValaCCodeExpression* _tmp67_; ValaLambdaExpression* _tmp68_; gint _tmp69_; gchar* _tmp70_ = NULL; gchar* _tmp71_; ValaCCodeIdentifier* _tmp72_; ValaCCodeIdentifier* _tmp73_; _tmp57_ = block_id; _tmp58_ = g_strdup_printf ("block%d_data_ref", _tmp57_); _tmp59_ = _tmp58_; _tmp60_ = vala_ccode_identifier_new (_tmp59_); _tmp61_ = _tmp60_; _tmp62_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp61_); _tmp63_ = _tmp62_; _vala_ccode_node_unref0 (_tmp61_); _g_free0 (_tmp59_); ref_call = _tmp63_; _tmp64_ = ref_call; _tmp65_ = delegate_target; vala_ccode_function_call_add_argument (_tmp64_, _tmp65_); _tmp66_ = ref_call; _tmp67_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp66_); _vala_ccode_node_unref0 (delegate_target); delegate_target = _tmp67_; _tmp68_ = lambda; _tmp69_ = block_id; _tmp70_ = g_strdup_printf ("block%d_data_unref", _tmp69_); _tmp71_ = _tmp70_; _tmp72_ = vala_ccode_identifier_new (_tmp71_); _tmp73_ = _tmp72_; vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp68_, (ValaCCodeExpression*) _tmp73_); _vala_ccode_node_unref0 (_tmp73_); _g_free0 (_tmp71_); _vala_ccode_node_unref0 (ref_call); } else { ValaLambdaExpression* _tmp74_; ValaCCodeConstant* _tmp75_; ValaCCodeConstant* _tmp76_; _tmp74_ = lambda; _tmp75_ = vala_ccode_constant_new ("NULL"); _tmp76_ = _tmp75_; vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp74_, (ValaCCodeExpression*) _tmp76_); _vala_ccode_node_unref0 (_tmp76_); } _tmp77_ = lambda; _tmp78_ = delegate_target; vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp77_, _tmp78_); _vala_ccode_node_unref0 (delegate_target); } else { ValaDataType* _tmp79_ = NULL; ValaDataType* _tmp80_; gboolean _tmp81_; _tmp79_ = vala_ccode_base_module_get_this_type (self); _tmp80_ = _tmp79_; _tmp81_ = _tmp80_ != NULL; _vala_code_node_unref0 (_tmp80_); if (_tmp81_) { ValaCCodeExpression* _tmp82_ = NULL; ValaCCodeExpression* delegate_target; gboolean _tmp83_ = FALSE; gboolean _tmp84_; gboolean _tmp88_; ValaLambdaExpression* _tmp124_; ValaCCodeExpression* _tmp125_; _tmp82_ = vala_ccode_base_module_get_result_cexpression (self, "self"); delegate_target = _tmp82_; _tmp84_ = expr_owned; if (_tmp84_) { _tmp83_ = TRUE; } else { ValaDelegateType* _tmp85_; gboolean _tmp86_; gboolean _tmp87_; _tmp85_ = delegate_type; _tmp86_ = vala_delegate_type_get_is_called_once (_tmp85_); _tmp87_ = _tmp86_; _tmp83_ = _tmp87_; } _tmp88_ = _tmp83_; if (_tmp88_) { ValaDataType* _tmp89_ = NULL; ValaDataType* _tmp90_; gboolean _tmp91_; _tmp89_ = vala_ccode_base_module_get_this_type (self); _tmp90_ = _tmp89_; _tmp91_ = _tmp90_ != NULL; _vala_code_node_unref0 (_tmp90_); if (_tmp91_) { ValaDataType* _tmp92_ = NULL; ValaDataType* _tmp93_; ValaLambdaExpression* _tmp94_; ValaSourceReference* _tmp95_; ValaSourceReference* _tmp96_; ValaCCodeExpression* _tmp97_ = NULL; ValaCCodeExpression* _tmp98_; ValaCCodeFunctionCall* _tmp99_; ValaCCodeFunctionCall* _tmp100_; ValaCCodeFunctionCall* ref_call; ValaCCodeFunctionCall* _tmp101_; ValaCCodeExpression* _tmp102_; ValaCCodeFunctionCall* _tmp103_; ValaCCodeExpression* _tmp104_; ValaLambdaExpression* _tmp105_; ValaDataType* _tmp106_ = NULL; ValaDataType* _tmp107_; ValaCCodeExpression* _tmp108_ = NULL; ValaCCodeExpression* _tmp109_; _tmp92_ = vala_ccode_base_module_get_this_type (self); _tmp93_ = _tmp92_; _tmp94_ = lambda; _tmp95_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp94_); _tmp96_ = _tmp95_; _tmp97_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp93_, _tmp96_, FALSE); _tmp98_ = _tmp97_; _tmp99_ = vala_ccode_function_call_new (_tmp98_); _tmp100_ = _tmp99_; _vala_ccode_node_unref0 (_tmp98_); _vala_code_node_unref0 (_tmp93_); ref_call = _tmp100_; _tmp101_ = ref_call; _tmp102_ = delegate_target; vala_ccode_function_call_add_argument (_tmp101_, _tmp102_); _tmp103_ = ref_call; _tmp104_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp103_); _vala_ccode_node_unref0 (delegate_target); delegate_target = _tmp104_; _tmp105_ = lambda; _tmp106_ = vala_ccode_base_module_get_this_type (self); _tmp107_ = _tmp106_; _tmp108_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp107_, FALSE); _tmp109_ = _tmp108_; vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp105_, _tmp109_); _vala_ccode_node_unref0 (_tmp109_); _vala_code_node_unref0 (_tmp107_); _vala_ccode_node_unref0 (ref_call); } else { ValaCCodeIdentifier* _tmp110_; ValaCCodeIdentifier* _tmp111_; ValaCCodeFunctionCall* _tmp112_; ValaCCodeFunctionCall* _tmp113_; ValaCCodeFunctionCall* ref_call; ValaCCodeFunctionCall* _tmp114_; ValaCCodeExpression* _tmp115_; ValaCCodeFunctionCall* _tmp116_; ValaCCodeExpression* _tmp117_; ValaLambdaExpression* _tmp118_; ValaCCodeIdentifier* _tmp119_; ValaCCodeIdentifier* _tmp120_; _tmp110_ = vala_ccode_identifier_new ("g_object_ref"); _tmp111_ = _tmp110_; _tmp112_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp111_); _tmp113_ = _tmp112_; _vala_ccode_node_unref0 (_tmp111_); ref_call = _tmp113_; _tmp114_ = ref_call; _tmp115_ = delegate_target; vala_ccode_function_call_add_argument (_tmp114_, _tmp115_); _tmp116_ = ref_call; _tmp117_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp116_); _vala_ccode_node_unref0 (delegate_target); delegate_target = _tmp117_; _tmp118_ = lambda; _tmp119_ = vala_ccode_identifier_new ("g_object_unref"); _tmp120_ = _tmp119_; vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp118_, (ValaCCodeExpression*) _tmp120_); _vala_ccode_node_unref0 (_tmp120_); _vala_ccode_node_unref0 (ref_call); } } else { ValaLambdaExpression* _tmp121_; ValaCCodeConstant* _tmp122_; ValaCCodeConstant* _tmp123_; _tmp121_ = lambda; _tmp122_ = vala_ccode_constant_new ("NULL"); _tmp123_ = _tmp122_; vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp121_, (ValaCCodeExpression*) _tmp123_); _vala_ccode_node_unref0 (_tmp123_); } _tmp124_ = lambda; _tmp125_ = delegate_target; vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp124_, _tmp125_); _vala_ccode_node_unref0 (delegate_target); } else { ValaLambdaExpression* _tmp126_; ValaCCodeConstant* _tmp127_; ValaCCodeConstant* _tmp128_; ValaLambdaExpression* _tmp129_; ValaCCodeConstant* _tmp130_; ValaCCodeConstant* _tmp131_; _tmp126_ = lambda; _tmp127_ = vala_ccode_constant_new ("NULL"); _tmp128_ = _tmp127_; vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp126_, (ValaCCodeExpression*) _tmp128_); _vala_ccode_node_unref0 (_tmp128_); _tmp129_ = lambda; _tmp130_ = vala_ccode_constant_new ("NULL"); _tmp131_ = _tmp130_; vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp129_, (ValaCCodeExpression*) _tmp131_); _vala_ccode_node_unref0 (_tmp131_); } } _vala_code_node_unref0 (d); _vala_code_node_unref0 (delegate_type); } ValaCCodeExpression* vala_ccode_base_module_convert_from_generic_pointer (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr, ValaDataType* actual_type) { ValaCCodeExpression* result = NULL; ValaCCodeExpression* _tmp0_; ValaCCodeExpression* _tmp1_; ValaCCodeExpression* _result_; gboolean _tmp2_ = FALSE; ValaDataType* _tmp3_; gboolean _tmp4_ = FALSE; gboolean _tmp7_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (cexpr != NULL, NULL); g_return_val_if_fail (actual_type != NULL, NULL); _tmp0_ = cexpr; _tmp1_ = _vala_ccode_node_ref0 (_tmp0_); _result_ = _tmp1_; _tmp3_ = actual_type; _tmp4_ = vala_ccode_base_module_is_reference_type_argument (self, _tmp3_); if (_tmp4_) { _tmp2_ = TRUE; } else { ValaDataType* _tmp5_; gboolean _tmp6_ = FALSE; _tmp5_ = actual_type; _tmp6_ = vala_ccode_base_module_is_nullable_value_type_argument (self, _tmp5_); _tmp2_ = _tmp6_; } _tmp7_ = _tmp2_; if (_tmp7_) { ValaCCodeExpression* _tmp8_; ValaDataType* _tmp9_; gchar* _tmp10_ = NULL; gchar* _tmp11_; ValaCCodeCastExpression* _tmp12_; _tmp8_ = cexpr; _tmp9_ = actual_type; _tmp10_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp9_); _tmp11_ = _tmp10_; _tmp12_ = vala_ccode_cast_expression_new (_tmp8_, _tmp11_); _vala_ccode_node_unref0 (_result_); _result_ = (ValaCCodeExpression*) _tmp12_; _g_free0 (_tmp11_); } else { ValaDataType* _tmp13_; gboolean _tmp14_ = FALSE; _tmp13_ = actual_type; _tmp14_ = vala_ccode_base_module_is_signed_integer_type_argument (self, _tmp13_); if (_tmp14_) { ValaCCodeIdentifier* _tmp15_; ValaCCodeIdentifier* _tmp16_; ValaCCodeFunctionCall* _tmp17_; ValaCCodeFunctionCall* _tmp18_; ValaCCodeFunctionCall* cconv; ValaCCodeFunctionCall* _tmp19_; ValaCCodeExpression* _tmp20_; ValaCCodeFunctionCall* _tmp21_; ValaCCodeExpression* _tmp22_; _tmp15_ = vala_ccode_identifier_new ("GPOINTER_TO_INT"); _tmp16_ = _tmp15_; _tmp17_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp16_); _tmp18_ = _tmp17_; _vala_ccode_node_unref0 (_tmp16_); cconv = _tmp18_; _tmp19_ = cconv; _tmp20_ = cexpr; vala_ccode_function_call_add_argument (_tmp19_, _tmp20_); _tmp21_ = cconv; _tmp22_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp21_); _vala_ccode_node_unref0 (_result_); _result_ = _tmp22_; _vala_ccode_node_unref0 (cconv); } else { ValaDataType* _tmp23_; gboolean _tmp24_ = FALSE; _tmp23_ = actual_type; _tmp24_ = vala_ccode_base_module_is_unsigned_integer_type_argument (self, _tmp23_); if (_tmp24_) { ValaCCodeIdentifier* _tmp25_; ValaCCodeIdentifier* _tmp26_; ValaCCodeFunctionCall* _tmp27_; ValaCCodeFunctionCall* _tmp28_; ValaCCodeFunctionCall* cconv; ValaCCodeFunctionCall* _tmp29_; ValaCCodeExpression* _tmp30_; ValaCCodeFunctionCall* _tmp31_; ValaCCodeExpression* _tmp32_; _tmp25_ = vala_ccode_identifier_new ("GPOINTER_TO_UINT"); _tmp26_ = _tmp25_; _tmp27_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp26_); _tmp28_ = _tmp27_; _vala_ccode_node_unref0 (_tmp26_); cconv = _tmp28_; _tmp29_ = cconv; _tmp30_ = cexpr; vala_ccode_function_call_add_argument (_tmp29_, _tmp30_); _tmp31_ = cconv; _tmp32_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp31_); _vala_ccode_node_unref0 (_result_); _result_ = _tmp32_; _vala_ccode_node_unref0 (cconv); } } } result = _result_; return result; } ValaCCodeExpression* vala_ccode_base_module_convert_to_generic_pointer (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr, ValaDataType* actual_type) { ValaCCodeExpression* result = NULL; ValaCCodeExpression* _tmp0_; ValaCCodeExpression* _tmp1_; ValaCCodeExpression* _result_; ValaDataType* _tmp2_; gboolean _tmp3_ = FALSE; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (cexpr != NULL, NULL); g_return_val_if_fail (actual_type != NULL, NULL); _tmp0_ = cexpr; _tmp1_ = _vala_ccode_node_ref0 (_tmp0_); _result_ = _tmp1_; _tmp2_ = actual_type; _tmp3_ = vala_ccode_base_module_is_signed_integer_type_argument (self, _tmp2_); if (_tmp3_) { ValaCCodeIdentifier* _tmp4_; ValaCCodeIdentifier* _tmp5_; ValaCCodeFunctionCall* _tmp6_; ValaCCodeFunctionCall* _tmp7_; ValaCCodeFunctionCall* cconv; ValaCCodeFunctionCall* _tmp8_; ValaCCodeExpression* _tmp9_; ValaCCodeFunctionCall* _tmp10_; ValaCCodeExpression* _tmp11_; _tmp4_ = vala_ccode_identifier_new ("GINT_TO_POINTER"); _tmp5_ = _tmp4_; _tmp6_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp5_); _tmp7_ = _tmp6_; _vala_ccode_node_unref0 (_tmp5_); cconv = _tmp7_; _tmp8_ = cconv; _tmp9_ = cexpr; vala_ccode_function_call_add_argument (_tmp8_, _tmp9_); _tmp10_ = cconv; _tmp11_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp10_); _vala_ccode_node_unref0 (_result_); _result_ = _tmp11_; _vala_ccode_node_unref0 (cconv); } else { ValaDataType* _tmp12_; gboolean _tmp13_ = FALSE; _tmp12_ = actual_type; _tmp13_ = vala_ccode_base_module_is_unsigned_integer_type_argument (self, _tmp12_); if (_tmp13_) { ValaCCodeIdentifier* _tmp14_; ValaCCodeIdentifier* _tmp15_; ValaCCodeFunctionCall* _tmp16_; ValaCCodeFunctionCall* _tmp17_; ValaCCodeFunctionCall* cconv; ValaCCodeFunctionCall* _tmp18_; ValaCCodeExpression* _tmp19_; ValaCCodeFunctionCall* _tmp20_; ValaCCodeExpression* _tmp21_; _tmp14_ = vala_ccode_identifier_new ("GUINT_TO_POINTER"); _tmp15_ = _tmp14_; _tmp16_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp15_); _tmp17_ = _tmp16_; _vala_ccode_node_unref0 (_tmp15_); cconv = _tmp17_; _tmp18_ = cconv; _tmp19_ = cexpr; vala_ccode_function_call_add_argument (_tmp18_, _tmp19_); _tmp20_ = cconv; _tmp21_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp20_); _vala_ccode_node_unref0 (_result_); _result_ = _tmp21_; _vala_ccode_node_unref0 (cconv); } } result = _result_; return result; } ValaTargetValue* vala_ccode_base_module_transform_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaDataType* target_type, ValaCodeNode* node) { ValaTargetValue* result = NULL; ValaTargetValue* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaDataType* _tmp3_; ValaDataType* type; ValaTargetValue* _tmp4_; ValaGLibValue* _tmp5_ = NULL; ValaGLibValue* _result_; gboolean requires_temp_value; gboolean _tmp6_ = FALSE; ValaDataType* _tmp7_; gboolean _tmp8_; gboolean _tmp9_; gboolean _tmp13_; gboolean _tmp49_ = FALSE; gboolean _tmp50_ = FALSE; gboolean _tmp51_ = FALSE; ValaDataType* _tmp52_; gboolean _tmp56_; gboolean _tmp58_; gboolean _tmp62_; gboolean boxing; gboolean _tmp63_ = FALSE; gboolean _tmp64_ = FALSE; gboolean _tmp65_ = FALSE; ValaDataType* _tmp66_; gboolean _tmp70_; gboolean _tmp72_; gboolean _tmp76_; gboolean unboxing; gboolean _tmp77_ = FALSE; gboolean _tmp78_ = FALSE; gboolean _tmp79_ = FALSE; gboolean _tmp80_ = FALSE; ValaCodeContext* _tmp81_; ValaProfile _tmp82_; ValaProfile _tmp83_; gboolean _tmp85_; gboolean _tmp90_; gboolean _tmp92_; gboolean _tmp96_; gboolean gvalue_boxing; gboolean _tmp97_ = FALSE; gboolean _tmp98_ = FALSE; gboolean _tmp99_ = FALSE; gboolean _tmp100_ = FALSE; ValaCodeContext* _tmp101_; ValaProfile _tmp102_; ValaProfile _tmp103_; gboolean _tmp105_; gboolean _tmp110_; gboolean _tmp112_; gboolean _tmp117_; gboolean gvariant_boxing; gboolean _tmp118_ = FALSE; gboolean _tmp119_ = FALSE; ValaDataType* _tmp120_; gboolean _tmp121_; gboolean _tmp122_; gboolean _tmp135_; gboolean _tmp137_; ValaDataType* _tmp161_; ValaGLibValue* _tmp162_; ValaDataType* _tmp163_; ValaDataType* _tmp164_ = NULL; ValaDataType* _tmp165_; gboolean _tmp166_; gboolean _tmp386_ = FALSE; gboolean _tmp387_; gboolean _tmp394_; gboolean _tmp398_ = FALSE; gboolean _tmp399_ = FALSE; gboolean _tmp400_ = FALSE; gboolean _tmp401_ = FALSE; gboolean _tmp402_ = FALSE; gboolean _tmp403_; gboolean _tmp405_; gboolean _tmp409_; gboolean _tmp419_; gboolean _tmp422_; gboolean _tmp424_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (value != NULL, NULL); g_return_val_if_fail (node != NULL, NULL); _tmp0_ = value; _tmp1_ = vala_target_value_get_value_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (_tmp2_); type = _tmp3_; _tmp4_ = value; _tmp5_ = vala_glib_value_copy (VALA_GLIB_VALUE (_tmp4_)); _result_ = _tmp5_; requires_temp_value = FALSE; _tmp7_ = type; _tmp8_ = vala_data_type_get_value_owned (_tmp7_); _tmp9_ = _tmp8_; if (_tmp9_) { ValaDataType* _tmp10_; gboolean _tmp11_; gboolean _tmp12_; _tmp10_ = type; _tmp11_ = vala_data_type_get_floating_reference (_tmp10_); _tmp12_ = _tmp11_; _tmp6_ = _tmp12_; } else { _tmp6_ = FALSE; } _tmp13_ = _tmp6_; if (_tmp13_) { ValaDataType* _tmp14_; ValaTypeSymbol* _tmp15_; ValaTypeSymbol* _tmp16_; ValaObjectTypeSymbol* _tmp17_; ValaObjectTypeSymbol* cl; gchar* _tmp18_ = NULL; ValaObjectTypeSymbol* _tmp19_; const gchar* _tmp23_; gchar* _tmp24_; gchar* sink_func; const gchar* _tmp25_; _tmp14_ = type; _tmp15_ = vala_data_type_get_data_type (_tmp14_); _tmp16_ = _tmp15_; _tmp17_ = _vala_code_node_ref0 (VALA_IS_OBJECT_TYPE_SYMBOL (_tmp16_) ? ((ValaObjectTypeSymbol*) _tmp16_) : NULL); cl = _tmp17_; _tmp19_ = cl; if (_tmp19_ != NULL) { ValaObjectTypeSymbol* _tmp20_; gchar* _tmp21_ = NULL; _tmp20_ = cl; _tmp21_ = vala_ccode_base_module_get_ccode_ref_sink_function (_tmp20_); _g_free0 (_tmp18_); _tmp18_ = _tmp21_; } else { gchar* _tmp22_; _tmp22_ = g_strdup (""); _g_free0 (_tmp18_); _tmp18_ = _tmp22_; } _tmp23_ = _tmp18_; _tmp24_ = g_strdup (_tmp23_); sink_func = _tmp24_; _tmp25_ = sink_func; if (g_strcmp0 (_tmp25_, "") != 0) { const gchar* _tmp26_; ValaCCodeIdentifier* _tmp27_; ValaCCodeIdentifier* _tmp28_; ValaCCodeFunctionCall* _tmp29_; ValaCCodeFunctionCall* _tmp30_; ValaCCodeFunctionCall* csink; ValaCCodeFunctionCall* _tmp31_; ValaGLibValue* _tmp32_; ValaCCodeExpression* _tmp33_; ValaDataType* _tmp34_; gboolean _tmp35_ = FALSE; _tmp26_ = sink_func; _tmp27_ = vala_ccode_identifier_new (_tmp26_); _tmp28_ = _tmp27_; _tmp29_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp28_); _tmp30_ = _tmp29_; _vala_ccode_node_unref0 (_tmp28_); csink = _tmp30_; _tmp31_ = csink; _tmp32_ = _result_; _tmp33_ = _tmp32_->cvalue; vala_ccode_function_call_add_argument (_tmp31_, _tmp33_); _tmp34_ = type; _tmp35_ = vala_ccode_base_module_is_ref_sink_function_void (self, _tmp34_); if (!_tmp35_) { ValaGLibValue* _tmp36_; ValaCCodeFunctionCall* _tmp37_; ValaCCodeExpression* _tmp38_; _tmp36_ = _result_; _tmp37_ = csink; _tmp38_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp37_); _vala_ccode_node_unref0 (_tmp36_->cvalue); _tmp36_->cvalue = _tmp38_; requires_temp_value = TRUE; } else { ValaCCodeFunction* _tmp39_; ValaCCodeFunction* _tmp40_; ValaCCodeFunctionCall* _tmp41_; _tmp39_ = vala_ccode_base_module_get_ccode (self); _tmp40_ = _tmp39_; _tmp41_ = csink; vala_ccode_function_add_expression (_tmp40_, (ValaCCodeExpression*) _tmp41_); } _vala_ccode_node_unref0 (csink); } else { ValaDataType* _tmp42_; ValaTypeSymbol* _tmp43_; ValaTypeSymbol* _tmp44_; const gchar* _tmp45_; const gchar* _tmp46_; gchar* _tmp47_ = NULL; gchar* _tmp48_; _tmp42_ = type; _tmp43_ = vala_data_type_get_data_type (_tmp42_); _tmp44_ = _tmp43_; _tmp45_ = vala_symbol_get_name ((ValaSymbol*) _tmp44_); _tmp46_ = _tmp45_; _tmp47_ = g_strdup_printf ("type `%s' does not support floating references", _tmp46_); _tmp48_ = _tmp47_; vala_report_error (NULL, _tmp48_); _g_free0 (_tmp48_); } _g_free0 (sink_func); _g_free0 (_tmp18_); _vala_code_node_unref0 (cl); } _tmp52_ = type; if (VALA_IS_VALUE_TYPE (_tmp52_)) { ValaDataType* _tmp53_; gboolean _tmp54_; gboolean _tmp55_; _tmp53_ = type; _tmp54_ = vala_data_type_get_nullable (_tmp53_); _tmp55_ = _tmp54_; _tmp51_ = !_tmp55_; } else { _tmp51_ = FALSE; } _tmp56_ = _tmp51_; if (_tmp56_) { ValaDataType* _tmp57_; _tmp57_ = target_type; _tmp50_ = VALA_IS_VALUE_TYPE (_tmp57_); } else { _tmp50_ = FALSE; } _tmp58_ = _tmp50_; if (_tmp58_) { ValaDataType* _tmp59_; gboolean _tmp60_; gboolean _tmp61_; _tmp59_ = target_type; _tmp60_ = vala_data_type_get_nullable (_tmp59_); _tmp61_ = _tmp60_; _tmp49_ = _tmp61_; } else { _tmp49_ = FALSE; } _tmp62_ = _tmp49_; boxing = _tmp62_; _tmp66_ = type; if (VALA_IS_VALUE_TYPE (_tmp66_)) { ValaDataType* _tmp67_; gboolean _tmp68_; gboolean _tmp69_; _tmp67_ = type; _tmp68_ = vala_data_type_get_nullable (_tmp67_); _tmp69_ = _tmp68_; _tmp65_ = _tmp69_; } else { _tmp65_ = FALSE; } _tmp70_ = _tmp65_; if (_tmp70_) { ValaDataType* _tmp71_; _tmp71_ = target_type; _tmp64_ = VALA_IS_VALUE_TYPE (_tmp71_); } else { _tmp64_ = FALSE; } _tmp72_ = _tmp64_; if (_tmp72_) { ValaDataType* _tmp73_; gboolean _tmp74_; gboolean _tmp75_; _tmp73_ = target_type; _tmp74_ = vala_data_type_get_nullable (_tmp73_); _tmp75_ = _tmp74_; _tmp63_ = !_tmp75_; } else { _tmp63_ = FALSE; } _tmp76_ = _tmp63_; unboxing = _tmp76_; _tmp81_ = self->priv->_context; _tmp82_ = vala_code_context_get_profile (_tmp81_); _tmp83_ = _tmp82_; if (_tmp83_ == VALA_PROFILE_GOBJECT) { ValaDataType* _tmp84_; _tmp84_ = target_type; _tmp80_ = _tmp84_ != NULL; } else { _tmp80_ = FALSE; } _tmp85_ = _tmp80_; if (_tmp85_) { ValaDataType* _tmp86_; ValaTypeSymbol* _tmp87_; ValaTypeSymbol* _tmp88_; ValaStruct* _tmp89_; _tmp86_ = target_type; _tmp87_ = vala_data_type_get_data_type (_tmp86_); _tmp88_ = _tmp87_; _tmp89_ = self->gvalue_type; _tmp79_ = _tmp88_ == VALA_TYPESYMBOL (_tmp89_); } else { _tmp79_ = FALSE; } _tmp90_ = _tmp79_; if (_tmp90_) { ValaDataType* _tmp91_; _tmp91_ = type; _tmp78_ = !VALA_IS_NULL_TYPE (_tmp91_); } else { _tmp78_ = FALSE; } _tmp92_ = _tmp78_; if (_tmp92_) { ValaDataType* _tmp93_; gchar* _tmp94_ = NULL; gchar* _tmp95_; _tmp93_ = type; _tmp94_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp93_); _tmp95_ = _tmp94_; _tmp77_ = g_strcmp0 (_tmp95_, "G_TYPE_VALUE") != 0; _g_free0 (_tmp95_); } else { _tmp77_ = FALSE; } _tmp96_ = _tmp77_; gvalue_boxing = _tmp96_; _tmp101_ = self->priv->_context; _tmp102_ = vala_code_context_get_profile (_tmp101_); _tmp103_ = _tmp102_; if (_tmp103_ == VALA_PROFILE_GOBJECT) { ValaDataType* _tmp104_; _tmp104_ = target_type; _tmp100_ = _tmp104_ != NULL; } else { _tmp100_ = FALSE; } _tmp105_ = _tmp100_; if (_tmp105_) { ValaDataType* _tmp106_; ValaTypeSymbol* _tmp107_; ValaTypeSymbol* _tmp108_; ValaClass* _tmp109_; _tmp106_ = target_type; _tmp107_ = vala_data_type_get_data_type (_tmp106_); _tmp108_ = _tmp107_; _tmp109_ = self->gvariant_type; _tmp99_ = _tmp108_ == VALA_TYPESYMBOL (_tmp109_); } else { _tmp99_ = FALSE; } _tmp110_ = _tmp99_; if (_tmp110_) { ValaDataType* _tmp111_; _tmp111_ = type; _tmp98_ = !VALA_IS_NULL_TYPE (_tmp111_); } else { _tmp98_ = FALSE; } _tmp112_ = _tmp98_; if (_tmp112_) { ValaDataType* _tmp113_; ValaTypeSymbol* _tmp114_; ValaTypeSymbol* _tmp115_; ValaClass* _tmp116_; _tmp113_ = type; _tmp114_ = vala_data_type_get_data_type (_tmp113_); _tmp115_ = _tmp114_; _tmp116_ = self->gvariant_type; _tmp97_ = _tmp115_ != VALA_TYPESYMBOL (_tmp116_); } else { _tmp97_ = FALSE; } _tmp117_ = _tmp97_; gvariant_boxing = _tmp117_; _tmp120_ = type; _tmp121_ = vala_data_type_get_value_owned (_tmp120_); _tmp122_ = _tmp121_; if (_tmp122_) { gboolean _tmp123_ = FALSE; gboolean _tmp124_ = FALSE; gboolean _tmp125_ = FALSE; ValaDataType* _tmp126_; gboolean _tmp130_; gboolean _tmp132_; gboolean _tmp134_; _tmp126_ = target_type; if (_tmp126_ == NULL) { _tmp125_ = TRUE; } else { ValaDataType* _tmp127_; gboolean _tmp128_; gboolean _tmp129_; _tmp127_ = target_type; _tmp128_ = vala_data_type_get_value_owned (_tmp127_); _tmp129_ = _tmp128_; _tmp125_ = !_tmp129_; } _tmp130_ = _tmp125_; if (_tmp130_) { _tmp124_ = TRUE; } else { gboolean _tmp131_; _tmp131_ = boxing; _tmp124_ = _tmp131_; } _tmp132_ = _tmp124_; if (_tmp132_) { _tmp123_ = TRUE; } else { gboolean _tmp133_; _tmp133_ = unboxing; _tmp123_ = _tmp133_; } _tmp134_ = _tmp123_; _tmp119_ = _tmp134_; } else { _tmp119_ = FALSE; } _tmp135_ = _tmp119_; if (_tmp135_) { gboolean _tmp136_; _tmp136_ = gvalue_boxing; _tmp118_ = !_tmp136_; } else { _tmp118_ = FALSE; } _tmp137_ = _tmp118_; if (_tmp137_) { ValaDataType* _tmp138_; _tmp138_ = target_type; if (VALA_IS_POINTER_TYPE (_tmp138_)) { } else { ValaDataType* _tmp139_; gboolean _tmp140_ = FALSE; _tmp139_ = type; _tmp140_ = vala_ccode_base_module_requires_destroy (self, _tmp139_); if (_tmp140_) { ValaDataType* _tmp141_; gboolean _tmp142_ = FALSE; _tmp141_ = type; _tmp142_ = vala_ccode_base_module_is_lvalue_access_allowed (self, _tmp141_); if (!_tmp142_) { ValaArrayList* _tmp143_; ValaArrayList* _tmp144_; ValaGLibValue* _tmp145_; ValaGLibValue* _tmp146_ = NULL; ValaGLibValue* _tmp147_; _tmp143_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp144_ = _tmp143_; _tmp145_ = _result_; _tmp146_ = vala_glib_value_copy (_tmp145_); _tmp147_ = _tmp146_; vala_list_insert ((ValaList*) _tmp144_, 0, (ValaTargetValue*) _tmp147_); _vala_target_value_unref0 (_tmp147_); } else { ValaDataType* _tmp148_; ValaCodeNode* _tmp149_; ValaTargetValue* _tmp150_ = NULL; ValaTargetValue* temp_value; ValaArrayList* _tmp151_; ValaArrayList* _tmp152_; ValaTargetValue* _tmp153_; ValaGLibValue* _tmp154_ = NULL; ValaGLibValue* _tmp155_; ValaTargetValue* _tmp156_; ValaGLibValue* _tmp157_; ValaGLibValue* _tmp158_; ValaTargetValue* _tmp159_; ValaCCodeExpression* _tmp160_ = NULL; _tmp148_ = type; _tmp149_ = node; _tmp150_ = vala_ccode_base_module_create_temp_value (self, _tmp148_, FALSE, _tmp149_, NULL); temp_value = _tmp150_; _tmp151_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp152_ = _tmp151_; _tmp153_ = temp_value; _tmp154_ = vala_glib_value_copy (VALA_GLIB_VALUE (_tmp153_)); _tmp155_ = _tmp154_; vala_list_insert ((ValaList*) _tmp152_, 0, (ValaTargetValue*) _tmp155_); _vala_target_value_unref0 (_tmp155_); _tmp156_ = temp_value; _tmp157_ = _result_; vala_ccode_base_module_store_value (self, _tmp156_, (ValaTargetValue*) _tmp157_); _tmp158_ = _result_; _tmp159_ = temp_value; _tmp160_ = vala_ccode_base_module_get_cvalue_ (self, _tmp159_); _vala_ccode_node_unref0 (_tmp158_->cvalue); _tmp158_->cvalue = _tmp160_; requires_temp_value = FALSE; _vala_target_value_unref0 (temp_value); } } } } _tmp161_ = target_type; if (_tmp161_ == NULL) { result = (ValaTargetValue*) _result_; _vala_code_node_unref0 (type); return result; } _tmp162_ = _result_; _tmp163_ = target_type; _tmp164_ = vala_data_type_copy (_tmp163_); _tmp165_ = _tmp164_; vala_target_value_set_value_type ((ValaTargetValue*) _tmp162_, _tmp165_); _vala_code_node_unref0 (_tmp165_); _tmp166_ = gvalue_boxing; if (_tmp166_) { ValaDataType* _tmp167_; ValaCodeNode* _tmp168_; gboolean _tmp169_; ValaTargetValue* _tmp170_ = NULL; ValaTargetValue* temp_value; ValaDataType* _tmp171_; gboolean _tmp172_; gboolean _tmp173_; ValaDataType* _tmp179_; gboolean _tmp180_; gboolean _tmp181_; ValaCCodeIdentifier* _tmp201_; ValaCCodeIdentifier* _tmp202_; ValaCCodeFunctionCall* _tmp203_; ValaCCodeFunctionCall* _tmp204_; ValaCCodeFunctionCall* ccall; ValaDataType* _tmp205_; gboolean _tmp206_; gboolean _tmp207_; ValaDataType* _tmp218_; gchar* _tmp219_ = NULL; gchar* type_id; const gchar* _tmp220_; ValaCCodeFunctionCall* _tmp229_; const gchar* _tmp230_; ValaCCodeIdentifier* _tmp231_; ValaCCodeIdentifier* _tmp232_; ValaCCodeFunction* _tmp233_; ValaCCodeFunction* _tmp234_; ValaCCodeFunctionCall* _tmp235_; ValaDataType* _tmp236_; gboolean _tmp237_ = FALSE; ValaDataType* _tmp246_; gboolean _tmp247_; gboolean _tmp248_; ValaDataType* _tmp259_; gboolean _tmp260_ = FALSE; ValaCCodeFunction* _tmp269_; ValaCCodeFunction* _tmp270_; ValaCCodeFunctionCall* _tmp271_; ValaTargetValue* _tmp272_; ValaGLibValue* _tmp273_; _tmp167_ = target_type; _tmp168_ = node; _tmp169_ = TRUE; _tmp170_ = vala_ccode_base_module_create_temp_value (self, _tmp167_, TRUE, _tmp168_, &_tmp169_); temp_value = _tmp170_; _tmp171_ = target_type; _tmp172_ = vala_data_type_get_value_owned (_tmp171_); _tmp173_ = _tmp172_; if (!_tmp173_) { ValaArrayList* _tmp174_; ValaArrayList* _tmp175_; ValaTargetValue* _tmp176_; ValaGLibValue* _tmp177_ = NULL; ValaGLibValue* _tmp178_; _tmp174_ = vala_ccode_base_module_get_temp_ref_values (self); _tmp175_ = _tmp174_; _tmp176_ = temp_value; _tmp177_ = vala_glib_value_copy (VALA_GLIB_VALUE (_tmp176_)); _tmp178_ = _tmp177_; vala_list_insert ((ValaList*) _tmp175_, 0, (ValaTargetValue*) _tmp178_); _vala_target_value_unref0 (_tmp178_); } _tmp179_ = target_type; _tmp180_ = vala_data_type_get_nullable (_tmp179_); _tmp181_ = _tmp180_; if (_tmp181_) { ValaCCodeIdentifier* _tmp182_; ValaCCodeIdentifier* _tmp183_; ValaCCodeFunctionCall* _tmp184_; ValaCCodeFunctionCall* _tmp185_; ValaCCodeFunctionCall* newcall; ValaCCodeFunctionCall* _tmp186_; ValaCCodeConstant* _tmp187_; ValaCCodeConstant* _tmp188_; ValaCCodeFunctionCall* _tmp189_; ValaCCodeConstant* _tmp190_; ValaCCodeConstant* _tmp191_; ValaTargetValue* _tmp192_; ValaCCodeExpression* _tmp193_ = NULL; ValaCCodeExpression* _tmp194_; ValaCCodeFunctionCall* _tmp195_; ValaCCodeAssignment* _tmp196_; ValaCCodeAssignment* _tmp197_; ValaCCodeAssignment* newassignment; ValaCCodeFunction* _tmp198_; ValaCCodeFunction* _tmp199_; ValaCCodeAssignment* _tmp200_; _tmp182_ = vala_ccode_identifier_new ("g_new0"); _tmp183_ = _tmp182_; _tmp184_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp183_); _tmp185_ = _tmp184_; _vala_ccode_node_unref0 (_tmp183_); newcall = _tmp185_; _tmp186_ = newcall; _tmp187_ = vala_ccode_constant_new ("GValue"); _tmp188_ = _tmp187_; vala_ccode_function_call_add_argument (_tmp186_, (ValaCCodeExpression*) _tmp188_); _vala_ccode_node_unref0 (_tmp188_); _tmp189_ = newcall; _tmp190_ = vala_ccode_constant_new ("1"); _tmp191_ = _tmp190_; vala_ccode_function_call_add_argument (_tmp189_, (ValaCCodeExpression*) _tmp191_); _vala_ccode_node_unref0 (_tmp191_); _tmp192_ = temp_value; _tmp193_ = vala_ccode_base_module_get_cvalue_ (self, _tmp192_); _tmp194_ = _tmp193_; _tmp195_ = newcall; _tmp196_ = vala_ccode_assignment_new (_tmp194_, (ValaCCodeExpression*) _tmp195_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp197_ = _tmp196_; _vala_ccode_node_unref0 (_tmp194_); newassignment = _tmp197_; _tmp198_ = vala_ccode_base_module_get_ccode (self); _tmp199_ = _tmp198_; _tmp200_ = newassignment; vala_ccode_function_add_expression (_tmp199_, (ValaCCodeExpression*) _tmp200_); _vala_ccode_node_unref0 (newassignment); _vala_ccode_node_unref0 (newcall); } _tmp201_ = vala_ccode_identifier_new ("g_value_init"); _tmp202_ = _tmp201_; _tmp203_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp202_); _tmp204_ = _tmp203_; _vala_ccode_node_unref0 (_tmp202_); ccall = _tmp204_; _tmp205_ = target_type; _tmp206_ = vala_data_type_get_nullable (_tmp205_); _tmp207_ = _tmp206_; if (_tmp207_) { ValaCCodeFunctionCall* _tmp208_; ValaTargetValue* _tmp209_; ValaCCodeExpression* _tmp210_ = NULL; ValaCCodeExpression* _tmp211_; _tmp208_ = ccall; _tmp209_ = temp_value; _tmp210_ = vala_ccode_base_module_get_cvalue_ (self, _tmp209_); _tmp211_ = _tmp210_; vala_ccode_function_call_add_argument (_tmp208_, _tmp211_); _vala_ccode_node_unref0 (_tmp211_); } else { ValaCCodeFunctionCall* _tmp212_; ValaTargetValue* _tmp213_; ValaCCodeExpression* _tmp214_ = NULL; ValaCCodeExpression* _tmp215_; ValaCCodeUnaryExpression* _tmp216_; ValaCCodeUnaryExpression* _tmp217_; _tmp212_ = ccall; _tmp213_ = temp_value; _tmp214_ = vala_ccode_base_module_get_cvalue_ (self, _tmp213_); _tmp215_ = _tmp214_; _tmp216_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp215_); _tmp217_ = _tmp216_; vala_ccode_function_call_add_argument (_tmp212_, (ValaCCodeExpression*) _tmp217_); _vala_ccode_node_unref0 (_tmp217_); _vala_ccode_node_unref0 (_tmp215_); } _tmp218_ = type; _tmp219_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp218_); type_id = _tmp219_; _tmp220_ = type_id; if (g_strcmp0 (_tmp220_, "") == 0) { ValaCodeNode* _tmp221_; ValaSourceReference* _tmp222_; ValaSourceReference* _tmp223_; ValaDataType* _tmp224_; gchar* _tmp225_ = NULL; gchar* _tmp226_; gchar* _tmp227_ = NULL; gchar* _tmp228_; _tmp221_ = node; _tmp222_ = vala_code_node_get_source_reference (_tmp221_); _tmp223_ = _tmp222_; _tmp224_ = type; _tmp225_ = vala_code_node_to_string ((ValaCodeNode*) _tmp224_); _tmp226_ = _tmp225_; _tmp227_ = g_strdup_printf ("GValue boxing of type `%s' is not supported", _tmp226_); _tmp228_ = _tmp227_; vala_report_error (_tmp223_, _tmp228_); _g_free0 (_tmp228_); _g_free0 (_tmp226_); } _tmp229_ = ccall; _tmp230_ = type_id; _tmp231_ = vala_ccode_identifier_new (_tmp230_); _tmp232_ = _tmp231_; vala_ccode_function_call_add_argument (_tmp229_, (ValaCCodeExpression*) _tmp232_); _vala_ccode_node_unref0 (_tmp232_); _tmp233_ = vala_ccode_base_module_get_ccode (self); _tmp234_ = _tmp233_; _tmp235_ = ccall; vala_ccode_function_add_expression (_tmp234_, (ValaCCodeExpression*) _tmp235_); _tmp236_ = type; _tmp237_ = vala_ccode_base_module_requires_destroy (self, _tmp236_); if (_tmp237_) { ValaDataType* _tmp238_; ValaCCodeIdentifier* _tmp239_ = NULL; ValaCCodeIdentifier* _tmp240_; ValaCCodeFunctionCall* _tmp241_; _tmp238_ = type; _tmp239_ = vala_ccode_base_module_get_value_taker_function (self, _tmp238_); _tmp240_ = _tmp239_; _tmp241_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp240_); _vala_ccode_node_unref0 (ccall); ccall = _tmp241_; _vala_ccode_node_unref0 (_tmp240_); } else { ValaDataType* _tmp242_; ValaCCodeIdentifier* _tmp243_ = NULL; ValaCCodeIdentifier* _tmp244_; ValaCCodeFunctionCall* _tmp245_; _tmp242_ = type; _tmp243_ = vala_ccode_base_module_get_value_setter_function (self, _tmp242_); _tmp244_ = _tmp243_; _tmp245_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp244_); _vala_ccode_node_unref0 (ccall); ccall = _tmp245_; _vala_ccode_node_unref0 (_tmp244_); } _tmp246_ = target_type; _tmp247_ = vala_data_type_get_nullable (_tmp246_); _tmp248_ = _tmp247_; if (_tmp248_) { ValaCCodeFunctionCall* _tmp249_; ValaTargetValue* _tmp250_; ValaCCodeExpression* _tmp251_ = NULL; ValaCCodeExpression* _tmp252_; _tmp249_ = ccall; _tmp250_ = temp_value; _tmp251_ = vala_ccode_base_module_get_cvalue_ (self, _tmp250_); _tmp252_ = _tmp251_; vala_ccode_function_call_add_argument (_tmp249_, _tmp252_); _vala_ccode_node_unref0 (_tmp252_); } else { ValaCCodeFunctionCall* _tmp253_; ValaTargetValue* _tmp254_; ValaCCodeExpression* _tmp255_ = NULL; ValaCCodeExpression* _tmp256_; ValaCCodeUnaryExpression* _tmp257_; ValaCCodeUnaryExpression* _tmp258_; _tmp253_ = ccall; _tmp254_ = temp_value; _tmp255_ = vala_ccode_base_module_get_cvalue_ (self, _tmp254_); _tmp256_ = _tmp255_; _tmp257_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp256_); _tmp258_ = _tmp257_; vala_ccode_function_call_add_argument (_tmp253_, (ValaCCodeExpression*) _tmp258_); _vala_ccode_node_unref0 (_tmp258_); _vala_ccode_node_unref0 (_tmp256_); } _tmp259_ = type; _tmp260_ = vala_data_type_is_real_non_null_struct_type (_tmp259_); if (_tmp260_) { ValaCCodeFunctionCall* _tmp261_; ValaGLibValue* _tmp262_; ValaCCodeExpression* _tmp263_; ValaCCodeUnaryExpression* _tmp264_; ValaCCodeUnaryExpression* _tmp265_; _tmp261_ = ccall; _tmp262_ = _result_; _tmp263_ = _tmp262_->cvalue; _tmp264_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp263_); _tmp265_ = _tmp264_; vala_ccode_function_call_add_argument (_tmp261_, (ValaCCodeExpression*) _tmp265_); _vala_ccode_node_unref0 (_tmp265_); } else { ValaCCodeFunctionCall* _tmp266_; ValaGLibValue* _tmp267_; ValaCCodeExpression* _tmp268_; _tmp266_ = ccall; _tmp267_ = _result_; _tmp268_ = _tmp267_->cvalue; vala_ccode_function_call_add_argument (_tmp266_, _tmp268_); } _tmp269_ = vala_ccode_base_module_get_ccode (self); _tmp270_ = _tmp269_; _tmp271_ = ccall; vala_ccode_function_add_expression (_tmp270_, (ValaCCodeExpression*) _tmp271_); _tmp272_ = temp_value; _tmp273_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp272_)); _vala_target_value_unref0 (_result_); _result_ = _tmp273_; requires_temp_value = FALSE; _g_free0 (type_id); _vala_ccode_node_unref0 (ccall); _vala_target_value_unref0 (temp_value); } else { gboolean _tmp274_; _tmp274_ = gvariant_boxing; if (_tmp274_) { gint _tmp275_; gint _tmp276_; gchar* _tmp277_ = NULL; gchar* variant_func; const gchar* _tmp278_; ValaCCodeIdentifier* _tmp279_; ValaCCodeIdentifier* _tmp280_; ValaCCodeFunctionCall* _tmp281_; ValaCCodeFunctionCall* _tmp282_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp283_; ValaGLibValue* _tmp284_; ValaCCodeExpression* _tmp285_; const gchar* _tmp286_; ValaCCodeFunction* _tmp287_; ValaCCodeFunction* cfunc; ValaCCodeFunction* _tmp288_; ValaCCodeFunction* _tmp289_; ValaDataType* _tmp290_; gchar* _tmp291_ = NULL; gchar* _tmp292_; ValaCCodeParameter* _tmp293_; ValaCCodeParameter* _tmp294_; ValaDataType* _tmp295_; ValaCCodeFunction* _tmp316_; ValaCCodeIdentifier* _tmp317_; ValaCCodeIdentifier* _tmp318_; ValaCCodeFunctionCall* _tmp319_; ValaCCodeFunctionCall* _tmp320_; ValaCCodeFunctionCall* sink; ValaCCodeFunctionCall* _tmp321_; ValaDataType* _tmp322_; ValaCCodeIdentifier* _tmp323_; ValaCCodeIdentifier* _tmp324_; ValaCCodeExpression* _tmp325_ = NULL; ValaCCodeExpression* _tmp326_; ValaCCodeFunction* _tmp327_; ValaCCodeFunction* _tmp328_; ValaCCodeFunctionCall* _tmp329_; ValaCCodeFile* _tmp330_; ValaCCodeFunction* _tmp331_; ValaCCodeFile* _tmp332_; ValaCCodeFunction* _tmp333_; ValaGLibValue* _tmp334_; ValaCCodeFunctionCall* _tmp335_; ValaCCodeExpression* _tmp336_; _tmp275_ = self->priv->next_variant_function_id; self->priv->next_variant_function_id = _tmp275_ + 1; _tmp276_ = self->priv->next_variant_function_id; _tmp277_ = g_strdup_printf ("_variant_new%d", _tmp276_); variant_func = _tmp277_; _tmp278_ = variant_func; _tmp279_ = vala_ccode_identifier_new (_tmp278_); _tmp280_ = _tmp279_; _tmp281_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp280_); _tmp282_ = _tmp281_; _vala_ccode_node_unref0 (_tmp280_); ccall = _tmp282_; _tmp283_ = ccall; _tmp284_ = _result_; _tmp285_ = _tmp284_->cvalue; vala_ccode_function_call_add_argument (_tmp283_, _tmp285_); _tmp286_ = variant_func; _tmp287_ = vala_ccode_function_new (_tmp286_, "GVariant*"); cfunc = _tmp287_; _tmp288_ = cfunc; vala_ccode_function_set_modifiers (_tmp288_, VALA_CCODE_MODIFIERS_STATIC); _tmp289_ = cfunc; _tmp290_ = type; _tmp291_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp290_); _tmp292_ = _tmp291_; _tmp293_ = vala_ccode_parameter_new ("value", _tmp292_); _tmp294_ = _tmp293_; vala_ccode_function_add_parameter (_tmp289_, _tmp294_); _vala_ccode_node_unref0 (_tmp294_); _g_free0 (_tmp292_); _tmp295_ = type; if (VALA_IS_ARRAY_TYPE (_tmp295_)) { ValaDataType* _tmp296_; ValaArrayType* _tmp297_; ValaArrayType* array_type; _tmp296_ = type; _tmp297_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp296_)); array_type = _tmp297_; { gint dim; dim = 1; { gboolean _tmp298_; _tmp298_ = TRUE; while (TRUE) { gboolean _tmp299_; gint _tmp301_; ValaArrayType* _tmp302_; gint _tmp303_; gint _tmp304_; ValaCCodeFunctionCall* _tmp305_; ValaTargetValue* _tmp306_; gint _tmp307_; ValaCCodeExpression* _tmp308_ = NULL; ValaCCodeExpression* _tmp309_; ValaCCodeFunction* _tmp310_; gint _tmp311_; gchar* _tmp312_ = NULL; gchar* _tmp313_; ValaCCodeParameter* _tmp314_; ValaCCodeParameter* _tmp315_; _tmp299_ = _tmp298_; if (!_tmp299_) { gint _tmp300_; _tmp300_ = dim; dim = _tmp300_ + 1; } _tmp298_ = FALSE; _tmp301_ = dim; _tmp302_ = array_type; _tmp303_ = vala_array_type_get_rank (_tmp302_); _tmp304_ = _tmp303_; if (!(_tmp301_ <= _tmp304_)) { break; } _tmp305_ = ccall; _tmp306_ = value; _tmp307_ = dim; _tmp308_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp306_, _tmp307_); _tmp309_ = _tmp308_; vala_ccode_function_call_add_argument (_tmp305_, _tmp309_); _vala_ccode_node_unref0 (_tmp309_); _tmp310_ = cfunc; _tmp311_ = dim; _tmp312_ = vala_ccode_base_module_get_array_length_cname (self, "value", _tmp311_); _tmp313_ = _tmp312_; _tmp314_ = vala_ccode_parameter_new (_tmp313_, "gint"); _tmp315_ = _tmp314_; vala_ccode_function_add_parameter (_tmp310_, _tmp315_); _vala_ccode_node_unref0 (_tmp315_); _g_free0 (_tmp313_); } } } _vala_code_node_unref0 (array_type); } _tmp316_ = cfunc; vala_ccode_base_module_push_function (self, _tmp316_); _tmp317_ = vala_ccode_identifier_new ("g_variant_ref_sink"); _tmp318_ = _tmp317_; _tmp319_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp318_); _tmp320_ = _tmp319_; _vala_ccode_node_unref0 (_tmp318_); sink = _tmp320_; _tmp321_ = sink; _tmp322_ = type; _tmp323_ = vala_ccode_identifier_new ("value"); _tmp324_ = _tmp323_; _tmp325_ = vala_ccode_base_module_serialize_expression (self, _tmp322_, (ValaCCodeExpression*) _tmp324_); _tmp326_ = _tmp325_; vala_ccode_function_call_add_argument (_tmp321_, _tmp326_); _vala_ccode_node_unref0 (_tmp326_); _vala_ccode_node_unref0 (_tmp324_); _tmp327_ = vala_ccode_base_module_get_ccode (self); _tmp328_ = _tmp327_; _tmp329_ = sink; vala_ccode_function_add_return (_tmp328_, (ValaCCodeExpression*) _tmp329_); vala_ccode_base_module_pop_function (self); _tmp330_ = self->cfile; _tmp331_ = cfunc; vala_ccode_file_add_function_declaration (_tmp330_, _tmp331_); _tmp332_ = self->cfile; _tmp333_ = cfunc; vala_ccode_file_add_function (_tmp332_, _tmp333_); _tmp334_ = _result_; _tmp335_ = ccall; _tmp336_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp335_); _vala_ccode_node_unref0 (_tmp334_->cvalue); _tmp334_->cvalue = _tmp336_; requires_temp_value = TRUE; _vala_ccode_node_unref0 (sink); _vala_ccode_node_unref0 (cfunc); _vala_ccode_node_unref0 (ccall); _g_free0 (variant_func); } else { gboolean _tmp337_; _tmp337_ = boxing; if (_tmp337_) { ValaGLibValue* _tmp338_; ValaDataType* _tmp339_; ValaDataType* _tmp340_; gboolean _tmp341_ = FALSE; ValaGLibValue* _tmp342_; gboolean _tmp343_; gboolean _tmp351_; ValaGLibValue* _tmp366_; ValaGLibValue* _tmp367_; ValaCCodeExpression* _tmp368_; ValaCCodeUnaryExpression* _tmp369_; ValaGLibValue* _tmp370_; ValaGLibValue* _tmp371_; ValaDataType* _tmp372_; ValaDataType* _tmp373_; _tmp338_ = _result_; _tmp339_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp338_); _tmp340_ = _tmp339_; vala_data_type_set_nullable (_tmp340_, FALSE); _tmp342_ = _result_; _tmp343_ = _tmp342_->lvalue; if (!_tmp343_) { _tmp341_ = TRUE; } else { ValaGLibValue* _tmp344_; ValaDataType* _tmp345_; ValaDataType* _tmp346_; ValaTargetValue* _tmp347_; ValaDataType* _tmp348_; ValaDataType* _tmp349_; gboolean _tmp350_ = FALSE; _tmp344_ = _result_; _tmp345_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp344_); _tmp346_ = _tmp345_; _tmp347_ = value; _tmp348_ = vala_target_value_get_value_type (_tmp347_); _tmp349_ = _tmp348_; _tmp350_ = vala_data_type_equals (_tmp346_, _tmp349_); _tmp341_ = !_tmp350_; } _tmp351_ = _tmp341_; if (_tmp351_) { ValaGLibValue* _tmp352_; ValaGLibValue* _tmp353_; ValaCCodeExpression* _tmp354_; ValaTargetValue* _tmp355_; ValaDataType* _tmp356_; ValaDataType* _tmp357_; ValaGLibValue* _tmp358_; ValaDataType* _tmp359_; ValaDataType* _tmp360_; ValaCodeNode* _tmp361_; ValaCCodeExpression* _tmp362_ = NULL; ValaGLibValue* _tmp363_; ValaCodeNode* _tmp364_; ValaTargetValue* _tmp365_ = NULL; _tmp352_ = _result_; _tmp353_ = _result_; _tmp354_ = _tmp353_->cvalue; _tmp355_ = value; _tmp356_ = vala_target_value_get_value_type (_tmp355_); _tmp357_ = _tmp356_; _tmp358_ = _result_; _tmp359_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp358_); _tmp360_ = _tmp359_; _tmp361_ = node; _tmp362_ = vala_ccode_base_module_get_implicit_cast_expression (self, _tmp354_, _tmp357_, _tmp360_, _tmp361_); _vala_ccode_node_unref0 (_tmp352_->cvalue); _tmp352_->cvalue = _tmp362_; _tmp363_ = _result_; _tmp364_ = node; _tmp365_ = vala_ccode_base_module_store_temp_value (self, (ValaTargetValue*) _tmp363_, _tmp364_, NULL); _vala_target_value_unref0 (_result_); _result_ = VALA_GLIB_VALUE (_tmp365_); requires_temp_value = FALSE; } _tmp366_ = _result_; _tmp367_ = _result_; _tmp368_ = _tmp367_->cvalue; _tmp369_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp368_); _vala_ccode_node_unref0 (_tmp366_->cvalue); _tmp366_->cvalue = (ValaCCodeExpression*) _tmp369_; _tmp370_ = _result_; _tmp370_->lvalue = FALSE; _tmp371_ = _result_; _tmp372_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp371_); _tmp373_ = _tmp372_; vala_data_type_set_nullable (_tmp373_, TRUE); } else { gboolean _tmp374_; _tmp374_ = unboxing; if (_tmp374_) { ValaGLibValue* _tmp375_; ValaGLibValue* _tmp376_; ValaCCodeExpression* _tmp377_; ValaCCodeUnaryExpression* _tmp378_; _tmp375_ = _result_; _tmp376_ = _result_; _tmp377_ = _tmp376_->cvalue; _tmp378_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp377_); _vala_ccode_node_unref0 (_tmp375_->cvalue); _tmp375_->cvalue = (ValaCCodeExpression*) _tmp378_; } else { ValaGLibValue* _tmp379_; ValaGLibValue* _tmp380_; ValaCCodeExpression* _tmp381_; ValaDataType* _tmp382_; ValaDataType* _tmp383_; ValaCodeNode* _tmp384_; ValaCCodeExpression* _tmp385_ = NULL; _tmp379_ = _result_; _tmp380_ = _result_; _tmp381_ = _tmp380_->cvalue; _tmp382_ = type; _tmp383_ = target_type; _tmp384_ = node; _tmp385_ = vala_ccode_base_module_get_implicit_cast_expression (self, _tmp381_, _tmp382_, _tmp383_, _tmp384_); _vala_ccode_node_unref0 (_tmp379_->cvalue); _tmp379_->cvalue = _tmp385_; } } } } _tmp387_ = requires_temp_value; if (_tmp387_) { gboolean _tmp388_ = FALSE; ValaDataType* _tmp389_; gboolean _tmp393_; _tmp389_ = target_type; if (VALA_IS_ARRAY_TYPE (_tmp389_)) { ValaDataType* _tmp390_; gboolean _tmp391_; gboolean _tmp392_; _tmp390_ = target_type; _tmp391_ = vala_array_type_get_inline_allocated (VALA_ARRAY_TYPE (_tmp390_)); _tmp392_ = _tmp391_; _tmp388_ = _tmp392_; } else { _tmp388_ = FALSE; } _tmp393_ = _tmp388_; _tmp386_ = !_tmp393_; } else { _tmp386_ = FALSE; } _tmp394_ = _tmp386_; if (_tmp394_) { ValaGLibValue* _tmp395_; ValaCodeNode* _tmp396_; ValaTargetValue* _tmp397_ = NULL; _tmp395_ = _result_; _tmp396_ = node; _tmp397_ = vala_ccode_base_module_store_temp_value (self, (ValaTargetValue*) _tmp395_, _tmp396_, NULL); _vala_target_value_unref0 (_result_); _result_ = VALA_GLIB_VALUE (_tmp397_); } _tmp403_ = gvalue_boxing; if (!_tmp403_) { gboolean _tmp404_; _tmp404_ = gvariant_boxing; _tmp402_ = !_tmp404_; } else { _tmp402_ = FALSE; } _tmp405_ = _tmp402_; if (_tmp405_) { ValaDataType* _tmp406_; gboolean _tmp407_; gboolean _tmp408_; _tmp406_ = target_type; _tmp407_ = vala_data_type_get_value_owned (_tmp406_); _tmp408_ = _tmp407_; _tmp401_ = _tmp408_; } else { _tmp401_ = FALSE; } _tmp409_ = _tmp401_; if (_tmp409_) { gboolean _tmp410_ = FALSE; gboolean _tmp411_ = FALSE; ValaDataType* _tmp412_; gboolean _tmp413_; gboolean _tmp414_; gboolean _tmp416_; gboolean _tmp418_; _tmp412_ = type; _tmp413_ = vala_data_type_get_value_owned (_tmp412_); _tmp414_ = _tmp413_; if (!_tmp414_) { _tmp411_ = TRUE; } else { gboolean _tmp415_; _tmp415_ = boxing; _tmp411_ = _tmp415_; } _tmp416_ = _tmp411_; if (_tmp416_) { _tmp410_ = TRUE; } else { gboolean _tmp417_; _tmp417_ = unboxing; _tmp410_ = _tmp417_; } _tmp418_ = _tmp410_; _tmp400_ = _tmp418_; } else { _tmp400_ = FALSE; } _tmp419_ = _tmp400_; if (_tmp419_) { ValaDataType* _tmp420_; gboolean _tmp421_ = FALSE; _tmp420_ = target_type; _tmp421_ = vala_ccode_base_module_requires_copy (self, _tmp420_); _tmp399_ = _tmp421_; } else { _tmp399_ = FALSE; } _tmp422_ = _tmp399_; if (_tmp422_) { ValaDataType* _tmp423_; _tmp423_ = type; _tmp398_ = !VALA_IS_NULL_TYPE (_tmp423_); } else { _tmp398_ = FALSE; } _tmp424_ = _tmp398_; if (_tmp424_) { ValaGLibValue* _tmp425_; ValaCodeNode* _tmp426_; ValaTargetValue* _tmp427_ = NULL; ValaGLibValue* copy; gboolean _tmp428_ = FALSE; ValaDataType* _tmp429_; ValaTypeSymbol* _tmp430_; ValaTypeSymbol* _tmp431_; gboolean _tmp433_; ValaGLibValue* _tmp444_; ValaGLibValue* _tmp445_; _tmp425_ = _result_; _tmp426_ = node; _tmp427_ = vala_ccode_base_module_copy_value (self, (ValaTargetValue*) _tmp425_, _tmp426_); copy = VALA_GLIB_VALUE (_tmp427_); _tmp429_ = target_type; _tmp430_ = vala_data_type_get_data_type (_tmp429_); _tmp431_ = _tmp430_; if (VALA_IS_INTERFACE (_tmp431_)) { ValaGLibValue* _tmp432_; _tmp432_ = copy; _tmp428_ = _tmp432_ == NULL; } else { _tmp428_ = FALSE; } _tmp433_ = _tmp428_; if (_tmp433_) { ValaCodeNode* _tmp434_; ValaSourceReference* _tmp435_; ValaSourceReference* _tmp436_; ValaDataType* _tmp437_; ValaTypeSymbol* _tmp438_; ValaTypeSymbol* _tmp439_; gchar* _tmp440_ = NULL; gchar* _tmp441_; gchar* _tmp442_ = NULL; gchar* _tmp443_; _tmp434_ = node; _tmp435_ = vala_code_node_get_source_reference (_tmp434_); _tmp436_ = _tmp435_; _tmp437_ = target_type; _tmp438_ = vala_data_type_get_data_type (_tmp437_); _tmp439_ = _tmp438_; _tmp440_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp439_); _tmp441_ = _tmp440_; _tmp442_ = g_strdup_printf ("missing class prerequisite for interface `%s', add GLib.Object to inte" \ "rface declaration if unsure", _tmp441_); _tmp443_ = _tmp442_; vala_report_error (_tmp436_, _tmp443_); _g_free0 (_tmp443_); _g_free0 (_tmp441_); result = (ValaTargetValue*) _result_; _vala_target_value_unref0 (copy); _vala_code_node_unref0 (type); return result; } _tmp444_ = copy; _tmp445_ = _vala_target_value_ref0 (_tmp444_); _vala_target_value_unref0 (_result_); _result_ = _tmp445_; _vala_target_value_unref0 (copy); } result = (ValaTargetValue*) _result_; _vala_code_node_unref0 (type); return result; } static ValaCCodeExpression* vala_ccode_base_module_real_get_implicit_cast_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node) { ValaCCodeExpression* result = NULL; ValaCCodeExpression* _tmp0_; ValaCCodeExpression* _tmp1_; ValaCCodeExpression* cexpr; gboolean _tmp2_ = FALSE; ValaDataType* _tmp3_; ValaTypeSymbol* _tmp4_; ValaTypeSymbol* _tmp5_; gboolean _tmp12_; ValaDataType* _tmp13_; ValaDataType* _tmp14_; ValaCCodeFile* _tmp15_; ValaDataType* _tmp16_; ValaTypeSymbol* _tmp17_; ValaTypeSymbol* _tmp18_; ValaClass* _tmp19_; ValaClass* cl; ValaDataType* _tmp20_; ValaTypeSymbol* _tmp21_; ValaTypeSymbol* _tmp22_; ValaInterface* _tmp23_; ValaInterface* iface; gboolean _tmp24_ = FALSE; ValaCodeContext* _tmp25_; gboolean _tmp26_; gboolean _tmp27_; gboolean _tmp37_; g_return_val_if_fail (source_cexpr != NULL, NULL); _tmp0_ = source_cexpr; _tmp1_ = _vala_ccode_node_ref0 (_tmp0_); cexpr = _tmp1_; _tmp3_ = expression_type; _tmp4_ = vala_data_type_get_data_type (_tmp3_); _tmp5_ = _tmp4_; if (_tmp5_ != NULL) { ValaDataType* _tmp6_; ValaTypeSymbol* _tmp7_; ValaTypeSymbol* _tmp8_; ValaDataType* _tmp9_; ValaTypeSymbol* _tmp10_; ValaTypeSymbol* _tmp11_; _tmp6_ = expression_type; _tmp7_ = vala_data_type_get_data_type (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = target_type; _tmp10_ = vala_data_type_get_data_type (_tmp9_); _tmp11_ = _tmp10_; _tmp2_ = _tmp8_ == _tmp11_; } else { _tmp2_ = FALSE; } _tmp12_ = _tmp2_; if (_tmp12_) { result = cexpr; return result; } _tmp13_ = expression_type; if (VALA_IS_NULL_TYPE (_tmp13_)) { result = cexpr; return result; } _tmp14_ = target_type; _tmp15_ = self->cfile; vala_ccode_base_module_generate_type_declaration (self, _tmp14_, _tmp15_); _tmp16_ = target_type; _tmp17_ = vala_data_type_get_data_type (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp18_) ? ((ValaClass*) _tmp18_) : NULL); cl = _tmp19_; _tmp20_ = target_type; _tmp21_ = vala_data_type_get_data_type (_tmp20_); _tmp22_ = _tmp21_; _tmp23_ = _vala_code_node_ref0 (VALA_IS_INTERFACE (_tmp22_) ? ((ValaInterface*) _tmp22_) : NULL); iface = _tmp23_; _tmp25_ = self->priv->_context; _tmp26_ = vala_code_context_get_checking (_tmp25_); _tmp27_ = _tmp26_; if (_tmp27_) { gboolean _tmp28_ = FALSE; ValaInterface* _tmp29_; gboolean _tmp36_; _tmp29_ = iface; if (_tmp29_ != NULL) { _tmp28_ = TRUE; } else { gboolean _tmp30_ = FALSE; ValaClass* _tmp31_; gboolean _tmp35_; _tmp31_ = cl; if (_tmp31_ != NULL) { ValaClass* _tmp32_; gboolean _tmp33_; gboolean _tmp34_; _tmp32_ = cl; _tmp33_ = vala_class_get_is_compact (_tmp32_); _tmp34_ = _tmp33_; _tmp30_ = !_tmp34_; } else { _tmp30_ = FALSE; } _tmp35_ = _tmp30_; _tmp28_ = _tmp35_; } _tmp36_ = _tmp28_; _tmp24_ = _tmp36_; } else { _tmp24_ = FALSE; } _tmp37_ = _tmp24_; if (_tmp37_) { ValaCCodeExpression* _tmp38_; ValaDataType* _tmp39_; ValaTypeSymbol* _tmp40_; ValaTypeSymbol* _tmp41_; ValaCCodeFunctionCall* _tmp42_ = NULL; _tmp38_ = cexpr; _tmp39_ = target_type; _tmp40_ = vala_data_type_get_data_type (_tmp39_); _tmp41_ = _tmp40_; _tmp42_ = vala_ccode_base_module_generate_instance_cast (self, _tmp38_, _tmp41_); result = (ValaCCodeExpression*) _tmp42_; _vala_code_node_unref0 (iface); _vala_code_node_unref0 (cl); _vala_ccode_node_unref0 (cexpr); return result; } else { gboolean _tmp43_ = FALSE; ValaDataType* _tmp44_; ValaTypeSymbol* _tmp45_; ValaTypeSymbol* _tmp46_; gboolean _tmp53_; _tmp44_ = target_type; _tmp45_ = vala_data_type_get_data_type (_tmp44_); _tmp46_ = _tmp45_; if (_tmp46_ != NULL) { ValaDataType* _tmp47_; gchar* _tmp48_ = NULL; gchar* _tmp49_; ValaDataType* _tmp50_; gchar* _tmp51_ = NULL; gchar* _tmp52_; _tmp47_ = expression_type; _tmp48_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp47_); _tmp49_ = _tmp48_; _tmp50_ = target_type; _tmp51_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp50_); _tmp52_ = _tmp51_; _tmp43_ = g_strcmp0 (_tmp49_, _tmp52_) != 0; _g_free0 (_tmp52_); _g_free0 (_tmp49_); } else { _tmp43_ = FALSE; } _tmp53_ = _tmp43_; if (_tmp53_) { ValaDataType* _tmp54_; ValaTypeSymbol* _tmp55_; ValaTypeSymbol* _tmp56_; ValaStruct* _tmp57_; ValaStruct* st; gboolean _tmp58_ = FALSE; ValaDataType* _tmp59_; ValaTypeSymbol* _tmp60_; ValaTypeSymbol* _tmp61_; gboolean _tmp62_ = FALSE; gboolean _tmp68_; _tmp54_ = target_type; _tmp55_ = vala_data_type_get_data_type (_tmp54_); _tmp56_ = _tmp55_; _tmp57_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp56_) ? ((ValaStruct*) _tmp56_) : NULL); st = _tmp57_; _tmp59_ = target_type; _tmp60_ = vala_data_type_get_data_type (_tmp59_); _tmp61_ = _tmp60_; _tmp62_ = vala_typesymbol_is_reference_type (_tmp61_); if (_tmp62_) { _tmp58_ = TRUE; } else { gboolean _tmp63_ = FALSE; ValaStruct* _tmp64_; gboolean _tmp67_; _tmp64_ = st; if (_tmp64_ != NULL) { ValaStruct* _tmp65_; gboolean _tmp66_ = FALSE; _tmp65_ = st; _tmp66_ = vala_struct_is_simple_type (_tmp65_); _tmp63_ = _tmp66_; } else { _tmp63_ = FALSE; } _tmp67_ = _tmp63_; _tmp58_ = _tmp67_; } _tmp68_ = _tmp58_; if (_tmp68_) { ValaCCodeExpression* _tmp69_; ValaDataType* _tmp70_; gchar* _tmp71_ = NULL; gchar* _tmp72_; ValaCCodeCastExpression* _tmp73_; ValaCCodeExpression* _tmp74_; _tmp69_ = cexpr; _tmp70_ = target_type; _tmp71_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp70_); _tmp72_ = _tmp71_; _tmp73_ = vala_ccode_cast_expression_new (_tmp69_, _tmp72_); _tmp74_ = (ValaCCodeExpression*) _tmp73_; _g_free0 (_tmp72_); result = _tmp74_; _vala_code_node_unref0 (st); _vala_code_node_unref0 (iface); _vala_code_node_unref0 (cl); _vala_ccode_node_unref0 (cexpr); return result; } else { result = cexpr; _vala_code_node_unref0 (st); _vala_code_node_unref0 (iface); _vala_code_node_unref0 (cl); return result; } _vala_code_node_unref0 (st); } else { result = cexpr; _vala_code_node_unref0 (iface); _vala_code_node_unref0 (cl); return result; } } _vala_code_node_unref0 (iface); _vala_code_node_unref0 (cl); _vala_ccode_node_unref0 (cexpr); } ValaCCodeExpression* vala_ccode_base_module_get_implicit_cast_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_implicit_cast_expression (self, source_cexpr, expression_type, target_type, node); } void vala_ccode_base_module_store_property (ValaCCodeBaseModule* self, ValaProperty* prop, ValaExpression* instance, ValaTargetValue* value) { ValaExpression* _tmp0_; gchar* _tmp90_; gchar* set_func; ValaProperty* _tmp91_; ValaProperty* _tmp92_; ValaProperty* base_property; ValaProperty* _tmp93_; gboolean _tmp94_ = FALSE; const gchar* _tmp131_; ValaCCodeIdentifier* _tmp132_; ValaCCodeIdentifier* _tmp133_; ValaCCodeFunctionCall* _tmp134_; ValaCCodeFunctionCall* _tmp135_; ValaCCodeFunctionCall* ccall; ValaProperty* _tmp136_; ValaMemberBinding _tmp137_; ValaMemberBinding _tmp138_; ValaProperty* _tmp159_; gboolean _tmp160_ = FALSE; ValaTargetValue* _tmp165_; ValaCCodeExpression* _tmp166_ = NULL; ValaCCodeExpression* cexpr; ValaProperty* _tmp167_; ValaDataType* _tmp168_; ValaDataType* _tmp169_; gboolean _tmp170_ = FALSE; ValaProperty* _tmp173_; ValaDataType* _tmp174_; ValaDataType* _tmp175_; ValaArrayType* _tmp176_; ValaArrayType* array_type; ValaCCodeFunctionCall* _tmp177_; ValaCCodeExpression* _tmp178_; gboolean _tmp179_ = FALSE; ValaArrayType* _tmp180_; gboolean _tmp183_; ValaProperty* _tmp223_; gboolean _tmp224_ = FALSE; ValaCCodeFunction* _tmp228_; ValaCCodeFunction* _tmp229_; ValaCCodeFunctionCall* _tmp230_; g_return_if_fail (self != NULL); g_return_if_fail (prop != NULL); g_return_if_fail (value != NULL); _tmp0_ = instance; if (VALA_IS_BASE_ACCESS (_tmp0_)) { ValaProperty* _tmp1_; ValaProperty* _tmp2_; ValaProperty* _tmp3_; _tmp1_ = prop; _tmp2_ = vala_property_get_base_property (_tmp1_); _tmp3_ = _tmp2_; if (_tmp3_ != NULL) { ValaProperty* _tmp4_; ValaProperty* _tmp5_; ValaProperty* _tmp6_; ValaSymbol* _tmp7_; ValaSymbol* _tmp8_; ValaClass* _tmp9_; ValaClass* base_class; ValaClass* _tmp10_; gchar* _tmp11_ = NULL; gchar* _tmp12_; gchar* _tmp13_ = NULL; gchar* _tmp14_; ValaCCodeIdentifier* _tmp15_; ValaCCodeIdentifier* _tmp16_; ValaCCodeFunctionCall* _tmp17_; ValaCCodeFunctionCall* _tmp18_; ValaCCodeFunctionCall* vcast; ValaCCodeFunctionCall* _tmp19_; ValaClass* _tmp20_; ValaClass* _tmp21_; gchar* _tmp22_ = NULL; gchar* _tmp23_; gchar* _tmp24_ = NULL; gchar* _tmp25_; ValaCCodeIdentifier* _tmp26_; ValaCCodeIdentifier* _tmp27_; ValaCCodeFunctionCall* _tmp28_; ValaProperty* _tmp29_; const gchar* _tmp30_; const gchar* _tmp31_; gchar* _tmp32_ = NULL; gchar* _tmp33_; ValaCCodeMemberAccess* _tmp34_; ValaCCodeMemberAccess* _tmp35_; ValaCCodeFunctionCall* _tmp36_; ValaCCodeFunctionCall* _tmp37_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp38_; ValaExpression* _tmp39_; ValaCCodeExpression* _tmp40_ = NULL; ValaCCodeExpression* _tmp41_; ValaCCodeFunctionCall* _tmp42_; ValaTargetValue* _tmp43_; ValaCCodeExpression* _tmp44_ = NULL; ValaCCodeExpression* _tmp45_; ValaCCodeFunction* _tmp46_; ValaCCodeFunction* _tmp47_; ValaCCodeFunctionCall* _tmp48_; _tmp4_ = prop; _tmp5_ = vala_property_get_base_property (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp6_); _tmp8_ = _tmp7_; _tmp9_ = _vala_code_node_ref0 (VALA_CLASS (_tmp8_)); base_class = _tmp9_; _tmp10_ = base_class; _tmp11_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp10_, NULL); _tmp12_ = _tmp11_; _tmp13_ = g_strdup_printf ("%s_CLASS", _tmp12_); _tmp14_ = _tmp13_; _tmp15_ = vala_ccode_identifier_new (_tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp16_); _tmp18_ = _tmp17_; _vala_ccode_node_unref0 (_tmp16_); _g_free0 (_tmp14_); _g_free0 (_tmp12_); vcast = _tmp18_; _tmp19_ = vcast; _tmp20_ = vala_ccode_base_module_get_current_class (self); _tmp21_ = _tmp20_; _tmp22_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp21_, NULL); _tmp23_ = _tmp22_; _tmp24_ = g_strdup_printf ("%s_parent_class", _tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_identifier_new (_tmp25_); _tmp27_ = _tmp26_; vala_ccode_function_call_add_argument (_tmp19_, (ValaCCodeExpression*) _tmp27_); _vala_ccode_node_unref0 (_tmp27_); _g_free0 (_tmp25_); _g_free0 (_tmp23_); _tmp28_ = vcast; _tmp29_ = prop; _tmp30_ = vala_symbol_get_name ((ValaSymbol*) _tmp29_); _tmp31_ = _tmp30_; _tmp32_ = g_strdup_printf ("set_%s", _tmp31_); _tmp33_ = _tmp32_; _tmp34_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp28_, _tmp33_); _tmp35_ = _tmp34_; _tmp36_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp35_); _tmp37_ = _tmp36_; _vala_ccode_node_unref0 (_tmp35_); _g_free0 (_tmp33_); ccall = _tmp37_; _tmp38_ = ccall; _tmp39_ = instance; _tmp40_ = vala_ccode_base_module_get_ccodenode (self, _tmp39_); _tmp41_ = VALA_CCODE_EXPRESSION (_tmp40_); vala_ccode_function_call_add_argument (_tmp38_, _tmp41_); _vala_ccode_node_unref0 (_tmp41_); _tmp42_ = ccall; _tmp43_ = value; _tmp44_ = vala_ccode_base_module_get_cvalue_ (self, _tmp43_); _tmp45_ = _tmp44_; vala_ccode_function_call_add_argument (_tmp42_, _tmp45_); _vala_ccode_node_unref0 (_tmp45_); _tmp46_ = vala_ccode_base_module_get_ccode (self); _tmp47_ = _tmp46_; _tmp48_ = ccall; vala_ccode_function_add_expression (_tmp47_, (ValaCCodeExpression*) _tmp48_); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (vcast); _vala_code_node_unref0 (base_class); } else { ValaProperty* _tmp49_; ValaProperty* _tmp50_; ValaProperty* _tmp51_; _tmp49_ = prop; _tmp50_ = vala_property_get_base_interface_property (_tmp49_); _tmp51_ = _tmp50_; if (_tmp51_ != NULL) { ValaProperty* _tmp52_; ValaProperty* _tmp53_; ValaProperty* _tmp54_; ValaSymbol* _tmp55_; ValaSymbol* _tmp56_; ValaInterface* _tmp57_; ValaInterface* base_iface; ValaClass* _tmp58_; ValaClass* _tmp59_; gchar* _tmp60_ = NULL; gchar* _tmp61_; ValaInterface* _tmp62_; gchar* _tmp63_ = NULL; gchar* _tmp64_; gchar* _tmp65_ = NULL; gchar* _tmp66_; gchar* parent_iface_var; const gchar* _tmp67_; ValaCCodeIdentifier* _tmp68_; ValaCCodeIdentifier* _tmp69_; ValaProperty* _tmp70_; const gchar* _tmp71_; const gchar* _tmp72_; gchar* _tmp73_ = NULL; gchar* _tmp74_; ValaCCodeMemberAccess* _tmp75_; ValaCCodeMemberAccess* _tmp76_; ValaCCodeFunctionCall* _tmp77_; ValaCCodeFunctionCall* _tmp78_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp79_; ValaExpression* _tmp80_; ValaCCodeExpression* _tmp81_ = NULL; ValaCCodeExpression* _tmp82_; ValaCCodeFunctionCall* _tmp83_; ValaTargetValue* _tmp84_; ValaCCodeExpression* _tmp85_ = NULL; ValaCCodeExpression* _tmp86_; ValaCCodeFunction* _tmp87_; ValaCCodeFunction* _tmp88_; ValaCCodeFunctionCall* _tmp89_; _tmp52_ = prop; _tmp53_ = vala_property_get_base_interface_property (_tmp52_); _tmp54_ = _tmp53_; _tmp55_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp54_); _tmp56_ = _tmp55_; _tmp57_ = _vala_code_node_ref0 (VALA_INTERFACE (_tmp56_)); base_iface = _tmp57_; _tmp58_ = vala_ccode_base_module_get_current_class (self); _tmp59_ = _tmp58_; _tmp60_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp59_, NULL); _tmp61_ = _tmp60_; _tmp62_ = base_iface; _tmp63_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp62_, NULL); _tmp64_ = _tmp63_; _tmp65_ = g_strdup_printf ("%s_%s_parent_iface", _tmp61_, _tmp64_); _tmp66_ = _tmp65_; _g_free0 (_tmp64_); _g_free0 (_tmp61_); parent_iface_var = _tmp66_; _tmp67_ = parent_iface_var; _tmp68_ = vala_ccode_identifier_new (_tmp67_); _tmp69_ = _tmp68_; _tmp70_ = prop; _tmp71_ = vala_symbol_get_name ((ValaSymbol*) _tmp70_); _tmp72_ = _tmp71_; _tmp73_ = g_strdup_printf ("set_%s", _tmp72_); _tmp74_ = _tmp73_; _tmp75_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp69_, _tmp74_); _tmp76_ = _tmp75_; _tmp77_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp76_); _tmp78_ = _tmp77_; _vala_ccode_node_unref0 (_tmp76_); _g_free0 (_tmp74_); _vala_ccode_node_unref0 (_tmp69_); ccall = _tmp78_; _tmp79_ = ccall; _tmp80_ = instance; _tmp81_ = vala_ccode_base_module_get_ccodenode (self, _tmp80_); _tmp82_ = VALA_CCODE_EXPRESSION (_tmp81_); vala_ccode_function_call_add_argument (_tmp79_, _tmp82_); _vala_ccode_node_unref0 (_tmp82_); _tmp83_ = ccall; _tmp84_ = value; _tmp85_ = vala_ccode_base_module_get_cvalue_ (self, _tmp84_); _tmp86_ = _tmp85_; vala_ccode_function_call_add_argument (_tmp83_, _tmp86_); _vala_ccode_node_unref0 (_tmp86_); _tmp87_ = vala_ccode_base_module_get_ccode (self); _tmp88_ = _tmp87_; _tmp89_ = ccall; vala_ccode_function_add_expression (_tmp88_, (ValaCCodeExpression*) _tmp89_); _vala_ccode_node_unref0 (ccall); _g_free0 (parent_iface_var); _vala_code_node_unref0 (base_iface); } } return; } _tmp90_ = g_strdup ("g_object_set"); set_func = _tmp90_; _tmp91_ = prop; _tmp92_ = _vala_code_node_ref0 (_tmp91_); base_property = _tmp92_; _tmp93_ = prop; _tmp94_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp93_); if (!_tmp94_) { ValaProperty* _tmp95_; ValaProperty* _tmp96_; ValaProperty* _tmp97_; ValaProperty* _tmp109_; _tmp95_ = prop; _tmp96_ = vala_property_get_base_property (_tmp95_); _tmp97_ = _tmp96_; if (_tmp97_ != NULL) { ValaProperty* _tmp98_; ValaProperty* _tmp99_; ValaProperty* _tmp100_; ValaProperty* _tmp101_; _tmp98_ = prop; _tmp99_ = vala_property_get_base_property (_tmp98_); _tmp100_ = _tmp99_; _tmp101_ = _vala_code_node_ref0 (_tmp100_); _vala_code_node_unref0 (base_property); base_property = _tmp101_; } else { ValaProperty* _tmp102_; ValaProperty* _tmp103_; ValaProperty* _tmp104_; _tmp102_ = prop; _tmp103_ = vala_property_get_base_interface_property (_tmp102_); _tmp104_ = _tmp103_; if (_tmp104_ != NULL) { ValaProperty* _tmp105_; ValaProperty* _tmp106_; ValaProperty* _tmp107_; ValaProperty* _tmp108_; _tmp105_ = prop; _tmp106_ = vala_property_get_base_interface_property (_tmp105_); _tmp107_ = _tmp106_; _tmp108_ = _vala_code_node_ref0 (_tmp107_); _vala_code_node_unref0 (base_property); base_property = _tmp108_; } } _tmp109_ = prop; if (VALA_IS_DYNAMIC_PROPERTY (_tmp109_)) { ValaProperty* _tmp110_; gchar* _tmp111_ = NULL; _tmp110_ = prop; _tmp111_ = vala_ccode_base_module_get_dynamic_property_setter_cname (self, VALA_DYNAMIC_PROPERTY (_tmp110_)); _g_free0 (set_func); set_func = _tmp111_; } else { ValaProperty* _tmp112_; ValaPropertyAccessor* _tmp113_; ValaPropertyAccessor* _tmp114_; ValaCCodeFile* _tmp115_; ValaProperty* _tmp116_; ValaPropertyAccessor* _tmp117_; ValaPropertyAccessor* _tmp118_; gchar* _tmp119_ = NULL; gboolean _tmp120_ = FALSE; ValaProperty* _tmp121_; gboolean _tmp122_; gboolean _tmp123_; gboolean _tmp127_; _tmp112_ = base_property; _tmp113_ = vala_property_get_set_accessor (_tmp112_); _tmp114_ = _tmp113_; _tmp115_ = self->cfile; vala_ccode_base_module_generate_property_accessor_declaration (self, _tmp114_, _tmp115_); _tmp116_ = base_property; _tmp117_ = vala_property_get_set_accessor (_tmp116_); _tmp118_ = _tmp117_; _tmp119_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp118_); _g_free0 (set_func); set_func = _tmp119_; _tmp121_ = prop; _tmp122_ = vala_symbol_get_external ((ValaSymbol*) _tmp121_); _tmp123_ = _tmp122_; if (!_tmp123_) { ValaProperty* _tmp124_; gboolean _tmp125_; gboolean _tmp126_; _tmp124_ = prop; _tmp125_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp124_); _tmp126_ = _tmp125_; _tmp120_ = _tmp126_; } else { _tmp120_ = FALSE; } _tmp127_ = _tmp120_; if (_tmp127_) { ValaProperty* _tmp128_; gboolean _tmp129_ = FALSE; _tmp128_ = prop; _tmp129_ = vala_ccode_base_module_add_generated_external_symbol (self, (ValaSymbol*) _tmp128_); if (_tmp129_) { ValaProperty* _tmp130_; _tmp130_ = prop; vala_code_visitor_visit_property ((ValaCodeVisitor*) self, _tmp130_); } } } } _tmp131_ = set_func; _tmp132_ = vala_ccode_identifier_new (_tmp131_); _tmp133_ = _tmp132_; _tmp134_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp133_); _tmp135_ = _tmp134_; _vala_ccode_node_unref0 (_tmp133_); ccall = _tmp135_; _tmp136_ = prop; _tmp137_ = vala_property_get_binding (_tmp136_); _tmp138_ = _tmp137_; if (_tmp138_ == VALA_MEMBER_BINDING_INSTANCE) { ValaExpression* _tmp139_; ValaCCodeExpression* _tmp140_ = NULL; ValaCCodeExpression* cinstance; ValaProperty* _tmp141_; ValaSymbol* _tmp142_; ValaSymbol* _tmp143_; ValaCCodeFunctionCall* _tmp157_; ValaCCodeExpression* _tmp158_; _tmp139_ = instance; _tmp140_ = vala_ccode_base_module_get_ccodenode (self, _tmp139_); cinstance = VALA_CCODE_EXPRESSION (_tmp140_); _tmp141_ = prop; _tmp142_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp141_); _tmp143_ = _tmp142_; if (VALA_IS_STRUCT (_tmp143_)) { ValaExpression* _tmp144_; ValaTargetValue* _tmp145_; ValaTargetValue* _tmp146_; ValaTargetValue* _tmp147_; ValaTargetValue* instance_value; ValaTargetValue* _tmp148_; gboolean _tmp149_ = FALSE; ValaTargetValue* _tmp153_; ValaCCodeExpression* _tmp154_ = NULL; ValaCCodeExpression* _tmp155_; ValaCCodeUnaryExpression* _tmp156_; _tmp144_ = instance; _tmp145_ = vala_expression_get_target_value (_tmp144_); _tmp146_ = _tmp145_; _tmp147_ = _vala_target_value_ref0 (_tmp146_); instance_value = _tmp147_; _tmp148_ = instance_value; _tmp149_ = vala_ccode_base_module_get_lvalue (self, _tmp148_); if (!_tmp149_) { ValaTargetValue* _tmp150_; ValaExpression* _tmp151_; ValaTargetValue* _tmp152_ = NULL; _tmp150_ = instance_value; _tmp151_ = instance; _tmp152_ = vala_ccode_base_module_store_temp_value (self, _tmp150_, (ValaCodeNode*) _tmp151_, NULL); _vala_target_value_unref0 (instance_value); instance_value = _tmp152_; } _tmp153_ = instance_value; _tmp154_ = vala_ccode_base_module_get_cvalue_ (self, _tmp153_); _tmp155_ = _tmp154_; _tmp156_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp155_); _vala_ccode_node_unref0 (cinstance); cinstance = (ValaCCodeExpression*) _tmp156_; _vala_ccode_node_unref0 (_tmp155_); _vala_target_value_unref0 (instance_value); } _tmp157_ = ccall; _tmp158_ = cinstance; vala_ccode_function_call_add_argument (_tmp157_, _tmp158_); _vala_ccode_node_unref0 (cinstance); } _tmp159_ = prop; _tmp160_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp159_); if (_tmp160_) { ValaCCodeFunctionCall* _tmp161_; ValaProperty* _tmp162_; ValaCCodeConstant* _tmp163_ = NULL; ValaCCodeConstant* _tmp164_; _tmp161_ = ccall; _tmp162_ = prop; _tmp163_ = vala_ccode_base_module_get_property_canonical_cconstant (self, _tmp162_); _tmp164_ = _tmp163_; vala_ccode_function_call_add_argument (_tmp161_, (ValaCCodeExpression*) _tmp164_); _vala_ccode_node_unref0 (_tmp164_); } _tmp165_ = value; _tmp166_ = vala_ccode_base_module_get_cvalue_ (self, _tmp165_); cexpr = _tmp166_; _tmp167_ = prop; _tmp168_ = vala_property_get_property_type (_tmp167_); _tmp169_ = _tmp168_; _tmp170_ = vala_data_type_is_real_non_null_struct_type (_tmp169_); if (_tmp170_) { ValaCCodeExpression* _tmp171_; ValaCCodeUnaryExpression* _tmp172_; _tmp171_ = cexpr; _tmp172_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp171_); _vala_ccode_node_unref0 (cexpr); cexpr = (ValaCCodeExpression*) _tmp172_; } _tmp173_ = prop; _tmp174_ = vala_property_get_property_type (_tmp173_); _tmp175_ = _tmp174_; _tmp176_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp175_) ? ((ValaArrayType*) _tmp175_) : NULL); array_type = _tmp176_; _tmp177_ = ccall; _tmp178_ = cexpr; vala_ccode_function_call_add_argument (_tmp177_, _tmp178_); _tmp180_ = array_type; if (_tmp180_ != NULL) { ValaProperty* _tmp181_; gboolean _tmp182_ = FALSE; _tmp181_ = prop; _tmp182_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp181_); _tmp179_ = _tmp182_; } else { _tmp179_ = FALSE; } _tmp183_ = _tmp179_; if (_tmp183_) { { gint dim; dim = 1; { gboolean _tmp184_; _tmp184_ = TRUE; while (TRUE) { gboolean _tmp185_; gint _tmp187_; ValaArrayType* _tmp188_; gint _tmp189_; gint _tmp190_; ValaCCodeFunctionCall* _tmp191_; ValaTargetValue* _tmp192_; gint _tmp193_; ValaCCodeExpression* _tmp194_ = NULL; ValaCCodeExpression* _tmp195_; _tmp185_ = _tmp184_; if (!_tmp185_) { gint _tmp186_; _tmp186_ = dim; dim = _tmp186_ + 1; } _tmp184_ = FALSE; _tmp187_ = dim; _tmp188_ = array_type; _tmp189_ = vala_array_type_get_rank (_tmp188_); _tmp190_ = _tmp189_; if (!(_tmp187_ <= _tmp190_)) { break; } _tmp191_ = ccall; _tmp192_ = value; _tmp193_ = dim; _tmp194_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp192_, _tmp193_); _tmp195_ = _tmp194_; vala_ccode_function_call_add_argument (_tmp191_, _tmp195_); _vala_ccode_node_unref0 (_tmp195_); } } } } else { ValaProperty* _tmp196_; ValaDataType* _tmp197_; ValaDataType* _tmp198_; _tmp196_ = prop; _tmp197_ = vala_property_get_property_type (_tmp196_); _tmp198_ = _tmp197_; if (VALA_IS_DELEGATE_TYPE (_tmp198_)) { ValaProperty* _tmp199_; ValaDataType* _tmp200_; ValaDataType* _tmp201_; ValaDelegateType* _tmp202_; ValaDelegateType* delegate_type; ValaDelegateType* _tmp203_; ValaDelegate* _tmp204_; ValaDelegate* _tmp205_; gboolean _tmp206_; gboolean _tmp207_; _tmp199_ = prop; _tmp200_ = vala_property_get_property_type (_tmp199_); _tmp201_ = _tmp200_; _tmp202_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp201_)); delegate_type = _tmp202_; _tmp203_ = delegate_type; _tmp204_ = vala_delegate_type_get_delegate_symbol (_tmp203_); _tmp205_ = _tmp204_; _tmp206_ = vala_delegate_get_has_target (_tmp205_); _tmp207_ = _tmp206_; if (_tmp207_) { ValaCCodeFunctionCall* _tmp208_; ValaTargetValue* _tmp209_; ValaCCodeExpression* _tmp210_ = NULL; ValaCCodeExpression* _tmp211_; ValaProperty* _tmp212_; ValaPropertyAccessor* _tmp213_; ValaPropertyAccessor* _tmp214_; ValaDataType* _tmp215_; ValaDataType* _tmp216_; gboolean _tmp217_; gboolean _tmp218_; _tmp208_ = ccall; _tmp209_ = value; _tmp210_ = vala_ccode_base_module_get_delegate_target_cvalue (self, _tmp209_); _tmp211_ = _tmp210_; vala_ccode_function_call_add_argument (_tmp208_, _tmp211_); _vala_ccode_node_unref0 (_tmp211_); _tmp212_ = base_property; _tmp213_ = vala_property_get_set_accessor (_tmp212_); _tmp214_ = _tmp213_; _tmp215_ = vala_property_accessor_get_value_type (_tmp214_); _tmp216_ = _tmp215_; _tmp217_ = vala_data_type_get_value_owned (_tmp216_); _tmp218_ = _tmp217_; if (_tmp218_) { ValaCCodeFunctionCall* _tmp219_; ValaTargetValue* _tmp220_; ValaCCodeExpression* _tmp221_ = NULL; ValaCCodeExpression* _tmp222_; _tmp219_ = ccall; _tmp220_ = value; _tmp221_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp220_); _tmp222_ = _tmp221_; vala_ccode_function_call_add_argument (_tmp219_, _tmp222_); _vala_ccode_node_unref0 (_tmp222_); } } _vala_code_node_unref0 (delegate_type); } } _tmp223_ = prop; _tmp224_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp223_); if (_tmp224_) { ValaCCodeFunctionCall* _tmp225_; ValaCCodeConstant* _tmp226_; ValaCCodeConstant* _tmp227_; _tmp225_ = ccall; _tmp226_ = vala_ccode_constant_new ("NULL"); _tmp227_ = _tmp226_; vala_ccode_function_call_add_argument (_tmp225_, (ValaCCodeExpression*) _tmp227_); _vala_ccode_node_unref0 (_tmp227_); } _tmp228_ = vala_ccode_base_module_get_ccode (self); _tmp229_ = _tmp228_; _tmp230_ = ccall; vala_ccode_function_add_expression (_tmp229_, (ValaCCodeExpression*) _tmp230_); _vala_code_node_unref0 (array_type); _vala_ccode_node_unref0 (cexpr); _vala_ccode_node_unref0 (ccall); _vala_code_node_unref0 (base_property); _g_free0 (set_func); } gboolean vala_ccode_base_module_add_wrapper (ValaCCodeBaseModule* self, const gchar* wrapper_name) { gboolean result = FALSE; ValaSet* _tmp0_; const gchar* _tmp1_; gboolean _tmp2_ = FALSE; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (wrapper_name != NULL, FALSE); _tmp0_ = self->wrappers; _tmp1_ = wrapper_name; _tmp2_ = vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_); result = _tmp2_; return result; } gboolean vala_ccode_base_module_add_generated_external_symbol (ValaCCodeBaseModule* self, ValaSymbol* external_symbol) { gboolean result = FALSE; ValaSet* _tmp0_; ValaSymbol* _tmp1_; gboolean _tmp2_ = FALSE; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (external_symbol != NULL, FALSE); _tmp0_ = self->priv->generated_external_symbols; _tmp1_ = external_symbol; _tmp2_ = vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_); result = _tmp2_; return result; } ValaDataType* vala_ccode_base_module_get_data_type_for_symbol (ValaTypeSymbol* sym) { ValaDataType* result = NULL; ValaDataType* type; ValaTypeSymbol* _tmp0_; g_return_val_if_fail (sym != NULL, NULL); type = NULL; _tmp0_ = sym; if (VALA_IS_CLASS (_tmp0_)) { ValaTypeSymbol* _tmp1_; ValaObjectType* _tmp2_; _tmp1_ = sym; _tmp2_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_CLASS (_tmp1_)); _vala_code_node_unref0 (type); type = (ValaDataType*) _tmp2_; } else { ValaTypeSymbol* _tmp3_; _tmp3_ = sym; if (VALA_IS_INTERFACE (_tmp3_)) { ValaTypeSymbol* _tmp4_; ValaObjectType* _tmp5_; _tmp4_ = sym; _tmp5_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_INTERFACE (_tmp4_)); _vala_code_node_unref0 (type); type = (ValaDataType*) _tmp5_; } else { ValaTypeSymbol* _tmp6_; _tmp6_ = sym; if (VALA_IS_STRUCT (_tmp6_)) { ValaTypeSymbol* _tmp7_; ValaStruct* _tmp8_; ValaStruct* st; ValaStruct* _tmp9_; gboolean _tmp10_ = FALSE; _tmp7_ = sym; _tmp8_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp7_)); st = _tmp8_; _tmp9_ = st; _tmp10_ = vala_struct_is_boolean_type (_tmp9_); if (_tmp10_) { ValaStruct* _tmp11_; ValaBooleanType* _tmp12_; _tmp11_ = st; _tmp12_ = vala_boolean_type_new (_tmp11_); _vala_code_node_unref0 (type); type = (ValaDataType*) _tmp12_; } else { ValaStruct* _tmp13_; gboolean _tmp14_ = FALSE; _tmp13_ = st; _tmp14_ = vala_struct_is_integer_type (_tmp13_); if (_tmp14_) { ValaStruct* _tmp15_; ValaIntegerType* _tmp16_; _tmp15_ = st; _tmp16_ = vala_integer_type_new (_tmp15_, NULL, NULL); _vala_code_node_unref0 (type); type = (ValaDataType*) _tmp16_; } else { ValaStruct* _tmp17_; gboolean _tmp18_ = FALSE; _tmp17_ = st; _tmp18_ = vala_struct_is_floating_type (_tmp17_); if (_tmp18_) { ValaStruct* _tmp19_; ValaFloatingType* _tmp20_; _tmp19_ = st; _tmp20_ = vala_floating_type_new (_tmp19_); _vala_code_node_unref0 (type); type = (ValaDataType*) _tmp20_; } else { ValaStruct* _tmp21_; ValaStructValueType* _tmp22_; _tmp21_ = st; _tmp22_ = vala_struct_value_type_new (_tmp21_); _vala_code_node_unref0 (type); type = (ValaDataType*) _tmp22_; } } } _vala_code_node_unref0 (st); } else { ValaTypeSymbol* _tmp23_; _tmp23_ = sym; if (VALA_IS_ENUM (_tmp23_)) { ValaTypeSymbol* _tmp24_; ValaEnumValueType* _tmp25_; _tmp24_ = sym; _tmp25_ = vala_enum_value_type_new (VALA_ENUM (_tmp24_)); _vala_code_node_unref0 (type); type = (ValaDataType*) _tmp25_; } else { ValaTypeSymbol* _tmp26_; _tmp26_ = sym; if (VALA_IS_ERROR_DOMAIN (_tmp26_)) { ValaTypeSymbol* _tmp27_; ValaErrorType* _tmp28_; _tmp27_ = sym; _tmp28_ = vala_error_type_new (VALA_ERROR_DOMAIN (_tmp27_), NULL, NULL); _vala_code_node_unref0 (type); type = (ValaDataType*) _tmp28_; } else { ValaTypeSymbol* _tmp29_; _tmp29_ = sym; if (VALA_IS_ERROR_CODE (_tmp29_)) { ValaTypeSymbol* _tmp30_; ValaSymbol* _tmp31_; ValaSymbol* _tmp32_; ValaTypeSymbol* _tmp33_; ValaErrorType* _tmp34_; _tmp30_ = sym; _tmp31_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp30_); _tmp32_ = _tmp31_; _tmp33_ = sym; _tmp34_ = vala_error_type_new (VALA_ERROR_DOMAIN (_tmp32_), VALA_ERROR_CODE (_tmp33_), NULL); _vala_code_node_unref0 (type); type = (ValaDataType*) _tmp34_; } else { ValaTypeSymbol* _tmp35_; gchar* _tmp36_ = NULL; gchar* _tmp37_; gchar* _tmp38_ = NULL; gchar* _tmp39_; ValaInvalidType* _tmp40_; _tmp35_ = sym; _tmp36_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp35_); _tmp37_ = _tmp36_; _tmp38_ = g_strdup_printf ("internal error: `%s' is not a supported type", _tmp37_); _tmp39_ = _tmp38_; vala_report_error (NULL, _tmp39_); _g_free0 (_tmp39_); _g_free0 (_tmp37_); _tmp40_ = vala_invalid_type_new (); result = (ValaDataType*) _tmp40_; _vala_code_node_unref0 (type); return result; } } } } } } result = type; return result; } ValaCCodeExpression* vala_ccode_base_module_default_value_for_type (ValaCCodeBaseModule* self, ValaDataType* type, gboolean initializer_expression) { ValaCCodeExpression* result = NULL; ValaDataType* _tmp0_; ValaTypeSymbol* _tmp1_; ValaTypeSymbol* _tmp2_; ValaStruct* _tmp3_; ValaStruct* st; ValaDataType* _tmp4_; ValaArrayType* _tmp5_; ValaArrayType* array_type; gboolean _tmp6_ = FALSE; gboolean _tmp7_ = FALSE; ValaDataType* _tmp8_; ValaTypeSymbol* _tmp9_; ValaTypeSymbol* _tmp10_; gboolean _tmp14_; gboolean _tmp20_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; _tmp1_ = vala_data_type_get_data_type (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp2_) ? ((ValaStruct*) _tmp2_) : NULL); st = _tmp3_; _tmp4_ = type; _tmp5_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp4_) ? ((ValaArrayType*) _tmp4_) : NULL); array_type = _tmp5_; _tmp8_ = type; _tmp9_ = vala_data_type_get_data_type (_tmp8_); _tmp10_ = _tmp9_; if (_tmp10_ != NULL) { ValaDataType* _tmp11_; gboolean _tmp12_; gboolean _tmp13_; _tmp11_ = type; _tmp12_ = vala_data_type_get_nullable (_tmp11_); _tmp13_ = _tmp12_; _tmp7_ = !_tmp13_; } else { _tmp7_ = FALSE; } _tmp14_ = _tmp7_; if (_tmp14_) { ValaDataType* _tmp15_; ValaTypeSymbol* _tmp16_; ValaTypeSymbol* _tmp17_; gchar* _tmp18_ = NULL; gchar* _tmp19_; _tmp15_ = type; _tmp16_ = vala_data_type_get_data_type (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = vala_ccode_base_module_get_ccode_default_value (_tmp17_); _tmp19_ = _tmp18_; _tmp6_ = g_strcmp0 (_tmp19_, "") != 0; _g_free0 (_tmp19_); } else { _tmp6_ = FALSE; } _tmp20_ = _tmp6_; if (_tmp20_) { ValaDataType* _tmp21_; ValaTypeSymbol* _tmp22_; ValaTypeSymbol* _tmp23_; gchar* _tmp24_ = NULL; gchar* _tmp25_; ValaCCodeConstant* _tmp26_; ValaCCodeExpression* _tmp27_; _tmp21_ = type; _tmp22_ = vala_data_type_get_data_type (_tmp21_); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_base_module_get_ccode_default_value (_tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_constant_new (_tmp25_); _tmp27_ = (ValaCCodeExpression*) _tmp26_; _g_free0 (_tmp25_); result = _tmp27_; _vala_code_node_unref0 (array_type); _vala_code_node_unref0 (st); return result; } else { gboolean _tmp28_ = FALSE; gboolean _tmp29_ = FALSE; gboolean _tmp30_; gboolean _tmp34_; gboolean _tmp44_; _tmp30_ = initializer_expression; if (_tmp30_) { ValaDataType* _tmp31_; gboolean _tmp32_; gboolean _tmp33_; _tmp31_ = type; _tmp32_ = vala_data_type_get_nullable (_tmp31_); _tmp33_ = _tmp32_; _tmp29_ = !_tmp33_; } else { _tmp29_ = FALSE; } _tmp34_ = _tmp29_; if (_tmp34_) { gboolean _tmp35_ = FALSE; ValaStruct* _tmp36_; gboolean _tmp43_; _tmp36_ = st; if (_tmp36_ != NULL) { _tmp35_ = TRUE; } else { gboolean _tmp37_ = FALSE; ValaArrayType* _tmp38_; gboolean _tmp42_; _tmp38_ = array_type; if (_tmp38_ != NULL) { ValaArrayType* _tmp39_; gboolean _tmp40_; gboolean _tmp41_; _tmp39_ = array_type; _tmp40_ = vala_array_type_get_fixed_length (_tmp39_); _tmp41_ = _tmp40_; _tmp37_ = _tmp41_; } else { _tmp37_ = FALSE; } _tmp42_ = _tmp37_; _tmp35_ = _tmp42_; } _tmp43_ = _tmp35_; _tmp28_ = _tmp43_; } else { _tmp28_ = FALSE; } _tmp44_ = _tmp28_; if (_tmp44_) { ValaCCodeInitializerList* _tmp45_; ValaCCodeInitializerList* clist; ValaCCodeInitializerList* _tmp46_; ValaCCodeConstant* _tmp47_; ValaCCodeConstant* _tmp48_; _tmp45_ = vala_ccode_initializer_list_new (); clist = _tmp45_; _tmp46_ = clist; _tmp47_ = vala_ccode_constant_new ("0"); _tmp48_ = _tmp47_; vala_ccode_initializer_list_append (_tmp46_, (ValaCCodeExpression*) _tmp48_); _vala_ccode_node_unref0 (_tmp48_); result = (ValaCCodeExpression*) clist; _vala_code_node_unref0 (array_type); _vala_code_node_unref0 (st); return result; } else { gboolean _tmp49_ = FALSE; gboolean _tmp50_ = FALSE; gboolean _tmp51_ = FALSE; gboolean _tmp52_ = FALSE; gboolean _tmp53_ = FALSE; ValaDataType* _tmp54_; ValaTypeSymbol* _tmp55_; ValaTypeSymbol* _tmp56_; gboolean _tmp61_; gboolean _tmp65_; gboolean _tmp67_; gboolean _tmp69_; gboolean _tmp76_; _tmp54_ = type; _tmp55_ = vala_data_type_get_data_type (_tmp54_); _tmp56_ = _tmp55_; if (_tmp56_ != NULL) { ValaDataType* _tmp57_; ValaTypeSymbol* _tmp58_; ValaTypeSymbol* _tmp59_; gboolean _tmp60_ = FALSE; _tmp57_ = type; _tmp58_ = vala_data_type_get_data_type (_tmp57_); _tmp59_ = _tmp58_; _tmp60_ = vala_typesymbol_is_reference_type (_tmp59_); _tmp53_ = _tmp60_; } else { _tmp53_ = FALSE; } _tmp61_ = _tmp53_; if (_tmp61_) { _tmp52_ = TRUE; } else { ValaDataType* _tmp62_; gboolean _tmp63_; gboolean _tmp64_; _tmp62_ = type; _tmp63_ = vala_data_type_get_nullable (_tmp62_); _tmp64_ = _tmp63_; _tmp52_ = _tmp64_; } _tmp65_ = _tmp52_; if (_tmp65_) { _tmp51_ = TRUE; } else { ValaDataType* _tmp66_; _tmp66_ = type; _tmp51_ = VALA_IS_POINTER_TYPE (_tmp66_); } _tmp67_ = _tmp51_; if (_tmp67_) { _tmp50_ = TRUE; } else { ValaDataType* _tmp68_; _tmp68_ = type; _tmp50_ = VALA_IS_DELEGATE_TYPE (_tmp68_); } _tmp69_ = _tmp50_; if (_tmp69_) { _tmp49_ = TRUE; } else { gboolean _tmp70_ = FALSE; ValaArrayType* _tmp71_; gboolean _tmp75_; _tmp71_ = array_type; if (_tmp71_ != NULL) { ValaArrayType* _tmp72_; gboolean _tmp73_; gboolean _tmp74_; _tmp72_ = array_type; _tmp73_ = vala_array_type_get_fixed_length (_tmp72_); _tmp74_ = _tmp73_; _tmp70_ = !_tmp74_; } else { _tmp70_ = FALSE; } _tmp75_ = _tmp70_; _tmp49_ = _tmp75_; } _tmp76_ = _tmp49_; if (_tmp76_) { ValaCCodeConstant* _tmp77_; _tmp77_ = vala_ccode_constant_new ("NULL"); result = (ValaCCodeExpression*) _tmp77_; _vala_code_node_unref0 (array_type); _vala_code_node_unref0 (st); return result; } else { ValaDataType* _tmp78_; ValaTypeParameter* _tmp79_; ValaTypeParameter* _tmp80_; _tmp78_ = type; _tmp79_ = vala_data_type_get_type_parameter (_tmp78_); _tmp80_ = _tmp79_; if (_tmp80_ != NULL) { ValaCCodeConstant* _tmp81_; _tmp81_ = vala_ccode_constant_new ("NULL"); result = (ValaCCodeExpression*) _tmp81_; _vala_code_node_unref0 (array_type); _vala_code_node_unref0 (st); return result; } else { ValaDataType* _tmp82_; _tmp82_ = type; if (VALA_IS_ERROR_TYPE (_tmp82_)) { ValaCCodeConstant* _tmp83_; _tmp83_ = vala_ccode_constant_new ("NULL"); result = (ValaCCodeExpression*) _tmp83_; _vala_code_node_unref0 (array_type); _vala_code_node_unref0 (st); return result; } } } } } result = NULL; _vala_code_node_unref0 (array_type); _vala_code_node_unref0 (st); return result; } static void vala_ccode_base_module_create_property_type_check_statement (ValaCCodeBaseModule* self, ValaProperty* prop, gboolean check_return_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name) { gboolean _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (prop != NULL); g_return_if_fail (t != NULL); g_return_if_fail (var_name != NULL); _tmp0_ = check_return_type; if (_tmp0_) { ValaProperty* _tmp1_; ValaProperty* _tmp2_; ValaDataType* _tmp3_; ValaDataType* _tmp4_; ValaTypeSymbol* _tmp5_; gboolean _tmp6_; const gchar* _tmp7_; _tmp1_ = prop; _tmp2_ = prop; _tmp3_ = vala_property_get_property_type (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = t; _tmp6_ = non_null; _tmp7_ = var_name; vala_ccode_base_module_create_type_check_statement (self, (ValaCodeNode*) _tmp1_, _tmp4_, _tmp5_, _tmp6_, _tmp7_); } else { ValaProperty* _tmp8_; ValaVoidType* _tmp9_; ValaVoidType* _tmp10_; ValaTypeSymbol* _tmp11_; gboolean _tmp12_; const gchar* _tmp13_; _tmp8_ = prop; _tmp9_ = vala_void_type_new (NULL); _tmp10_ = _tmp9_; _tmp11_ = t; _tmp12_ = non_null; _tmp13_ = var_name; vala_ccode_base_module_create_type_check_statement (self, (ValaCodeNode*) _tmp8_, (ValaDataType*) _tmp10_, _tmp11_, _tmp12_, _tmp13_); _vala_code_node_unref0 (_tmp10_); } } static void vala_ccode_base_module_real_create_type_check_statement (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name) { g_return_if_fail (method_node != NULL); g_return_if_fail (ret_type != NULL); g_return_if_fail (t != NULL); g_return_if_fail (var_name != NULL); } void vala_ccode_base_module_create_type_check_statement (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->create_type_check_statement (self, method_node, ret_type, t, non_null, var_name); } gint vala_ccode_base_module_get_param_pos (ValaCCodeBaseModule* self, gdouble param_pos, gboolean ellipsis) { gint result = 0; gboolean _tmp0_; g_return_val_if_fail (self != NULL, 0); _tmp0_ = ellipsis; if (!_tmp0_) { gdouble _tmp1_; _tmp1_ = param_pos; if (_tmp1_ >= ((gdouble) 0)) { gdouble _tmp2_; _tmp2_ = param_pos; result = (gint) (_tmp2_ * 1000); return result; } else { gdouble _tmp3_; _tmp3_ = param_pos; result = (gint) ((100 + _tmp3_) * 1000); return result; } } else { gdouble _tmp4_; _tmp4_ = param_pos; if (_tmp4_ >= ((gdouble) 0)) { gdouble _tmp5_; _tmp5_ = param_pos; result = (gint) ((100 + _tmp5_) * 1000); return result; } else { gdouble _tmp6_; _tmp6_ = param_pos; result = (gint) ((200 + _tmp6_) * 1000); return result; } } } ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node) { ValaCCodeExpression* result = NULL; ValaExpression* _tmp0_; ValaCCodeExpression* _tmp1_ = NULL; ValaCCodeExpression* _tmp2_; gboolean _tmp3_; ValaExpression* _tmp5_; ValaCCodeExpression* _tmp6_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_cvalue (self, _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _tmp2_ == NULL; _vala_ccode_node_unref0 (_tmp2_); if (_tmp3_) { ValaExpression* _tmp4_; _tmp4_ = node; vala_code_node_emit ((ValaCodeNode*) _tmp4_, (ValaCodeGenerator*) self); } _tmp5_ = node; _tmp6_ = vala_ccode_base_module_get_cvalue (self, _tmp5_); result = _tmp6_; return result; } gboolean vala_ccode_base_module_is_lvalue_access_allowed (ValaCCodeBaseModule* self, ValaDataType* type) { gboolean result = FALSE; ValaDataType* _tmp0_; ValaArrayType* _tmp1_; ValaArrayType* array_type; gboolean _tmp2_ = FALSE; ValaArrayType* _tmp3_; gboolean _tmp7_; ValaDataType* _tmp8_; ValaTypeSymbol* _tmp9_; ValaTypeSymbol* _tmp10_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (type != NULL, FALSE); _tmp0_ = type; _tmp1_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp0_) ? ((ValaArrayType*) _tmp0_) : NULL); array_type = _tmp1_; _tmp3_ = array_type; if (_tmp3_ != NULL) { ValaArrayType* _tmp4_; gboolean _tmp5_; gboolean _tmp6_; _tmp4_ = array_type; _tmp5_ = vala_array_type_get_inline_allocated (_tmp4_); _tmp6_ = _tmp5_; _tmp2_ = _tmp6_; } else { _tmp2_ = FALSE; } _tmp7_ = _tmp2_; if (_tmp7_) { result = FALSE; _vala_code_node_unref0 (array_type); return result; } _tmp8_ = type; _tmp9_ = vala_data_type_get_data_type (_tmp8_); _tmp10_ = _tmp9_; if (_tmp10_ != NULL) { ValaDataType* _tmp11_; ValaTypeSymbol* _tmp12_; ValaTypeSymbol* _tmp13_; gboolean _tmp14_ = FALSE; _tmp11_ = type; _tmp12_ = vala_data_type_get_data_type (_tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp13_, "CCode", "lvalue_access", TRUE); result = _tmp14_; _vala_code_node_unref0 (array_type); return result; } result = TRUE; _vala_code_node_unref0 (array_type); return result; } static gpointer _vala_attribute_cache_ref0 (gpointer self) { return self ? vala_attribute_cache_ref (self) : NULL; } ValaCCodeAttribute* vala_ccode_base_module_get_ccode_attribute (ValaCodeNode* node) { ValaCCodeAttribute* result = NULL; ValaCodeNode* _tmp0_; gint _tmp1_; ValaAttributeCache* _tmp2_ = NULL; ValaAttributeCache* attr; ValaAttributeCache* _tmp3_; ValaAttributeCache* _tmp9_; ValaCCodeAttribute* _tmp10_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_ccode_attribute_cache_index; _tmp2_ = vala_code_node_get_attribute_cache (_tmp0_, _tmp1_); attr = _tmp2_; _tmp3_ = attr; if (_tmp3_ == NULL) { ValaCodeNode* _tmp4_; ValaCCodeAttribute* _tmp5_; ValaCodeNode* _tmp6_; gint _tmp7_; ValaAttributeCache* _tmp8_; _tmp4_ = node; _tmp5_ = vala_ccode_attribute_new (_tmp4_); _vala_attribute_cache_unref0 (attr); attr = (ValaAttributeCache*) _tmp5_; _tmp6_ = node; _tmp7_ = vala_ccode_base_module_ccode_attribute_cache_index; _tmp8_ = attr; vala_code_node_set_attribute_cache (_tmp6_, _tmp7_, _tmp8_); } _tmp9_ = attr; _tmp10_ = _vala_attribute_cache_ref0 (VALA_CCODE_ATTRIBUTE (_tmp9_)); result = _tmp10_; _vala_attribute_cache_unref0 (attr); return result; } gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_name (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_const_name (ValaCodeNode* node) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_const_name (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_type_name (ValaInterface* iface) { gchar* result = NULL; ValaInterface* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (iface != NULL, NULL); _tmp0_ = iface; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_type_name (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaSymbol* _tmp1_; ValaSymbol* sym; ValaSymbol* _tmp2_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = _vala_code_node_ref0 (VALA_IS_SYMBOL (_tmp0_) ? ((ValaSymbol*) _tmp0_) : NULL); sym = _tmp1_; _tmp2_ = sym; if (_tmp2_ != NULL) { const gchar* _tmp3_; ValaSymbol* _tmp4_; _tmp3_ = infix; if (_tmp3_ == NULL) { infix = ""; } _tmp4_ = sym; if (VALA_IS_DELEGATE (_tmp4_)) { ValaSymbol* _tmp5_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; const gchar* _tmp10_; ValaSymbol* _tmp11_; const gchar* _tmp12_; const gchar* _tmp13_; gchar* _tmp14_ = NULL; gchar* _tmp15_; gchar* _tmp16_ = NULL; gchar* _tmp17_; _tmp5_ = sym; _tmp6_ = vala_symbol_get_parent_symbol (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = infix; _tmp11_ = sym; _tmp12_ = vala_symbol_get_name (_tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_symbol_camel_case_to_lower_case (_tmp13_); _tmp15_ = _tmp14_; _tmp16_ = g_strdup_printf ("%s%s%s", _tmp9_, _tmp10_, _tmp15_); _tmp17_ = _tmp16_; _g_free0 (_tmp15_); _g_free0 (_tmp9_); result = _tmp17_; _vala_code_node_unref0 (sym); return result; } else { ValaSymbol* _tmp18_; _tmp18_ = sym; if (VALA_IS_ERROR_CODE (_tmp18_)) { ValaSymbol* _tmp19_; gchar* _tmp20_ = NULL; gchar* _tmp21_; gchar* _tmp22_ = NULL; gchar* _tmp23_; _tmp19_ = sym; _tmp20_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp19_); _tmp21_ = _tmp20_; _tmp22_ = g_utf8_strdown (_tmp21_, (gssize) (-1)); _tmp23_ = _tmp22_; _g_free0 (_tmp21_); result = _tmp23_; _vala_code_node_unref0 (sym); return result; } else { ValaSymbol* _tmp24_; ValaSymbol* _tmp25_; ValaSymbol* _tmp26_; gchar* _tmp27_ = NULL; gchar* _tmp28_; const gchar* _tmp29_; ValaSymbol* _tmp30_; gchar* _tmp31_ = NULL; gchar* _tmp32_; gchar* _tmp33_ = NULL; gchar* _tmp34_; _tmp24_ = sym; _tmp25_ = vala_symbol_get_parent_symbol (_tmp24_); _tmp26_ = _tmp25_; _tmp27_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp26_); _tmp28_ = _tmp27_; _tmp29_ = infix; _tmp30_ = sym; _tmp31_ = vala_ccode_base_module_get_ccode_lower_case_suffix (_tmp30_); _tmp32_ = _tmp31_; _tmp33_ = g_strdup_printf ("%s%s%s", _tmp28_, _tmp29_, _tmp32_); _tmp34_ = _tmp33_; _g_free0 (_tmp32_); _g_free0 (_tmp28_); result = _tmp34_; _vala_code_node_unref0 (sym); return result; } } } else { ValaCodeNode* _tmp35_; _tmp35_ = node; if (VALA_IS_ERROR_TYPE (_tmp35_)) { ValaCodeNode* _tmp36_; ValaErrorType* _tmp37_; ValaErrorType* type; ValaErrorType* _tmp38_; ValaErrorDomain* _tmp39_; ValaErrorDomain* _tmp40_; _tmp36_ = node; _tmp37_ = _vala_code_node_ref0 (VALA_ERROR_TYPE (_tmp36_)); type = _tmp37_; _tmp38_ = type; _tmp39_ = vala_error_type_get_error_domain (_tmp38_); _tmp40_ = _tmp39_; if (_tmp40_ == NULL) { const gchar* _tmp41_; _tmp41_ = infix; if (_tmp41_ == NULL) { gchar* _tmp42_; _tmp42_ = g_strdup ("g_error"); result = _tmp42_; _vala_code_node_unref0 (type); _vala_code_node_unref0 (sym); return result; } else { const gchar* _tmp43_; gchar* _tmp44_ = NULL; _tmp43_ = infix; _tmp44_ = g_strdup_printf ("g_%s_error", _tmp43_); result = _tmp44_; _vala_code_node_unref0 (type); _vala_code_node_unref0 (sym); return result; } } else { ValaErrorType* _tmp45_; ValaErrorCode* _tmp46_; ValaErrorCode* _tmp47_; _tmp45_ = type; _tmp46_ = vala_error_type_get_error_code (_tmp45_); _tmp47_ = _tmp46_; if (_tmp47_ == NULL) { ValaErrorType* _tmp48_; ValaErrorDomain* _tmp49_; ValaErrorDomain* _tmp50_; const gchar* _tmp51_; gchar* _tmp52_ = NULL; _tmp48_ = type; _tmp49_ = vala_error_type_get_error_domain (_tmp48_); _tmp50_ = _tmp49_; _tmp51_ = infix; _tmp52_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp50_, _tmp51_); result = _tmp52_; _vala_code_node_unref0 (type); _vala_code_node_unref0 (sym); return result; } else { ValaErrorType* _tmp53_; ValaErrorCode* _tmp54_; ValaErrorCode* _tmp55_; const gchar* _tmp56_; gchar* _tmp57_ = NULL; _tmp53_ = type; _tmp54_ = vala_error_type_get_error_code (_tmp53_); _tmp55_ = _tmp54_; _tmp56_ = infix; _tmp57_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp55_, _tmp56_); result = _tmp57_; _vala_code_node_unref0 (type); _vala_code_node_unref0 (sym); return result; } } _vala_code_node_unref0 (type); } else { ValaCodeNode* _tmp58_; ValaDataType* _tmp59_; ValaDataType* type; ValaDataType* _tmp60_; ValaTypeSymbol* _tmp61_; ValaTypeSymbol* _tmp62_; const gchar* _tmp63_; gchar* _tmp64_ = NULL; _tmp58_ = node; _tmp59_ = _vala_code_node_ref0 (VALA_DATA_TYPE (_tmp58_)); type = _tmp59_; _tmp60_ = type; _tmp61_ = vala_data_type_get_data_type (_tmp60_); _tmp62_ = _tmp61_; _tmp63_ = infix; _tmp64_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp62_, _tmp63_); result = _tmp64_; _vala_code_node_unref0 (type); _vala_code_node_unref0 (sym); return result; } } _vala_code_node_unref0 (sym); } gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const gchar* infix) { gchar* result = NULL; ValaSymbol* _tmp0_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; if (VALA_IS_PROPERTY (_tmp0_)) { ValaSymbol* _tmp1_; ValaSymbol* _tmp2_; ValaSymbol* _tmp3_; gchar* _tmp4_ = NULL; gchar* _tmp5_; ValaSymbol* _tmp6_; const gchar* _tmp7_; const gchar* _tmp8_; gchar* _tmp9_ = NULL; gchar* _tmp10_; gchar* _tmp11_ = NULL; gchar* _tmp12_; gchar* _tmp13_ = NULL; gchar* _tmp14_; _tmp1_ = sym; _tmp2_ = vala_symbol_get_parent_symbol (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp3_, NULL); _tmp5_ = _tmp4_; _tmp6_ = sym; _tmp7_ = vala_symbol_get_name (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = vala_symbol_camel_case_to_lower_case (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = g_strdup_printf ("%s_%s", _tmp5_, _tmp10_); _tmp12_ = _tmp11_; _tmp13_ = g_utf8_strup (_tmp12_, (gssize) (-1)); _tmp14_ = _tmp13_; _g_free0 (_tmp12_); _g_free0 (_tmp10_); _g_free0 (_tmp5_); result = _tmp14_; return result; } else { ValaSymbol* _tmp15_; const gchar* _tmp16_; gchar* _tmp17_ = NULL; gchar* _tmp18_; gchar* _tmp19_ = NULL; gchar* _tmp20_; _tmp15_ = sym; _tmp16_ = infix; _tmp17_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp15_, _tmp16_); _tmp18_ = _tmp17_; _tmp19_ = g_utf8_strup (_tmp18_, (gssize) (-1)); _tmp20_ = _tmp19_; _g_free0 (_tmp18_); result = _tmp20_; return result; } } gchar* vala_ccode_base_module_get_ccode_header_filenames (ValaSymbol* sym) { gchar* result = NULL; ValaSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_header_filenames (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_prefix (ValaSymbol* sym) { gchar* result = NULL; ValaSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_prefix (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym) { gchar* result = NULL; ValaSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_lower_case_prefix (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_lower_case_suffix (ValaSymbol* sym) { gchar* result = NULL; ValaSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_lower_case_suffix (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_ref_function (ValaTypeSymbol* sym) { gchar* result = NULL; ValaTypeSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_ref_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gboolean vala_ccode_base_module_is_reference_counting (ValaTypeSymbol* sym) { gboolean result = FALSE; ValaTypeSymbol* _tmp0_; g_return_val_if_fail (sym != NULL, FALSE); _tmp0_ = sym; if (VALA_IS_CLASS (_tmp0_)) { ValaTypeSymbol* _tmp1_; gchar* _tmp2_ = NULL; gchar* _tmp3_; gboolean _tmp4_; _tmp1_ = sym; _tmp2_ = vala_ccode_base_module_get_ccode_ref_function (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = _tmp3_ != NULL; _g_free0 (_tmp3_); result = _tmp4_; return result; } else { ValaTypeSymbol* _tmp5_; _tmp5_ = sym; if (VALA_IS_INTERFACE (_tmp5_)) { result = TRUE; return result; } else { result = FALSE; return result; } } } gboolean vala_ccode_base_module_get_ccode_ref_function_void (ValaClass* cl) { gboolean result = FALSE; ValaClass* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; gboolean _tmp3_; gboolean _tmp4_; gboolean _tmp5_; g_return_val_if_fail (cl != NULL, FALSE); _tmp0_ = cl; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_ref_function_void (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _tmp4_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp5_; return result; } gboolean vala_ccode_base_module_get_ccode_free_function_address_of (ValaClass* cl) { gboolean result = FALSE; ValaClass* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; gboolean _tmp3_; gboolean _tmp4_; gboolean _tmp5_; g_return_val_if_fail (cl != NULL, FALSE); _tmp0_ = cl; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_free_function_address_of (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _tmp4_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp5_; return result; } gboolean vala_ccode_base_module_get_ccode_ref_sink_function_void (ValaClass* cl) { gboolean result = FALSE; ValaClass* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; gboolean _tmp3_; gboolean _tmp4_; gboolean _tmp5_; g_return_val_if_fail (cl != NULL, FALSE); _tmp0_ = cl; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_ref_sink_function_void (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _tmp4_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp5_; return result; } gchar* vala_ccode_base_module_get_ccode_unref_function (ValaObjectTypeSymbol* sym) { gchar* result = NULL; ValaObjectTypeSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_unref_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_ref_sink_function (ValaObjectTypeSymbol* sym) { gchar* result = NULL; ValaObjectTypeSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_ref_sink_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_copy_function (ValaTypeSymbol* sym) { gchar* result = NULL; ValaTypeSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_copy_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_destroy_function (ValaTypeSymbol* sym) { gchar* result = NULL; ValaTypeSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_destroy_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_dup_function (ValaTypeSymbol* sym) { gchar* result = NULL; ValaTypeSymbol* _tmp0_; ValaTypeSymbol* _tmp9_; gchar* _tmp10_ = NULL; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; if (VALA_IS_STRUCT (_tmp0_)) { ValaTypeSymbol* _tmp1_; gboolean _tmp2_; gboolean _tmp3_; _tmp1_ = sym; _tmp2_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp1_); _tmp3_ = _tmp2_; if (_tmp3_) { result = NULL; return result; } else { ValaTypeSymbol* _tmp4_; gchar* _tmp5_ = NULL; gchar* _tmp6_; gchar* _tmp7_; gchar* _tmp8_; _tmp4_ = sym; _tmp5_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp4_); _tmp6_ = _tmp5_; _tmp7_ = g_strconcat (_tmp6_, "dup", NULL); _tmp8_ = _tmp7_; _g_free0 (_tmp6_); result = _tmp8_; return result; } } _tmp9_ = sym; _tmp10_ = vala_ccode_base_module_get_ccode_copy_function (_tmp9_); result = _tmp10_; return result; } gchar* vala_ccode_base_module_get_ccode_free_function (ValaTypeSymbol* sym) { gchar* result = NULL; ValaTypeSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_free_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gboolean vala_ccode_base_module_get_ccode_is_gboxed (ValaTypeSymbol* sym) { gboolean result = FALSE; ValaTypeSymbol* _tmp0_; gchar* _tmp1_ = NULL; gchar* _tmp2_; gboolean _tmp3_; g_return_val_if_fail (sym != NULL, FALSE); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_free_function (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = g_strcmp0 (_tmp2_, "g_boxed_free") == 0; _g_free0 (_tmp2_); result = _tmp3_; return result; } gchar* vala_ccode_base_module_get_ccode_type_id (ValaCodeNode* node) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_type_id (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_marshaller_type_name (ValaCodeNode* node) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_marshaller_type_name (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_get_value_function (ValaCodeNode* sym) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_get_value_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_set_value_function (ValaCodeNode* sym) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_set_value_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_take_value_function (ValaCodeNode* sym) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_take_value_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_param_spec_function (ValaCodeNode* sym) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_param_spec_function (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_type_check_function (ValaTypeSymbol* sym) { gchar* result = NULL; ValaTypeSymbol* _tmp0_; ValaClass* _tmp1_; ValaClass* cl; ValaTypeSymbol* _tmp2_; gchar* _tmp3_ = NULL; gchar* a; gboolean _tmp4_ = FALSE; ValaClass* _tmp5_; gboolean _tmp7_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp0_) ? ((ValaClass*) _tmp0_) : NULL); cl = _tmp1_; _tmp2_ = sym; _tmp3_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp2_, "CCode", "type_check_function"); a = _tmp3_; _tmp5_ = cl; if (_tmp5_ != NULL) { const gchar* _tmp6_; _tmp6_ = a; _tmp4_ = _tmp6_ != NULL; } else { _tmp4_ = FALSE; } _tmp7_ = _tmp4_; if (_tmp7_) { result = a; _vala_code_node_unref0 (cl); return result; } else { gboolean _tmp8_ = FALSE; gboolean _tmp9_ = FALSE; gboolean _tmp10_ = FALSE; gboolean _tmp11_ = FALSE; ValaClass* _tmp12_; gboolean _tmp16_; gboolean _tmp18_; gboolean _tmp20_; gboolean _tmp22_; _tmp12_ = cl; if (_tmp12_ != NULL) { ValaClass* _tmp13_; gboolean _tmp14_; gboolean _tmp15_; _tmp13_ = cl; _tmp14_ = vala_class_get_is_compact (_tmp13_); _tmp15_ = _tmp14_; _tmp11_ = _tmp15_; } else { _tmp11_ = FALSE; } _tmp16_ = _tmp11_; if (_tmp16_) { _tmp10_ = TRUE; } else { ValaTypeSymbol* _tmp17_; _tmp17_ = sym; _tmp10_ = VALA_IS_STRUCT (_tmp17_); } _tmp18_ = _tmp10_; if (_tmp18_) { _tmp9_ = TRUE; } else { ValaTypeSymbol* _tmp19_; _tmp19_ = sym; _tmp9_ = VALA_IS_ENUM (_tmp19_); } _tmp20_ = _tmp9_; if (_tmp20_) { _tmp8_ = TRUE; } else { ValaTypeSymbol* _tmp21_; _tmp21_ = sym; _tmp8_ = VALA_IS_DELEGATE (_tmp21_); } _tmp22_ = _tmp8_; if (_tmp22_) { gchar* _tmp23_; _tmp23_ = g_strdup (""); result = _tmp23_; _g_free0 (a); _vala_code_node_unref0 (cl); return result; } else { ValaTypeSymbol* _tmp24_; gchar* _tmp25_ = NULL; _tmp24_ = sym; _tmp25_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp24_, "IS_"); result = _tmp25_; _g_free0 (a); _vala_code_node_unref0 (cl); return result; } } _g_free0 (a); _vala_code_node_unref0 (cl); } gchar* vala_ccode_base_module_get_ccode_default_value (ValaTypeSymbol* sym) { gchar* result = NULL; ValaTypeSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_default_value (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gboolean vala_ccode_base_module_get_ccode_has_copy_function (ValaStruct* st) { gboolean result = FALSE; ValaStruct* _tmp0_; gboolean _tmp1_ = FALSE; g_return_val_if_fail (st != NULL, FALSE); _tmp0_ = st; _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "has_copy_function", TRUE); result = _tmp1_; return result; } gboolean vala_ccode_base_module_get_ccode_has_destroy_function (ValaStruct* st) { gboolean result = FALSE; ValaStruct* _tmp0_; gboolean _tmp1_ = FALSE; g_return_val_if_fail (st != NULL, FALSE); _tmp0_ = st; _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "has_destroy_function", TRUE); result = _tmp1_; return result; } gdouble vala_ccode_base_module_get_ccode_instance_pos (ValaCodeNode* node) { gdouble result = 0.0; ValaCodeNode* _tmp0_; g_return_val_if_fail (node != NULL, 0.0); _tmp0_ = node; if (VALA_IS_DELEGATE (_tmp0_)) { ValaCodeNode* _tmp1_; gdouble _tmp2_ = 0.0; _tmp1_ = node; _tmp2_ = vala_code_node_get_attribute_double (_tmp1_, "CCode", "instance_pos", (gdouble) (-2)); result = _tmp2_; return result; } else { ValaCodeNode* _tmp3_; gdouble _tmp4_ = 0.0; _tmp3_ = node; _tmp4_ = vala_code_node_get_attribute_double (_tmp3_, "CCode", "instance_pos", (gdouble) 0); result = _tmp4_; return result; } } gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node) { gboolean result = FALSE; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; gboolean _tmp3_; gboolean _tmp4_; gboolean _tmp5_; g_return_val_if_fail (node != NULL, FALSE); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_array_length (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _tmp4_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp5_; return result; } gchar* vala_ccode_base_module_get_ccode_array_length_type (ValaCodeNode* node) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_array_length_type (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gboolean vala_ccode_base_module_get_ccode_array_null_terminated (ValaCodeNode* node) { gboolean result = FALSE; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; gboolean _tmp3_; gboolean _tmp4_; gboolean _tmp5_; g_return_val_if_fail (node != NULL, FALSE); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_array_null_terminated (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _tmp4_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp5_; return result; } gchar* vala_ccode_base_module_get_ccode_array_length_name (ValaCodeNode* node) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_array_length_name (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_array_length_expr (ValaCodeNode* node) { gchar* result = NULL; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_array_length_expr (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gdouble vala_ccode_base_module_get_ccode_array_length_pos (ValaCodeNode* node) { gdouble result = 0.0; ValaCodeNode* _tmp0_; ValaAttribute* _tmp1_ = NULL; ValaAttribute* a; gboolean _tmp2_ = FALSE; ValaAttribute* _tmp3_; gboolean _tmp6_; ValaCodeNode* _tmp9_; g_return_val_if_fail (node != NULL, 0.0); _tmp0_ = node; _tmp1_ = vala_code_node_get_attribute (_tmp0_, "CCode"); a = _tmp1_; _tmp3_ = a; if (_tmp3_ != NULL) { ValaAttribute* _tmp4_; gboolean _tmp5_ = FALSE; _tmp4_ = a; _tmp5_ = vala_attribute_has_argument (_tmp4_, "array_length_pos"); _tmp2_ = _tmp5_; } else { _tmp2_ = FALSE; } _tmp6_ = _tmp2_; if (_tmp6_) { ValaAttribute* _tmp7_; gdouble _tmp8_ = 0.0; _tmp7_ = a; _tmp8_ = vala_attribute_get_double (_tmp7_, "array_length_pos", (gdouble) 0); result = _tmp8_; _vala_code_node_unref0 (a); return result; } _tmp9_ = node; if (VALA_IS_PARAMETER (_tmp9_)) { ValaCodeNode* _tmp10_; ValaParameter* _tmp11_; ValaParameter* param; ValaParameter* _tmp12_; gdouble _tmp13_ = 0.0; _tmp10_ = node; _tmp11_ = _vala_code_node_ref0 (VALA_PARAMETER (_tmp10_)); param = _tmp11_; _tmp12_ = param; _tmp13_ = vala_ccode_base_module_get_ccode_pos (_tmp12_); result = _tmp13_ + 0.1; _vala_code_node_unref0 (param); _vala_code_node_unref0 (a); return result; } else { result = (gdouble) (-3); _vala_code_node_unref0 (a); return result; } _vala_code_node_unref0 (a); } gdouble vala_ccode_base_module_get_ccode_delegate_target_pos (ValaCodeNode* node) { gdouble result = 0.0; ValaCodeNode* _tmp0_; ValaAttribute* _tmp1_ = NULL; ValaAttribute* a; gboolean _tmp2_ = FALSE; ValaAttribute* _tmp3_; gboolean _tmp6_; ValaCodeNode* _tmp9_; g_return_val_if_fail (node != NULL, 0.0); _tmp0_ = node; _tmp1_ = vala_code_node_get_attribute (_tmp0_, "CCode"); a = _tmp1_; _tmp3_ = a; if (_tmp3_ != NULL) { ValaAttribute* _tmp4_; gboolean _tmp5_ = FALSE; _tmp4_ = a; _tmp5_ = vala_attribute_has_argument (_tmp4_, "delegate_target_pos"); _tmp2_ = _tmp5_; } else { _tmp2_ = FALSE; } _tmp6_ = _tmp2_; if (_tmp6_) { ValaAttribute* _tmp7_; gdouble _tmp8_ = 0.0; _tmp7_ = a; _tmp8_ = vala_attribute_get_double (_tmp7_, "delegate_target_pos", (gdouble) 0); result = _tmp8_; _vala_code_node_unref0 (a); return result; } _tmp9_ = node; if (VALA_IS_PARAMETER (_tmp9_)) { ValaCodeNode* _tmp10_; ValaParameter* _tmp11_; ValaParameter* param; ValaParameter* _tmp12_; gdouble _tmp13_ = 0.0; _tmp10_ = node; _tmp11_ = _vala_code_node_ref0 (VALA_PARAMETER (_tmp10_)); param = _tmp11_; _tmp12_ = param; _tmp13_ = vala_ccode_base_module_get_ccode_pos (_tmp12_); result = _tmp13_ + 0.1; _vala_code_node_unref0 (param); _vala_code_node_unref0 (a); return result; } else { result = (gdouble) (-3); _vala_code_node_unref0 (a); return result; } _vala_code_node_unref0 (a); } gdouble vala_ccode_base_module_get_ccode_destroy_notify_pos (ValaCodeNode* node) { gdouble result = 0.0; ValaCodeNode* _tmp0_; ValaAttribute* _tmp1_ = NULL; ValaAttribute* a; gboolean _tmp2_ = FALSE; ValaAttribute* _tmp3_; gboolean _tmp6_; ValaCodeNode* _tmp9_; g_return_val_if_fail (node != NULL, 0.0); _tmp0_ = node; _tmp1_ = vala_code_node_get_attribute (_tmp0_, "CCode"); a = _tmp1_; _tmp3_ = a; if (_tmp3_ != NULL) { ValaAttribute* _tmp4_; gboolean _tmp5_ = FALSE; _tmp4_ = a; _tmp5_ = vala_attribute_has_argument (_tmp4_, "destroy_notify_pos"); _tmp2_ = _tmp5_; } else { _tmp2_ = FALSE; } _tmp6_ = _tmp2_; if (_tmp6_) { ValaAttribute* _tmp7_; gdouble _tmp8_ = 0.0; _tmp7_ = a; _tmp8_ = vala_attribute_get_double (_tmp7_, "destroy_notify_pos", (gdouble) 0); result = _tmp8_; _vala_code_node_unref0 (a); return result; } _tmp9_ = node; if (VALA_IS_PARAMETER (_tmp9_)) { ValaCodeNode* _tmp10_; ValaParameter* _tmp11_; ValaParameter* param; ValaParameter* _tmp12_; gdouble _tmp13_ = 0.0; _tmp10_ = node; _tmp11_ = _vala_code_node_ref0 (VALA_PARAMETER (_tmp10_)); param = _tmp11_; _tmp12_ = param; _tmp13_ = vala_ccode_base_module_get_ccode_pos (_tmp12_); result = _tmp13_ + 0.1; _vala_code_node_unref0 (param); _vala_code_node_unref0 (a); return result; } else { result = (gdouble) (-3); _vala_code_node_unref0 (a); return result; } _vala_code_node_unref0 (a); } gboolean vala_ccode_base_module_get_ccode_delegate_target (ValaCodeNode* node) { gboolean result = FALSE; ValaCodeNode* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; gboolean _tmp3_; gboolean _tmp4_; gboolean _tmp5_; g_return_val_if_fail (node != NULL, FALSE); _tmp0_ = node; _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_delegate_target (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _tmp4_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp5_; return result; } gdouble vala_ccode_base_module_get_ccode_pos (ValaParameter* param) { gdouble result = 0.0; ValaParameter* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; gdouble _tmp3_; gdouble _tmp4_; gdouble _tmp5_; g_return_val_if_fail (param != NULL, 0.0); _tmp0_ = param; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_pos (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _tmp4_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp5_; return result; } gchar* vala_ccode_base_module_get_ccode_type (ValaCodeNode* node) { gchar* result = NULL; ValaCodeNode* _tmp0_; gchar* _tmp1_ = NULL; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_code_node_get_attribute_string (_tmp0_, "CCode", "type"); result = _tmp1_; return result; } gboolean vala_ccode_base_module_get_ccode_simple_generics (ValaMethod* m) { gboolean result = FALSE; ValaMethod* _tmp0_; gboolean _tmp1_ = FALSE; g_return_val_if_fail (m != NULL, FALSE); _tmp0_ = m; _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "simple_generics", FALSE); result = _tmp1_; return result; } gchar* vala_ccode_base_module_get_ccode_real_name (ValaSymbol* sym) { gchar* result = NULL; ValaSymbol* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (sym != NULL, NULL); _tmp0_ = sym; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_real_name (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_vfunc_name (ValaMethod* m) { gchar* result = NULL; ValaMethod* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (m != NULL, NULL); _tmp0_ = m; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_vfunc_name (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_finish_name (ValaMethod* m) { gchar* result = NULL; ValaMethod* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (m != NULL, NULL); _tmp0_ = m; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_finish_name (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_finish_vfunc_name (ValaMethod* m) { gchar* result = NULL; ValaMethod* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (m != NULL, NULL); _tmp0_ = m; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_finish_vfunc_name (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gchar* vala_ccode_base_module_get_ccode_finish_real_name (ValaMethod* m) { gchar* result = NULL; ValaMethod* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (m != NULL, NULL); _tmp0_ = m; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_finish_real_name (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gboolean vala_ccode_base_module_get_ccode_no_accessor_method (ValaProperty* p) { gboolean result = FALSE; ValaProperty* _tmp0_; ValaAttribute* _tmp1_ = NULL; ValaAttribute* _tmp2_; gboolean _tmp3_; g_return_val_if_fail (p != NULL, FALSE); _tmp0_ = p; _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp0_, "NoAccessorMethod"); _tmp2_ = _tmp1_; _tmp3_ = _tmp2_ != NULL; _vala_code_node_unref0 (_tmp2_); result = _tmp3_; return result; } gboolean vala_ccode_base_module_get_ccode_has_type_id (ValaTypeSymbol* sym) { gboolean result = FALSE; ValaTypeSymbol* _tmp0_; gboolean _tmp1_ = FALSE; g_return_val_if_fail (sym != NULL, FALSE); _tmp0_ = sym; _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "has_type_id", TRUE); result = _tmp1_; return result; } gboolean vala_ccode_base_module_get_ccode_has_new_function (ValaMethod* m) { gboolean result = FALSE; ValaMethod* _tmp0_; gboolean _tmp1_ = FALSE; g_return_val_if_fail (m != NULL, FALSE); _tmp0_ = m; _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "has_new_function", TRUE); result = _tmp1_; return result; } gboolean vala_ccode_base_module_get_ccode_has_generic_type_parameter (ValaMethod* m) { gboolean result = FALSE; ValaMethod* _tmp0_; ValaAttribute* _tmp1_ = NULL; ValaAttribute* a; gboolean _tmp2_ = FALSE; ValaAttribute* _tmp3_; gboolean _tmp6_; g_return_val_if_fail (m != NULL, FALSE); _tmp0_ = m; _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp0_, "CCode"); a = _tmp1_; _tmp3_ = a; if (_tmp3_ != NULL) { ValaAttribute* _tmp4_; gboolean _tmp5_ = FALSE; _tmp4_ = a; _tmp5_ = vala_attribute_has_argument (_tmp4_, "generic_type_pos"); _tmp2_ = _tmp5_; } else { _tmp2_ = FALSE; } _tmp6_ = _tmp2_; result = _tmp6_; _vala_code_node_unref0 (a); return result; } gdouble vala_ccode_base_module_get_ccode_generic_type_pos (ValaMethod* m) { gdouble result = 0.0; ValaMethod* _tmp0_; gdouble _tmp1_ = 0.0; g_return_val_if_fail (m != NULL, 0.0); _tmp0_ = m; _tmp1_ = vala_code_node_get_attribute_double ((ValaCodeNode*) _tmp0_, "CCode", "generic_type_pos", (gdouble) 0); result = _tmp1_; return result; } gchar* vala_ccode_base_module_get_ccode_sentinel (ValaMethod* m) { gchar* result = NULL; ValaMethod* _tmp0_; ValaCCodeAttribute* _tmp1_ = NULL; ValaCCodeAttribute* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; g_return_val_if_fail (m != NULL, NULL); _tmp0_ = m; _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_attribute_get_sentinel (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = _tmp5_; _vala_attribute_cache_unref0 (_tmp2_); result = _tmp6_; return result; } gboolean vala_ccode_base_module_get_ccode_notify (ValaProperty* prop) { gboolean result = FALSE; ValaProperty* _tmp0_; gboolean _tmp1_ = FALSE; g_return_val_if_fail (prop != NULL, FALSE); _tmp0_ = prop; _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "notify", TRUE); result = _tmp1_; return result; } gchar* vala_ccode_base_module_get_ccode_nick (ValaProperty* prop) { gchar* result = NULL; ValaProperty* _tmp0_; gchar* _tmp1_ = NULL; gchar* nick; const gchar* _tmp2_; g_return_val_if_fail (prop != NULL, NULL); _tmp0_ = prop; _tmp1_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp0_, "Description", "nick"); nick = _tmp1_; _tmp2_ = nick; if (_tmp2_ == NULL) { ValaProperty* _tmp3_; const gchar* _tmp4_; const gchar* _tmp5_; gchar* _tmp6_ = NULL; _tmp3_ = prop; _tmp4_ = vala_symbol_get_name ((ValaSymbol*) _tmp3_); _tmp5_ = _tmp4_; _tmp6_ = string_replace (_tmp5_, "_", "-"); _g_free0 (nick); nick = _tmp6_; } result = nick; return result; } gchar* vala_ccode_base_module_get_ccode_blurb (ValaProperty* prop) { gchar* result = NULL; ValaProperty* _tmp0_; gchar* _tmp1_ = NULL; gchar* blurb; const gchar* _tmp2_; g_return_val_if_fail (prop != NULL, NULL); _tmp0_ = prop; _tmp1_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp0_, "Description", "blurb"); blurb = _tmp1_; _tmp2_ = blurb; if (_tmp2_ == NULL) { ValaProperty* _tmp3_; const gchar* _tmp4_; const gchar* _tmp5_; gchar* _tmp6_ = NULL; _tmp3_ = prop; _tmp4_ = vala_symbol_get_name ((ValaSymbol*) _tmp3_); _tmp5_ = _tmp4_; _tmp6_ = string_replace (_tmp5_, "_", "-"); _g_free0 (blurb); blurb = _tmp6_; } result = blurb; return result; } gchar* vala_ccode_base_module_get_ccode_declarator_suffix (ValaDataType* type) { gchar* result = NULL; ValaDataType* _tmp0_; ValaArrayType* _tmp1_; ValaArrayType* array_type; ValaArrayType* _tmp2_; gchar* _tmp14_; g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; _tmp1_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp0_) ? ((ValaArrayType*) _tmp0_) : NULL); array_type = _tmp1_; _tmp2_ = array_type; if (_tmp2_ != NULL) { ValaArrayType* _tmp3_; gboolean _tmp4_; gboolean _tmp5_; _tmp3_ = array_type; _tmp4_ = vala_array_type_get_fixed_length (_tmp3_); _tmp5_ = _tmp4_; if (_tmp5_) { ValaArrayType* _tmp6_; gint _tmp7_; gint _tmp8_; gchar* _tmp9_ = NULL; _tmp6_ = array_type; _tmp7_ = vala_array_type_get_length (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = g_strdup_printf ("[%d]", _tmp8_); result = _tmp9_; _vala_code_node_unref0 (array_type); return result; } else { ValaArrayType* _tmp10_; gboolean _tmp11_; gboolean _tmp12_; _tmp10_ = array_type; _tmp11_ = vala_array_type_get_inline_allocated (_tmp10_); _tmp12_ = _tmp11_; if (_tmp12_) { gchar* _tmp13_; _tmp13_ = g_strdup ("[]"); result = _tmp13_; _vala_code_node_unref0 (array_type); return result; } } } _tmp14_ = g_strdup (""); result = _tmp14_; _vala_code_node_unref0 (array_type); return result; } static gunichar string_get_char (const gchar* self, glong index) { gunichar result = 0U; glong _tmp0_; gunichar _tmp1_ = 0U; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = index; _tmp1_ = g_utf8_get_char (((gchar*) self) + _tmp0_); result = _tmp1_; return result; } ValaCCodeConstant* vala_ccode_base_module_get_signal_canonical_constant (ValaCCodeBaseModule* self, ValaSignal* sig, const gchar* detail) { ValaCCodeConstant* result = NULL; GString* _tmp0_; GString* str; ValaSignal* _tmp1_; gchar* _tmp2_ = NULL; gchar* i; const gchar* _tmp15_; GString* _tmp19_; GString* _tmp20_; const gchar* _tmp21_; ValaCCodeConstant* _tmp22_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (sig != NULL, NULL); _tmp0_ = g_string_new ("\""); str = _tmp0_; _tmp1_ = sig; _tmp2_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp1_); i = _tmp2_; while (TRUE) { const gchar* _tmp3_; gint _tmp4_; gint _tmp5_; const gchar* _tmp6_; gunichar _tmp7_ = 0U; gunichar c; gunichar _tmp8_; const gchar* _tmp12_; const gchar* _tmp13_ = NULL; gchar* _tmp14_; _tmp3_ = i; _tmp4_ = strlen (_tmp3_); _tmp5_ = _tmp4_; if (!(_tmp5_ > 0)) { break; } _tmp6_ = i; _tmp7_ = string_get_char (_tmp6_, (glong) 0); c = _tmp7_; _tmp8_ = c; if (_tmp8_ == ((gunichar) '_')) { GString* _tmp9_; _tmp9_ = str; g_string_append_c (_tmp9_, '-'); } else { GString* _tmp10_; gunichar _tmp11_; _tmp10_ = str; _tmp11_ = c; g_string_append_unichar (_tmp10_, _tmp11_); } _tmp12_ = i; _tmp13_ = g_utf8_next_char (_tmp12_); _tmp14_ = g_strdup (_tmp13_); _g_free0 (i); i = _tmp14_; } _tmp15_ = detail; if (_tmp15_ != NULL) { GString* _tmp16_; GString* _tmp17_; const gchar* _tmp18_; _tmp16_ = str; g_string_append (_tmp16_, "::"); _tmp17_ = str; _tmp18_ = detail; g_string_append (_tmp17_, _tmp18_); } _tmp19_ = str; g_string_append_c (_tmp19_, '"'); _tmp20_ = str; _tmp21_ = _tmp20_->str; _tmp22_ = vala_ccode_constant_new (_tmp21_); result = _tmp22_; _g_free0 (i); _g_string_free0 (str); return result; } ValaCCodeConstant* vala_ccode_base_module_get_enum_value_canonical_cconstant (ValaEnumValue* ev) { ValaCCodeConstant* result = NULL; GString* _tmp0_; GString* str; ValaEnumValue* _tmp1_; const gchar* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; gchar* i; GString* _tmp18_; GString* _tmp19_; const gchar* _tmp20_; ValaCCodeConstant* _tmp21_; g_return_val_if_fail (ev != NULL, NULL); _tmp0_ = g_string_new ("\""); str = _tmp0_; _tmp1_ = ev; _tmp2_ = vala_symbol_get_name ((ValaSymbol*) _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = g_strdup (_tmp3_); i = _tmp4_; while (TRUE) { const gchar* _tmp5_; gint _tmp6_; gint _tmp7_; const gchar* _tmp8_; gunichar _tmp9_ = 0U; gunichar c; gunichar _tmp10_; const gchar* _tmp15_; const gchar* _tmp16_ = NULL; gchar* _tmp17_; _tmp5_ = i; _tmp6_ = strlen (_tmp5_); _tmp7_ = _tmp6_; if (!(_tmp7_ > 0)) { break; } _tmp8_ = i; _tmp9_ = string_get_char (_tmp8_, (glong) 0); c = _tmp9_; _tmp10_ = c; if (_tmp10_ == ((gunichar) '_')) { GString* _tmp11_; _tmp11_ = str; g_string_append_c (_tmp11_, '-'); } else { GString* _tmp12_; gunichar _tmp13_; gunichar _tmp14_ = 0U; _tmp12_ = str; _tmp13_ = c; _tmp14_ = g_unichar_tolower (_tmp13_); g_string_append_unichar (_tmp12_, _tmp14_); } _tmp15_ = i; _tmp16_ = g_utf8_next_char (_tmp15_); _tmp17_ = g_strdup (_tmp16_); _g_free0 (i); i = _tmp17_; } _tmp18_ = str; g_string_append_c (_tmp18_, '"'); _tmp19_ = str; _tmp20_ = _tmp19_->str; _tmp21_ = vala_ccode_constant_new (_tmp20_); result = _tmp21_; _g_free0 (i); _g_string_free0 (str); return result; } gboolean vala_ccode_base_module_get_signal_has_emitter (ValaCCodeBaseModule* self, ValaSignal* sig) { gboolean result = FALSE; ValaSignal* _tmp0_; ValaAttribute* _tmp1_ = NULL; ValaAttribute* _tmp2_; gboolean _tmp3_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (sig != NULL, FALSE); _tmp0_ = sig; _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp0_, "HasEmitter"); _tmp2_ = _tmp1_; _tmp3_ = _tmp2_ != NULL; _vala_code_node_unref0 (_tmp2_); result = _tmp3_; return result; } ValaCCodeConstant* vala_ccode_base_module_get_property_canonical_cconstant (ValaCCodeBaseModule* self, ValaProperty* prop) { ValaCCodeConstant* result = NULL; ValaProperty* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gchar* _tmp5_ = NULL; gchar* _tmp6_; ValaCCodeConstant* _tmp7_; ValaCCodeConstant* _tmp8_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (prop != NULL, NULL); _tmp0_ = prop; _tmp1_ = vala_symbol_get_name ((ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = string_replace (_tmp2_, "_", "-"); _tmp4_ = _tmp3_; _tmp5_ = g_strdup_printf ("\"%s\"", _tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_ccode_constant_new (_tmp6_); _tmp8_ = _tmp7_; _g_free0 (_tmp6_); _g_free0 (_tmp4_); result = _tmp8_; return result; } static void vala_ccode_base_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl) { ValaCCodeBaseModule * self; self = (ValaCCodeBaseModule*) base; g_return_if_fail (cl != NULL); } void vala_ccode_base_module_create_postcondition_statement (ValaCCodeBaseModule* self, ValaExpression* postcondition) { ValaCCodeIdentifier* _tmp0_; ValaCCodeIdentifier* _tmp1_; ValaCCodeFunctionCall* _tmp2_; ValaCCodeFunctionCall* _tmp3_; ValaCCodeFunctionCall* cassert; ValaExpression* _tmp4_; ValaExpression* _tmp5_; ValaCCodeExpression* _tmp6_ = NULL; ValaCCodeExpression* _tmp7_; ValaCCodeFunction* _tmp8_; ValaCCodeFunction* _tmp9_; g_return_if_fail (self != NULL); g_return_if_fail (postcondition != NULL); _tmp0_ = vala_ccode_identifier_new ("g_warn_if_fail"); _tmp1_ = _tmp0_; _tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_); _tmp3_ = _tmp2_; _vala_ccode_node_unref0 (_tmp1_); cassert = _tmp3_; _tmp4_ = postcondition; vala_code_node_emit ((ValaCodeNode*) _tmp4_, (ValaCodeGenerator*) self); _tmp5_ = postcondition; _tmp6_ = vala_ccode_base_module_get_cvalue (self, _tmp5_); _tmp7_ = _tmp6_; vala_ccode_function_call_add_argument (cassert, _tmp7_); _vala_ccode_node_unref0 (_tmp7_); _tmp8_ = vala_ccode_base_module_get_ccode (self); _tmp9_ = _tmp8_; vala_ccode_function_add_expression (_tmp9_, (ValaCCodeExpression*) cassert); _vala_ccode_node_unref0 (cassert); } static gboolean vala_ccode_base_module_real_is_gobject_property (ValaCCodeBaseModule* self, ValaProperty* prop) { gboolean result = FALSE; g_return_val_if_fail (prop != NULL, FALSE); result = FALSE; return result; } gboolean vala_ccode_base_module_is_gobject_property (ValaCCodeBaseModule* self, ValaProperty* prop) { g_return_val_if_fail (self != NULL, FALSE); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->is_gobject_property (self, prop); } ValaDataType* vala_ccode_base_module_get_this_type (ValaCCodeBaseModule* self) { ValaDataType* result = NULL; gboolean _tmp0_ = FALSE; ValaMethod* _tmp1_; ValaMethod* _tmp2_; gboolean _tmp7_; g_return_val_if_fail (self != NULL, NULL); _tmp1_ = vala_ccode_base_module_get_current_method (self); _tmp2_ = _tmp1_; if (_tmp2_ != NULL) { ValaMethod* _tmp3_; ValaMethod* _tmp4_; ValaMemberBinding _tmp5_; ValaMemberBinding _tmp6_; _tmp3_ = vala_ccode_base_module_get_current_method (self); _tmp4_ = _tmp3_; _tmp5_ = vala_method_get_binding (_tmp4_); _tmp6_ = _tmp5_; _tmp0_ = _tmp6_ == VALA_MEMBER_BINDING_INSTANCE; } else { _tmp0_ = FALSE; } _tmp7_ = _tmp0_; if (_tmp7_) { ValaMethod* _tmp8_; ValaMethod* _tmp9_; ValaParameter* _tmp10_; ValaParameter* _tmp11_; ValaDataType* _tmp12_; ValaDataType* _tmp13_; ValaDataType* _tmp14_; _tmp8_ = vala_ccode_base_module_get_current_method (self); _tmp9_ = _tmp8_; _tmp10_ = vala_method_get_this_parameter (_tmp9_); _tmp11_ = _tmp10_; _tmp12_ = vala_variable_get_variable_type ((ValaVariable*) _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = _vala_code_node_ref0 (_tmp13_); result = _tmp14_; return result; } else { gboolean _tmp15_ = FALSE; ValaPropertyAccessor* _tmp16_; ValaPropertyAccessor* _tmp17_; gboolean _tmp24_; _tmp16_ = vala_ccode_base_module_get_current_property_accessor (self); _tmp17_ = _tmp16_; if (_tmp17_ != NULL) { ValaPropertyAccessor* _tmp18_; ValaPropertyAccessor* _tmp19_; ValaProperty* _tmp20_; ValaProperty* _tmp21_; ValaMemberBinding _tmp22_; ValaMemberBinding _tmp23_; _tmp18_ = vala_ccode_base_module_get_current_property_accessor (self); _tmp19_ = _tmp18_; _tmp20_ = vala_property_accessor_get_prop (_tmp19_); _tmp21_ = _tmp20_; _tmp22_ = vala_property_get_binding (_tmp21_); _tmp23_ = _tmp22_; _tmp15_ = _tmp23_ == VALA_MEMBER_BINDING_INSTANCE; } else { _tmp15_ = FALSE; } _tmp24_ = _tmp15_; if (_tmp24_) { ValaPropertyAccessor* _tmp25_; ValaPropertyAccessor* _tmp26_; ValaProperty* _tmp27_; ValaProperty* _tmp28_; ValaParameter* _tmp29_; ValaParameter* _tmp30_; ValaDataType* _tmp31_; ValaDataType* _tmp32_; ValaDataType* _tmp33_; _tmp25_ = vala_ccode_base_module_get_current_property_accessor (self); _tmp26_ = _tmp25_; _tmp27_ = vala_property_accessor_get_prop (_tmp26_); _tmp28_ = _tmp27_; _tmp29_ = vala_property_get_this_parameter (_tmp28_); _tmp30_ = _tmp29_; _tmp31_ = vala_variable_get_variable_type ((ValaVariable*) _tmp30_); _tmp32_ = _tmp31_; _tmp33_ = _vala_code_node_ref0 (_tmp32_); result = _tmp33_; return result; } else { gboolean _tmp34_ = FALSE; ValaConstructor* _tmp35_; ValaConstructor* _tmp36_; gboolean _tmp41_; _tmp35_ = vala_ccode_base_module_get_current_constructor (self); _tmp36_ = _tmp35_; if (_tmp36_ != NULL) { ValaConstructor* _tmp37_; ValaConstructor* _tmp38_; ValaMemberBinding _tmp39_; ValaMemberBinding _tmp40_; _tmp37_ = vala_ccode_base_module_get_current_constructor (self); _tmp38_ = _tmp37_; _tmp39_ = vala_constructor_get_binding (_tmp38_); _tmp40_ = _tmp39_; _tmp34_ = _tmp40_ == VALA_MEMBER_BINDING_INSTANCE; } else { _tmp34_ = FALSE; } _tmp41_ = _tmp34_; if (_tmp41_) { ValaConstructor* _tmp42_; ValaConstructor* _tmp43_; ValaParameter* _tmp44_; ValaParameter* _tmp45_; ValaDataType* _tmp46_; ValaDataType* _tmp47_; ValaDataType* _tmp48_; _tmp42_ = vala_ccode_base_module_get_current_constructor (self); _tmp43_ = _tmp42_; _tmp44_ = vala_constructor_get_this_parameter (_tmp43_); _tmp45_ = _tmp44_; _tmp46_ = vala_variable_get_variable_type ((ValaVariable*) _tmp45_); _tmp47_ = _tmp46_; _tmp48_ = _vala_code_node_ref0 (_tmp47_); result = _tmp48_; return result; } else { gboolean _tmp49_ = FALSE; ValaDestructor* _tmp50_; ValaDestructor* _tmp51_; gboolean _tmp56_; _tmp50_ = vala_ccode_base_module_get_current_destructor (self); _tmp51_ = _tmp50_; if (_tmp51_ != NULL) { ValaDestructor* _tmp52_; ValaDestructor* _tmp53_; ValaMemberBinding _tmp54_; ValaMemberBinding _tmp55_; _tmp52_ = vala_ccode_base_module_get_current_destructor (self); _tmp53_ = _tmp52_; _tmp54_ = vala_destructor_get_binding (_tmp53_); _tmp55_ = _tmp54_; _tmp49_ = _tmp55_ == VALA_MEMBER_BINDING_INSTANCE; } else { _tmp49_ = FALSE; } _tmp56_ = _tmp49_; if (_tmp56_) { ValaDestructor* _tmp57_; ValaDestructor* _tmp58_; ValaParameter* _tmp59_; ValaParameter* _tmp60_; ValaDataType* _tmp61_; ValaDataType* _tmp62_; ValaDataType* _tmp63_; _tmp57_ = vala_ccode_base_module_get_current_destructor (self); _tmp58_ = _tmp57_; _tmp59_ = vala_destructor_get_this_parameter (_tmp58_); _tmp60_ = _tmp59_; _tmp61_ = vala_variable_get_variable_type ((ValaVariable*) _tmp60_); _tmp62_ = _tmp61_; _tmp63_ = _vala_code_node_ref0 (_tmp62_); result = _tmp63_; return result; } } } } result = NULL; return result; } ValaCCodeFunctionCall* vala_ccode_base_module_generate_instance_cast (ValaCCodeBaseModule* self, ValaCCodeExpression* expr, ValaTypeSymbol* type) { ValaCCodeFunctionCall* result = NULL; ValaTypeSymbol* _tmp0_; gchar* _tmp1_ = NULL; gchar* _tmp2_; ValaCCodeIdentifier* _tmp3_; ValaCCodeIdentifier* _tmp4_; ValaCCodeFunctionCall* _tmp5_; ValaCCodeFunctionCall* _tmp6_; ValaCCodeFunctionCall* _result_; ValaCCodeExpression* _tmp7_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (expr != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp0_ = type; _tmp1_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp0_, NULL); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_identifier_new (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp4_); _tmp6_ = _tmp5_; _vala_ccode_node_unref0 (_tmp4_); _g_free0 (_tmp2_); _result_ = _tmp6_; _tmp7_ = expr; vala_ccode_function_call_add_argument (_result_, _tmp7_); result = _result_; return result; } static void vala_ccode_base_module_generate_struct_destroy_function (ValaCCodeBaseModule* self, ValaStruct* st) { ValaCCodeFile* _tmp0_; ValaStruct* _tmp1_; gchar* _tmp2_ = NULL; gchar* _tmp3_; gboolean _tmp4_ = FALSE; gboolean _tmp5_; ValaStruct* _tmp6_; gchar* _tmp7_ = NULL; gchar* _tmp8_; ValaCCodeFunction* _tmp9_; ValaCCodeFunction* _tmp10_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp11_; ValaCCodeFunction* _tmp12_; ValaStruct* _tmp13_; gchar* _tmp14_ = NULL; gchar* _tmp15_; gchar* _tmp16_; gchar* _tmp17_; ValaCCodeParameter* _tmp18_; ValaCCodeParameter* _tmp19_; ValaCCodeBaseModuleEmitContext* _tmp20_; ValaCCodeBaseModuleEmitContext* _tmp21_; ValaCCodeFunction* _tmp22_; ValaStruct* _tmp23_; ValaTargetValue* _tmp24_ = NULL; ValaTargetValue* this_value; ValaCCodeFile* _tmp49_; ValaCCodeFunction* _tmp50_; ValaCCodeFile* _tmp51_; ValaCCodeFunction* _tmp52_; g_return_if_fail (self != NULL); g_return_if_fail (st != NULL); _tmp0_ = self->cfile; _tmp1_ = st; _tmp2_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_file_add_declaration (_tmp0_, _tmp3_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); if (_tmp5_) { return; } _tmp6_ = st; _tmp7_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp6_); _tmp8_ = _tmp7_; _tmp9_ = vala_ccode_function_new (_tmp8_, "void"); _tmp10_ = _tmp9_; _g_free0 (_tmp8_); function = _tmp10_; _tmp11_ = function; vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC); _tmp12_ = function; _tmp13_ = st; _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = g_strconcat (_tmp15_, "*", NULL); _tmp17_ = _tmp16_; _tmp18_ = vala_ccode_parameter_new ("self", _tmp17_); _tmp19_ = _tmp18_; vala_ccode_function_add_parameter (_tmp12_, _tmp19_); _vala_ccode_node_unref0 (_tmp19_); _g_free0 (_tmp17_); _g_free0 (_tmp15_); _tmp20_ = vala_ccode_base_module_emit_context_new (NULL); _tmp21_ = _tmp20_; vala_ccode_base_module_push_context (self, _tmp21_); _vala_ccode_base_module_emit_context_unref0 (_tmp21_); _tmp22_ = function; vala_ccode_base_module_push_function (self, _tmp22_); _tmp23_ = st; _tmp24_ = vala_ccode_base_module_load_this_parameter (self, (ValaTypeSymbol*) _tmp23_); this_value = _tmp24_; { ValaStruct* _tmp25_; ValaList* _tmp26_ = NULL; ValaList* _f_list; ValaList* _tmp27_; gint _tmp28_; gint _tmp29_; gint _f_size; gint _f_index; _tmp25_ = st; _tmp26_ = vala_struct_get_fields (_tmp25_); _f_list = _tmp26_; _tmp27_ = _f_list; _tmp28_ = vala_collection_get_size ((ValaCollection*) _tmp27_); _tmp29_ = _tmp28_; _f_size = _tmp29_; _f_index = -1; while (TRUE) { gint _tmp30_; gint _tmp31_; gint _tmp32_; ValaList* _tmp33_; gint _tmp34_; gpointer _tmp35_ = NULL; ValaField* f; ValaField* _tmp36_; ValaMemberBinding _tmp37_; ValaMemberBinding _tmp38_; _tmp30_ = _f_index; _f_index = _tmp30_ + 1; _tmp31_ = _f_index; _tmp32_ = _f_size; if (!(_tmp31_ < _tmp32_)) { break; } _tmp33_ = _f_list; _tmp34_ = _f_index; _tmp35_ = vala_list_get (_tmp33_, _tmp34_); f = (ValaField*) _tmp35_; _tmp36_ = f; _tmp37_ = vala_field_get_binding (_tmp36_); _tmp38_ = _tmp37_; if (_tmp38_ == VALA_MEMBER_BINDING_INSTANCE) { ValaField* _tmp39_; ValaDataType* _tmp40_; ValaDataType* _tmp41_; gboolean _tmp42_ = FALSE; _tmp39_ = f; _tmp40_ = vala_variable_get_variable_type ((ValaVariable*) _tmp39_); _tmp41_ = _tmp40_; _tmp42_ = vala_ccode_base_module_requires_destroy (self, _tmp41_); if (_tmp42_) { ValaCCodeFunction* _tmp43_; ValaCCodeFunction* _tmp44_; ValaField* _tmp45_; ValaTargetValue* _tmp46_; ValaCCodeExpression* _tmp47_ = NULL; ValaCCodeExpression* _tmp48_; _tmp43_ = vala_ccode_base_module_get_ccode (self); _tmp44_ = _tmp43_; _tmp45_ = f; _tmp46_ = this_value; _tmp47_ = vala_ccode_base_module_destroy_field (self, _tmp45_, _tmp46_); _tmp48_ = _tmp47_; vala_ccode_function_add_expression (_tmp44_, _tmp48_); _vala_ccode_node_unref0 (_tmp48_); } } _vala_code_node_unref0 (f); } _vala_iterable_unref0 (_f_list); } vala_ccode_base_module_pop_function (self); vala_ccode_base_module_pop_context (self); _tmp49_ = self->cfile; _tmp50_ = function; vala_ccode_file_add_function_declaration (_tmp49_, _tmp50_); _tmp51_ = self->cfile; _tmp52_ = function; vala_ccode_file_add_function (_tmp51_, _tmp52_); _vala_target_value_unref0 (this_value); _vala_ccode_node_unref0 (function); } static void vala_ccode_base_module_generate_struct_copy_function (ValaCCodeBaseModule* self, ValaStruct* st) { ValaCCodeFile* _tmp0_; ValaStruct* _tmp1_; gchar* _tmp2_ = NULL; gchar* _tmp3_; gboolean _tmp4_ = FALSE; gboolean _tmp5_; ValaStruct* _tmp6_; gchar* _tmp7_ = NULL; gchar* _tmp8_; ValaCCodeFunction* _tmp9_; ValaCCodeFunction* _tmp10_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp11_; ValaCCodeFunction* _tmp12_; ValaStruct* _tmp13_; gchar* _tmp14_ = NULL; gchar* _tmp15_; gchar* _tmp16_; gchar* _tmp17_; gchar* _tmp18_; gchar* _tmp19_; ValaCCodeParameter* _tmp20_; ValaCCodeParameter* _tmp21_; ValaCCodeFunction* _tmp22_; ValaStruct* _tmp23_; gchar* _tmp24_ = NULL; gchar* _tmp25_; gchar* _tmp26_; gchar* _tmp27_; ValaCCodeParameter* _tmp28_; ValaCCodeParameter* _tmp29_; ValaCCodeBaseModuleEmitContext* _tmp30_; ValaCCodeBaseModuleEmitContext* _tmp31_; ValaCCodeFunction* _tmp32_; ValaStruct* _tmp33_; ValaDataType* _tmp34_ = NULL; ValaDataType* _tmp35_; ValaCCodeIdentifier* _tmp36_; ValaCCodeIdentifier* _tmp37_; ValaGLibValue* _tmp38_; ValaGLibValue* _tmp39_; ValaGLibValue* dest_struct; ValaCCodeFile* _tmp71_; ValaCCodeFunction* _tmp72_; ValaCCodeFile* _tmp73_; ValaCCodeFunction* _tmp74_; g_return_if_fail (self != NULL); g_return_if_fail (st != NULL); _tmp0_ = self->cfile; _tmp1_ = st; _tmp2_ = vala_ccode_base_module_get_ccode_copy_function ((ValaTypeSymbol*) _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_ccode_file_add_declaration (_tmp0_, _tmp3_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); if (_tmp5_) { return; } _tmp6_ = st; _tmp7_ = vala_ccode_base_module_get_ccode_copy_function ((ValaTypeSymbol*) _tmp6_); _tmp8_ = _tmp7_; _tmp9_ = vala_ccode_function_new (_tmp8_, "void"); _tmp10_ = _tmp9_; _g_free0 (_tmp8_); function = _tmp10_; _tmp11_ = function; vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC); _tmp12_ = function; _tmp13_ = st; _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = g_strconcat ("const ", _tmp15_, NULL); _tmp17_ = _tmp16_; _tmp18_ = g_strconcat (_tmp17_, "*", NULL); _tmp19_ = _tmp18_; _tmp20_ = vala_ccode_parameter_new ("self", _tmp19_); _tmp21_ = _tmp20_; vala_ccode_function_add_parameter (_tmp12_, _tmp21_); _vala_ccode_node_unref0 (_tmp21_); _g_free0 (_tmp19_); _g_free0 (_tmp17_); _g_free0 (_tmp15_); _tmp22_ = function; _tmp23_ = st; _tmp24_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp23_); _tmp25_ = _tmp24_; _tmp26_ = g_strconcat (_tmp25_, "*", NULL); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_parameter_new ("dest", _tmp27_); _tmp29_ = _tmp28_; vala_ccode_function_add_parameter (_tmp22_, _tmp29_); _vala_ccode_node_unref0 (_tmp29_); _g_free0 (_tmp27_); _g_free0 (_tmp25_); _tmp30_ = vala_ccode_base_module_emit_context_new (NULL); _tmp31_ = _tmp30_; vala_ccode_base_module_push_context (self, _tmp31_); _vala_ccode_base_module_emit_context_unref0 (_tmp31_); _tmp32_ = function; vala_ccode_base_module_push_function (self, _tmp32_); _tmp33_ = st; _tmp34_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp33_); _tmp35_ = _tmp34_; _tmp36_ = vala_ccode_identifier_new ("(*dest)"); _tmp37_ = _tmp36_; _tmp38_ = vala_glib_value_new (_tmp35_, (ValaCCodeExpression*) _tmp37_, TRUE); _tmp39_ = _tmp38_; _vala_ccode_node_unref0 (_tmp37_); _vala_code_node_unref0 (_tmp35_); dest_struct = _tmp39_; { ValaStruct* _tmp40_; ValaList* _tmp41_ = NULL; ValaList* _f_list; ValaList* _tmp42_; gint _tmp43_; gint _tmp44_; gint _f_size; gint _f_index; _tmp40_ = st; _tmp41_ = vala_struct_get_fields (_tmp40_); _f_list = _tmp41_; _tmp42_ = _f_list; _tmp43_ = vala_collection_get_size ((ValaCollection*) _tmp42_); _tmp44_ = _tmp43_; _f_size = _tmp44_; _f_index = -1; while (TRUE) { gint _tmp45_; gint _tmp46_; gint _tmp47_; ValaList* _tmp48_; gint _tmp49_; gpointer _tmp50_ = NULL; ValaField* f; ValaField* _tmp51_; ValaMemberBinding _tmp52_; ValaMemberBinding _tmp53_; _tmp45_ = _f_index; _f_index = _tmp45_ + 1; _tmp46_ = _f_index; _tmp47_ = _f_size; if (!(_tmp46_ < _tmp47_)) { break; } _tmp48_ = _f_list; _tmp49_ = _f_index; _tmp50_ = vala_list_get (_tmp48_, _tmp49_); f = (ValaField*) _tmp50_; _tmp51_ = f; _tmp52_ = vala_field_get_binding (_tmp51_); _tmp53_ = _tmp52_; if (_tmp53_ == VALA_MEMBER_BINDING_INSTANCE) { ValaField* _tmp54_; ValaStruct* _tmp55_; ValaTargetValue* _tmp56_ = NULL; ValaTargetValue* _tmp57_; ValaTargetValue* _tmp58_ = NULL; ValaTargetValue* _tmp59_; ValaTargetValue* value; ValaField* _tmp60_; ValaDataType* _tmp61_; ValaDataType* _tmp62_; gboolean _tmp63_ = FALSE; ValaField* _tmp68_; ValaGLibValue* _tmp69_; ValaTargetValue* _tmp70_; _tmp54_ = f; _tmp55_ = st; _tmp56_ = vala_ccode_base_module_load_this_parameter (self, VALA_TYPESYMBOL (_tmp55_)); _tmp57_ = _tmp56_; _tmp58_ = vala_code_generator_load_field ((ValaCodeGenerator*) self, _tmp54_, _tmp57_); _tmp59_ = _tmp58_; _vala_target_value_unref0 (_tmp57_); value = _tmp59_; _tmp60_ = f; _tmp61_ = vala_variable_get_variable_type ((ValaVariable*) _tmp60_); _tmp62_ = _tmp61_; _tmp63_ = vala_ccode_base_module_requires_copy (self, _tmp62_); if (_tmp63_) { ValaTargetValue* _tmp64_; ValaField* _tmp65_; ValaTargetValue* _tmp66_ = NULL; ValaTargetValue* _tmp67_; _tmp64_ = value; _tmp65_ = f; _tmp66_ = vala_ccode_base_module_copy_value (self, _tmp64_, (ValaCodeNode*) _tmp65_); _vala_target_value_unref0 (value); value = _tmp66_; _tmp67_ = value; if (_tmp67_ == NULL) { _vala_target_value_unref0 (value); _vala_code_node_unref0 (f); continue; } } _tmp68_ = f; _tmp69_ = dest_struct; _tmp70_ = value; vala_code_generator_store_field ((ValaCodeGenerator*) self, _tmp68_, (ValaTargetValue*) _tmp69_, _tmp70_); _vala_target_value_unref0 (value); } _vala_code_node_unref0 (f); } _vala_iterable_unref0 (_f_list); } vala_ccode_base_module_pop_function (self); vala_ccode_base_module_pop_context (self); _tmp71_ = self->cfile; _tmp72_ = function; vala_ccode_file_add_function_declaration (_tmp71_, _tmp72_); _tmp73_ = self->cfile; _tmp74_ = function; vala_ccode_file_add_function (_tmp73_, _tmp74_); _vala_target_value_unref0 (dest_struct); _vala_ccode_node_unref0 (function); } void vala_ccode_base_module_return_default_value (ValaCCodeBaseModule* self, ValaDataType* return_type) { ValaCCodeFunction* _tmp0_; ValaCCodeFunction* _tmp1_; ValaDataType* _tmp2_; ValaCCodeExpression* _tmp3_ = NULL; ValaCCodeExpression* _tmp4_; g_return_if_fail (self != NULL); g_return_if_fail (return_type != NULL); _tmp0_ = vala_ccode_base_module_get_ccode (self); _tmp1_ = _tmp0_; _tmp2_ = return_type; _tmp3_ = vala_ccode_base_module_default_value_for_type (self, _tmp2_, FALSE); _tmp4_ = _tmp3_; vala_ccode_function_add_return (_tmp1_, _tmp4_); _vala_ccode_node_unref0 (_tmp4_); } static void vala_ccode_base_module_real_generate_dynamic_method_wrapper (ValaCCodeBaseModule* self, ValaDynamicMethod* method) { g_return_if_fail (method != NULL); } void vala_ccode_base_module_generate_dynamic_method_wrapper (ValaCCodeBaseModule* self, ValaDynamicMethod* method) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_dynamic_method_wrapper (self, method); } static gboolean vala_ccode_base_module_real_method_has_wrapper (ValaCCodeBaseModule* self, ValaMethod* method) { gboolean result = FALSE; g_return_val_if_fail (method != NULL, FALSE); result = FALSE; return result; } gboolean vala_ccode_base_module_method_has_wrapper (ValaCCodeBaseModule* self, ValaMethod* method) { g_return_val_if_fail (self != NULL, FALSE); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->method_has_wrapper (self, method); } static ValaCCodeFunctionCall* vala_ccode_base_module_real_get_param_spec (ValaCCodeBaseModule* self, ValaProperty* prop) { ValaCCodeFunctionCall* result = NULL; ValaCCodeIdentifier* _tmp0_; ValaCCodeIdentifier* _tmp1_; ValaCCodeFunctionCall* _tmp2_; ValaCCodeFunctionCall* _tmp3_; g_return_val_if_fail (prop != NULL, NULL); _tmp0_ = vala_ccode_identifier_new (""); _tmp1_ = _tmp0_; _tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_); _tmp3_ = _tmp2_; _vala_ccode_node_unref0 (_tmp1_); result = _tmp3_; return result; } ValaCCodeFunctionCall* vala_ccode_base_module_get_param_spec (ValaCCodeBaseModule* self, ValaProperty* prop) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_param_spec (self, prop); } static ValaCCodeFunctionCall* vala_ccode_base_module_real_get_signal_creation (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type) { ValaCCodeFunctionCall* result = NULL; ValaCCodeIdentifier* _tmp0_; ValaCCodeIdentifier* _tmp1_; ValaCCodeFunctionCall* _tmp2_; ValaCCodeFunctionCall* _tmp3_; g_return_val_if_fail (sig != NULL, NULL); g_return_val_if_fail (type != NULL, NULL); _tmp0_ = vala_ccode_identifier_new (""); _tmp1_ = _tmp0_; _tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_); _tmp3_ = _tmp2_; _vala_ccode_node_unref0 (_tmp1_); result = _tmp3_; return result; } ValaCCodeFunctionCall* vala_ccode_base_module_get_signal_creation (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_signal_creation (self, sig, type); } static void vala_ccode_base_module_real_register_dbus_info (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable) { g_return_if_fail (block != NULL); g_return_if_fail (bindable != NULL); } void vala_ccode_base_module_register_dbus_info (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->register_dbus_info (self, block, bindable); } static gchar* vala_ccode_base_module_real_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node) { gchar* result = NULL; ValaDynamicProperty* _tmp0_; ValaSourceReference* _tmp1_; ValaSourceReference* _tmp2_; ValaDynamicProperty* _tmp3_; ValaDataType* _tmp4_; ValaDataType* _tmp5_; gchar* _tmp6_ = NULL; gchar* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; gchar* _tmp10_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = node; _tmp4_ = vala_dynamic_property_get_dynamic_type (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = vala_code_node_to_string ((ValaCodeNode*) _tmp5_); _tmp7_ = _tmp6_; _tmp8_ = g_strdup_printf ("dynamic properties are not supported for %s", _tmp7_); _tmp9_ = _tmp8_; vala_report_error (_tmp2_, _tmp9_); _g_free0 (_tmp9_); _g_free0 (_tmp7_); _tmp10_ = g_strdup (""); result = _tmp10_; return result; } gchar* vala_ccode_base_module_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_property_getter_cname (self, node); } static gchar* vala_ccode_base_module_real_get_dynamic_property_setter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node) { gchar* result = NULL; ValaDynamicProperty* _tmp0_; ValaSourceReference* _tmp1_; ValaSourceReference* _tmp2_; ValaDynamicProperty* _tmp3_; ValaDataType* _tmp4_; ValaDataType* _tmp5_; gchar* _tmp6_ = NULL; gchar* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; gchar* _tmp10_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = node; _tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = node; _tmp4_ = vala_dynamic_property_get_dynamic_type (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = vala_code_node_to_string ((ValaCodeNode*) _tmp5_); _tmp7_ = _tmp6_; _tmp8_ = g_strdup_printf ("dynamic properties are not supported for %s", _tmp7_); _tmp9_ = _tmp8_; vala_report_error (_tmp2_, _tmp9_); _g_free0 (_tmp9_); _g_free0 (_tmp7_); _tmp10_ = g_strdup (""); result = _tmp10_; return result; } gchar* vala_ccode_base_module_get_dynamic_property_setter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_property_setter_cname (self, node); } static gchar* vala_ccode_base_module_real_get_dynamic_signal_cname (ValaCCodeBaseModule* self, ValaDynamicSignal* node) { gchar* result = NULL; gchar* _tmp0_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = g_strdup (""); result = _tmp0_; return result; } gchar* vala_ccode_base_module_get_dynamic_signal_cname (ValaCCodeBaseModule* self, ValaDynamicSignal* node) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_signal_cname (self, node); } static gchar* vala_ccode_base_module_real_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) { gchar* result = NULL; gchar* _tmp0_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = g_strdup (""); result = _tmp0_; return result; } gchar* vala_ccode_base_module_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_signal_connect_wrapper_name (self, node); } static gchar* vala_ccode_base_module_real_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) { gchar* result = NULL; gchar* _tmp0_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = g_strdup (""); result = _tmp0_; return result; } gchar* vala_ccode_base_module_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_signal_connect_after_wrapper_name (self, node); } static gchar* vala_ccode_base_module_real_get_dynamic_signal_disconnect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) { gchar* result = NULL; gchar* _tmp0_; g_return_val_if_fail (node != NULL, NULL); _tmp0_ = g_strdup (""); result = _tmp0_; return result; } gchar* vala_ccode_base_module_get_dynamic_signal_disconnect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_signal_disconnect_wrapper_name (self, node); } static gchar* vala_ccode_base_module_real_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim) { gchar* result = NULL; gchar* _tmp0_; g_return_val_if_fail (array_cname != NULL, NULL); _tmp0_ = g_strdup (""); result = _tmp0_; return result; } gchar* vala_ccode_base_module_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_array_length_cname (self, array_cname, dim); } static gchar* vala_ccode_base_module_real_get_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim) { gchar* result = NULL; gchar* _tmp0_; g_return_val_if_fail (param != NULL, NULL); _tmp0_ = g_strdup (""); result = _tmp0_; return result; } gchar* vala_ccode_base_module_get_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_parameter_array_length_cname (self, param, dim); } static ValaCCodeExpression* vala_ccode_base_module_real_get_array_length_cexpression (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim) { ValaCCodeExpression* result = NULL; ValaCCodeConstant* _tmp0_; g_return_val_if_fail (array_expr != NULL, NULL); _tmp0_ = vala_ccode_constant_new (""); result = (ValaCCodeExpression*) _tmp0_; return result; } ValaCCodeExpression* vala_ccode_base_module_get_array_length_cexpression (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_array_length_cexpression (self, array_expr, dim); } static ValaCCodeExpression* vala_ccode_base_module_real_get_array_length_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim) { ValaCCodeExpression* result = NULL; ValaCCodeInvalidExpression* _tmp0_; g_return_val_if_fail (value != NULL, NULL); _tmp0_ = vala_ccode_invalid_expression_new (); result = (ValaCCodeExpression*) _tmp0_; return result; } ValaCCodeExpression* vala_ccode_base_module_get_array_length_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_array_length_cvalue (self, value, dim); } static gchar* vala_ccode_base_module_real_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname) { gchar* result = NULL; gchar* _tmp0_; g_return_val_if_fail (array_cname != NULL, NULL); _tmp0_ = g_strdup (""); result = _tmp0_; return result; } gchar* vala_ccode_base_module_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_array_size_cname (self, array_cname); } static void vala_ccode_base_module_real_add_simple_check (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails) { g_return_if_fail (node != NULL); } void vala_ccode_base_module_add_simple_check (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails) { g_return_if_fail (self != NULL); VALA_CCODE_BASE_MODULE_GET_CLASS (self)->add_simple_check (self, node, always_fails); } static gchar* vala_ccode_base_module_real_generate_ready_function (ValaCCodeBaseModule* self, ValaMethod* m) { gchar* result = NULL; gchar* _tmp0_; g_return_val_if_fail (m != NULL, NULL); _tmp0_ = g_strdup (""); result = _tmp0_; return result; } gchar* vala_ccode_base_module_generate_ready_function (ValaCCodeBaseModule* self, ValaMethod* m) { g_return_val_if_fail (self != NULL, NULL); return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_ready_function (self, m); } ValaCCodeExpression* vala_ccode_base_module_get_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr) { ValaCCodeExpression* result = NULL; ValaExpression* _tmp0_; ValaTargetValue* _tmp1_; ValaTargetValue* _tmp2_; ValaExpression* _tmp3_; ValaTargetValue* _tmp4_; ValaTargetValue* _tmp5_; ValaGLibValue* _tmp6_; ValaGLibValue* glib_value; ValaGLibValue* _tmp7_; ValaCCodeExpression* _tmp8_; ValaCCodeExpression* _tmp9_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (expr != NULL, NULL); _tmp0_ = expr; _tmp1_ = vala_expression_get_target_value (_tmp0_); _tmp2_ = _tmp1_; if (_tmp2_ == NULL) { result = NULL; return result; } _tmp3_ = expr; _tmp4_ = vala_expression_get_target_value (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp5_)); glib_value = _tmp6_; _tmp7_ = glib_value; _tmp8_ = _tmp7_->cvalue; _tmp9_ = _vala_ccode_node_ref0 (_tmp8_); result = _tmp9_; _vala_target_value_unref0 (glib_value); return result; } ValaCCodeExpression* vala_ccode_base_module_get_cvalue_ (ValaCCodeBaseModule* self, ValaTargetValue* value) { ValaCCodeExpression* result = NULL; ValaTargetValue* _tmp0_; ValaGLibValue* _tmp1_; ValaGLibValue* glib_value; ValaCCodeExpression* _tmp2_; ValaCCodeExpression* _tmp3_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (value != NULL, NULL); _tmp0_ = value; _tmp1_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp0_)); glib_value = _tmp1_; _tmp2_ = glib_value->cvalue; _tmp3_ = _vala_ccode_node_ref0 (_tmp2_); result = _tmp3_; _vala_target_value_unref0 (glib_value); return result; } void vala_ccode_base_module_set_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue) { ValaExpression* _tmp0_; ValaTargetValue* _tmp1_; ValaTargetValue* _tmp2_; ValaGLibValue* _tmp3_; ValaGLibValue* glib_value; ValaGLibValue* _tmp4_; ValaGLibValue* _tmp11_; ValaCCodeExpression* _tmp12_; ValaCCodeExpression* _tmp13_; g_return_if_fail (self != NULL); g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_expression_get_target_value (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp2_)); glib_value = _tmp3_; _tmp4_ = glib_value; if (_tmp4_ == NULL) { ValaExpression* _tmp5_; ValaDataType* _tmp6_; ValaDataType* _tmp7_; ValaGLibValue* _tmp8_; ValaExpression* _tmp9_; ValaGLibValue* _tmp10_; _tmp5_ = expr; _tmp6_ = vala_expression_get_value_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_glib_value_new (_tmp7_, NULL, FALSE); _vala_target_value_unref0 (glib_value); glib_value = _tmp8_; _tmp9_ = expr; _tmp10_ = glib_value; vala_expression_set_target_value (_tmp9_, (ValaTargetValue*) _tmp10_); } _tmp11_ = glib_value; _tmp12_ = cvalue; _tmp13_ = _vala_ccode_node_ref0 (_tmp12_); _vala_ccode_node_unref0 (_tmp11_->cvalue); _tmp11_->cvalue = _tmp13_; _vala_target_value_unref0 (glib_value); } ValaCCodeExpression* vala_ccode_base_module_get_array_size_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) { ValaCCodeExpression* result = NULL; ValaTargetValue* _tmp0_; ValaGLibValue* _tmp1_; ValaGLibValue* glib_value; ValaCCodeExpression* _tmp2_; ValaCCodeExpression* _tmp3_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (value != NULL, NULL); _tmp0_ = value; _tmp1_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp0_)); glib_value = _tmp1_; _tmp2_ = glib_value->array_size_cvalue; _tmp3_ = _vala_ccode_node_ref0 (_tmp2_); result = _tmp3_; _vala_target_value_unref0 (glib_value); return result; } void vala_ccode_base_module_set_array_size_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCCodeExpression* cvalue) { ValaTargetValue* _tmp0_; ValaGLibValue* _tmp1_; ValaGLibValue* glib_value; ValaCCodeExpression* _tmp2_; ValaCCodeExpression* _tmp3_; g_return_if_fail (self != NULL); g_return_if_fail (value != NULL); _tmp0_ = value; _tmp1_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp0_)); glib_value = _tmp1_; _tmp2_ = cvalue; _tmp3_ = _vala_ccode_node_ref0 (_tmp2_); _vala_ccode_node_unref0 (glib_value->array_size_cvalue); glib_value->array_size_cvalue = _tmp3_; _vala_target_value_unref0 (glib_value); } ValaCCodeExpression* vala_ccode_base_module_get_delegate_target (ValaCCodeBaseModule* self, ValaExpression* expr) { ValaCCodeExpression* result = NULL; ValaExpression* _tmp0_; ValaTargetValue* _tmp1_; ValaTargetValue* _tmp2_; ValaExpression* _tmp3_; ValaTargetValue* _tmp4_; ValaTargetValue* _tmp5_; ValaGLibValue* _tmp6_; ValaGLibValue* glib_value; ValaGLibValue* _tmp7_; ValaCCodeExpression* _tmp8_; ValaCCodeExpression* _tmp9_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (expr != NULL, NULL); _tmp0_ = expr; _tmp1_ = vala_expression_get_target_value (_tmp0_); _tmp2_ = _tmp1_; if (_tmp2_ == NULL) { result = NULL; return result; } _tmp3_ = expr; _tmp4_ = vala_expression_get_target_value (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp5_)); glib_value = _tmp6_; _tmp7_ = glib_value; _tmp8_ = _tmp7_->delegate_target_cvalue; _tmp9_ = _vala_ccode_node_ref0 (_tmp8_); result = _tmp9_; _vala_target_value_unref0 (glib_value); return result; } void vala_ccode_base_module_set_delegate_target (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* delegate_target) { ValaExpression* _tmp0_; ValaTargetValue* _tmp1_; ValaTargetValue* _tmp2_; ValaGLibValue* _tmp3_; ValaGLibValue* glib_value; ValaGLibValue* _tmp4_; ValaGLibValue* _tmp11_; ValaCCodeExpression* _tmp12_; ValaCCodeExpression* _tmp13_; g_return_if_fail (self != NULL); g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_expression_get_target_value (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp2_)); glib_value = _tmp3_; _tmp4_ = glib_value; if (_tmp4_ == NULL) { ValaExpression* _tmp5_; ValaDataType* _tmp6_; ValaDataType* _tmp7_; ValaGLibValue* _tmp8_; ValaExpression* _tmp9_; ValaGLibValue* _tmp10_; _tmp5_ = expr; _tmp6_ = vala_expression_get_value_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_glib_value_new (_tmp7_, NULL, FALSE); _vala_target_value_unref0 (glib_value); glib_value = _tmp8_; _tmp9_ = expr; _tmp10_ = glib_value; vala_expression_set_target_value (_tmp9_, (ValaTargetValue*) _tmp10_); } _tmp11_ = glib_value; _tmp12_ = delegate_target; _tmp13_ = _vala_ccode_node_ref0 (_tmp12_); _vala_ccode_node_unref0 (_tmp11_->delegate_target_cvalue); _tmp11_->delegate_target_cvalue = _tmp13_; _vala_target_value_unref0 (glib_value); } ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_destroy_notify (ValaCCodeBaseModule* self, ValaExpression* expr) { ValaCCodeExpression* result = NULL; ValaExpression* _tmp0_; ValaTargetValue* _tmp1_; ValaTargetValue* _tmp2_; ValaExpression* _tmp3_; ValaTargetValue* _tmp4_; ValaTargetValue* _tmp5_; ValaGLibValue* _tmp6_; ValaGLibValue* glib_value; ValaGLibValue* _tmp7_; ValaCCodeExpression* _tmp8_; ValaCCodeExpression* _tmp9_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (expr != NULL, NULL); _tmp0_ = expr; _tmp1_ = vala_expression_get_target_value (_tmp0_); _tmp2_ = _tmp1_; if (_tmp2_ == NULL) { result = NULL; return result; } _tmp3_ = expr; _tmp4_ = vala_expression_get_target_value (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp5_)); glib_value = _tmp6_; _tmp7_ = glib_value; _tmp8_ = _tmp7_->delegate_target_destroy_notify_cvalue; _tmp9_ = _vala_ccode_node_ref0 (_tmp8_); result = _tmp9_; _vala_target_value_unref0 (glib_value); return result; } void vala_ccode_base_module_set_delegate_target_destroy_notify (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* destroy_notify) { ValaExpression* _tmp0_; ValaTargetValue* _tmp1_; ValaTargetValue* _tmp2_; ValaGLibValue* _tmp3_; ValaGLibValue* glib_value; ValaGLibValue* _tmp4_; ValaGLibValue* _tmp11_; ValaCCodeExpression* _tmp12_; ValaCCodeExpression* _tmp13_; g_return_if_fail (self != NULL); g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_expression_get_target_value (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp2_)); glib_value = _tmp3_; _tmp4_ = glib_value; if (_tmp4_ == NULL) { ValaExpression* _tmp5_; ValaDataType* _tmp6_; ValaDataType* _tmp7_; ValaGLibValue* _tmp8_; ValaExpression* _tmp9_; ValaGLibValue* _tmp10_; _tmp5_ = expr; _tmp6_ = vala_expression_get_value_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_glib_value_new (_tmp7_, NULL, FALSE); _vala_target_value_unref0 (glib_value); glib_value = _tmp8_; _tmp9_ = expr; _tmp10_ = glib_value; vala_expression_set_target_value (_tmp9_, (ValaTargetValue*) _tmp10_); } _tmp11_ = glib_value; _tmp12_ = destroy_notify; _tmp13_ = _vala_ccode_node_ref0 (_tmp12_); _vala_ccode_node_unref0 (_tmp11_->delegate_target_destroy_notify_cvalue); _tmp11_->delegate_target_destroy_notify_cvalue = _tmp13_; _vala_target_value_unref0 (glib_value); } void vala_ccode_base_module_append_array_length (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* size) { ValaExpression* _tmp0_; ValaTargetValue* _tmp1_; ValaTargetValue* _tmp2_; ValaGLibValue* _tmp3_; ValaGLibValue* glib_value; ValaGLibValue* _tmp4_; ValaGLibValue* _tmp11_; ValaCCodeExpression* _tmp12_; g_return_if_fail (self != NULL); g_return_if_fail (expr != NULL); g_return_if_fail (size != NULL); _tmp0_ = expr; _tmp1_ = vala_expression_get_target_value (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp2_)); glib_value = _tmp3_; _tmp4_ = glib_value; if (_tmp4_ == NULL) { ValaExpression* _tmp5_; ValaDataType* _tmp6_; ValaDataType* _tmp7_; ValaGLibValue* _tmp8_; ValaExpression* _tmp9_; ValaGLibValue* _tmp10_; _tmp5_ = expr; _tmp6_ = vala_expression_get_value_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_glib_value_new (_tmp7_, NULL, FALSE); _vala_target_value_unref0 (glib_value); glib_value = _tmp8_; _tmp9_ = expr; _tmp10_ = glib_value; vala_expression_set_target_value (_tmp9_, (ValaTargetValue*) _tmp10_); } _tmp11_ = glib_value; _tmp12_ = size; vala_glib_value_append_array_length_cvalue (_tmp11_, _tmp12_); _vala_target_value_unref0 (glib_value); } ValaList* vala_ccode_base_module_get_array_lengths (ValaCCodeBaseModule* self, ValaExpression* expr) { ValaList* result = NULL; ValaExpression* _tmp0_; ValaTargetValue* _tmp1_; ValaTargetValue* _tmp2_; ValaGLibValue* _tmp3_; ValaGLibValue* glib_value; ValaGLibValue* _tmp4_; ValaGLibValue* _tmp11_; ValaList* _tmp12_; ValaList* _tmp13_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (expr != NULL, NULL); _tmp0_ = expr; _tmp1_ = vala_expression_get_target_value (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp2_)); glib_value = _tmp3_; _tmp4_ = glib_value; if (_tmp4_ == NULL) { ValaExpression* _tmp5_; ValaDataType* _tmp6_; ValaDataType* _tmp7_; ValaGLibValue* _tmp8_; ValaExpression* _tmp9_; ValaGLibValue* _tmp10_; _tmp5_ = expr; _tmp6_ = vala_expression_get_value_type (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = vala_glib_value_new (_tmp7_, NULL, FALSE); _vala_target_value_unref0 (glib_value); glib_value = _tmp8_; _tmp9_ = expr; _tmp10_ = glib_value; vala_expression_set_target_value (_tmp9_, (ValaTargetValue*) _tmp10_); } _tmp11_ = glib_value; _tmp12_ = _tmp11_->array_length_cvalues; _tmp13_ = _vala_iterable_ref0 (_tmp12_); result = _tmp13_; _vala_target_value_unref0 (glib_value); return result; } gboolean vala_ccode_base_module_get_lvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) { gboolean result = FALSE; ValaTargetValue* _tmp0_; ValaGLibValue* _tmp1_; ValaGLibValue* glib_value; gboolean _tmp2_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (value != NULL, FALSE); _tmp0_ = value; _tmp1_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp0_)); glib_value = _tmp1_; _tmp2_ = glib_value->lvalue; result = _tmp2_; _vala_target_value_unref0 (glib_value); return result; } gboolean vala_ccode_base_module_get_non_null (ValaCCodeBaseModule* self, ValaTargetValue* value) { gboolean result = FALSE; ValaTargetValue* _tmp0_; ValaGLibValue* _tmp1_; ValaGLibValue* glib_value; gboolean _tmp2_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (value != NULL, FALSE); _tmp0_ = value; _tmp1_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp0_)); glib_value = _tmp1_; _tmp2_ = glib_value->non_null; result = _tmp2_; _vala_target_value_unref0 (glib_value); return result; } gchar* vala_ccode_base_module_get_ctype (ValaCCodeBaseModule* self, ValaTargetValue* value) { gchar* result = NULL; ValaTargetValue* _tmp0_; ValaGLibValue* _tmp1_; ValaGLibValue* glib_value; const gchar* _tmp2_; gchar* _tmp3_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (value != NULL, NULL); _tmp0_ = value; _tmp1_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp0_)); glib_value = _tmp1_; _tmp2_ = glib_value->ctype; _tmp3_ = g_strdup (_tmp2_); result = _tmp3_; _vala_target_value_unref0 (glib_value); return result; } gboolean vala_ccode_base_module_get_array_null_terminated (ValaCCodeBaseModule* self, ValaTargetValue* value) { gboolean result = FALSE; ValaTargetValue* _tmp0_; ValaGLibValue* _tmp1_; ValaGLibValue* glib_value; gboolean _tmp2_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (value != NULL, FALSE); _tmp0_ = value; _tmp1_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp0_)); glib_value = _tmp1_; _tmp2_ = glib_value->array_null_terminated; result = _tmp2_; _vala_target_value_unref0 (glib_value); return result; } ValaCCodeExpression* vala_ccode_base_module_get_array_length_cexpr (ValaCCodeBaseModule* self, ValaTargetValue* value) { ValaCCodeExpression* result = NULL; ValaTargetValue* _tmp0_; ValaGLibValue* _tmp1_; ValaGLibValue* glib_value; ValaCCodeExpression* _tmp2_; ValaCCodeExpression* _tmp3_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (value != NULL, NULL); _tmp0_ = value; _tmp1_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (_tmp0_)); glib_value = _tmp1_; _tmp2_ = glib_value->array_length_cexpr; _tmp3_ = _vala_ccode_node_ref0 (_tmp2_); result = _tmp3_; _vala_target_value_unref0 (glib_value); return result; } ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self) { ValaCodeContext* result; ValaCodeContext* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_context; result = _tmp0_; return result; } static gpointer _vala_code_context_ref0 (gpointer self) { return self ? vala_code_context_ref (self) : NULL; } void vala_ccode_base_module_set_context (ValaCCodeBaseModule* self, ValaCodeContext* value) { ValaCodeContext* _tmp0_; ValaCodeContext* _tmp1_; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = _vala_code_context_ref0 (_tmp0_); _vala_code_context_unref0 (self->priv->_context); self->priv->_context = _tmp1_; } ValaSymbol* vala_ccode_base_module_get_current_symbol (ValaCCodeBaseModule* self) { ValaSymbol* result; ValaCCodeBaseModuleEmitContext* _tmp0_; ValaSymbol* _tmp1_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->emit_context; _tmp1_ = _tmp0_->current_symbol; result = _tmp1_; return result; } ValaTryStatement* vala_ccode_base_module_get_current_try (ValaCCodeBaseModule* self) { ValaTryStatement* result; ValaCCodeBaseModuleEmitContext* _tmp0_; ValaTryStatement* _tmp1_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->emit_context; _tmp1_ = _tmp0_->current_try; result = _tmp1_; return result; } void vala_ccode_base_module_set_current_try (ValaCCodeBaseModule* self, ValaTryStatement* value) { ValaCCodeBaseModuleEmitContext* _tmp0_; ValaTryStatement* _tmp1_; ValaTryStatement* _tmp2_; g_return_if_fail (self != NULL); _tmp0_ = self->emit_context; _tmp1_ = value; _tmp2_ = _vala_code_node_ref0 (_tmp1_); _vala_code_node_unref0 (_tmp0_->current_try); _tmp0_->current_try = _tmp2_; } ValaCatchClause* vala_ccode_base_module_get_current_catch (ValaCCodeBaseModule* self) { ValaCatchClause* result; ValaCCodeBaseModuleEmitContext* _tmp0_; ValaCatchClause* _tmp1_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->emit_context; _tmp1_ = _tmp0_->current_catch; result = _tmp1_; return result; } void vala_ccode_base_module_set_current_catch (ValaCCodeBaseModule* self, ValaCatchClause* value) { ValaCCodeBaseModuleEmitContext* _tmp0_; ValaCatchClause* _tmp1_; ValaCatchClause* _tmp2_; g_return_if_fail (self != NULL); _tmp0_ = self->emit_context; _tmp1_ = value; _tmp2_ = _vala_code_node_ref0 (_tmp1_); _vala_code_node_unref0 (_tmp0_->current_catch); _tmp0_->current_catch = _tmp2_; } ValaTypeSymbol* vala_ccode_base_module_get_current_type_symbol (ValaCCodeBaseModule* self) { ValaTypeSymbol* result; ValaSymbol* _tmp0_; ValaSymbol* _tmp1_; ValaSymbol* _tmp2_; ValaSymbol* sym; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_base_module_get_current_symbol (self); _tmp1_ = _tmp0_; _tmp2_ = _vala_code_node_ref0 (_tmp1_); sym = _tmp2_; while (TRUE) { ValaSymbol* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; ValaSymbol* _tmp8_; ValaSymbol* _tmp9_; _tmp3_ = sym; if (!(_tmp3_ != NULL)) { break; } _tmp4_ = sym; if (VALA_IS_TYPESYMBOL (_tmp4_)) { ValaSymbol* _tmp5_; _tmp5_ = sym; result = VALA_TYPESYMBOL (_tmp5_); _vala_code_node_unref0 (sym); return result; } _tmp6_ = sym; _tmp7_ = vala_symbol_get_parent_symbol (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = _vala_code_node_ref0 (_tmp8_); _vala_code_node_unref0 (sym); sym = _tmp9_; } result = NULL; _vala_code_node_unref0 (sym); return result; } ValaClass* vala_ccode_base_module_get_current_class (ValaCCodeBaseModule* self) { ValaClass* result; ValaTypeSymbol* _tmp0_; ValaTypeSymbol* _tmp1_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_base_module_get_current_type_symbol (self); _tmp1_ = _tmp0_; result = VALA_IS_CLASS (_tmp1_) ? ((ValaClass*) _tmp1_) : NULL; return result; } ValaMethod* vala_ccode_base_module_get_current_method (ValaCCodeBaseModule* self) { ValaMethod* result; ValaSymbol* _tmp0_; ValaSymbol* _tmp1_; ValaSymbol* _tmp2_; ValaSymbol* sym; ValaSymbol* _tmp8_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_base_module_get_current_symbol (self); _tmp1_ = _tmp0_; _tmp2_ = _vala_code_node_ref0 (_tmp1_); sym = _tmp2_; while (TRUE) { ValaSymbol* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* _tmp5_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; _tmp3_ = sym; if (!VALA_IS_BLOCK (_tmp3_)) { break; } _tmp4_ = sym; _tmp5_ = vala_symbol_get_parent_symbol (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = _vala_code_node_ref0 (_tmp6_); _vala_code_node_unref0 (sym); sym = _tmp7_; } _tmp8_ = sym; result = VALA_IS_METHOD (_tmp8_) ? ((ValaMethod*) _tmp8_) : NULL; _vala_code_node_unref0 (sym); return result; } ValaPropertyAccessor* vala_ccode_base_module_get_current_property_accessor (ValaCCodeBaseModule* self) { ValaPropertyAccessor* result; ValaSymbol* _tmp0_; ValaSymbol* _tmp1_; ValaSymbol* _tmp2_; ValaSymbol* sym; ValaSymbol* _tmp8_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_base_module_get_current_symbol (self); _tmp1_ = _tmp0_; _tmp2_ = _vala_code_node_ref0 (_tmp1_); sym = _tmp2_; while (TRUE) { ValaSymbol* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* _tmp5_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; _tmp3_ = sym; if (!VALA_IS_BLOCK (_tmp3_)) { break; } _tmp4_ = sym; _tmp5_ = vala_symbol_get_parent_symbol (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = _vala_code_node_ref0 (_tmp6_); _vala_code_node_unref0 (sym); sym = _tmp7_; } _tmp8_ = sym; result = VALA_IS_PROPERTY_ACCESSOR (_tmp8_) ? ((ValaPropertyAccessor*) _tmp8_) : NULL; _vala_code_node_unref0 (sym); return result; } ValaConstructor* vala_ccode_base_module_get_current_constructor (ValaCCodeBaseModule* self) { ValaConstructor* result; ValaSymbol* _tmp0_; ValaSymbol* _tmp1_; ValaSymbol* _tmp2_; ValaSymbol* sym; ValaSymbol* _tmp8_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_base_module_get_current_symbol (self); _tmp1_ = _tmp0_; _tmp2_ = _vala_code_node_ref0 (_tmp1_); sym = _tmp2_; while (TRUE) { ValaSymbol* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* _tmp5_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; _tmp3_ = sym; if (!VALA_IS_BLOCK (_tmp3_)) { break; } _tmp4_ = sym; _tmp5_ = vala_symbol_get_parent_symbol (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = _vala_code_node_ref0 (_tmp6_); _vala_code_node_unref0 (sym); sym = _tmp7_; } _tmp8_ = sym; result = VALA_IS_CONSTRUCTOR (_tmp8_) ? ((ValaConstructor*) _tmp8_) : NULL; _vala_code_node_unref0 (sym); return result; } ValaDestructor* vala_ccode_base_module_get_current_destructor (ValaCCodeBaseModule* self) { ValaDestructor* result; ValaSymbol* _tmp0_; ValaSymbol* _tmp1_; ValaSymbol* _tmp2_; ValaSymbol* sym; ValaSymbol* _tmp8_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_base_module_get_current_symbol (self); _tmp1_ = _tmp0_; _tmp2_ = _vala_code_node_ref0 (_tmp1_); sym = _tmp2_; while (TRUE) { ValaSymbol* _tmp3_; ValaSymbol* _tmp4_; ValaSymbol* _tmp5_; ValaSymbol* _tmp6_; ValaSymbol* _tmp7_; _tmp3_ = sym; if (!VALA_IS_BLOCK (_tmp3_)) { break; } _tmp4_ = sym; _tmp5_ = vala_symbol_get_parent_symbol (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = _vala_code_node_ref0 (_tmp6_); _vala_code_node_unref0 (sym); sym = _tmp7_; } _tmp8_ = sym; result = VALA_IS_DESTRUCTOR (_tmp8_) ? ((ValaDestructor*) _tmp8_) : NULL; _vala_code_node_unref0 (sym); return result; } ValaDataType* vala_ccode_base_module_get_current_return_type (ValaCCodeBaseModule* self) { ValaDataType* result; ValaMethod* _tmp0_; ValaMethod* _tmp1_; ValaMethod* _tmp2_; ValaMethod* m; ValaMethod* _tmp3_; ValaPropertyAccessor* _tmp7_; ValaPropertyAccessor* _tmp8_; ValaPropertyAccessor* _tmp9_; ValaPropertyAccessor* acc; ValaPropertyAccessor* _tmp10_; gboolean _tmp18_ = FALSE; gboolean _tmp19_ = FALSE; gboolean _tmp21_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_base_module_get_current_method (self); _tmp1_ = _tmp0_; _tmp2_ = _vala_code_node_ref0 (_tmp1_); m = _tmp2_; _tmp3_ = m; if (_tmp3_ != NULL) { ValaMethod* _tmp4_; ValaDataType* _tmp5_; ValaDataType* _tmp6_; _tmp4_ = m; _tmp5_ = vala_method_get_return_type (_tmp4_); _tmp6_ = _tmp5_; result = _tmp6_; _vala_code_node_unref0 (m); return result; } _tmp7_ = vala_ccode_base_module_get_current_property_accessor (self); _tmp8_ = _tmp7_; _tmp9_ = _vala_code_node_ref0 (_tmp8_); acc = _tmp9_; _tmp10_ = acc; if (_tmp10_ != NULL) { ValaPropertyAccessor* _tmp11_; gboolean _tmp12_; gboolean _tmp13_; _tmp11_ = acc; _tmp12_ = vala_property_accessor_get_readable (_tmp11_); _tmp13_ = _tmp12_; if (_tmp13_) { ValaPropertyAccessor* _tmp14_; ValaDataType* _tmp15_; ValaDataType* _tmp16_; _tmp14_ = acc; _tmp15_ = vala_property_accessor_get_value_type (_tmp14_); _tmp16_ = _tmp15_; result = _tmp16_; _vala_code_node_unref0 (acc); _vala_code_node_unref0 (m); return result; } else { ValaDataType* _tmp17_; _tmp17_ = self->void_type; result = _tmp17_; _vala_code_node_unref0 (acc); _vala_code_node_unref0 (m); return result; } } _tmp19_ = vala_ccode_base_module_is_in_constructor (self); if (_tmp19_) { _tmp18_ = TRUE; } else { gboolean _tmp20_ = FALSE; _tmp20_ = vala_ccode_base_module_is_in_destructor (self); _tmp18_ = _tmp20_; } _tmp21_ = _tmp18_; if (_tmp21_) { ValaDataType* _tmp22_; _tmp22_ = self->void_type; result = _tmp22_; _vala_code_node_unref0 (acc); _vala_code_node_unref0 (m); return result; } result = NULL; _vala_code_node_unref0 (acc); _vala_code_node_unref0 (m); return result; } ValaBlock* vala_ccode_base_module_get_current_closure_block (ValaCCodeBaseModule* self) { ValaBlock* result; ValaSymbol* _tmp0_; ValaSymbol* _tmp1_; ValaBlock* _tmp2_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_base_module_get_current_symbol (self); _tmp1_ = _tmp0_; _tmp2_ = vala_ccode_base_module_next_closure_block (self, _tmp1_); result = _tmp2_; return result; } ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self) { ValaCCodeFunction* result; ValaCCodeBaseModuleEmitContext* _tmp0_; ValaCCodeFunction* _tmp1_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->emit_context; _tmp1_ = _tmp0_->ccode; result = _tmp1_; return result; } ValaArrayList* vala_ccode_base_module_get_temp_ref_values (ValaCCodeBaseModule* self) { ValaArrayList* result; ValaCCodeBaseModuleEmitContext* _tmp0_; ValaArrayList* _tmp1_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->emit_context; _tmp1_ = _tmp0_->temp_ref_values; result = _tmp1_; return result; } gint vala_ccode_base_module_get_next_temp_var_id (ValaCCodeBaseModule* self) { gint result; ValaCCodeBaseModuleEmitContext* _tmp0_; gint _tmp1_; g_return_val_if_fail (self != NULL, 0); _tmp0_ = self->emit_context; _tmp1_ = _tmp0_->next_temp_var_id; result = _tmp1_; return result; } void vala_ccode_base_module_set_next_temp_var_id (ValaCCodeBaseModule* self, gint value) { ValaCCodeBaseModuleEmitContext* _tmp0_; gint _tmp1_; g_return_if_fail (self != NULL); _tmp0_ = self->emit_context; _tmp1_ = value; _tmp0_->next_temp_var_id = _tmp1_; } gboolean vala_ccode_base_module_get_in_creation_method (ValaCCodeBaseModule* self) { gboolean result; ValaMethod* _tmp0_; ValaMethod* _tmp1_; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = vala_ccode_base_module_get_current_method (self); _tmp1_ = _tmp0_; result = VALA_IS_CREATION_METHOD (_tmp1_); return result; } gboolean vala_ccode_base_module_get_current_method_inner_error (ValaCCodeBaseModule* self) { gboolean result; ValaCCodeBaseModuleEmitContext* _tmp0_; gboolean _tmp1_; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->emit_context; _tmp1_ = _tmp0_->current_method_inner_error; result = _tmp1_; return result; } void vala_ccode_base_module_set_current_method_inner_error (ValaCCodeBaseModule* self, gboolean value) { ValaCCodeBaseModuleEmitContext* _tmp0_; gboolean _tmp1_; g_return_if_fail (self != NULL); _tmp0_ = self->emit_context; _tmp1_ = value; _tmp0_->current_method_inner_error = _tmp1_; } gboolean vala_ccode_base_module_get_current_method_return (ValaCCodeBaseModule* self) { gboolean result; ValaCCodeBaseModuleEmitContext* _tmp0_; gboolean _tmp1_; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->emit_context; _tmp1_ = _tmp0_->current_method_return; result = _tmp1_; return result; } void vala_ccode_base_module_set_current_method_return (ValaCCodeBaseModule* self, gboolean value) { ValaCCodeBaseModuleEmitContext* _tmp0_; gboolean _tmp1_; g_return_if_fail (self != NULL); _tmp0_ = self->emit_context; _tmp1_ = value; _tmp0_->current_method_return = _tmp1_; } ValaMap* vala_ccode_base_module_get_variable_name_map (ValaCCodeBaseModule* self) { ValaMap* result; ValaCCodeBaseModuleEmitContext* _tmp0_; ValaMap* _tmp1_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->emit_context; _tmp1_ = _tmp0_->variable_name_map; result = _tmp1_; return result; } ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_construct (GType object_type, ValaSymbol* symbol) { ValaCCodeBaseModuleEmitContext* self = NULL; ValaSymbol* _tmp0_; ValaSymbol* _tmp1_; self = (ValaCCodeBaseModuleEmitContext*) g_type_create_instance (object_type); _tmp0_ = symbol; _tmp1_ = _vala_code_node_ref0 (_tmp0_); _vala_code_node_unref0 (self->current_symbol); self->current_symbol = _tmp1_; return self; } ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_new (ValaSymbol* symbol) { return vala_ccode_base_module_emit_context_construct (VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, symbol); } void vala_ccode_base_module_emit_context_push_symbol (ValaCCodeBaseModuleEmitContext* self, ValaSymbol* symbol) { ValaArrayList* _tmp0_; ValaSymbol* _tmp1_; ValaSymbol* _tmp2_; ValaSymbol* _tmp3_; g_return_if_fail (self != NULL); g_return_if_fail (symbol != NULL); _tmp0_ = self->symbol_stack; _tmp1_ = self->current_symbol; vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_); _tmp2_ = symbol; _tmp3_ = _vala_code_node_ref0 (_tmp2_); _vala_code_node_unref0 (self->current_symbol); self->current_symbol = _tmp3_; } void vala_ccode_base_module_emit_context_pop_symbol (ValaCCodeBaseModuleEmitContext* self) { ValaArrayList* _tmp0_; ValaArrayList* _tmp1_; gint _tmp2_; gint _tmp3_; gpointer _tmp4_ = NULL; ValaArrayList* _tmp5_; ValaArrayList* _tmp6_; gint _tmp7_; gint _tmp8_; g_return_if_fail (self != NULL); _tmp0_ = self->symbol_stack; _tmp1_ = self->symbol_stack; _tmp2_ = vala_collection_get_size ((ValaCollection*) _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = vala_list_get ((ValaList*) _tmp0_, _tmp3_ - 1); _vala_code_node_unref0 (self->current_symbol); self->current_symbol = (ValaSymbol*) _tmp4_; _tmp5_ = self->symbol_stack; _tmp6_ = self->symbol_stack; _tmp7_ = vala_collection_get_size ((ValaCollection*) _tmp6_); _tmp8_ = _tmp7_; vala_list_remove_at ((ValaList*) _tmp5_, _tmp8_ - 1); } static void vala_ccode_base_module_value_emit_context_init (GValue* value) { value->data[0].v_pointer = NULL; } static void vala_ccode_base_module_value_emit_context_free_value (GValue* value) { if (value->data[0].v_pointer) { vala_ccode_base_module_emit_context_unref (value->data[0].v_pointer); } } static void vala_ccode_base_module_value_emit_context_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = vala_ccode_base_module_emit_context_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer vala_ccode_base_module_value_emit_context_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* vala_ccode_base_module_value_emit_context_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { ValaCCodeBaseModuleEmitContext* object; object = collect_values[0].v_pointer; if (object->parent_instance.g_class == NULL) { return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } value->data[0].v_pointer = vala_ccode_base_module_emit_context_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* vala_ccode_base_module_value_emit_context_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { ValaCCodeBaseModuleEmitContext** object_p; object_p = collect_values[0].v_pointer; if (!object_p) { return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); } if (!value->data[0].v_pointer) { *object_p = NULL; } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { *object_p = value->data[0].v_pointer; } else { *object_p = vala_ccode_base_module_emit_context_ref (value->data[0].v_pointer); } return NULL; } GParamSpec* vala_ccode_base_module_param_spec_emit_context (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { ValaCCodeBaseModuleParamSpecEmitContext* spec; g_return_val_if_fail (g_type_is_a (object_type, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT), NULL); spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); G_PARAM_SPEC (spec)->value_type = object_type; return G_PARAM_SPEC (spec); } gpointer vala_ccode_base_module_value_get_emit_context (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT), NULL); return value->data[0].v_pointer; } void vala_ccode_base_module_value_set_emit_context (GValue* value, gpointer v_object) { ValaCCodeBaseModuleEmitContext* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; vala_ccode_base_module_emit_context_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { vala_ccode_base_module_emit_context_unref (old); } } void vala_ccode_base_module_value_take_emit_context (GValue* value, gpointer v_object) { ValaCCodeBaseModuleEmitContext* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; } else { value->data[0].v_pointer = NULL; } if (old) { vala_ccode_base_module_emit_context_unref (old); } } static void vala_ccode_base_module_emit_context_class_init (ValaCCodeBaseModuleEmitContextClass * klass) { vala_ccode_base_module_emit_context_parent_class = g_type_class_peek_parent (klass); VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_CLASS (klass)->finalize = vala_ccode_base_module_emit_context_finalize; } static void vala_ccode_base_module_emit_context_instance_init (ValaCCodeBaseModuleEmitContext * self) { GEqualFunc _tmp0_; ValaArrayList* _tmp1_; GEqualFunc _tmp2_; ValaArrayList* _tmp3_; GEqualFunc _tmp4_; ValaArrayList* _tmp5_; GHashFunc _tmp6_; GEqualFunc _tmp7_; GEqualFunc _tmp8_; ValaHashMap* _tmp9_; GHashFunc _tmp10_; GEqualFunc _tmp11_; GEqualFunc _tmp12_; ValaHashMap* _tmp13_; GHashFunc _tmp14_; GEqualFunc _tmp15_; GEqualFunc _tmp16_; ValaHashMap* _tmp17_; _tmp0_ = g_direct_equal; _tmp1_ = vala_array_list_new (VALA_TYPE_SYMBOL, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp0_); self->symbol_stack = _tmp1_; _tmp2_ = g_direct_equal; _tmp3_ = vala_array_list_new (VALA_TYPE_CCODE_FUNCTION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp2_); self->ccode_stack = _tmp3_; _tmp4_ = g_direct_equal; _tmp5_ = vala_array_list_new (VALA_TYPE_TARGET_VALUE, (GBoxedCopyFunc) vala_target_value_ref, vala_target_value_unref, _tmp4_); self->temp_ref_values = _tmp5_; _tmp6_ = g_str_hash; _tmp7_ = g_str_equal; _tmp8_ = g_direct_equal; _tmp9_ = vala_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp6_, _tmp7_, _tmp8_); self->variable_name_map = (ValaMap*) _tmp9_; _tmp10_ = g_str_hash; _tmp11_ = g_str_equal; _tmp12_ = g_direct_equal; _tmp13_ = vala_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_INT, NULL, NULL, _tmp10_, _tmp11_, _tmp12_); self->closure_variable_count_map = (ValaMap*) _tmp13_; _tmp14_ = g_direct_hash; _tmp15_ = g_direct_equal; _tmp16_ = g_direct_equal; _tmp17_ = vala_hash_map_new (VALA_TYPE_LOCAL_VARIABLE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, G_TYPE_INT, NULL, NULL, _tmp14_, _tmp15_, _tmp16_); self->closure_variable_clash_map = (ValaMap*) _tmp17_; self->ref_count = 1; } static void vala_ccode_base_module_emit_context_finalize (ValaCCodeBaseModuleEmitContext* obj) { ValaCCodeBaseModuleEmitContext * self; self = VALA_CCODE_BASE_MODULE_EMIT_CONTEXT (obj); _vala_code_node_unref0 (self->current_symbol); _vala_iterable_unref0 (self->symbol_stack); _vala_code_node_unref0 (self->current_try); _vala_code_node_unref0 (self->current_catch); _vala_ccode_node_unref0 (self->ccode); _vala_iterable_unref0 (self->ccode_stack); _vala_iterable_unref0 (self->temp_ref_values); _vala_map_unref0 (self->variable_name_map); _vala_map_unref0 (self->closure_variable_count_map); _vala_map_unref0 (self->closure_variable_clash_map); } GType vala_ccode_base_module_emit_context_get_type (void) { static volatile gsize vala_ccode_base_module_emit_context_type_id__volatile = 0; if (g_once_init_enter (&vala_ccode_base_module_emit_context_type_id__volatile)) { static const GTypeValueTable g_define_type_value_table = { vala_ccode_base_module_value_emit_context_init, vala_ccode_base_module_value_emit_context_free_value, vala_ccode_base_module_value_emit_context_copy_value, vala_ccode_base_module_value_emit_context_peek_pointer, "p", vala_ccode_base_module_value_emit_context_collect_value, "p", vala_ccode_base_module_value_emit_context_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (ValaCCodeBaseModuleEmitContextClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_ccode_base_module_emit_context_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaCCodeBaseModuleEmitContext), 0, (GInstanceInitFunc) vala_ccode_base_module_emit_context_instance_init, &g_define_type_value_table }; static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; GType vala_ccode_base_module_emit_context_type_id; vala_ccode_base_module_emit_context_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ValaCCodeBaseModuleEmitContext", &g_define_type_info, &g_define_type_fundamental_info, 0); g_once_init_leave (&vala_ccode_base_module_emit_context_type_id__volatile, vala_ccode_base_module_emit_context_type_id); } return vala_ccode_base_module_emit_context_type_id__volatile; } gpointer vala_ccode_base_module_emit_context_ref (gpointer instance) { ValaCCodeBaseModuleEmitContext* self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } void vala_ccode_base_module_emit_context_unref (gpointer instance) { ValaCCodeBaseModuleEmitContext* self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } static void vala_ccode_base_module_class_init (ValaCCodeBaseModuleClass * klass) { gint _tmp0_ = 0; vala_ccode_base_module_parent_class = g_type_class_peek_parent (klass); VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_ccode_base_module_finalize; g_type_class_add_private (klass, sizeof (ValaCCodeBaseModulePrivate)); VALA_CODE_GENERATOR_CLASS (klass)->emit = vala_ccode_base_module_real_emit; VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_free = vala_ccode_base_module_real_append_vala_array_free; VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_move = vala_ccode_base_module_real_append_vala_array_move; VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_length = vala_ccode_base_module_real_append_vala_array_length; VALA_CODE_VISITOR_CLASS (klass)->visit_source_file = vala_ccode_base_module_real_visit_source_file; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_enum_declaration = vala_ccode_base_module_real_generate_enum_declaration; VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_ccode_base_module_real_visit_enum; VALA_CODE_VISITOR_CLASS (klass)->visit_constant = vala_ccode_base_module_real_visit_constant; VALA_CODE_VISITOR_CLASS (klass)->visit_field = vala_ccode_base_module_real_visit_field; VALA_CODE_VISITOR_CLASS (klass)->visit_formal_parameter = vala_ccode_base_module_real_visit_formal_parameter; VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_ccode_base_module_real_visit_property; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_struct_declaration = vala_ccode_base_module_real_generate_class_struct_declaration; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_struct_declaration = vala_ccode_base_module_real_generate_struct_declaration; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_delegate_declaration = vala_ccode_base_module_real_generate_delegate_declaration; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_cparameters = vala_ccode_base_module_real_generate_cparameters; VALA_CODE_VISITOR_CLASS (klass)->visit_property_accessor = vala_ccode_base_module_real_visit_property_accessor; VALA_CODE_VISITOR_CLASS (klass)->visit_destructor = vala_ccode_base_module_real_visit_destructor; VALA_CODE_VISITOR_CLASS (klass)->visit_block = vala_ccode_base_module_real_visit_block; VALA_CODE_VISITOR_CLASS (klass)->visit_declaration_statement = vala_ccode_base_module_real_visit_declaration_statement; VALA_CODE_VISITOR_CLASS (klass)->visit_local_variable = vala_ccode_base_module_real_visit_local_variable; VALA_CODE_VISITOR_CLASS (klass)->visit_initializer_list = vala_ccode_base_module_real_visit_initializer_list; VALA_CODE_GENERATOR_CLASS (klass)->create_local = vala_ccode_base_module_real_create_local; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dup_func_expression = vala_ccode_base_module_real_get_dup_func_expression; VALA_CCODE_BASE_MODULE_CLASS (klass)->append_struct_array_free = vala_ccode_base_module_real_append_struct_array_free; VALA_CCODE_BASE_MODULE_CLASS (klass)->destroy_value = vala_ccode_base_module_real_destroy_value; VALA_CODE_VISITOR_CLASS (klass)->visit_end_full_expression = vala_ccode_base_module_real_visit_end_full_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_expression_statement = vala_ccode_base_module_real_visit_expression_statement; VALA_CCODE_BASE_MODULE_CLASS (klass)->append_scope_free = vala_ccode_base_module_real_append_scope_free; VALA_CODE_VISITOR_CLASS (klass)->visit_return_statement = vala_ccode_base_module_real_visit_return_statement; VALA_CODE_VISITOR_CLASS (klass)->visit_lock_statement = vala_ccode_base_module_real_visit_lock_statement; VALA_CODE_VISITOR_CLASS (klass)->visit_unlock_statement = vala_ccode_base_module_real_visit_unlock_statement; VALA_CODE_VISITOR_CLASS (klass)->visit_delete_statement = vala_ccode_base_module_real_visit_delete_statement; VALA_CODE_VISITOR_CLASS (klass)->visit_expression = vala_ccode_base_module_real_visit_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_boolean_literal = vala_ccode_base_module_real_visit_boolean_literal; VALA_CODE_VISITOR_CLASS (klass)->visit_character_literal = vala_ccode_base_module_real_visit_character_literal; VALA_CODE_VISITOR_CLASS (klass)->visit_integer_literal = vala_ccode_base_module_real_visit_integer_literal; VALA_CODE_VISITOR_CLASS (klass)->visit_real_literal = vala_ccode_base_module_real_visit_real_literal; VALA_CODE_VISITOR_CLASS (klass)->visit_string_literal = vala_ccode_base_module_real_visit_string_literal; VALA_CODE_VISITOR_CLASS (klass)->visit_regex_literal = vala_ccode_base_module_real_visit_regex_literal; VALA_CODE_VISITOR_CLASS (klass)->visit_null_literal = vala_ccode_base_module_real_visit_null_literal; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_local_cvalue = vala_ccode_base_module_real_get_local_cvalue; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_parameter_cvalue = vala_ccode_base_module_real_get_parameter_cvalue; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_field_cvalue = vala_ccode_base_module_real_get_field_cvalue; VALA_CCODE_BASE_MODULE_CLASS (klass)->load_variable = vala_ccode_base_module_real_load_variable; VALA_CCODE_BASE_MODULE_CLASS (klass)->load_this_parameter = vala_ccode_base_module_real_load_this_parameter; VALA_CCODE_BASE_MODULE_CLASS (klass)->store_value = vala_ccode_base_module_real_store_value; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cname = vala_ccode_base_module_real_get_delegate_target_cname; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cexpression = vala_ccode_base_module_real_get_delegate_target_cexpression; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cvalue = vala_ccode_base_module_real_get_delegate_target_cvalue; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_destroy_notify_cvalue = vala_ccode_base_module_real_get_delegate_target_destroy_notify_cvalue; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_destroy_notify_cname = vala_ccode_base_module_real_get_delegate_target_destroy_notify_cname; VALA_CODE_VISITOR_CLASS (klass)->visit_base_access = vala_ccode_base_module_real_visit_base_access; VALA_CODE_VISITOR_CLASS (klass)->visit_postfix_expression = vala_ccode_base_module_real_visit_postfix_expression; VALA_CCODE_BASE_MODULE_CLASS (klass)->copy_value = vala_ccode_base_module_real_copy_value; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_declaration = vala_ccode_base_module_real_generate_class_declaration; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_interface_declaration = vala_ccode_base_module_real_generate_interface_declaration; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_method_declaration = vala_ccode_base_module_real_generate_method_declaration; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_error_domain_declaration = vala_ccode_base_module_real_generate_error_domain_declaration; VALA_CODE_VISITOR_CLASS (klass)->visit_object_creation_expression = vala_ccode_base_module_real_visit_object_creation_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_sizeof_expression = vala_ccode_base_module_real_visit_sizeof_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_typeof_expression = vala_ccode_base_module_real_visit_typeof_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_unary_expression = vala_ccode_base_module_real_visit_unary_expression; VALA_CCODE_BASE_MODULE_CLASS (klass)->deserialize_expression = vala_ccode_base_module_real_deserialize_expression; VALA_CCODE_BASE_MODULE_CLASS (klass)->serialize_expression = vala_ccode_base_module_real_serialize_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_cast_expression = vala_ccode_base_module_real_visit_cast_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_named_argument = vala_ccode_base_module_real_visit_named_argument; VALA_CODE_VISITOR_CLASS (klass)->visit_pointer_indirection = vala_ccode_base_module_real_visit_pointer_indirection; VALA_CODE_VISITOR_CLASS (klass)->visit_addressof_expression = vala_ccode_base_module_real_visit_addressof_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_reference_transfer_expression = vala_ccode_base_module_real_visit_reference_transfer_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_binary_expression = vala_ccode_base_module_real_visit_binary_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_type_check = vala_ccode_base_module_real_visit_type_check; VALA_CODE_VISITOR_CLASS (klass)->visit_lambda_expression = vala_ccode_base_module_real_visit_lambda_expression; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_implicit_cast_expression = vala_ccode_base_module_real_get_implicit_cast_expression; VALA_CCODE_BASE_MODULE_CLASS (klass)->create_type_check_statement = vala_ccode_base_module_real_create_type_check_statement; VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_ccode_base_module_real_visit_class; VALA_CCODE_BASE_MODULE_CLASS (klass)->is_gobject_property = vala_ccode_base_module_real_is_gobject_property; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_dynamic_method_wrapper = vala_ccode_base_module_real_generate_dynamic_method_wrapper; VALA_CCODE_BASE_MODULE_CLASS (klass)->method_has_wrapper = vala_ccode_base_module_real_method_has_wrapper; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_param_spec = vala_ccode_base_module_real_get_param_spec; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_signal_creation = vala_ccode_base_module_real_get_signal_creation; VALA_CCODE_BASE_MODULE_CLASS (klass)->register_dbus_info = vala_ccode_base_module_real_register_dbus_info; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_property_getter_cname = vala_ccode_base_module_real_get_dynamic_property_getter_cname; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_property_setter_cname = vala_ccode_base_module_real_get_dynamic_property_setter_cname; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_cname = vala_ccode_base_module_real_get_dynamic_signal_cname; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_connect_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_connect_wrapper_name; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_connect_after_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_connect_after_wrapper_name; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_disconnect_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_disconnect_wrapper_name; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cname = vala_ccode_base_module_real_get_array_length_cname; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_parameter_array_length_cname = vala_ccode_base_module_real_get_parameter_array_length_cname; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cexpression = vala_ccode_base_module_real_get_array_length_cexpression; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cvalue = vala_ccode_base_module_real_get_array_length_cvalue; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_size_cname = vala_ccode_base_module_real_get_array_size_cname; VALA_CCODE_BASE_MODULE_CLASS (klass)->add_simple_check = vala_ccode_base_module_real_add_simple_check; VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_ready_function = vala_ccode_base_module_real_generate_ready_function; _tmp0_ = vala_code_node_get_attribute_cache_index (); vala_ccode_base_module_ccode_attribute_cache_index = _tmp0_; } static void vala_ccode_base_module_instance_init (ValaCCodeBaseModule * self) { ValaCCodeBaseModuleEmitContext* _tmp0_; GEqualFunc _tmp1_; ValaArrayList* _tmp2_; GEqualFunc _tmp3_; ValaArrayList* _tmp4_; GHashFunc _tmp5_; GEqualFunc _tmp6_; GEqualFunc _tmp7_; ValaHashMap* _tmp8_; ValaVoidType* _tmp9_; self->priv = VALA_CCODE_BASE_MODULE_GET_PRIVATE (self); _tmp0_ = vala_ccode_base_module_emit_context_new (NULL); self->emit_context = _tmp0_; _tmp1_ = g_direct_equal; _tmp2_ = vala_array_list_new (VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, (GBoxedCopyFunc) vala_ccode_base_module_emit_context_ref, vala_ccode_base_module_emit_context_unref, _tmp1_); self->priv->emit_context_stack = (ValaList*) _tmp2_; self->current_line = NULL; _tmp3_ = g_direct_equal; _tmp4_ = vala_array_list_new (VALA_TYPE_CCODE_LINE_DIRECTIVE, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp3_); self->priv->line_directive_stack = (ValaList*) _tmp4_; self->next_regex_id = 0; self->next_coroutine_state = 1; self->priv->next_block_id = 0; _tmp5_ = g_direct_hash; _tmp6_ = g_direct_equal; _tmp7_ = g_direct_equal; _tmp8_ = vala_hash_map_new (VALA_TYPE_BLOCK, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, G_TYPE_INT, NULL, NULL, _tmp5_, _tmp6_, _tmp7_); self->priv->block_map = (ValaMap*) _tmp8_; _tmp9_ = vala_void_type_new (NULL); self->void_type = (ValaDataType*) _tmp9_; self->in_plugin = FALSE; self->priv->next_variant_function_id = 0; } static void vala_ccode_base_module_finalize (ValaCodeVisitor* obj) { ValaCCodeBaseModule * self; self = VALA_CCODE_BASE_MODULE (obj); _vala_code_context_unref0 (self->priv->_context); _vala_code_node_unref0 (self->root_symbol); _vala_ccode_base_module_emit_context_unref0 (self->emit_context); _vala_iterable_unref0 (self->priv->emit_context_stack); _vala_ccode_node_unref0 (self->current_line); _vala_iterable_unref0 (self->priv->line_directive_stack); _vala_ccode_file_unref0 (self->header_file); _vala_ccode_file_unref0 (self->internal_header_file); _vala_ccode_file_unref0 (self->cfile); _vala_ccode_base_module_emit_context_unref0 (self->class_init_context); _vala_ccode_base_module_emit_context_unref0 (self->base_init_context); _vala_ccode_base_module_emit_context_unref0 (self->class_finalize_context); _vala_ccode_base_module_emit_context_unref0 (self->base_finalize_context); _vala_ccode_base_module_emit_context_unref0 (self->instance_init_context); _vala_ccode_base_module_emit_context_unref0 (self->instance_finalize_context); _vala_ccode_node_unref0 (self->param_spec_struct); _vala_ccode_node_unref0 (self->closure_struct); _vala_ccode_node_unref0 (self->prop_enum); _vala_iterable_unref0 (self->user_marshal_set); _vala_iterable_unref0 (self->predefined_marshal_set); _vala_iterable_unref0 (self->priv->reserved_identifiers); _vala_map_unref0 (self->priv->block_map); _vala_code_node_unref0 (self->void_type); _vala_code_node_unref0 (self->bool_type); _vala_code_node_unref0 (self->char_type); _vala_code_node_unref0 (self->uchar_type); _vala_code_node_unref0 (self->unichar_type); _vala_code_node_unref0 (self->short_type); _vala_code_node_unref0 (self->ushort_type); _vala_code_node_unref0 (self->int_type); _vala_code_node_unref0 (self->uint_type); _vala_code_node_unref0 (self->long_type); _vala_code_node_unref0 (self->ulong_type); _vala_code_node_unref0 (self->int8_type); _vala_code_node_unref0 (self->uint8_type); _vala_code_node_unref0 (self->int16_type); _vala_code_node_unref0 (self->uint16_type); _vala_code_node_unref0 (self->int32_type); _vala_code_node_unref0 (self->uint32_type); _vala_code_node_unref0 (self->int64_type); _vala_code_node_unref0 (self->uint64_type); _vala_code_node_unref0 (self->string_type); _vala_code_node_unref0 (self->regex_type); _vala_code_node_unref0 (self->float_type); _vala_code_node_unref0 (self->double_type); _vala_code_node_unref0 (self->gtype_type); _vala_code_node_unref0 (self->gobject_type); _vala_code_node_unref0 (self->gerror_type); _vala_code_node_unref0 (self->glist_type); _vala_code_node_unref0 (self->gslist_type); _vala_code_node_unref0 (self->gnode_type); _vala_code_node_unref0 (self->gqueue_type); _vala_code_node_unref0 (self->gvaluearray_type); _vala_code_node_unref0 (self->gstringbuilder_type); _vala_code_node_unref0 (self->garray_type); _vala_code_node_unref0 (self->gbytearray_type); _vala_code_node_unref0 (self->gptrarray_type); _vala_code_node_unref0 (self->gthreadpool_type); _vala_code_node_unref0 (self->gdestroynotify_type); _vala_code_node_unref0 (self->gquark_type); _vala_code_node_unref0 (self->gvalue_type); _vala_code_node_unref0 (self->gvariant_type); _vala_code_node_unref0 (self->mutex_type); _vala_code_node_unref0 (self->type_module_type); _vala_code_node_unref0 (self->dbus_proxy_type); _g_free0 (self->module_init_param_name); _vala_iterable_unref0 (self->wrappers); _vala_iterable_unref0 (self->priv->generated_external_symbols); VALA_CODE_VISITOR_CLASS (vala_ccode_base_module_parent_class)->finalize (obj); } /** * Code visitor generating C Code. */ GType vala_ccode_base_module_get_type (void) { static volatile gsize vala_ccode_base_module_type_id__volatile = 0; if (g_once_init_enter (&vala_ccode_base_module_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (ValaCCodeBaseModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_ccode_base_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaCCodeBaseModule), 0, (GInstanceInitFunc) vala_ccode_base_module_instance_init, NULL }; GType vala_ccode_base_module_type_id; vala_ccode_base_module_type_id = g_type_register_static (VALA_TYPE_CODE_GENERATOR, "ValaCCodeBaseModule", &g_define_type_info, G_TYPE_FLAG_ABSTRACT); g_once_init_leave (&vala_ccode_base_module_type_id__volatile, vala_ccode_base_module_type_id); } return vala_ccode_base_module_type_id__volatile; } ValaGLibValue* vala_glib_value_construct (GType object_type, ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue) { ValaGLibValue* self = NULL; ValaDataType* _tmp0_; ValaCCodeExpression* _tmp1_; ValaCCodeExpression* _tmp2_; gboolean _tmp3_; _tmp0_ = value_type; self = (ValaGLibValue*) vala_target_value_construct (object_type, _tmp0_); _tmp1_ = cvalue; _tmp2_ = _vala_ccode_node_ref0 (_tmp1_); _vala_ccode_node_unref0 (self->cvalue); self->cvalue = _tmp2_; _tmp3_ = lvalue; self->lvalue = _tmp3_; return self; } ValaGLibValue* vala_glib_value_new (ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue) { return vala_glib_value_construct (VALA_TYPE_GLIB_VALUE, value_type, cvalue, lvalue); } void vala_glib_value_append_array_length_cvalue (ValaGLibValue* self, ValaCCodeExpression* length_cvalue) { ValaList* _tmp0_; ValaList* _tmp3_; ValaCCodeExpression* _tmp4_; g_return_if_fail (self != NULL); g_return_if_fail (length_cvalue != NULL); _tmp0_ = self->array_length_cvalues; if (_tmp0_ == NULL) { GEqualFunc _tmp1_; ValaArrayList* _tmp2_; _tmp1_ = g_direct_equal; _tmp2_ = vala_array_list_new (VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp1_); _vala_iterable_unref0 (self->array_length_cvalues); self->array_length_cvalues = (ValaList*) _tmp2_; } _tmp3_ = self->array_length_cvalues; _tmp4_ = length_cvalue; vala_collection_add ((ValaCollection*) _tmp3_, _tmp4_); } ValaGLibValue* vala_glib_value_copy (ValaGLibValue* self) { ValaGLibValue* result = NULL; ValaDataType* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_ = NULL; ValaDataType* _tmp3_; ValaCCodeExpression* _tmp4_; gboolean _tmp5_; ValaGLibValue* _tmp6_; ValaGLibValue* _tmp7_; ValaGLibValue* _result_; ValaGLibValue* _tmp8_; ValaDataType* _tmp9_; ValaDataType* _tmp10_; ValaGLibValue* _tmp11_; gboolean _tmp12_; ValaGLibValue* _tmp13_; const gchar* _tmp14_; gchar* _tmp15_; ValaList* _tmp16_; ValaGLibValue* _tmp30_; ValaCCodeExpression* _tmp31_; ValaCCodeExpression* _tmp32_; ValaGLibValue* _tmp33_; gboolean _tmp34_; ValaGLibValue* _tmp35_; ValaCCodeExpression* _tmp36_; ValaCCodeExpression* _tmp37_; ValaGLibValue* _tmp38_; ValaCCodeExpression* _tmp39_; ValaCCodeExpression* _tmp40_; ValaGLibValue* _tmp41_; ValaCCodeExpression* _tmp42_; ValaCCodeExpression* _tmp43_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_target_value_get_value_type ((ValaTargetValue*) self); _tmp1_ = _tmp0_; _tmp2_ = vala_data_type_copy (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = self->cvalue; _tmp5_ = self->lvalue; _tmp6_ = vala_glib_value_new (_tmp3_, _tmp4_, _tmp5_); _tmp7_ = _tmp6_; _vala_code_node_unref0 (_tmp3_); _result_ = _tmp7_; _tmp8_ = _result_; _tmp9_ = vala_target_value_get_actual_value_type ((ValaTargetValue*) self); _tmp10_ = _tmp9_; vala_target_value_set_actual_value_type ((ValaTargetValue*) _tmp8_, _tmp10_); _tmp11_ = _result_; _tmp12_ = self->non_null; _tmp11_->non_null = _tmp12_; _tmp13_ = _result_; _tmp14_ = self->ctype; _tmp15_ = g_strdup (_tmp14_); _g_free0 (_tmp13_->ctype); _tmp13_->ctype = _tmp15_; _tmp16_ = self->array_length_cvalues; if (_tmp16_ != NULL) { { ValaList* _tmp17_; ValaList* _tmp18_; ValaList* _cexpr_list; ValaList* _tmp19_; gint _tmp20_; gint _tmp21_; gint _cexpr_size; gint _cexpr_index; _tmp17_ = self->array_length_cvalues; _tmp18_ = _vala_iterable_ref0 (_tmp17_); _cexpr_list = _tmp18_; _tmp19_ = _cexpr_list; _tmp20_ = vala_collection_get_size ((ValaCollection*) _tmp19_); _tmp21_ = _tmp20_; _cexpr_size = _tmp21_; _cexpr_index = -1; while (TRUE) { gint _tmp22_; gint _tmp23_; gint _tmp24_; ValaList* _tmp25_; gint _tmp26_; gpointer _tmp27_ = NULL; ValaCCodeExpression* cexpr; ValaGLibValue* _tmp28_; ValaCCodeExpression* _tmp29_; _tmp22_ = _cexpr_index; _cexpr_index = _tmp22_ + 1; _tmp23_ = _cexpr_index; _tmp24_ = _cexpr_size; if (!(_tmp23_ < _tmp24_)) { break; } _tmp25_ = _cexpr_list; _tmp26_ = _cexpr_index; _tmp27_ = vala_list_get (_tmp25_, _tmp26_); cexpr = (ValaCCodeExpression*) _tmp27_; _tmp28_ = _result_; _tmp29_ = cexpr; vala_glib_value_append_array_length_cvalue (_tmp28_, _tmp29_); _vala_ccode_node_unref0 (cexpr); } _vala_iterable_unref0 (_cexpr_list); } } _tmp30_ = _result_; _tmp31_ = self->array_size_cvalue; _tmp32_ = _vala_ccode_node_ref0 (_tmp31_); _vala_ccode_node_unref0 (_tmp30_->array_size_cvalue); _tmp30_->array_size_cvalue = _tmp32_; _tmp33_ = _result_; _tmp34_ = self->array_null_terminated; _tmp33_->array_null_terminated = _tmp34_; _tmp35_ = _result_; _tmp36_ = self->array_length_cexpr; _tmp37_ = _vala_ccode_node_ref0 (_tmp36_); _vala_ccode_node_unref0 (_tmp35_->array_length_cexpr); _tmp35_->array_length_cexpr = _tmp37_; _tmp38_ = _result_; _tmp39_ = self->delegate_target_cvalue; _tmp40_ = _vala_ccode_node_ref0 (_tmp39_); _vala_ccode_node_unref0 (_tmp38_->delegate_target_cvalue); _tmp38_->delegate_target_cvalue = _tmp40_; _tmp41_ = _result_; _tmp42_ = self->delegate_target_destroy_notify_cvalue; _tmp43_ = _vala_ccode_node_ref0 (_tmp42_); _vala_ccode_node_unref0 (_tmp41_->delegate_target_destroy_notify_cvalue); _tmp41_->delegate_target_destroy_notify_cvalue = _tmp43_; result = _result_; return result; } static void vala_glib_value_class_init (ValaGLibValueClass * klass) { vala_glib_value_parent_class = g_type_class_peek_parent (klass); VALA_TARGET_VALUE_CLASS (klass)->finalize = vala_glib_value_finalize; } static void vala_glib_value_instance_init (ValaGLibValue * self) { } static void vala_glib_value_finalize (ValaTargetValue* obj) { ValaGLibValue * self; self = VALA_GLIB_VALUE (obj); _vala_ccode_node_unref0 (self->cvalue); _g_free0 (self->ctype); _vala_iterable_unref0 (self->array_length_cvalues); _vala_ccode_node_unref0 (self->array_size_cvalue); _vala_ccode_node_unref0 (self->array_length_cexpr); _vala_ccode_node_unref0 (self->delegate_target_cvalue); _vala_ccode_node_unref0 (self->delegate_target_destroy_notify_cvalue); VALA_TARGET_VALUE_CLASS (vala_glib_value_parent_class)->finalize (obj); } GType vala_glib_value_get_type (void) { static volatile gsize vala_glib_value_type_id__volatile = 0; if (g_once_init_enter (&vala_glib_value_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (ValaGLibValueClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_glib_value_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGLibValue), 0, (GInstanceInitFunc) vala_glib_value_instance_init, NULL }; GType vala_glib_value_type_id; vala_glib_value_type_id = g_type_register_static (VALA_TYPE_TARGET_VALUE, "ValaGLibValue", &g_define_type_info, 0); g_once_init_leave (&vala_glib_value_type_id__volatile, vala_glib_value_type_id); } return vala_glib_value_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); } static gint _vala_array_length (gpointer array) { int length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; }