/* valaccodedelegatemodule.c generated by valac, the Vala compiler * generated from valaccodedelegatemodule.vala, do not modify */ /* valaccodedelegatemodule.vala * * Copyright (C) 2006-2010 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 #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_TYPE_CCODE_STRUCT_MODULE (vala_ccode_struct_module_get_type ()) #define VALA_CCODE_STRUCT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_STRUCT_MODULE, ValaCCodeStructModule)) #define VALA_CCODE_STRUCT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_STRUCT_MODULE, ValaCCodeStructModuleClass)) #define VALA_IS_CCODE_STRUCT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_STRUCT_MODULE)) #define VALA_IS_CCODE_STRUCT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_STRUCT_MODULE)) #define VALA_CCODE_STRUCT_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_STRUCT_MODULE, ValaCCodeStructModuleClass)) typedef struct _ValaCCodeStructModule ValaCCodeStructModule; typedef struct _ValaCCodeStructModuleClass ValaCCodeStructModuleClass; typedef struct _ValaCCodeStructModulePrivate ValaCCodeStructModulePrivate; #define VALA_TYPE_CCODE_METHOD_MODULE (vala_ccode_method_module_get_type ()) #define VALA_CCODE_METHOD_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_METHOD_MODULE, ValaCCodeMethodModule)) #define VALA_CCODE_METHOD_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_METHOD_MODULE, ValaCCodeMethodModuleClass)) #define VALA_IS_CCODE_METHOD_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_METHOD_MODULE)) #define VALA_IS_CCODE_METHOD_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_METHOD_MODULE)) #define VALA_CCODE_METHOD_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_METHOD_MODULE, ValaCCodeMethodModuleClass)) typedef struct _ValaCCodeMethodModule ValaCCodeMethodModule; typedef struct _ValaCCodeMethodModuleClass ValaCCodeMethodModuleClass; typedef struct _ValaCCodeMethodModulePrivate ValaCCodeMethodModulePrivate; #define VALA_TYPE_CCODE_CONTROL_FLOW_MODULE (vala_ccode_control_flow_module_get_type ()) #define VALA_CCODE_CONTROL_FLOW_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_CONTROL_FLOW_MODULE, ValaCCodeControlFlowModule)) #define VALA_CCODE_CONTROL_FLOW_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_CONTROL_FLOW_MODULE, ValaCCodeControlFlowModuleClass)) #define VALA_IS_CCODE_CONTROL_FLOW_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_CONTROL_FLOW_MODULE)) #define VALA_IS_CCODE_CONTROL_FLOW_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_CONTROL_FLOW_MODULE)) #define VALA_CCODE_CONTROL_FLOW_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_CONTROL_FLOW_MODULE, ValaCCodeControlFlowModuleClass)) typedef struct _ValaCCodeControlFlowModule ValaCCodeControlFlowModule; typedef struct _ValaCCodeControlFlowModuleClass ValaCCodeControlFlowModuleClass; typedef struct _ValaCCodeControlFlowModulePrivate ValaCCodeControlFlowModulePrivate; #define VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE (vala_ccode_member_access_module_get_type ()) #define VALA_CCODE_MEMBER_ACCESS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE, ValaCCodeMemberAccessModule)) #define VALA_CCODE_MEMBER_ACCESS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE, ValaCCodeMemberAccessModuleClass)) #define VALA_IS_CCODE_MEMBER_ACCESS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE)) #define VALA_IS_CCODE_MEMBER_ACCESS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE)) #define VALA_CCODE_MEMBER_ACCESS_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE, ValaCCodeMemberAccessModuleClass)) typedef struct _ValaCCodeMemberAccessModule ValaCCodeMemberAccessModule; typedef struct _ValaCCodeMemberAccessModuleClass ValaCCodeMemberAccessModuleClass; typedef struct _ValaCCodeMemberAccessModulePrivate ValaCCodeMemberAccessModulePrivate; #define VALA_TYPE_CCODE_ASSIGNMENT_MODULE (vala_ccode_assignment_module_get_type ()) #define VALA_CCODE_ASSIGNMENT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ASSIGNMENT_MODULE, ValaCCodeAssignmentModule)) #define VALA_CCODE_ASSIGNMENT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ASSIGNMENT_MODULE, ValaCCodeAssignmentModuleClass)) #define VALA_IS_CCODE_ASSIGNMENT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ASSIGNMENT_MODULE)) #define VALA_IS_CCODE_ASSIGNMENT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ASSIGNMENT_MODULE)) #define VALA_CCODE_ASSIGNMENT_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ASSIGNMENT_MODULE, ValaCCodeAssignmentModuleClass)) typedef struct _ValaCCodeAssignmentModule ValaCCodeAssignmentModule; typedef struct _ValaCCodeAssignmentModuleClass ValaCCodeAssignmentModuleClass; typedef struct _ValaCCodeAssignmentModulePrivate ValaCCodeAssignmentModulePrivate; #define VALA_TYPE_CCODE_METHOD_CALL_MODULE (vala_ccode_method_call_module_get_type ()) #define VALA_CCODE_METHOD_CALL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_METHOD_CALL_MODULE, ValaCCodeMethodCallModule)) #define VALA_CCODE_METHOD_CALL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_METHOD_CALL_MODULE, ValaCCodeMethodCallModuleClass)) #define VALA_IS_CCODE_METHOD_CALL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_METHOD_CALL_MODULE)) #define VALA_IS_CCODE_METHOD_CALL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_METHOD_CALL_MODULE)) #define VALA_CCODE_METHOD_CALL_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_METHOD_CALL_MODULE, ValaCCodeMethodCallModuleClass)) typedef struct _ValaCCodeMethodCallModule ValaCCodeMethodCallModule; typedef struct _ValaCCodeMethodCallModuleClass ValaCCodeMethodCallModuleClass; typedef struct _ValaCCodeMethodCallModulePrivate ValaCCodeMethodCallModulePrivate; #define VALA_TYPE_CCODE_ARRAY_MODULE (vala_ccode_array_module_get_type ()) #define VALA_CCODE_ARRAY_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ARRAY_MODULE, ValaCCodeArrayModule)) #define VALA_CCODE_ARRAY_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ARRAY_MODULE, ValaCCodeArrayModuleClass)) #define VALA_IS_CCODE_ARRAY_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ARRAY_MODULE)) #define VALA_IS_CCODE_ARRAY_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ARRAY_MODULE)) #define VALA_CCODE_ARRAY_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ARRAY_MODULE, ValaCCodeArrayModuleClass)) typedef struct _ValaCCodeArrayModule ValaCCodeArrayModule; typedef struct _ValaCCodeArrayModuleClass ValaCCodeArrayModuleClass; typedef struct _ValaCCodeArrayModulePrivate ValaCCodeArrayModulePrivate; #define VALA_TYPE_CCODE_DELEGATE_MODULE (vala_ccode_delegate_module_get_type ()) #define VALA_CCODE_DELEGATE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_DELEGATE_MODULE, ValaCCodeDelegateModule)) #define VALA_CCODE_DELEGATE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_DELEGATE_MODULE, ValaCCodeDelegateModuleClass)) #define VALA_IS_CCODE_DELEGATE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_DELEGATE_MODULE)) #define VALA_IS_CCODE_DELEGATE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_DELEGATE_MODULE)) #define VALA_CCODE_DELEGATE_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_DELEGATE_MODULE, ValaCCodeDelegateModuleClass)) typedef struct _ValaCCodeDelegateModule ValaCCodeDelegateModule; typedef struct _ValaCCodeDelegateModuleClass ValaCCodeDelegateModuleClass; typedef struct _ValaCCodeDelegateModulePrivate ValaCCodeDelegateModulePrivate; #define _g_free0(var) (var = (g_free (var), NULL)) #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL))) #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL))) #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL))) #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL))) #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))) 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 _ValaCCodeStructModule { ValaCCodeBaseModule parent_instance; ValaCCodeStructModulePrivate * priv; }; struct _ValaCCodeStructModuleClass { ValaCCodeBaseModuleClass parent_class; }; struct _ValaCCodeMethodModule { ValaCCodeStructModule parent_instance; ValaCCodeMethodModulePrivate * priv; }; struct _ValaCCodeMethodModuleClass { ValaCCodeStructModuleClass parent_class; void (*generate_method_result_declaration) (ValaCCodeMethodModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeFunction* cfunc, ValaMap* cparam_map, ValaMap* carg_map); ValaCCodeParameter* (*generate_parameter) (ValaCCodeMethodModule* self, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map); }; struct _ValaCCodeControlFlowModule { ValaCCodeMethodModule parent_instance; ValaCCodeControlFlowModulePrivate * priv; }; struct _ValaCCodeControlFlowModuleClass { ValaCCodeMethodModuleClass parent_class; }; struct _ValaCCodeMemberAccessModule { ValaCCodeControlFlowModule parent_instance; ValaCCodeMemberAccessModulePrivate * priv; }; struct _ValaCCodeMemberAccessModuleClass { ValaCCodeControlFlowModuleClass parent_class; }; struct _ValaCCodeAssignmentModule { ValaCCodeMemberAccessModule parent_instance; ValaCCodeAssignmentModulePrivate * priv; }; struct _ValaCCodeAssignmentModuleClass { ValaCCodeMemberAccessModuleClass parent_class; }; struct _ValaCCodeMethodCallModule { ValaCCodeAssignmentModule parent_instance; ValaCCodeMethodCallModulePrivate * priv; }; struct _ValaCCodeMethodCallModuleClass { ValaCCodeAssignmentModuleClass parent_class; }; struct _ValaCCodeArrayModule { ValaCCodeMethodCallModule parent_instance; ValaCCodeArrayModulePrivate * priv; }; struct _ValaCCodeArrayModuleClass { ValaCCodeMethodCallModuleClass parent_class; }; struct _ValaCCodeDelegateModule { ValaCCodeArrayModule parent_instance; ValaCCodeDelegateModulePrivate * priv; }; struct _ValaCCodeDelegateModuleClass { ValaCCodeArrayModuleClass parent_class; }; 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; }; static gpointer vala_ccode_delegate_module_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; GType vala_ccode_struct_module_get_type (void) G_GNUC_CONST; GType vala_ccode_method_module_get_type (void) G_GNUC_CONST; GType vala_ccode_control_flow_module_get_type (void) G_GNUC_CONST; GType vala_ccode_member_access_module_get_type (void) G_GNUC_CONST; GType vala_ccode_assignment_module_get_type (void) G_GNUC_CONST; GType vala_ccode_method_call_module_get_type (void) G_GNUC_CONST; GType vala_ccode_array_module_get_type (void) G_GNUC_CONST; GType vala_ccode_delegate_module_get_type (void) G_GNUC_CONST; enum { VALA_CCODE_DELEGATE_MODULE_DUMMY_PROPERTY }; static void vala_ccode_delegate_module_real_generate_delegate_declaration (ValaCCodeBaseModule* base, ValaDelegate* d, ValaCCodeFile* decl_space); 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_name (ValaCodeNode* node); void vala_ccode_base_module_generate_type_declaration (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeFile* decl_space); ValaCCodeParameter* vala_ccode_method_module_generate_parameter (ValaCCodeMethodModule* self, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map); gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node); gchar* vala_ccode_base_module_get_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim); gchar* vala_ccode_base_module_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname); gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, const gchar* name); gchar* vala_ccode_base_module_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname); gchar* vala_ccode_base_module_get_ccode_array_length_type (ValaCodeNode* node); gchar* vala_ccode_base_module_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim); static void vala_ccode_delegate_module_real_visit_delegate (ValaCodeVisitor* base, ValaDelegate* d); void vala_ccode_base_module_generate_delegate_declaration (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space); static gchar* vala_ccode_delegate_module_real_get_delegate_target_cname (ValaCCodeBaseModule* base, const gchar* delegate_cname); static ValaCCodeExpression* vala_ccode_delegate_module_real_get_delegate_target_cexpression (ValaCCodeBaseModule* base, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify); ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value); ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value); static ValaCCodeExpression* vala_ccode_delegate_module_real_get_delegate_target_cvalue (ValaCCodeBaseModule* base, ValaTargetValue* value); GType vala_glib_value_get_type (void) G_GNUC_CONST; static ValaCCodeExpression* vala_ccode_delegate_module_real_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* base, ValaTargetValue* value); static gchar* vala_ccode_delegate_module_real_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* base, const gchar* delegate_cname); static ValaCCodeExpression* vala_ccode_delegate_module_real_get_implicit_cast_expression (ValaCCodeBaseModule* base, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node); static gchar* vala_ccode_delegate_module_generate_delegate_wrapper (ValaCCodeDelegateModule* self, ValaMethod* m, ValaDelegateType* dt, ValaCodeNode* node); ValaCCodeExpression* vala_ccode_base_module_get_implicit_cast_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node); gchar* vala_ccode_base_module_get_dynamic_signal_cname (ValaCCodeBaseModule* self, ValaDynamicSignal* node); 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); void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func); gint vala_ccode_base_module_get_param_pos (ValaCCodeBaseModule* self, gdouble param_pos, gboolean ellipsis); gdouble vala_ccode_base_module_get_ccode_instance_pos (ValaCodeNode* node); gdouble vala_ccode_base_module_get_ccode_array_length_pos (ValaCodeNode* node); gdouble vala_ccode_base_module_get_ccode_delegate_target_pos (ValaCodeNode* node); gdouble vala_ccode_base_module_get_ccode_pos (ValaParameter* param); gboolean vala_ccode_base_module_get_ccode_array_null_terminated (ValaCodeNode* node); ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self); gint vala_ccode_base_module_get_block_id (ValaCCodeBaseModule* self, ValaBlock* b); ValaBlock* vala_ccode_base_module_get_current_closure_block (ValaCCodeBaseModule* self); ValaDataType* vala_ccode_base_module_get_this_type (ValaCCodeBaseModule* self); gboolean vala_ccode_base_module_is_reference_counting (ValaTypeSymbol* sym); ValaCCodeExpression* vala_ccode_base_module_get_destroy_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup); void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self); static ValaCCodeParameter* vala_ccode_delegate_module_real_generate_parameter (ValaCCodeMethodModule* base, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map); ValaCCodeExpression* vala_ccode_base_module_get_variable_cexpression (ValaCCodeBaseModule* self, const gchar* name); ValaCCodeDelegateModule* vala_ccode_delegate_module_new (void); ValaCCodeDelegateModule* vala_ccode_delegate_module_construct (GType object_type); ValaCCodeArrayModule* vala_ccode_array_module_new (void); ValaCCodeArrayModule* vala_ccode_array_module_construct (GType object_type); static gpointer _vala_code_node_ref0 (gpointer self) { return self ? vala_code_node_ref (self) : NULL; } static void vala_ccode_delegate_module_real_generate_delegate_declaration (ValaCCodeBaseModule* base, ValaDelegate* d, ValaCCodeFile* decl_space) { ValaCCodeDelegateModule * self; ValaCCodeFile* _tmp0_; ValaDelegate* _tmp1_; ValaDelegate* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gboolean _tmp5_ = FALSE; gboolean _tmp6_; ValaDelegate* _tmp7_; ValaDataType* _tmp8_; ValaDataType* _tmp9_; gchar* _tmp10_ = NULL; gchar* return_type_cname; ValaDelegate* _tmp11_; ValaDataType* _tmp12_; ValaDataType* _tmp13_; gboolean _tmp14_ = FALSE; const gchar* _tmp16_; ValaDelegate* _tmp17_; gchar* _tmp18_ = NULL; gchar* _tmp19_; gboolean _tmp20_; ValaDelegate* _tmp26_; gchar* _tmp27_ = NULL; gchar* _tmp28_; ValaCCodeFunctionDeclarator* _tmp29_; ValaCCodeFunctionDeclarator* _tmp30_; ValaCCodeFunctionDeclarator* cfundecl; gboolean _tmp121_ = FALSE; ValaDelegate* _tmp122_; gboolean _tmp123_ = FALSE; gboolean _tmp127_; ValaDelegate* _tmp202_; gboolean _tmp203_; gboolean _tmp204_; ValaDelegate* _tmp208_; ValaList* _tmp209_ = NULL; ValaList* _tmp210_; gint _tmp211_; gint _tmp212_; gboolean _tmp213_; const gchar* _tmp217_; ValaCCodeFunctionDeclarator* _tmp218_; ValaCCodeTypeDefinition* _tmp219_; ValaCCodeTypeDefinition* ctypedef; ValaCCodeTypeDefinition* _tmp220_; ValaDelegate* _tmp221_; gboolean _tmp222_; gboolean _tmp223_; ValaCCodeFile* _tmp224_; ValaCCodeTypeDefinition* _tmp225_; self = (ValaCCodeDelegateModule*) base; g_return_if_fail (d != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = d; _tmp2_ = d; _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); if (_tmp6_) { return; } _tmp7_ = d; _tmp8_ = vala_delegate_get_return_type (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp9_); return_type_cname = _tmp10_; _tmp11_ = d; _tmp12_ = vala_delegate_get_return_type (_tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_data_type_is_real_non_null_struct_type (_tmp13_); if (_tmp14_) { gchar* _tmp15_; _tmp15_ = g_strdup ("void"); _g_free0 (return_type_cname); return_type_cname = _tmp15_; } _tmp16_ = return_type_cname; _tmp17_ = d; _tmp18_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp17_); _tmp19_ = _tmp18_; _tmp20_ = g_strcmp0 (_tmp16_, _tmp19_) == 0; _g_free0 (_tmp19_); if (_tmp20_) { gchar* _tmp21_; _tmp21_ = g_strdup ("GCallback"); _g_free0 (return_type_cname); return_type_cname = _tmp21_; } else { ValaDelegate* _tmp22_; ValaDataType* _tmp23_; ValaDataType* _tmp24_; ValaCCodeFile* _tmp25_; _tmp22_ = d; _tmp23_ = vala_delegate_get_return_type (_tmp22_); _tmp24_ = _tmp23_; _tmp25_ = decl_space; vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp24_, _tmp25_); } _tmp26_ = d; _tmp27_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp26_); _tmp28_ = _tmp27_; _tmp29_ = vala_ccode_function_declarator_new (_tmp28_); _tmp30_ = _tmp29_; _g_free0 (_tmp28_); cfundecl = _tmp30_; { ValaDelegate* _tmp31_; ValaList* _tmp32_ = NULL; ValaList* _param_list; ValaList* _tmp33_; gint _tmp34_; gint _tmp35_; gint _param_size; gint _param_index; _tmp31_ = d; _tmp32_ = vala_delegate_get_parameters (_tmp31_); _param_list = _tmp32_; _tmp33_ = _param_list; _tmp34_ = vala_collection_get_size ((ValaCollection*) _tmp33_); _tmp35_ = _tmp34_; _param_size = _tmp35_; _param_index = -1; while (TRUE) { gint _tmp36_; gint _tmp37_; gint _tmp38_; ValaList* _tmp39_; gint _tmp40_; gpointer _tmp41_ = NULL; ValaParameter* param; ValaParameter* _tmp42_; ValaCCodeFile* _tmp43_; GHashFunc _tmp44_; GEqualFunc _tmp45_; GEqualFunc _tmp46_; ValaHashMap* _tmp47_; ValaHashMap* _tmp48_; ValaCCodeParameter* _tmp49_ = NULL; ValaCCodeParameter* _tmp50_; ValaCCodeParameter* cparam; ValaCCodeFunctionDeclarator* _tmp51_; ValaCCodeParameter* _tmp52_; gboolean _tmp53_ = FALSE; ValaParameter* _tmp54_; gboolean _tmp55_ = FALSE; gboolean _tmp59_; ValaParameter* _tmp84_; ValaDataType* _tmp85_; ValaDataType* _tmp86_; _tmp36_ = _param_index; _param_index = _tmp36_ + 1; _tmp37_ = _param_index; _tmp38_ = _param_size; if (!(_tmp37_ < _tmp38_)) { break; } _tmp39_ = _param_list; _tmp40_ = _param_index; _tmp41_ = vala_list_get (_tmp39_, _tmp40_); param = (ValaParameter*) _tmp41_; _tmp42_ = param; _tmp43_ = decl_space; _tmp44_ = g_direct_hash; _tmp45_ = g_direct_equal; _tmp46_ = g_direct_equal; _tmp47_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp44_, _tmp45_, _tmp46_); _tmp48_ = _tmp47_; _tmp49_ = vala_ccode_method_module_generate_parameter ((ValaCCodeMethodModule*) self, _tmp42_, _tmp43_, (ValaMap*) _tmp48_, NULL); _tmp50_ = _tmp49_; _vala_map_unref0 (_tmp48_); cparam = _tmp50_; _tmp51_ = cfundecl; _tmp52_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp51_, _tmp52_); _tmp54_ = param; _tmp55_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp54_); if (_tmp55_) { ValaParameter* _tmp56_; ValaDataType* _tmp57_; ValaDataType* _tmp58_; _tmp56_ = param; _tmp57_ = vala_variable_get_variable_type ((ValaVariable*) _tmp56_); _tmp58_ = _tmp57_; _tmp53_ = VALA_IS_ARRAY_TYPE (_tmp58_); } else { _tmp53_ = FALSE; } _tmp59_ = _tmp53_; if (_tmp59_) { ValaParameter* _tmp60_; ValaDataType* _tmp61_; ValaDataType* _tmp62_; ValaArrayType* _tmp63_; ValaArrayType* array_type; gchar* _tmp64_; gchar* length_ctype; ValaParameter* _tmp65_; ValaParameterDirection _tmp66_; ValaParameterDirection _tmp67_; _tmp60_ = param; _tmp61_ = vala_variable_get_variable_type ((ValaVariable*) _tmp60_); _tmp62_ = _tmp61_; _tmp63_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp62_)); array_type = _tmp63_; _tmp64_ = g_strdup ("int"); length_ctype = _tmp64_; _tmp65_ = param; _tmp66_ = vala_parameter_get_direction (_tmp65_); _tmp67_ = _tmp66_; if (_tmp67_ != VALA_PARAMETER_DIRECTION_IN) { gchar* _tmp68_; _tmp68_ = g_strdup ("int*"); _g_free0 (length_ctype); length_ctype = _tmp68_; } { gint dim; dim = 1; { gboolean _tmp69_; _tmp69_ = TRUE; while (TRUE) { gboolean _tmp70_; gint _tmp72_; ValaArrayType* _tmp73_; gint _tmp74_; gint _tmp75_; ValaParameter* _tmp76_; gint _tmp77_; gchar* _tmp78_ = NULL; gchar* _tmp79_; const gchar* _tmp80_; ValaCCodeParameter* _tmp81_; ValaCCodeFunctionDeclarator* _tmp82_; ValaCCodeParameter* _tmp83_; _tmp70_ = _tmp69_; if (!_tmp70_) { gint _tmp71_; _tmp71_ = dim; dim = _tmp71_ + 1; } _tmp69_ = FALSE; _tmp72_ = dim; _tmp73_ = array_type; _tmp74_ = vala_array_type_get_rank (_tmp73_); _tmp75_ = _tmp74_; if (!(_tmp72_ <= _tmp75_)) { break; } _tmp76_ = param; _tmp77_ = dim; _tmp78_ = vala_ccode_base_module_get_parameter_array_length_cname ((ValaCCodeBaseModule*) self, _tmp76_, _tmp77_); _tmp79_ = _tmp78_; _tmp80_ = length_ctype; _tmp81_ = vala_ccode_parameter_new (_tmp79_, _tmp80_); _vala_ccode_node_unref0 (cparam); cparam = _tmp81_; _g_free0 (_tmp79_); _tmp82_ = cfundecl; _tmp83_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp82_, _tmp83_); } } } _g_free0 (length_ctype); _vala_code_node_unref0 (array_type); } _tmp84_ = param; _tmp85_ = vala_variable_get_variable_type ((ValaVariable*) _tmp84_); _tmp86_ = _tmp85_; if (VALA_IS_DELEGATE_TYPE (_tmp86_)) { ValaParameter* _tmp87_; ValaDataType* _tmp88_; ValaDataType* _tmp89_; ValaDelegateType* _tmp90_; ValaDelegateType* deleg_type; ValaDelegateType* _tmp91_; ValaDelegate* _tmp92_; ValaDelegate* _tmp93_; ValaDelegate* _tmp94_; ValaDelegate* param_d; ValaDelegate* _tmp95_; gboolean _tmp96_; gboolean _tmp97_; _tmp87_ = param; _tmp88_ = vala_variable_get_variable_type ((ValaVariable*) _tmp87_); _tmp89_ = _tmp88_; _tmp90_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp89_)); deleg_type = _tmp90_; _tmp91_ = deleg_type; _tmp92_ = vala_delegate_type_get_delegate_symbol (_tmp91_); _tmp93_ = _tmp92_; _tmp94_ = _vala_code_node_ref0 (_tmp93_); param_d = _tmp94_; _tmp95_ = param_d; _tmp96_ = vala_delegate_get_has_target (_tmp95_); _tmp97_ = _tmp96_; if (_tmp97_) { ValaParameter* _tmp98_; const gchar* _tmp99_; const gchar* _tmp100_; gchar* _tmp101_ = NULL; gchar* _tmp102_; gchar* _tmp103_ = NULL; gchar* _tmp104_; ValaCCodeParameter* _tmp105_; ValaCCodeFunctionDeclarator* _tmp106_; ValaCCodeParameter* _tmp107_; ValaDelegateType* _tmp108_; gboolean _tmp109_; gboolean _tmp110_; _tmp98_ = param; _tmp99_ = vala_symbol_get_name ((ValaSymbol*) _tmp98_); _tmp100_ = _tmp99_; _tmp101_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp100_); _tmp102_ = _tmp101_; _tmp103_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp102_); _tmp104_ = _tmp103_; _tmp105_ = vala_ccode_parameter_new (_tmp104_, "void*"); _vala_ccode_node_unref0 (cparam); cparam = _tmp105_; _g_free0 (_tmp104_); _g_free0 (_tmp102_); _tmp106_ = cfundecl; _tmp107_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp106_, _tmp107_); _tmp108_ = deleg_type; _tmp109_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp108_); _tmp110_ = _tmp109_; if (_tmp110_) { ValaParameter* _tmp111_; const gchar* _tmp112_; const gchar* _tmp113_; gchar* _tmp114_ = NULL; gchar* _tmp115_; gchar* _tmp116_ = NULL; gchar* _tmp117_; ValaCCodeParameter* _tmp118_; ValaCCodeFunctionDeclarator* _tmp119_; ValaCCodeParameter* _tmp120_; _tmp111_ = param; _tmp112_ = vala_symbol_get_name ((ValaSymbol*) _tmp111_); _tmp113_ = _tmp112_; _tmp114_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp113_); _tmp115_ = _tmp114_; _tmp116_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp115_); _tmp117_ = _tmp116_; _tmp118_ = vala_ccode_parameter_new (_tmp117_, "GDestroyNotify*"); _vala_ccode_node_unref0 (cparam); cparam = _tmp118_; _g_free0 (_tmp117_); _g_free0 (_tmp115_); _tmp119_ = cfundecl; _tmp120_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp119_, _tmp120_); } } _vala_code_node_unref0 (param_d); _vala_code_node_unref0 (deleg_type); } _vala_ccode_node_unref0 (cparam); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp122_ = d; _tmp123_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp122_); if (_tmp123_) { ValaDelegate* _tmp124_; ValaDataType* _tmp125_; ValaDataType* _tmp126_; _tmp124_ = d; _tmp125_ = vala_delegate_get_return_type (_tmp124_); _tmp126_ = _tmp125_; _tmp121_ = VALA_IS_ARRAY_TYPE (_tmp126_); } else { _tmp121_ = FALSE; } _tmp127_ = _tmp121_; if (_tmp127_) { ValaDelegate* _tmp128_; ValaDataType* _tmp129_; ValaDataType* _tmp130_; ValaArrayType* _tmp131_; ValaArrayType* array_type; gchar* _tmp132_ = NULL; ValaDelegate* _tmp133_; gchar* _tmp134_ = NULL; gchar* _tmp135_; gboolean _tmp136_; const gchar* _tmp140_; gchar* _tmp141_; gchar* array_length_type; const gchar* _tmp142_; gchar* _tmp143_; _tmp128_ = d; _tmp129_ = vala_delegate_get_return_type (_tmp128_); _tmp130_ = _tmp129_; _tmp131_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp130_)); array_type = _tmp131_; _tmp133_ = d; _tmp134_ = vala_ccode_base_module_get_ccode_array_length_type ((ValaCodeNode*) _tmp133_); _tmp135_ = _tmp134_; _tmp136_ = _tmp135_ != NULL; _g_free0 (_tmp135_); if (_tmp136_) { ValaDelegate* _tmp137_; gchar* _tmp138_ = NULL; _tmp137_ = d; _tmp138_ = vala_ccode_base_module_get_ccode_array_length_type ((ValaCodeNode*) _tmp137_); _g_free0 (_tmp132_); _tmp132_ = _tmp138_; } else { gchar* _tmp139_; _tmp139_ = g_strdup ("int"); _g_free0 (_tmp132_); _tmp132_ = _tmp139_; } _tmp140_ = _tmp132_; _tmp141_ = g_strdup (_tmp140_); array_length_type = _tmp141_; _tmp142_ = array_length_type; _tmp143_ = g_strconcat (_tmp142_, "*", NULL); _g_free0 (array_length_type); array_length_type = _tmp143_; { gint dim; dim = 1; { gboolean _tmp144_; _tmp144_ = TRUE; while (TRUE) { gboolean _tmp145_; gint _tmp147_; ValaArrayType* _tmp148_; gint _tmp149_; gint _tmp150_; gint _tmp151_; gchar* _tmp152_ = NULL; gchar* _tmp153_; const gchar* _tmp154_; ValaCCodeParameter* _tmp155_; ValaCCodeParameter* _tmp156_; ValaCCodeParameter* cparam; ValaCCodeFunctionDeclarator* _tmp157_; ValaCCodeParameter* _tmp158_; _tmp145_ = _tmp144_; if (!_tmp145_) { gint _tmp146_; _tmp146_ = dim; dim = _tmp146_ + 1; } _tmp144_ = FALSE; _tmp147_ = dim; _tmp148_ = array_type; _tmp149_ = vala_array_type_get_rank (_tmp148_); _tmp150_ = _tmp149_; if (!(_tmp147_ <= _tmp150_)) { break; } _tmp151_ = dim; _tmp152_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp151_); _tmp153_ = _tmp152_; _tmp154_ = array_length_type; _tmp155_ = vala_ccode_parameter_new (_tmp153_, _tmp154_); _tmp156_ = _tmp155_; _g_free0 (_tmp153_); cparam = _tmp156_; _tmp157_ = cfundecl; _tmp158_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp157_, _tmp158_); _vala_ccode_node_unref0 (cparam); } } } _g_free0 (array_length_type); _g_free0 (_tmp132_); _vala_code_node_unref0 (array_type); } else { ValaDelegate* _tmp159_; ValaDataType* _tmp160_; ValaDataType* _tmp161_; _tmp159_ = d; _tmp160_ = vala_delegate_get_return_type (_tmp159_); _tmp161_ = _tmp160_; if (VALA_IS_DELEGATE_TYPE (_tmp161_)) { ValaDelegate* _tmp162_; ValaDataType* _tmp163_; ValaDataType* _tmp164_; ValaDelegateType* _tmp165_; ValaDelegateType* deleg_type; ValaDelegateType* _tmp166_; ValaDelegate* _tmp167_; ValaDelegate* _tmp168_; ValaDelegate* _tmp169_; ValaDelegate* result_d; ValaDelegate* _tmp170_; gboolean _tmp171_; gboolean _tmp172_; _tmp162_ = d; _tmp163_ = vala_delegate_get_return_type (_tmp162_); _tmp164_ = _tmp163_; _tmp165_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp164_)); deleg_type = _tmp165_; _tmp166_ = deleg_type; _tmp167_ = vala_delegate_type_get_delegate_symbol (_tmp166_); _tmp168_ = _tmp167_; _tmp169_ = _vala_code_node_ref0 (_tmp168_); result_d = _tmp169_; _tmp170_ = result_d; _tmp171_ = vala_delegate_get_has_target (_tmp170_); _tmp172_ = _tmp171_; if (_tmp172_) { gchar* _tmp173_ = NULL; gchar* _tmp174_; ValaCCodeParameter* _tmp175_; ValaCCodeParameter* _tmp176_; ValaCCodeParameter* cparam; ValaCCodeFunctionDeclarator* _tmp177_; ValaCCodeParameter* _tmp178_; ValaDelegateType* _tmp179_; gboolean _tmp180_; gboolean _tmp181_; _tmp173_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result"); _tmp174_ = _tmp173_; _tmp175_ = vala_ccode_parameter_new (_tmp174_, "void**"); _tmp176_ = _tmp175_; _g_free0 (_tmp174_); cparam = _tmp176_; _tmp177_ = cfundecl; _tmp178_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp177_, _tmp178_); _tmp179_ = deleg_type; _tmp180_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp179_); _tmp181_ = _tmp180_; if (_tmp181_) { gchar* _tmp182_ = NULL; gchar* _tmp183_; ValaCCodeParameter* _tmp184_; ValaCCodeFunctionDeclarator* _tmp185_; ValaCCodeParameter* _tmp186_; _tmp182_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, "result"); _tmp183_ = _tmp182_; _tmp184_ = vala_ccode_parameter_new (_tmp183_, "GDestroyNotify*"); _vala_ccode_node_unref0 (cparam); cparam = _tmp184_; _g_free0 (_tmp183_); _tmp185_ = cfundecl; _tmp186_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp185_, _tmp186_); } _vala_ccode_node_unref0 (cparam); } _vala_code_node_unref0 (result_d); _vala_code_node_unref0 (deleg_type); } else { ValaDelegate* _tmp187_; ValaDataType* _tmp188_; ValaDataType* _tmp189_; gboolean _tmp190_ = FALSE; _tmp187_ = d; _tmp188_ = vala_delegate_get_return_type (_tmp187_); _tmp189_ = _tmp188_; _tmp190_ = vala_data_type_is_real_non_null_struct_type (_tmp189_); if (_tmp190_) { ValaDelegate* _tmp191_; ValaDataType* _tmp192_; ValaDataType* _tmp193_; gchar* _tmp194_ = NULL; gchar* _tmp195_; gchar* _tmp196_ = NULL; gchar* _tmp197_; ValaCCodeParameter* _tmp198_; ValaCCodeParameter* _tmp199_; ValaCCodeParameter* cparam; ValaCCodeFunctionDeclarator* _tmp200_; ValaCCodeParameter* _tmp201_; _tmp191_ = d; _tmp192_ = vala_delegate_get_return_type (_tmp191_); _tmp193_ = _tmp192_; _tmp194_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp193_); _tmp195_ = _tmp194_; _tmp196_ = g_strdup_printf ("%s*", _tmp195_); _tmp197_ = _tmp196_; _tmp198_ = vala_ccode_parameter_new ("result", _tmp197_); _tmp199_ = _tmp198_; _g_free0 (_tmp197_); _g_free0 (_tmp195_); cparam = _tmp199_; _tmp200_ = cfundecl; _tmp201_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp200_, _tmp201_); _vala_ccode_node_unref0 (cparam); } } } _tmp202_ = d; _tmp203_ = vala_delegate_get_has_target (_tmp202_); _tmp204_ = _tmp203_; if (_tmp204_) { ValaCCodeParameter* _tmp205_; ValaCCodeParameter* cparam; ValaCCodeFunctionDeclarator* _tmp206_; ValaCCodeParameter* _tmp207_; _tmp205_ = vala_ccode_parameter_new ("user_data", "void*"); cparam = _tmp205_; _tmp206_ = cfundecl; _tmp207_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp206_, _tmp207_); _vala_ccode_node_unref0 (cparam); } _tmp208_ = d; _tmp209_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp208_); _tmp210_ = _tmp209_; _tmp211_ = vala_collection_get_size ((ValaCollection*) _tmp210_); _tmp212_ = _tmp211_; _tmp213_ = _tmp212_ > 0; _vala_iterable_unref0 (_tmp210_); if (_tmp213_) { ValaCCodeParameter* _tmp214_; ValaCCodeParameter* cparam; ValaCCodeFunctionDeclarator* _tmp215_; ValaCCodeParameter* _tmp216_; _tmp214_ = vala_ccode_parameter_new ("error", "GError**"); cparam = _tmp214_; _tmp215_ = cfundecl; _tmp216_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp215_, _tmp216_); _vala_ccode_node_unref0 (cparam); } _tmp217_ = return_type_cname; _tmp218_ = cfundecl; _tmp219_ = vala_ccode_type_definition_new (_tmp217_, (ValaCCodeDeclarator*) _tmp218_); ctypedef = _tmp219_; _tmp220_ = ctypedef; _tmp221_ = d; _tmp222_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp221_); _tmp223_ = _tmp222_; vala_ccode_type_definition_set_deprecated (_tmp220_, _tmp223_); _tmp224_ = decl_space; _tmp225_ = ctypedef; vala_ccode_file_add_type_definition (_tmp224_, (ValaCCodeNode*) _tmp225_); _vala_ccode_node_unref0 (ctypedef); _vala_ccode_node_unref0 (cfundecl); _g_free0 (return_type_cname); } static void vala_ccode_delegate_module_real_visit_delegate (ValaCodeVisitor* base, ValaDelegate* d) { ValaCCodeDelegateModule * self; ValaDelegate* _tmp0_; ValaDelegate* _tmp1_; ValaCCodeFile* _tmp2_; ValaDelegate* _tmp3_; gboolean _tmp4_ = FALSE; ValaDelegate* _tmp7_; gboolean _tmp8_ = FALSE; self = (ValaCCodeDelegateModule*) base; g_return_if_fail (d != NULL); _tmp0_ = d; vala_code_node_accept_children ((ValaCodeNode*) _tmp0_, (ValaCodeVisitor*) self); _tmp1_ = d; _tmp2_ = ((ValaCCodeBaseModule*) self)->cfile; vala_ccode_base_module_generate_delegate_declaration ((ValaCCodeBaseModule*) self, _tmp1_, _tmp2_); _tmp3_ = d; _tmp4_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp3_); if (!_tmp4_) { ValaDelegate* _tmp5_; ValaCCodeFile* _tmp6_; _tmp5_ = d; _tmp6_ = ((ValaCCodeBaseModule*) self)->header_file; vala_ccode_base_module_generate_delegate_declaration ((ValaCCodeBaseModule*) self, _tmp5_, _tmp6_); } _tmp7_ = d; _tmp8_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp7_); if (!_tmp8_) { ValaDelegate* _tmp9_; ValaCCodeFile* _tmp10_; _tmp9_ = d; _tmp10_ = ((ValaCCodeBaseModule*) self)->internal_header_file; vala_ccode_base_module_generate_delegate_declaration ((ValaCCodeBaseModule*) self, _tmp9_, _tmp10_); } } static gchar* vala_ccode_delegate_module_real_get_delegate_target_cname (ValaCCodeBaseModule* base, const gchar* delegate_cname) { ValaCCodeDelegateModule * self; gchar* result = NULL; const gchar* _tmp0_; gchar* _tmp1_ = NULL; self = (ValaCCodeDelegateModule*) base; g_return_val_if_fail (delegate_cname != NULL, NULL); _tmp0_ = delegate_cname; _tmp1_ = g_strdup_printf ("%s_target", _tmp0_); result = _tmp1_; return result; } static ValaCCodeExpression* vala_ccode_delegate_module_real_get_delegate_target_cexpression (ValaCCodeBaseModule* base, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify) { ValaCCodeDelegateModule * self; ValaCCodeExpression* _vala_delegate_target_destroy_notify = NULL; ValaCCodeExpression* result = NULL; ValaExpression* _tmp0_; ValaTargetValue* _tmp1_; ValaTargetValue* _tmp2_; ValaCCodeExpression* _tmp3_ = NULL; ValaExpression* _tmp4_; ValaTargetValue* _tmp5_; ValaTargetValue* _tmp6_; ValaCCodeExpression* _tmp7_ = NULL; self = (ValaCCodeDelegateModule*) base; g_return_val_if_fail (delegate_expr != NULL, NULL); _tmp0_ = delegate_expr; _tmp1_ = vala_expression_get_target_value (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue ((ValaCCodeBaseModule*) self, _tmp2_); _vala_ccode_node_unref0 (_vala_delegate_target_destroy_notify); _vala_delegate_target_destroy_notify = _tmp3_; _tmp4_ = delegate_expr; _tmp5_ = vala_expression_get_target_value (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_ccode_base_module_get_delegate_target_cvalue ((ValaCCodeBaseModule*) self, _tmp6_); result = _tmp7_; 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; } static gpointer _vala_ccode_node_ref0 (gpointer self) { return self ? vala_ccode_node_ref (self) : NULL; } static ValaCCodeExpression* vala_ccode_delegate_module_real_get_delegate_target_cvalue (ValaCCodeBaseModule* base, ValaTargetValue* value) { ValaCCodeDelegateModule * self; ValaCCodeExpression* result = NULL; ValaTargetValue* _tmp0_; ValaCCodeExpression* _tmp1_; ValaCCodeExpression* _tmp2_; self = (ValaCCodeDelegateModule*) base; g_return_val_if_fail (value != NULL, NULL); _tmp0_ = value; _tmp1_ = VALA_GLIB_VALUE (_tmp0_)->delegate_target_cvalue; _tmp2_ = _vala_ccode_node_ref0 (_tmp1_); result = _tmp2_; return result; } static ValaCCodeExpression* vala_ccode_delegate_module_real_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* base, ValaTargetValue* value) { ValaCCodeDelegateModule * self; ValaCCodeExpression* result = NULL; ValaTargetValue* _tmp0_; ValaCCodeExpression* _tmp1_; ValaCCodeExpression* _tmp2_; self = (ValaCCodeDelegateModule*) base; g_return_val_if_fail (value != NULL, NULL); _tmp0_ = value; _tmp1_ = VALA_GLIB_VALUE (_tmp0_)->delegate_target_destroy_notify_cvalue; _tmp2_ = _vala_ccode_node_ref0 (_tmp1_); result = _tmp2_; return result; } static gchar* vala_ccode_delegate_module_real_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* base, const gchar* delegate_cname) { ValaCCodeDelegateModule * self; gchar* result = NULL; const gchar* _tmp0_; gchar* _tmp1_ = NULL; self = (ValaCCodeDelegateModule*) base; g_return_val_if_fail (delegate_cname != NULL, NULL); _tmp0_ = delegate_cname; _tmp1_ = g_strdup_printf ("%s_target_destroy_notify", _tmp0_); result = _tmp1_; return result; } static ValaCCodeExpression* vala_ccode_delegate_module_real_get_implicit_cast_expression (ValaCCodeBaseModule* base, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node) { ValaCCodeDelegateModule * self; ValaCCodeExpression* result = NULL; gboolean _tmp0_ = FALSE; ValaDataType* _tmp1_; gboolean _tmp3_; ValaCCodeExpression* _tmp33_; ValaDataType* _tmp34_; ValaDataType* _tmp35_; ValaCodeNode* _tmp36_; ValaCCodeExpression* _tmp37_ = NULL; self = (ValaCCodeDelegateModule*) base; g_return_val_if_fail (source_cexpr != NULL, NULL); _tmp1_ = target_type; if (VALA_IS_DELEGATE_TYPE (_tmp1_)) { ValaDataType* _tmp2_; _tmp2_ = expression_type; _tmp0_ = VALA_IS_METHOD_TYPE (_tmp2_); } else { _tmp0_ = FALSE; } _tmp3_ = _tmp0_; if (_tmp3_) { ValaDataType* _tmp4_; ValaDelegateType* _tmp5_; ValaDelegateType* dt; ValaDataType* _tmp6_; ValaMethodType* _tmp7_; ValaMethodType* mt; ValaMethodType* _tmp8_; ValaMethod* _tmp9_; ValaMethod* _tmp10_; ValaMethod* _tmp11_; ValaMethod* method; ValaMethod* _tmp12_; ValaMethod* _tmp13_; ValaMethod* _tmp14_; ValaMethod* _tmp26_; ValaDelegateType* _tmp27_; ValaCodeNode* _tmp28_; gchar* _tmp29_ = NULL; gchar* _tmp30_; ValaCCodeIdentifier* _tmp31_; ValaCCodeExpression* _tmp32_; _tmp4_ = target_type; _tmp5_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp4_)); dt = _tmp5_; _tmp6_ = expression_type; _tmp7_ = _vala_code_node_ref0 (VALA_METHOD_TYPE (_tmp6_)); mt = _tmp7_; _tmp8_ = mt; _tmp9_ = vala_method_type_get_method_symbol (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = _vala_code_node_ref0 (_tmp10_); method = _tmp11_; _tmp12_ = method; _tmp13_ = vala_method_get_base_method (_tmp12_); _tmp14_ = _tmp13_; if (_tmp14_ != NULL) { ValaMethod* _tmp15_; ValaMethod* _tmp16_; ValaMethod* _tmp17_; ValaMethod* _tmp18_; _tmp15_ = method; _tmp16_ = vala_method_get_base_method (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = _vala_code_node_ref0 (_tmp17_); _vala_code_node_unref0 (method); method = _tmp18_; } else { ValaMethod* _tmp19_; ValaMethod* _tmp20_; ValaMethod* _tmp21_; _tmp19_ = method; _tmp20_ = vala_method_get_base_interface_method (_tmp19_); _tmp21_ = _tmp20_; if (_tmp21_ != NULL) { ValaMethod* _tmp22_; ValaMethod* _tmp23_; ValaMethod* _tmp24_; ValaMethod* _tmp25_; _tmp22_ = method; _tmp23_ = vala_method_get_base_interface_method (_tmp22_); _tmp24_ = _tmp23_; _tmp25_ = _vala_code_node_ref0 (_tmp24_); _vala_code_node_unref0 (method); method = _tmp25_; } } _tmp26_ = method; _tmp27_ = dt; _tmp28_ = node; _tmp29_ = vala_ccode_delegate_module_generate_delegate_wrapper (self, _tmp26_, _tmp27_, _tmp28_); _tmp30_ = _tmp29_; _tmp31_ = vala_ccode_identifier_new (_tmp30_); _tmp32_ = (ValaCCodeExpression*) _tmp31_; _g_free0 (_tmp30_); result = _tmp32_; _vala_code_node_unref0 (method); _vala_code_node_unref0 (mt); _vala_code_node_unref0 (dt); return result; } _tmp33_ = source_cexpr; _tmp34_ = expression_type; _tmp35_ = target_type; _tmp36_ = node; _tmp37_ = VALA_CCODE_BASE_MODULE_CLASS (vala_ccode_delegate_module_parent_class)->get_implicit_cast_expression ((ValaCCodeBaseModule*) VALA_CCODE_ARRAY_MODULE (self), _tmp33_, _tmp34_, _tmp35_, _tmp36_); result = _tmp37_; return result; } static gpointer _vala_iterable_ref0 (gpointer self) { return self ? vala_iterable_ref (self) : NULL; } static gchar* vala_ccode_delegate_module_generate_delegate_wrapper (ValaCCodeDelegateModule* self, ValaMethod* m, ValaDelegateType* dt, ValaCodeNode* node) { gchar* result = NULL; ValaDelegateType* _tmp0_; ValaDelegate* _tmp1_; ValaDelegate* _tmp2_; ValaDelegate* _tmp3_; ValaDelegate* d; gchar* delegate_name = NULL; ValaDelegate* _tmp4_; ValaSymbol* _tmp5_; ValaSymbol* _tmp6_; ValaSignal* _tmp7_; ValaSignal* sig; ValaSignal* _tmp8_; ValaDynamicSignal* _tmp9_; ValaDynamicSignal* dynamic_sig; ValaDynamicSignal* _tmp10_; ValaMethod* _tmp27_; gchar* _tmp28_ = NULL; gchar* _tmp29_; const gchar* _tmp30_; gchar* _tmp31_ = NULL; gchar* _tmp32_; gchar* wrapper_name; const gchar* _tmp33_; gboolean _tmp34_ = FALSE; ValaDelegate* _tmp35_; ValaDataType* _tmp36_; ValaDataType* _tmp37_; gchar* _tmp38_ = NULL; gchar* return_type_cname; ValaDelegate* _tmp39_; ValaDataType* _tmp40_; ValaDataType* _tmp41_; gboolean _tmp42_ = FALSE; const gchar* _tmp44_; const gchar* _tmp45_; ValaCCodeFunction* _tmp46_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp47_; ValaCCodeFunction* _tmp48_; GHashFunc _tmp49_; GEqualFunc _tmp50_; GEqualFunc _tmp51_; ValaHashMap* _tmp52_; ValaHashMap* cparam_map; ValaDelegate* _tmp53_; gboolean _tmp54_; gboolean _tmp55_; ValaDelegate* _tmp62_; ValaDataType* _tmp63_; ValaDataType* _tmp64_; ValaDelegate* _tmp74_; ValaList* _tmp75_ = NULL; ValaList* d_params; gboolean _tmp112_ = FALSE; ValaDelegate* _tmp113_; gboolean _tmp114_ = FALSE; gboolean _tmp118_; ValaMethod* _tmp202_; ValaList* _tmp203_ = NULL; ValaList* _tmp204_; gint _tmp205_; gint _tmp206_; gboolean _tmp207_; gint last_pos; gint min_pos = 0; GHashFunc _tmp238_; GEqualFunc _tmp239_; GEqualFunc _tmp240_; ValaHashMap* _tmp241_; ValaHashMap* carg_map; gint i; gboolean _tmp242_ = FALSE; ValaMethod* _tmp243_; ValaMemberBinding _tmp244_; ValaMemberBinding _tmp245_; gboolean _tmp249_; gboolean first; gboolean _tmp437_ = FALSE; ValaMethod* _tmp438_; gboolean _tmp439_ = FALSE; gboolean _tmp443_; ValaMethod* _tmp509_; ValaList* _tmp510_ = NULL; ValaList* _tmp511_; gint _tmp512_; gint _tmp513_; gboolean _tmp514_; ValaMethod* _tmp519_; gchar* _tmp520_ = NULL; gchar* _tmp521_; ValaCCodeIdentifier* _tmp522_; ValaCCodeIdentifier* _tmp523_; ValaCCodeFunctionCall* _tmp524_; ValaCCodeFunctionCall* _tmp525_; ValaCCodeFunctionCall* ccall; ValaMethod* _tmp552_; gboolean _tmp553_; gboolean _tmp554_; gboolean _tmp561_ = FALSE; ValaMethod* _tmp562_; ValaDataType* _tmp563_; ValaDataType* _tmp564_; gboolean _tmp569_; gboolean _tmp579_ = FALSE; gboolean _tmp580_ = FALSE; ValaDelegate* _tmp581_; gboolean _tmp582_; gboolean _tmp583_; gboolean _tmp587_; gboolean _tmp591_; gboolean _tmp640_ = FALSE; ValaMethod* _tmp641_; ValaDataType* _tmp642_; ValaDataType* _tmp643_; gboolean _tmp648_; ValaCCodeFile* _tmp653_; ValaCCodeFunction* _tmp654_; ValaCCodeFile* _tmp655_; ValaCCodeFunction* _tmp656_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (m != NULL, NULL); g_return_val_if_fail (dt != NULL, NULL); _tmp0_ = dt; _tmp1_ = vala_delegate_type_get_delegate_symbol (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (_tmp2_); d = _tmp3_; _tmp4_ = d; _tmp5_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp4_); _tmp6_ = _tmp5_; _tmp7_ = _vala_code_node_ref0 (VALA_IS_SIGNAL (_tmp6_) ? ((ValaSignal*) _tmp6_) : NULL); sig = _tmp7_; _tmp8_ = sig; _tmp9_ = _vala_code_node_ref0 (VALA_IS_DYNAMIC_SIGNAL (_tmp8_) ? ((ValaDynamicSignal*) _tmp8_) : NULL); dynamic_sig = _tmp9_; _tmp10_ = dynamic_sig; if (_tmp10_ != NULL) { ValaDynamicSignal* _tmp11_; gchar* _tmp12_ = NULL; _tmp11_ = dynamic_sig; _tmp12_ = vala_ccode_base_module_get_dynamic_signal_cname ((ValaCCodeBaseModule*) self, _tmp11_); _g_free0 (delegate_name); delegate_name = _tmp12_; } else { ValaSignal* _tmp13_; _tmp13_ = sig; if (_tmp13_ != NULL) { ValaSignal* _tmp14_; ValaSymbol* _tmp15_; ValaSymbol* _tmp16_; gchar* _tmp17_ = NULL; gchar* _tmp18_; ValaSignal* _tmp19_; gchar* _tmp20_ = NULL; gchar* _tmp21_; gchar* _tmp22_; _tmp14_ = sig; _tmp15_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = sig; _tmp20_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp19_); _tmp21_ = _tmp20_; _tmp22_ = g_strconcat (_tmp18_, _tmp21_, NULL); _g_free0 (delegate_name); delegate_name = _tmp22_; _g_free0 (_tmp21_); _g_free0 (_tmp18_); } else { ValaDelegate* _tmp23_; gchar* _tmp24_ = NULL; gchar* _tmp25_; gchar* _tmp26_ = NULL; _tmp23_ = d; _tmp24_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_symbol_camel_case_to_lower_case (_tmp25_); _g_free0 (delegate_name); delegate_name = _tmp26_; _g_free0 (_tmp25_); } } _tmp27_ = m; _tmp28_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp27_); _tmp29_ = _tmp28_; _tmp30_ = delegate_name; _tmp31_ = g_strdup_printf ("_%s_%s", _tmp29_, _tmp30_); _tmp32_ = _tmp31_; _g_free0 (_tmp29_); wrapper_name = _tmp32_; _tmp33_ = wrapper_name; _tmp34_ = vala_ccode_base_module_add_wrapper ((ValaCCodeBaseModule*) self, _tmp33_); if (!_tmp34_) { result = wrapper_name; _vala_code_node_unref0 (dynamic_sig); _vala_code_node_unref0 (sig); _g_free0 (delegate_name); _vala_code_node_unref0 (d); return result; } _tmp35_ = d; _tmp36_ = vala_delegate_get_return_type (_tmp35_); _tmp37_ = _tmp36_; _tmp38_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp37_); return_type_cname = _tmp38_; _tmp39_ = d; _tmp40_ = vala_delegate_get_return_type (_tmp39_); _tmp41_ = _tmp40_; _tmp42_ = vala_data_type_is_real_non_null_struct_type (_tmp41_); if (_tmp42_) { gchar* _tmp43_; _tmp43_ = g_strdup ("void"); _g_free0 (return_type_cname); return_type_cname = _tmp43_; } _tmp44_ = wrapper_name; _tmp45_ = return_type_cname; _tmp46_ = vala_ccode_function_new (_tmp44_, _tmp45_); function = _tmp46_; _tmp47_ = function; vala_ccode_function_set_modifiers (_tmp47_, VALA_CCODE_MODIFIERS_STATIC); _tmp48_ = function; vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp48_); _tmp49_ = g_direct_hash; _tmp50_ = g_direct_equal; _tmp51_ = g_direct_equal; _tmp52_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp49_, _tmp50_, _tmp51_); cparam_map = _tmp52_; _tmp53_ = d; _tmp54_ = vala_delegate_get_has_target (_tmp53_); _tmp55_ = _tmp54_; if (_tmp55_) { ValaCCodeParameter* _tmp56_; ValaCCodeParameter* cparam; ValaHashMap* _tmp57_; ValaDelegate* _tmp58_; gdouble _tmp59_ = 0.0; gint _tmp60_ = 0; ValaCCodeParameter* _tmp61_; _tmp56_ = vala_ccode_parameter_new ("self", "gpointer"); cparam = _tmp56_; _tmp57_ = cparam_map; _tmp58_ = d; _tmp59_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp58_); _tmp60_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp59_, FALSE); _tmp61_ = cparam; vala_map_set ((ValaMap*) _tmp57_, GINT_TO_POINTER (_tmp60_), _tmp61_); _vala_ccode_node_unref0 (cparam); } _tmp62_ = d; _tmp63_ = vala_delegate_get_sender_type (_tmp62_); _tmp64_ = _tmp63_; if (_tmp64_ != NULL) { ValaDelegate* _tmp65_; ValaDataType* _tmp66_; ValaDataType* _tmp67_; ValaParameter* _tmp68_; ValaParameter* param; ValaParameter* _tmp69_; ValaCCodeFile* _tmp70_; ValaHashMap* _tmp71_; ValaCCodeParameter* _tmp72_ = NULL; ValaCCodeParameter* _tmp73_; _tmp65_ = d; _tmp66_ = vala_delegate_get_sender_type (_tmp65_); _tmp67_ = _tmp66_; _tmp68_ = vala_parameter_new ("_sender", _tmp67_, NULL); param = _tmp68_; _tmp69_ = param; _tmp70_ = ((ValaCCodeBaseModule*) self)->cfile; _tmp71_ = cparam_map; _tmp72_ = vala_ccode_method_module_generate_parameter ((ValaCCodeMethodModule*) self, _tmp69_, _tmp70_, (ValaMap*) _tmp71_, NULL); _tmp73_ = _tmp72_; _vala_ccode_node_unref0 (_tmp73_); _vala_code_node_unref0 (param); } _tmp74_ = d; _tmp75_ = vala_delegate_get_parameters (_tmp74_); d_params = _tmp75_; { ValaList* _tmp76_; ValaList* _tmp77_; ValaList* _param_list; ValaList* _tmp78_; gint _tmp79_; gint _tmp80_; gint _param_size; gint _param_index; _tmp76_ = d_params; _tmp77_ = _vala_iterable_ref0 (_tmp76_); _param_list = _tmp77_; _tmp78_ = _param_list; _tmp79_ = vala_collection_get_size ((ValaCollection*) _tmp78_); _tmp80_ = _tmp79_; _param_size = _tmp80_; _param_index = -1; while (TRUE) { gint _tmp81_; gint _tmp82_; gint _tmp83_; ValaList* _tmp84_; gint _tmp85_; gpointer _tmp86_ = NULL; ValaParameter* param; gboolean _tmp87_ = FALSE; gboolean _tmp88_ = FALSE; ValaDynamicSignal* _tmp89_; gboolean _tmp93_; gboolean _tmp104_; ValaParameter* _tmp107_; ValaCCodeFile* _tmp108_; ValaHashMap* _tmp109_; ValaCCodeParameter* _tmp110_ = NULL; ValaCCodeParameter* _tmp111_; _tmp81_ = _param_index; _param_index = _tmp81_ + 1; _tmp82_ = _param_index; _tmp83_ = _param_size; if (!(_tmp82_ < _tmp83_)) { break; } _tmp84_ = _param_list; _tmp85_ = _param_index; _tmp86_ = vala_list_get (_tmp84_, _tmp85_); param = (ValaParameter*) _tmp86_; _tmp89_ = dynamic_sig; if (_tmp89_ != NULL) { ValaParameter* _tmp90_; ValaDataType* _tmp91_; ValaDataType* _tmp92_; _tmp90_ = param; _tmp91_ = vala_variable_get_variable_type ((ValaVariable*) _tmp90_); _tmp92_ = _tmp91_; _tmp88_ = VALA_IS_ARRAY_TYPE (_tmp92_); } else { _tmp88_ = FALSE; } _tmp93_ = _tmp88_; if (_tmp93_) { ValaParameter* _tmp94_; ValaDataType* _tmp95_; ValaDataType* _tmp96_; ValaDataType* _tmp97_; ValaDataType* _tmp98_; ValaTypeSymbol* _tmp99_; ValaTypeSymbol* _tmp100_; ValaDataType* _tmp101_; ValaTypeSymbol* _tmp102_; ValaTypeSymbol* _tmp103_; _tmp94_ = param; _tmp95_ = vala_variable_get_variable_type ((ValaVariable*) _tmp94_); _tmp96_ = _tmp95_; _tmp97_ = vala_array_type_get_element_type (VALA_ARRAY_TYPE (_tmp96_)); _tmp98_ = _tmp97_; _tmp99_ = vala_data_type_get_data_type (_tmp98_); _tmp100_ = _tmp99_; _tmp101_ = ((ValaCCodeBaseModule*) self)->string_type; _tmp102_ = vala_data_type_get_data_type (_tmp101_); _tmp103_ = _tmp102_; _tmp87_ = _tmp100_ == _tmp103_; } else { _tmp87_ = FALSE; } _tmp104_ = _tmp87_; if (_tmp104_) { ValaParameter* _tmp105_; ValaParameter* _tmp106_; _tmp105_ = param; vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp105_, "CCode", "array_length", FALSE, NULL); _tmp106_ = param; vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp106_, "CCode", "array_null_terminated", TRUE, NULL); } _tmp107_ = param; _tmp108_ = ((ValaCCodeBaseModule*) self)->cfile; _tmp109_ = cparam_map; _tmp110_ = vala_ccode_method_module_generate_parameter ((ValaCCodeMethodModule*) self, _tmp107_, _tmp108_, (ValaMap*) _tmp109_, NULL); _tmp111_ = _tmp110_; _vala_ccode_node_unref0 (_tmp111_); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp113_ = d; _tmp114_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp113_); if (_tmp114_) { ValaDelegate* _tmp115_; ValaDataType* _tmp116_; ValaDataType* _tmp117_; _tmp115_ = d; _tmp116_ = vala_delegate_get_return_type (_tmp115_); _tmp117_ = _tmp116_; _tmp112_ = VALA_IS_ARRAY_TYPE (_tmp117_); } else { _tmp112_ = FALSE; } _tmp118_ = _tmp112_; if (_tmp118_) { ValaDelegate* _tmp119_; ValaDataType* _tmp120_; ValaDataType* _tmp121_; ValaArrayType* _tmp122_; ValaArrayType* array_type; gchar* _tmp123_ = NULL; ValaDelegate* _tmp124_; gchar* _tmp125_ = NULL; gchar* _tmp126_; gboolean _tmp127_; const gchar* _tmp131_; gchar* _tmp132_; gchar* array_length_type; const gchar* _tmp133_; gchar* _tmp134_; _tmp119_ = d; _tmp120_ = vala_delegate_get_return_type (_tmp119_); _tmp121_ = _tmp120_; _tmp122_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp121_)); array_type = _tmp122_; _tmp124_ = d; _tmp125_ = vala_ccode_base_module_get_ccode_array_length_type ((ValaCodeNode*) _tmp124_); _tmp126_ = _tmp125_; _tmp127_ = _tmp126_ != NULL; _g_free0 (_tmp126_); if (_tmp127_) { ValaDelegate* _tmp128_; gchar* _tmp129_ = NULL; _tmp128_ = d; _tmp129_ = vala_ccode_base_module_get_ccode_array_length_type ((ValaCodeNode*) _tmp128_); _g_free0 (_tmp123_); _tmp123_ = _tmp129_; } else { gchar* _tmp130_; _tmp130_ = g_strdup ("int"); _g_free0 (_tmp123_); _tmp123_ = _tmp130_; } _tmp131_ = _tmp123_; _tmp132_ = g_strdup (_tmp131_); array_length_type = _tmp132_; _tmp133_ = array_length_type; _tmp134_ = g_strconcat (_tmp133_, "*", NULL); _g_free0 (array_length_type); array_length_type = _tmp134_; { gint dim; dim = 1; { gboolean _tmp135_; _tmp135_ = TRUE; while (TRUE) { gboolean _tmp136_; gint _tmp138_; ValaArrayType* _tmp139_; gint _tmp140_; gint _tmp141_; gint _tmp142_; gchar* _tmp143_ = NULL; gchar* _tmp144_; const gchar* _tmp145_; ValaCCodeParameter* _tmp146_; ValaCCodeParameter* _tmp147_; ValaCCodeParameter* cparam; ValaHashMap* _tmp148_; ValaDelegate* _tmp149_; gdouble _tmp150_ = 0.0; gint _tmp151_; gint _tmp152_ = 0; ValaCCodeParameter* _tmp153_; _tmp136_ = _tmp135_; if (!_tmp136_) { gint _tmp137_; _tmp137_ = dim; dim = _tmp137_ + 1; } _tmp135_ = FALSE; _tmp138_ = dim; _tmp139_ = array_type; _tmp140_ = vala_array_type_get_rank (_tmp139_); _tmp141_ = _tmp140_; if (!(_tmp138_ <= _tmp141_)) { break; } _tmp142_ = dim; _tmp143_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp142_); _tmp144_ = _tmp143_; _tmp145_ = array_length_type; _tmp146_ = vala_ccode_parameter_new (_tmp144_, _tmp145_); _tmp147_ = _tmp146_; _g_free0 (_tmp144_); cparam = _tmp147_; _tmp148_ = cparam_map; _tmp149_ = d; _tmp150_ = vala_ccode_base_module_get_ccode_array_length_pos ((ValaCodeNode*) _tmp149_); _tmp151_ = dim; _tmp152_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp150_ + (0.01 * _tmp151_), FALSE); _tmp153_ = cparam; vala_map_set ((ValaMap*) _tmp148_, GINT_TO_POINTER (_tmp152_), _tmp153_); _vala_ccode_node_unref0 (cparam); } } } _g_free0 (array_length_type); _g_free0 (_tmp123_); _vala_code_node_unref0 (array_type); } else { ValaDelegate* _tmp154_; ValaDataType* _tmp155_; ValaDataType* _tmp156_; _tmp154_ = d; _tmp155_ = vala_delegate_get_return_type (_tmp154_); _tmp156_ = _tmp155_; if (VALA_IS_DELEGATE_TYPE (_tmp156_)) { ValaDelegate* _tmp157_; ValaDataType* _tmp158_; ValaDataType* _tmp159_; ValaDelegateType* _tmp160_; ValaDelegateType* deleg_type; ValaDelegateType* _tmp161_; ValaDelegate* _tmp162_; ValaDelegate* _tmp163_; gboolean _tmp164_; gboolean _tmp165_; _tmp157_ = d; _tmp158_ = vala_delegate_get_return_type (_tmp157_); _tmp159_ = _tmp158_; _tmp160_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp159_)); deleg_type = _tmp160_; _tmp161_ = deleg_type; _tmp162_ = vala_delegate_type_get_delegate_symbol (_tmp161_); _tmp163_ = _tmp162_; _tmp164_ = vala_delegate_get_has_target (_tmp163_); _tmp165_ = _tmp164_; if (_tmp165_) { gchar* _tmp166_ = NULL; gchar* _tmp167_; ValaCCodeParameter* _tmp168_; ValaCCodeParameter* _tmp169_; ValaCCodeParameter* cparam; ValaHashMap* _tmp170_; ValaDelegate* _tmp171_; gdouble _tmp172_ = 0.0; gint _tmp173_ = 0; ValaCCodeParameter* _tmp174_; ValaDelegateType* _tmp175_; gboolean _tmp176_; gboolean _tmp177_; _tmp166_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result"); _tmp167_ = _tmp166_; _tmp168_ = vala_ccode_parameter_new (_tmp167_, "void**"); _tmp169_ = _tmp168_; _g_free0 (_tmp167_); cparam = _tmp169_; _tmp170_ = cparam_map; _tmp171_ = d; _tmp172_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp171_); _tmp173_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp172_, FALSE); _tmp174_ = cparam; vala_map_set ((ValaMap*) _tmp170_, GINT_TO_POINTER (_tmp173_), _tmp174_); _tmp175_ = deleg_type; _tmp176_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp175_); _tmp177_ = _tmp176_; if (_tmp177_) { gchar* _tmp178_ = NULL; gchar* _tmp179_; ValaCCodeParameter* _tmp180_; ValaHashMap* _tmp181_; ValaDelegate* _tmp182_; gdouble _tmp183_ = 0.0; gint _tmp184_ = 0; ValaCCodeParameter* _tmp185_; _tmp178_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, "result"); _tmp179_ = _tmp178_; _tmp180_ = vala_ccode_parameter_new (_tmp179_, "GDestroyNotify*"); _vala_ccode_node_unref0 (cparam); cparam = _tmp180_; _g_free0 (_tmp179_); _tmp181_ = cparam_map; _tmp182_ = d; _tmp183_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp182_); _tmp184_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp183_ + 0.01, FALSE); _tmp185_ = cparam; vala_map_set ((ValaMap*) _tmp181_, GINT_TO_POINTER (_tmp184_), _tmp185_); } _vala_ccode_node_unref0 (cparam); } _vala_code_node_unref0 (deleg_type); } else { ValaDelegate* _tmp186_; ValaDataType* _tmp187_; ValaDataType* _tmp188_; gboolean _tmp189_ = FALSE; _tmp186_ = d; _tmp187_ = vala_delegate_get_return_type (_tmp186_); _tmp188_ = _tmp187_; _tmp189_ = vala_data_type_is_real_non_null_struct_type (_tmp188_); if (_tmp189_) { ValaDelegate* _tmp190_; ValaDataType* _tmp191_; ValaDataType* _tmp192_; gchar* _tmp193_ = NULL; gchar* _tmp194_; gchar* _tmp195_ = NULL; gchar* _tmp196_; ValaCCodeParameter* _tmp197_; ValaCCodeParameter* _tmp198_; ValaCCodeParameter* cparam; ValaHashMap* _tmp199_; gint _tmp200_ = 0; ValaCCodeParameter* _tmp201_; _tmp190_ = d; _tmp191_ = vala_delegate_get_return_type (_tmp190_); _tmp192_ = _tmp191_; _tmp193_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp192_); _tmp194_ = _tmp193_; _tmp195_ = g_strdup_printf ("%s*", _tmp194_); _tmp196_ = _tmp195_; _tmp197_ = vala_ccode_parameter_new ("result", _tmp196_); _tmp198_ = _tmp197_; _g_free0 (_tmp196_); _g_free0 (_tmp194_); cparam = _tmp198_; _tmp199_ = cparam_map; _tmp200_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-3), FALSE); _tmp201_ = cparam; vala_map_set ((ValaMap*) _tmp199_, GINT_TO_POINTER (_tmp200_), _tmp201_); _vala_ccode_node_unref0 (cparam); } } } _tmp202_ = m; _tmp203_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp202_); _tmp204_ = _tmp203_; _tmp205_ = vala_collection_get_size ((ValaCollection*) _tmp204_); _tmp206_ = _tmp205_; _tmp207_ = _tmp206_ > 0; _vala_iterable_unref0 (_tmp204_); if (_tmp207_) { ValaCCodeParameter* _tmp208_; ValaCCodeParameter* cparam; ValaHashMap* _tmp209_; gint _tmp210_ = 0; ValaCCodeParameter* _tmp211_; _tmp208_ = vala_ccode_parameter_new ("error", "GError**"); cparam = _tmp208_; _tmp209_ = cparam_map; _tmp210_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-1), FALSE); _tmp211_ = cparam; vala_map_set ((ValaMap*) _tmp209_, GINT_TO_POINTER (_tmp210_), _tmp211_); _vala_ccode_node_unref0 (cparam); } last_pos = -1; while (TRUE) { gint _tmp231_; ValaCCodeFunction* _tmp232_; ValaHashMap* _tmp233_; gint _tmp234_; gpointer _tmp235_ = NULL; ValaCCodeParameter* _tmp236_; gint _tmp237_; min_pos = -1; { ValaHashMap* _tmp212_; ValaSet* _tmp213_ = NULL; ValaSet* _tmp214_; ValaIterator* _tmp215_ = NULL; ValaIterator* _tmp216_; ValaIterator* _pos_it; _tmp212_ = cparam_map; _tmp213_ = vala_map_get_keys ((ValaMap*) _tmp212_); _tmp214_ = _tmp213_; _tmp215_ = vala_iterable_iterator ((ValaIterable*) _tmp214_); _tmp216_ = _tmp215_; _vala_iterable_unref0 (_tmp214_); _pos_it = _tmp216_; while (TRUE) { ValaIterator* _tmp217_; gboolean _tmp218_ = FALSE; ValaIterator* _tmp219_; gpointer _tmp220_ = NULL; gint pos; gboolean _tmp221_ = FALSE; gint _tmp222_; gint _tmp223_; gboolean _tmp229_; _tmp217_ = _pos_it; _tmp218_ = vala_iterator_next (_tmp217_); if (!_tmp218_) { break; } _tmp219_ = _pos_it; _tmp220_ = vala_iterator_get (_tmp219_); pos = GPOINTER_TO_INT (_tmp220_); _tmp222_ = pos; _tmp223_ = last_pos; if (_tmp222_ > _tmp223_) { gboolean _tmp224_ = FALSE; gint _tmp225_; gboolean _tmp228_; _tmp225_ = min_pos; if (_tmp225_ == (-1)) { _tmp224_ = TRUE; } else { gint _tmp226_; gint _tmp227_; _tmp226_ = pos; _tmp227_ = min_pos; _tmp224_ = _tmp226_ < _tmp227_; } _tmp228_ = _tmp224_; _tmp221_ = _tmp228_; } else { _tmp221_ = FALSE; } _tmp229_ = _tmp221_; if (_tmp229_) { gint _tmp230_; _tmp230_ = pos; min_pos = _tmp230_; } } _vala_iterator_unref0 (_pos_it); } _tmp231_ = min_pos; if (_tmp231_ == (-1)) { break; } _tmp232_ = function; _tmp233_ = cparam_map; _tmp234_ = min_pos; _tmp235_ = vala_map_get ((ValaMap*) _tmp233_, GINT_TO_POINTER (_tmp234_)); _tmp236_ = (ValaCCodeParameter*) _tmp235_; vala_ccode_function_add_parameter (_tmp232_, _tmp236_); _vala_ccode_node_unref0 (_tmp236_); _tmp237_ = min_pos; last_pos = _tmp237_; } _tmp238_ = g_direct_hash; _tmp239_ = g_direct_equal; _tmp240_ = g_direct_equal; _tmp241_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp238_, _tmp239_, _tmp240_); carg_map = _tmp241_; i = 0; _tmp243_ = m; _tmp244_ = vala_method_get_binding (_tmp243_); _tmp245_ = _tmp244_; if (_tmp245_ == VALA_MEMBER_BINDING_INSTANCE) { _tmp242_ = TRUE; } else { ValaMethod* _tmp246_; gboolean _tmp247_; gboolean _tmp248_; _tmp246_ = m; _tmp247_ = vala_method_get_closure (_tmp246_); _tmp248_ = _tmp247_; _tmp242_ = _tmp248_; } _tmp249_ = _tmp242_; if (_tmp249_) { ValaCCodeExpression* arg = NULL; ValaDelegate* _tmp250_; gboolean _tmp251_; gboolean _tmp252_; ValaHashMap* _tmp277_; ValaMethod* _tmp278_; gdouble _tmp279_ = 0.0; gint _tmp280_ = 0; ValaCCodeExpression* _tmp281_; _tmp250_ = d; _tmp251_ = vala_delegate_get_has_target (_tmp250_); _tmp252_ = _tmp251_; if (_tmp252_) { ValaCCodeIdentifier* _tmp253_; _tmp253_ = vala_ccode_identifier_new ("self"); _vala_ccode_node_unref0 (arg); arg = (ValaCCodeExpression*) _tmp253_; } else { gboolean _tmp254_ = FALSE; ValaList* _tmp255_; gint _tmp256_; gint _tmp257_; gboolean _tmp261_; _tmp255_ = d_params; _tmp256_ = vala_collection_get_size ((ValaCollection*) _tmp255_); _tmp257_ = _tmp256_; if (_tmp257_ == 0) { _tmp254_ = TRUE; } else { ValaMethod* _tmp258_; gboolean _tmp259_; gboolean _tmp260_; _tmp258_ = m; _tmp259_ = vala_method_get_closure (_tmp258_); _tmp260_ = _tmp259_; _tmp254_ = _tmp260_; } _tmp261_ = _tmp254_; if (_tmp261_) { ValaSourceReference* _tmp262_ = NULL; ValaCodeNode* _tmp263_; ValaSourceReference* _tmp267_; ValaCCodeConstant* _tmp268_; _tmp263_ = node; if (_tmp263_ != NULL) { ValaCodeNode* _tmp264_; ValaSourceReference* _tmp265_; ValaSourceReference* _tmp266_; _tmp264_ = node; _tmp265_ = vala_code_node_get_source_reference (_tmp264_); _tmp266_ = _tmp265_; _tmp262_ = _tmp266_; } else { _tmp262_ = NULL; } _tmp267_ = _tmp262_; vala_report_error (_tmp267_, "Cannot create delegate without target for instance method or closure"); _tmp268_ = vala_ccode_constant_new ("NULL"); _vala_ccode_node_unref0 (arg); arg = (ValaCCodeExpression*) _tmp268_; } else { ValaList* _tmp269_; gpointer _tmp270_ = NULL; ValaParameter* _tmp271_; const gchar* _tmp272_; const gchar* _tmp273_; gchar* _tmp274_ = NULL; gchar* _tmp275_; ValaCCodeIdentifier* _tmp276_; _tmp269_ = d_params; _tmp270_ = vala_list_get (_tmp269_, 0); _tmp271_ = (ValaParameter*) _tmp270_; _tmp272_ = vala_symbol_get_name ((ValaSymbol*) _tmp271_); _tmp273_ = _tmp272_; _tmp274_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp273_); _tmp275_ = _tmp274_; _tmp276_ = vala_ccode_identifier_new (_tmp275_); _vala_ccode_node_unref0 (arg); arg = (ValaCCodeExpression*) _tmp276_; _g_free0 (_tmp275_); _vala_code_node_unref0 (_tmp271_); i = 1; } } _tmp277_ = carg_map; _tmp278_ = m; _tmp279_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp278_); _tmp280_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp279_, FALSE); _tmp281_ = arg; vala_map_set ((ValaMap*) _tmp277_, GINT_TO_POINTER (_tmp280_), _tmp281_); _vala_ccode_node_unref0 (arg); } first = TRUE; { ValaMethod* _tmp282_; ValaList* _tmp283_ = NULL; ValaList* _param_list; ValaList* _tmp284_; gint _tmp285_; gint _tmp286_; gint _param_size; gint _param_index; _tmp282_ = m; _tmp283_ = vala_method_get_parameters (_tmp282_); _param_list = _tmp283_; _tmp284_ = _param_list; _tmp285_ = vala_collection_get_size ((ValaCollection*) _tmp284_); _tmp286_ = _tmp285_; _param_size = _tmp286_; _param_index = -1; while (TRUE) { gint _tmp287_; gint _tmp288_; gint _tmp289_; ValaList* _tmp290_; gint _tmp291_; gpointer _tmp292_ = NULL; ValaParameter* param; gboolean _tmp293_ = FALSE; gboolean _tmp294_ = FALSE; gboolean _tmp295_; gboolean _tmp299_; gboolean _tmp310_; ValaCCodeExpression* arg = NULL; ValaList* _tmp317_; gint _tmp318_; gpointer _tmp319_ = NULL; ValaParameter* _tmp320_; const gchar* _tmp321_; const gchar* _tmp322_; gchar* _tmp323_ = NULL; gchar* _tmp324_; ValaCCodeIdentifier* _tmp325_; ValaHashMap* _tmp326_; ValaParameter* _tmp327_; gdouble _tmp328_ = 0.0; gint _tmp329_ = 0; ValaCCodeExpression* _tmp330_; gboolean _tmp331_ = FALSE; ValaParameter* _tmp332_; gboolean _tmp333_ = FALSE; gboolean _tmp337_; gint _tmp436_; _tmp287_ = _param_index; _param_index = _tmp287_ + 1; _tmp288_ = _param_index; _tmp289_ = _param_size; if (!(_tmp288_ < _tmp289_)) { break; } _tmp290_ = _param_list; _tmp291_ = _param_index; _tmp292_ = vala_list_get (_tmp290_, _tmp291_); param = (ValaParameter*) _tmp292_; _tmp295_ = first; if (_tmp295_) { ValaDelegate* _tmp296_; ValaDataType* _tmp297_; ValaDataType* _tmp298_; _tmp296_ = d; _tmp297_ = vala_delegate_get_sender_type (_tmp296_); _tmp298_ = _tmp297_; _tmp294_ = _tmp298_ != NULL; } else { _tmp294_ = FALSE; } _tmp299_ = _tmp294_; if (_tmp299_) { ValaMethod* _tmp300_; ValaList* _tmp301_ = NULL; ValaList* _tmp302_; gint _tmp303_; gint _tmp304_; ValaDelegate* _tmp305_; ValaList* _tmp306_ = NULL; ValaList* _tmp307_; gint _tmp308_; gint _tmp309_; _tmp300_ = m; _tmp301_ = vala_method_get_parameters (_tmp300_); _tmp302_ = _tmp301_; _tmp303_ = vala_collection_get_size ((ValaCollection*) _tmp302_); _tmp304_ = _tmp303_; _tmp305_ = d; _tmp306_ = vala_delegate_get_parameters (_tmp305_); _tmp307_ = _tmp306_; _tmp308_ = vala_collection_get_size ((ValaCollection*) _tmp307_); _tmp309_ = _tmp308_; _tmp293_ = _tmp304_ == (_tmp309_ + 1); _vala_iterable_unref0 (_tmp307_); _vala_iterable_unref0 (_tmp302_); } else { _tmp293_ = FALSE; } _tmp310_ = _tmp293_; if (_tmp310_) { ValaHashMap* _tmp311_; ValaParameter* _tmp312_; gdouble _tmp313_ = 0.0; gint _tmp314_ = 0; ValaCCodeIdentifier* _tmp315_; ValaCCodeIdentifier* _tmp316_; _tmp311_ = carg_map; _tmp312_ = param; _tmp313_ = vala_ccode_base_module_get_ccode_pos (_tmp312_); _tmp314_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp313_, FALSE); _tmp315_ = vala_ccode_identifier_new ("_sender"); _tmp316_ = _tmp315_; vala_map_set ((ValaMap*) _tmp311_, GINT_TO_POINTER (_tmp314_), (ValaCCodeExpression*) _tmp316_); _vala_ccode_node_unref0 (_tmp316_); first = FALSE; _vala_code_node_unref0 (param); continue; } _tmp317_ = d_params; _tmp318_ = i; _tmp319_ = vala_list_get (_tmp317_, _tmp318_); _tmp320_ = (ValaParameter*) _tmp319_; _tmp321_ = vala_symbol_get_name ((ValaSymbol*) _tmp320_); _tmp322_ = _tmp321_; _tmp323_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp322_); _tmp324_ = _tmp323_; _tmp325_ = vala_ccode_identifier_new (_tmp324_); _vala_ccode_node_unref0 (arg); arg = (ValaCCodeExpression*) _tmp325_; _g_free0 (_tmp324_); _vala_code_node_unref0 (_tmp320_); _tmp326_ = carg_map; _tmp327_ = param; _tmp328_ = vala_ccode_base_module_get_ccode_pos (_tmp327_); _tmp329_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp328_, FALSE); _tmp330_ = arg; vala_map_set ((ValaMap*) _tmp326_, GINT_TO_POINTER (_tmp329_), _tmp330_); _tmp332_ = param; _tmp333_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp332_); if (_tmp333_) { ValaParameter* _tmp334_; ValaDataType* _tmp335_; ValaDataType* _tmp336_; _tmp334_ = param; _tmp335_ = vala_variable_get_variable_type ((ValaVariable*) _tmp334_); _tmp336_ = _tmp335_; _tmp331_ = VALA_IS_ARRAY_TYPE (_tmp336_); } else { _tmp331_ = FALSE; } _tmp337_ = _tmp331_; if (_tmp337_) { ValaParameter* _tmp338_; ValaDataType* _tmp339_; ValaDataType* _tmp340_; ValaArrayType* _tmp341_; ValaArrayType* array_type; _tmp338_ = param; _tmp339_ = vala_variable_get_variable_type ((ValaVariable*) _tmp338_); _tmp340_ = _tmp339_; _tmp341_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp340_)); array_type = _tmp341_; { gint dim; dim = 1; { gboolean _tmp342_; _tmp342_ = TRUE; while (TRUE) { gboolean _tmp343_; gint _tmp345_; ValaArrayType* _tmp346_; gint _tmp347_; gint _tmp348_; ValaCCodeExpression* clength = NULL; ValaList* _tmp349_; gint _tmp350_; gpointer _tmp351_ = NULL; ValaParameter* _tmp352_; gboolean _tmp353_ = FALSE; gboolean _tmp354_; ValaHashMap* _tmp385_; ValaParameter* _tmp386_; gdouble _tmp387_ = 0.0; gint _tmp388_; gint _tmp389_ = 0; ValaCCodeExpression* _tmp390_; _tmp343_ = _tmp342_; if (!_tmp343_) { gint _tmp344_; _tmp344_ = dim; dim = _tmp344_ + 1; } _tmp342_ = FALSE; _tmp345_ = dim; _tmp346_ = array_type; _tmp347_ = vala_array_type_get_rank (_tmp346_); _tmp348_ = _tmp347_; if (!(_tmp345_ <= _tmp348_)) { break; } _tmp349_ = d_params; _tmp350_ = i; _tmp351_ = vala_list_get (_tmp349_, _tmp350_); _tmp352_ = (ValaParameter*) _tmp351_; _tmp353_ = vala_ccode_base_module_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp352_); _tmp354_ = _tmp353_; _vala_code_node_unref0 (_tmp352_); if (_tmp354_) { ValaCCodeIdentifier* _tmp355_; ValaCCodeIdentifier* _tmp356_; ValaCCodeFunctionCall* _tmp357_; ValaCCodeFunctionCall* _tmp358_; ValaCCodeFunctionCall* len_call; ValaCCodeFunctionCall* _tmp359_; ValaList* _tmp360_; gint _tmp361_; gpointer _tmp362_ = NULL; ValaParameter* _tmp363_; const gchar* _tmp364_; const gchar* _tmp365_; ValaCCodeIdentifier* _tmp366_; ValaCCodeIdentifier* _tmp367_; ValaCCodeFunctionCall* _tmp368_; ValaCCodeExpression* _tmp369_; ((ValaCCodeBaseModule*) self)->requires_array_length = TRUE; _tmp355_ = vala_ccode_identifier_new ("_vala_array_length"); _tmp356_ = _tmp355_; _tmp357_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp356_); _tmp358_ = _tmp357_; _vala_ccode_node_unref0 (_tmp356_); len_call = _tmp358_; _tmp359_ = len_call; _tmp360_ = d_params; _tmp361_ = i; _tmp362_ = vala_list_get (_tmp360_, _tmp361_); _tmp363_ = (ValaParameter*) _tmp362_; _tmp364_ = vala_symbol_get_name ((ValaSymbol*) _tmp363_); _tmp365_ = _tmp364_; _tmp366_ = vala_ccode_identifier_new (_tmp365_); _tmp367_ = _tmp366_; vala_ccode_function_call_add_argument (_tmp359_, (ValaCCodeExpression*) _tmp367_); _vala_ccode_node_unref0 (_tmp367_); _vala_code_node_unref0 (_tmp363_); _tmp368_ = len_call; _tmp369_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp368_); _vala_ccode_node_unref0 (clength); clength = _tmp369_; _vala_ccode_node_unref0 (len_call); } else { ValaList* _tmp370_; gint _tmp371_; gpointer _tmp372_ = NULL; ValaParameter* _tmp373_; gboolean _tmp374_ = FALSE; gboolean _tmp375_; _tmp370_ = d_params; _tmp371_ = i; _tmp372_ = vala_list_get (_tmp370_, _tmp371_); _tmp373_ = (ValaParameter*) _tmp372_; _tmp374_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp373_); _tmp375_ = !_tmp374_; _vala_code_node_unref0 (_tmp373_); if (_tmp375_) { ValaCCodeConstant* _tmp376_; _tmp376_ = vala_ccode_constant_new ("-1"); _vala_ccode_node_unref0 (clength); clength = (ValaCCodeExpression*) _tmp376_; } else { ValaList* _tmp377_; gint _tmp378_; gpointer _tmp379_ = NULL; ValaParameter* _tmp380_; gint _tmp381_; gchar* _tmp382_ = NULL; gchar* _tmp383_; ValaCCodeIdentifier* _tmp384_; _tmp377_ = d_params; _tmp378_ = i; _tmp379_ = vala_list_get (_tmp377_, _tmp378_); _tmp380_ = (ValaParameter*) _tmp379_; _tmp381_ = dim; _tmp382_ = vala_ccode_base_module_get_parameter_array_length_cname ((ValaCCodeBaseModule*) self, _tmp380_, _tmp381_); _tmp383_ = _tmp382_; _tmp384_ = vala_ccode_identifier_new (_tmp383_); _vala_ccode_node_unref0 (clength); clength = (ValaCCodeExpression*) _tmp384_; _g_free0 (_tmp383_); _vala_code_node_unref0 (_tmp380_); } } _tmp385_ = carg_map; _tmp386_ = param; _tmp387_ = vala_ccode_base_module_get_ccode_array_length_pos ((ValaCodeNode*) _tmp386_); _tmp388_ = dim; _tmp389_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp387_ + (0.01 * _tmp388_), FALSE); _tmp390_ = clength; vala_map_set ((ValaMap*) _tmp385_, GINT_TO_POINTER (_tmp389_), _tmp390_); _vala_ccode_node_unref0 (clength); } } } _vala_code_node_unref0 (array_type); } else { ValaParameter* _tmp391_; ValaDataType* _tmp392_; ValaDataType* _tmp393_; _tmp391_ = param; _tmp392_ = vala_variable_get_variable_type ((ValaVariable*) _tmp391_); _tmp393_ = _tmp392_; if (VALA_IS_DELEGATE_TYPE (_tmp393_)) { ValaParameter* _tmp394_; ValaDataType* _tmp395_; ValaDataType* _tmp396_; ValaDelegateType* _tmp397_; ValaDelegateType* deleg_type; ValaDelegateType* _tmp398_; ValaDelegate* _tmp399_; ValaDelegate* _tmp400_; gboolean _tmp401_; gboolean _tmp402_; _tmp394_ = param; _tmp395_ = vala_variable_get_variable_type ((ValaVariable*) _tmp394_); _tmp396_ = _tmp395_; _tmp397_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp396_)); deleg_type = _tmp397_; _tmp398_ = deleg_type; _tmp399_ = vala_delegate_type_get_delegate_symbol (_tmp398_); _tmp400_ = _tmp399_; _tmp401_ = vala_delegate_get_has_target (_tmp400_); _tmp402_ = _tmp401_; if (_tmp402_) { ValaList* _tmp403_; gint _tmp404_; gpointer _tmp405_ = NULL; ValaParameter* _tmp406_; const gchar* _tmp407_; const gchar* _tmp408_; gchar* _tmp409_ = NULL; gchar* _tmp410_; ValaCCodeIdentifier* _tmp411_; ValaCCodeIdentifier* _tmp412_; ValaCCodeIdentifier* ctarget; ValaHashMap* _tmp413_; ValaParameter* _tmp414_; gdouble _tmp415_ = 0.0; gint _tmp416_ = 0; ValaCCodeIdentifier* _tmp417_; ValaDelegateType* _tmp418_; gboolean _tmp419_; gboolean _tmp420_; _tmp403_ = d_params; _tmp404_ = i; _tmp405_ = vala_list_get (_tmp403_, _tmp404_); _tmp406_ = (ValaParameter*) _tmp405_; _tmp407_ = vala_symbol_get_name ((ValaSymbol*) _tmp406_); _tmp408_ = _tmp407_; _tmp409_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp408_); _tmp410_ = _tmp409_; _tmp411_ = vala_ccode_identifier_new (_tmp410_); _tmp412_ = _tmp411_; _g_free0 (_tmp410_); _vala_code_node_unref0 (_tmp406_); ctarget = _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 ((ValaCCodeBaseModule*) self, _tmp415_, FALSE); _tmp417_ = ctarget; vala_map_set ((ValaMap*) _tmp413_, GINT_TO_POINTER (_tmp416_), (ValaCCodeExpression*) _tmp417_); _tmp418_ = deleg_type; _tmp419_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp418_); _tmp420_ = _tmp419_; if (_tmp420_) { ValaList* _tmp421_; gint _tmp422_; gpointer _tmp423_ = NULL; ValaParameter* _tmp424_; const gchar* _tmp425_; const gchar* _tmp426_; gchar* _tmp427_ = NULL; gchar* _tmp428_; ValaCCodeIdentifier* _tmp429_; ValaCCodeIdentifier* _tmp430_; ValaCCodeIdentifier* ctarget_destroy_notify; ValaHashMap* _tmp431_; ValaMethod* _tmp432_; gdouble _tmp433_ = 0.0; gint _tmp434_ = 0; ValaCCodeIdentifier* _tmp435_; _tmp421_ = d_params; _tmp422_ = i; _tmp423_ = vala_list_get (_tmp421_, _tmp422_); _tmp424_ = (ValaParameter*) _tmp423_; _tmp425_ = vala_symbol_get_name ((ValaSymbol*) _tmp424_); _tmp426_ = _tmp425_; _tmp427_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp426_); _tmp428_ = _tmp427_; _tmp429_ = vala_ccode_identifier_new (_tmp428_); _tmp430_ = _tmp429_; _g_free0 (_tmp428_); _vala_code_node_unref0 (_tmp424_); ctarget_destroy_notify = _tmp430_; _tmp431_ = carg_map; _tmp432_ = m; _tmp433_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp432_); _tmp434_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp433_ + 0.01, FALSE); _tmp435_ = ctarget_destroy_notify; vala_map_set ((ValaMap*) _tmp431_, GINT_TO_POINTER (_tmp434_), (ValaCCodeExpression*) _tmp435_); _vala_ccode_node_unref0 (ctarget_destroy_notify); } _vala_ccode_node_unref0 (ctarget); } _vala_code_node_unref0 (deleg_type); } } _tmp436_ = i; i = _tmp436_ + 1; _vala_ccode_node_unref0 (arg); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp438_ = m; _tmp439_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp438_); if (_tmp439_) { ValaMethod* _tmp440_; ValaDataType* _tmp441_; ValaDataType* _tmp442_; _tmp440_ = m; _tmp441_ = vala_method_get_return_type (_tmp440_); _tmp442_ = _tmp441_; _tmp437_ = VALA_IS_ARRAY_TYPE (_tmp442_); } else { _tmp437_ = FALSE; } _tmp443_ = _tmp437_; if (_tmp443_) { ValaMethod* _tmp444_; ValaDataType* _tmp445_; ValaDataType* _tmp446_; ValaArrayType* _tmp447_; ValaArrayType* array_type; _tmp444_ = m; _tmp445_ = vala_method_get_return_type (_tmp444_); _tmp446_ = _tmp445_; _tmp447_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp446_)); array_type = _tmp447_; { gint dim; dim = 1; { gboolean _tmp448_; _tmp448_ = TRUE; while (TRUE) { gboolean _tmp449_; gint _tmp451_; ValaArrayType* _tmp452_; gint _tmp453_; gint _tmp454_; ValaCCodeExpression* clength = NULL; ValaDelegate* _tmp455_; gboolean _tmp456_ = FALSE; ValaHashMap* _tmp462_; ValaMethod* _tmp463_; gdouble _tmp464_ = 0.0; gint _tmp465_; gint _tmp466_ = 0; ValaCCodeExpression* _tmp467_; _tmp449_ = _tmp448_; if (!_tmp449_) { gint _tmp450_; _tmp450_ = dim; dim = _tmp450_ + 1; } _tmp448_ = FALSE; _tmp451_ = dim; _tmp452_ = array_type; _tmp453_ = vala_array_type_get_rank (_tmp452_); _tmp454_ = _tmp453_; if (!(_tmp451_ <= _tmp454_)) { break; } _tmp455_ = d; _tmp456_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp455_); if (!_tmp456_) { ValaCCodeConstant* _tmp457_; _tmp457_ = vala_ccode_constant_new ("NULL"); _vala_ccode_node_unref0 (clength); clength = (ValaCCodeExpression*) _tmp457_; } else { gint _tmp458_; gchar* _tmp459_ = NULL; gchar* _tmp460_; ValaCCodeIdentifier* _tmp461_; _tmp458_ = dim; _tmp459_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp458_); _tmp460_ = _tmp459_; _tmp461_ = vala_ccode_identifier_new (_tmp460_); _vala_ccode_node_unref0 (clength); clength = (ValaCCodeExpression*) _tmp461_; _g_free0 (_tmp460_); } _tmp462_ = carg_map; _tmp463_ = m; _tmp464_ = vala_ccode_base_module_get_ccode_array_length_pos ((ValaCodeNode*) _tmp463_); _tmp465_ = dim; _tmp466_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp464_ + (0.01 * _tmp465_), FALSE); _tmp467_ = clength; vala_map_set ((ValaMap*) _tmp462_, GINT_TO_POINTER (_tmp466_), _tmp467_); _vala_ccode_node_unref0 (clength); } } } _vala_code_node_unref0 (array_type); } else { ValaMethod* _tmp468_; ValaDataType* _tmp469_; ValaDataType* _tmp470_; _tmp468_ = m; _tmp469_ = vala_method_get_return_type (_tmp468_); _tmp470_ = _tmp469_; if (VALA_IS_DELEGATE_TYPE (_tmp470_)) { ValaMethod* _tmp471_; ValaDataType* _tmp472_; ValaDataType* _tmp473_; ValaDelegateType* _tmp474_; ValaDelegateType* deleg_type; ValaDelegateType* _tmp475_; ValaDelegate* _tmp476_; ValaDelegate* _tmp477_; gboolean _tmp478_; gboolean _tmp479_; _tmp471_ = m; _tmp472_ = vala_method_get_return_type (_tmp471_); _tmp473_ = _tmp472_; _tmp474_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp473_)); deleg_type = _tmp474_; _tmp475_ = deleg_type; _tmp476_ = vala_delegate_type_get_delegate_symbol (_tmp475_); _tmp477_ = _tmp476_; _tmp478_ = vala_delegate_get_has_target (_tmp477_); _tmp479_ = _tmp478_; if (_tmp479_) { gchar* _tmp480_ = NULL; gchar* _tmp481_; ValaCCodeIdentifier* _tmp482_; ValaCCodeIdentifier* _tmp483_; ValaCCodeIdentifier* ctarget; ValaHashMap* _tmp484_; ValaMethod* _tmp485_; gdouble _tmp486_ = 0.0; gint _tmp487_ = 0; ValaCCodeIdentifier* _tmp488_; ValaDelegateType* _tmp489_; gboolean _tmp490_; gboolean _tmp491_; _tmp480_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result"); _tmp481_ = _tmp480_; _tmp482_ = vala_ccode_identifier_new (_tmp481_); _tmp483_ = _tmp482_; _g_free0 (_tmp481_); ctarget = _tmp483_; _tmp484_ = carg_map; _tmp485_ = m; _tmp486_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp485_); _tmp487_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp486_, FALSE); _tmp488_ = ctarget; vala_map_set ((ValaMap*) _tmp484_, GINT_TO_POINTER (_tmp487_), (ValaCCodeExpression*) _tmp488_); _tmp489_ = deleg_type; _tmp490_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp489_); _tmp491_ = _tmp490_; if (_tmp491_) { gchar* _tmp492_ = NULL; gchar* _tmp493_; ValaCCodeIdentifier* _tmp494_; ValaCCodeIdentifier* _tmp495_; ValaCCodeIdentifier* ctarget_destroy_notify; ValaHashMap* _tmp496_; ValaMethod* _tmp497_; gdouble _tmp498_ = 0.0; gint _tmp499_ = 0; ValaCCodeIdentifier* _tmp500_; _tmp492_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, "result"); _tmp493_ = _tmp492_; _tmp494_ = vala_ccode_identifier_new (_tmp493_); _tmp495_ = _tmp494_; _g_free0 (_tmp493_); ctarget_destroy_notify = _tmp495_; _tmp496_ = carg_map; _tmp497_ = m; _tmp498_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp497_); _tmp499_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp498_ + 0.01, FALSE); _tmp500_ = ctarget_destroy_notify; vala_map_set ((ValaMap*) _tmp496_, GINT_TO_POINTER (_tmp499_), (ValaCCodeExpression*) _tmp500_); _vala_ccode_node_unref0 (ctarget_destroy_notify); } _vala_ccode_node_unref0 (ctarget); } _vala_code_node_unref0 (deleg_type); } else { ValaMethod* _tmp501_; ValaDataType* _tmp502_; ValaDataType* _tmp503_; gboolean _tmp504_ = FALSE; _tmp501_ = m; _tmp502_ = vala_method_get_return_type (_tmp501_); _tmp503_ = _tmp502_; _tmp504_ = vala_data_type_is_real_non_null_struct_type (_tmp503_); if (_tmp504_) { ValaHashMap* _tmp505_; gint _tmp506_ = 0; ValaCCodeIdentifier* _tmp507_; ValaCCodeIdentifier* _tmp508_; _tmp505_ = carg_map; _tmp506_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-3), FALSE); _tmp507_ = vala_ccode_identifier_new ("result"); _tmp508_ = _tmp507_; vala_map_set ((ValaMap*) _tmp505_, GINT_TO_POINTER (_tmp506_), (ValaCCodeExpression*) _tmp508_); _vala_ccode_node_unref0 (_tmp508_); } } } _tmp509_ = m; _tmp510_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp509_); _tmp511_ = _tmp510_; _tmp512_ = vala_collection_get_size ((ValaCollection*) _tmp511_); _tmp513_ = _tmp512_; _tmp514_ = _tmp513_ > 0; _vala_iterable_unref0 (_tmp511_); if (_tmp514_) { ValaHashMap* _tmp515_; gint _tmp516_ = 0; ValaCCodeIdentifier* _tmp517_; ValaCCodeIdentifier* _tmp518_; _tmp515_ = carg_map; _tmp516_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-1), FALSE); _tmp517_ = vala_ccode_identifier_new ("error"); _tmp518_ = _tmp517_; vala_map_set ((ValaMap*) _tmp515_, GINT_TO_POINTER (_tmp516_), (ValaCCodeExpression*) _tmp518_); _vala_ccode_node_unref0 (_tmp518_); } _tmp519_ = m; _tmp520_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp519_); _tmp521_ = _tmp520_; _tmp522_ = vala_ccode_identifier_new (_tmp521_); _tmp523_ = _tmp522_; _tmp524_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp523_); _tmp525_ = _tmp524_; _vala_ccode_node_unref0 (_tmp523_); _g_free0 (_tmp521_); ccall = _tmp525_; last_pos = -1; while (TRUE) { gint _tmp545_; ValaCCodeFunctionCall* _tmp546_; ValaHashMap* _tmp547_; gint _tmp548_; gpointer _tmp549_ = NULL; ValaCCodeExpression* _tmp550_; gint _tmp551_; min_pos = -1; { ValaHashMap* _tmp526_; ValaSet* _tmp527_ = NULL; ValaSet* _tmp528_; ValaIterator* _tmp529_ = NULL; ValaIterator* _tmp530_; ValaIterator* _pos_it; _tmp526_ = carg_map; _tmp527_ = vala_map_get_keys ((ValaMap*) _tmp526_); _tmp528_ = _tmp527_; _tmp529_ = vala_iterable_iterator ((ValaIterable*) _tmp528_); _tmp530_ = _tmp529_; _vala_iterable_unref0 (_tmp528_); _pos_it = _tmp530_; while (TRUE) { ValaIterator* _tmp531_; gboolean _tmp532_ = FALSE; ValaIterator* _tmp533_; gpointer _tmp534_ = NULL; gint pos; gboolean _tmp535_ = FALSE; gint _tmp536_; gint _tmp537_; gboolean _tmp543_; _tmp531_ = _pos_it; _tmp532_ = vala_iterator_next (_tmp531_); if (!_tmp532_) { break; } _tmp533_ = _pos_it; _tmp534_ = vala_iterator_get (_tmp533_); pos = GPOINTER_TO_INT (_tmp534_); _tmp536_ = pos; _tmp537_ = last_pos; if (_tmp536_ > _tmp537_) { gboolean _tmp538_ = FALSE; gint _tmp539_; gboolean _tmp542_; _tmp539_ = min_pos; if (_tmp539_ == (-1)) { _tmp538_ = TRUE; } else { gint _tmp540_; gint _tmp541_; _tmp540_ = pos; _tmp541_ = min_pos; _tmp538_ = _tmp540_ < _tmp541_; } _tmp542_ = _tmp538_; _tmp535_ = _tmp542_; } else { _tmp535_ = FALSE; } _tmp543_ = _tmp535_; if (_tmp543_) { gint _tmp544_; _tmp544_ = pos; min_pos = _tmp544_; } } _vala_iterator_unref0 (_pos_it); } _tmp545_ = min_pos; if (_tmp545_ == (-1)) { break; } _tmp546_ = ccall; _tmp547_ = carg_map; _tmp548_ = min_pos; _tmp549_ = vala_map_get ((ValaMap*) _tmp547_, GINT_TO_POINTER (_tmp548_)); _tmp550_ = (ValaCCodeExpression*) _tmp549_; vala_ccode_function_call_add_argument (_tmp546_, _tmp550_); _vala_ccode_node_unref0 (_tmp550_); _tmp551_ = min_pos; last_pos = _tmp551_; } _tmp552_ = m; _tmp553_ = vala_method_get_coroutine (_tmp552_); _tmp554_ = _tmp553_; if (_tmp554_) { ValaCCodeFunctionCall* _tmp555_; ValaCCodeConstant* _tmp556_; ValaCCodeConstant* _tmp557_; ValaCCodeFunctionCall* _tmp558_; ValaCCodeConstant* _tmp559_; ValaCCodeConstant* _tmp560_; _tmp555_ = ccall; _tmp556_ = vala_ccode_constant_new ("NULL"); _tmp557_ = _tmp556_; vala_ccode_function_call_add_argument (_tmp555_, (ValaCCodeExpression*) _tmp557_); _vala_ccode_node_unref0 (_tmp557_); _tmp558_ = ccall; _tmp559_ = vala_ccode_constant_new ("NULL"); _tmp560_ = _tmp559_; vala_ccode_function_call_add_argument (_tmp558_, (ValaCCodeExpression*) _tmp560_); _vala_ccode_node_unref0 (_tmp560_); } _tmp562_ = m; _tmp563_ = vala_method_get_return_type (_tmp562_); _tmp564_ = _tmp563_; if (VALA_IS_VOID_TYPE (_tmp564_)) { _tmp561_ = TRUE; } else { ValaMethod* _tmp565_; ValaDataType* _tmp566_; ValaDataType* _tmp567_; gboolean _tmp568_ = FALSE; _tmp565_ = m; _tmp566_ = vala_method_get_return_type (_tmp565_); _tmp567_ = _tmp566_; _tmp568_ = vala_data_type_is_real_non_null_struct_type (_tmp567_); _tmp561_ = _tmp568_; } _tmp569_ = _tmp561_; if (_tmp569_) { ValaCCodeFunction* _tmp570_; ValaCCodeFunction* _tmp571_; ValaCCodeFunctionCall* _tmp572_; _tmp570_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self); _tmp571_ = _tmp570_; _tmp572_ = ccall; vala_ccode_function_add_expression (_tmp571_, (ValaCCodeExpression*) _tmp572_); } else { ValaCCodeFunction* _tmp573_; ValaCCodeFunction* _tmp574_; const gchar* _tmp575_; ValaCCodeFunctionCall* _tmp576_; ValaCCodeVariableDeclarator* _tmp577_; ValaCCodeVariableDeclarator* _tmp578_; _tmp573_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self); _tmp574_ = _tmp573_; _tmp575_ = return_type_cname; _tmp576_ = ccall; _tmp577_ = vala_ccode_variable_declarator_new ("result", (ValaCCodeExpression*) _tmp576_, NULL); _tmp578_ = _tmp577_; vala_ccode_function_add_declaration (_tmp574_, _tmp575_, (ValaCCodeDeclarator*) _tmp578_, 0); _vala_ccode_node_unref0 (_tmp578_); } _tmp581_ = d; _tmp582_ = vala_delegate_get_has_target (_tmp581_); _tmp583_ = _tmp582_; if (_tmp583_) { ValaDelegateType* _tmp584_; gboolean _tmp585_; gboolean _tmp586_; _tmp584_ = dt; _tmp585_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp584_); _tmp586_ = _tmp585_; _tmp580_ = !_tmp586_; } else { _tmp580_ = FALSE; } _tmp587_ = _tmp580_; if (_tmp587_) { ValaDelegateType* _tmp588_; gboolean _tmp589_; gboolean _tmp590_; _tmp588_ = dt; _tmp589_ = vala_delegate_type_get_is_called_once (_tmp588_); _tmp590_ = _tmp589_; _tmp579_ = _tmp590_; } else { _tmp579_ = FALSE; } _tmp591_ = _tmp579_; if (_tmp591_) { ValaCCodeExpression* destroy_notify; ValaMethod* _tmp592_; gboolean _tmp593_; gboolean _tmp594_; ValaCCodeExpression* _tmp631_; destroy_notify = NULL; _tmp592_ = m; _tmp593_ = vala_method_get_closure (_tmp592_); _tmp594_ = _tmp593_; if (_tmp594_) { ValaBlock* _tmp595_; ValaBlock* _tmp596_; gint _tmp597_ = 0; gint block_id; gint _tmp598_; gchar* _tmp599_ = NULL; gchar* _tmp600_; ValaCCodeIdentifier* _tmp601_; _tmp595_ = vala_ccode_base_module_get_current_closure_block ((ValaCCodeBaseModule*) self); _tmp596_ = _tmp595_; _tmp597_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp596_); block_id = _tmp597_; _tmp598_ = block_id; _tmp599_ = g_strdup_printf ("block%d_data_unref", _tmp598_); _tmp600_ = _tmp599_; _tmp601_ = vala_ccode_identifier_new (_tmp600_); _vala_ccode_node_unref0 (destroy_notify); destroy_notify = (ValaCCodeExpression*) _tmp601_; _g_free0 (_tmp600_); } else { gboolean _tmp602_ = FALSE; gboolean _tmp603_ = FALSE; gboolean _tmp604_ = FALSE; ValaDataType* _tmp605_ = NULL; ValaDataType* _tmp606_; gboolean _tmp607_; gboolean _tmp611_; gboolean _tmp615_; gboolean _tmp624_; _tmp605_ = vala_ccode_base_module_get_this_type ((ValaCCodeBaseModule*) self); _tmp606_ = _tmp605_; _tmp607_ = _tmp606_ != NULL; _vala_code_node_unref0 (_tmp606_); if (_tmp607_) { ValaMethod* _tmp608_; ValaMemberBinding _tmp609_; ValaMemberBinding _tmp610_; _tmp608_ = m; _tmp609_ = vala_method_get_binding (_tmp608_); _tmp610_ = _tmp609_; _tmp604_ = _tmp610_ != VALA_MEMBER_BINDING_STATIC; } else { _tmp604_ = FALSE; } _tmp611_ = _tmp604_; if (_tmp611_) { ValaMethod* _tmp612_; gboolean _tmp613_; gboolean _tmp614_; _tmp612_ = m; _tmp613_ = vala_method_get_is_async_callback (_tmp612_); _tmp614_ = _tmp613_; _tmp603_ = !_tmp614_; } else { _tmp603_ = FALSE; } _tmp615_ = _tmp603_; if (_tmp615_) { ValaMethod* _tmp616_; ValaParameter* _tmp617_; ValaParameter* _tmp618_; ValaDataType* _tmp619_; ValaDataType* _tmp620_; ValaTypeSymbol* _tmp621_; ValaTypeSymbol* _tmp622_; gboolean _tmp623_ = FALSE; _tmp616_ = m; _tmp617_ = vala_method_get_this_parameter (_tmp616_); _tmp618_ = _tmp617_; _tmp619_ = vala_variable_get_variable_type ((ValaVariable*) _tmp618_); _tmp620_ = _tmp619_; _tmp621_ = vala_data_type_get_data_type (_tmp620_); _tmp622_ = _tmp621_; _tmp623_ = vala_ccode_base_module_is_reference_counting (_tmp622_); _tmp602_ = _tmp623_; } else { _tmp602_ = FALSE; } _tmp624_ = _tmp602_; if (_tmp624_) { ValaMethod* _tmp625_; ValaParameter* _tmp626_; ValaParameter* _tmp627_; ValaDataType* _tmp628_; ValaDataType* _tmp629_; ValaCCodeExpression* _tmp630_ = NULL; _tmp625_ = m; _tmp626_ = vala_method_get_this_parameter (_tmp625_); _tmp627_ = _tmp626_; _tmp628_ = vala_variable_get_variable_type ((ValaVariable*) _tmp627_); _tmp629_ = _tmp628_; _tmp630_ = vala_ccode_base_module_get_destroy_func_expression ((ValaCCodeBaseModule*) self, _tmp629_, FALSE); _vala_ccode_node_unref0 (destroy_notify); destroy_notify = _tmp630_; } } _tmp631_ = destroy_notify; if (_tmp631_ != NULL) { ValaCCodeExpression* _tmp632_; ValaCCodeFunctionCall* _tmp633_; ValaCCodeFunctionCall* unref_call; ValaCCodeFunctionCall* _tmp634_; ValaCCodeIdentifier* _tmp635_; ValaCCodeIdentifier* _tmp636_; ValaCCodeFunction* _tmp637_; ValaCCodeFunction* _tmp638_; ValaCCodeFunctionCall* _tmp639_; _tmp632_ = destroy_notify; _tmp633_ = vala_ccode_function_call_new (_tmp632_); unref_call = _tmp633_; _tmp634_ = unref_call; _tmp635_ = vala_ccode_identifier_new ("self"); _tmp636_ = _tmp635_; vala_ccode_function_call_add_argument (_tmp634_, (ValaCCodeExpression*) _tmp636_); _vala_ccode_node_unref0 (_tmp636_); _tmp637_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self); _tmp638_ = _tmp637_; _tmp639_ = unref_call; vala_ccode_function_add_expression (_tmp638_, (ValaCCodeExpression*) _tmp639_); _vala_ccode_node_unref0 (unref_call); } _vala_ccode_node_unref0 (destroy_notify); } _tmp641_ = m; _tmp642_ = vala_method_get_return_type (_tmp641_); _tmp643_ = _tmp642_; if (VALA_IS_VOID_TYPE (_tmp643_)) { _tmp640_ = TRUE; } else { ValaMethod* _tmp644_; ValaDataType* _tmp645_; ValaDataType* _tmp646_; gboolean _tmp647_ = FALSE; _tmp644_ = m; _tmp645_ = vala_method_get_return_type (_tmp644_); _tmp646_ = _tmp645_; _tmp647_ = vala_data_type_is_real_non_null_struct_type (_tmp646_); _tmp640_ = _tmp647_; } _tmp648_ = _tmp640_; if (!_tmp648_) { ValaCCodeFunction* _tmp649_; ValaCCodeFunction* _tmp650_; ValaCCodeIdentifier* _tmp651_; ValaCCodeIdentifier* _tmp652_; _tmp649_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self); _tmp650_ = _tmp649_; _tmp651_ = vala_ccode_identifier_new ("result"); _tmp652_ = _tmp651_; vala_ccode_function_add_return (_tmp650_, (ValaCCodeExpression*) _tmp652_); _vala_ccode_node_unref0 (_tmp652_); } vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self); _tmp653_ = ((ValaCCodeBaseModule*) self)->cfile; _tmp654_ = function; vala_ccode_file_add_function_declaration (_tmp653_, _tmp654_); _tmp655_ = ((ValaCCodeBaseModule*) self)->cfile; _tmp656_ = function; vala_ccode_file_add_function (_tmp655_, _tmp656_); result = wrapper_name; _vala_ccode_node_unref0 (ccall); _vala_map_unref0 (carg_map); _vala_iterable_unref0 (d_params); _vala_map_unref0 (cparam_map); _vala_ccode_node_unref0 (function); _g_free0 (return_type_cname); _vala_code_node_unref0 (dynamic_sig); _vala_code_node_unref0 (sig); _g_free0 (delegate_name); _vala_code_node_unref0 (d); return result; } static ValaCCodeParameter* vala_ccode_delegate_module_real_generate_parameter (ValaCCodeMethodModule* base, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map) { ValaCCodeDelegateModule * self; ValaCCodeParameter* result = NULL; gboolean _tmp0_ = FALSE; ValaParameter* _tmp1_; ValaDataType* _tmp2_; ValaDataType* _tmp3_; gboolean _tmp7_; ValaParameter* _tmp13_; ValaDataType* _tmp14_; ValaDataType* _tmp15_; gchar* _tmp16_ = NULL; gchar* ctypename; gchar* _tmp17_; gchar* target_ctypename; gchar* _tmp18_; gchar* target_destroy_notify_ctypename; gboolean _tmp19_ = FALSE; ValaParameter* _tmp20_; ValaSymbol* _tmp21_; ValaSymbol* _tmp22_; gboolean _tmp33_; ValaParameter* _tmp35_; ValaParameterDirection _tmp36_; ValaParameterDirection _tmp37_; ValaParameter* _tmp44_; const gchar* _tmp45_; const gchar* _tmp46_; gchar* _tmp47_ = NULL; gchar* _tmp48_; const gchar* _tmp49_; ValaCCodeParameter* _tmp50_; ValaCCodeParameter* _tmp51_; ValaCCodeParameter* main_cparam; ValaMap* _tmp52_; ValaParameter* _tmp53_; gdouble _tmp54_ = 0.0; gint _tmp55_ = 0; ValaCCodeParameter* _tmp56_; ValaMap* _tmp57_; ValaParameter* _tmp67_; ValaDataType* _tmp68_; ValaDataType* _tmp69_; self = (ValaCCodeDelegateModule*) base; g_return_val_if_fail (param != NULL, NULL); g_return_val_if_fail (decl_space != NULL, NULL); g_return_val_if_fail (cparam_map != NULL, NULL); _tmp1_ = param; _tmp2_ = vala_variable_get_variable_type ((ValaVariable*) _tmp1_); _tmp3_ = _tmp2_; if (VALA_IS_DELEGATE_TYPE (_tmp3_)) { _tmp0_ = TRUE; } else { ValaParameter* _tmp4_; ValaDataType* _tmp5_; ValaDataType* _tmp6_; _tmp4_ = param; _tmp5_ = vala_variable_get_variable_type ((ValaVariable*) _tmp4_); _tmp6_ = _tmp5_; _tmp0_ = VALA_IS_METHOD_TYPE (_tmp6_); } _tmp7_ = _tmp0_; if (!_tmp7_) { ValaParameter* _tmp8_; ValaCCodeFile* _tmp9_; ValaMap* _tmp10_; ValaMap* _tmp11_; ValaCCodeParameter* _tmp12_ = NULL; _tmp8_ = param; _tmp9_ = decl_space; _tmp10_ = cparam_map; _tmp11_ = carg_map; _tmp12_ = VALA_CCODE_METHOD_MODULE_CLASS (vala_ccode_delegate_module_parent_class)->generate_parameter ((ValaCCodeMethodModule*) VALA_CCODE_ARRAY_MODULE (self), _tmp8_, _tmp9_, _tmp10_, _tmp11_); result = _tmp12_; return result; } _tmp13_ = param; _tmp14_ = vala_variable_get_variable_type ((ValaVariable*) _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp15_); ctypename = _tmp16_; _tmp17_ = g_strdup ("void*"); target_ctypename = _tmp17_; _tmp18_ = g_strdup ("GDestroyNotify"); target_destroy_notify_ctypename = _tmp18_; _tmp20_ = param; _tmp21_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp20_); _tmp22_ = _tmp21_; if (VALA_IS_DELEGATE (_tmp22_)) { ValaParameter* _tmp23_; ValaDataType* _tmp24_; ValaDataType* _tmp25_; gchar* _tmp26_ = NULL; gchar* _tmp27_; ValaParameter* _tmp28_; ValaSymbol* _tmp29_; ValaSymbol* _tmp30_; gchar* _tmp31_ = NULL; gchar* _tmp32_; _tmp23_ = param; _tmp24_ = vala_variable_get_variable_type ((ValaVariable*) _tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp25_); _tmp27_ = _tmp26_; _tmp28_ = param; _tmp29_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp28_); _tmp30_ = _tmp29_; _tmp31_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp30_); _tmp32_ = _tmp31_; _tmp19_ = g_strcmp0 (_tmp27_, _tmp32_) == 0; _g_free0 (_tmp32_); _g_free0 (_tmp27_); } else { _tmp19_ = FALSE; } _tmp33_ = _tmp19_; if (_tmp33_) { gchar* _tmp34_; _tmp34_ = g_strdup ("GCallback"); _g_free0 (ctypename); ctypename = _tmp34_; } _tmp35_ = param; _tmp36_ = vala_parameter_get_direction (_tmp35_); _tmp37_ = _tmp36_; if (_tmp37_ != VALA_PARAMETER_DIRECTION_IN) { const gchar* _tmp38_; gchar* _tmp39_; const gchar* _tmp40_; gchar* _tmp41_; const gchar* _tmp42_; gchar* _tmp43_; _tmp38_ = ctypename; _tmp39_ = g_strconcat (_tmp38_, "*", NULL); _g_free0 (ctypename); ctypename = _tmp39_; _tmp40_ = target_ctypename; _tmp41_ = g_strconcat (_tmp40_, "*", NULL); _g_free0 (target_ctypename); target_ctypename = _tmp41_; _tmp42_ = target_destroy_notify_ctypename; _tmp43_ = g_strconcat (_tmp42_, "*", NULL); _g_free0 (target_destroy_notify_ctypename); target_destroy_notify_ctypename = _tmp43_; } _tmp44_ = param; _tmp45_ = vala_symbol_get_name ((ValaSymbol*) _tmp44_); _tmp46_ = _tmp45_; _tmp47_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp46_); _tmp48_ = _tmp47_; _tmp49_ = ctypename; _tmp50_ = vala_ccode_parameter_new (_tmp48_, _tmp49_); _tmp51_ = _tmp50_; _g_free0 (_tmp48_); main_cparam = _tmp51_; _tmp52_ = cparam_map; _tmp53_ = param; _tmp54_ = vala_ccode_base_module_get_ccode_pos (_tmp53_); _tmp55_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp54_, FALSE); _tmp56_ = main_cparam; vala_map_set (_tmp52_, GINT_TO_POINTER (_tmp55_), _tmp56_); _tmp57_ = carg_map; if (_tmp57_ != NULL) { ValaMap* _tmp58_; ValaParameter* _tmp59_; gdouble _tmp60_ = 0.0; gint _tmp61_ = 0; ValaParameter* _tmp62_; const gchar* _tmp63_; const gchar* _tmp64_; ValaCCodeExpression* _tmp65_ = NULL; ValaCCodeExpression* _tmp66_; _tmp58_ = carg_map; _tmp59_ = param; _tmp60_ = vala_ccode_base_module_get_ccode_pos (_tmp59_); _tmp61_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp60_, FALSE); _tmp62_ = param; _tmp63_ = vala_symbol_get_name ((ValaSymbol*) _tmp62_); _tmp64_ = _tmp63_; _tmp65_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp64_); _tmp66_ = _tmp65_; vala_map_set (_tmp58_, GINT_TO_POINTER (_tmp61_), _tmp66_); _vala_ccode_node_unref0 (_tmp66_); } _tmp67_ = param; _tmp68_ = vala_variable_get_variable_type ((ValaVariable*) _tmp67_); _tmp69_ = _tmp68_; if (VALA_IS_DELEGATE_TYPE (_tmp69_)) { ValaParameter* _tmp70_; ValaDataType* _tmp71_; ValaDataType* _tmp72_; ValaDelegateType* _tmp73_; ValaDelegateType* deleg_type; ValaDelegateType* _tmp74_; ValaDelegate* _tmp75_; ValaDelegate* _tmp76_; ValaDelegate* _tmp77_; ValaDelegate* d; ValaDelegate* _tmp78_; ValaCCodeFile* _tmp79_; ValaDelegate* _tmp80_; gboolean _tmp81_; gboolean _tmp82_; _tmp70_ = param; _tmp71_ = vala_variable_get_variable_type ((ValaVariable*) _tmp70_); _tmp72_ = _tmp71_; _tmp73_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp72_)); deleg_type = _tmp73_; _tmp74_ = deleg_type; _tmp75_ = vala_delegate_type_get_delegate_symbol (_tmp74_); _tmp76_ = _tmp75_; _tmp77_ = _vala_code_node_ref0 (_tmp76_); d = _tmp77_; _tmp78_ = d; _tmp79_ = decl_space; vala_ccode_base_module_generate_delegate_declaration ((ValaCCodeBaseModule*) self, _tmp78_, _tmp79_); _tmp80_ = d; _tmp81_ = vala_delegate_get_has_target (_tmp80_); _tmp82_ = _tmp81_; if (_tmp82_) { ValaParameter* _tmp83_; const gchar* _tmp84_; const gchar* _tmp85_; gchar* _tmp86_ = NULL; gchar* _tmp87_; gchar* _tmp88_ = NULL; gchar* _tmp89_; const gchar* _tmp90_; ValaCCodeParameter* _tmp91_; ValaCCodeParameter* _tmp92_; ValaCCodeParameter* cparam; ValaMap* _tmp93_; ValaParameter* _tmp94_; gdouble _tmp95_ = 0.0; gint _tmp96_ = 0; ValaCCodeParameter* _tmp97_; ValaMap* _tmp98_; ValaDelegateType* _tmp108_; gboolean _tmp109_; gboolean _tmp110_; _tmp83_ = param; _tmp84_ = vala_symbol_get_name ((ValaSymbol*) _tmp83_); _tmp85_ = _tmp84_; _tmp86_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp85_); _tmp87_ = _tmp86_; _tmp88_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp87_); _tmp89_ = _tmp88_; _tmp90_ = target_ctypename; _tmp91_ = vala_ccode_parameter_new (_tmp89_, _tmp90_); _tmp92_ = _tmp91_; _g_free0 (_tmp89_); _g_free0 (_tmp87_); cparam = _tmp92_; _tmp93_ = cparam_map; _tmp94_ = param; _tmp95_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp94_); _tmp96_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp95_, FALSE); _tmp97_ = cparam; vala_map_set (_tmp93_, GINT_TO_POINTER (_tmp96_), _tmp97_); _tmp98_ = carg_map; if (_tmp98_ != NULL) { ValaMap* _tmp99_; ValaParameter* _tmp100_; gdouble _tmp101_ = 0.0; gint _tmp102_ = 0; ValaCCodeParameter* _tmp103_; const gchar* _tmp104_; const gchar* _tmp105_; ValaCCodeExpression* _tmp106_ = NULL; ValaCCodeExpression* _tmp107_; _tmp99_ = carg_map; _tmp100_ = param; _tmp101_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp100_); _tmp102_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp101_, FALSE); _tmp103_ = cparam; _tmp104_ = vala_ccode_parameter_get_name (_tmp103_); _tmp105_ = _tmp104_; _tmp106_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp105_); _tmp107_ = _tmp106_; vala_map_set (_tmp99_, GINT_TO_POINTER (_tmp102_), _tmp107_); _vala_ccode_node_unref0 (_tmp107_); } _tmp108_ = deleg_type; _tmp109_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp108_); _tmp110_ = _tmp109_; if (_tmp110_) { ValaParameter* _tmp111_; const gchar* _tmp112_; const gchar* _tmp113_; gchar* _tmp114_ = NULL; gchar* _tmp115_; gchar* _tmp116_ = NULL; gchar* _tmp117_; const gchar* _tmp118_; ValaCCodeParameter* _tmp119_; ValaMap* _tmp120_; ValaParameter* _tmp121_; gdouble _tmp122_ = 0.0; gint _tmp123_ = 0; ValaCCodeParameter* _tmp124_; ValaMap* _tmp125_; _tmp111_ = param; _tmp112_ = vala_symbol_get_name ((ValaSymbol*) _tmp111_); _tmp113_ = _tmp112_; _tmp114_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp113_); _tmp115_ = _tmp114_; _tmp116_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp115_); _tmp117_ = _tmp116_; _tmp118_ = target_destroy_notify_ctypename; _tmp119_ = vala_ccode_parameter_new (_tmp117_, _tmp118_); _vala_ccode_node_unref0 (cparam); cparam = _tmp119_; _g_free0 (_tmp117_); _g_free0 (_tmp115_); _tmp120_ = cparam_map; _tmp121_ = param; _tmp122_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp121_); _tmp123_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp122_ + 0.01, FALSE); _tmp124_ = cparam; vala_map_set (_tmp120_, GINT_TO_POINTER (_tmp123_), _tmp124_); _tmp125_ = carg_map; if (_tmp125_ != NULL) { ValaMap* _tmp126_; ValaParameter* _tmp127_; gdouble _tmp128_ = 0.0; gint _tmp129_ = 0; ValaCCodeParameter* _tmp130_; const gchar* _tmp131_; const gchar* _tmp132_; ValaCCodeExpression* _tmp133_ = NULL; ValaCCodeExpression* _tmp134_; _tmp126_ = carg_map; _tmp127_ = param; _tmp128_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp127_); _tmp129_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp128_ + 0.01, FALSE); _tmp130_ = cparam; _tmp131_ = vala_ccode_parameter_get_name (_tmp130_); _tmp132_ = _tmp131_; _tmp133_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp132_); _tmp134_ = _tmp133_; vala_map_set (_tmp126_, GINT_TO_POINTER (_tmp129_), _tmp134_); _vala_ccode_node_unref0 (_tmp134_); } } _vala_ccode_node_unref0 (cparam); } _vala_code_node_unref0 (d); _vala_code_node_unref0 (deleg_type); } else { ValaParameter* _tmp135_; ValaDataType* _tmp136_; ValaDataType* _tmp137_; _tmp135_ = param; _tmp136_ = vala_variable_get_variable_type ((ValaVariable*) _tmp135_); _tmp137_ = _tmp136_; if (VALA_IS_METHOD_TYPE (_tmp137_)) { ValaParameter* _tmp138_; const gchar* _tmp139_; const gchar* _tmp140_; gchar* _tmp141_ = NULL; gchar* _tmp142_; gchar* _tmp143_ = NULL; gchar* _tmp144_; const gchar* _tmp145_; ValaCCodeParameter* _tmp146_; ValaCCodeParameter* _tmp147_; ValaCCodeParameter* cparam; ValaMap* _tmp148_; ValaParameter* _tmp149_; gdouble _tmp150_ = 0.0; gint _tmp151_ = 0; ValaCCodeParameter* _tmp152_; ValaMap* _tmp153_; _tmp138_ = param; _tmp139_ = vala_symbol_get_name ((ValaSymbol*) _tmp138_); _tmp140_ = _tmp139_; _tmp141_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp140_); _tmp142_ = _tmp141_; _tmp143_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp142_); _tmp144_ = _tmp143_; _tmp145_ = target_ctypename; _tmp146_ = vala_ccode_parameter_new (_tmp144_, _tmp145_); _tmp147_ = _tmp146_; _g_free0 (_tmp144_); _g_free0 (_tmp142_); cparam = _tmp147_; _tmp148_ = cparam_map; _tmp149_ = param; _tmp150_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp149_); _tmp151_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp150_, FALSE); _tmp152_ = cparam; vala_map_set (_tmp148_, GINT_TO_POINTER (_tmp151_), _tmp152_); _tmp153_ = carg_map; if (_tmp153_ != NULL) { ValaMap* _tmp154_; ValaParameter* _tmp155_; gdouble _tmp156_ = 0.0; gint _tmp157_ = 0; ValaCCodeParameter* _tmp158_; const gchar* _tmp159_; const gchar* _tmp160_; ValaCCodeExpression* _tmp161_ = NULL; ValaCCodeExpression* _tmp162_; _tmp154_ = carg_map; _tmp155_ = param; _tmp156_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp155_); _tmp157_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp156_, FALSE); _tmp158_ = cparam; _tmp159_ = vala_ccode_parameter_get_name (_tmp158_); _tmp160_ = _tmp159_; _tmp161_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp160_); _tmp162_ = _tmp161_; vala_map_set (_tmp154_, GINT_TO_POINTER (_tmp157_), _tmp162_); _vala_ccode_node_unref0 (_tmp162_); } _vala_ccode_node_unref0 (cparam); } } result = main_cparam; _g_free0 (target_destroy_notify_ctypename); _g_free0 (target_ctypename); _g_free0 (ctypename); return result; } ValaCCodeDelegateModule* vala_ccode_delegate_module_construct (GType object_type) { ValaCCodeDelegateModule* self = NULL; self = (ValaCCodeDelegateModule*) vala_ccode_array_module_construct (object_type); return self; } ValaCCodeDelegateModule* vala_ccode_delegate_module_new (void) { return vala_ccode_delegate_module_construct (VALA_TYPE_CCODE_DELEGATE_MODULE); } static void vala_ccode_delegate_module_class_init (ValaCCodeDelegateModuleClass * klass) { vala_ccode_delegate_module_parent_class = g_type_class_peek_parent (klass); VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_delegate_declaration = vala_ccode_delegate_module_real_generate_delegate_declaration; VALA_CODE_VISITOR_CLASS (klass)->visit_delegate = vala_ccode_delegate_module_real_visit_delegate; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cname = vala_ccode_delegate_module_real_get_delegate_target_cname; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cexpression = vala_ccode_delegate_module_real_get_delegate_target_cexpression; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cvalue = vala_ccode_delegate_module_real_get_delegate_target_cvalue; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_destroy_notify_cvalue = vala_ccode_delegate_module_real_get_delegate_target_destroy_notify_cvalue; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_destroy_notify_cname = vala_ccode_delegate_module_real_get_delegate_target_destroy_notify_cname; VALA_CCODE_BASE_MODULE_CLASS (klass)->get_implicit_cast_expression = vala_ccode_delegate_module_real_get_implicit_cast_expression; VALA_CCODE_METHOD_MODULE_CLASS (klass)->generate_parameter = vala_ccode_delegate_module_real_generate_parameter; } static void vala_ccode_delegate_module_instance_init (ValaCCodeDelegateModule * self) { } /** * The link between an assignment and generated code. */ GType vala_ccode_delegate_module_get_type (void) { static volatile gsize vala_ccode_delegate_module_type_id__volatile = 0; if (g_once_init_enter (&vala_ccode_delegate_module_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (ValaCCodeDelegateModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_ccode_delegate_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaCCodeDelegateModule), 0, (GInstanceInitFunc) vala_ccode_delegate_module_instance_init, NULL }; GType vala_ccode_delegate_module_type_id; vala_ccode_delegate_module_type_id = g_type_register_static (VALA_TYPE_CCODE_ARRAY_MODULE, "ValaCCodeDelegateModule", &g_define_type_info, 0); g_once_init_leave (&vala_ccode_delegate_module_type_id__volatile, vala_ccode_delegate_module_type_id); } return vala_ccode_delegate_module_type_id__volatile; }