/* valadovaobjectmodule.c generated by valac, the Vala compiler * generated from valadovaobjectmodule.vala, do not modify */ /* valadovaobjectmodule.vala * * Copyright (C) 2009-2011 Jürg Billeter * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Author: * Jürg Billeter */ #include #include #include #include #include #include #include #define VALA_TYPE_DOVA_BASE_MODULE (vala_dova_base_module_get_type ()) #define VALA_DOVA_BASE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_BASE_MODULE, ValaDovaBaseModule)) #define VALA_DOVA_BASE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_BASE_MODULE, ValaDovaBaseModuleClass)) #define VALA_IS_DOVA_BASE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_BASE_MODULE)) #define VALA_IS_DOVA_BASE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_BASE_MODULE)) #define VALA_DOVA_BASE_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_BASE_MODULE, ValaDovaBaseModuleClass)) typedef struct _ValaDovaBaseModule ValaDovaBaseModule; typedef struct _ValaDovaBaseModuleClass ValaDovaBaseModuleClass; typedef struct _ValaDovaBaseModulePrivate ValaDovaBaseModulePrivate; #define VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT (vala_dova_base_module_emit_context_get_type ()) #define VALA_DOVA_BASE_MODULE_EMIT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaDovaBaseModuleEmitContext)) #define VALA_DOVA_BASE_MODULE_EMIT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaDovaBaseModuleEmitContextClass)) #define VALA_DOVA_BASE_MODULE_IS_EMIT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT)) #define VALA_DOVA_BASE_MODULE_IS_EMIT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT)) #define VALA_DOVA_BASE_MODULE_EMIT_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaDovaBaseModuleEmitContextClass)) typedef struct _ValaDovaBaseModuleEmitContext ValaDovaBaseModuleEmitContext; typedef struct _ValaDovaBaseModuleEmitContextClass ValaDovaBaseModuleEmitContextClass; #define VALA_TYPE_DOVA_STRUCT_MODULE (vala_dova_struct_module_get_type ()) #define VALA_DOVA_STRUCT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_STRUCT_MODULE, ValaDovaStructModule)) #define VALA_DOVA_STRUCT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_STRUCT_MODULE, ValaDovaStructModuleClass)) #define VALA_IS_DOVA_STRUCT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_STRUCT_MODULE)) #define VALA_IS_DOVA_STRUCT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_STRUCT_MODULE)) #define VALA_DOVA_STRUCT_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_STRUCT_MODULE, ValaDovaStructModuleClass)) typedef struct _ValaDovaStructModule ValaDovaStructModule; typedef struct _ValaDovaStructModuleClass ValaDovaStructModuleClass; typedef struct _ValaDovaStructModulePrivate ValaDovaStructModulePrivate; #define VALA_TYPE_DOVA_METHOD_MODULE (vala_dova_method_module_get_type ()) #define VALA_DOVA_METHOD_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_METHOD_MODULE, ValaDovaMethodModule)) #define VALA_DOVA_METHOD_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_METHOD_MODULE, ValaDovaMethodModuleClass)) #define VALA_IS_DOVA_METHOD_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_METHOD_MODULE)) #define VALA_IS_DOVA_METHOD_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_METHOD_MODULE)) #define VALA_DOVA_METHOD_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_METHOD_MODULE, ValaDovaMethodModuleClass)) typedef struct _ValaDovaMethodModule ValaDovaMethodModule; typedef struct _ValaDovaMethodModuleClass ValaDovaMethodModuleClass; typedef struct _ValaDovaMethodModulePrivate ValaDovaMethodModulePrivate; #define VALA_TYPE_DOVA_CONTROL_FLOW_MODULE (vala_dova_control_flow_module_get_type ()) #define VALA_DOVA_CONTROL_FLOW_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_CONTROL_FLOW_MODULE, ValaDovaControlFlowModule)) #define VALA_DOVA_CONTROL_FLOW_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_CONTROL_FLOW_MODULE, ValaDovaControlFlowModuleClass)) #define VALA_IS_DOVA_CONTROL_FLOW_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_CONTROL_FLOW_MODULE)) #define VALA_IS_DOVA_CONTROL_FLOW_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_CONTROL_FLOW_MODULE)) #define VALA_DOVA_CONTROL_FLOW_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_CONTROL_FLOW_MODULE, ValaDovaControlFlowModuleClass)) typedef struct _ValaDovaControlFlowModule ValaDovaControlFlowModule; typedef struct _ValaDovaControlFlowModuleClass ValaDovaControlFlowModuleClass; typedef struct _ValaDovaControlFlowModulePrivate ValaDovaControlFlowModulePrivate; #define VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE (vala_dova_member_access_module_get_type ()) #define VALA_DOVA_MEMBER_ACCESS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE, ValaDovaMemberAccessModule)) #define VALA_DOVA_MEMBER_ACCESS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE, ValaDovaMemberAccessModuleClass)) #define VALA_IS_DOVA_MEMBER_ACCESS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE)) #define VALA_IS_DOVA_MEMBER_ACCESS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE)) #define VALA_DOVA_MEMBER_ACCESS_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE, ValaDovaMemberAccessModuleClass)) typedef struct _ValaDovaMemberAccessModule ValaDovaMemberAccessModule; typedef struct _ValaDovaMemberAccessModuleClass ValaDovaMemberAccessModuleClass; typedef struct _ValaDovaMemberAccessModulePrivate ValaDovaMemberAccessModulePrivate; #define VALA_TYPE_DOVA_ASSIGNMENT_MODULE (vala_dova_assignment_module_get_type ()) #define VALA_DOVA_ASSIGNMENT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_ASSIGNMENT_MODULE, ValaDovaAssignmentModule)) #define VALA_DOVA_ASSIGNMENT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_ASSIGNMENT_MODULE, ValaDovaAssignmentModuleClass)) #define VALA_IS_DOVA_ASSIGNMENT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_ASSIGNMENT_MODULE)) #define VALA_IS_DOVA_ASSIGNMENT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_ASSIGNMENT_MODULE)) #define VALA_DOVA_ASSIGNMENT_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_ASSIGNMENT_MODULE, ValaDovaAssignmentModuleClass)) typedef struct _ValaDovaAssignmentModule ValaDovaAssignmentModule; typedef struct _ValaDovaAssignmentModuleClass ValaDovaAssignmentModuleClass; typedef struct _ValaDovaAssignmentModulePrivate ValaDovaAssignmentModulePrivate; #define VALA_TYPE_DOVA_METHOD_CALL_MODULE (vala_dova_method_call_module_get_type ()) #define VALA_DOVA_METHOD_CALL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_METHOD_CALL_MODULE, ValaDovaMethodCallModule)) #define VALA_DOVA_METHOD_CALL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_METHOD_CALL_MODULE, ValaDovaMethodCallModuleClass)) #define VALA_IS_DOVA_METHOD_CALL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_METHOD_CALL_MODULE)) #define VALA_IS_DOVA_METHOD_CALL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_METHOD_CALL_MODULE)) #define VALA_DOVA_METHOD_CALL_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_METHOD_CALL_MODULE, ValaDovaMethodCallModuleClass)) typedef struct _ValaDovaMethodCallModule ValaDovaMethodCallModule; typedef struct _ValaDovaMethodCallModuleClass ValaDovaMethodCallModuleClass; typedef struct _ValaDovaMethodCallModulePrivate ValaDovaMethodCallModulePrivate; #define VALA_TYPE_DOVA_ARRAY_MODULE (vala_dova_array_module_get_type ()) #define VALA_DOVA_ARRAY_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_ARRAY_MODULE, ValaDovaArrayModule)) #define VALA_DOVA_ARRAY_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_ARRAY_MODULE, ValaDovaArrayModuleClass)) #define VALA_IS_DOVA_ARRAY_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_ARRAY_MODULE)) #define VALA_IS_DOVA_ARRAY_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_ARRAY_MODULE)) #define VALA_DOVA_ARRAY_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_ARRAY_MODULE, ValaDovaArrayModuleClass)) typedef struct _ValaDovaArrayModule ValaDovaArrayModule; typedef struct _ValaDovaArrayModuleClass ValaDovaArrayModuleClass; typedef struct _ValaDovaArrayModulePrivate ValaDovaArrayModulePrivate; #define VALA_TYPE_DOVA_OBJECT_MODULE (vala_dova_object_module_get_type ()) #define VALA_DOVA_OBJECT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_OBJECT_MODULE, ValaDovaObjectModule)) #define VALA_DOVA_OBJECT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_OBJECT_MODULE, ValaDovaObjectModuleClass)) #define VALA_IS_DOVA_OBJECT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_OBJECT_MODULE)) #define VALA_IS_DOVA_OBJECT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_OBJECT_MODULE)) #define VALA_DOVA_OBJECT_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_OBJECT_MODULE, ValaDovaObjectModuleClass)) typedef struct _ValaDovaObjectModule ValaDovaObjectModule; typedef struct _ValaDovaObjectModuleClass ValaDovaObjectModuleClass; typedef struct _ValaDovaObjectModulePrivate ValaDovaObjectModulePrivate; #define _g_free0(var) (var = (g_free (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_dova_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_dova_base_module_emit_context_unref (var), NULL))) struct _ValaDovaBaseModule { ValaCodeGenerator parent_instance; ValaDovaBaseModulePrivate * priv; ValaSymbol* root_symbol; ValaDovaBaseModuleEmitContext* emit_context; ValaCCodeFile* header_file; ValaCCodeFile* cfile; ValaList* static_fields; gint next_wrapper_id; ValaDataType* void_type; ValaDataType* bool_type; ValaDataType* char_type; ValaDataType* int_type; ValaDataType* uint_type; ValaDataType* string_type; ValaClass* object_class; ValaClass* type_class; ValaClass* value_class; ValaClass* string_class; ValaStruct* array_struct; ValaClass* delegate_class; ValaClass* error_class; }; struct _ValaDovaBaseModuleClass { ValaCodeGeneratorClass parent_class; void (*generate_struct_declaration) (ValaDovaBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space); void (*generate_delegate_declaration) (ValaDovaBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space); void (*generate_cparameters) (ValaDovaBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaCCodeFunctionCall* vcall); void (*generate_property_accessor_declaration) (ValaDovaBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space); ValaCCodeExpression* (*get_dup_func_expression) (ValaDovaBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup); void (*append_local_free) (ValaDovaBaseModule* self, ValaSymbol* sym, gboolean stop_at_loop, ValaCodeNode* stop_at); ValaCCodeExpression* (*get_ref_cexpression) (ValaDovaBaseModule* self, ValaDataType* expression_type, ValaCCodeExpression* cexpr, ValaExpression* expr, ValaCodeNode* node); void (*generate_class_declaration) (ValaDovaBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space); void (*generate_interface_declaration) (ValaDovaBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space); void (*generate_method_declaration) (ValaDovaBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space); ValaCCodeExpression* (*get_implicit_cast_expression) (ValaDovaBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaExpression* expr); gchar* (*get_custom_creturn_type) (ValaDovaBaseModule* self, ValaMethod* m); gboolean (*method_has_wrapper) (ValaDovaBaseModule* self, ValaMethod* method); void (*add_simple_check) (ValaDovaBaseModule* self, ValaCodeNode* node, gboolean always_fails); }; struct _ValaDovaStructModule { ValaDovaBaseModule parent_instance; ValaDovaStructModulePrivate * priv; }; struct _ValaDovaStructModuleClass { ValaDovaBaseModuleClass parent_class; }; struct _ValaDovaMethodModule { ValaDovaStructModule parent_instance; ValaDovaMethodModulePrivate * priv; }; struct _ValaDovaMethodModuleClass { ValaDovaStructModuleClass parent_class; }; struct _ValaDovaControlFlowModule { ValaDovaMethodModule parent_instance; ValaDovaControlFlowModulePrivate * priv; }; struct _ValaDovaControlFlowModuleClass { ValaDovaMethodModuleClass parent_class; }; struct _ValaDovaMemberAccessModule { ValaDovaControlFlowModule parent_instance; ValaDovaMemberAccessModulePrivate * priv; }; struct _ValaDovaMemberAccessModuleClass { ValaDovaControlFlowModuleClass parent_class; }; struct _ValaDovaAssignmentModule { ValaDovaMemberAccessModule parent_instance; ValaDovaAssignmentModulePrivate * priv; }; struct _ValaDovaAssignmentModuleClass { ValaDovaMemberAccessModuleClass parent_class; void (*store_variable) (ValaDovaAssignmentModule* self, ValaVariable* variable, ValaTargetValue* lvalue, ValaTargetValue* value, gboolean initializer); }; struct _ValaDovaMethodCallModule { ValaDovaAssignmentModule parent_instance; ValaDovaMethodCallModulePrivate * priv; }; struct _ValaDovaMethodCallModuleClass { ValaDovaAssignmentModuleClass parent_class; }; struct _ValaDovaArrayModule { ValaDovaMethodCallModule parent_instance; ValaDovaArrayModulePrivate * priv; }; struct _ValaDovaArrayModuleClass { ValaDovaMethodCallModuleClass parent_class; }; struct _ValaDovaObjectModule { ValaDovaArrayModule parent_instance; ValaDovaObjectModulePrivate * priv; }; struct _ValaDovaObjectModuleClass { ValaDovaArrayModuleClass parent_class; }; static gpointer vala_dova_object_module_parent_class = NULL; GType vala_dova_base_module_get_type (void) G_GNUC_CONST; gpointer vala_dova_base_module_emit_context_ref (gpointer instance); void vala_dova_base_module_emit_context_unref (gpointer instance); GParamSpec* vala_dova_base_module_param_spec_emit_context (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void vala_dova_base_module_value_set_emit_context (GValue* value, gpointer v_object); void vala_dova_base_module_value_take_emit_context (GValue* value, gpointer v_object); gpointer vala_dova_base_module_value_get_emit_context (const GValue* value); GType vala_dova_base_module_emit_context_get_type (void) G_GNUC_CONST; GType vala_dova_struct_module_get_type (void) G_GNUC_CONST; GType vala_dova_method_module_get_type (void) G_GNUC_CONST; GType vala_dova_control_flow_module_get_type (void) G_GNUC_CONST; GType vala_dova_member_access_module_get_type (void) G_GNUC_CONST; GType vala_dova_assignment_module_get_type (void) G_GNUC_CONST; GType vala_dova_method_call_module_get_type (void) G_GNUC_CONST; GType vala_dova_array_module_get_type (void) G_GNUC_CONST; GType vala_dova_object_module_get_type (void) G_GNUC_CONST; enum { VALA_DOVA_OBJECT_MODULE_DUMMY_PROPERTY }; static void vala_dova_object_module_real_generate_class_declaration (ValaDovaBaseModule* base, ValaClass* cl, ValaCCodeFile* decl_space); gboolean vala_dova_base_module_add_symbol_declaration (ValaDovaBaseModule* self, ValaCCodeFile* decl_space, ValaSymbol* sym, const gchar* name); gchar* vala_dova_base_module_get_ccode_name (ValaDovaBaseModule* self, ValaCodeNode* node); void vala_dova_base_module_generate_class_declaration (ValaDovaBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space); void vala_dova_base_module_generate_method_declaration (ValaDovaBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space); gchar* vala_dova_base_module_get_ccode_lower_case_name (ValaDovaBaseModule* self, ValaCodeNode* node, const gchar* infix); static void vala_dova_object_module_generate_virtual_method_declaration (ValaDovaObjectModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct); gchar* vala_dova_base_module_get_ccode_vfunc_name (ValaDovaBaseModule* self, ValaMethod* node); void vala_dova_base_module_generate_cparameters (ValaDovaBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaCCodeFunctionCall* vcall); static gboolean vala_dova_object_module_has_instance_struct (ValaDovaObjectModule* self, ValaClass* cl); static gboolean vala_dova_object_module_has_type_struct (ValaDovaObjectModule* self, ValaClass* cl); static void vala_dova_object_module_generate_class_private_declaration (ValaDovaObjectModule* self, ValaClass* cl, ValaCCodeFile* decl_space); void vala_dova_base_module_generate_type_declaration (ValaDovaBaseModule* self, ValaDataType* type, ValaCCodeFile* decl_space); gchar* vala_dova_base_module_get_ccode_declarator_suffix (ValaDovaBaseModule* self, ValaDataType* type); gchar* vala_dova_base_module_get_ccode_upper_case_name (ValaDovaBaseModule* self, ValaSymbol* node, const gchar* infix); static ValaCCodeFunction* vala_dova_object_module_create_set_value_copy_function (ValaDovaObjectModule* self, gboolean decl_only); void vala_dova_object_module_declare_set_value_copy_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space); static ValaCCodeFunction* vala_dova_object_module_create_set_value_equals_function (ValaDovaObjectModule* self, gboolean decl_only); void vala_dova_object_module_declare_set_value_equals_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space); static ValaCCodeFunction* vala_dova_object_module_create_set_value_hash_function (ValaDovaObjectModule* self, gboolean decl_only); void vala_dova_object_module_declare_set_value_hash_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space); static ValaCCodeFunction* vala_dova_object_module_create_set_value_to_any_function (ValaDovaObjectModule* self, gboolean decl_only); void vala_dova_object_module_declare_set_value_to_any_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space); static ValaCCodeFunction* vala_dova_object_module_create_set_value_from_any_function (ValaDovaObjectModule* self, gboolean decl_only); void vala_dova_object_module_declare_set_value_from_any_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space); ValaCCodeBlock* vala_dova_object_module_generate_type_get_function (ValaDovaObjectModule* self, ValaTypeSymbol* cl, ValaClass* base_class); void vala_dova_base_module_generate_property_accessor_declaration (ValaDovaBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space); ValaCCodeExpression* vala_dova_base_module_get_type_private_from_type (ValaDovaBaseModule* self, ValaObjectTypeSymbol* type_symbol, ValaCCodeExpression* type_expression); ValaCCodeExpression* vala_dova_base_module_get_type_id_expression (ValaDovaBaseModule* self, ValaDataType* type, gboolean is_chainup); static void vala_dova_object_module_add_finalize_function (ValaDovaObjectModule* self, ValaClass* cl); gchar* vala_dova_base_module_get_ccode_lower_case_prefix (ValaDovaBaseModule* self, ValaSymbol* node); void vala_dova_base_module_push_function (ValaDovaBaseModule* self, ValaCCodeFunction* func); gboolean vala_dova_base_module_requires_destroy (ValaDovaBaseModule* self, ValaDataType* type); ValaDataType* vala_dova_base_module_get_data_type_for_symbol (ValaTypeSymbol* sym); void vala_dova_base_module_set_cvalue (ValaDovaBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue); ValaCCodeFunction* vala_dova_base_module_get_ccode (ValaDovaBaseModule* self); ValaCCodeExpression* vala_dova_base_module_get_unref_expression (ValaDovaBaseModule* self, ValaCCodeExpression* cvar, ValaDataType* type, ValaExpression* expr); void vala_dova_base_module_pop_function (ValaDovaBaseModule* self); static void vala_dova_object_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl); void vala_dova_base_module_push_context (ValaDovaBaseModule* self, ValaDovaBaseModuleEmitContext* emit_context); ValaDovaBaseModuleEmitContext* vala_dova_base_module_emit_context_new (ValaSymbol* symbol); ValaDovaBaseModuleEmitContext* vala_dova_base_module_emit_context_construct (GType object_type, ValaSymbol* symbol); void vala_dova_base_module_generate_interface_declaration (ValaDovaBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space); gchar* vala_dova_base_module_get_ccode_real_name (ValaDovaBaseModule* self, ValaMethod* node); void vala_dova_base_module_pop_context (ValaDovaBaseModule* self); static void vala_dova_object_module_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface); static void vala_dova_object_module_real_generate_property_accessor_declaration (ValaDovaBaseModule* base, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space); static void vala_dova_object_module_real_visit_property_accessor (ValaCodeVisitor* base, ValaPropertyAccessor* acc); ValaDataType* vala_dova_base_module_get_current_return_type (ValaDovaBaseModule* self); static ValaCCodeExpression* vala_dova_object_module_get_type_from_instance (ValaDovaObjectModule* self, ValaCCodeExpression* instance_expression); ValaCCodeExpression* vala_dova_base_module_default_value_for_type (ValaDovaBaseModule* self, ValaDataType* type, gboolean initializer_expression); static void vala_dova_object_module_real_generate_interface_declaration (ValaDovaBaseModule* base, ValaInterface* iface, ValaCCodeFile* decl_space); static gboolean vala_dova_object_module_real_method_has_wrapper (ValaDovaBaseModule* base, ValaMethod* method); static gchar* vala_dova_object_module_real_get_custom_creturn_type (ValaDovaBaseModule* base, ValaMethod* m); static void vala_dova_object_module_real_generate_method_declaration (ValaDovaBaseModule* base, ValaMethod* m, ValaCCodeFile* decl_space); static void vala_dova_object_module_real_visit_method (ValaCodeVisitor* base, ValaMethod* m); ValaCodeContext* vala_dova_base_module_get_context (ValaDovaBaseModule* self); static void vala_dova_object_module_add_module_init (ValaDovaObjectModule* self); ValaBlock* vala_dova_base_module_get_current_closure_block (ValaDovaBaseModule* self); gint vala_dova_base_module_get_block_id (ValaDovaBaseModule* self, ValaBlock* b); ValaBlock* vala_dova_base_module_next_closure_block (ValaDovaBaseModule* self, ValaSymbol* sym); ValaClass* vala_dova_base_module_get_current_class (ValaDovaBaseModule* self); ValaCCodeExpression* vala_dova_base_module_get_variable_cexpression (ValaDovaBaseModule* self, const gchar* name); static void vala_dova_object_module_real_visit_creation_method (ValaCodeVisitor* base, ValaCreationMethod* m); ValaTypeSymbol* vala_dova_base_module_get_current_type_symbol (ValaDovaBaseModule* self); static ValaTypeSymbol* vala_dova_object_module_find_parent_type (ValaDovaObjectModule* self, ValaSymbol* sym); static void vala_dova_object_module_real_generate_cparameters (ValaDovaBaseModule* base, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaCCodeFunctionCall* vcall); gchar* vala_dova_base_module_get_variable_cname (ValaDovaBaseModule* self, const gchar* name); static void vala_dova_object_module_real_visit_element_access (ValaCodeVisitor* base, ValaElementAccess* expr); ValaCCodeExpression* vala_dova_base_module_get_cvalue (ValaDovaBaseModule* self, ValaExpression* expr); ValaDovaObjectModule* vala_dova_object_module_new (void); ValaDovaObjectModule* vala_dova_object_module_construct (GType object_type); ValaDovaArrayModule* vala_dova_array_module_new (void); ValaDovaArrayModule* vala_dova_array_module_construct (GType object_type); static void vala_dova_object_module_real_generate_class_declaration (ValaDovaBaseModule* base, ValaClass* cl, ValaCCodeFile* decl_space) { ValaDovaObjectModule * self; ValaCCodeFile* _tmp0_; ValaClass* _tmp1_; ValaClass* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gboolean _tmp5_ = FALSE; gboolean _tmp6_; ValaClass* _tmp7_; ValaClass* _tmp8_; ValaClass* _tmp9_; ValaClass* _tmp56_; ValaClass* _tmp57_; ValaClass* _tmp58_; ValaClass* _tmp119_; ValaClass* _tmp120_; ValaClass* _tmp121_; ValaClass* _tmp124_; ValaScope* _tmp125_; ValaScope* _tmp126_; ValaSymbol* _tmp127_ = NULL; ValaMethod* _tmp128_; ValaCCodeFile* _tmp129_; ValaClass* _tmp130_; ValaScope* _tmp131_; ValaScope* _tmp132_; ValaSymbol* _tmp133_ = NULL; ValaMethod* _tmp134_; ValaCCodeFile* _tmp135_; ValaClass* _tmp136_; gchar* _tmp137_ = NULL; gchar* _tmp138_; gchar* _tmp139_ = NULL; gchar* _tmp140_; ValaCCodeFunction* _tmp141_; ValaCCodeFunction* _tmp142_; ValaCCodeFunction* type_fun; ValaClass* _tmp143_; gboolean _tmp144_ = FALSE; ValaCCodeFile* _tmp167_; ValaCCodeFunction* _tmp168_; ValaClass* _tmp169_; gchar* _tmp170_ = NULL; gchar* _tmp171_; gchar* _tmp172_ = NULL; gchar* _tmp173_; ValaCCodeFunction* _tmp174_; ValaCCodeFunction* _tmp175_; ValaCCodeFunction* type_init_fun; ValaClass* _tmp176_; gboolean _tmp177_ = FALSE; ValaCCodeFunction* _tmp179_; ValaCCodeParameter* _tmp180_; ValaCCodeParameter* _tmp181_; ValaCCodeFile* _tmp203_; ValaCCodeFunction* _tmp204_; self = (ValaDovaObjectModule*) base; g_return_if_fail (cl != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = cl; _tmp2_ = cl; _tmp3_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); if (_tmp6_) { return; } _tmp7_ = cl; _tmp8_ = vala_class_get_base_class (_tmp7_); _tmp9_ = _tmp8_; if (_tmp9_ == NULL) { ValaCCodeFile* _tmp10_; ValaClass* _tmp11_; gchar* _tmp12_ = NULL; gchar* _tmp13_; gchar* _tmp14_ = NULL; gchar* _tmp15_; ValaClass* _tmp16_; gchar* _tmp17_ = NULL; gchar* _tmp18_; ValaCCodeVariableDeclarator* _tmp19_; ValaCCodeVariableDeclarator* _tmp20_; ValaCCodeTypeDefinition* _tmp21_; ValaCCodeTypeDefinition* _tmp22_; _tmp10_ = decl_space; _tmp11_ = cl; _tmp12_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = g_strdup_printf ("struct _%s", _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = cl; _tmp17_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp16_); _tmp18_ = _tmp17_; _tmp19_ = vala_ccode_variable_declarator_new (_tmp18_, NULL, NULL); _tmp20_ = _tmp19_; _tmp21_ = vala_ccode_type_definition_new (_tmp15_, (ValaCCodeDeclarator*) _tmp20_); _tmp22_ = _tmp21_; vala_ccode_file_add_type_declaration (_tmp10_, (ValaCCodeNode*) _tmp22_); _vala_ccode_node_unref0 (_tmp22_); _vala_ccode_node_unref0 (_tmp20_); _g_free0 (_tmp18_); _g_free0 (_tmp15_); _g_free0 (_tmp13_); } else { ValaClass* _tmp23_; ValaDataType* _tmp24_; ValaTypeSymbol* _tmp25_; ValaTypeSymbol* _tmp26_; _tmp23_ = cl; _tmp24_ = ((ValaDovaBaseModule*) self)->string_type; _tmp25_ = vala_data_type_get_data_type (_tmp24_); _tmp26_ = _tmp25_; if (VALA_TYPESYMBOL (_tmp23_) == _tmp26_) { ValaClass* _tmp27_; ValaClass* _tmp28_; ValaClass* _tmp29_; ValaCCodeFile* _tmp30_; ValaCCodeFile* _tmp31_; ValaClass* _tmp32_; gchar* _tmp33_ = NULL; gchar* _tmp34_; ValaCCodeVariableDeclarator* _tmp35_; ValaCCodeVariableDeclarator* _tmp36_; ValaCCodeTypeDefinition* _tmp37_; ValaCCodeTypeDefinition* _tmp38_; _tmp27_ = cl; _tmp28_ = vala_class_get_base_class (_tmp27_); _tmp29_ = _tmp28_; _tmp30_ = decl_space; vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, _tmp29_, _tmp30_); _tmp31_ = decl_space; _tmp32_ = cl; _tmp33_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp32_); _tmp34_ = _tmp33_; _tmp35_ = vala_ccode_variable_declarator_new (_tmp34_, NULL, NULL); _tmp36_ = _tmp35_; _tmp37_ = vala_ccode_type_definition_new ("const uint8_t *", (ValaCCodeDeclarator*) _tmp36_); _tmp38_ = _tmp37_; vala_ccode_file_add_type_declaration (_tmp31_, (ValaCCodeNode*) _tmp38_); _vala_ccode_node_unref0 (_tmp38_); _vala_ccode_node_unref0 (_tmp36_); _g_free0 (_tmp34_); } else { ValaClass* _tmp39_; ValaClass* _tmp40_; ValaClass* _tmp41_; ValaCCodeFile* _tmp42_; ValaCCodeFile* _tmp43_; ValaClass* _tmp44_; ValaClass* _tmp45_; ValaClass* _tmp46_; gchar* _tmp47_ = NULL; gchar* _tmp48_; ValaClass* _tmp49_; gchar* _tmp50_ = NULL; gchar* _tmp51_; ValaCCodeVariableDeclarator* _tmp52_; ValaCCodeVariableDeclarator* _tmp53_; ValaCCodeTypeDefinition* _tmp54_; ValaCCodeTypeDefinition* _tmp55_; _tmp39_ = cl; _tmp40_ = vala_class_get_base_class (_tmp39_); _tmp41_ = _tmp40_; _tmp42_ = decl_space; vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, _tmp41_, _tmp42_); _tmp43_ = decl_space; _tmp44_ = cl; _tmp45_ = vala_class_get_base_class (_tmp44_); _tmp46_ = _tmp45_; _tmp47_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp46_); _tmp48_ = _tmp47_; _tmp49_ = cl; _tmp50_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp49_); _tmp51_ = _tmp50_; _tmp52_ = vala_ccode_variable_declarator_new (_tmp51_, NULL, NULL); _tmp53_ = _tmp52_; _tmp54_ = vala_ccode_type_definition_new (_tmp48_, (ValaCCodeDeclarator*) _tmp53_); _tmp55_ = _tmp54_; vala_ccode_file_add_type_declaration (_tmp43_, (ValaCCodeNode*) _tmp55_); _vala_ccode_node_unref0 (_tmp55_); _vala_ccode_node_unref0 (_tmp53_); _g_free0 (_tmp51_); _g_free0 (_tmp48_); } } _tmp56_ = cl; _tmp57_ = vala_class_get_base_class (_tmp56_); _tmp58_ = _tmp57_; if (_tmp58_ == NULL) { ValaClass* _tmp59_; gchar* _tmp60_ = NULL; gchar* _tmp61_; gchar* _tmp62_ = NULL; gchar* _tmp63_; ValaCCodeStruct* _tmp64_; ValaCCodeStruct* _tmp65_; ValaCCodeStruct* instance_struct; ValaCCodeStruct* _tmp66_; ValaCCodeFile* _tmp67_; ValaCCodeStruct* _tmp68_; _tmp59_ = cl; _tmp60_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp59_); _tmp61_ = _tmp60_; _tmp62_ = g_strdup_printf ("_%s", _tmp61_); _tmp63_ = _tmp62_; _tmp64_ = vala_ccode_struct_new (_tmp63_); _tmp65_ = _tmp64_; _g_free0 (_tmp63_); _g_free0 (_tmp61_); instance_struct = _tmp65_; _tmp66_ = instance_struct; vala_ccode_struct_add_field (_tmp66_, "DovaType *", "type", NULL); _tmp67_ = decl_space; _tmp68_ = instance_struct; vala_ccode_file_add_type_definition (_tmp67_, (ValaCCodeNode*) _tmp68_); _vala_ccode_node_unref0 (instance_struct); } else { ValaClass* _tmp69_; ValaClass* _tmp70_; _tmp69_ = cl; _tmp70_ = ((ValaDovaBaseModule*) self)->type_class; if (_tmp69_ == _tmp70_) { ValaCCodeFunction* _tmp71_; ValaCCodeFunction* value_copy_function; ValaCCodeFunction* _tmp72_; ValaCCodeParameter* _tmp73_; ValaCCodeParameter* _tmp74_; ValaCCodeFunction* _tmp75_; ValaCCodeParameter* _tmp76_; ValaCCodeParameter* _tmp77_; ValaCCodeFunction* _tmp78_; ValaCCodeParameter* _tmp79_; ValaCCodeParameter* _tmp80_; ValaCCodeFunction* _tmp81_; ValaCCodeParameter* _tmp82_; ValaCCodeParameter* _tmp83_; ValaCCodeFunction* _tmp84_; ValaCCodeParameter* _tmp85_; ValaCCodeParameter* _tmp86_; ValaCCodeFile* _tmp87_; ValaCCodeFunction* _tmp88_; ValaCCodeFunction* _tmp89_; ValaCCodeFunction* value_equals_function; ValaCCodeFunction* _tmp90_; ValaCCodeParameter* _tmp91_; ValaCCodeParameter* _tmp92_; ValaCCodeFunction* _tmp93_; ValaCCodeParameter* _tmp94_; ValaCCodeParameter* _tmp95_; ValaCCodeFunction* _tmp96_; ValaCCodeParameter* _tmp97_; ValaCCodeParameter* _tmp98_; ValaCCodeFunction* _tmp99_; ValaCCodeParameter* _tmp100_; ValaCCodeParameter* _tmp101_; ValaCCodeFunction* _tmp102_; ValaCCodeParameter* _tmp103_; ValaCCodeParameter* _tmp104_; ValaCCodeFile* _tmp105_; ValaCCodeFunction* _tmp106_; ValaCCodeFunction* _tmp107_; ValaCCodeFunction* value_hash_function; ValaCCodeFunction* _tmp108_; ValaCCodeParameter* _tmp109_; ValaCCodeParameter* _tmp110_; ValaCCodeFunction* _tmp111_; ValaCCodeParameter* _tmp112_; ValaCCodeParameter* _tmp113_; ValaCCodeFunction* _tmp114_; ValaCCodeParameter* _tmp115_; ValaCCodeParameter* _tmp116_; ValaCCodeFile* _tmp117_; ValaCCodeFunction* _tmp118_; _tmp71_ = vala_ccode_function_new ("dova_type_value_copy", "void"); value_copy_function = _tmp71_; _tmp72_ = value_copy_function; _tmp73_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp74_ = _tmp73_; vala_ccode_function_add_parameter (_tmp72_, _tmp74_); _vala_ccode_node_unref0 (_tmp74_); _tmp75_ = value_copy_function; _tmp76_ = vala_ccode_parameter_new ("dest", "void *"); _tmp77_ = _tmp76_; vala_ccode_function_add_parameter (_tmp75_, _tmp77_); _vala_ccode_node_unref0 (_tmp77_); _tmp78_ = value_copy_function; _tmp79_ = vala_ccode_parameter_new ("dest_index", "intptr_t"); _tmp80_ = _tmp79_; vala_ccode_function_add_parameter (_tmp78_, _tmp80_); _vala_ccode_node_unref0 (_tmp80_); _tmp81_ = value_copy_function; _tmp82_ = vala_ccode_parameter_new ("src", "void *"); _tmp83_ = _tmp82_; vala_ccode_function_add_parameter (_tmp81_, _tmp83_); _vala_ccode_node_unref0 (_tmp83_); _tmp84_ = value_copy_function; _tmp85_ = vala_ccode_parameter_new ("src_index", "intptr_t"); _tmp86_ = _tmp85_; vala_ccode_function_add_parameter (_tmp84_, _tmp86_); _vala_ccode_node_unref0 (_tmp86_); _tmp87_ = ((ValaDovaBaseModule*) self)->cfile; _tmp88_ = value_copy_function; vala_ccode_file_add_function_declaration (_tmp87_, _tmp88_); _tmp89_ = vala_ccode_function_new ("dova_type_value_equals", "bool"); value_equals_function = _tmp89_; _tmp90_ = value_equals_function; _tmp91_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp92_ = _tmp91_; vala_ccode_function_add_parameter (_tmp90_, _tmp92_); _vala_ccode_node_unref0 (_tmp92_); _tmp93_ = value_equals_function; _tmp94_ = vala_ccode_parameter_new ("value", "void *"); _tmp95_ = _tmp94_; vala_ccode_function_add_parameter (_tmp93_, _tmp95_); _vala_ccode_node_unref0 (_tmp95_); _tmp96_ = value_equals_function; _tmp97_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp98_ = _tmp97_; vala_ccode_function_add_parameter (_tmp96_, _tmp98_); _vala_ccode_node_unref0 (_tmp98_); _tmp99_ = value_equals_function; _tmp100_ = vala_ccode_parameter_new ("other", "void *"); _tmp101_ = _tmp100_; vala_ccode_function_add_parameter (_tmp99_, _tmp101_); _vala_ccode_node_unref0 (_tmp101_); _tmp102_ = value_equals_function; _tmp103_ = vala_ccode_parameter_new ("other_index", "intptr_t"); _tmp104_ = _tmp103_; vala_ccode_function_add_parameter (_tmp102_, _tmp104_); _vala_ccode_node_unref0 (_tmp104_); _tmp105_ = ((ValaDovaBaseModule*) self)->cfile; _tmp106_ = value_equals_function; vala_ccode_file_add_function_declaration (_tmp105_, _tmp106_); _tmp107_ = vala_ccode_function_new ("dova_type_value_hash", "uintptr_t"); value_hash_function = _tmp107_; _tmp108_ = value_hash_function; _tmp109_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp110_ = _tmp109_; vala_ccode_function_add_parameter (_tmp108_, _tmp110_); _vala_ccode_node_unref0 (_tmp110_); _tmp111_ = value_hash_function; _tmp112_ = vala_ccode_parameter_new ("value", "void *"); _tmp113_ = _tmp112_; vala_ccode_function_add_parameter (_tmp111_, _tmp113_); _vala_ccode_node_unref0 (_tmp113_); _tmp114_ = value_hash_function; _tmp115_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp116_ = _tmp115_; vala_ccode_function_add_parameter (_tmp114_, _tmp116_); _vala_ccode_node_unref0 (_tmp116_); _tmp117_ = ((ValaDovaBaseModule*) self)->cfile; _tmp118_ = value_hash_function; vala_ccode_file_add_function_declaration (_tmp117_, _tmp118_); _vala_ccode_node_unref0 (value_hash_function); _vala_ccode_node_unref0 (value_equals_function); _vala_ccode_node_unref0 (value_copy_function); } } _tmp119_ = cl; _tmp120_ = vala_class_get_base_class (_tmp119_); _tmp121_ = _tmp120_; if (_tmp121_ != NULL) { ValaClass* _tmp122_; ValaCCodeFile* _tmp123_; _tmp122_ = ((ValaDovaBaseModule*) self)->type_class; _tmp123_ = decl_space; vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, _tmp122_, _tmp123_); } _tmp124_ = ((ValaDovaBaseModule*) self)->object_class; _tmp125_ = vala_symbol_get_scope ((ValaSymbol*) _tmp124_); _tmp126_ = _tmp125_; _tmp127_ = vala_scope_lookup (_tmp126_, "ref"); _tmp128_ = VALA_METHOD (_tmp127_); _tmp129_ = decl_space; vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp128_, _tmp129_); _vala_code_node_unref0 (_tmp128_); _tmp130_ = ((ValaDovaBaseModule*) self)->object_class; _tmp131_ = vala_symbol_get_scope ((ValaSymbol*) _tmp130_); _tmp132_ = _tmp131_; _tmp133_ = vala_scope_lookup (_tmp132_, "unref"); _tmp134_ = VALA_METHOD (_tmp133_); _tmp135_ = decl_space; vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp134_, _tmp135_); _vala_code_node_unref0 (_tmp134_); _tmp136_ = cl; _tmp137_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp136_, NULL); _tmp138_ = _tmp137_; _tmp139_ = g_strdup_printf ("%s_type_get", _tmp138_); _tmp140_ = _tmp139_; _tmp141_ = vala_ccode_function_new (_tmp140_, "DovaType *"); _tmp142_ = _tmp141_; _g_free0 (_tmp140_); _g_free0 (_tmp138_); type_fun = _tmp142_; _tmp143_ = cl; _tmp144_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp143_); if (_tmp144_) { ValaCCodeFunction* _tmp145_; _tmp145_ = type_fun; vala_ccode_function_set_modifiers (_tmp145_, VALA_CCODE_MODIFIERS_STATIC); } { ValaClass* _tmp146_; ValaList* _tmp147_ = NULL; ValaList* _type_param_list; ValaList* _tmp148_; gint _tmp149_; gint _tmp150_; gint _type_param_size; gint _type_param_index; _tmp146_ = cl; _tmp147_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp146_); _type_param_list = _tmp147_; _tmp148_ = _type_param_list; _tmp149_ = vala_collection_get_size ((ValaCollection*) _tmp148_); _tmp150_ = _tmp149_; _type_param_size = _tmp150_; _type_param_index = -1; while (TRUE) { gint _tmp151_; gint _tmp152_; gint _tmp153_; ValaList* _tmp154_; gint _tmp155_; gpointer _tmp156_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp157_; ValaTypeParameter* _tmp158_; const gchar* _tmp159_; const gchar* _tmp160_; gchar* _tmp161_ = NULL; gchar* _tmp162_; gchar* _tmp163_ = NULL; gchar* _tmp164_; ValaCCodeParameter* _tmp165_; ValaCCodeParameter* _tmp166_; _tmp151_ = _type_param_index; _type_param_index = _tmp151_ + 1; _tmp152_ = _type_param_index; _tmp153_ = _type_param_size; if (!(_tmp152_ < _tmp153_)) { break; } _tmp154_ = _type_param_list; _tmp155_ = _type_param_index; _tmp156_ = vala_list_get (_tmp154_, _tmp155_); type_param = (ValaTypeParameter*) _tmp156_; _tmp157_ = type_fun; _tmp158_ = type_param; _tmp159_ = vala_symbol_get_name ((ValaSymbol*) _tmp158_); _tmp160_ = _tmp159_; _tmp161_ = g_utf8_strdown (_tmp160_, (gssize) (-1)); _tmp162_ = _tmp161_; _tmp163_ = g_strdup_printf ("%s_type", _tmp162_); _tmp164_ = _tmp163_; _tmp165_ = vala_ccode_parameter_new (_tmp164_, "DovaType *"); _tmp166_ = _tmp165_; vala_ccode_function_add_parameter (_tmp157_, _tmp166_); _vala_ccode_node_unref0 (_tmp166_); _g_free0 (_tmp164_); _g_free0 (_tmp162_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _tmp167_ = decl_space; _tmp168_ = type_fun; vala_ccode_file_add_function_declaration (_tmp167_, _tmp168_); _tmp169_ = cl; _tmp170_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp169_, NULL); _tmp171_ = _tmp170_; _tmp172_ = g_strdup_printf ("%s_type_init", _tmp171_); _tmp173_ = _tmp172_; _tmp174_ = vala_ccode_function_new (_tmp173_, "void"); _tmp175_ = _tmp174_; _g_free0 (_tmp173_); _g_free0 (_tmp171_); type_init_fun = _tmp175_; _tmp176_ = cl; _tmp177_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp176_); if (_tmp177_) { ValaCCodeFunction* _tmp178_; _tmp178_ = type_init_fun; vala_ccode_function_set_modifiers (_tmp178_, VALA_CCODE_MODIFIERS_STATIC); } _tmp179_ = type_init_fun; _tmp180_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp181_ = _tmp180_; vala_ccode_function_add_parameter (_tmp179_, _tmp181_); _vala_ccode_node_unref0 (_tmp181_); { ValaClass* _tmp182_; ValaList* _tmp183_ = NULL; ValaList* _type_param_list; ValaList* _tmp184_; gint _tmp185_; gint _tmp186_; gint _type_param_size; gint _type_param_index; _tmp182_ = cl; _tmp183_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp182_); _type_param_list = _tmp183_; _tmp184_ = _type_param_list; _tmp185_ = vala_collection_get_size ((ValaCollection*) _tmp184_); _tmp186_ = _tmp185_; _type_param_size = _tmp186_; _type_param_index = -1; while (TRUE) { gint _tmp187_; gint _tmp188_; gint _tmp189_; ValaList* _tmp190_; gint _tmp191_; gpointer _tmp192_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp193_; ValaTypeParameter* _tmp194_; const gchar* _tmp195_; const gchar* _tmp196_; gchar* _tmp197_ = NULL; gchar* _tmp198_; gchar* _tmp199_ = NULL; gchar* _tmp200_; ValaCCodeParameter* _tmp201_; ValaCCodeParameter* _tmp202_; _tmp187_ = _type_param_index; _type_param_index = _tmp187_ + 1; _tmp188_ = _type_param_index; _tmp189_ = _type_param_size; if (!(_tmp188_ < _tmp189_)) { break; } _tmp190_ = _type_param_list; _tmp191_ = _type_param_index; _tmp192_ = vala_list_get (_tmp190_, _tmp191_); type_param = (ValaTypeParameter*) _tmp192_; _tmp193_ = type_init_fun; _tmp194_ = type_param; _tmp195_ = vala_symbol_get_name ((ValaSymbol*) _tmp194_); _tmp196_ = _tmp195_; _tmp197_ = g_utf8_strdown (_tmp196_, (gssize) (-1)); _tmp198_ = _tmp197_; _tmp199_ = g_strdup_printf ("%s_type", _tmp198_); _tmp200_ = _tmp199_; _tmp201_ = vala_ccode_parameter_new (_tmp200_, "DovaType *"); _tmp202_ = _tmp201_; vala_ccode_function_add_parameter (_tmp193_, _tmp202_); _vala_ccode_node_unref0 (_tmp202_); _g_free0 (_tmp200_); _g_free0 (_tmp198_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _tmp203_ = decl_space; _tmp204_ = type_init_fun; vala_ccode_file_add_function_declaration (_tmp203_, _tmp204_); _vala_ccode_node_unref0 (type_init_fun); _vala_ccode_node_unref0 (type_fun); } static void vala_dova_object_module_generate_virtual_method_declaration (ValaDovaObjectModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct) { gboolean _tmp0_ = FALSE; ValaMethod* _tmp1_; gboolean _tmp2_; gboolean _tmp3_; gboolean _tmp7_; ValaMethod* _tmp8_; gchar* _tmp9_ = NULL; gchar* _tmp10_; ValaCCodeFunctionDeclarator* _tmp11_; ValaCCodeFunctionDeclarator* _tmp12_; ValaCCodeFunctionDeclarator* vdeclarator; ValaMethod* _tmp13_; ValaCCodeFile* _tmp14_; ValaCCodeFunction* _tmp15_; ValaCCodeFunction* _tmp16_; ValaCCodeFunctionDeclarator* _tmp17_; ValaMethod* _tmp18_; ValaDataType* _tmp19_; ValaDataType* _tmp20_; gchar* _tmp21_ = NULL; gchar* _tmp22_; ValaCCodeDeclaration* _tmp23_; ValaCCodeDeclaration* _tmp24_; ValaCCodeDeclaration* vdecl; ValaCCodeDeclaration* _tmp25_; ValaCCodeFunctionDeclarator* _tmp26_; ValaCCodeStruct* _tmp27_; ValaCCodeDeclaration* _tmp28_; g_return_if_fail (self != NULL); g_return_if_fail (m != NULL); g_return_if_fail (decl_space != NULL); g_return_if_fail (type_struct != NULL); _tmp1_ = m; _tmp2_ = vala_method_get_is_abstract (_tmp1_); _tmp3_ = _tmp2_; if (!_tmp3_) { ValaMethod* _tmp4_; gboolean _tmp5_; gboolean _tmp6_; _tmp4_ = m; _tmp5_ = vala_method_get_is_virtual (_tmp4_); _tmp6_ = _tmp5_; _tmp0_ = !_tmp6_; } else { _tmp0_ = FALSE; } _tmp7_ = _tmp0_; if (_tmp7_) { return; } _tmp8_ = m; _tmp9_ = vala_dova_base_module_get_ccode_vfunc_name ((ValaDovaBaseModule*) self, _tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_ccode_function_declarator_new (_tmp10_); _tmp12_ = _tmp11_; _g_free0 (_tmp10_); vdeclarator = _tmp12_; _tmp13_ = m; _tmp14_ = decl_space; _tmp15_ = vala_ccode_function_new ("fake", "void"); _tmp16_ = _tmp15_; _tmp17_ = vdeclarator; vala_dova_base_module_generate_cparameters ((ValaDovaBaseModule*) self, _tmp13_, _tmp14_, _tmp16_, _tmp17_, NULL); _vala_ccode_node_unref0 (_tmp16_); _tmp18_ = m; _tmp19_ = vala_method_get_return_type (_tmp18_); _tmp20_ = _tmp19_; _tmp21_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp20_); _tmp22_ = _tmp21_; _tmp23_ = vala_ccode_declaration_new (_tmp22_); _tmp24_ = _tmp23_; _g_free0 (_tmp22_); vdecl = _tmp24_; _tmp25_ = vdecl; _tmp26_ = vdeclarator; vala_ccode_declaration_add_declarator (_tmp25_, (ValaCCodeDeclarator*) _tmp26_); _tmp27_ = type_struct; _tmp28_ = vdecl; vala_ccode_struct_add_declaration (_tmp27_, _tmp28_); _vala_ccode_node_unref0 (vdecl); _vala_ccode_node_unref0 (vdeclarator); } static gboolean vala_dova_object_module_has_instance_struct (ValaDovaObjectModule* self, ValaClass* cl) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (cl != NULL, FALSE); { ValaClass* _tmp0_; ValaList* _tmp1_ = NULL; ValaList* _f_list; ValaList* _tmp2_; gint _tmp3_; gint _tmp4_; gint _f_size; gint _f_index; _tmp0_ = cl; _tmp1_ = vala_class_get_fields (_tmp0_); _f_list = _tmp1_; _tmp2_ = _f_list; _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_); _tmp4_ = _tmp3_; _f_size = _tmp4_; _f_index = -1; while (TRUE) { gint _tmp5_; gint _tmp6_; gint _tmp7_; ValaList* _tmp8_; gint _tmp9_; gpointer _tmp10_ = NULL; ValaField* f; ValaField* _tmp11_; ValaMemberBinding _tmp12_; ValaMemberBinding _tmp13_; _tmp5_ = _f_index; _f_index = _tmp5_ + 1; _tmp6_ = _f_index; _tmp7_ = _f_size; if (!(_tmp6_ < _tmp7_)) { break; } _tmp8_ = _f_list; _tmp9_ = _f_index; _tmp10_ = vala_list_get (_tmp8_, _tmp9_); f = (ValaField*) _tmp10_; _tmp11_ = f; _tmp12_ = vala_field_get_binding (_tmp11_); _tmp13_ = _tmp12_; if (_tmp13_ == VALA_MEMBER_BINDING_INSTANCE) { result = TRUE; _vala_code_node_unref0 (f); _vala_iterable_unref0 (_f_list); return result; } _vala_code_node_unref0 (f); } _vala_iterable_unref0 (_f_list); } result = FALSE; return result; } static gboolean vala_dova_object_module_has_type_struct (ValaDovaObjectModule* self, ValaClass* cl) { gboolean result = FALSE; ValaClass* _tmp0_; ValaList* _tmp1_ = NULL; ValaList* _tmp2_; gint _tmp3_; gint _tmp4_; gboolean _tmp5_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (cl != NULL, FALSE); _tmp0_ = cl; _tmp1_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _tmp4_ > 0; _vala_iterable_unref0 (_tmp2_); if (_tmp5_) { result = TRUE; return result; } { ValaClass* _tmp6_; ValaList* _tmp7_ = NULL; ValaList* _m_list; ValaList* _tmp8_; gint _tmp9_; gint _tmp10_; gint _m_size; gint _m_index; _tmp6_ = cl; _tmp7_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp6_); _m_list = _tmp7_; _tmp8_ = _m_list; _tmp9_ = vala_collection_get_size ((ValaCollection*) _tmp8_); _tmp10_ = _tmp9_; _m_size = _tmp10_; _m_index = -1; while (TRUE) { gint _tmp11_; gint _tmp12_; gint _tmp13_; ValaList* _tmp14_; gint _tmp15_; gpointer _tmp16_ = NULL; ValaMethod* m; gboolean _tmp17_ = FALSE; ValaMethod* _tmp18_; gboolean _tmp19_; gboolean _tmp20_; gboolean _tmp24_; _tmp11_ = _m_index; _m_index = _tmp11_ + 1; _tmp12_ = _m_index; _tmp13_ = _m_size; if (!(_tmp12_ < _tmp13_)) { break; } _tmp14_ = _m_list; _tmp15_ = _m_index; _tmp16_ = vala_list_get (_tmp14_, _tmp15_); m = (ValaMethod*) _tmp16_; _tmp18_ = m; _tmp19_ = vala_method_get_is_abstract (_tmp18_); _tmp20_ = _tmp19_; if (_tmp20_) { _tmp17_ = TRUE; } else { ValaMethod* _tmp21_; gboolean _tmp22_; gboolean _tmp23_; _tmp21_ = m; _tmp22_ = vala_method_get_is_virtual (_tmp21_); _tmp23_ = _tmp22_; _tmp17_ = _tmp23_; } _tmp24_ = _tmp17_; if (_tmp24_) { result = TRUE; _vala_code_node_unref0 (m); _vala_iterable_unref0 (_m_list); return result; } _vala_code_node_unref0 (m); } _vala_iterable_unref0 (_m_list); } { ValaClass* _tmp25_; ValaList* _tmp26_ = NULL; ValaList* _prop_list; ValaList* _tmp27_; gint _tmp28_; gint _tmp29_; gint _prop_size; gint _prop_index; _tmp25_ = cl; _tmp26_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp25_); _prop_list = _tmp26_; _tmp27_ = _prop_list; _tmp28_ = vala_collection_get_size ((ValaCollection*) _tmp27_); _tmp29_ = _tmp28_; _prop_size = _tmp29_; _prop_index = -1; while (TRUE) { gint _tmp30_; gint _tmp31_; gint _tmp32_; ValaList* _tmp33_; gint _tmp34_; gpointer _tmp35_ = NULL; ValaProperty* prop; gboolean _tmp36_ = FALSE; ValaProperty* _tmp37_; gboolean _tmp38_; gboolean _tmp39_; gboolean _tmp43_; _tmp30_ = _prop_index; _prop_index = _tmp30_ + 1; _tmp31_ = _prop_index; _tmp32_ = _prop_size; if (!(_tmp31_ < _tmp32_)) { break; } _tmp33_ = _prop_list; _tmp34_ = _prop_index; _tmp35_ = vala_list_get (_tmp33_, _tmp34_); prop = (ValaProperty*) _tmp35_; _tmp37_ = prop; _tmp38_ = vala_property_get_is_abstract (_tmp37_); _tmp39_ = _tmp38_; if (_tmp39_) { _tmp36_ = TRUE; } else { ValaProperty* _tmp40_; gboolean _tmp41_; gboolean _tmp42_; _tmp40_ = prop; _tmp41_ = vala_property_get_is_virtual (_tmp40_); _tmp42_ = _tmp41_; _tmp36_ = _tmp42_; } _tmp43_ = _tmp36_; if (_tmp43_) { result = TRUE; _vala_code_node_unref0 (prop); _vala_iterable_unref0 (_prop_list); return result; } _vala_code_node_unref0 (prop); } _vala_iterable_unref0 (_prop_list); } result = FALSE; return result; } static gpointer _vala_code_node_ref0 (gpointer self) { return self ? vala_code_node_ref (self) : NULL; } static void vala_dova_object_module_generate_class_private_declaration (ValaDovaObjectModule* self, ValaClass* cl, ValaCCodeFile* decl_space) { ValaCCodeFile* _tmp0_; ValaClass* _tmp1_; ValaClass* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; gboolean _tmp7_ = FALSE; gboolean _tmp8_; ValaClass* _tmp9_; gchar* _tmp10_ = NULL; gchar* _tmp11_; gchar* _tmp12_ = NULL; gchar* _tmp13_; ValaCCodeStruct* _tmp14_; ValaCCodeStruct* _tmp15_; ValaCCodeStruct* instance_priv_struct; ValaClass* _tmp16_; gchar* _tmp17_ = NULL; gchar* _tmp18_; gchar* _tmp19_ = NULL; gchar* _tmp20_; ValaCCodeStruct* _tmp21_; ValaCCodeStruct* _tmp22_; ValaCCodeStruct* type_priv_struct; ValaClass* _tmp62_; gchar* _tmp63_ = NULL; gchar* _tmp64_; gboolean _tmp65_; ValaCCodeStruct* _tmp261_; gboolean _tmp262_; gboolean _tmp263_; ValaCCodeStruct* _tmp281_; gboolean _tmp282_; gboolean _tmp283_; ValaCCodeDeclaration* _tmp301_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp302_; ValaClass* _tmp303_; gchar* _tmp304_ = NULL; gchar* _tmp305_; gchar* _tmp306_ = NULL; gchar* _tmp307_; ValaCCodeConstant* _tmp308_; ValaCCodeConstant* _tmp309_; ValaCCodeVariableDeclarator* _tmp310_; ValaCCodeVariableDeclarator* _tmp311_; ValaCCodeDeclaration* _tmp312_; ValaCCodeFile* _tmp313_; ValaCCodeDeclaration* _tmp314_; ValaCCodeExpression* type_offset = NULL; gchar* macro = NULL; ValaClass* _tmp315_; ValaClass* _tmp316_; ValaClass* _tmp317_; ValaCCodeStruct* _tmp345_; gboolean _tmp346_; gboolean _tmp347_; ValaCCodeDeclaration* _tmp357_; ValaCCodeDeclaration* _tmp358_; ValaClass* _tmp359_; gchar* _tmp360_ = NULL; gchar* _tmp361_; gchar* _tmp362_ = NULL; gchar* _tmp363_; ValaCCodeExpression* _tmp364_; ValaCCodeVariableDeclarator* _tmp365_; ValaCCodeVariableDeclarator* _tmp366_; ValaCCodeDeclaration* _tmp367_; ValaCCodeFile* _tmp368_; ValaCCodeDeclaration* _tmp369_; g_return_if_fail (self != NULL); g_return_if_fail (cl != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = cl; _tmp2_ = cl; _tmp3_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = g_strconcat (_tmp4_, "Private", NULL); _tmp6_ = _tmp5_; _tmp7_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp6_); _tmp8_ = _tmp7_; _g_free0 (_tmp6_); _g_free0 (_tmp4_); if (_tmp8_) { return; } _tmp9_ = cl; _tmp10_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp9_); _tmp11_ = _tmp10_; _tmp12_ = g_strdup_printf ("_%sPrivate", _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_ccode_struct_new (_tmp13_); _tmp15_ = _tmp14_; _g_free0 (_tmp13_); _g_free0 (_tmp11_); instance_priv_struct = _tmp15_; _tmp16_ = cl; _tmp17_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp16_); _tmp18_ = _tmp17_; _tmp19_ = g_strdup_printf ("_%sTypePrivate", _tmp18_); _tmp20_ = _tmp19_; _tmp21_ = vala_ccode_struct_new (_tmp20_); _tmp22_ = _tmp21_; _g_free0 (_tmp20_); _g_free0 (_tmp18_); type_priv_struct = _tmp22_; { ValaClass* _tmp23_; ValaList* _tmp24_ = NULL; ValaList* _f_list; ValaList* _tmp25_; gint _tmp26_; gint _tmp27_; gint _f_size; gint _f_index; _tmp23_ = cl; _tmp24_ = vala_class_get_fields (_tmp23_); _f_list = _tmp24_; _tmp25_ = _f_list; _tmp26_ = vala_collection_get_size ((ValaCollection*) _tmp25_); _tmp27_ = _tmp26_; _f_size = _tmp27_; _f_index = -1; while (TRUE) { gint _tmp28_; gint _tmp29_; gint _tmp30_; ValaList* _tmp31_; gint _tmp32_; gpointer _tmp33_ = NULL; ValaField* f; ValaField* _tmp34_; ValaMemberBinding _tmp35_; ValaMemberBinding _tmp36_; _tmp28_ = _f_index; _f_index = _tmp28_ + 1; _tmp29_ = _f_index; _tmp30_ = _f_size; if (!(_tmp29_ < _tmp30_)) { break; } _tmp31_ = _f_list; _tmp32_ = _f_index; _tmp33_ = vala_list_get (_tmp31_, _tmp32_); f = (ValaField*) _tmp33_; _tmp34_ = f; _tmp35_ = vala_field_get_binding (_tmp34_); _tmp36_ = _tmp35_; if (_tmp36_ == VALA_MEMBER_BINDING_INSTANCE) { ValaField* _tmp37_; ValaDataType* _tmp38_; ValaDataType* _tmp39_; ValaCCodeFile* _tmp40_; ValaField* _tmp41_; ValaDataType* _tmp42_; ValaDataType* _tmp43_; gchar* _tmp44_ = NULL; gchar* field_ctype; ValaField* _tmp45_; gboolean _tmp46_; gboolean _tmp47_; ValaCCodeStruct* _tmp50_; const gchar* _tmp51_; ValaField* _tmp52_; gchar* _tmp53_ = NULL; gchar* _tmp54_; ValaField* _tmp55_; ValaDataType* _tmp56_; ValaDataType* _tmp57_; gchar* _tmp58_ = NULL; gchar* _tmp59_; gchar* _tmp60_; gchar* _tmp61_; _tmp37_ = f; _tmp38_ = vala_variable_get_variable_type ((ValaVariable*) _tmp37_); _tmp39_ = _tmp38_; _tmp40_ = decl_space; vala_dova_base_module_generate_type_declaration ((ValaDovaBaseModule*) self, _tmp39_, _tmp40_); _tmp41_ = f; _tmp42_ = vala_variable_get_variable_type ((ValaVariable*) _tmp41_); _tmp43_ = _tmp42_; _tmp44_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp43_); field_ctype = _tmp44_; _tmp45_ = f; _tmp46_ = vala_field_get_is_volatile (_tmp45_); _tmp47_ = _tmp46_; if (_tmp47_) { const gchar* _tmp48_; gchar* _tmp49_; _tmp48_ = field_ctype; _tmp49_ = g_strconcat ("volatile ", _tmp48_, NULL); _g_free0 (field_ctype); field_ctype = _tmp49_; } _tmp50_ = instance_priv_struct; _tmp51_ = field_ctype; _tmp52_ = f; _tmp53_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp52_); _tmp54_ = _tmp53_; _tmp55_ = f; _tmp56_ = vala_variable_get_variable_type ((ValaVariable*) _tmp55_); _tmp57_ = _tmp56_; _tmp58_ = vala_dova_base_module_get_ccode_declarator_suffix ((ValaDovaBaseModule*) self, _tmp57_); _tmp59_ = _tmp58_; _tmp60_ = g_strconcat (_tmp54_, _tmp59_, NULL); _tmp61_ = _tmp60_; vala_ccode_struct_add_field (_tmp50_, _tmp51_, _tmp61_, NULL); _g_free0 (_tmp61_); _g_free0 (_tmp59_); _g_free0 (_tmp54_); _g_free0 (field_ctype); } _vala_code_node_unref0 (f); } _vala_iterable_unref0 (_f_list); } _tmp62_ = cl; _tmp63_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp62_); _tmp64_ = _tmp63_; _tmp65_ = g_strcmp0 (_tmp64_, "Dova.Type") == 0; _g_free0 (_tmp64_); if (_tmp65_) { ValaCCodeFunctionDeclarator* _tmp66_; ValaCCodeFunctionDeclarator* vdeclarator; ValaCCodeFunctionDeclarator* _tmp67_; ValaCCodeParameter* _tmp68_; ValaCCodeParameter* _tmp69_; ValaCCodeFunctionDeclarator* _tmp70_; ValaCCodeParameter* _tmp71_; ValaCCodeParameter* _tmp72_; ValaCCodeFunctionDeclarator* _tmp73_; ValaCCodeParameter* _tmp74_; ValaCCodeParameter* _tmp75_; ValaCCodeFunctionDeclarator* _tmp76_; ValaCCodeParameter* _tmp77_; ValaCCodeParameter* _tmp78_; ValaCCodeDeclaration* _tmp79_; ValaCCodeDeclaration* vdecl; ValaCCodeDeclaration* _tmp80_; ValaCCodeFunctionDeclarator* _tmp81_; ValaCCodeStruct* _tmp82_; ValaCCodeDeclaration* _tmp83_; ValaCCodeFunctionDeclarator* _tmp84_; ValaCCodeFunctionDeclarator* _tmp85_; ValaCCodeParameter* _tmp86_; ValaCCodeParameter* _tmp87_; ValaCCodeFunctionDeclarator* _tmp88_; ValaCCodeParameter* _tmp89_; ValaCCodeParameter* _tmp90_; ValaCCodeFunctionDeclarator* _tmp91_; ValaCCodeParameter* _tmp92_; ValaCCodeParameter* _tmp93_; ValaCCodeFunctionDeclarator* _tmp94_; ValaCCodeParameter* _tmp95_; ValaCCodeParameter* _tmp96_; ValaCCodeDeclaration* _tmp97_; ValaCCodeDeclaration* _tmp98_; ValaCCodeFunctionDeclarator* _tmp99_; ValaCCodeStruct* _tmp100_; ValaCCodeDeclaration* _tmp101_; ValaCCodeFunctionDeclarator* _tmp102_; ValaCCodeFunctionDeclarator* _tmp103_; ValaCCodeParameter* _tmp104_; ValaCCodeParameter* _tmp105_; ValaCCodeFunctionDeclarator* _tmp106_; ValaCCodeParameter* _tmp107_; ValaCCodeParameter* _tmp108_; ValaCCodeDeclaration* _tmp109_; ValaCCodeDeclaration* _tmp110_; ValaCCodeFunctionDeclarator* _tmp111_; ValaCCodeStruct* _tmp112_; ValaCCodeDeclaration* _tmp113_; ValaCCodeFunctionDeclarator* _tmp114_; ValaCCodeFunctionDeclarator* _tmp115_; ValaCCodeParameter* _tmp116_; ValaCCodeParameter* _tmp117_; ValaCCodeFunctionDeclarator* _tmp118_; ValaCCodeParameter* _tmp119_; ValaCCodeParameter* _tmp120_; ValaCCodeDeclaration* _tmp121_; ValaCCodeDeclaration* _tmp122_; ValaCCodeFunctionDeclarator* _tmp123_; ValaCCodeStruct* _tmp124_; ValaCCodeDeclaration* _tmp125_; ValaCCodeFunctionDeclarator* _tmp126_; ValaCCodeFunctionDeclarator* _tmp127_; ValaCCodeParameter* _tmp128_; ValaCCodeParameter* _tmp129_; ValaCCodeFunctionDeclarator* _tmp130_; ValaCCodeParameter* _tmp131_; ValaCCodeParameter* _tmp132_; ValaCCodeFunctionDeclarator* _tmp133_; ValaCCodeParameter* _tmp134_; ValaCCodeParameter* _tmp135_; ValaCCodeDeclaration* _tmp136_; ValaCCodeDeclaration* _tmp137_; ValaCCodeFunctionDeclarator* _tmp138_; ValaCCodeStruct* _tmp139_; ValaCCodeDeclaration* _tmp140_; _tmp66_ = vala_ccode_function_declarator_new ("value_copy"); vdeclarator = _tmp66_; _tmp67_ = vdeclarator; _tmp68_ = vala_ccode_parameter_new ("dest", "void *"); _tmp69_ = _tmp68_; vala_ccode_function_declarator_add_parameter (_tmp67_, _tmp69_); _vala_ccode_node_unref0 (_tmp69_); _tmp70_ = vdeclarator; _tmp71_ = vala_ccode_parameter_new ("dest_index", "intptr_t"); _tmp72_ = _tmp71_; vala_ccode_function_declarator_add_parameter (_tmp70_, _tmp72_); _vala_ccode_node_unref0 (_tmp72_); _tmp73_ = vdeclarator; _tmp74_ = vala_ccode_parameter_new ("src", "void *"); _tmp75_ = _tmp74_; vala_ccode_function_declarator_add_parameter (_tmp73_, _tmp75_); _vala_ccode_node_unref0 (_tmp75_); _tmp76_ = vdeclarator; _tmp77_ = vala_ccode_parameter_new ("src_index", "intptr_t"); _tmp78_ = _tmp77_; vala_ccode_function_declarator_add_parameter (_tmp76_, _tmp78_); _vala_ccode_node_unref0 (_tmp78_); _tmp79_ = vala_ccode_declaration_new ("void"); vdecl = _tmp79_; _tmp80_ = vdecl; _tmp81_ = vdeclarator; vala_ccode_declaration_add_declarator (_tmp80_, (ValaCCodeDeclarator*) _tmp81_); _tmp82_ = instance_priv_struct; _tmp83_ = vdecl; vala_ccode_struct_add_declaration (_tmp82_, _tmp83_); _tmp84_ = vala_ccode_function_declarator_new ("value_equals"); _vala_ccode_node_unref0 (vdeclarator); vdeclarator = _tmp84_; _tmp85_ = vdeclarator; _tmp86_ = vala_ccode_parameter_new ("value", "void *"); _tmp87_ = _tmp86_; vala_ccode_function_declarator_add_parameter (_tmp85_, _tmp87_); _vala_ccode_node_unref0 (_tmp87_); _tmp88_ = vdeclarator; _tmp89_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp90_ = _tmp89_; vala_ccode_function_declarator_add_parameter (_tmp88_, _tmp90_); _vala_ccode_node_unref0 (_tmp90_); _tmp91_ = vdeclarator; _tmp92_ = vala_ccode_parameter_new ("other", "void *"); _tmp93_ = _tmp92_; vala_ccode_function_declarator_add_parameter (_tmp91_, _tmp93_); _vala_ccode_node_unref0 (_tmp93_); _tmp94_ = vdeclarator; _tmp95_ = vala_ccode_parameter_new ("other_index", "intptr_t"); _tmp96_ = _tmp95_; vala_ccode_function_declarator_add_parameter (_tmp94_, _tmp96_); _vala_ccode_node_unref0 (_tmp96_); _tmp97_ = vala_ccode_declaration_new ("bool"); _vala_ccode_node_unref0 (vdecl); vdecl = _tmp97_; _tmp98_ = vdecl; _tmp99_ = vdeclarator; vala_ccode_declaration_add_declarator (_tmp98_, (ValaCCodeDeclarator*) _tmp99_); _tmp100_ = instance_priv_struct; _tmp101_ = vdecl; vala_ccode_struct_add_declaration (_tmp100_, _tmp101_); _tmp102_ = vala_ccode_function_declarator_new ("value_hash"); _vala_ccode_node_unref0 (vdeclarator); vdeclarator = _tmp102_; _tmp103_ = vdeclarator; _tmp104_ = vala_ccode_parameter_new ("value", "void *"); _tmp105_ = _tmp104_; vala_ccode_function_declarator_add_parameter (_tmp103_, _tmp105_); _vala_ccode_node_unref0 (_tmp105_); _tmp106_ = vdeclarator; _tmp107_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp108_ = _tmp107_; vala_ccode_function_declarator_add_parameter (_tmp106_, _tmp108_); _vala_ccode_node_unref0 (_tmp108_); _tmp109_ = vala_ccode_declaration_new ("uintptr_t"); _vala_ccode_node_unref0 (vdecl); vdecl = _tmp109_; _tmp110_ = vdecl; _tmp111_ = vdeclarator; vala_ccode_declaration_add_declarator (_tmp110_, (ValaCCodeDeclarator*) _tmp111_); _tmp112_ = instance_priv_struct; _tmp113_ = vdecl; vala_ccode_struct_add_declaration (_tmp112_, _tmp113_); _tmp114_ = vala_ccode_function_declarator_new ("value_to_any"); _vala_ccode_node_unref0 (vdeclarator); vdeclarator = _tmp114_; _tmp115_ = vdeclarator; _tmp116_ = vala_ccode_parameter_new ("value", "void *"); _tmp117_ = _tmp116_; vala_ccode_function_declarator_add_parameter (_tmp115_, _tmp117_); _vala_ccode_node_unref0 (_tmp117_); _tmp118_ = vdeclarator; _tmp119_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp120_ = _tmp119_; vala_ccode_function_declarator_add_parameter (_tmp118_, _tmp120_); _vala_ccode_node_unref0 (_tmp120_); _tmp121_ = vala_ccode_declaration_new ("DovaObject *"); _vala_ccode_node_unref0 (vdecl); vdecl = _tmp121_; _tmp122_ = vdecl; _tmp123_ = vdeclarator; vala_ccode_declaration_add_declarator (_tmp122_, (ValaCCodeDeclarator*) _tmp123_); _tmp124_ = instance_priv_struct; _tmp125_ = vdecl; vala_ccode_struct_add_declaration (_tmp124_, _tmp125_); _tmp126_ = vala_ccode_function_declarator_new ("value_from_any"); _vala_ccode_node_unref0 (vdeclarator); vdeclarator = _tmp126_; _tmp127_ = vdeclarator; _tmp128_ = vala_ccode_parameter_new ("any_", "any *"); _tmp129_ = _tmp128_; vala_ccode_function_declarator_add_parameter (_tmp127_, _tmp129_); _vala_ccode_node_unref0 (_tmp129_); _tmp130_ = vdeclarator; _tmp131_ = vala_ccode_parameter_new ("value", "void *"); _tmp132_ = _tmp131_; vala_ccode_function_declarator_add_parameter (_tmp130_, _tmp132_); _vala_ccode_node_unref0 (_tmp132_); _tmp133_ = vdeclarator; _tmp134_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp135_ = _tmp134_; vala_ccode_function_declarator_add_parameter (_tmp133_, _tmp135_); _vala_ccode_node_unref0 (_tmp135_); _tmp136_ = vala_ccode_declaration_new ("void"); _vala_ccode_node_unref0 (vdecl); vdecl = _tmp136_; _tmp137_ = vdecl; _tmp138_ = vdeclarator; vala_ccode_declaration_add_declarator (_tmp137_, (ValaCCodeDeclarator*) _tmp138_); _tmp139_ = instance_priv_struct; _tmp140_ = vdecl; vala_ccode_struct_add_declaration (_tmp139_, _tmp140_); _vala_ccode_node_unref0 (vdecl); _vala_ccode_node_unref0 (vdeclarator); } { ValaClass* _tmp141_; ValaList* _tmp142_ = NULL; ValaList* _type_param_list; ValaList* _tmp143_; gint _tmp144_; gint _tmp145_; gint _type_param_size; gint _type_param_index; _tmp141_ = cl; _tmp142_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp141_); _type_param_list = _tmp142_; _tmp143_ = _type_param_list; _tmp144_ = vala_collection_get_size ((ValaCollection*) _tmp143_); _tmp145_ = _tmp144_; _type_param_size = _tmp145_; _type_param_index = -1; while (TRUE) { gint _tmp146_; gint _tmp147_; gint _tmp148_; ValaList* _tmp149_; gint _tmp150_; gpointer _tmp151_ = NULL; ValaTypeParameter* type_param; ValaCCodeDeclaration* _tmp152_; ValaCCodeDeclaration* type_param_decl; ValaCCodeDeclaration* _tmp153_; ValaTypeParameter* _tmp154_; const gchar* _tmp155_; const gchar* _tmp156_; gchar* _tmp157_ = NULL; gchar* _tmp158_; gchar* _tmp159_ = NULL; gchar* _tmp160_; ValaCCodeVariableDeclarator* _tmp161_; ValaCCodeVariableDeclarator* _tmp162_; ValaCCodeStruct* _tmp163_; ValaCCodeDeclaration* _tmp164_; _tmp146_ = _type_param_index; _type_param_index = _tmp146_ + 1; _tmp147_ = _type_param_index; _tmp148_ = _type_param_size; if (!(_tmp147_ < _tmp148_)) { break; } _tmp149_ = _type_param_list; _tmp150_ = _type_param_index; _tmp151_ = vala_list_get (_tmp149_, _tmp150_); type_param = (ValaTypeParameter*) _tmp151_; _tmp152_ = vala_ccode_declaration_new ("DovaType *"); type_param_decl = _tmp152_; _tmp153_ = type_param_decl; _tmp154_ = type_param; _tmp155_ = vala_symbol_get_name ((ValaSymbol*) _tmp154_); _tmp156_ = _tmp155_; _tmp157_ = g_utf8_strdown (_tmp156_, (gssize) (-1)); _tmp158_ = _tmp157_; _tmp159_ = g_strdup_printf ("%s_type", _tmp158_); _tmp160_ = _tmp159_; _tmp161_ = vala_ccode_variable_declarator_new (_tmp160_, NULL, NULL); _tmp162_ = _tmp161_; vala_ccode_declaration_add_declarator (_tmp153_, (ValaCCodeDeclarator*) _tmp162_); _vala_ccode_node_unref0 (_tmp162_); _g_free0 (_tmp160_); _g_free0 (_tmp158_); _tmp163_ = type_priv_struct; _tmp164_ = type_param_decl; vala_ccode_struct_add_declaration (_tmp163_, _tmp164_); _vala_ccode_node_unref0 (type_param_decl); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } { ValaClass* _tmp165_; ValaList* _tmp166_ = NULL; ValaList* _m_list; ValaList* _tmp167_; gint _tmp168_; gint _tmp169_; gint _m_size; gint _m_index; _tmp165_ = cl; _tmp166_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp165_); _m_list = _tmp166_; _tmp167_ = _m_list; _tmp168_ = vala_collection_get_size ((ValaCollection*) _tmp167_); _tmp169_ = _tmp168_; _m_size = _tmp169_; _m_index = -1; while (TRUE) { gint _tmp170_; gint _tmp171_; gint _tmp172_; ValaList* _tmp173_; gint _tmp174_; gpointer _tmp175_ = NULL; ValaMethod* m; ValaMethod* _tmp176_; ValaCCodeFile* _tmp177_; ValaCCodeStruct* _tmp178_; _tmp170_ = _m_index; _m_index = _tmp170_ + 1; _tmp171_ = _m_index; _tmp172_ = _m_size; if (!(_tmp171_ < _tmp172_)) { break; } _tmp173_ = _m_list; _tmp174_ = _m_index; _tmp175_ = vala_list_get (_tmp173_, _tmp174_); m = (ValaMethod*) _tmp175_; _tmp176_ = m; _tmp177_ = decl_space; _tmp178_ = type_priv_struct; vala_dova_object_module_generate_virtual_method_declaration (self, _tmp176_, _tmp177_, _tmp178_); _vala_code_node_unref0 (m); } _vala_iterable_unref0 (_m_list); } { ValaClass* _tmp179_; ValaList* _tmp180_ = NULL; ValaList* _prop_list; ValaList* _tmp181_; gint _tmp182_; gint _tmp183_; gint _prop_size; gint _prop_index; _tmp179_ = cl; _tmp180_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp179_); _prop_list = _tmp180_; _tmp181_ = _prop_list; _tmp182_ = vala_collection_get_size ((ValaCollection*) _tmp181_); _tmp183_ = _tmp182_; _prop_size = _tmp183_; _prop_index = -1; while (TRUE) { gint _tmp184_; gint _tmp185_; gint _tmp186_; ValaList* _tmp187_; gint _tmp188_; gpointer _tmp189_ = NULL; ValaProperty* prop; gboolean _tmp190_ = FALSE; ValaProperty* _tmp191_; gboolean _tmp192_; gboolean _tmp193_; gboolean _tmp197_; ValaProperty* _tmp198_; ValaDataType* _tmp199_; ValaDataType* _tmp200_; ValaCCodeFile* _tmp201_; ValaProperty* _tmp202_; ValaSymbol* _tmp203_; ValaSymbol* _tmp204_; ValaObjectTypeSymbol* _tmp205_; ValaObjectTypeSymbol* t; ValaObjectTypeSymbol* _tmp206_; ValaObjectType* _tmp207_; ValaObjectType* this_type; ValaObjectType* _tmp208_; gchar* _tmp209_ = NULL; gchar* _tmp210_; ValaCCodeParameter* _tmp211_; ValaCCodeParameter* _tmp212_; ValaCCodeParameter* cselfparam; ValaProperty* _tmp213_; ValaDataType* _tmp214_; ValaDataType* _tmp215_; gchar* _tmp216_ = NULL; gchar* _tmp217_; ValaCCodeParameter* _tmp218_; ValaCCodeParameter* _tmp219_; ValaCCodeParameter* cvalueparam; ValaProperty* _tmp220_; ValaPropertyAccessor* _tmp221_; ValaPropertyAccessor* _tmp222_; ValaProperty* _tmp242_; ValaPropertyAccessor* _tmp243_; ValaPropertyAccessor* _tmp244_; _tmp184_ = _prop_index; _prop_index = _tmp184_ + 1; _tmp185_ = _prop_index; _tmp186_ = _prop_size; if (!(_tmp185_ < _tmp186_)) { break; } _tmp187_ = _prop_list; _tmp188_ = _prop_index; _tmp189_ = vala_list_get (_tmp187_, _tmp188_); prop = (ValaProperty*) _tmp189_; _tmp191_ = prop; _tmp192_ = vala_property_get_is_abstract (_tmp191_); _tmp193_ = _tmp192_; if (!_tmp193_) { ValaProperty* _tmp194_; gboolean _tmp195_; gboolean _tmp196_; _tmp194_ = prop; _tmp195_ = vala_property_get_is_virtual (_tmp194_); _tmp196_ = _tmp195_; _tmp190_ = !_tmp196_; } else { _tmp190_ = FALSE; } _tmp197_ = _tmp190_; if (_tmp197_) { _vala_code_node_unref0 (prop); continue; } _tmp198_ = prop; _tmp199_ = vala_property_get_property_type (_tmp198_); _tmp200_ = _tmp199_; _tmp201_ = decl_space; vala_dova_base_module_generate_type_declaration ((ValaDovaBaseModule*) self, _tmp200_, _tmp201_); _tmp202_ = prop; _tmp203_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp202_); _tmp204_ = _tmp203_; _tmp205_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE_SYMBOL (_tmp204_)); t = _tmp205_; _tmp206_ = t; _tmp207_ = vala_object_type_new (_tmp206_); this_type = _tmp207_; _tmp208_ = this_type; _tmp209_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp208_); _tmp210_ = _tmp209_; _tmp211_ = vala_ccode_parameter_new ("this", _tmp210_); _tmp212_ = _tmp211_; _g_free0 (_tmp210_); cselfparam = _tmp212_; _tmp213_ = prop; _tmp214_ = vala_property_get_property_type (_tmp213_); _tmp215_ = _tmp214_; _tmp216_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp215_); _tmp217_ = _tmp216_; _tmp218_ = vala_ccode_parameter_new ("value", _tmp217_); _tmp219_ = _tmp218_; _g_free0 (_tmp217_); cvalueparam = _tmp219_; _tmp220_ = prop; _tmp221_ = vala_property_get_get_accessor (_tmp220_); _tmp222_ = _tmp221_; if (_tmp222_ != NULL) { ValaProperty* _tmp223_; const gchar* _tmp224_; const gchar* _tmp225_; gchar* _tmp226_ = NULL; gchar* _tmp227_; ValaCCodeFunctionDeclarator* _tmp228_; ValaCCodeFunctionDeclarator* _tmp229_; ValaCCodeFunctionDeclarator* vdeclarator; ValaCCodeFunctionDeclarator* _tmp230_; ValaCCodeParameter* _tmp231_; ValaProperty* _tmp232_; ValaDataType* _tmp233_; ValaDataType* _tmp234_; gchar* _tmp235_ = NULL; gchar* creturn_type; const gchar* _tmp236_; ValaCCodeDeclaration* _tmp237_; ValaCCodeDeclaration* vdecl; ValaCCodeDeclaration* _tmp238_; ValaCCodeFunctionDeclarator* _tmp239_; ValaCCodeStruct* _tmp240_; ValaCCodeDeclaration* _tmp241_; _tmp223_ = prop; _tmp224_ = vala_symbol_get_name ((ValaSymbol*) _tmp223_); _tmp225_ = _tmp224_; _tmp226_ = g_strdup_printf ("get_%s", _tmp225_); _tmp227_ = _tmp226_; _tmp228_ = vala_ccode_function_declarator_new (_tmp227_); _tmp229_ = _tmp228_; _g_free0 (_tmp227_); vdeclarator = _tmp229_; _tmp230_ = vdeclarator; _tmp231_ = cselfparam; vala_ccode_function_declarator_add_parameter (_tmp230_, _tmp231_); _tmp232_ = prop; _tmp233_ = vala_property_get_property_type (_tmp232_); _tmp234_ = _tmp233_; _tmp235_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp234_); creturn_type = _tmp235_; _tmp236_ = creturn_type; _tmp237_ = vala_ccode_declaration_new (_tmp236_); vdecl = _tmp237_; _tmp238_ = vdecl; _tmp239_ = vdeclarator; vala_ccode_declaration_add_declarator (_tmp238_, (ValaCCodeDeclarator*) _tmp239_); _tmp240_ = type_priv_struct; _tmp241_ = vdecl; vala_ccode_struct_add_declaration (_tmp240_, _tmp241_); _vala_ccode_node_unref0 (vdecl); _g_free0 (creturn_type); _vala_ccode_node_unref0 (vdeclarator); } _tmp242_ = prop; _tmp243_ = vala_property_get_set_accessor (_tmp242_); _tmp244_ = _tmp243_; if (_tmp244_ != NULL) { ValaProperty* _tmp245_; const gchar* _tmp246_; const gchar* _tmp247_; gchar* _tmp248_ = NULL; gchar* _tmp249_; ValaCCodeFunctionDeclarator* _tmp250_; ValaCCodeFunctionDeclarator* _tmp251_; ValaCCodeFunctionDeclarator* vdeclarator; ValaCCodeFunctionDeclarator* _tmp252_; ValaCCodeParameter* _tmp253_; ValaCCodeFunctionDeclarator* _tmp254_; ValaCCodeParameter* _tmp255_; ValaCCodeDeclaration* _tmp256_; ValaCCodeDeclaration* vdecl; ValaCCodeDeclaration* _tmp257_; ValaCCodeFunctionDeclarator* _tmp258_; ValaCCodeStruct* _tmp259_; ValaCCodeDeclaration* _tmp260_; _tmp245_ = prop; _tmp246_ = vala_symbol_get_name ((ValaSymbol*) _tmp245_); _tmp247_ = _tmp246_; _tmp248_ = g_strdup_printf ("set_%s", _tmp247_); _tmp249_ = _tmp248_; _tmp250_ = vala_ccode_function_declarator_new (_tmp249_); _tmp251_ = _tmp250_; _g_free0 (_tmp249_); vdeclarator = _tmp251_; _tmp252_ = vdeclarator; _tmp253_ = cselfparam; vala_ccode_function_declarator_add_parameter (_tmp252_, _tmp253_); _tmp254_ = vdeclarator; _tmp255_ = cvalueparam; vala_ccode_function_declarator_add_parameter (_tmp254_, _tmp255_); _tmp256_ = vala_ccode_declaration_new ("void"); vdecl = _tmp256_; _tmp257_ = vdecl; _tmp258_ = vdeclarator; vala_ccode_declaration_add_declarator (_tmp257_, (ValaCCodeDeclarator*) _tmp258_); _tmp259_ = type_priv_struct; _tmp260_ = vdecl; vala_ccode_struct_add_declaration (_tmp259_, _tmp260_); _vala_ccode_node_unref0 (vdecl); _vala_ccode_node_unref0 (vdeclarator); } _vala_ccode_node_unref0 (cvalueparam); _vala_ccode_node_unref0 (cselfparam); _vala_code_node_unref0 (this_type); _vala_code_node_unref0 (t); _vala_code_node_unref0 (prop); } _vala_iterable_unref0 (_prop_list); } _tmp261_ = instance_priv_struct; _tmp262_ = vala_ccode_struct_get_is_empty (_tmp261_); _tmp263_ = _tmp262_; if (!_tmp263_) { ValaCCodeFile* _tmp264_; ValaCCodeStruct* _tmp265_; const gchar* _tmp266_; const gchar* _tmp267_; gchar* _tmp268_ = NULL; gchar* _tmp269_; ValaClass* _tmp270_; gchar* _tmp271_ = NULL; gchar* _tmp272_; gchar* _tmp273_ = NULL; gchar* _tmp274_; ValaCCodeVariableDeclarator* _tmp275_; ValaCCodeVariableDeclarator* _tmp276_; ValaCCodeTypeDefinition* _tmp277_; ValaCCodeTypeDefinition* _tmp278_; ValaCCodeFile* _tmp279_; ValaCCodeStruct* _tmp280_; _tmp264_ = decl_space; _tmp265_ = instance_priv_struct; _tmp266_ = vala_ccode_struct_get_name (_tmp265_); _tmp267_ = _tmp266_; _tmp268_ = g_strdup_printf ("struct %s", _tmp267_); _tmp269_ = _tmp268_; _tmp270_ = cl; _tmp271_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp270_); _tmp272_ = _tmp271_; _tmp273_ = g_strdup_printf ("%sPrivate", _tmp272_); _tmp274_ = _tmp273_; _tmp275_ = vala_ccode_variable_declarator_new (_tmp274_, NULL, NULL); _tmp276_ = _tmp275_; _tmp277_ = vala_ccode_type_definition_new (_tmp269_, (ValaCCodeDeclarator*) _tmp276_); _tmp278_ = _tmp277_; vala_ccode_file_add_type_declaration (_tmp264_, (ValaCCodeNode*) _tmp278_); _vala_ccode_node_unref0 (_tmp278_); _vala_ccode_node_unref0 (_tmp276_); _g_free0 (_tmp274_); _g_free0 (_tmp272_); _g_free0 (_tmp269_); _tmp279_ = decl_space; _tmp280_ = instance_priv_struct; vala_ccode_file_add_type_definition (_tmp279_, (ValaCCodeNode*) _tmp280_); } _tmp281_ = type_priv_struct; _tmp282_ = vala_ccode_struct_get_is_empty (_tmp281_); _tmp283_ = _tmp282_; if (!_tmp283_) { ValaCCodeFile* _tmp284_; ValaCCodeStruct* _tmp285_; const gchar* _tmp286_; const gchar* _tmp287_; gchar* _tmp288_ = NULL; gchar* _tmp289_; ValaClass* _tmp290_; gchar* _tmp291_ = NULL; gchar* _tmp292_; gchar* _tmp293_ = NULL; gchar* _tmp294_; ValaCCodeVariableDeclarator* _tmp295_; ValaCCodeVariableDeclarator* _tmp296_; ValaCCodeTypeDefinition* _tmp297_; ValaCCodeTypeDefinition* _tmp298_; ValaCCodeFile* _tmp299_; ValaCCodeStruct* _tmp300_; _tmp284_ = decl_space; _tmp285_ = type_priv_struct; _tmp286_ = vala_ccode_struct_get_name (_tmp285_); _tmp287_ = _tmp286_; _tmp288_ = g_strdup_printf ("struct %s", _tmp287_); _tmp289_ = _tmp288_; _tmp290_ = cl; _tmp291_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp290_); _tmp292_ = _tmp291_; _tmp293_ = g_strdup_printf ("%sTypePrivate", _tmp292_); _tmp294_ = _tmp293_; _tmp295_ = vala_ccode_variable_declarator_new (_tmp294_, NULL, NULL); _tmp296_ = _tmp295_; _tmp297_ = vala_ccode_type_definition_new (_tmp289_, (ValaCCodeDeclarator*) _tmp296_); _tmp298_ = _tmp297_; vala_ccode_file_add_type_declaration (_tmp284_, (ValaCCodeNode*) _tmp298_); _vala_ccode_node_unref0 (_tmp298_); _vala_ccode_node_unref0 (_tmp296_); _g_free0 (_tmp294_); _g_free0 (_tmp292_); _g_free0 (_tmp289_); _tmp299_ = decl_space; _tmp300_ = type_priv_struct; vala_ccode_file_add_type_definition (_tmp299_, (ValaCCodeNode*) _tmp300_); } _tmp301_ = vala_ccode_declaration_new ("intptr_t"); _cdecl_ = _tmp301_; _tmp302_ = _cdecl_; _tmp303_ = cl; _tmp304_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp303_, NULL); _tmp305_ = _tmp304_; _tmp306_ = g_strdup_printf ("_%s_object_offset", _tmp305_); _tmp307_ = _tmp306_; _tmp308_ = vala_ccode_constant_new ("0"); _tmp309_ = _tmp308_; _tmp310_ = vala_ccode_variable_declarator_new (_tmp307_, (ValaCCodeExpression*) _tmp309_, NULL); _tmp311_ = _tmp310_; vala_ccode_declaration_add_declarator (_tmp302_, (ValaCCodeDeclarator*) _tmp311_); _vala_ccode_node_unref0 (_tmp311_); _vala_ccode_node_unref0 (_tmp309_); _g_free0 (_tmp307_); _g_free0 (_tmp305_); _tmp312_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp312_, VALA_CCODE_MODIFIERS_STATIC); _tmp313_ = decl_space; _tmp314_ = _cdecl_; vala_ccode_file_add_type_member_declaration (_tmp313_, (ValaCCodeNode*) _tmp314_); _tmp315_ = cl; _tmp316_ = vala_class_get_base_class (_tmp315_); _tmp317_ = _tmp316_; if (_tmp317_ == NULL) { ValaClass* _tmp318_; gchar* _tmp319_ = NULL; gchar* _tmp320_; gchar* _tmp321_ = NULL; ValaCCodeConstant* _tmp322_; _tmp318_ = cl; _tmp319_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp318_); _tmp320_ = _tmp319_; _tmp321_ = g_strdup_printf ("((%sPrivate *) o)", _tmp320_); _g_free0 (macro); macro = _tmp321_; _g_free0 (_tmp320_); _tmp322_ = vala_ccode_constant_new ("sizeof (anyPrivate) + sizeof (DovaObjectPrivate) + sizeof (DovaTypePri" \ "vate)"); _vala_ccode_node_unref0 (type_offset); type_offset = (ValaCCodeExpression*) _tmp322_; } else { ValaClass* _tmp323_; ValaClass* _tmp324_; _tmp323_ = cl; _tmp324_ = ((ValaDovaBaseModule*) self)->object_class; if (_tmp323_ == _tmp324_) { ValaClass* _tmp325_; gchar* _tmp326_ = NULL; gchar* _tmp327_; gchar* _tmp328_ = NULL; ValaCCodeConstant* _tmp329_; _tmp325_ = cl; _tmp326_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp325_); _tmp327_ = _tmp326_; _tmp328_ = g_strdup_printf ("((%sPrivate *) (((char *) o) + sizeof (anyPrivate)))", _tmp327_); _g_free0 (macro); macro = _tmp328_; _g_free0 (_tmp327_); _tmp329_ = vala_ccode_constant_new ("sizeof (anyPrivate) + sizeof (DovaObjectPrivate) + sizeof (DovaTypePri" \ "vate) + sizeof (anyTypePrivate)"); _vala_ccode_node_unref0 (type_offset); type_offset = (ValaCCodeExpression*) _tmp329_; } else { ValaClass* _tmp330_; ValaClass* _tmp331_; _tmp330_ = cl; _tmp331_ = ((ValaDovaBaseModule*) self)->type_class; if (_tmp330_ == _tmp331_) { ValaClass* _tmp332_; gchar* _tmp333_ = NULL; gchar* _tmp334_; gchar* _tmp335_ = NULL; ValaCCodeConstant* _tmp336_; _tmp332_ = cl; _tmp333_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp332_); _tmp334_ = _tmp333_; _tmp335_ = g_strdup_printf ("((%sPrivate *) (((char *) o) + sizeof (anyPrivate) + sizeof (DovaObjec" \ "tPrivate)))", _tmp334_); _g_free0 (macro); macro = _tmp335_; _g_free0 (_tmp334_); _tmp336_ = vala_ccode_constant_new ("sizeof (anyPrivate) + sizeof (DovaObjectPrivate) + sizeof (DovaTypePri" \ "vate) + sizeof (anyTypePrivate) + sizeof (DovaObjectTypePrivate)"); _vala_ccode_node_unref0 (type_offset); type_offset = (ValaCCodeExpression*) _tmp336_; } else { ValaClass* _tmp337_; gchar* _tmp338_ = NULL; gchar* _tmp339_; ValaClass* _tmp340_; gchar* _tmp341_ = NULL; gchar* _tmp342_; gchar* _tmp343_ = NULL; ValaCCodeConstant* _tmp344_; _tmp337_ = cl; _tmp338_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp337_); _tmp339_ = _tmp338_; _tmp340_ = cl; _tmp341_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp340_, NULL); _tmp342_ = _tmp341_; _tmp343_ = g_strdup_printf ("((%sPrivate *) (((char *) o) + _%s_object_offset))", _tmp339_, _tmp342_); _g_free0 (macro); macro = _tmp343_; _g_free0 (_tmp342_); _g_free0 (_tmp339_); _tmp344_ = vala_ccode_constant_new ("0"); _vala_ccode_node_unref0 (type_offset); type_offset = (ValaCCodeExpression*) _tmp344_; } } } _tmp345_ = instance_priv_struct; _tmp346_ = vala_ccode_struct_get_is_empty (_tmp345_); _tmp347_ = _tmp346_; if (!_tmp347_) { ValaCCodeFile* _tmp348_; ValaClass* _tmp349_; gchar* _tmp350_ = NULL; gchar* _tmp351_; gchar* _tmp352_ = NULL; gchar* _tmp353_; const gchar* _tmp354_; ValaCCodeMacroReplacement* _tmp355_; ValaCCodeMacroReplacement* _tmp356_; _tmp348_ = decl_space; _tmp349_ = cl; _tmp350_ = vala_dova_base_module_get_ccode_upper_case_name ((ValaDovaBaseModule*) self, (ValaSymbol*) _tmp349_, NULL); _tmp351_ = _tmp350_; _tmp352_ = g_strdup_printf ("%s_GET_PRIVATE(o)", _tmp351_); _tmp353_ = _tmp352_; _tmp354_ = macro; _tmp355_ = vala_ccode_macro_replacement_new (_tmp353_, _tmp354_); _tmp356_ = _tmp355_; vala_ccode_file_add_type_member_declaration (_tmp348_, (ValaCCodeNode*) _tmp356_); _vala_ccode_node_unref0 (_tmp356_); _g_free0 (_tmp353_); _g_free0 (_tmp351_); } _tmp357_ = vala_ccode_declaration_new ("intptr_t"); _vala_ccode_node_unref0 (_cdecl_); _cdecl_ = _tmp357_; _tmp358_ = _cdecl_; _tmp359_ = cl; _tmp360_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp359_, NULL); _tmp361_ = _tmp360_; _tmp362_ = g_strdup_printf ("_%s_type_offset", _tmp361_); _tmp363_ = _tmp362_; _tmp364_ = type_offset; _tmp365_ = vala_ccode_variable_declarator_new (_tmp363_, _tmp364_, NULL); _tmp366_ = _tmp365_; vala_ccode_declaration_add_declarator (_tmp358_, (ValaCCodeDeclarator*) _tmp366_); _vala_ccode_node_unref0 (_tmp366_); _g_free0 (_tmp363_); _g_free0 (_tmp361_); _tmp367_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp367_, VALA_CCODE_MODIFIERS_STATIC); _tmp368_ = decl_space; _tmp369_ = _cdecl_; vala_ccode_file_add_type_member_declaration (_tmp368_, (ValaCCodeNode*) _tmp369_); _g_free0 (macro); _vala_ccode_node_unref0 (type_offset); _vala_ccode_node_unref0 (_cdecl_); _vala_ccode_node_unref0 (type_priv_struct); _vala_ccode_node_unref0 (instance_priv_struct); } static ValaCCodeFunction* vala_dova_object_module_create_set_value_copy_function (ValaDovaObjectModule* self, gboolean decl_only) { ValaCCodeFunction* result = NULL; ValaCCodeFunction* _tmp0_; ValaCCodeFunction* _result_; ValaCCodeFunction* _tmp1_; ValaCCodeParameter* _tmp2_; ValaCCodeParameter* _tmp3_; ValaCCodeFunction* _tmp4_; ValaCCodeParameter* _tmp5_; ValaCCodeParameter* _tmp6_; gboolean _tmp7_; ValaCCodeFunction* _tmp8_; ValaCCodeBlock* _tmp9_; ValaCCodeBlock* _tmp10_; ValaCCodeIdentifier* _tmp11_; ValaCCodeIdentifier* _tmp12_; ValaCCodeFunctionCall* _tmp13_; ValaCCodeFunctionCall* _tmp14_; ValaCCodeFunctionCall* priv_call; ValaCCodeFunctionCall* _tmp15_; ValaCCodeIdentifier* _tmp16_; ValaCCodeIdentifier* _tmp17_; ValaCCodeFunction* _tmp18_; ValaCCodeBlock* _tmp19_; ValaCCodeBlock* _tmp20_; ValaCCodeFunctionCall* _tmp21_; ValaCCodeMemberAccess* _tmp22_; ValaCCodeMemberAccess* _tmp23_; ValaCCodeIdentifier* _tmp24_; ValaCCodeIdentifier* _tmp25_; ValaCCodeAssignment* _tmp26_; ValaCCodeAssignment* _tmp27_; ValaCCodeExpressionStatement* _tmp28_; ValaCCodeExpressionStatement* _tmp29_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_function_new ("dova_type_set_value_copy", "void"); _result_ = _tmp0_; _tmp1_ = _result_; _tmp2_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp3_ = _tmp2_; vala_ccode_function_add_parameter (_tmp1_, _tmp3_); _vala_ccode_node_unref0 (_tmp3_); _tmp4_ = _result_; _tmp5_ = vala_ccode_parameter_new ("(*function) (void *dest, intptr_t dest_index, void *src, intptr_t src_" \ "index)", "void"); _tmp6_ = _tmp5_; vala_ccode_function_add_parameter (_tmp4_, _tmp6_); _vala_ccode_node_unref0 (_tmp6_); _tmp7_ = decl_only; if (_tmp7_) { result = _result_; return result; } _tmp8_ = _result_; _tmp9_ = vala_ccode_block_new (); _tmp10_ = _tmp9_; vala_ccode_function_set_block (_tmp8_, _tmp10_); _vala_ccode_node_unref0 (_tmp10_); _tmp11_ = vala_ccode_identifier_new ("DOVA_TYPE_GET_PRIVATE"); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp12_); _tmp14_ = _tmp13_; _vala_ccode_node_unref0 (_tmp12_); priv_call = _tmp14_; _tmp15_ = priv_call; _tmp16_ = vala_ccode_identifier_new ("type"); _tmp17_ = _tmp16_; vala_ccode_function_call_add_argument (_tmp15_, (ValaCCodeExpression*) _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _tmp18_ = _result_; _tmp19_ = vala_ccode_function_get_block (_tmp18_); _tmp20_ = _tmp19_; _tmp21_ = priv_call; _tmp22_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp21_, "value_copy"); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_identifier_new ("function"); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp23_, (ValaCCodeExpression*) _tmp25_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp27_); _tmp29_ = _tmp28_; vala_ccode_block_add_statement (_tmp20_, (ValaCCodeNode*) _tmp29_); _vala_ccode_node_unref0 (_tmp29_); _vala_ccode_node_unref0 (_tmp27_); _vala_ccode_node_unref0 (_tmp25_); _vala_ccode_node_unref0 (_tmp23_); result = _result_; _vala_ccode_node_unref0 (priv_call); return result; } void vala_dova_object_module_declare_set_value_copy_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space) { ValaCCodeFile* _tmp0_; ValaClass* _tmp1_; gboolean _tmp2_ = FALSE; ValaCCodeFile* _tmp3_; ValaCCodeFunction* _tmp4_ = NULL; ValaCCodeFunction* _tmp5_; g_return_if_fail (self != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = ((ValaDovaBaseModule*) self)->type_class; _tmp2_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, "dova_type_set_value_copy"); if (_tmp2_) { return; } _tmp3_ = decl_space; _tmp4_ = vala_dova_object_module_create_set_value_copy_function (self, TRUE); _tmp5_ = _tmp4_; vala_ccode_file_add_function_declaration (_tmp3_, _tmp5_); _vala_ccode_node_unref0 (_tmp5_); } static ValaCCodeFunction* vala_dova_object_module_create_set_value_equals_function (ValaDovaObjectModule* self, gboolean decl_only) { ValaCCodeFunction* result = NULL; ValaCCodeFunction* _tmp0_; ValaCCodeFunction* _result_; ValaCCodeFunction* _tmp1_; ValaCCodeParameter* _tmp2_; ValaCCodeParameter* _tmp3_; ValaCCodeFunction* _tmp4_; ValaCCodeParameter* _tmp5_; ValaCCodeParameter* _tmp6_; gboolean _tmp7_; ValaCCodeFunction* _tmp8_; ValaCCodeBlock* _tmp9_; ValaCCodeBlock* _tmp10_; ValaCCodeIdentifier* _tmp11_; ValaCCodeIdentifier* _tmp12_; ValaCCodeFunctionCall* _tmp13_; ValaCCodeFunctionCall* _tmp14_; ValaCCodeFunctionCall* priv_call; ValaCCodeFunctionCall* _tmp15_; ValaCCodeIdentifier* _tmp16_; ValaCCodeIdentifier* _tmp17_; ValaCCodeFunction* _tmp18_; ValaCCodeBlock* _tmp19_; ValaCCodeBlock* _tmp20_; ValaCCodeFunctionCall* _tmp21_; ValaCCodeMemberAccess* _tmp22_; ValaCCodeMemberAccess* _tmp23_; ValaCCodeIdentifier* _tmp24_; ValaCCodeIdentifier* _tmp25_; ValaCCodeAssignment* _tmp26_; ValaCCodeAssignment* _tmp27_; ValaCCodeExpressionStatement* _tmp28_; ValaCCodeExpressionStatement* _tmp29_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_function_new ("dova_type_set_value_equals", "void"); _result_ = _tmp0_; _tmp1_ = _result_; _tmp2_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp3_ = _tmp2_; vala_ccode_function_add_parameter (_tmp1_, _tmp3_); _vala_ccode_node_unref0 (_tmp3_); _tmp4_ = _result_; _tmp5_ = vala_ccode_parameter_new ("(*function) (void *value, intptr_t value_index, void *other, intptr_t " \ "other_index)", "bool"); _tmp6_ = _tmp5_; vala_ccode_function_add_parameter (_tmp4_, _tmp6_); _vala_ccode_node_unref0 (_tmp6_); _tmp7_ = decl_only; if (_tmp7_) { result = _result_; return result; } _tmp8_ = _result_; _tmp9_ = vala_ccode_block_new (); _tmp10_ = _tmp9_; vala_ccode_function_set_block (_tmp8_, _tmp10_); _vala_ccode_node_unref0 (_tmp10_); _tmp11_ = vala_ccode_identifier_new ("DOVA_TYPE_GET_PRIVATE"); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp12_); _tmp14_ = _tmp13_; _vala_ccode_node_unref0 (_tmp12_); priv_call = _tmp14_; _tmp15_ = priv_call; _tmp16_ = vala_ccode_identifier_new ("type"); _tmp17_ = _tmp16_; vala_ccode_function_call_add_argument (_tmp15_, (ValaCCodeExpression*) _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _tmp18_ = _result_; _tmp19_ = vala_ccode_function_get_block (_tmp18_); _tmp20_ = _tmp19_; _tmp21_ = priv_call; _tmp22_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp21_, "value_equals"); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_identifier_new ("function"); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp23_, (ValaCCodeExpression*) _tmp25_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp27_); _tmp29_ = _tmp28_; vala_ccode_block_add_statement (_tmp20_, (ValaCCodeNode*) _tmp29_); _vala_ccode_node_unref0 (_tmp29_); _vala_ccode_node_unref0 (_tmp27_); _vala_ccode_node_unref0 (_tmp25_); _vala_ccode_node_unref0 (_tmp23_); result = _result_; _vala_ccode_node_unref0 (priv_call); return result; } void vala_dova_object_module_declare_set_value_equals_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space) { ValaCCodeFile* _tmp0_; ValaClass* _tmp1_; gboolean _tmp2_ = FALSE; ValaCCodeFile* _tmp3_; ValaCCodeFunction* _tmp4_ = NULL; ValaCCodeFunction* _tmp5_; g_return_if_fail (self != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = ((ValaDovaBaseModule*) self)->type_class; _tmp2_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, "dova_type_set_value_equals"); if (_tmp2_) { return; } _tmp3_ = decl_space; _tmp4_ = vala_dova_object_module_create_set_value_equals_function (self, TRUE); _tmp5_ = _tmp4_; vala_ccode_file_add_function_declaration (_tmp3_, _tmp5_); _vala_ccode_node_unref0 (_tmp5_); } static ValaCCodeFunction* vala_dova_object_module_create_set_value_hash_function (ValaDovaObjectModule* self, gboolean decl_only) { ValaCCodeFunction* result = NULL; ValaCCodeFunction* _tmp0_; ValaCCodeFunction* _result_; ValaCCodeFunction* _tmp1_; ValaCCodeParameter* _tmp2_; ValaCCodeParameter* _tmp3_; ValaCCodeFunction* _tmp4_; ValaCCodeParameter* _tmp5_; ValaCCodeParameter* _tmp6_; gboolean _tmp7_; ValaCCodeFunction* _tmp8_; ValaCCodeBlock* _tmp9_; ValaCCodeBlock* _tmp10_; ValaCCodeIdentifier* _tmp11_; ValaCCodeIdentifier* _tmp12_; ValaCCodeFunctionCall* _tmp13_; ValaCCodeFunctionCall* _tmp14_; ValaCCodeFunctionCall* priv_call; ValaCCodeFunctionCall* _tmp15_; ValaCCodeIdentifier* _tmp16_; ValaCCodeIdentifier* _tmp17_; ValaCCodeFunction* _tmp18_; ValaCCodeBlock* _tmp19_; ValaCCodeBlock* _tmp20_; ValaCCodeFunctionCall* _tmp21_; ValaCCodeMemberAccess* _tmp22_; ValaCCodeMemberAccess* _tmp23_; ValaCCodeIdentifier* _tmp24_; ValaCCodeIdentifier* _tmp25_; ValaCCodeAssignment* _tmp26_; ValaCCodeAssignment* _tmp27_; ValaCCodeExpressionStatement* _tmp28_; ValaCCodeExpressionStatement* _tmp29_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_function_new ("dova_type_set_value_hash", "void"); _result_ = _tmp0_; _tmp1_ = _result_; _tmp2_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp3_ = _tmp2_; vala_ccode_function_add_parameter (_tmp1_, _tmp3_); _vala_ccode_node_unref0 (_tmp3_); _tmp4_ = _result_; _tmp5_ = vala_ccode_parameter_new ("(*function) (void *value, intptr_t value_index)", "uintptr_t"); _tmp6_ = _tmp5_; vala_ccode_function_add_parameter (_tmp4_, _tmp6_); _vala_ccode_node_unref0 (_tmp6_); _tmp7_ = decl_only; if (_tmp7_) { result = _result_; return result; } _tmp8_ = _result_; _tmp9_ = vala_ccode_block_new (); _tmp10_ = _tmp9_; vala_ccode_function_set_block (_tmp8_, _tmp10_); _vala_ccode_node_unref0 (_tmp10_); _tmp11_ = vala_ccode_identifier_new ("DOVA_TYPE_GET_PRIVATE"); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp12_); _tmp14_ = _tmp13_; _vala_ccode_node_unref0 (_tmp12_); priv_call = _tmp14_; _tmp15_ = priv_call; _tmp16_ = vala_ccode_identifier_new ("type"); _tmp17_ = _tmp16_; vala_ccode_function_call_add_argument (_tmp15_, (ValaCCodeExpression*) _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _tmp18_ = _result_; _tmp19_ = vala_ccode_function_get_block (_tmp18_); _tmp20_ = _tmp19_; _tmp21_ = priv_call; _tmp22_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp21_, "value_hash"); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_identifier_new ("function"); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp23_, (ValaCCodeExpression*) _tmp25_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp27_); _tmp29_ = _tmp28_; vala_ccode_block_add_statement (_tmp20_, (ValaCCodeNode*) _tmp29_); _vala_ccode_node_unref0 (_tmp29_); _vala_ccode_node_unref0 (_tmp27_); _vala_ccode_node_unref0 (_tmp25_); _vala_ccode_node_unref0 (_tmp23_); result = _result_; _vala_ccode_node_unref0 (priv_call); return result; } void vala_dova_object_module_declare_set_value_hash_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space) { ValaCCodeFile* _tmp0_; ValaClass* _tmp1_; gboolean _tmp2_ = FALSE; ValaCCodeFile* _tmp3_; ValaCCodeFunction* _tmp4_ = NULL; ValaCCodeFunction* _tmp5_; g_return_if_fail (self != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = ((ValaDovaBaseModule*) self)->type_class; _tmp2_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, "dova_type_set_value_hash"); if (_tmp2_) { return; } _tmp3_ = decl_space; _tmp4_ = vala_dova_object_module_create_set_value_hash_function (self, TRUE); _tmp5_ = _tmp4_; vala_ccode_file_add_function_declaration (_tmp3_, _tmp5_); _vala_ccode_node_unref0 (_tmp5_); } static ValaCCodeFunction* vala_dova_object_module_create_set_value_to_any_function (ValaDovaObjectModule* self, gboolean decl_only) { ValaCCodeFunction* result = NULL; ValaCCodeFunction* _tmp0_; ValaCCodeFunction* _result_; ValaCCodeFunction* _tmp1_; ValaCCodeParameter* _tmp2_; ValaCCodeParameter* _tmp3_; ValaCCodeFunction* _tmp4_; ValaCCodeParameter* _tmp5_; ValaCCodeParameter* _tmp6_; gboolean _tmp7_; ValaCCodeFunction* _tmp8_; ValaCCodeBlock* _tmp9_; ValaCCodeBlock* _tmp10_; ValaCCodeIdentifier* _tmp11_; ValaCCodeIdentifier* _tmp12_; ValaCCodeFunctionCall* _tmp13_; ValaCCodeFunctionCall* _tmp14_; ValaCCodeFunctionCall* priv_call; ValaCCodeFunctionCall* _tmp15_; ValaCCodeIdentifier* _tmp16_; ValaCCodeIdentifier* _tmp17_; ValaCCodeFunction* _tmp18_; ValaCCodeBlock* _tmp19_; ValaCCodeBlock* _tmp20_; ValaCCodeFunctionCall* _tmp21_; ValaCCodeMemberAccess* _tmp22_; ValaCCodeMemberAccess* _tmp23_; ValaCCodeIdentifier* _tmp24_; ValaCCodeIdentifier* _tmp25_; ValaCCodeAssignment* _tmp26_; ValaCCodeAssignment* _tmp27_; ValaCCodeExpressionStatement* _tmp28_; ValaCCodeExpressionStatement* _tmp29_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_function_new ("dova_type_set_value_to_any", "void"); _result_ = _tmp0_; _tmp1_ = _result_; _tmp2_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp3_ = _tmp2_; vala_ccode_function_add_parameter (_tmp1_, _tmp3_); _vala_ccode_node_unref0 (_tmp3_); _tmp4_ = _result_; _tmp5_ = vala_ccode_parameter_new ("(*function) (void *value, intptr_t value_index)", "DovaObject *"); _tmp6_ = _tmp5_; vala_ccode_function_add_parameter (_tmp4_, _tmp6_); _vala_ccode_node_unref0 (_tmp6_); _tmp7_ = decl_only; if (_tmp7_) { result = _result_; return result; } _tmp8_ = _result_; _tmp9_ = vala_ccode_block_new (); _tmp10_ = _tmp9_; vala_ccode_function_set_block (_tmp8_, _tmp10_); _vala_ccode_node_unref0 (_tmp10_); _tmp11_ = vala_ccode_identifier_new ("DOVA_TYPE_GET_PRIVATE"); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp12_); _tmp14_ = _tmp13_; _vala_ccode_node_unref0 (_tmp12_); priv_call = _tmp14_; _tmp15_ = priv_call; _tmp16_ = vala_ccode_identifier_new ("type"); _tmp17_ = _tmp16_; vala_ccode_function_call_add_argument (_tmp15_, (ValaCCodeExpression*) _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _tmp18_ = _result_; _tmp19_ = vala_ccode_function_get_block (_tmp18_); _tmp20_ = _tmp19_; _tmp21_ = priv_call; _tmp22_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp21_, "value_to_any"); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_identifier_new ("function"); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp23_, (ValaCCodeExpression*) _tmp25_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp27_); _tmp29_ = _tmp28_; vala_ccode_block_add_statement (_tmp20_, (ValaCCodeNode*) _tmp29_); _vala_ccode_node_unref0 (_tmp29_); _vala_ccode_node_unref0 (_tmp27_); _vala_ccode_node_unref0 (_tmp25_); _vala_ccode_node_unref0 (_tmp23_); result = _result_; _vala_ccode_node_unref0 (priv_call); return result; } void vala_dova_object_module_declare_set_value_to_any_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space) { ValaCCodeFile* _tmp0_; ValaClass* _tmp1_; gboolean _tmp2_ = FALSE; ValaCCodeFile* _tmp3_; ValaCCodeFunction* _tmp4_ = NULL; ValaCCodeFunction* _tmp5_; g_return_if_fail (self != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = ((ValaDovaBaseModule*) self)->type_class; _tmp2_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, "dova_type_set_value_to_any"); if (_tmp2_) { return; } _tmp3_ = decl_space; _tmp4_ = vala_dova_object_module_create_set_value_to_any_function (self, TRUE); _tmp5_ = _tmp4_; vala_ccode_file_add_function_declaration (_tmp3_, _tmp5_); _vala_ccode_node_unref0 (_tmp5_); } static ValaCCodeFunction* vala_dova_object_module_create_set_value_from_any_function (ValaDovaObjectModule* self, gboolean decl_only) { ValaCCodeFunction* result = NULL; ValaCCodeFunction* _tmp0_; ValaCCodeFunction* _result_; ValaCCodeFunction* _tmp1_; ValaCCodeParameter* _tmp2_; ValaCCodeParameter* _tmp3_; ValaCCodeFunction* _tmp4_; ValaCCodeParameter* _tmp5_; ValaCCodeParameter* _tmp6_; gboolean _tmp7_; ValaCCodeFunction* _tmp8_; ValaCCodeBlock* _tmp9_; ValaCCodeBlock* _tmp10_; ValaCCodeIdentifier* _tmp11_; ValaCCodeIdentifier* _tmp12_; ValaCCodeFunctionCall* _tmp13_; ValaCCodeFunctionCall* _tmp14_; ValaCCodeFunctionCall* priv_call; ValaCCodeFunctionCall* _tmp15_; ValaCCodeIdentifier* _tmp16_; ValaCCodeIdentifier* _tmp17_; ValaCCodeFunction* _tmp18_; ValaCCodeBlock* _tmp19_; ValaCCodeBlock* _tmp20_; ValaCCodeFunctionCall* _tmp21_; ValaCCodeMemberAccess* _tmp22_; ValaCCodeMemberAccess* _tmp23_; ValaCCodeIdentifier* _tmp24_; ValaCCodeIdentifier* _tmp25_; ValaCCodeAssignment* _tmp26_; ValaCCodeAssignment* _tmp27_; ValaCCodeExpressionStatement* _tmp28_; ValaCCodeExpressionStatement* _tmp29_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = vala_ccode_function_new ("dova_type_set_value_from_any", "void"); _result_ = _tmp0_; _tmp1_ = _result_; _tmp2_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp3_ = _tmp2_; vala_ccode_function_add_parameter (_tmp1_, _tmp3_); _vala_ccode_node_unref0 (_tmp3_); _tmp4_ = _result_; _tmp5_ = vala_ccode_parameter_new ("(*function) (DovaObject *any, void *value, intptr_t value_index)", "void"); _tmp6_ = _tmp5_; vala_ccode_function_add_parameter (_tmp4_, _tmp6_); _vala_ccode_node_unref0 (_tmp6_); _tmp7_ = decl_only; if (_tmp7_) { result = _result_; return result; } _tmp8_ = _result_; _tmp9_ = vala_ccode_block_new (); _tmp10_ = _tmp9_; vala_ccode_function_set_block (_tmp8_, _tmp10_); _vala_ccode_node_unref0 (_tmp10_); _tmp11_ = vala_ccode_identifier_new ("DOVA_TYPE_GET_PRIVATE"); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp12_); _tmp14_ = _tmp13_; _vala_ccode_node_unref0 (_tmp12_); priv_call = _tmp14_; _tmp15_ = priv_call; _tmp16_ = vala_ccode_identifier_new ("type"); _tmp17_ = _tmp16_; vala_ccode_function_call_add_argument (_tmp15_, (ValaCCodeExpression*) _tmp17_); _vala_ccode_node_unref0 (_tmp17_); _tmp18_ = _result_; _tmp19_ = vala_ccode_function_get_block (_tmp18_); _tmp20_ = _tmp19_; _tmp21_ = priv_call; _tmp22_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp21_, "value_from_any"); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_identifier_new ("function"); _tmp25_ = _tmp24_; _tmp26_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp23_, (ValaCCodeExpression*) _tmp25_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp27_); _tmp29_ = _tmp28_; vala_ccode_block_add_statement (_tmp20_, (ValaCCodeNode*) _tmp29_); _vala_ccode_node_unref0 (_tmp29_); _vala_ccode_node_unref0 (_tmp27_); _vala_ccode_node_unref0 (_tmp25_); _vala_ccode_node_unref0 (_tmp23_); result = _result_; _vala_ccode_node_unref0 (priv_call); return result; } void vala_dova_object_module_declare_set_value_from_any_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space) { ValaCCodeFile* _tmp0_; ValaClass* _tmp1_; gboolean _tmp2_ = FALSE; ValaCCodeFile* _tmp3_; ValaCCodeFunction* _tmp4_ = NULL; ValaCCodeFunction* _tmp5_; g_return_if_fail (self != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = ((ValaDovaBaseModule*) self)->type_class; _tmp2_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, "dova_type_set_value_from_any"); if (_tmp2_) { return; } _tmp3_ = decl_space; _tmp4_ = vala_dova_object_module_create_set_value_from_any_function (self, TRUE); _tmp5_ = _tmp4_; vala_ccode_file_add_function_declaration (_tmp3_, _tmp5_); _vala_ccode_node_unref0 (_tmp5_); } static gpointer _vala_ccode_node_ref0 (gpointer self) { return self ? vala_ccode_node_ref (self) : NULL; } ValaCCodeBlock* vala_dova_object_module_generate_type_get_function (ValaDovaObjectModule* self, ValaTypeSymbol* cl, ValaClass* base_class) { ValaCCodeBlock* result = NULL; ValaDataType* base_class_type; gboolean _tmp0_ = FALSE; ValaClass* _tmp1_; gboolean _tmp3_; ValaCCodeDeclaration* _tmp21_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp22_; ValaTypeSymbol* _tmp23_; gchar* _tmp24_ = NULL; gchar* _tmp25_; gchar* _tmp26_ = NULL; gchar* _tmp27_; ValaCCodeConstant* _tmp28_; ValaCCodeConstant* _tmp29_; ValaCCodeVariableDeclarator* _tmp30_; ValaCCodeVariableDeclarator* _tmp31_; ValaCCodeDeclaration* _tmp32_; ValaCCodeFile* _tmp33_; ValaCCodeDeclaration* _tmp34_; ValaTypeSymbol* _tmp35_; gchar* _tmp36_ = NULL; gchar* _tmp37_; gchar* _tmp38_ = NULL; gchar* _tmp39_; ValaCCodeFunction* _tmp40_; ValaCCodeFunction* _tmp41_; ValaCCodeFunction* type_fun; ValaTypeSymbol* _tmp42_; gboolean _tmp43_ = FALSE; ValaTypeSymbol* _tmp45_; ValaObjectTypeSymbol* _tmp46_; ValaObjectTypeSymbol* object_type_symbol; ValaObjectTypeSymbol* _tmp47_; ValaCCodeFunction* _tmp69_; ValaCCodeBlock* _tmp70_; ValaCCodeBlock* _tmp71_; ValaCCodeBlock* _tmp72_; ValaCCodeBlock* type_init_block; ValaClass* _tmp73_; ValaTypeSymbol* _tmp281_; gchar* _tmp282_ = NULL; gchar* _tmp283_; gchar* _tmp284_ = NULL; gchar* _tmp285_; ValaCCodeIdentifier* _tmp286_; ValaCCodeIdentifier* _tmp287_; ValaCCodeFunctionCall* _tmp288_; ValaCCodeFunctionCall* _tmp289_; ValaCCodeFunctionCall* type_init_call; ValaCCodeFunctionCall* _tmp290_; ValaTypeSymbol* _tmp291_; gchar* _tmp292_ = NULL; gchar* _tmp293_; gchar* _tmp294_ = NULL; gchar* _tmp295_; ValaCCodeIdentifier* _tmp296_; ValaCCodeIdentifier* _tmp297_; ValaObjectTypeSymbol* _tmp298_; ValaCCodeBlock* _tmp312_; ValaCCodeFunctionCall* _tmp313_; ValaCCodeExpressionStatement* _tmp314_; ValaCCodeExpressionStatement* _tmp315_; ValaCCodeFunction* _tmp316_; ValaCCodeBlock* _tmp317_; ValaCCodeBlock* _tmp318_; ValaTypeSymbol* _tmp319_; gchar* _tmp320_ = NULL; gchar* _tmp321_; gchar* _tmp322_ = NULL; gchar* _tmp323_; ValaCCodeIdentifier* _tmp324_; ValaCCodeIdentifier* _tmp325_; ValaCCodeUnaryExpression* _tmp326_; ValaCCodeUnaryExpression* _tmp327_; ValaCCodeBlock* _tmp328_; ValaCCodeIfStatement* _tmp329_; ValaCCodeIfStatement* _tmp330_; gboolean _tmp331_ = FALSE; ValaObjectTypeSymbol* _tmp332_; gboolean _tmp338_; ValaCCodeFunction* _tmp619_; ValaCCodeBlock* _tmp620_; ValaCCodeBlock* _tmp621_; ValaTypeSymbol* _tmp622_; gchar* _tmp623_ = NULL; gchar* _tmp624_; gchar* _tmp625_ = NULL; gchar* _tmp626_; ValaCCodeIdentifier* _tmp627_; ValaCCodeIdentifier* _tmp628_; ValaCCodeReturnStatement* _tmp629_; ValaCCodeReturnStatement* _tmp630_; ValaCCodeFile* _tmp631_; ValaCCodeFunction* _tmp632_; ValaTypeSymbol* _tmp633_; gchar* _tmp634_ = NULL; gchar* _tmp635_; gchar* _tmp636_ = NULL; gchar* _tmp637_; ValaCCodeFunction* _tmp638_; ValaCCodeFunction* _tmp639_; ValaCCodeFunction* type_init_fun; ValaTypeSymbol* _tmp640_; gboolean _tmp641_ = FALSE; ValaCCodeFunction* _tmp643_; ValaCCodeParameter* _tmp644_; ValaCCodeParameter* _tmp645_; ValaObjectTypeSymbol* _tmp646_; ValaCCodeFunction* _tmp668_; ValaCCodeBlock* _tmp669_; ValaCCodeBlock* _tmp670_; gboolean _tmp671_ = FALSE; gboolean _tmp672_ = FALSE; gboolean _tmp673_ = FALSE; ValaClass* _tmp674_; gboolean _tmp677_; gboolean _tmp680_; gboolean _tmp683_; ValaCCodeFile* _tmp1228_; ValaCCodeFunction* _tmp1229_; ValaCCodeFunction* _tmp1230_; ValaCCodeBlock* _tmp1231_; ValaCCodeBlock* _tmp1232_; ValaCCodeBlock* _tmp1233_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (cl != NULL, NULL); base_class_type = NULL; _tmp1_ = base_class; if (_tmp1_ != NULL) { ValaTypeSymbol* _tmp2_; _tmp2_ = cl; _tmp0_ = VALA_IS_CLASS (_tmp2_); } else { _tmp0_ = FALSE; } _tmp3_ = _tmp0_; if (_tmp3_) { { ValaTypeSymbol* _tmp4_; ValaList* _tmp5_ = NULL; ValaList* _base_type_list; ValaList* _tmp6_; gint _tmp7_; gint _tmp8_; gint _base_type_size; gint _base_type_index; _tmp4_ = cl; _tmp5_ = vala_class_get_base_types (VALA_CLASS (_tmp4_)); _base_type_list = _tmp5_; _tmp6_ = _base_type_list; _tmp7_ = vala_collection_get_size ((ValaCollection*) _tmp6_); _tmp8_ = _tmp7_; _base_type_size = _tmp8_; _base_type_index = -1; while (TRUE) { gint _tmp9_; gint _tmp10_; gint _tmp11_; ValaList* _tmp12_; gint _tmp13_; gpointer _tmp14_ = NULL; ValaDataType* base_type; ValaDataType* _tmp15_; ValaTypeSymbol* _tmp16_; ValaTypeSymbol* _tmp17_; ValaClass* _tmp18_; _tmp9_ = _base_type_index; _base_type_index = _tmp9_ + 1; _tmp10_ = _base_type_index; _tmp11_ = _base_type_size; if (!(_tmp10_ < _tmp11_)) { break; } _tmp12_ = _base_type_list; _tmp13_ = _base_type_index; _tmp14_ = vala_list_get (_tmp12_, _tmp13_); base_type = (ValaDataType*) _tmp14_; _tmp15_ = base_type; _tmp16_ = vala_data_type_get_data_type (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = base_class; if (_tmp17_ == VALA_TYPESYMBOL (_tmp18_)) { ValaDataType* _tmp19_; ValaDataType* _tmp20_; _tmp19_ = base_type; _tmp20_ = _vala_code_node_ref0 (_tmp19_); _vala_code_node_unref0 (base_class_type); base_class_type = _tmp20_; _vala_code_node_unref0 (base_type); break; } _vala_code_node_unref0 (base_type); } _vala_iterable_unref0 (_base_type_list); } } _tmp21_ = vala_ccode_declaration_new ("DovaType *"); _cdecl_ = _tmp21_; _tmp22_ = _cdecl_; _tmp23_ = cl; _tmp24_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp23_, NULL); _tmp25_ = _tmp24_; _tmp26_ = g_strdup_printf ("%s_type", _tmp25_); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_constant_new ("NULL"); _tmp29_ = _tmp28_; _tmp30_ = vala_ccode_variable_declarator_new (_tmp27_, (ValaCCodeExpression*) _tmp29_, NULL); _tmp31_ = _tmp30_; vala_ccode_declaration_add_declarator (_tmp22_, (ValaCCodeDeclarator*) _tmp31_); _vala_ccode_node_unref0 (_tmp31_); _vala_ccode_node_unref0 (_tmp29_); _g_free0 (_tmp27_); _g_free0 (_tmp25_); _tmp32_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp32_, VALA_CCODE_MODIFIERS_STATIC); _tmp33_ = ((ValaDovaBaseModule*) self)->cfile; _tmp34_ = _cdecl_; vala_ccode_file_add_type_member_declaration (_tmp33_, (ValaCCodeNode*) _tmp34_); _tmp35_ = cl; _tmp36_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp35_, NULL); _tmp37_ = _tmp36_; _tmp38_ = g_strdup_printf ("%s_type_get", _tmp37_); _tmp39_ = _tmp38_; _tmp40_ = vala_ccode_function_new (_tmp39_, "DovaType *"); _tmp41_ = _tmp40_; _g_free0 (_tmp39_); _g_free0 (_tmp37_); type_fun = _tmp41_; _tmp42_ = cl; _tmp43_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp42_); if (_tmp43_) { ValaCCodeFunction* _tmp44_; _tmp44_ = type_fun; vala_ccode_function_set_modifiers (_tmp44_, VALA_CCODE_MODIFIERS_STATIC); } _tmp45_ = cl; _tmp46_ = _vala_code_node_ref0 (VALA_IS_OBJECT_TYPE_SYMBOL (_tmp45_) ? ((ValaObjectTypeSymbol*) _tmp45_) : NULL); object_type_symbol = _tmp46_; _tmp47_ = object_type_symbol; if (_tmp47_ != NULL) { { ValaObjectTypeSymbol* _tmp48_; ValaList* _tmp49_ = NULL; ValaList* _type_param_list; ValaList* _tmp50_; gint _tmp51_; gint _tmp52_; gint _type_param_size; gint _type_param_index; _tmp48_ = object_type_symbol; _tmp49_ = vala_object_type_symbol_get_type_parameters (_tmp48_); _type_param_list = _tmp49_; _tmp50_ = _type_param_list; _tmp51_ = vala_collection_get_size ((ValaCollection*) _tmp50_); _tmp52_ = _tmp51_; _type_param_size = _tmp52_; _type_param_index = -1; while (TRUE) { gint _tmp53_; gint _tmp54_; gint _tmp55_; ValaList* _tmp56_; gint _tmp57_; gpointer _tmp58_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp59_; ValaTypeParameter* _tmp60_; const gchar* _tmp61_; const gchar* _tmp62_; gchar* _tmp63_ = NULL; gchar* _tmp64_; gchar* _tmp65_ = NULL; gchar* _tmp66_; ValaCCodeParameter* _tmp67_; ValaCCodeParameter* _tmp68_; _tmp53_ = _type_param_index; _type_param_index = _tmp53_ + 1; _tmp54_ = _type_param_index; _tmp55_ = _type_param_size; if (!(_tmp54_ < _tmp55_)) { break; } _tmp56_ = _type_param_list; _tmp57_ = _type_param_index; _tmp58_ = vala_list_get (_tmp56_, _tmp57_); type_param = (ValaTypeParameter*) _tmp58_; _tmp59_ = type_fun; _tmp60_ = type_param; _tmp61_ = vala_symbol_get_name ((ValaSymbol*) _tmp60_); _tmp62_ = _tmp61_; _tmp63_ = g_utf8_strdown (_tmp62_, (gssize) (-1)); _tmp64_ = _tmp63_; _tmp65_ = g_strdup_printf ("%s_type", _tmp64_); _tmp66_ = _tmp65_; _tmp67_ = vala_ccode_parameter_new (_tmp66_, "DovaType *"); _tmp68_ = _tmp67_; vala_ccode_function_add_parameter (_tmp59_, _tmp68_); _vala_ccode_node_unref0 (_tmp68_); _g_free0 (_tmp66_); _g_free0 (_tmp64_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } } _tmp69_ = type_fun; _tmp70_ = vala_ccode_block_new (); _tmp71_ = _tmp70_; vala_ccode_function_set_block (_tmp69_, _tmp71_); _vala_ccode_node_unref0 (_tmp71_); _tmp72_ = vala_ccode_block_new (); type_init_block = _tmp72_; _tmp73_ = base_class; if (_tmp73_ == NULL) { ValaCCodeIdentifier* _tmp74_; ValaCCodeIdentifier* _tmp75_; ValaCCodeFunctionCall* _tmp76_; ValaCCodeFunctionCall* _tmp77_; ValaCCodeFunctionCall* sizeof_call; ValaCCodeFunctionCall* _tmp78_; ValaTypeSymbol* _tmp79_; gchar* _tmp80_ = NULL; gchar* _tmp81_; gchar* _tmp82_ = NULL; gchar* _tmp83_; ValaCCodeIdentifier* _tmp84_; ValaCCodeIdentifier* _tmp85_; ValaCCodeIdentifier* _tmp86_; ValaCCodeIdentifier* _tmp87_; ValaCCodeFunctionCall* _tmp88_; ValaCCodeFunctionCall* _tmp89_; ValaCCodeFunctionCall* calloc_call; ValaCCodeFunctionCall* _tmp90_; ValaCCodeConstant* _tmp91_; ValaCCodeConstant* _tmp92_; ValaCCodeFunctionCall* _tmp93_; ValaCCodeConstant* _tmp94_; ValaCCodeConstant* _tmp95_; ValaCCodeBlock* _tmp96_; ValaTypeSymbol* _tmp97_; gchar* _tmp98_ = NULL; gchar* _tmp99_; gchar* _tmp100_ = NULL; gchar* _tmp101_; ValaCCodeIdentifier* _tmp102_; ValaCCodeIdentifier* _tmp103_; ValaCCodeFunctionCall* _tmp104_; ValaCCodeAssignment* _tmp105_; ValaCCodeAssignment* _tmp106_; ValaCCodeExpressionStatement* _tmp107_; ValaCCodeExpressionStatement* _tmp108_; ValaCCodeIdentifier* _tmp109_; ValaCCodeIdentifier* _tmp110_; ValaCCodeFunctionCall* _tmp111_; ValaCCodeFunctionCall* _tmp112_; ValaCCodeFunctionCall* set_size; ValaCCodeFunctionCall* _tmp113_; ValaTypeSymbol* _tmp114_; gchar* _tmp115_ = NULL; gchar* _tmp116_; gchar* _tmp117_ = NULL; gchar* _tmp118_; ValaCCodeIdentifier* _tmp119_; ValaCCodeIdentifier* _tmp120_; ValaCCodeFunctionCall* _tmp121_; ValaCCodeFunctionCall* _tmp122_; ValaCCodeBlock* _tmp123_; ValaCCodeFunctionCall* _tmp124_; ValaCCodeExpressionStatement* _tmp125_; ValaCCodeExpressionStatement* _tmp126_; ValaCCodeBlock* _tmp127_; ValaCCodeIdentifier* _tmp128_; ValaCCodeIdentifier* _tmp129_; ValaCCodeConstant* _tmp130_; ValaCCodeConstant* _tmp131_; ValaCCodeAssignment* _tmp132_; ValaCCodeAssignment* _tmp133_; ValaCCodeExpressionStatement* _tmp134_; ValaCCodeExpressionStatement* _tmp135_; ValaCCodeIdentifier* _tmp136_; ValaCCodeIdentifier* _tmp137_; ValaCCodeFunctionCall* _tmp138_; ValaCCodeFunctionCall* _tmp139_; ValaTypeSymbol* _tmp140_; gchar* _tmp141_ = NULL; gchar* _tmp142_; gchar* _tmp143_ = NULL; gchar* _tmp144_; ValaCCodeIdentifier* _tmp145_; ValaCCodeIdentifier* _tmp146_; ValaCCodeFunctionCall* _tmp147_; ValaCCodeConstant* _tmp148_; ValaCCodeConstant* _tmp149_; ValaCCodeBlock* _tmp150_; ValaCCodeFunctionCall* _tmp151_; ValaCCodeExpressionStatement* _tmp152_; ValaCCodeExpressionStatement* _tmp153_; ValaCCodeBlock* _tmp154_; ValaTypeSymbol* _tmp155_; gchar* _tmp156_ = NULL; gchar* _tmp157_; gchar* _tmp158_ = NULL; gchar* _tmp159_; ValaCCodeIdentifier* _tmp160_; ValaCCodeIdentifier* _tmp161_; ValaCCodeMemberAccess* _tmp162_; ValaCCodeMemberAccess* _tmp163_; ValaCCodeIdentifier* _tmp164_; ValaCCodeIdentifier* _tmp165_; ValaCCodeFunctionCall* _tmp166_; ValaCCodeFunctionCall* _tmp167_; ValaCCodeAssignment* _tmp168_; ValaCCodeAssignment* _tmp169_; ValaCCodeExpressionStatement* _tmp170_; ValaCCodeExpressionStatement* _tmp171_; _tmp74_ = vala_ccode_identifier_new ("sizeof"); _tmp75_ = _tmp74_; _tmp76_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp75_); _tmp77_ = _tmp76_; _vala_ccode_node_unref0 (_tmp75_); sizeof_call = _tmp77_; _tmp78_ = sizeof_call; _tmp79_ = cl; _tmp80_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp79_); _tmp81_ = _tmp80_; _tmp82_ = g_strdup_printf ("%sPrivate", _tmp81_); _tmp83_ = _tmp82_; _tmp84_ = vala_ccode_identifier_new (_tmp83_); _tmp85_ = _tmp84_; vala_ccode_function_call_add_argument (_tmp78_, (ValaCCodeExpression*) _tmp85_); _vala_ccode_node_unref0 (_tmp85_); _g_free0 (_tmp83_); _g_free0 (_tmp81_); _tmp86_ = vala_ccode_identifier_new ("calloc"); _tmp87_ = _tmp86_; _tmp88_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp87_); _tmp89_ = _tmp88_; _vala_ccode_node_unref0 (_tmp87_); calloc_call = _tmp89_; _tmp90_ = calloc_call; _tmp91_ = vala_ccode_constant_new ("1"); _tmp92_ = _tmp91_; vala_ccode_function_call_add_argument (_tmp90_, (ValaCCodeExpression*) _tmp92_); _vala_ccode_node_unref0 (_tmp92_); _tmp93_ = calloc_call; _tmp94_ = vala_ccode_constant_new ("sizeof (anyPrivate) + sizeof (DovaObjectPrivate) + sizeof (DovaTypePri" \ "vate) + sizeof (anyTypePrivate)"); _tmp95_ = _tmp94_; vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp95_); _vala_ccode_node_unref0 (_tmp95_); _tmp96_ = type_init_block; _tmp97_ = cl; _tmp98_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp97_, NULL); _tmp99_ = _tmp98_; _tmp100_ = g_strdup_printf ("%s_type", _tmp99_); _tmp101_ = _tmp100_; _tmp102_ = vala_ccode_identifier_new (_tmp101_); _tmp103_ = _tmp102_; _tmp104_ = calloc_call; _tmp105_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp103_, (ValaCCodeExpression*) _tmp104_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp106_ = _tmp105_; _tmp107_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp106_); _tmp108_ = _tmp107_; vala_ccode_block_add_statement (_tmp96_, (ValaCCodeNode*) _tmp108_); _vala_ccode_node_unref0 (_tmp108_); _vala_ccode_node_unref0 (_tmp106_); _vala_ccode_node_unref0 (_tmp103_); _g_free0 (_tmp101_); _g_free0 (_tmp99_); _tmp109_ = vala_ccode_identifier_new ("dova_type_set_object_size"); _tmp110_ = _tmp109_; _tmp111_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp110_); _tmp112_ = _tmp111_; _vala_ccode_node_unref0 (_tmp110_); set_size = _tmp112_; _tmp113_ = set_size; _tmp114_ = cl; _tmp115_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp114_, NULL); _tmp116_ = _tmp115_; _tmp117_ = g_strdup_printf ("%s_type", _tmp116_); _tmp118_ = _tmp117_; _tmp119_ = vala_ccode_identifier_new (_tmp118_); _tmp120_ = _tmp119_; vala_ccode_function_call_add_argument (_tmp113_, (ValaCCodeExpression*) _tmp120_); _vala_ccode_node_unref0 (_tmp120_); _g_free0 (_tmp118_); _g_free0 (_tmp116_); _tmp121_ = set_size; _tmp122_ = sizeof_call; vala_ccode_function_call_add_argument (_tmp121_, (ValaCCodeExpression*) _tmp122_); _tmp123_ = type_init_block; _tmp124_ = set_size; _tmp125_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp124_); _tmp126_ = _tmp125_; vala_ccode_block_add_statement (_tmp123_, (ValaCCodeNode*) _tmp126_); _vala_ccode_node_unref0 (_tmp126_); _tmp127_ = type_init_block; _tmp128_ = vala_ccode_identifier_new ("_any_type_offset"); _tmp129_ = _tmp128_; _tmp130_ = vala_ccode_constant_new ("sizeof (any) + sizeof (DovaObjectPrivate) + sizeof (DovaTypePrivate)"); _tmp131_ = _tmp130_; _tmp132_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp129_, (ValaCCodeExpression*) _tmp131_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp133_ = _tmp132_; _tmp134_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp133_); _tmp135_ = _tmp134_; vala_ccode_block_add_statement (_tmp127_, (ValaCCodeNode*) _tmp135_); _vala_ccode_node_unref0 (_tmp135_); _vala_ccode_node_unref0 (_tmp133_); _vala_ccode_node_unref0 (_tmp131_); _vala_ccode_node_unref0 (_tmp129_); _tmp136_ = vala_ccode_identifier_new ("dova_type_set_type_size"); _tmp137_ = _tmp136_; _tmp138_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp137_); _vala_ccode_node_unref0 (set_size); set_size = _tmp138_; _vala_ccode_node_unref0 (_tmp137_); _tmp139_ = set_size; _tmp140_ = cl; _tmp141_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp140_, NULL); _tmp142_ = _tmp141_; _tmp143_ = g_strdup_printf ("%s_type", _tmp142_); _tmp144_ = _tmp143_; _tmp145_ = vala_ccode_identifier_new (_tmp144_); _tmp146_ = _tmp145_; vala_ccode_function_call_add_argument (_tmp139_, (ValaCCodeExpression*) _tmp146_); _vala_ccode_node_unref0 (_tmp146_); _g_free0 (_tmp144_); _g_free0 (_tmp142_); _tmp147_ = set_size; _tmp148_ = vala_ccode_constant_new ("sizeof (any) + sizeof (DovaObjectPrivate) + sizeof (DovaTypePrivate) +" \ " sizeof (anyTypePrivate)"); _tmp149_ = _tmp148_; vala_ccode_function_call_add_argument (_tmp147_, (ValaCCodeExpression*) _tmp149_); _vala_ccode_node_unref0 (_tmp149_); _tmp150_ = type_init_block; _tmp151_ = set_size; _tmp152_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp151_); _tmp153_ = _tmp152_; vala_ccode_block_add_statement (_tmp150_, (ValaCCodeNode*) _tmp153_); _vala_ccode_node_unref0 (_tmp153_); _tmp154_ = type_init_block; _tmp155_ = cl; _tmp156_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp155_, NULL); _tmp157_ = _tmp156_; _tmp158_ = g_strdup_printf ("%s_type", _tmp157_); _tmp159_ = _tmp158_; _tmp160_ = vala_ccode_identifier_new (_tmp159_); _tmp161_ = _tmp160_; _tmp162_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp161_, "type"); _tmp163_ = _tmp162_; _tmp164_ = vala_ccode_identifier_new ("dova_type_type_get"); _tmp165_ = _tmp164_; _tmp166_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp165_); _tmp167_ = _tmp166_; _tmp168_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp163_, (ValaCCodeExpression*) _tmp167_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp169_ = _tmp168_; _tmp170_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp169_); _tmp171_ = _tmp170_; vala_ccode_block_add_statement (_tmp154_, (ValaCCodeNode*) _tmp171_); _vala_ccode_node_unref0 (_tmp171_); _vala_ccode_node_unref0 (_tmp169_); _vala_ccode_node_unref0 (_tmp167_); _vala_ccode_node_unref0 (_tmp165_); _vala_ccode_node_unref0 (_tmp163_); _vala_ccode_node_unref0 (_tmp161_); _g_free0 (_tmp159_); _g_free0 (_tmp157_); _vala_ccode_node_unref0 (set_size); _vala_ccode_node_unref0 (calloc_call); _vala_ccode_node_unref0 (sizeof_call); } else { ValaClass* _tmp172_; ValaScope* _tmp173_; ValaScope* _tmp174_; ValaSymbol* _tmp175_ = NULL; ValaMethod* _tmp176_; ValaCCodeFile* _tmp177_; ValaClass* _tmp178_; ValaScope* _tmp179_; ValaScope* _tmp180_; ValaSymbol* _tmp181_ = NULL; ValaMethod* _tmp182_; ValaCCodeFile* _tmp183_; ValaClass* _tmp184_; gchar* _tmp185_ = NULL; gchar* _tmp186_; gchar* _tmp187_ = NULL; gchar* _tmp188_; ValaCCodeIdentifier* _tmp189_; ValaCCodeIdentifier* _tmp190_; ValaCCodeFunctionCall* _tmp191_; ValaCCodeFunctionCall* _tmp192_; ValaCCodeFunctionCall* base_type; ValaCCodeIdentifier* _tmp206_; ValaCCodeIdentifier* _tmp207_; ValaCCodeFunctionCall* _tmp208_; ValaCCodeFunctionCall* _tmp209_; ValaCCodeFunctionCall* alloc_call; ValaCCodeFunctionCall* _tmp210_; ValaCCodeFunctionCall* _tmp211_; gboolean _tmp212_ = FALSE; ValaTypeSymbol* _tmp213_; gboolean _tmp216_; gboolean _tmp228_ = FALSE; gboolean _tmp229_ = FALSE; ValaTypeSymbol* _tmp230_; gboolean _tmp233_; gboolean _tmp235_; ValaCCodeFunctionCall* _tmp247_; ValaTypeSymbol* _tmp248_; gchar* _tmp249_ = NULL; gchar* _tmp250_; gchar* _tmp251_ = NULL; gchar* _tmp252_; ValaCCodeIdentifier* _tmp253_; ValaCCodeIdentifier* _tmp254_; ValaCCodeUnaryExpression* _tmp255_; ValaCCodeUnaryExpression* _tmp256_; ValaCCodeFunctionCall* _tmp257_; ValaTypeSymbol* _tmp258_; gchar* _tmp259_ = NULL; gchar* _tmp260_; gchar* _tmp261_ = NULL; gchar* _tmp262_; ValaCCodeIdentifier* _tmp263_; ValaCCodeIdentifier* _tmp264_; ValaCCodeUnaryExpression* _tmp265_; ValaCCodeUnaryExpression* _tmp266_; ValaCCodeFunctionCall* _tmp267_; ValaTypeSymbol* _tmp268_; gchar* _tmp269_ = NULL; gchar* _tmp270_; gchar* _tmp271_ = NULL; gchar* _tmp272_; ValaCCodeIdentifier* _tmp273_; ValaCCodeIdentifier* _tmp274_; ValaCCodeUnaryExpression* _tmp275_; ValaCCodeUnaryExpression* _tmp276_; ValaCCodeBlock* _tmp277_; ValaCCodeFunctionCall* _tmp278_; ValaCCodeExpressionStatement* _tmp279_; ValaCCodeExpressionStatement* _tmp280_; _tmp172_ = ((ValaDovaBaseModule*) self)->object_class; _tmp173_ = vala_symbol_get_scope ((ValaSymbol*) _tmp172_); _tmp174_ = _tmp173_; _tmp175_ = vala_scope_lookup (_tmp174_, "alloc"); _tmp176_ = VALA_METHOD (_tmp175_); _tmp177_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp176_, _tmp177_); _vala_code_node_unref0 (_tmp176_); _tmp178_ = ((ValaDovaBaseModule*) self)->type_class; _tmp179_ = vala_symbol_get_scope ((ValaSymbol*) _tmp178_); _tmp180_ = _tmp179_; _tmp181_ = vala_scope_lookup (_tmp180_, "alloc"); _tmp182_ = VALA_METHOD (_tmp181_); _tmp183_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp182_, _tmp183_); _vala_code_node_unref0 (_tmp182_); _tmp184_ = base_class; _tmp185_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp184_, NULL); _tmp186_ = _tmp185_; _tmp187_ = g_strdup_printf ("%s_type_get", _tmp186_); _tmp188_ = _tmp187_; _tmp189_ = vala_ccode_identifier_new (_tmp188_); _tmp190_ = _tmp189_; _tmp191_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp190_); _tmp192_ = _tmp191_; _vala_ccode_node_unref0 (_tmp190_); _g_free0 (_tmp188_); _g_free0 (_tmp186_); base_type = _tmp192_; { gint i; i = 0; { gboolean _tmp193_; _tmp193_ = TRUE; while (TRUE) { gboolean _tmp194_; gint _tmp196_; ValaClass* _tmp197_; ValaList* _tmp198_ = NULL; ValaList* _tmp199_; gint _tmp200_; gint _tmp201_; gboolean _tmp202_; ValaCCodeFunctionCall* _tmp203_; ValaCCodeConstant* _tmp204_; ValaCCodeConstant* _tmp205_; _tmp194_ = _tmp193_; if (!_tmp194_) { gint _tmp195_; _tmp195_ = i; i = _tmp195_ + 1; } _tmp193_ = FALSE; _tmp196_ = i; _tmp197_ = base_class; _tmp198_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp197_); _tmp199_ = _tmp198_; _tmp200_ = vala_collection_get_size ((ValaCollection*) _tmp199_); _tmp201_ = _tmp200_; _tmp202_ = !(_tmp196_ < _tmp201_); _vala_iterable_unref0 (_tmp199_); if (_tmp202_) { break; } _tmp203_ = base_type; _tmp204_ = vala_ccode_constant_new ("NULL"); _tmp205_ = _tmp204_; vala_ccode_function_call_add_argument (_tmp203_, (ValaCCodeExpression*) _tmp205_); _vala_ccode_node_unref0 (_tmp205_); } } } _tmp206_ = vala_ccode_identifier_new ("dova_type_alloc"); _tmp207_ = _tmp206_; _tmp208_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp207_); _tmp209_ = _tmp208_; _vala_ccode_node_unref0 (_tmp207_); alloc_call = _tmp209_; _tmp210_ = alloc_call; _tmp211_ = base_type; vala_ccode_function_call_add_argument (_tmp210_, (ValaCCodeExpression*) _tmp211_); _tmp213_ = cl; if (!VALA_IS_CLASS (_tmp213_)) { _tmp212_ = TRUE; } else { ValaTypeSymbol* _tmp214_; gboolean _tmp215_ = FALSE; _tmp214_ = cl; _tmp215_ = vala_dova_object_module_has_instance_struct (self, VALA_CLASS (_tmp214_)); _tmp212_ = _tmp215_; } _tmp216_ = _tmp212_; if (_tmp216_) { ValaCCodeFunctionCall* _tmp217_; ValaTypeSymbol* _tmp218_; gchar* _tmp219_ = NULL; gchar* _tmp220_; gchar* _tmp221_ = NULL; gchar* _tmp222_; ValaCCodeConstant* _tmp223_; ValaCCodeConstant* _tmp224_; _tmp217_ = alloc_call; _tmp218_ = cl; _tmp219_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp218_); _tmp220_ = _tmp219_; _tmp221_ = g_strdup_printf ("sizeof (%sPrivate)", _tmp220_); _tmp222_ = _tmp221_; _tmp223_ = vala_ccode_constant_new (_tmp222_); _tmp224_ = _tmp223_; vala_ccode_function_call_add_argument (_tmp217_, (ValaCCodeExpression*) _tmp224_); _vala_ccode_node_unref0 (_tmp224_); _g_free0 (_tmp222_); _g_free0 (_tmp220_); } else { ValaCCodeFunctionCall* _tmp225_; ValaCCodeConstant* _tmp226_; ValaCCodeConstant* _tmp227_; _tmp225_ = alloc_call; _tmp226_ = vala_ccode_constant_new ("0"); _tmp227_ = _tmp226_; vala_ccode_function_call_add_argument (_tmp225_, (ValaCCodeExpression*) _tmp227_); _vala_ccode_node_unref0 (_tmp227_); } _tmp230_ = cl; if (!VALA_IS_CLASS (_tmp230_)) { _tmp229_ = TRUE; } else { ValaTypeSymbol* _tmp231_; gboolean _tmp232_ = FALSE; _tmp231_ = cl; _tmp232_ = vala_dova_object_module_has_type_struct (self, VALA_CLASS (_tmp231_)); _tmp229_ = _tmp232_; } _tmp233_ = _tmp229_; if (_tmp233_) { ValaTypeSymbol* _tmp234_; _tmp234_ = cl; _tmp228_ = !VALA_IS_DELEGATE (_tmp234_); } else { _tmp228_ = FALSE; } _tmp235_ = _tmp228_; if (_tmp235_) { ValaCCodeFunctionCall* _tmp236_; ValaTypeSymbol* _tmp237_; gchar* _tmp238_ = NULL; gchar* _tmp239_; gchar* _tmp240_ = NULL; gchar* _tmp241_; ValaCCodeConstant* _tmp242_; ValaCCodeConstant* _tmp243_; _tmp236_ = alloc_call; _tmp237_ = cl; _tmp238_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp237_); _tmp239_ = _tmp238_; _tmp240_ = g_strdup_printf ("sizeof (%sTypePrivate)", _tmp239_); _tmp241_ = _tmp240_; _tmp242_ = vala_ccode_constant_new (_tmp241_); _tmp243_ = _tmp242_; vala_ccode_function_call_add_argument (_tmp236_, (ValaCCodeExpression*) _tmp243_); _vala_ccode_node_unref0 (_tmp243_); _g_free0 (_tmp241_); _g_free0 (_tmp239_); } else { ValaCCodeFunctionCall* _tmp244_; ValaCCodeConstant* _tmp245_; ValaCCodeConstant* _tmp246_; _tmp244_ = alloc_call; _tmp245_ = vala_ccode_constant_new ("0"); _tmp246_ = _tmp245_; vala_ccode_function_call_add_argument (_tmp244_, (ValaCCodeExpression*) _tmp246_); _vala_ccode_node_unref0 (_tmp246_); } _tmp247_ = alloc_call; _tmp248_ = cl; _tmp249_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp248_, NULL); _tmp250_ = _tmp249_; _tmp251_ = g_strdup_printf ("%s_type", _tmp250_); _tmp252_ = _tmp251_; _tmp253_ = vala_ccode_identifier_new (_tmp252_); _tmp254_ = _tmp253_; _tmp255_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp254_); _tmp256_ = _tmp255_; vala_ccode_function_call_add_argument (_tmp247_, (ValaCCodeExpression*) _tmp256_); _vala_ccode_node_unref0 (_tmp256_); _vala_ccode_node_unref0 (_tmp254_); _g_free0 (_tmp252_); _g_free0 (_tmp250_); _tmp257_ = alloc_call; _tmp258_ = cl; _tmp259_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp258_, NULL); _tmp260_ = _tmp259_; _tmp261_ = g_strdup_printf ("_%s_object_offset", _tmp260_); _tmp262_ = _tmp261_; _tmp263_ = vala_ccode_identifier_new (_tmp262_); _tmp264_ = _tmp263_; _tmp265_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp264_); _tmp266_ = _tmp265_; vala_ccode_function_call_add_argument (_tmp257_, (ValaCCodeExpression*) _tmp266_); _vala_ccode_node_unref0 (_tmp266_); _vala_ccode_node_unref0 (_tmp264_); _g_free0 (_tmp262_); _g_free0 (_tmp260_); _tmp267_ = alloc_call; _tmp268_ = cl; _tmp269_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp268_, NULL); _tmp270_ = _tmp269_; _tmp271_ = g_strdup_printf ("_%s_type_offset", _tmp270_); _tmp272_ = _tmp271_; _tmp273_ = vala_ccode_identifier_new (_tmp272_); _tmp274_ = _tmp273_; _tmp275_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp274_); _tmp276_ = _tmp275_; vala_ccode_function_call_add_argument (_tmp267_, (ValaCCodeExpression*) _tmp276_); _vala_ccode_node_unref0 (_tmp276_); _vala_ccode_node_unref0 (_tmp274_); _g_free0 (_tmp272_); _g_free0 (_tmp270_); _tmp277_ = type_init_block; _tmp278_ = alloc_call; _tmp279_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp278_); _tmp280_ = _tmp279_; vala_ccode_block_add_statement (_tmp277_, (ValaCCodeNode*) _tmp280_); _vala_ccode_node_unref0 (_tmp280_); _vala_ccode_node_unref0 (alloc_call); _vala_ccode_node_unref0 (base_type); } _tmp281_ = cl; _tmp282_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp281_, NULL); _tmp283_ = _tmp282_; _tmp284_ = g_strdup_printf ("%s_type_init", _tmp283_); _tmp285_ = _tmp284_; _tmp286_ = vala_ccode_identifier_new (_tmp285_); _tmp287_ = _tmp286_; _tmp288_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp287_); _tmp289_ = _tmp288_; _vala_ccode_node_unref0 (_tmp287_); _g_free0 (_tmp285_); _g_free0 (_tmp283_); type_init_call = _tmp289_; _tmp290_ = type_init_call; _tmp291_ = cl; _tmp292_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp291_, NULL); _tmp293_ = _tmp292_; _tmp294_ = g_strdup_printf ("%s_type", _tmp293_); _tmp295_ = _tmp294_; _tmp296_ = vala_ccode_identifier_new (_tmp295_); _tmp297_ = _tmp296_; vala_ccode_function_call_add_argument (_tmp290_, (ValaCCodeExpression*) _tmp297_); _vala_ccode_node_unref0 (_tmp297_); _g_free0 (_tmp295_); _g_free0 (_tmp293_); _tmp298_ = object_type_symbol; if (_tmp298_ != NULL) { { gint i; i = 0; { gboolean _tmp299_; _tmp299_ = TRUE; while (TRUE) { gboolean _tmp300_; gint _tmp302_; ValaObjectTypeSymbol* _tmp303_; ValaList* _tmp304_ = NULL; ValaList* _tmp305_; gint _tmp306_; gint _tmp307_; gboolean _tmp308_; ValaCCodeFunctionCall* _tmp309_; ValaCCodeConstant* _tmp310_; ValaCCodeConstant* _tmp311_; _tmp300_ = _tmp299_; if (!_tmp300_) { gint _tmp301_; _tmp301_ = i; i = _tmp301_ + 1; } _tmp299_ = FALSE; _tmp302_ = i; _tmp303_ = object_type_symbol; _tmp304_ = vala_object_type_symbol_get_type_parameters (_tmp303_); _tmp305_ = _tmp304_; _tmp306_ = vala_collection_get_size ((ValaCollection*) _tmp305_); _tmp307_ = _tmp306_; _tmp308_ = !(_tmp302_ < _tmp307_); _vala_iterable_unref0 (_tmp305_); if (_tmp308_) { break; } _tmp309_ = type_init_call; _tmp310_ = vala_ccode_constant_new ("NULL"); _tmp311_ = _tmp310_; vala_ccode_function_call_add_argument (_tmp309_, (ValaCCodeExpression*) _tmp311_); _vala_ccode_node_unref0 (_tmp311_); } } } } _tmp312_ = type_init_block; _tmp313_ = type_init_call; _tmp314_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp313_); _tmp315_ = _tmp314_; vala_ccode_block_add_statement (_tmp312_, (ValaCCodeNode*) _tmp315_); _vala_ccode_node_unref0 (_tmp315_); _tmp316_ = type_fun; _tmp317_ = vala_ccode_function_get_block (_tmp316_); _tmp318_ = _tmp317_; _tmp319_ = cl; _tmp320_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp319_, NULL); _tmp321_ = _tmp320_; _tmp322_ = g_strdup_printf ("%s_type", _tmp321_); _tmp323_ = _tmp322_; _tmp324_ = vala_ccode_identifier_new (_tmp323_); _tmp325_ = _tmp324_; _tmp326_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp325_); _tmp327_ = _tmp326_; _tmp328_ = type_init_block; _tmp329_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp327_, (ValaCCodeStatement*) _tmp328_, NULL); _tmp330_ = _tmp329_; vala_ccode_block_add_statement (_tmp318_, (ValaCCodeNode*) _tmp330_); _vala_ccode_node_unref0 (_tmp330_); _vala_ccode_node_unref0 (_tmp327_); _vala_ccode_node_unref0 (_tmp325_); _g_free0 (_tmp323_); _g_free0 (_tmp321_); _tmp332_ = object_type_symbol; if (_tmp332_ != NULL) { ValaObjectTypeSymbol* _tmp333_; ValaList* _tmp334_ = NULL; ValaList* _tmp335_; gint _tmp336_; gint _tmp337_; _tmp333_ = object_type_symbol; _tmp334_ = vala_object_type_symbol_get_type_parameters (_tmp333_); _tmp335_ = _tmp334_; _tmp336_ = vala_collection_get_size ((ValaCollection*) _tmp335_); _tmp337_ = _tmp336_; _tmp331_ = _tmp337_ > 0; _vala_iterable_unref0 (_tmp335_); } else { _tmp331_ = FALSE; } _tmp338_ = _tmp331_; if (_tmp338_) { ValaCCodeBlock* _tmp339_; ValaCCodeBlock* specialized_type_get_block; ValaClass* _tmp340_; ValaScope* _tmp341_; ValaScope* _tmp342_; ValaSymbol* _tmp343_ = NULL; ValaProperty* _tmp344_; ValaPropertyAccessor* _tmp345_; ValaPropertyAccessor* _tmp346_; ValaCCodeFile* _tmp347_; ValaClass* _tmp348_; ValaScope* _tmp349_; ValaScope* _tmp350_; ValaSymbol* _tmp351_ = NULL; ValaMethod* _tmp352_; ValaCCodeFile* _tmp353_; ValaCCodeIdentifier* _tmp354_; ValaCCodeIdentifier* _tmp355_; ValaCCodeFunctionCall* _tmp356_; ValaCCodeFunctionCall* _tmp357_; ValaCCodeFunctionCall* first; ValaCCodeFunctionCall* _tmp358_; ValaTypeSymbol* _tmp359_; gchar* _tmp360_ = NULL; gchar* _tmp361_; gchar* _tmp362_ = NULL; gchar* _tmp363_; ValaCCodeIdentifier* _tmp364_; ValaCCodeIdentifier* _tmp365_; ValaCCodeDeclaration* _tmp366_; ValaCCodeDeclaration* _tmp367_; ValaCCodeFunctionCall* _tmp368_; ValaCCodeVariableDeclarator* _tmp369_; ValaCCodeVariableDeclarator* _tmp370_; ValaCCodeBlock* _tmp371_; ValaCCodeDeclaration* _tmp372_; ValaCCodeIdentifier* _tmp373_; ValaCCodeIdentifier* _tmp374_; ValaCCodeFunctionCall* _tmp375_; ValaCCodeFunctionCall* _tmp376_; ValaCCodeFunctionCall* next; ValaCCodeFunctionCall* _tmp377_; ValaCCodeIdentifier* _tmp378_; ValaCCodeIdentifier* _tmp379_; ValaCCodeBlock* _tmp380_; ValaCCodeBlock* next_check; ValaCCodeBlock* _tmp381_; ValaObjectTypeSymbol* _tmp382_; ValaCCodeIdentifier* _tmp383_; ValaCCodeIdentifier* _tmp384_; ValaCCodeExpression* _tmp385_ = NULL; ValaCCodeExpression* _tmp386_; ValaObjectTypeSymbol* _tmp387_; ValaList* _tmp388_ = NULL; ValaList* _tmp389_; gpointer _tmp390_ = NULL; ValaTypeParameter* _tmp391_; const gchar* _tmp392_; const gchar* _tmp393_; gchar* _tmp394_ = NULL; gchar* _tmp395_; gchar* _tmp396_ = NULL; gchar* _tmp397_; ValaCCodeMemberAccess* _tmp398_; ValaCCodeMemberAccess* _tmp399_; ValaObjectTypeSymbol* _tmp400_; ValaList* _tmp401_ = NULL; ValaList* _tmp402_; gpointer _tmp403_ = NULL; ValaTypeParameter* _tmp404_; const gchar* _tmp405_; const gchar* _tmp406_; gchar* _tmp407_ = NULL; gchar* _tmp408_; gchar* _tmp409_ = NULL; gchar* _tmp410_; ValaCCodeIdentifier* _tmp411_; ValaCCodeIdentifier* _tmp412_; ValaCCodeBinaryExpression* _tmp413_; ValaCCodeBinaryExpression* _tmp414_; ValaCCodeBreakStatement* _tmp415_; ValaCCodeBreakStatement* _tmp416_; ValaCCodeIfStatement* _tmp417_; ValaCCodeIfStatement* _tmp418_; ValaCCodeBlock* _tmp419_; ValaCCodeIdentifier* _tmp420_; ValaCCodeIdentifier* _tmp421_; ValaCCodeFunctionCall* _tmp422_; ValaCCodeAssignment* _tmp423_; ValaCCodeAssignment* _tmp424_; ValaCCodeExpressionStatement* _tmp425_; ValaCCodeExpressionStatement* _tmp426_; ValaCCodeBlock* _tmp427_; ValaCCodeIdentifier* _tmp428_; ValaCCodeIdentifier* _tmp429_; ValaCCodeBlock* _tmp430_; ValaCCodeWhileStatement* _tmp431_; ValaCCodeWhileStatement* _tmp432_; ValaCCodeBlock* _tmp433_; ValaCCodeBlock* specialized_type_init_block; ValaClass* _tmp434_; ValaScope* _tmp435_; ValaScope* _tmp436_; ValaSymbol* _tmp437_ = NULL; ValaMethod* _tmp438_; ValaCCodeFile* _tmp439_; ValaClass* _tmp440_; gchar* _tmp441_ = NULL; gchar* _tmp442_; gchar* _tmp443_ = NULL; gchar* _tmp444_; ValaCCodeIdentifier* _tmp445_; ValaCCodeIdentifier* _tmp446_; ValaCCodeFunctionCall* _tmp447_; ValaCCodeFunctionCall* _tmp448_; ValaCCodeFunctionCall* base_type; ValaDataType* _tmp449_; ValaCCodeIdentifier* _tmp465_; ValaCCodeIdentifier* _tmp466_; ValaCCodeFunctionCall* _tmp467_; ValaCCodeFunctionCall* _tmp468_; ValaCCodeFunctionCall* alloc_call; ValaCCodeFunctionCall* _tmp469_; ValaCCodeFunctionCall* _tmp470_; gboolean _tmp471_ = FALSE; ValaTypeSymbol* _tmp472_; gboolean _tmp475_; gboolean _tmp487_ = FALSE; ValaTypeSymbol* _tmp488_; gboolean _tmp491_; ValaCCodeFunctionCall* _tmp503_; ValaCCodeIdentifier* _tmp504_; ValaCCodeIdentifier* _tmp505_; ValaCCodeUnaryExpression* _tmp506_; ValaCCodeUnaryExpression* _tmp507_; ValaCCodeFunctionCall* _tmp508_; ValaTypeSymbol* _tmp509_; gchar* _tmp510_ = NULL; gchar* _tmp511_; gchar* _tmp512_ = NULL; gchar* _tmp513_; ValaCCodeIdentifier* _tmp514_; ValaCCodeIdentifier* _tmp515_; ValaCCodeUnaryExpression* _tmp516_; ValaCCodeUnaryExpression* _tmp517_; ValaCCodeFunctionCall* _tmp518_; ValaTypeSymbol* _tmp519_; gchar* _tmp520_ = NULL; gchar* _tmp521_; gchar* _tmp522_ = NULL; gchar* _tmp523_; ValaCCodeIdentifier* _tmp524_; ValaCCodeIdentifier* _tmp525_; ValaCCodeUnaryExpression* _tmp526_; ValaCCodeUnaryExpression* _tmp527_; ValaCCodeBlock* _tmp528_; ValaCCodeFunctionCall* _tmp529_; ValaCCodeExpressionStatement* _tmp530_; ValaCCodeExpressionStatement* _tmp531_; ValaTypeSymbol* _tmp532_; gchar* _tmp533_ = NULL; gchar* _tmp534_; gchar* _tmp535_ = NULL; gchar* _tmp536_; ValaCCodeIdentifier* _tmp537_; ValaCCodeIdentifier* _tmp538_; ValaCCodeFunctionCall* _tmp539_; ValaCCodeFunctionCall* _tmp540_; ValaCCodeIdentifier* _tmp541_; ValaCCodeIdentifier* _tmp542_; ValaCCodeBlock* _tmp564_; ValaCCodeFunctionCall* _tmp565_; ValaCCodeExpressionStatement* _tmp566_; ValaCCodeExpressionStatement* _tmp567_; ValaCCodeIdentifier* _tmp568_; ValaCCodeIdentifier* _tmp569_; ValaCCodeFunctionCall* _tmp570_; ValaCCodeFunctionCall* _tmp571_; ValaCCodeFunctionCall* insert_call; ValaCCodeFunctionCall* _tmp572_; ValaTypeSymbol* _tmp573_; gchar* _tmp574_ = NULL; gchar* _tmp575_; gchar* _tmp576_ = NULL; gchar* _tmp577_; ValaCCodeIdentifier* _tmp578_; ValaCCodeIdentifier* _tmp579_; ValaCCodeFunctionCall* _tmp580_; ValaCCodeIdentifier* _tmp581_; ValaCCodeIdentifier* _tmp582_; ValaCCodeBlock* _tmp583_; ValaCCodeFunctionCall* _tmp584_; ValaCCodeExpressionStatement* _tmp585_; ValaCCodeExpressionStatement* _tmp586_; ValaCCodeBlock* _tmp587_; ValaCCodeIdentifier* _tmp588_; ValaCCodeIdentifier* _tmp589_; ValaCCodeUnaryExpression* _tmp590_; ValaCCodeUnaryExpression* _tmp591_; ValaCCodeBlock* _tmp592_; ValaCCodeIfStatement* _tmp593_; ValaCCodeIfStatement* _tmp594_; ValaCCodeBlock* _tmp595_; ValaCCodeIdentifier* _tmp596_; ValaCCodeIdentifier* _tmp597_; ValaCCodeReturnStatement* _tmp598_; ValaCCodeReturnStatement* _tmp599_; ValaCCodeFunction* _tmp600_; ValaCCodeBlock* _tmp601_; ValaCCodeBlock* _tmp602_; ValaObjectTypeSymbol* _tmp603_; ValaList* _tmp604_ = NULL; ValaList* _tmp605_; gpointer _tmp606_ = NULL; ValaTypeParameter* _tmp607_; const gchar* _tmp608_; const gchar* _tmp609_; gchar* _tmp610_ = NULL; gchar* _tmp611_; gchar* _tmp612_ = NULL; gchar* _tmp613_; ValaCCodeIdentifier* _tmp614_; ValaCCodeIdentifier* _tmp615_; ValaCCodeBlock* _tmp616_; ValaCCodeIfStatement* _tmp617_; ValaCCodeIfStatement* _tmp618_; _tmp339_ = vala_ccode_block_new (); specialized_type_get_block = _tmp339_; _tmp340_ = ((ValaDovaBaseModule*) self)->type_class; _tmp341_ = vala_symbol_get_scope ((ValaSymbol*) _tmp340_); _tmp342_ = _tmp341_; _tmp343_ = vala_scope_lookup (_tmp342_, "next_type"); _tmp344_ = VALA_PROPERTY (_tmp343_); _tmp345_ = vala_property_get_get_accessor (_tmp344_); _tmp346_ = _tmp345_; _tmp347_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_property_accessor_declaration ((ValaDovaBaseModule*) self, _tmp346_, _tmp347_); _vala_code_node_unref0 (_tmp344_); _tmp348_ = ((ValaDovaBaseModule*) self)->type_class; _tmp349_ = vala_symbol_get_scope ((ValaSymbol*) _tmp348_); _tmp350_ = _tmp349_; _tmp351_ = vala_scope_lookup (_tmp350_, "insert_type"); _tmp352_ = VALA_METHOD (_tmp351_); _tmp353_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp352_, _tmp353_); _vala_code_node_unref0 (_tmp352_); _tmp354_ = vala_ccode_identifier_new ("dova_type_get_next_type"); _tmp355_ = _tmp354_; _tmp356_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp355_); _tmp357_ = _tmp356_; _vala_ccode_node_unref0 (_tmp355_); first = _tmp357_; _tmp358_ = first; _tmp359_ = cl; _tmp360_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp359_, NULL); _tmp361_ = _tmp360_; _tmp362_ = g_strdup_printf ("%s_type", _tmp361_); _tmp363_ = _tmp362_; _tmp364_ = vala_ccode_identifier_new (_tmp363_); _tmp365_ = _tmp364_; vala_ccode_function_call_add_argument (_tmp358_, (ValaCCodeExpression*) _tmp365_); _vala_ccode_node_unref0 (_tmp365_); _g_free0 (_tmp363_); _g_free0 (_tmp361_); _tmp366_ = vala_ccode_declaration_new ("DovaType *"); _vala_ccode_node_unref0 (_cdecl_); _cdecl_ = _tmp366_; _tmp367_ = _cdecl_; _tmp368_ = first; _tmp369_ = vala_ccode_variable_declarator_new ("result", (ValaCCodeExpression*) _tmp368_, NULL); _tmp370_ = _tmp369_; vala_ccode_declaration_add_declarator (_tmp367_, (ValaCCodeDeclarator*) _tmp370_); _vala_ccode_node_unref0 (_tmp370_); _tmp371_ = specialized_type_get_block; _tmp372_ = _cdecl_; vala_ccode_block_add_statement (_tmp371_, (ValaCCodeNode*) _tmp372_); _tmp373_ = vala_ccode_identifier_new ("dova_type_get_next_type"); _tmp374_ = _tmp373_; _tmp375_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp374_); _tmp376_ = _tmp375_; _vala_ccode_node_unref0 (_tmp374_); next = _tmp376_; _tmp377_ = next; _tmp378_ = vala_ccode_identifier_new ("result"); _tmp379_ = _tmp378_; vala_ccode_function_call_add_argument (_tmp377_, (ValaCCodeExpression*) _tmp379_); _vala_ccode_node_unref0 (_tmp379_); _tmp380_ = vala_ccode_block_new (); next_check = _tmp380_; _tmp381_ = next_check; _tmp382_ = object_type_symbol; _tmp383_ = vala_ccode_identifier_new ("result"); _tmp384_ = _tmp383_; _tmp385_ = vala_dova_base_module_get_type_private_from_type ((ValaDovaBaseModule*) self, _tmp382_, (ValaCCodeExpression*) _tmp384_); _tmp386_ = _tmp385_; _tmp387_ = object_type_symbol; _tmp388_ = vala_object_type_symbol_get_type_parameters (_tmp387_); _tmp389_ = _tmp388_; _tmp390_ = vala_list_get (_tmp389_, 0); _tmp391_ = (ValaTypeParameter*) _tmp390_; _tmp392_ = vala_symbol_get_name ((ValaSymbol*) _tmp391_); _tmp393_ = _tmp392_; _tmp394_ = g_utf8_strdown (_tmp393_, (gssize) (-1)); _tmp395_ = _tmp394_; _tmp396_ = g_strdup_printf ("%s_type", _tmp395_); _tmp397_ = _tmp396_; _tmp398_ = vala_ccode_member_access_new_pointer (_tmp386_, _tmp397_); _tmp399_ = _tmp398_; _tmp400_ = object_type_symbol; _tmp401_ = vala_object_type_symbol_get_type_parameters (_tmp400_); _tmp402_ = _tmp401_; _tmp403_ = vala_list_get (_tmp402_, 0); _tmp404_ = (ValaTypeParameter*) _tmp403_; _tmp405_ = vala_symbol_get_name ((ValaSymbol*) _tmp404_); _tmp406_ = _tmp405_; _tmp407_ = g_utf8_strdown (_tmp406_, (gssize) (-1)); _tmp408_ = _tmp407_; _tmp409_ = g_strdup_printf ("%s_type", _tmp408_); _tmp410_ = _tmp409_; _tmp411_ = vala_ccode_identifier_new (_tmp410_); _tmp412_ = _tmp411_; _tmp413_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp399_, (ValaCCodeExpression*) _tmp412_); _tmp414_ = _tmp413_; _tmp415_ = vala_ccode_break_statement_new (); _tmp416_ = _tmp415_; _tmp417_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp414_, (ValaCCodeStatement*) _tmp416_, NULL); _tmp418_ = _tmp417_; vala_ccode_block_add_statement (_tmp381_, (ValaCCodeNode*) _tmp418_); _vala_ccode_node_unref0 (_tmp418_); _vala_ccode_node_unref0 (_tmp416_); _vala_ccode_node_unref0 (_tmp414_); _vala_ccode_node_unref0 (_tmp412_); _g_free0 (_tmp410_); _g_free0 (_tmp408_); _vala_code_node_unref0 (_tmp404_); _vala_iterable_unref0 (_tmp402_); _vala_ccode_node_unref0 (_tmp399_); _g_free0 (_tmp397_); _g_free0 (_tmp395_); _vala_code_node_unref0 (_tmp391_); _vala_iterable_unref0 (_tmp389_); _vala_ccode_node_unref0 (_tmp386_); _vala_ccode_node_unref0 (_tmp384_); _tmp419_ = next_check; _tmp420_ = vala_ccode_identifier_new ("result"); _tmp421_ = _tmp420_; _tmp422_ = next; _tmp423_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp421_, (ValaCCodeExpression*) _tmp422_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp424_ = _tmp423_; _tmp425_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp424_); _tmp426_ = _tmp425_; vala_ccode_block_add_statement (_tmp419_, (ValaCCodeNode*) _tmp426_); _vala_ccode_node_unref0 (_tmp426_); _vala_ccode_node_unref0 (_tmp424_); _vala_ccode_node_unref0 (_tmp421_); _tmp427_ = specialized_type_get_block; _tmp428_ = vala_ccode_identifier_new ("result"); _tmp429_ = _tmp428_; _tmp430_ = next_check; _tmp431_ = vala_ccode_while_statement_new ((ValaCCodeExpression*) _tmp429_, (ValaCCodeStatement*) _tmp430_); _tmp432_ = _tmp431_; vala_ccode_block_add_statement (_tmp427_, (ValaCCodeNode*) _tmp432_); _vala_ccode_node_unref0 (_tmp432_); _vala_ccode_node_unref0 (_tmp429_); _tmp433_ = vala_ccode_block_new (); specialized_type_init_block = _tmp433_; _tmp434_ = ((ValaDovaBaseModule*) self)->type_class; _tmp435_ = vala_symbol_get_scope ((ValaSymbol*) _tmp434_); _tmp436_ = _tmp435_; _tmp437_ = vala_scope_lookup (_tmp436_, "alloc"); _tmp438_ = VALA_METHOD (_tmp437_); _tmp439_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp438_, _tmp439_); _vala_code_node_unref0 (_tmp438_); _tmp440_ = base_class; _tmp441_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp440_, NULL); _tmp442_ = _tmp441_; _tmp443_ = g_strdup_printf ("%s_type_get", _tmp442_); _tmp444_ = _tmp443_; _tmp445_ = vala_ccode_identifier_new (_tmp444_); _tmp446_ = _tmp445_; _tmp447_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp446_); _tmp448_ = _tmp447_; _vala_ccode_node_unref0 (_tmp446_); _g_free0 (_tmp444_); _g_free0 (_tmp442_); base_type = _tmp448_; _tmp449_ = base_class_type; if (_tmp449_ != NULL) { { ValaDataType* _tmp450_; ValaList* _tmp451_ = NULL; ValaList* _type_arg_list; ValaList* _tmp452_; gint _tmp453_; gint _tmp454_; gint _type_arg_size; gint _type_arg_index; _tmp450_ = base_class_type; _tmp451_ = vala_data_type_get_type_arguments (_tmp450_); _type_arg_list = _tmp451_; _tmp452_ = _type_arg_list; _tmp453_ = vala_collection_get_size ((ValaCollection*) _tmp452_); _tmp454_ = _tmp453_; _type_arg_size = _tmp454_; _type_arg_index = -1; while (TRUE) { gint _tmp455_; gint _tmp456_; gint _tmp457_; ValaList* _tmp458_; gint _tmp459_; gpointer _tmp460_ = NULL; ValaDataType* type_arg; ValaCCodeFunctionCall* _tmp461_; ValaDataType* _tmp462_; ValaCCodeExpression* _tmp463_ = NULL; ValaCCodeExpression* _tmp464_; _tmp455_ = _type_arg_index; _type_arg_index = _tmp455_ + 1; _tmp456_ = _type_arg_index; _tmp457_ = _type_arg_size; if (!(_tmp456_ < _tmp457_)) { break; } _tmp458_ = _type_arg_list; _tmp459_ = _type_arg_index; _tmp460_ = vala_list_get (_tmp458_, _tmp459_); type_arg = (ValaDataType*) _tmp460_; _tmp461_ = base_type; _tmp462_ = type_arg; _tmp463_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp462_, TRUE); _tmp464_ = _tmp463_; vala_ccode_function_call_add_argument (_tmp461_, _tmp464_); _vala_ccode_node_unref0 (_tmp464_); _vala_code_node_unref0 (type_arg); } _vala_iterable_unref0 (_type_arg_list); } } _tmp465_ = vala_ccode_identifier_new ("dova_type_alloc"); _tmp466_ = _tmp465_; _tmp467_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp466_); _tmp468_ = _tmp467_; _vala_ccode_node_unref0 (_tmp466_); alloc_call = _tmp468_; _tmp469_ = alloc_call; _tmp470_ = base_type; vala_ccode_function_call_add_argument (_tmp469_, (ValaCCodeExpression*) _tmp470_); _tmp472_ = cl; if (!VALA_IS_CLASS (_tmp472_)) { _tmp471_ = TRUE; } else { ValaTypeSymbol* _tmp473_; gboolean _tmp474_ = FALSE; _tmp473_ = cl; _tmp474_ = vala_dova_object_module_has_instance_struct (self, VALA_CLASS (_tmp473_)); _tmp471_ = _tmp474_; } _tmp475_ = _tmp471_; if (_tmp475_) { ValaCCodeFunctionCall* _tmp476_; ValaTypeSymbol* _tmp477_; gchar* _tmp478_ = NULL; gchar* _tmp479_; gchar* _tmp480_ = NULL; gchar* _tmp481_; ValaCCodeConstant* _tmp482_; ValaCCodeConstant* _tmp483_; _tmp476_ = alloc_call; _tmp477_ = cl; _tmp478_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp477_); _tmp479_ = _tmp478_; _tmp480_ = g_strdup_printf ("sizeof (%sPrivate)", _tmp479_); _tmp481_ = _tmp480_; _tmp482_ = vala_ccode_constant_new (_tmp481_); _tmp483_ = _tmp482_; vala_ccode_function_call_add_argument (_tmp476_, (ValaCCodeExpression*) _tmp483_); _vala_ccode_node_unref0 (_tmp483_); _g_free0 (_tmp481_); _g_free0 (_tmp479_); } else { ValaCCodeFunctionCall* _tmp484_; ValaCCodeConstant* _tmp485_; ValaCCodeConstant* _tmp486_; _tmp484_ = alloc_call; _tmp485_ = vala_ccode_constant_new ("0"); _tmp486_ = _tmp485_; vala_ccode_function_call_add_argument (_tmp484_, (ValaCCodeExpression*) _tmp486_); _vala_ccode_node_unref0 (_tmp486_); } _tmp488_ = cl; if (!VALA_IS_CLASS (_tmp488_)) { _tmp487_ = TRUE; } else { ValaTypeSymbol* _tmp489_; gboolean _tmp490_ = FALSE; _tmp489_ = cl; _tmp490_ = vala_dova_object_module_has_type_struct (self, VALA_CLASS (_tmp489_)); _tmp487_ = _tmp490_; } _tmp491_ = _tmp487_; if (_tmp491_) { ValaCCodeFunctionCall* _tmp492_; ValaTypeSymbol* _tmp493_; gchar* _tmp494_ = NULL; gchar* _tmp495_; gchar* _tmp496_ = NULL; gchar* _tmp497_; ValaCCodeConstant* _tmp498_; ValaCCodeConstant* _tmp499_; _tmp492_ = alloc_call; _tmp493_ = cl; _tmp494_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp493_); _tmp495_ = _tmp494_; _tmp496_ = g_strdup_printf ("sizeof (%sTypePrivate)", _tmp495_); _tmp497_ = _tmp496_; _tmp498_ = vala_ccode_constant_new (_tmp497_); _tmp499_ = _tmp498_; vala_ccode_function_call_add_argument (_tmp492_, (ValaCCodeExpression*) _tmp499_); _vala_ccode_node_unref0 (_tmp499_); _g_free0 (_tmp497_); _g_free0 (_tmp495_); } else { ValaCCodeFunctionCall* _tmp500_; ValaCCodeConstant* _tmp501_; ValaCCodeConstant* _tmp502_; _tmp500_ = alloc_call; _tmp501_ = vala_ccode_constant_new ("0"); _tmp502_ = _tmp501_; vala_ccode_function_call_add_argument (_tmp500_, (ValaCCodeExpression*) _tmp502_); _vala_ccode_node_unref0 (_tmp502_); } _tmp503_ = alloc_call; _tmp504_ = vala_ccode_identifier_new ("result"); _tmp505_ = _tmp504_; _tmp506_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp505_); _tmp507_ = _tmp506_; vala_ccode_function_call_add_argument (_tmp503_, (ValaCCodeExpression*) _tmp507_); _vala_ccode_node_unref0 (_tmp507_); _vala_ccode_node_unref0 (_tmp505_); _tmp508_ = alloc_call; _tmp509_ = cl; _tmp510_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp509_, NULL); _tmp511_ = _tmp510_; _tmp512_ = g_strdup_printf ("_%s_object_offset", _tmp511_); _tmp513_ = _tmp512_; _tmp514_ = vala_ccode_identifier_new (_tmp513_); _tmp515_ = _tmp514_; _tmp516_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp515_); _tmp517_ = _tmp516_; vala_ccode_function_call_add_argument (_tmp508_, (ValaCCodeExpression*) _tmp517_); _vala_ccode_node_unref0 (_tmp517_); _vala_ccode_node_unref0 (_tmp515_); _g_free0 (_tmp513_); _g_free0 (_tmp511_); _tmp518_ = alloc_call; _tmp519_ = cl; _tmp520_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp519_, NULL); _tmp521_ = _tmp520_; _tmp522_ = g_strdup_printf ("_%s_type_offset", _tmp521_); _tmp523_ = _tmp522_; _tmp524_ = vala_ccode_identifier_new (_tmp523_); _tmp525_ = _tmp524_; _tmp526_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp525_); _tmp527_ = _tmp526_; vala_ccode_function_call_add_argument (_tmp518_, (ValaCCodeExpression*) _tmp527_); _vala_ccode_node_unref0 (_tmp527_); _vala_ccode_node_unref0 (_tmp525_); _g_free0 (_tmp523_); _g_free0 (_tmp521_); _tmp528_ = specialized_type_init_block; _tmp529_ = alloc_call; _tmp530_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp529_); _tmp531_ = _tmp530_; vala_ccode_block_add_statement (_tmp528_, (ValaCCodeNode*) _tmp531_); _vala_ccode_node_unref0 (_tmp531_); _tmp532_ = cl; _tmp533_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp532_, NULL); _tmp534_ = _tmp533_; _tmp535_ = g_strdup_printf ("%s_type_init", _tmp534_); _tmp536_ = _tmp535_; _tmp537_ = vala_ccode_identifier_new (_tmp536_); _tmp538_ = _tmp537_; _tmp539_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp538_); _vala_ccode_node_unref0 (type_init_call); type_init_call = _tmp539_; _vala_ccode_node_unref0 (_tmp538_); _g_free0 (_tmp536_); _g_free0 (_tmp534_); _tmp540_ = type_init_call; _tmp541_ = vala_ccode_identifier_new ("result"); _tmp542_ = _tmp541_; vala_ccode_function_call_add_argument (_tmp540_, (ValaCCodeExpression*) _tmp542_); _vala_ccode_node_unref0 (_tmp542_); { ValaObjectTypeSymbol* _tmp543_; ValaList* _tmp544_ = NULL; ValaList* _type_param_list; ValaList* _tmp545_; gint _tmp546_; gint _tmp547_; gint _type_param_size; gint _type_param_index; _tmp543_ = object_type_symbol; _tmp544_ = vala_object_type_symbol_get_type_parameters (_tmp543_); _type_param_list = _tmp544_; _tmp545_ = _type_param_list; _tmp546_ = vala_collection_get_size ((ValaCollection*) _tmp545_); _tmp547_ = _tmp546_; _type_param_size = _tmp547_; _type_param_index = -1; while (TRUE) { gint _tmp548_; gint _tmp549_; gint _tmp550_; ValaList* _tmp551_; gint _tmp552_; gpointer _tmp553_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunctionCall* _tmp554_; ValaTypeParameter* _tmp555_; const gchar* _tmp556_; const gchar* _tmp557_; gchar* _tmp558_ = NULL; gchar* _tmp559_; gchar* _tmp560_ = NULL; gchar* _tmp561_; ValaCCodeIdentifier* _tmp562_; ValaCCodeIdentifier* _tmp563_; _tmp548_ = _type_param_index; _type_param_index = _tmp548_ + 1; _tmp549_ = _type_param_index; _tmp550_ = _type_param_size; if (!(_tmp549_ < _tmp550_)) { break; } _tmp551_ = _type_param_list; _tmp552_ = _type_param_index; _tmp553_ = vala_list_get (_tmp551_, _tmp552_); type_param = (ValaTypeParameter*) _tmp553_; _tmp554_ = type_init_call; _tmp555_ = type_param; _tmp556_ = vala_symbol_get_name ((ValaSymbol*) _tmp555_); _tmp557_ = _tmp556_; _tmp558_ = g_utf8_strdown (_tmp557_, (gssize) (-1)); _tmp559_ = _tmp558_; _tmp560_ = g_strdup_printf ("%s_type", _tmp559_); _tmp561_ = _tmp560_; _tmp562_ = vala_ccode_identifier_new (_tmp561_); _tmp563_ = _tmp562_; vala_ccode_function_call_add_argument (_tmp554_, (ValaCCodeExpression*) _tmp563_); _vala_ccode_node_unref0 (_tmp563_); _g_free0 (_tmp561_); _g_free0 (_tmp559_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _tmp564_ = specialized_type_init_block; _tmp565_ = type_init_call; _tmp566_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp565_); _tmp567_ = _tmp566_; vala_ccode_block_add_statement (_tmp564_, (ValaCCodeNode*) _tmp567_); _vala_ccode_node_unref0 (_tmp567_); _tmp568_ = vala_ccode_identifier_new ("dova_type_insert_type"); _tmp569_ = _tmp568_; _tmp570_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp569_); _tmp571_ = _tmp570_; _vala_ccode_node_unref0 (_tmp569_); insert_call = _tmp571_; _tmp572_ = insert_call; _tmp573_ = cl; _tmp574_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp573_, NULL); _tmp575_ = _tmp574_; _tmp576_ = g_strdup_printf ("%s_type", _tmp575_); _tmp577_ = _tmp576_; _tmp578_ = vala_ccode_identifier_new (_tmp577_); _tmp579_ = _tmp578_; vala_ccode_function_call_add_argument (_tmp572_, (ValaCCodeExpression*) _tmp579_); _vala_ccode_node_unref0 (_tmp579_); _g_free0 (_tmp577_); _g_free0 (_tmp575_); _tmp580_ = insert_call; _tmp581_ = vala_ccode_identifier_new ("result"); _tmp582_ = _tmp581_; vala_ccode_function_call_add_argument (_tmp580_, (ValaCCodeExpression*) _tmp582_); _vala_ccode_node_unref0 (_tmp582_); _tmp583_ = specialized_type_init_block; _tmp584_ = insert_call; _tmp585_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp584_); _tmp586_ = _tmp585_; vala_ccode_block_add_statement (_tmp583_, (ValaCCodeNode*) _tmp586_); _vala_ccode_node_unref0 (_tmp586_); _tmp587_ = specialized_type_get_block; _tmp588_ = vala_ccode_identifier_new ("result"); _tmp589_ = _tmp588_; _tmp590_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp589_); _tmp591_ = _tmp590_; _tmp592_ = specialized_type_init_block; _tmp593_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp591_, (ValaCCodeStatement*) _tmp592_, NULL); _tmp594_ = _tmp593_; vala_ccode_block_add_statement (_tmp587_, (ValaCCodeNode*) _tmp594_); _vala_ccode_node_unref0 (_tmp594_); _vala_ccode_node_unref0 (_tmp591_); _vala_ccode_node_unref0 (_tmp589_); _tmp595_ = specialized_type_get_block; _tmp596_ = vala_ccode_identifier_new ("result"); _tmp597_ = _tmp596_; _tmp598_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp597_); _tmp599_ = _tmp598_; vala_ccode_block_add_statement (_tmp595_, (ValaCCodeNode*) _tmp599_); _vala_ccode_node_unref0 (_tmp599_); _vala_ccode_node_unref0 (_tmp597_); _tmp600_ = type_fun; _tmp601_ = vala_ccode_function_get_block (_tmp600_); _tmp602_ = _tmp601_; _tmp603_ = object_type_symbol; _tmp604_ = vala_object_type_symbol_get_type_parameters (_tmp603_); _tmp605_ = _tmp604_; _tmp606_ = vala_list_get (_tmp605_, 0); _tmp607_ = (ValaTypeParameter*) _tmp606_; _tmp608_ = vala_symbol_get_name ((ValaSymbol*) _tmp607_); _tmp609_ = _tmp608_; _tmp610_ = g_utf8_strdown (_tmp609_, (gssize) (-1)); _tmp611_ = _tmp610_; _tmp612_ = g_strdup_printf ("%s_type", _tmp611_); _tmp613_ = _tmp612_; _tmp614_ = vala_ccode_identifier_new (_tmp613_); _tmp615_ = _tmp614_; _tmp616_ = specialized_type_get_block; _tmp617_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp615_, (ValaCCodeStatement*) _tmp616_, NULL); _tmp618_ = _tmp617_; vala_ccode_block_add_statement (_tmp602_, (ValaCCodeNode*) _tmp618_); _vala_ccode_node_unref0 (_tmp618_); _vala_ccode_node_unref0 (_tmp615_); _g_free0 (_tmp613_); _g_free0 (_tmp611_); _vala_code_node_unref0 (_tmp607_); _vala_iterable_unref0 (_tmp605_); _vala_ccode_node_unref0 (insert_call); _vala_ccode_node_unref0 (alloc_call); _vala_ccode_node_unref0 (base_type); _vala_ccode_node_unref0 (specialized_type_init_block); _vala_ccode_node_unref0 (next_check); _vala_ccode_node_unref0 (next); _vala_ccode_node_unref0 (first); _vala_ccode_node_unref0 (specialized_type_get_block); } _tmp619_ = type_fun; _tmp620_ = vala_ccode_function_get_block (_tmp619_); _tmp621_ = _tmp620_; _tmp622_ = cl; _tmp623_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp622_, NULL); _tmp624_ = _tmp623_; _tmp625_ = g_strdup_printf ("%s_type", _tmp624_); _tmp626_ = _tmp625_; _tmp627_ = vala_ccode_identifier_new (_tmp626_); _tmp628_ = _tmp627_; _tmp629_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp628_); _tmp630_ = _tmp629_; vala_ccode_block_add_statement (_tmp621_, (ValaCCodeNode*) _tmp630_); _vala_ccode_node_unref0 (_tmp630_); _vala_ccode_node_unref0 (_tmp628_); _g_free0 (_tmp626_); _g_free0 (_tmp624_); _tmp631_ = ((ValaDovaBaseModule*) self)->cfile; _tmp632_ = type_fun; vala_ccode_file_add_function (_tmp631_, _tmp632_); _tmp633_ = cl; _tmp634_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp633_, NULL); _tmp635_ = _tmp634_; _tmp636_ = g_strdup_printf ("%s_type_init", _tmp635_); _tmp637_ = _tmp636_; _tmp638_ = vala_ccode_function_new (_tmp637_, "void"); _tmp639_ = _tmp638_; _g_free0 (_tmp637_); _g_free0 (_tmp635_); type_init_fun = _tmp639_; _tmp640_ = cl; _tmp641_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp640_); if (_tmp641_) { ValaCCodeFunction* _tmp642_; _tmp642_ = type_init_fun; vala_ccode_function_set_modifiers (_tmp642_, VALA_CCODE_MODIFIERS_STATIC); } _tmp643_ = type_init_fun; _tmp644_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp645_ = _tmp644_; vala_ccode_function_add_parameter (_tmp643_, _tmp645_); _vala_ccode_node_unref0 (_tmp645_); _tmp646_ = object_type_symbol; if (_tmp646_ != NULL) { { ValaObjectTypeSymbol* _tmp647_; ValaList* _tmp648_ = NULL; ValaList* _type_param_list; ValaList* _tmp649_; gint _tmp650_; gint _tmp651_; gint _type_param_size; gint _type_param_index; _tmp647_ = object_type_symbol; _tmp648_ = vala_object_type_symbol_get_type_parameters (_tmp647_); _type_param_list = _tmp648_; _tmp649_ = _type_param_list; _tmp650_ = vala_collection_get_size ((ValaCollection*) _tmp649_); _tmp651_ = _tmp650_; _type_param_size = _tmp651_; _type_param_index = -1; while (TRUE) { gint _tmp652_; gint _tmp653_; gint _tmp654_; ValaList* _tmp655_; gint _tmp656_; gpointer _tmp657_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp658_; ValaTypeParameter* _tmp659_; const gchar* _tmp660_; const gchar* _tmp661_; gchar* _tmp662_ = NULL; gchar* _tmp663_; gchar* _tmp664_ = NULL; gchar* _tmp665_; ValaCCodeParameter* _tmp666_; ValaCCodeParameter* _tmp667_; _tmp652_ = _type_param_index; _type_param_index = _tmp652_ + 1; _tmp653_ = _type_param_index; _tmp654_ = _type_param_size; if (!(_tmp653_ < _tmp654_)) { break; } _tmp655_ = _type_param_list; _tmp656_ = _type_param_index; _tmp657_ = vala_list_get (_tmp655_, _tmp656_); type_param = (ValaTypeParameter*) _tmp657_; _tmp658_ = type_init_fun; _tmp659_ = type_param; _tmp660_ = vala_symbol_get_name ((ValaSymbol*) _tmp659_); _tmp661_ = _tmp660_; _tmp662_ = g_utf8_strdown (_tmp661_, (gssize) (-1)); _tmp663_ = _tmp662_; _tmp664_ = g_strdup_printf ("%s_type", _tmp663_); _tmp665_ = _tmp664_; _tmp666_ = vala_ccode_parameter_new (_tmp665_, "DovaType *"); _tmp667_ = _tmp666_; vala_ccode_function_add_parameter (_tmp658_, _tmp667_); _vala_ccode_node_unref0 (_tmp667_); _g_free0 (_tmp665_); _g_free0 (_tmp663_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } } _tmp668_ = type_init_fun; _tmp669_ = vala_ccode_block_new (); _tmp670_ = _tmp669_; vala_ccode_function_set_block (_tmp668_, _tmp670_); _vala_ccode_node_unref0 (_tmp670_); _tmp674_ = base_class; if (_tmp674_ == NULL) { _tmp673_ = TRUE; } else { ValaTypeSymbol* _tmp675_; ValaClass* _tmp676_; _tmp675_ = cl; _tmp676_ = ((ValaDovaBaseModule*) self)->object_class; _tmp673_ = _tmp675_ == VALA_TYPESYMBOL (_tmp676_); } _tmp677_ = _tmp673_; if (_tmp677_) { _tmp672_ = TRUE; } else { ValaTypeSymbol* _tmp678_; ValaClass* _tmp679_; _tmp678_ = cl; _tmp679_ = ((ValaDovaBaseModule*) self)->value_class; _tmp672_ = _tmp678_ == VALA_TYPESYMBOL (_tmp679_); } _tmp680_ = _tmp672_; if (_tmp680_) { _tmp671_ = TRUE; } else { ValaTypeSymbol* _tmp681_; ValaClass* _tmp682_; _tmp681_ = cl; _tmp682_ = ((ValaDovaBaseModule*) self)->string_class; _tmp671_ = _tmp681_ == VALA_TYPESYMBOL (_tmp682_); } _tmp683_ = _tmp671_; if (_tmp683_) { ValaCCodeIdentifier* _tmp684_; ValaCCodeIdentifier* _tmp685_; ValaCCodeFunctionCall* _tmp686_; ValaCCodeFunctionCall* _tmp687_; ValaCCodeFunctionCall* sizeof_call; ValaCCodeFunctionCall* _tmp688_; ValaCCodeIdentifier* _tmp689_; ValaCCodeIdentifier* _tmp690_; ValaCCodeIdentifier* _tmp691_; ValaCCodeIdentifier* _tmp692_; ValaCCodeFunctionCall* _tmp693_; ValaCCodeFunctionCall* _tmp694_; ValaCCodeFunctionCall* set_size; ValaCCodeFunctionCall* _tmp695_; ValaCCodeIdentifier* _tmp696_; ValaCCodeIdentifier* _tmp697_; ValaCCodeFunctionCall* _tmp698_; ValaCCodeFunctionCall* _tmp699_; ValaCCodeFunction* _tmp700_; ValaCCodeBlock* _tmp701_; ValaCCodeBlock* _tmp702_; ValaCCodeFunctionCall* _tmp703_; ValaCCodeExpressionStatement* _tmp704_; ValaCCodeExpressionStatement* _tmp705_; ValaCCodeFile* _tmp706_; ValaCCodeIdentifier* _tmp707_; ValaCCodeIdentifier* _tmp708_; ValaCCodeFunctionCall* _tmp709_; ValaCCodeFunctionCall* _tmp710_; ValaCCodeFunctionCall* value_copy_call; ValaCCodeFunctionCall* _tmp711_; ValaCCodeIdentifier* _tmp712_; ValaCCodeIdentifier* _tmp713_; ValaCCodeFunctionCall* _tmp714_; ValaTypeSymbol* _tmp715_; gchar* _tmp716_ = NULL; gchar* _tmp717_; gchar* _tmp718_ = NULL; gchar* _tmp719_; ValaCCodeIdentifier* _tmp720_; ValaCCodeIdentifier* _tmp721_; ValaCCodeCastExpression* _tmp722_; ValaCCodeCastExpression* _tmp723_; ValaCCodeFunction* _tmp724_; ValaCCodeBlock* _tmp725_; ValaCCodeBlock* _tmp726_; ValaCCodeFunctionCall* _tmp727_; ValaCCodeExpressionStatement* _tmp728_; ValaCCodeExpressionStatement* _tmp729_; ValaTypeSymbol* _tmp730_; gchar* _tmp731_ = NULL; gchar* _tmp732_; gchar* _tmp733_ = NULL; gchar* _tmp734_; ValaCCodeFunction* _tmp735_; ValaCCodeFunction* _tmp736_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp737_; ValaCCodeFunction* _tmp738_; ValaCCodeParameter* _tmp739_; ValaCCodeParameter* _tmp740_; ValaCCodeFunction* _tmp741_; ValaCCodeParameter* _tmp742_; ValaCCodeParameter* _tmp743_; ValaCCodeFunction* _tmp744_; ValaCCodeParameter* _tmp745_; ValaCCodeParameter* _tmp746_; ValaCCodeFunction* _tmp747_; ValaCCodeParameter* _tmp748_; ValaCCodeParameter* _tmp749_; ValaCCodeFunction* _tmp750_; ValaCCodeBlock* _tmp751_; ValaCCodeBlock* _tmp752_; ValaCCodeFragment* _tmp753_; ValaCCodeFragment* cfrag; ValaCCodeFunction* _tmp754_; ValaCCodeBlock* _tmp755_; ValaCCodeBlock* _tmp756_; ValaCCodeFragment* _tmp757_; ValaCCodeIdentifier* _tmp758_; ValaCCodeIdentifier* _tmp759_; ValaCCodeIdentifier* _tmp760_; ValaCCodeIdentifier* _tmp761_; ValaCCodeBinaryExpression* _tmp762_; ValaCCodeBinaryExpression* _tmp763_; ValaCCodeBinaryExpression* dest; ValaCCodeIdentifier* _tmp764_; ValaCCodeIdentifier* _tmp765_; ValaCCodeIdentifier* _tmp766_; ValaCCodeIdentifier* _tmp767_; ValaCCodeBinaryExpression* _tmp768_; ValaCCodeBinaryExpression* _tmp769_; ValaCCodeBinaryExpression* src; ValaTypeSymbol* _tmp770_; gchar* _tmp771_ = NULL; gchar* _tmp772_; gchar* _tmp773_ = NULL; gchar* _tmp774_; ValaCCodeIdentifier* _tmp775_; ValaCCodeIdentifier* _tmp776_; ValaCCodeFunctionCall* _tmp777_; ValaCCodeFunctionCall* _tmp778_; ValaCCodeFunctionCall* unref_call; ValaCCodeFunctionCall* _tmp779_; ValaCCodeBinaryExpression* _tmp780_; ValaCCodeUnaryExpression* _tmp781_; ValaCCodeUnaryExpression* _tmp782_; ValaCCodeBlock* _tmp783_; ValaCCodeBlock* unref_block; ValaCCodeBlock* _tmp784_; ValaCCodeFunctionCall* _tmp785_; ValaCCodeExpressionStatement* _tmp786_; ValaCCodeExpressionStatement* _tmp787_; ValaCCodeBlock* _tmp788_; ValaCCodeBinaryExpression* _tmp789_; ValaCCodeUnaryExpression* _tmp790_; ValaCCodeUnaryExpression* _tmp791_; ValaCCodeConstant* _tmp792_; ValaCCodeConstant* _tmp793_; ValaCCodeAssignment* _tmp794_; ValaCCodeAssignment* _tmp795_; ValaCCodeExpressionStatement* _tmp796_; ValaCCodeExpressionStatement* _tmp797_; ValaCCodeFunction* _tmp798_; ValaCCodeBlock* _tmp799_; ValaCCodeBlock* _tmp800_; ValaCCodeBinaryExpression* _tmp801_; ValaCCodeUnaryExpression* _tmp802_; ValaCCodeUnaryExpression* _tmp803_; ValaCCodeBlock* _tmp804_; ValaCCodeIfStatement* _tmp805_; ValaCCodeIfStatement* _tmp806_; ValaTypeSymbol* _tmp807_; gchar* _tmp808_ = NULL; gchar* _tmp809_; gchar* _tmp810_ = NULL; gchar* _tmp811_; ValaCCodeIdentifier* _tmp812_; ValaCCodeIdentifier* _tmp813_; ValaCCodeFunctionCall* _tmp814_; ValaCCodeFunctionCall* _tmp815_; ValaCCodeFunctionCall* ref_call; ValaCCodeFunctionCall* _tmp816_; ValaCCodeBinaryExpression* _tmp817_; ValaCCodeUnaryExpression* _tmp818_; ValaCCodeUnaryExpression* _tmp819_; ValaCCodeBlock* _tmp820_; ValaCCodeBlock* ref_block; ValaCCodeBlock* _tmp821_; ValaCCodeBinaryExpression* _tmp822_; ValaCCodeUnaryExpression* _tmp823_; ValaCCodeUnaryExpression* _tmp824_; ValaCCodeFunctionCall* _tmp825_; ValaCCodeAssignment* _tmp826_; ValaCCodeAssignment* _tmp827_; ValaCCodeExpressionStatement* _tmp828_; ValaCCodeExpressionStatement* _tmp829_; ValaCCodeFunction* _tmp830_; ValaCCodeBlock* _tmp831_; ValaCCodeBlock* _tmp832_; ValaCCodeIdentifier* _tmp833_; ValaCCodeIdentifier* _tmp834_; ValaCCodeBlock* _tmp835_; ValaCCodeIfStatement* _tmp836_; ValaCCodeIfStatement* _tmp837_; ValaCCodeFile* _tmp838_; ValaCCodeFunction* _tmp839_; ValaTypeSymbol* _tmp997_; gchar* _tmp998_ = NULL; gchar* _tmp999_; gchar* _tmp1000_ = NULL; gchar* _tmp1001_; ValaCCodeFunction* _tmp1002_; ValaCCodeFunction* _tmp1003_; ValaCCodeFunction* value_to_any_fun; ValaCCodeFunction* _tmp1004_; ValaCCodeFunction* _tmp1005_; ValaTypeSymbol* _tmp1006_; gchar* _tmp1007_ = NULL; gchar* _tmp1008_; gchar* _tmp1009_; gchar* _tmp1010_; ValaCCodeParameter* _tmp1011_; ValaCCodeParameter* _tmp1012_; ValaCCodeFunction* _tmp1013_; ValaCCodeParameter* _tmp1014_; ValaCCodeParameter* _tmp1015_; ValaCCodeFunction* _tmp1016_; ValaCCodeBlock* _tmp1017_; ValaCCodeBlock* _tmp1018_; ValaCCodeIdentifier* _tmp1019_; ValaCCodeIdentifier* _tmp1020_; ValaCCodeIdentifier* _tmp1021_; ValaCCodeIdentifier* _tmp1022_; ValaCCodeBinaryExpression* _tmp1023_; ValaCCodeBinaryExpression* _tmp1024_; ValaCCodeBinaryExpression* val; ValaTypeSymbol* _tmp1025_; gchar* _tmp1026_ = NULL; gchar* _tmp1027_; gchar* _tmp1028_ = NULL; gchar* _tmp1029_; gchar* to_any_fun; ValaTypeSymbol* _tmp1030_; ValaClass* _tmp1031_; const gchar* _tmp1033_; ValaCCodeIdentifier* _tmp1034_; ValaCCodeIdentifier* _tmp1035_; ValaCCodeFunctionCall* _tmp1036_; ValaCCodeFunctionCall* _tmp1037_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp1038_; ValaCCodeBinaryExpression* _tmp1039_; ValaCCodeUnaryExpression* _tmp1040_; ValaCCodeUnaryExpression* _tmp1041_; ValaCCodeFunction* _tmp1042_; ValaCCodeBlock* _tmp1043_; ValaCCodeBlock* _tmp1044_; ValaCCodeFunctionCall* _tmp1045_; ValaCCodeReturnStatement* _tmp1046_; ValaCCodeReturnStatement* _tmp1047_; ValaCCodeFile* _tmp1048_; ValaCCodeFunction* _tmp1049_; ValaCCodeFile* _tmp1050_; ValaCCodeIdentifier* _tmp1051_; ValaCCodeIdentifier* _tmp1052_; ValaCCodeFunctionCall* _tmp1053_; ValaCCodeFunctionCall* _tmp1054_; ValaCCodeFunctionCall* value_to_any_call; ValaCCodeFunctionCall* _tmp1055_; ValaCCodeIdentifier* _tmp1056_; ValaCCodeIdentifier* _tmp1057_; ValaCCodeFunctionCall* _tmp1058_; ValaTypeSymbol* _tmp1059_; gchar* _tmp1060_ = NULL; gchar* _tmp1061_; gchar* _tmp1062_ = NULL; gchar* _tmp1063_; ValaCCodeIdentifier* _tmp1064_; ValaCCodeIdentifier* _tmp1065_; ValaCCodeFunction* _tmp1066_; ValaCCodeBlock* _tmp1067_; ValaCCodeBlock* _tmp1068_; ValaCCodeFunctionCall* _tmp1069_; ValaCCodeExpressionStatement* _tmp1070_; ValaCCodeExpressionStatement* _tmp1071_; ValaTypeSymbol* _tmp1072_; gchar* _tmp1073_ = NULL; gchar* _tmp1074_; gchar* _tmp1075_ = NULL; gchar* _tmp1076_; ValaCCodeFunction* _tmp1077_; ValaCCodeFunction* _tmp1078_; ValaCCodeFunction* value_from_any_fun; ValaCCodeFunction* _tmp1079_; ValaCCodeFunction* _tmp1080_; ValaCCodeParameter* _tmp1081_; ValaCCodeParameter* _tmp1082_; ValaCCodeFunction* _tmp1083_; ValaTypeSymbol* _tmp1084_; gchar* _tmp1085_ = NULL; gchar* _tmp1086_; gchar* _tmp1087_; gchar* _tmp1088_; ValaCCodeParameter* _tmp1089_; ValaCCodeParameter* _tmp1090_; ValaCCodeFunction* _tmp1091_; ValaCCodeParameter* _tmp1092_; ValaCCodeParameter* _tmp1093_; ValaCCodeFunction* _tmp1094_; ValaCCodeBlock* _tmp1095_; ValaCCodeBlock* _tmp1096_; ValaTypeSymbol* _tmp1097_; gchar* _tmp1098_ = NULL; gchar* _tmp1099_; gchar* _tmp1100_ = NULL; gchar* _tmp1101_; gchar* from_any_fun; ValaTypeSymbol* _tmp1102_; ValaClass* _tmp1103_; const gchar* _tmp1105_; ValaCCodeIdentifier* _tmp1106_; ValaCCodeIdentifier* _tmp1107_; ValaCCodeFunctionCall* _tmp1108_; ValaCCodeFunctionCall* _tmp1109_; ValaCCodeIdentifier* _tmp1110_; ValaCCodeIdentifier* _tmp1111_; ValaCCodeFunction* _tmp1112_; ValaCCodeBlock* _tmp1113_; ValaCCodeBlock* _tmp1114_; ValaCCodeBinaryExpression* _tmp1115_; ValaCCodeUnaryExpression* _tmp1116_; ValaCCodeUnaryExpression* _tmp1117_; ValaCCodeFunctionCall* _tmp1118_; ValaCCodeAssignment* _tmp1119_; ValaCCodeAssignment* _tmp1120_; ValaCCodeExpressionStatement* _tmp1121_; ValaCCodeExpressionStatement* _tmp1122_; ValaCCodeFunction* _tmp1123_; ValaCCodeBlock* _tmp1124_; ValaCCodeBlock* _tmp1125_; ValaCCodeFunctionCall* _tmp1126_; ValaCCodeReturnStatement* _tmp1127_; ValaCCodeReturnStatement* _tmp1128_; ValaCCodeFile* _tmp1129_; ValaCCodeFunction* _tmp1130_; ValaCCodeFile* _tmp1131_; ValaCCodeIdentifier* _tmp1132_; ValaCCodeIdentifier* _tmp1133_; ValaCCodeFunctionCall* _tmp1134_; ValaCCodeFunctionCall* _tmp1135_; ValaCCodeFunctionCall* value_from_any_call; ValaCCodeFunctionCall* _tmp1136_; ValaCCodeIdentifier* _tmp1137_; ValaCCodeIdentifier* _tmp1138_; ValaCCodeFunctionCall* _tmp1139_; ValaTypeSymbol* _tmp1140_; gchar* _tmp1141_ = NULL; gchar* _tmp1142_; gchar* _tmp1143_ = NULL; gchar* _tmp1144_; ValaCCodeIdentifier* _tmp1145_; ValaCCodeIdentifier* _tmp1146_; ValaCCodeFunction* _tmp1147_; ValaCCodeBlock* _tmp1148_; ValaCCodeBlock* _tmp1149_; ValaCCodeFunctionCall* _tmp1150_; ValaCCodeExpressionStatement* _tmp1151_; ValaCCodeExpressionStatement* _tmp1152_; _tmp684_ = vala_ccode_identifier_new ("sizeof"); _tmp685_ = _tmp684_; _tmp686_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp685_); _tmp687_ = _tmp686_; _vala_ccode_node_unref0 (_tmp685_); sizeof_call = _tmp687_; _tmp688_ = sizeof_call; _tmp689_ = vala_ccode_identifier_new ("void *"); _tmp690_ = _tmp689_; vala_ccode_function_call_add_argument (_tmp688_, (ValaCCodeExpression*) _tmp690_); _vala_ccode_node_unref0 (_tmp690_); _tmp691_ = vala_ccode_identifier_new ("dova_type_set_value_size"); _tmp692_ = _tmp691_; _tmp693_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp692_); _tmp694_ = _tmp693_; _vala_ccode_node_unref0 (_tmp692_); set_size = _tmp694_; _tmp695_ = set_size; _tmp696_ = vala_ccode_identifier_new ("type"); _tmp697_ = _tmp696_; vala_ccode_function_call_add_argument (_tmp695_, (ValaCCodeExpression*) _tmp697_); _vala_ccode_node_unref0 (_tmp697_); _tmp698_ = set_size; _tmp699_ = sizeof_call; vala_ccode_function_call_add_argument (_tmp698_, (ValaCCodeExpression*) _tmp699_); _tmp700_ = type_init_fun; _tmp701_ = vala_ccode_function_get_block (_tmp700_); _tmp702_ = _tmp701_; _tmp703_ = set_size; _tmp704_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp703_); _tmp705_ = _tmp704_; vala_ccode_block_add_statement (_tmp702_, (ValaCCodeNode*) _tmp705_); _vala_ccode_node_unref0 (_tmp705_); _tmp706_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_declare_set_value_copy_function (self, _tmp706_); _tmp707_ = vala_ccode_identifier_new ("dova_type_set_value_copy"); _tmp708_ = _tmp707_; _tmp709_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp708_); _tmp710_ = _tmp709_; _vala_ccode_node_unref0 (_tmp708_); value_copy_call = _tmp710_; _tmp711_ = value_copy_call; _tmp712_ = vala_ccode_identifier_new ("type"); _tmp713_ = _tmp712_; vala_ccode_function_call_add_argument (_tmp711_, (ValaCCodeExpression*) _tmp713_); _vala_ccode_node_unref0 (_tmp713_); _tmp714_ = value_copy_call; _tmp715_ = cl; _tmp716_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp715_, NULL); _tmp717_ = _tmp716_; _tmp718_ = g_strdup_printf ("%s_copy", _tmp717_); _tmp719_ = _tmp718_; _tmp720_ = vala_ccode_identifier_new (_tmp719_); _tmp721_ = _tmp720_; _tmp722_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp721_, "void (*)(void *, intptr_t, void *, intptr_t)"); _tmp723_ = _tmp722_; vala_ccode_function_call_add_argument (_tmp714_, (ValaCCodeExpression*) _tmp723_); _vala_ccode_node_unref0 (_tmp723_); _vala_ccode_node_unref0 (_tmp721_); _g_free0 (_tmp719_); _g_free0 (_tmp717_); _tmp724_ = type_init_fun; _tmp725_ = vala_ccode_function_get_block (_tmp724_); _tmp726_ = _tmp725_; _tmp727_ = value_copy_call; _tmp728_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp727_); _tmp729_ = _tmp728_; vala_ccode_block_add_statement (_tmp726_, (ValaCCodeNode*) _tmp729_); _vala_ccode_node_unref0 (_tmp729_); _tmp730_ = cl; _tmp731_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp730_, NULL); _tmp732_ = _tmp731_; _tmp733_ = g_strdup_printf ("%s_copy", _tmp732_); _tmp734_ = _tmp733_; _tmp735_ = vala_ccode_function_new (_tmp734_, "void"); _tmp736_ = _tmp735_; _g_free0 (_tmp734_); _g_free0 (_tmp732_); function = _tmp736_; _tmp737_ = function; vala_ccode_function_set_modifiers (_tmp737_, VALA_CCODE_MODIFIERS_STATIC); _tmp738_ = function; _tmp739_ = vala_ccode_parameter_new ("dest", "any **"); _tmp740_ = _tmp739_; vala_ccode_function_add_parameter (_tmp738_, _tmp740_); _vala_ccode_node_unref0 (_tmp740_); _tmp741_ = function; _tmp742_ = vala_ccode_parameter_new ("dest_index", "intptr_t"); _tmp743_ = _tmp742_; vala_ccode_function_add_parameter (_tmp741_, _tmp743_); _vala_ccode_node_unref0 (_tmp743_); _tmp744_ = function; _tmp745_ = vala_ccode_parameter_new ("src", "any **"); _tmp746_ = _tmp745_; vala_ccode_function_add_parameter (_tmp744_, _tmp746_); _vala_ccode_node_unref0 (_tmp746_); _tmp747_ = function; _tmp748_ = vala_ccode_parameter_new ("src_index", "intptr_t"); _tmp749_ = _tmp748_; vala_ccode_function_add_parameter (_tmp747_, _tmp749_); _vala_ccode_node_unref0 (_tmp749_); _tmp750_ = function; _tmp751_ = vala_ccode_block_new (); _tmp752_ = _tmp751_; vala_ccode_function_set_block (_tmp750_, _tmp752_); _vala_ccode_node_unref0 (_tmp752_); _tmp753_ = vala_ccode_fragment_new (); cfrag = _tmp753_; _tmp754_ = function; _tmp755_ = vala_ccode_function_get_block (_tmp754_); _tmp756_ = _tmp755_; _tmp757_ = cfrag; vala_ccode_block_add_statement (_tmp756_, (ValaCCodeNode*) _tmp757_); _tmp758_ = vala_ccode_identifier_new ("dest"); _tmp759_ = _tmp758_; _tmp760_ = vala_ccode_identifier_new ("dest_index"); _tmp761_ = _tmp760_; _tmp762_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp759_, (ValaCCodeExpression*) _tmp761_); _tmp763_ = _tmp762_; _vala_ccode_node_unref0 (_tmp761_); _vala_ccode_node_unref0 (_tmp759_); dest = _tmp763_; _tmp764_ = vala_ccode_identifier_new ("src"); _tmp765_ = _tmp764_; _tmp766_ = vala_ccode_identifier_new ("src_index"); _tmp767_ = _tmp766_; _tmp768_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp765_, (ValaCCodeExpression*) _tmp767_); _tmp769_ = _tmp768_; _vala_ccode_node_unref0 (_tmp767_); _vala_ccode_node_unref0 (_tmp765_); src = _tmp769_; _tmp770_ = cl; _tmp771_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp770_, NULL); _tmp772_ = _tmp771_; _tmp773_ = g_strdup_printf ("%s_unref", _tmp772_); _tmp774_ = _tmp773_; _tmp775_ = vala_ccode_identifier_new (_tmp774_); _tmp776_ = _tmp775_; _tmp777_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp776_); _tmp778_ = _tmp777_; _vala_ccode_node_unref0 (_tmp776_); _g_free0 (_tmp774_); _g_free0 (_tmp772_); unref_call = _tmp778_; _tmp779_ = unref_call; _tmp780_ = dest; _tmp781_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp780_); _tmp782_ = _tmp781_; vala_ccode_function_call_add_argument (_tmp779_, (ValaCCodeExpression*) _tmp782_); _vala_ccode_node_unref0 (_tmp782_); _tmp783_ = vala_ccode_block_new (); unref_block = _tmp783_; _tmp784_ = unref_block; _tmp785_ = unref_call; _tmp786_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp785_); _tmp787_ = _tmp786_; vala_ccode_block_add_statement (_tmp784_, (ValaCCodeNode*) _tmp787_); _vala_ccode_node_unref0 (_tmp787_); _tmp788_ = unref_block; _tmp789_ = dest; _tmp790_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp789_); _tmp791_ = _tmp790_; _tmp792_ = vala_ccode_constant_new ("NULL"); _tmp793_ = _tmp792_; _tmp794_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp791_, (ValaCCodeExpression*) _tmp793_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp795_ = _tmp794_; _tmp796_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp795_); _tmp797_ = _tmp796_; vala_ccode_block_add_statement (_tmp788_, (ValaCCodeNode*) _tmp797_); _vala_ccode_node_unref0 (_tmp797_); _vala_ccode_node_unref0 (_tmp795_); _vala_ccode_node_unref0 (_tmp793_); _vala_ccode_node_unref0 (_tmp791_); _tmp798_ = function; _tmp799_ = vala_ccode_function_get_block (_tmp798_); _tmp800_ = _tmp799_; _tmp801_ = dest; _tmp802_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp801_); _tmp803_ = _tmp802_; _tmp804_ = unref_block; _tmp805_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp803_, (ValaCCodeStatement*) _tmp804_, NULL); _tmp806_ = _tmp805_; vala_ccode_block_add_statement (_tmp800_, (ValaCCodeNode*) _tmp806_); _vala_ccode_node_unref0 (_tmp806_); _vala_ccode_node_unref0 (_tmp803_); _tmp807_ = cl; _tmp808_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp807_, NULL); _tmp809_ = _tmp808_; _tmp810_ = g_strdup_printf ("%s_ref", _tmp809_); _tmp811_ = _tmp810_; _tmp812_ = vala_ccode_identifier_new (_tmp811_); _tmp813_ = _tmp812_; _tmp814_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp813_); _tmp815_ = _tmp814_; _vala_ccode_node_unref0 (_tmp813_); _g_free0 (_tmp811_); _g_free0 (_tmp809_); ref_call = _tmp815_; _tmp816_ = ref_call; _tmp817_ = src; _tmp818_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp817_); _tmp819_ = _tmp818_; vala_ccode_function_call_add_argument (_tmp816_, (ValaCCodeExpression*) _tmp819_); _vala_ccode_node_unref0 (_tmp819_); _tmp820_ = vala_ccode_block_new (); ref_block = _tmp820_; _tmp821_ = ref_block; _tmp822_ = dest; _tmp823_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp822_); _tmp824_ = _tmp823_; _tmp825_ = ref_call; _tmp826_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp824_, (ValaCCodeExpression*) _tmp825_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp827_ = _tmp826_; _tmp828_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp827_); _tmp829_ = _tmp828_; vala_ccode_block_add_statement (_tmp821_, (ValaCCodeNode*) _tmp829_); _vala_ccode_node_unref0 (_tmp829_); _vala_ccode_node_unref0 (_tmp827_); _vala_ccode_node_unref0 (_tmp824_); _tmp830_ = function; _tmp831_ = vala_ccode_function_get_block (_tmp830_); _tmp832_ = _tmp831_; _tmp833_ = vala_ccode_identifier_new ("src"); _tmp834_ = _tmp833_; _tmp835_ = ref_block; _tmp836_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp834_, (ValaCCodeStatement*) _tmp835_, NULL); _tmp837_ = _tmp836_; vala_ccode_block_add_statement (_tmp832_, (ValaCCodeNode*) _tmp837_); _vala_ccode_node_unref0 (_tmp837_); _vala_ccode_node_unref0 (_tmp834_); _tmp838_ = ((ValaDovaBaseModule*) self)->cfile; _tmp839_ = function; vala_ccode_file_add_function (_tmp838_, _tmp839_); { ValaTypeSymbol* _tmp840_; gchar* _tmp841_ = NULL; gchar* _tmp842_; gchar* _tmp843_ = NULL; gchar* _tmp844_; ValaCCodeFunction* _tmp845_; ValaCCodeFunction* _tmp846_; ValaCCodeFunction* value_equals_fun; ValaCCodeFunction* _tmp847_; ValaCCodeFunction* _tmp848_; ValaTypeSymbol* _tmp849_; gchar* _tmp850_ = NULL; gchar* _tmp851_; gchar* _tmp852_; gchar* _tmp853_; ValaCCodeParameter* _tmp854_; ValaCCodeParameter* _tmp855_; ValaCCodeFunction* _tmp856_; ValaCCodeParameter* _tmp857_; ValaCCodeParameter* _tmp858_; ValaCCodeFunction* _tmp859_; ValaTypeSymbol* _tmp860_; gchar* _tmp861_ = NULL; gchar* _tmp862_; gchar* _tmp863_; gchar* _tmp864_; ValaCCodeParameter* _tmp865_; ValaCCodeParameter* _tmp866_; ValaCCodeFunction* _tmp867_; ValaCCodeParameter* _tmp868_; ValaCCodeParameter* _tmp869_; ValaCCodeFunction* _tmp870_; ValaCCodeBlock* _tmp871_; ValaCCodeBlock* _tmp872_; ValaCCodeIdentifier* _tmp873_; ValaCCodeIdentifier* _tmp874_; ValaCCodeIdentifier* _tmp875_; ValaCCodeIdentifier* _tmp876_; ValaCCodeBinaryExpression* _tmp877_; ValaCCodeBinaryExpression* _tmp878_; ValaCCodeBinaryExpression* val; ValaCCodeIdentifier* _tmp879_; ValaCCodeIdentifier* _tmp880_; ValaCCodeIdentifier* _tmp881_; ValaCCodeIdentifier* _tmp882_; ValaCCodeBinaryExpression* _tmp883_; ValaCCodeBinaryExpression* _tmp884_; ValaCCodeBinaryExpression* other; ValaCCodeIdentifier* _tmp885_; ValaCCodeIdentifier* _tmp886_; ValaCCodeFunctionCall* _tmp887_; ValaCCodeFunctionCall* _tmp888_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp889_; ValaCCodeBinaryExpression* _tmp890_; ValaCCodeUnaryExpression* _tmp891_; ValaCCodeUnaryExpression* _tmp892_; ValaCCodeFunctionCall* _tmp893_; ValaCCodeBinaryExpression* _tmp894_; ValaCCodeUnaryExpression* _tmp895_; ValaCCodeUnaryExpression* _tmp896_; ValaCCodeFunction* _tmp897_; ValaCCodeBlock* _tmp898_; ValaCCodeBlock* _tmp899_; ValaCCodeFunctionCall* _tmp900_; ValaCCodeReturnStatement* _tmp901_; ValaCCodeReturnStatement* _tmp902_; ValaCCodeFile* _tmp903_; ValaCCodeFunction* _tmp904_; ValaCCodeFile* _tmp905_; ValaCCodeIdentifier* _tmp906_; ValaCCodeIdentifier* _tmp907_; ValaCCodeFunctionCall* _tmp908_; ValaCCodeFunctionCall* _tmp909_; ValaCCodeFunctionCall* value_equals_call; ValaCCodeFunctionCall* _tmp910_; ValaCCodeIdentifier* _tmp911_; ValaCCodeIdentifier* _tmp912_; ValaCCodeFunctionCall* _tmp913_; ValaTypeSymbol* _tmp914_; gchar* _tmp915_ = NULL; gchar* _tmp916_; gchar* _tmp917_ = NULL; gchar* _tmp918_; ValaCCodeIdentifier* _tmp919_; ValaCCodeIdentifier* _tmp920_; ValaCCodeCastExpression* _tmp921_; ValaCCodeCastExpression* _tmp922_; ValaCCodeFunction* _tmp923_; ValaCCodeBlock* _tmp924_; ValaCCodeBlock* _tmp925_; ValaCCodeFunctionCall* _tmp926_; ValaCCodeExpressionStatement* _tmp927_; ValaCCodeExpressionStatement* _tmp928_; _tmp840_ = cl; _tmp841_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp840_, NULL); _tmp842_ = _tmp841_; _tmp843_ = g_strdup_printf ("%s_value_equals", _tmp842_); _tmp844_ = _tmp843_; _tmp845_ = vala_ccode_function_new (_tmp844_, "bool"); _tmp846_ = _tmp845_; _g_free0 (_tmp844_); _g_free0 (_tmp842_); value_equals_fun = _tmp846_; _tmp847_ = value_equals_fun; vala_ccode_function_set_modifiers (_tmp847_, VALA_CCODE_MODIFIERS_STATIC); _tmp848_ = value_equals_fun; _tmp849_ = cl; _tmp850_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp849_); _tmp851_ = _tmp850_; _tmp852_ = g_strconcat (_tmp851_, "**", NULL); _tmp853_ = _tmp852_; _tmp854_ = vala_ccode_parameter_new ("value", _tmp853_); _tmp855_ = _tmp854_; vala_ccode_function_add_parameter (_tmp848_, _tmp855_); _vala_ccode_node_unref0 (_tmp855_); _g_free0 (_tmp853_); _g_free0 (_tmp851_); _tmp856_ = value_equals_fun; _tmp857_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp858_ = _tmp857_; vala_ccode_function_add_parameter (_tmp856_, _tmp858_); _vala_ccode_node_unref0 (_tmp858_); _tmp859_ = value_equals_fun; _tmp860_ = cl; _tmp861_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp860_); _tmp862_ = _tmp861_; _tmp863_ = g_strconcat (_tmp862_, "**", NULL); _tmp864_ = _tmp863_; _tmp865_ = vala_ccode_parameter_new ("other", _tmp864_); _tmp866_ = _tmp865_; vala_ccode_function_add_parameter (_tmp859_, _tmp866_); _vala_ccode_node_unref0 (_tmp866_); _g_free0 (_tmp864_); _g_free0 (_tmp862_); _tmp867_ = value_equals_fun; _tmp868_ = vala_ccode_parameter_new ("other_index", "intptr_t"); _tmp869_ = _tmp868_; vala_ccode_function_add_parameter (_tmp867_, _tmp869_); _vala_ccode_node_unref0 (_tmp869_); _tmp870_ = value_equals_fun; _tmp871_ = vala_ccode_block_new (); _tmp872_ = _tmp871_; vala_ccode_function_set_block (_tmp870_, _tmp872_); _vala_ccode_node_unref0 (_tmp872_); _tmp873_ = vala_ccode_identifier_new ("value"); _tmp874_ = _tmp873_; _tmp875_ = vala_ccode_identifier_new ("value_index"); _tmp876_ = _tmp875_; _tmp877_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp874_, (ValaCCodeExpression*) _tmp876_); _tmp878_ = _tmp877_; _vala_ccode_node_unref0 (_tmp876_); _vala_ccode_node_unref0 (_tmp874_); val = _tmp878_; _tmp879_ = vala_ccode_identifier_new ("other"); _tmp880_ = _tmp879_; _tmp881_ = vala_ccode_identifier_new ("other_index"); _tmp882_ = _tmp881_; _tmp883_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp880_, (ValaCCodeExpression*) _tmp882_); _tmp884_ = _tmp883_; _vala_ccode_node_unref0 (_tmp882_); _vala_ccode_node_unref0 (_tmp880_); other = _tmp884_; _tmp885_ = vala_ccode_identifier_new ("any_equals"); _tmp886_ = _tmp885_; _tmp887_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp886_); _tmp888_ = _tmp887_; _vala_ccode_node_unref0 (_tmp886_); ccall = _tmp888_; _tmp889_ = ccall; _tmp890_ = val; _tmp891_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp890_); _tmp892_ = _tmp891_; vala_ccode_function_call_add_argument (_tmp889_, (ValaCCodeExpression*) _tmp892_); _vala_ccode_node_unref0 (_tmp892_); _tmp893_ = ccall; _tmp894_ = other; _tmp895_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp894_); _tmp896_ = _tmp895_; vala_ccode_function_call_add_argument (_tmp893_, (ValaCCodeExpression*) _tmp896_); _vala_ccode_node_unref0 (_tmp896_); _tmp897_ = value_equals_fun; _tmp898_ = vala_ccode_function_get_block (_tmp897_); _tmp899_ = _tmp898_; _tmp900_ = ccall; _tmp901_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp900_); _tmp902_ = _tmp901_; vala_ccode_block_add_statement (_tmp899_, (ValaCCodeNode*) _tmp902_); _vala_ccode_node_unref0 (_tmp902_); _tmp903_ = ((ValaDovaBaseModule*) self)->cfile; _tmp904_ = value_equals_fun; vala_ccode_file_add_function (_tmp903_, _tmp904_); _tmp905_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_declare_set_value_equals_function (self, _tmp905_); _tmp906_ = vala_ccode_identifier_new ("dova_type_set_value_equals"); _tmp907_ = _tmp906_; _tmp908_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp907_); _tmp909_ = _tmp908_; _vala_ccode_node_unref0 (_tmp907_); value_equals_call = _tmp909_; _tmp910_ = value_equals_call; _tmp911_ = vala_ccode_identifier_new ("type"); _tmp912_ = _tmp911_; vala_ccode_function_call_add_argument (_tmp910_, (ValaCCodeExpression*) _tmp912_); _vala_ccode_node_unref0 (_tmp912_); _tmp913_ = value_equals_call; _tmp914_ = cl; _tmp915_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp914_, NULL); _tmp916_ = _tmp915_; _tmp917_ = g_strdup_printf ("%s_value_equals", _tmp916_); _tmp918_ = _tmp917_; _tmp919_ = vala_ccode_identifier_new (_tmp918_); _tmp920_ = _tmp919_; _tmp921_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp920_, "bool (*)(void *, intptr_t, void *, intptr_t)"); _tmp922_ = _tmp921_; vala_ccode_function_call_add_argument (_tmp913_, (ValaCCodeExpression*) _tmp922_); _vala_ccode_node_unref0 (_tmp922_); _vala_ccode_node_unref0 (_tmp920_); _g_free0 (_tmp918_); _g_free0 (_tmp916_); _tmp923_ = type_init_fun; _tmp924_ = vala_ccode_function_get_block (_tmp923_); _tmp925_ = _tmp924_; _tmp926_ = value_equals_call; _tmp927_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp926_); _tmp928_ = _tmp927_; vala_ccode_block_add_statement (_tmp925_, (ValaCCodeNode*) _tmp928_); _vala_ccode_node_unref0 (_tmp928_); _vala_ccode_node_unref0 (value_equals_call); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (other); _vala_ccode_node_unref0 (val); _vala_ccode_node_unref0 (value_equals_fun); } { ValaTypeSymbol* _tmp929_; gchar* _tmp930_ = NULL; gchar* _tmp931_; gchar* _tmp932_ = NULL; gchar* _tmp933_; ValaCCodeFunction* _tmp934_; ValaCCodeFunction* _tmp935_; ValaCCodeFunction* value_hash_fun; ValaCCodeFunction* _tmp936_; ValaCCodeFunction* _tmp937_; ValaTypeSymbol* _tmp938_; gchar* _tmp939_ = NULL; gchar* _tmp940_; gchar* _tmp941_; gchar* _tmp942_; ValaCCodeParameter* _tmp943_; ValaCCodeParameter* _tmp944_; ValaCCodeFunction* _tmp945_; ValaCCodeParameter* _tmp946_; ValaCCodeParameter* _tmp947_; ValaCCodeFunction* _tmp948_; ValaCCodeBlock* _tmp949_; ValaCCodeBlock* _tmp950_; ValaCCodeIdentifier* _tmp951_; ValaCCodeIdentifier* _tmp952_; ValaCCodeIdentifier* _tmp953_; ValaCCodeIdentifier* _tmp954_; ValaCCodeBinaryExpression* _tmp955_; ValaCCodeBinaryExpression* _tmp956_; ValaCCodeBinaryExpression* val; ValaCCodeIdentifier* _tmp957_; ValaCCodeIdentifier* _tmp958_; ValaCCodeFunctionCall* _tmp959_; ValaCCodeFunctionCall* _tmp960_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp961_; ValaCCodeBinaryExpression* _tmp962_; ValaCCodeUnaryExpression* _tmp963_; ValaCCodeUnaryExpression* _tmp964_; ValaCCodeFunction* _tmp965_; ValaCCodeBlock* _tmp966_; ValaCCodeBlock* _tmp967_; ValaCCodeFunctionCall* _tmp968_; ValaCCodeReturnStatement* _tmp969_; ValaCCodeReturnStatement* _tmp970_; ValaCCodeFile* _tmp971_; ValaCCodeFunction* _tmp972_; ValaCCodeFile* _tmp973_; ValaCCodeIdentifier* _tmp974_; ValaCCodeIdentifier* _tmp975_; ValaCCodeFunctionCall* _tmp976_; ValaCCodeFunctionCall* _tmp977_; ValaCCodeFunctionCall* value_hash_call; ValaCCodeFunctionCall* _tmp978_; ValaCCodeIdentifier* _tmp979_; ValaCCodeIdentifier* _tmp980_; ValaCCodeFunctionCall* _tmp981_; ValaTypeSymbol* _tmp982_; gchar* _tmp983_ = NULL; gchar* _tmp984_; gchar* _tmp985_ = NULL; gchar* _tmp986_; ValaCCodeIdentifier* _tmp987_; ValaCCodeIdentifier* _tmp988_; ValaCCodeCastExpression* _tmp989_; ValaCCodeCastExpression* _tmp990_; ValaCCodeFunction* _tmp991_; ValaCCodeBlock* _tmp992_; ValaCCodeBlock* _tmp993_; ValaCCodeFunctionCall* _tmp994_; ValaCCodeExpressionStatement* _tmp995_; ValaCCodeExpressionStatement* _tmp996_; _tmp929_ = cl; _tmp930_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp929_, NULL); _tmp931_ = _tmp930_; _tmp932_ = g_strdup_printf ("%s_value_hash", _tmp931_); _tmp933_ = _tmp932_; _tmp934_ = vala_ccode_function_new (_tmp933_, "uintptr_t"); _tmp935_ = _tmp934_; _g_free0 (_tmp933_); _g_free0 (_tmp931_); value_hash_fun = _tmp935_; _tmp936_ = value_hash_fun; vala_ccode_function_set_modifiers (_tmp936_, VALA_CCODE_MODIFIERS_STATIC); _tmp937_ = value_hash_fun; _tmp938_ = cl; _tmp939_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp938_); _tmp940_ = _tmp939_; _tmp941_ = g_strconcat (_tmp940_, "**", NULL); _tmp942_ = _tmp941_; _tmp943_ = vala_ccode_parameter_new ("value", _tmp942_); _tmp944_ = _tmp943_; vala_ccode_function_add_parameter (_tmp937_, _tmp944_); _vala_ccode_node_unref0 (_tmp944_); _g_free0 (_tmp942_); _g_free0 (_tmp940_); _tmp945_ = value_hash_fun; _tmp946_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp947_ = _tmp946_; vala_ccode_function_add_parameter (_tmp945_, _tmp947_); _vala_ccode_node_unref0 (_tmp947_); _tmp948_ = value_hash_fun; _tmp949_ = vala_ccode_block_new (); _tmp950_ = _tmp949_; vala_ccode_function_set_block (_tmp948_, _tmp950_); _vala_ccode_node_unref0 (_tmp950_); _tmp951_ = vala_ccode_identifier_new ("value"); _tmp952_ = _tmp951_; _tmp953_ = vala_ccode_identifier_new ("value_index"); _tmp954_ = _tmp953_; _tmp955_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp952_, (ValaCCodeExpression*) _tmp954_); _tmp956_ = _tmp955_; _vala_ccode_node_unref0 (_tmp954_); _vala_ccode_node_unref0 (_tmp952_); val = _tmp956_; _tmp957_ = vala_ccode_identifier_new ("any_hash"); _tmp958_ = _tmp957_; _tmp959_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp958_); _tmp960_ = _tmp959_; _vala_ccode_node_unref0 (_tmp958_); ccall = _tmp960_; _tmp961_ = ccall; _tmp962_ = val; _tmp963_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp962_); _tmp964_ = _tmp963_; vala_ccode_function_call_add_argument (_tmp961_, (ValaCCodeExpression*) _tmp964_); _vala_ccode_node_unref0 (_tmp964_); _tmp965_ = value_hash_fun; _tmp966_ = vala_ccode_function_get_block (_tmp965_); _tmp967_ = _tmp966_; _tmp968_ = ccall; _tmp969_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp968_); _tmp970_ = _tmp969_; vala_ccode_block_add_statement (_tmp967_, (ValaCCodeNode*) _tmp970_); _vala_ccode_node_unref0 (_tmp970_); _tmp971_ = ((ValaDovaBaseModule*) self)->cfile; _tmp972_ = value_hash_fun; vala_ccode_file_add_function (_tmp971_, _tmp972_); _tmp973_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_declare_set_value_hash_function (self, _tmp973_); _tmp974_ = vala_ccode_identifier_new ("dova_type_set_value_hash"); _tmp975_ = _tmp974_; _tmp976_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp975_); _tmp977_ = _tmp976_; _vala_ccode_node_unref0 (_tmp975_); value_hash_call = _tmp977_; _tmp978_ = value_hash_call; _tmp979_ = vala_ccode_identifier_new ("type"); _tmp980_ = _tmp979_; vala_ccode_function_call_add_argument (_tmp978_, (ValaCCodeExpression*) _tmp980_); _vala_ccode_node_unref0 (_tmp980_); _tmp981_ = value_hash_call; _tmp982_ = cl; _tmp983_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp982_, NULL); _tmp984_ = _tmp983_; _tmp985_ = g_strdup_printf ("%s_value_hash", _tmp984_); _tmp986_ = _tmp985_; _tmp987_ = vala_ccode_identifier_new (_tmp986_); _tmp988_ = _tmp987_; _tmp989_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp988_, "uintptr_t (*)(void *, intptr_t)"); _tmp990_ = _tmp989_; vala_ccode_function_call_add_argument (_tmp981_, (ValaCCodeExpression*) _tmp990_); _vala_ccode_node_unref0 (_tmp990_); _vala_ccode_node_unref0 (_tmp988_); _g_free0 (_tmp986_); _g_free0 (_tmp984_); _tmp991_ = type_init_fun; _tmp992_ = vala_ccode_function_get_block (_tmp991_); _tmp993_ = _tmp992_; _tmp994_ = value_hash_call; _tmp995_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp994_); _tmp996_ = _tmp995_; vala_ccode_block_add_statement (_tmp993_, (ValaCCodeNode*) _tmp996_); _vala_ccode_node_unref0 (_tmp996_); _vala_ccode_node_unref0 (value_hash_call); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (val); _vala_ccode_node_unref0 (value_hash_fun); } _tmp997_ = cl; _tmp998_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp997_, NULL); _tmp999_ = _tmp998_; _tmp1000_ = g_strdup_printf ("%s_value_to_any", _tmp999_); _tmp1001_ = _tmp1000_; _tmp1002_ = vala_ccode_function_new (_tmp1001_, "any*"); _tmp1003_ = _tmp1002_; _g_free0 (_tmp1001_); _g_free0 (_tmp999_); value_to_any_fun = _tmp1003_; _tmp1004_ = value_to_any_fun; vala_ccode_function_set_modifiers (_tmp1004_, VALA_CCODE_MODIFIERS_STATIC); _tmp1005_ = value_to_any_fun; _tmp1006_ = cl; _tmp1007_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp1006_); _tmp1008_ = _tmp1007_; _tmp1009_ = g_strconcat (_tmp1008_, "**", NULL); _tmp1010_ = _tmp1009_; _tmp1011_ = vala_ccode_parameter_new ("value", _tmp1010_); _tmp1012_ = _tmp1011_; vala_ccode_function_add_parameter (_tmp1005_, _tmp1012_); _vala_ccode_node_unref0 (_tmp1012_); _g_free0 (_tmp1010_); _g_free0 (_tmp1008_); _tmp1013_ = value_to_any_fun; _tmp1014_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp1015_ = _tmp1014_; vala_ccode_function_add_parameter (_tmp1013_, _tmp1015_); _vala_ccode_node_unref0 (_tmp1015_); _tmp1016_ = value_to_any_fun; _tmp1017_ = vala_ccode_block_new (); _tmp1018_ = _tmp1017_; vala_ccode_function_set_block (_tmp1016_, _tmp1018_); _vala_ccode_node_unref0 (_tmp1018_); _tmp1019_ = vala_ccode_identifier_new ("value"); _tmp1020_ = _tmp1019_; _tmp1021_ = vala_ccode_identifier_new ("value_index"); _tmp1022_ = _tmp1021_; _tmp1023_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp1020_, (ValaCCodeExpression*) _tmp1022_); _tmp1024_ = _tmp1023_; _vala_ccode_node_unref0 (_tmp1022_); _vala_ccode_node_unref0 (_tmp1020_); val = _tmp1024_; _tmp1025_ = cl; _tmp1026_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp1025_, NULL); _tmp1027_ = _tmp1026_; _tmp1028_ = g_strdup_printf ("%s_ref", _tmp1027_); _tmp1029_ = _tmp1028_; _g_free0 (_tmp1027_); to_any_fun = _tmp1029_; _tmp1030_ = cl; _tmp1031_ = ((ValaDovaBaseModule*) self)->string_class; if (_tmp1030_ == VALA_TYPESYMBOL (_tmp1031_)) { gchar* _tmp1032_; _tmp1032_ = g_strdup ("string_to_any"); _g_free0 (to_any_fun); to_any_fun = _tmp1032_; } _tmp1033_ = to_any_fun; _tmp1034_ = vala_ccode_identifier_new (_tmp1033_); _tmp1035_ = _tmp1034_; _tmp1036_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1035_); _tmp1037_ = _tmp1036_; _vala_ccode_node_unref0 (_tmp1035_); ccall = _tmp1037_; _tmp1038_ = ccall; _tmp1039_ = val; _tmp1040_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp1039_); _tmp1041_ = _tmp1040_; vala_ccode_function_call_add_argument (_tmp1038_, (ValaCCodeExpression*) _tmp1041_); _vala_ccode_node_unref0 (_tmp1041_); _tmp1042_ = value_to_any_fun; _tmp1043_ = vala_ccode_function_get_block (_tmp1042_); _tmp1044_ = _tmp1043_; _tmp1045_ = ccall; _tmp1046_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp1045_); _tmp1047_ = _tmp1046_; vala_ccode_block_add_statement (_tmp1044_, (ValaCCodeNode*) _tmp1047_); _vala_ccode_node_unref0 (_tmp1047_); _tmp1048_ = ((ValaDovaBaseModule*) self)->cfile; _tmp1049_ = value_to_any_fun; vala_ccode_file_add_function (_tmp1048_, _tmp1049_); _tmp1050_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_declare_set_value_to_any_function (self, _tmp1050_); _tmp1051_ = vala_ccode_identifier_new ("dova_type_set_value_to_any"); _tmp1052_ = _tmp1051_; _tmp1053_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1052_); _tmp1054_ = _tmp1053_; _vala_ccode_node_unref0 (_tmp1052_); value_to_any_call = _tmp1054_; _tmp1055_ = value_to_any_call; _tmp1056_ = vala_ccode_identifier_new ("type"); _tmp1057_ = _tmp1056_; vala_ccode_function_call_add_argument (_tmp1055_, (ValaCCodeExpression*) _tmp1057_); _vala_ccode_node_unref0 (_tmp1057_); _tmp1058_ = value_to_any_call; _tmp1059_ = cl; _tmp1060_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp1059_, NULL); _tmp1061_ = _tmp1060_; _tmp1062_ = g_strdup_printf ("%s_value_to_any", _tmp1061_); _tmp1063_ = _tmp1062_; _tmp1064_ = vala_ccode_identifier_new (_tmp1063_); _tmp1065_ = _tmp1064_; vala_ccode_function_call_add_argument (_tmp1058_, (ValaCCodeExpression*) _tmp1065_); _vala_ccode_node_unref0 (_tmp1065_); _g_free0 (_tmp1063_); _g_free0 (_tmp1061_); _tmp1066_ = type_init_fun; _tmp1067_ = vala_ccode_function_get_block (_tmp1066_); _tmp1068_ = _tmp1067_; _tmp1069_ = value_to_any_call; _tmp1070_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp1069_); _tmp1071_ = _tmp1070_; vala_ccode_block_add_statement (_tmp1068_, (ValaCCodeNode*) _tmp1071_); _vala_ccode_node_unref0 (_tmp1071_); _tmp1072_ = cl; _tmp1073_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp1072_, NULL); _tmp1074_ = _tmp1073_; _tmp1075_ = g_strdup_printf ("%s_value_from_any", _tmp1074_); _tmp1076_ = _tmp1075_; _tmp1077_ = vala_ccode_function_new (_tmp1076_, "void"); _tmp1078_ = _tmp1077_; _g_free0 (_tmp1076_); _g_free0 (_tmp1074_); value_from_any_fun = _tmp1078_; _tmp1079_ = value_from_any_fun; vala_ccode_function_set_modifiers (_tmp1079_, VALA_CCODE_MODIFIERS_STATIC); _tmp1080_ = value_from_any_fun; _tmp1081_ = vala_ccode_parameter_new ("any_", "any *"); _tmp1082_ = _tmp1081_; vala_ccode_function_add_parameter (_tmp1080_, _tmp1082_); _vala_ccode_node_unref0 (_tmp1082_); _tmp1083_ = value_from_any_fun; _tmp1084_ = cl; _tmp1085_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp1084_); _tmp1086_ = _tmp1085_; _tmp1087_ = g_strconcat (_tmp1086_, "**", NULL); _tmp1088_ = _tmp1087_; _tmp1089_ = vala_ccode_parameter_new ("value", _tmp1088_); _tmp1090_ = _tmp1089_; vala_ccode_function_add_parameter (_tmp1083_, _tmp1090_); _vala_ccode_node_unref0 (_tmp1090_); _g_free0 (_tmp1088_); _g_free0 (_tmp1086_); _tmp1091_ = value_from_any_fun; _tmp1092_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp1093_ = _tmp1092_; vala_ccode_function_add_parameter (_tmp1091_, _tmp1093_); _vala_ccode_node_unref0 (_tmp1093_); _tmp1094_ = value_from_any_fun; _tmp1095_ = vala_ccode_block_new (); _tmp1096_ = _tmp1095_; vala_ccode_function_set_block (_tmp1094_, _tmp1096_); _vala_ccode_node_unref0 (_tmp1096_); _tmp1097_ = cl; _tmp1098_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp1097_, NULL); _tmp1099_ = _tmp1098_; _tmp1100_ = g_strdup_printf ("%s_ref", _tmp1099_); _tmp1101_ = _tmp1100_; _g_free0 (_tmp1099_); from_any_fun = _tmp1101_; _tmp1102_ = cl; _tmp1103_ = ((ValaDovaBaseModule*) self)->string_class; if (_tmp1102_ == VALA_TYPESYMBOL (_tmp1103_)) { gchar* _tmp1104_; _tmp1104_ = g_strdup ("string_from_any"); _g_free0 (from_any_fun); from_any_fun = _tmp1104_; } _tmp1105_ = from_any_fun; _tmp1106_ = vala_ccode_identifier_new (_tmp1105_); _tmp1107_ = _tmp1106_; _tmp1108_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1107_); _vala_ccode_node_unref0 (ccall); ccall = _tmp1108_; _vala_ccode_node_unref0 (_tmp1107_); _tmp1109_ = ccall; _tmp1110_ = vala_ccode_identifier_new ("any_"); _tmp1111_ = _tmp1110_; vala_ccode_function_call_add_argument (_tmp1109_, (ValaCCodeExpression*) _tmp1111_); _vala_ccode_node_unref0 (_tmp1111_); _tmp1112_ = value_from_any_fun; _tmp1113_ = vala_ccode_function_get_block (_tmp1112_); _tmp1114_ = _tmp1113_; _tmp1115_ = val; _tmp1116_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp1115_); _tmp1117_ = _tmp1116_; _tmp1118_ = ccall; _tmp1119_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp1117_, (ValaCCodeExpression*) _tmp1118_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp1120_ = _tmp1119_; _tmp1121_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp1120_); _tmp1122_ = _tmp1121_; vala_ccode_block_add_statement (_tmp1114_, (ValaCCodeNode*) _tmp1122_); _vala_ccode_node_unref0 (_tmp1122_); _vala_ccode_node_unref0 (_tmp1120_); _vala_ccode_node_unref0 (_tmp1117_); _tmp1123_ = value_from_any_fun; _tmp1124_ = vala_ccode_function_get_block (_tmp1123_); _tmp1125_ = _tmp1124_; _tmp1126_ = ccall; _tmp1127_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp1126_); _tmp1128_ = _tmp1127_; vala_ccode_block_add_statement (_tmp1125_, (ValaCCodeNode*) _tmp1128_); _vala_ccode_node_unref0 (_tmp1128_); _tmp1129_ = ((ValaDovaBaseModule*) self)->cfile; _tmp1130_ = value_from_any_fun; vala_ccode_file_add_function (_tmp1129_, _tmp1130_); _tmp1131_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_declare_set_value_from_any_function (self, _tmp1131_); _tmp1132_ = vala_ccode_identifier_new ("dova_type_set_value_from_any"); _tmp1133_ = _tmp1132_; _tmp1134_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1133_); _tmp1135_ = _tmp1134_; _vala_ccode_node_unref0 (_tmp1133_); value_from_any_call = _tmp1135_; _tmp1136_ = value_from_any_call; _tmp1137_ = vala_ccode_identifier_new ("type"); _tmp1138_ = _tmp1137_; vala_ccode_function_call_add_argument (_tmp1136_, (ValaCCodeExpression*) _tmp1138_); _vala_ccode_node_unref0 (_tmp1138_); _tmp1139_ = value_from_any_call; _tmp1140_ = cl; _tmp1141_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp1140_, NULL); _tmp1142_ = _tmp1141_; _tmp1143_ = g_strdup_printf ("%s_value_from_any", _tmp1142_); _tmp1144_ = _tmp1143_; _tmp1145_ = vala_ccode_identifier_new (_tmp1144_); _tmp1146_ = _tmp1145_; vala_ccode_function_call_add_argument (_tmp1139_, (ValaCCodeExpression*) _tmp1146_); _vala_ccode_node_unref0 (_tmp1146_); _g_free0 (_tmp1144_); _g_free0 (_tmp1142_); _tmp1147_ = type_init_fun; _tmp1148_ = vala_ccode_function_get_block (_tmp1147_); _tmp1149_ = _tmp1148_; _tmp1150_ = value_from_any_call; _tmp1151_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp1150_); _tmp1152_ = _tmp1151_; vala_ccode_block_add_statement (_tmp1149_, (ValaCCodeNode*) _tmp1152_); _vala_ccode_node_unref0 (_tmp1152_); _vala_ccode_node_unref0 (value_from_any_call); _g_free0 (from_any_fun); _vala_ccode_node_unref0 (value_from_any_fun); _vala_ccode_node_unref0 (value_to_any_call); _vala_ccode_node_unref0 (ccall); _g_free0 (to_any_fun); _vala_ccode_node_unref0 (val); _vala_ccode_node_unref0 (value_to_any_fun); _vala_ccode_node_unref0 (ref_block); _vala_ccode_node_unref0 (ref_call); _vala_ccode_node_unref0 (unref_block); _vala_ccode_node_unref0 (unref_call); _vala_ccode_node_unref0 (src); _vala_ccode_node_unref0 (dest); _vala_ccode_node_unref0 (cfrag); _vala_ccode_node_unref0 (function); _vala_ccode_node_unref0 (value_copy_call); _vala_ccode_node_unref0 (set_size); _vala_ccode_node_unref0 (sizeof_call); } else { ValaClass* _tmp1153_; gchar* _tmp1154_ = NULL; gchar* _tmp1155_; gchar* _tmp1156_ = NULL; gchar* _tmp1157_; ValaCCodeIdentifier* _tmp1158_; ValaCCodeIdentifier* _tmp1159_; ValaCCodeFunctionCall* _tmp1160_; ValaCCodeFunctionCall* _tmp1161_; ValaCCodeIdentifier* _tmp1162_; ValaCCodeIdentifier* _tmp1163_; ValaDataType* _tmp1164_; ValaCCodeFunction* _tmp1180_; ValaCCodeBlock* _tmp1181_; ValaCCodeBlock* _tmp1182_; ValaCCodeFunctionCall* _tmp1183_; ValaCCodeExpressionStatement* _tmp1184_; ValaCCodeExpressionStatement* _tmp1185_; ValaObjectTypeSymbol* _tmp1186_; _tmp1153_ = base_class; _tmp1154_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp1153_, NULL); _tmp1155_ = _tmp1154_; _tmp1156_ = g_strdup_printf ("%s_type_init", _tmp1155_); _tmp1157_ = _tmp1156_; _tmp1158_ = vala_ccode_identifier_new (_tmp1157_); _tmp1159_ = _tmp1158_; _tmp1160_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1159_); _vala_ccode_node_unref0 (type_init_call); type_init_call = _tmp1160_; _vala_ccode_node_unref0 (_tmp1159_); _g_free0 (_tmp1157_); _g_free0 (_tmp1155_); _tmp1161_ = type_init_call; _tmp1162_ = vala_ccode_identifier_new ("type"); _tmp1163_ = _tmp1162_; vala_ccode_function_call_add_argument (_tmp1161_, (ValaCCodeExpression*) _tmp1163_); _vala_ccode_node_unref0 (_tmp1163_); _tmp1164_ = base_class_type; if (_tmp1164_ != NULL) { { ValaDataType* _tmp1165_; ValaList* _tmp1166_ = NULL; ValaList* _type_arg_list; ValaList* _tmp1167_; gint _tmp1168_; gint _tmp1169_; gint _type_arg_size; gint _type_arg_index; _tmp1165_ = base_class_type; _tmp1166_ = vala_data_type_get_type_arguments (_tmp1165_); _type_arg_list = _tmp1166_; _tmp1167_ = _type_arg_list; _tmp1168_ = vala_collection_get_size ((ValaCollection*) _tmp1167_); _tmp1169_ = _tmp1168_; _type_arg_size = _tmp1169_; _type_arg_index = -1; while (TRUE) { gint _tmp1170_; gint _tmp1171_; gint _tmp1172_; ValaList* _tmp1173_; gint _tmp1174_; gpointer _tmp1175_ = NULL; ValaDataType* type_arg; ValaCCodeFunctionCall* _tmp1176_; ValaDataType* _tmp1177_; ValaCCodeExpression* _tmp1178_ = NULL; ValaCCodeExpression* _tmp1179_; _tmp1170_ = _type_arg_index; _type_arg_index = _tmp1170_ + 1; _tmp1171_ = _type_arg_index; _tmp1172_ = _type_arg_size; if (!(_tmp1171_ < _tmp1172_)) { break; } _tmp1173_ = _type_arg_list; _tmp1174_ = _type_arg_index; _tmp1175_ = vala_list_get (_tmp1173_, _tmp1174_); type_arg = (ValaDataType*) _tmp1175_; _tmp1176_ = type_init_call; _tmp1177_ = type_arg; _tmp1178_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp1177_, TRUE); _tmp1179_ = _tmp1178_; vala_ccode_function_call_add_argument (_tmp1176_, _tmp1179_); _vala_ccode_node_unref0 (_tmp1179_); _vala_code_node_unref0 (type_arg); } _vala_iterable_unref0 (_type_arg_list); } } _tmp1180_ = type_init_fun; _tmp1181_ = vala_ccode_function_get_block (_tmp1180_); _tmp1182_ = _tmp1181_; _tmp1183_ = type_init_call; _tmp1184_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp1183_); _tmp1185_ = _tmp1184_; vala_ccode_block_add_statement (_tmp1182_, (ValaCCodeNode*) _tmp1185_); _vala_ccode_node_unref0 (_tmp1185_); _tmp1186_ = object_type_symbol; if (_tmp1186_ != NULL) { { ValaObjectTypeSymbol* _tmp1187_; ValaList* _tmp1188_ = NULL; ValaList* _type_param_list; ValaList* _tmp1189_; gint _tmp1190_; gint _tmp1191_; gint _type_param_size; gint _type_param_index; _tmp1187_ = object_type_symbol; _tmp1188_ = vala_object_type_symbol_get_type_parameters (_tmp1187_); _type_param_list = _tmp1188_; _tmp1189_ = _type_param_list; _tmp1190_ = vala_collection_get_size ((ValaCollection*) _tmp1189_); _tmp1191_ = _tmp1190_; _type_param_size = _tmp1191_; _type_param_index = -1; while (TRUE) { gint _tmp1192_; gint _tmp1193_; gint _tmp1194_; ValaList* _tmp1195_; gint _tmp1196_; gpointer _tmp1197_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp1198_; ValaCCodeBlock* _tmp1199_; ValaCCodeBlock* _tmp1200_; ValaObjectTypeSymbol* _tmp1201_; ValaCCodeIdentifier* _tmp1202_; ValaCCodeIdentifier* _tmp1203_; ValaCCodeExpression* _tmp1204_ = NULL; ValaCCodeExpression* _tmp1205_; ValaTypeParameter* _tmp1206_; const gchar* _tmp1207_; const gchar* _tmp1208_; gchar* _tmp1209_ = NULL; gchar* _tmp1210_; gchar* _tmp1211_ = NULL; gchar* _tmp1212_; ValaCCodeMemberAccess* _tmp1213_; ValaCCodeMemberAccess* _tmp1214_; ValaTypeParameter* _tmp1215_; const gchar* _tmp1216_; const gchar* _tmp1217_; gchar* _tmp1218_ = NULL; gchar* _tmp1219_; gchar* _tmp1220_ = NULL; gchar* _tmp1221_; ValaCCodeIdentifier* _tmp1222_; ValaCCodeIdentifier* _tmp1223_; ValaCCodeAssignment* _tmp1224_; ValaCCodeAssignment* _tmp1225_; ValaCCodeExpressionStatement* _tmp1226_; ValaCCodeExpressionStatement* _tmp1227_; _tmp1192_ = _type_param_index; _type_param_index = _tmp1192_ + 1; _tmp1193_ = _type_param_index; _tmp1194_ = _type_param_size; if (!(_tmp1193_ < _tmp1194_)) { break; } _tmp1195_ = _type_param_list; _tmp1196_ = _type_param_index; _tmp1197_ = vala_list_get (_tmp1195_, _tmp1196_); type_param = (ValaTypeParameter*) _tmp1197_; _tmp1198_ = type_init_fun; _tmp1199_ = vala_ccode_function_get_block (_tmp1198_); _tmp1200_ = _tmp1199_; _tmp1201_ = object_type_symbol; _tmp1202_ = vala_ccode_identifier_new ("type"); _tmp1203_ = _tmp1202_; _tmp1204_ = vala_dova_base_module_get_type_private_from_type ((ValaDovaBaseModule*) self, _tmp1201_, (ValaCCodeExpression*) _tmp1203_); _tmp1205_ = _tmp1204_; _tmp1206_ = type_param; _tmp1207_ = vala_symbol_get_name ((ValaSymbol*) _tmp1206_); _tmp1208_ = _tmp1207_; _tmp1209_ = g_utf8_strdown (_tmp1208_, (gssize) (-1)); _tmp1210_ = _tmp1209_; _tmp1211_ = g_strdup_printf ("%s_type", _tmp1210_); _tmp1212_ = _tmp1211_; _tmp1213_ = vala_ccode_member_access_new_pointer (_tmp1205_, _tmp1212_); _tmp1214_ = _tmp1213_; _tmp1215_ = type_param; _tmp1216_ = vala_symbol_get_name ((ValaSymbol*) _tmp1215_); _tmp1217_ = _tmp1216_; _tmp1218_ = g_utf8_strdown (_tmp1217_, (gssize) (-1)); _tmp1219_ = _tmp1218_; _tmp1220_ = g_strdup_printf ("%s_type", _tmp1219_); _tmp1221_ = _tmp1220_; _tmp1222_ = vala_ccode_identifier_new (_tmp1221_); _tmp1223_ = _tmp1222_; _tmp1224_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp1214_, (ValaCCodeExpression*) _tmp1223_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp1225_ = _tmp1224_; _tmp1226_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp1225_); _tmp1227_ = _tmp1226_; vala_ccode_block_add_statement (_tmp1200_, (ValaCCodeNode*) _tmp1227_); _vala_ccode_node_unref0 (_tmp1227_); _vala_ccode_node_unref0 (_tmp1225_); _vala_ccode_node_unref0 (_tmp1223_); _g_free0 (_tmp1221_); _g_free0 (_tmp1219_); _vala_ccode_node_unref0 (_tmp1214_); _g_free0 (_tmp1212_); _g_free0 (_tmp1210_); _vala_ccode_node_unref0 (_tmp1205_); _vala_ccode_node_unref0 (_tmp1203_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } } } _tmp1228_ = ((ValaDovaBaseModule*) self)->cfile; _tmp1229_ = type_init_fun; vala_ccode_file_add_function (_tmp1228_, _tmp1229_); _tmp1230_ = type_init_fun; _tmp1231_ = vala_ccode_function_get_block (_tmp1230_); _tmp1232_ = _tmp1231_; _tmp1233_ = _vala_ccode_node_ref0 (_tmp1232_); result = _tmp1233_; _vala_ccode_node_unref0 (type_init_fun); _vala_ccode_node_unref0 (type_init_call); _vala_ccode_node_unref0 (type_init_block); _vala_code_node_unref0 (object_type_symbol); _vala_ccode_node_unref0 (type_fun); _vala_ccode_node_unref0 (_cdecl_); _vala_code_node_unref0 (base_class_type); return result; } static void vala_dova_object_module_add_finalize_function (ValaDovaObjectModule* self, ValaClass* cl) { ValaClass* _tmp0_; gchar* _tmp1_ = NULL; gchar* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; ValaCCodeFunction* _tmp5_; ValaCCodeFunction* _tmp6_; ValaCCodeFunction* function; ValaCCodeFunction* _tmp7_; ValaCCodeFunction* _tmp8_; ValaClass* _tmp9_; gchar* _tmp10_ = NULL; gchar* _tmp11_; gchar* _tmp12_; gchar* _tmp13_; ValaCCodeParameter* _tmp14_; ValaCCodeParameter* _tmp15_; ValaCCodeFunction* _tmp16_; ValaCCodeFile* _tmp17_; ValaCCodeFunction* _tmp18_; ValaClass* _tmp19_; ValaDestructor* _tmp20_; ValaDestructor* _tmp21_; ValaCCodeFile* _tmp164_; ValaCCodeFunction* _tmp165_; g_return_if_fail (self != NULL); g_return_if_fail (cl != NULL); _tmp0_ = cl; _tmp1_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, (ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = g_strdup_printf ("%sfinalize", _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_ccode_function_new (_tmp4_, "void"); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); _g_free0 (_tmp2_); function = _tmp6_; _tmp7_ = function; vala_ccode_function_set_modifiers (_tmp7_, VALA_CCODE_MODIFIERS_STATIC); _tmp8_ = function; _tmp9_ = cl; _tmp10_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp9_); _tmp11_ = _tmp10_; _tmp12_ = g_strconcat (_tmp11_, "*", NULL); _tmp13_ = _tmp12_; _tmp14_ = vala_ccode_parameter_new ("this", _tmp13_); _tmp15_ = _tmp14_; vala_ccode_function_add_parameter (_tmp8_, _tmp15_); _vala_ccode_node_unref0 (_tmp15_); _g_free0 (_tmp13_); _g_free0 (_tmp11_); _tmp16_ = function; vala_dova_base_module_push_function ((ValaDovaBaseModule*) self, _tmp16_); _tmp17_ = ((ValaDovaBaseModule*) self)->cfile; _tmp18_ = function; vala_ccode_file_add_function_declaration (_tmp17_, _tmp18_); _tmp19_ = cl; _tmp20_ = vala_class_get_destructor (_tmp19_); _tmp21_ = _tmp20_; if (_tmp21_ != NULL) { ValaClass* _tmp22_; ValaDestructor* _tmp23_; ValaDestructor* _tmp24_; ValaBlock* _tmp25_; ValaBlock* _tmp26_; _tmp22_ = cl; _tmp23_ = vala_class_get_destructor (_tmp22_); _tmp24_ = _tmp23_; _tmp25_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp24_); _tmp26_ = _tmp25_; vala_code_node_emit ((ValaCodeNode*) _tmp26_, (ValaCodeGenerator*) self); } { ValaClass* _tmp27_; ValaList* _tmp28_ = NULL; ValaList* _f_list; ValaList* _tmp29_; gint _tmp30_; gint _tmp31_; gint _f_size; gint _f_index; _tmp27_ = cl; _tmp28_ = vala_class_get_fields (_tmp27_); _f_list = _tmp28_; _tmp29_ = _f_list; _tmp30_ = vala_collection_get_size ((ValaCollection*) _tmp29_); _tmp31_ = _tmp30_; _f_size = _tmp31_; _f_index = -1; while (TRUE) { gint _tmp32_; gint _tmp33_; gint _tmp34_; ValaList* _tmp35_; gint _tmp36_; gpointer _tmp37_ = NULL; ValaField* f; ValaField* _tmp38_; ValaMemberBinding _tmp39_; ValaMemberBinding _tmp40_; _tmp32_ = _f_index; _f_index = _tmp32_ + 1; _tmp33_ = _f_index; _tmp34_ = _f_size; if (!(_tmp33_ < _tmp34_)) { break; } _tmp35_ = _f_list; _tmp36_ = _f_index; _tmp37_ = vala_list_get (_tmp35_, _tmp36_); f = (ValaField*) _tmp37_; _tmp38_ = f; _tmp39_ = vala_field_get_binding (_tmp38_); _tmp40_ = _tmp39_; if (_tmp40_ == VALA_MEMBER_BINDING_INSTANCE) { ValaCCodeExpression* lhs; ValaField* _tmp41_; gboolean _tmp42_ = FALSE; ValaField* _tmp66_; ValaDataType* _tmp67_; ValaDataType* _tmp68_; gboolean _tmp69_ = FALSE; lhs = NULL; _tmp41_ = f; _tmp42_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp41_); if (_tmp42_) { ValaClass* _tmp43_; gchar* _tmp44_ = NULL; gchar* _tmp45_; gchar* _tmp46_ = NULL; gchar* _tmp47_; ValaCCodeIdentifier* _tmp48_; ValaCCodeIdentifier* _tmp49_; ValaCCodeFunctionCall* _tmp50_; ValaCCodeFunctionCall* _tmp51_; ValaCCodeFunctionCall* priv_call; ValaCCodeFunctionCall* _tmp52_; ValaCCodeIdentifier* _tmp53_; ValaCCodeIdentifier* _tmp54_; ValaCCodeFunctionCall* _tmp55_; ValaField* _tmp56_; gchar* _tmp57_ = NULL; gchar* _tmp58_; ValaCCodeMemberAccess* _tmp59_; _tmp43_ = cl; _tmp44_ = vala_dova_base_module_get_ccode_upper_case_name ((ValaDovaBaseModule*) self, (ValaSymbol*) _tmp43_, NULL); _tmp45_ = _tmp44_; _tmp46_ = g_strdup_printf ("%s_GET_PRIVATE", _tmp45_); _tmp47_ = _tmp46_; _tmp48_ = vala_ccode_identifier_new (_tmp47_); _tmp49_ = _tmp48_; _tmp50_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp49_); _tmp51_ = _tmp50_; _vala_ccode_node_unref0 (_tmp49_); _g_free0 (_tmp47_); _g_free0 (_tmp45_); priv_call = _tmp51_; _tmp52_ = priv_call; _tmp53_ = vala_ccode_identifier_new ("this"); _tmp54_ = _tmp53_; vala_ccode_function_call_add_argument (_tmp52_, (ValaCCodeExpression*) _tmp54_); _vala_ccode_node_unref0 (_tmp54_); _tmp55_ = priv_call; _tmp56_ = f; _tmp57_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp56_); _tmp58_ = _tmp57_; _tmp59_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp55_, _tmp58_); _vala_ccode_node_unref0 (lhs); lhs = (ValaCCodeExpression*) _tmp59_; _g_free0 (_tmp58_); _vala_ccode_node_unref0 (priv_call); } else { ValaCCodeIdentifier* _tmp60_; ValaCCodeIdentifier* _tmp61_; ValaField* _tmp62_; gchar* _tmp63_ = NULL; gchar* _tmp64_; ValaCCodeMemberAccess* _tmp65_; _tmp60_ = vala_ccode_identifier_new ("this"); _tmp61_ = _tmp60_; _tmp62_ = f; _tmp63_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp62_); _tmp64_ = _tmp63_; _tmp65_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp61_, _tmp64_); _vala_ccode_node_unref0 (lhs); lhs = (ValaCCodeExpression*) _tmp65_; _g_free0 (_tmp64_); _vala_ccode_node_unref0 (_tmp61_); } _tmp66_ = f; _tmp67_ = vala_variable_get_variable_type ((ValaVariable*) _tmp66_); _tmp68_ = _tmp67_; _tmp69_ = vala_dova_base_module_requires_destroy ((ValaDovaBaseModule*) self, _tmp68_); if (_tmp69_) { ValaMemberAccess* _tmp70_; ValaMemberAccess* this_access; ValaMemberAccess* _tmp71_; ValaField* _tmp72_; ValaSymbol* _tmp73_; ValaSymbol* _tmp74_; ValaDataType* _tmp75_ = NULL; ValaDataType* _tmp76_; ValaField* _tmp77_; ValaSymbol* _tmp78_; ValaSymbol* _tmp79_; ValaStruct* _tmp80_; ValaStruct* field_st; gboolean _tmp81_ = FALSE; ValaStruct* _tmp82_; gboolean _tmp85_; ValaMemberAccess* _tmp92_; ValaField* _tmp93_; const gchar* _tmp94_; const gchar* _tmp95_; ValaMemberAccess* _tmp96_; ValaMemberAccess* ma; ValaMemberAccess* _tmp97_; ValaField* _tmp98_; ValaCCodeFunction* _tmp99_; ValaCCodeFunction* _tmp100_; ValaCCodeExpression* _tmp101_; ValaField* _tmp102_; ValaDataType* _tmp103_; ValaDataType* _tmp104_; ValaMemberAccess* _tmp105_; ValaCCodeExpression* _tmp106_ = NULL; ValaCCodeExpression* _tmp107_; _tmp70_ = vala_member_access_new_simple ("this", NULL); this_access = _tmp70_; _tmp71_ = this_access; _tmp72_ = f; _tmp73_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp72_); _tmp74_ = _tmp73_; _tmp75_ = vala_dova_base_module_get_data_type_for_symbol (VALA_TYPESYMBOL (_tmp74_)); _tmp76_ = _tmp75_; vala_expression_set_value_type ((ValaExpression*) _tmp71_, _tmp76_); _vala_code_node_unref0 (_tmp76_); _tmp77_ = f; _tmp78_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp77_); _tmp79_ = _tmp78_; _tmp80_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp79_) ? ((ValaStruct*) _tmp79_) : NULL); field_st = _tmp80_; _tmp82_ = field_st; if (_tmp82_ != NULL) { ValaStruct* _tmp83_; gboolean _tmp84_ = FALSE; _tmp83_ = field_st; _tmp84_ = vala_struct_is_simple_type (_tmp83_); _tmp81_ = !_tmp84_; } else { _tmp81_ = FALSE; } _tmp85_ = _tmp81_; if (_tmp85_) { ValaMemberAccess* _tmp86_; ValaCCodeIdentifier* _tmp87_; ValaCCodeIdentifier* _tmp88_; _tmp86_ = this_access; _tmp87_ = vala_ccode_identifier_new ("(*this)"); _tmp88_ = _tmp87_; vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) _tmp86_, (ValaCCodeExpression*) _tmp88_); _vala_ccode_node_unref0 (_tmp88_); } else { ValaMemberAccess* _tmp89_; ValaCCodeIdentifier* _tmp90_; ValaCCodeIdentifier* _tmp91_; _tmp89_ = this_access; _tmp90_ = vala_ccode_identifier_new ("this"); _tmp91_ = _tmp90_; vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) _tmp89_, (ValaCCodeExpression*) _tmp91_); _vala_ccode_node_unref0 (_tmp91_); } _tmp92_ = this_access; _tmp93_ = f; _tmp94_ = vala_symbol_get_name ((ValaSymbol*) _tmp93_); _tmp95_ = _tmp94_; _tmp96_ = vala_member_access_new ((ValaExpression*) _tmp92_, _tmp95_, NULL); ma = _tmp96_; _tmp97_ = ma; _tmp98_ = f; vala_expression_set_symbol_reference ((ValaExpression*) _tmp97_, (ValaSymbol*) _tmp98_); _tmp99_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp100_ = _tmp99_; _tmp101_ = lhs; _tmp102_ = f; _tmp103_ = vala_variable_get_variable_type ((ValaVariable*) _tmp102_); _tmp104_ = _tmp103_; _tmp105_ = ma; _tmp106_ = vala_dova_base_module_get_unref_expression ((ValaDovaBaseModule*) self, _tmp101_, _tmp104_, (ValaExpression*) _tmp105_); _tmp107_ = _tmp106_; vala_ccode_function_add_expression (_tmp100_, _tmp107_); _vala_ccode_node_unref0 (_tmp107_); _vala_code_node_unref0 (ma); _vala_code_node_unref0 (field_st); _vala_code_node_unref0 (this_access); } _vala_ccode_node_unref0 (lhs); } _vala_code_node_unref0 (f); } _vala_iterable_unref0 (_f_list); } { ValaClass* _tmp108_; ValaList* _tmp109_ = NULL; ValaList* _base_type_list; ValaList* _tmp110_; gint _tmp111_; gint _tmp112_; gint _base_type_size; gint _base_type_index; _tmp108_ = cl; _tmp109_ = vala_class_get_base_types (_tmp108_); _base_type_list = _tmp109_; _tmp110_ = _base_type_list; _tmp111_ = vala_collection_get_size ((ValaCollection*) _tmp110_); _tmp112_ = _tmp111_; _base_type_size = _tmp112_; _base_type_index = -1; while (TRUE) { gint _tmp113_; gint _tmp114_; gint _tmp115_; ValaList* _tmp116_; gint _tmp117_; gpointer _tmp118_ = NULL; ValaDataType* base_type; ValaDataType* _tmp119_; ValaObjectType* _tmp120_; ValaObjectType* object_type; ValaObjectType* _tmp121_; ValaObjectTypeSymbol* _tmp122_; ValaObjectTypeSymbol* _tmp123_; _tmp113_ = _base_type_index; _base_type_index = _tmp113_ + 1; _tmp114_ = _base_type_index; _tmp115_ = _base_type_size; if (!(_tmp114_ < _tmp115_)) { break; } _tmp116_ = _base_type_list; _tmp117_ = _base_type_index; _tmp118_ = vala_list_get (_tmp116_, _tmp117_); base_type = (ValaDataType*) _tmp118_; _tmp119_ = base_type; _tmp120_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE (_tmp119_)); object_type = _tmp120_; _tmp121_ = object_type; _tmp122_ = vala_object_type_get_type_symbol (_tmp121_); _tmp123_ = _tmp122_; if (VALA_IS_CLASS (_tmp123_)) { ValaCCodeIdentifier* _tmp124_; ValaCCodeIdentifier* _tmp125_; ValaCCodeFunctionCall* _tmp126_; ValaCCodeFunctionCall* _tmp127_; ValaCCodeFunctionCall* ccall; ValaObjectType* _tmp128_; ValaObjectTypeSymbol* _tmp129_; ValaObjectTypeSymbol* _tmp130_; gchar* _tmp131_ = NULL; gchar* _tmp132_; gchar* _tmp133_ = NULL; gchar* _tmp134_; ValaCCodeIdentifier* _tmp135_; ValaCCodeIdentifier* _tmp136_; ValaCCodeFunctionCall* _tmp137_; ValaCCodeFunctionCall* _tmp138_; ValaCCodeFunctionCall* type_get_call; ValaCCodeFunctionCall* _tmp154_; ValaCCodeFunctionCall* _tmp155_; ValaCCodeFunctionCall* _tmp156_; ValaCCodeIdentifier* _tmp157_; ValaCCodeIdentifier* _tmp158_; ValaCCodeFunction* _tmp159_; ValaCCodeFunction* _tmp160_; ValaCCodeFunctionCall* _tmp161_; ValaCCodeExpressionStatement* _tmp162_; ValaCCodeExpressionStatement* _tmp163_; _tmp124_ = vala_ccode_identifier_new ("dova_object_base_finalize"); _tmp125_ = _tmp124_; _tmp126_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp125_); _tmp127_ = _tmp126_; _vala_ccode_node_unref0 (_tmp125_); ccall = _tmp127_; _tmp128_ = object_type; _tmp129_ = vala_object_type_get_type_symbol (_tmp128_); _tmp130_ = _tmp129_; _tmp131_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp130_, NULL); _tmp132_ = _tmp131_; _tmp133_ = g_strdup_printf ("%s_type_get", _tmp132_); _tmp134_ = _tmp133_; _tmp135_ = vala_ccode_identifier_new (_tmp134_); _tmp136_ = _tmp135_; _tmp137_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp136_); _tmp138_ = _tmp137_; _vala_ccode_node_unref0 (_tmp136_); _g_free0 (_tmp134_); _g_free0 (_tmp132_); type_get_call = _tmp138_; { ValaDataType* _tmp139_; ValaList* _tmp140_ = NULL; ValaList* _type_arg_list; ValaList* _tmp141_; gint _tmp142_; gint _tmp143_; gint _type_arg_size; gint _type_arg_index; _tmp139_ = base_type; _tmp140_ = vala_data_type_get_type_arguments (_tmp139_); _type_arg_list = _tmp140_; _tmp141_ = _type_arg_list; _tmp142_ = vala_collection_get_size ((ValaCollection*) _tmp141_); _tmp143_ = _tmp142_; _type_arg_size = _tmp143_; _type_arg_index = -1; while (TRUE) { gint _tmp144_; gint _tmp145_; gint _tmp146_; ValaList* _tmp147_; gint _tmp148_; gpointer _tmp149_ = NULL; ValaDataType* type_arg; ValaCCodeFunctionCall* _tmp150_; ValaDataType* _tmp151_; ValaCCodeExpression* _tmp152_ = NULL; ValaCCodeExpression* _tmp153_; _tmp144_ = _type_arg_index; _type_arg_index = _tmp144_ + 1; _tmp145_ = _type_arg_index; _tmp146_ = _type_arg_size; if (!(_tmp145_ < _tmp146_)) { break; } _tmp147_ = _type_arg_list; _tmp148_ = _type_arg_index; _tmp149_ = vala_list_get (_tmp147_, _tmp148_); type_arg = (ValaDataType*) _tmp149_; _tmp150_ = type_get_call; _tmp151_ = type_arg; _tmp152_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp151_, FALSE); _tmp153_ = _tmp152_; vala_ccode_function_call_add_argument (_tmp150_, _tmp153_); _vala_ccode_node_unref0 (_tmp153_); _vala_code_node_unref0 (type_arg); } _vala_iterable_unref0 (_type_arg_list); } _tmp154_ = ccall; _tmp155_ = type_get_call; vala_ccode_function_call_add_argument (_tmp154_, (ValaCCodeExpression*) _tmp155_); _tmp156_ = ccall; _tmp157_ = vala_ccode_identifier_new ("this"); _tmp158_ = _tmp157_; vala_ccode_function_call_add_argument (_tmp156_, (ValaCCodeExpression*) _tmp158_); _vala_ccode_node_unref0 (_tmp158_); _tmp159_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp160_ = _tmp159_; _tmp161_ = ccall; _tmp162_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp161_); _tmp163_ = _tmp162_; vala_ccode_function_add_statement (_tmp160_, (ValaCCodeNode*) _tmp163_); _vala_ccode_node_unref0 (_tmp163_); _vala_ccode_node_unref0 (type_get_call); _vala_ccode_node_unref0 (ccall); } _vala_code_node_unref0 (object_type); _vala_code_node_unref0 (base_type); } _vala_iterable_unref0 (_base_type_list); } vala_dova_base_module_pop_function ((ValaDovaBaseModule*) self); _tmp164_ = ((ValaDovaBaseModule*) self)->cfile; _tmp165_ = function; vala_ccode_file_add_function (_tmp164_, _tmp165_); _vala_ccode_node_unref0 (function); } static void vala_dova_object_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl) { ValaDovaObjectModule * self; ValaClass* _tmp0_; ValaDovaBaseModuleEmitContext* _tmp1_; ValaDovaBaseModuleEmitContext* _tmp2_; ValaClass* _tmp3_; ValaCCodeFile* _tmp4_; ValaClass* _tmp5_; ValaCCodeFile* _tmp6_; ValaClass* _tmp7_; gboolean _tmp8_ = FALSE; ValaClass* _tmp11_; ValaClass* _tmp12_; ValaClass* _tmp13_; ValaClass* _tmp14_; ValaClass* _tmp15_; ValaCCodeBlock* _tmp16_ = NULL; ValaCCodeBlock* type_init_block; gboolean _tmp70_ = FALSE; gboolean _tmp71_ = FALSE; ValaClass* _tmp72_; ValaClass* _tmp73_; ValaClass* _tmp74_; gboolean _tmp77_; gboolean _tmp89_; ValaClass* _tmp283_; ValaClass* _tmp284_; self = (ValaDovaObjectModule*) base; g_return_if_fail (cl != NULL); _tmp0_ = cl; _tmp1_ = vala_dova_base_module_emit_context_new ((ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; vala_dova_base_module_push_context ((ValaDovaBaseModule*) self, _tmp2_); _vala_dova_base_module_emit_context_unref0 (_tmp2_); _tmp3_ = cl; _tmp4_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, _tmp3_, _tmp4_); _tmp5_ = cl; _tmp6_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_generate_class_private_declaration (self, _tmp5_, _tmp6_); _tmp7_ = cl; _tmp8_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp7_); if (!_tmp8_) { ValaClass* _tmp9_; ValaCCodeFile* _tmp10_; _tmp9_ = cl; _tmp10_ = ((ValaDovaBaseModule*) self)->header_file; vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, _tmp9_, _tmp10_); } _tmp11_ = cl; vala_code_node_accept_children ((ValaCodeNode*) _tmp11_, (ValaCodeVisitor*) self); _tmp12_ = cl; _tmp13_ = cl; _tmp14_ = vala_class_get_base_class (_tmp13_); _tmp15_ = _tmp14_; _tmp16_ = vala_dova_object_module_generate_type_get_function (self, (ValaTypeSymbol*) _tmp12_, _tmp15_); type_init_block = _tmp16_; { ValaClass* _tmp17_; ValaList* _tmp18_ = NULL; ValaList* _base_type_list; ValaList* _tmp19_; gint _tmp20_; gint _tmp21_; gint _base_type_size; gint _base_type_index; _tmp17_ = cl; _tmp18_ = vala_class_get_base_types (_tmp17_); _base_type_list = _tmp18_; _tmp19_ = _base_type_list; _tmp20_ = vala_collection_get_size ((ValaCollection*) _tmp19_); _tmp21_ = _tmp20_; _base_type_size = _tmp21_; _base_type_index = -1; while (TRUE) { gint _tmp22_; gint _tmp23_; gint _tmp24_; ValaList* _tmp25_; gint _tmp26_; gpointer _tmp27_ = NULL; ValaDataType* base_type; ValaDataType* _tmp28_; ValaObjectType* _tmp29_; ValaObjectType* object_type; ValaObjectType* _tmp30_; ValaObjectTypeSymbol* _tmp31_; ValaObjectTypeSymbol* _tmp32_; _tmp22_ = _base_type_index; _base_type_index = _tmp22_ + 1; _tmp23_ = _base_type_index; _tmp24_ = _base_type_size; if (!(_tmp23_ < _tmp24_)) { break; } _tmp25_ = _base_type_list; _tmp26_ = _base_type_index; _tmp27_ = vala_list_get (_tmp25_, _tmp26_); base_type = (ValaDataType*) _tmp27_; _tmp28_ = base_type; _tmp29_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE (_tmp28_)); object_type = _tmp29_; _tmp30_ = object_type; _tmp31_ = vala_object_type_get_type_symbol (_tmp30_); _tmp32_ = _tmp31_; if (VALA_IS_INTERFACE (_tmp32_)) { ValaObjectType* _tmp33_; ValaObjectTypeSymbol* _tmp34_; ValaObjectTypeSymbol* _tmp35_; ValaCCodeFile* _tmp36_; ValaObjectType* _tmp37_; ValaObjectTypeSymbol* _tmp38_; ValaObjectTypeSymbol* _tmp39_; gchar* _tmp40_ = NULL; gchar* _tmp41_; gchar* _tmp42_ = NULL; gchar* _tmp43_; ValaCCodeIdentifier* _tmp44_; ValaCCodeIdentifier* _tmp45_; ValaCCodeFunctionCall* _tmp46_; ValaCCodeFunctionCall* _tmp47_; ValaCCodeFunctionCall* type_init_call; ValaCCodeFunctionCall* _tmp48_; ValaCCodeIdentifier* _tmp49_; ValaCCodeIdentifier* _tmp50_; ValaCCodeBlock* _tmp66_; ValaCCodeFunctionCall* _tmp67_; ValaCCodeExpressionStatement* _tmp68_; ValaCCodeExpressionStatement* _tmp69_; _tmp33_ = object_type; _tmp34_ = vala_object_type_get_type_symbol (_tmp33_); _tmp35_ = _tmp34_; _tmp36_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_interface_declaration ((ValaDovaBaseModule*) self, VALA_INTERFACE (_tmp35_), _tmp36_); _tmp37_ = object_type; _tmp38_ = vala_object_type_get_type_symbol (_tmp37_); _tmp39_ = _tmp38_; _tmp40_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp39_, NULL); _tmp41_ = _tmp40_; _tmp42_ = g_strdup_printf ("%s_type_init", _tmp41_); _tmp43_ = _tmp42_; _tmp44_ = vala_ccode_identifier_new (_tmp43_); _tmp45_ = _tmp44_; _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_); _tmp47_ = _tmp46_; _vala_ccode_node_unref0 (_tmp45_); _g_free0 (_tmp43_); _g_free0 (_tmp41_); type_init_call = _tmp47_; _tmp48_ = type_init_call; _tmp49_ = vala_ccode_identifier_new ("type"); _tmp50_ = _tmp49_; vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp50_); _vala_ccode_node_unref0 (_tmp50_); { ValaDataType* _tmp51_; ValaList* _tmp52_ = NULL; ValaList* _type_arg_list; ValaList* _tmp53_; gint _tmp54_; gint _tmp55_; gint _type_arg_size; gint _type_arg_index; _tmp51_ = base_type; _tmp52_ = vala_data_type_get_type_arguments (_tmp51_); _type_arg_list = _tmp52_; _tmp53_ = _type_arg_list; _tmp54_ = vala_collection_get_size ((ValaCollection*) _tmp53_); _tmp55_ = _tmp54_; _type_arg_size = _tmp55_; _type_arg_index = -1; while (TRUE) { gint _tmp56_; gint _tmp57_; gint _tmp58_; ValaList* _tmp59_; gint _tmp60_; gpointer _tmp61_ = NULL; ValaDataType* type_arg; ValaCCodeFunctionCall* _tmp62_; ValaDataType* _tmp63_; ValaCCodeExpression* _tmp64_ = NULL; ValaCCodeExpression* _tmp65_; _tmp56_ = _type_arg_index; _type_arg_index = _tmp56_ + 1; _tmp57_ = _type_arg_index; _tmp58_ = _type_arg_size; if (!(_tmp57_ < _tmp58_)) { break; } _tmp59_ = _type_arg_list; _tmp60_ = _type_arg_index; _tmp61_ = vala_list_get (_tmp59_, _tmp60_); type_arg = (ValaDataType*) _tmp61_; _tmp62_ = type_init_call; _tmp63_ = type_arg; _tmp64_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp63_, TRUE); _tmp65_ = _tmp64_; vala_ccode_function_call_add_argument (_tmp62_, _tmp65_); _vala_ccode_node_unref0 (_tmp65_); _vala_code_node_unref0 (type_arg); } _vala_iterable_unref0 (_type_arg_list); } _tmp66_ = type_init_block; _tmp67_ = type_init_call; _tmp68_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp67_); _tmp69_ = _tmp68_; vala_ccode_block_add_statement (_tmp66_, (ValaCCodeNode*) _tmp69_); _vala_ccode_node_unref0 (_tmp69_); _vala_ccode_node_unref0 (type_init_call); } _vala_code_node_unref0 (object_type); _vala_code_node_unref0 (base_type); } _vala_iterable_unref0 (_base_type_list); } _tmp72_ = cl; _tmp73_ = vala_class_get_base_class (_tmp72_); _tmp74_ = _tmp73_; if (_tmp74_ != NULL) { ValaClass* _tmp75_; gboolean _tmp76_ = FALSE; _tmp75_ = cl; _tmp76_ = vala_class_is_fundamental (_tmp75_); _tmp71_ = !_tmp76_; } else { _tmp71_ = FALSE; } _tmp77_ = _tmp71_; if (_tmp77_) { gboolean _tmp78_ = FALSE; ValaClass* _tmp79_; ValaList* _tmp80_ = NULL; ValaList* _tmp81_; gint _tmp82_; gint _tmp83_; gboolean _tmp84_; gboolean _tmp88_; _tmp79_ = cl; _tmp80_ = vala_class_get_fields (_tmp79_); _tmp81_ = _tmp80_; _tmp82_ = vala_collection_get_size ((ValaCollection*) _tmp81_); _tmp83_ = _tmp82_; _tmp84_ = _tmp83_ > 0; _vala_iterable_unref0 (_tmp81_); if (_tmp84_) { _tmp78_ = TRUE; } else { ValaClass* _tmp85_; ValaDestructor* _tmp86_; ValaDestructor* _tmp87_; _tmp85_ = cl; _tmp86_ = vala_class_get_destructor (_tmp85_); _tmp87_ = _tmp86_; _tmp78_ = _tmp87_ != NULL; } _tmp88_ = _tmp78_; _tmp70_ = _tmp88_; } else { _tmp70_ = FALSE; } _tmp89_ = _tmp70_; if (_tmp89_) { ValaClass* _tmp90_; ValaClass* _tmp91_; ValaScope* _tmp92_; ValaScope* _tmp93_; ValaSymbol* _tmp94_ = NULL; ValaMethod* _tmp95_; ValaCCodeFile* _tmp96_; ValaCCodeIdentifier* _tmp97_; ValaCCodeIdentifier* _tmp98_; ValaCCodeFunctionCall* _tmp99_; ValaCCodeFunctionCall* _tmp100_; ValaCCodeFunctionCall* override_call; ValaCCodeFunctionCall* _tmp101_; ValaCCodeIdentifier* _tmp102_; ValaCCodeIdentifier* _tmp103_; ValaCCodeFunctionCall* _tmp104_; ValaClass* _tmp105_; gchar* _tmp106_ = NULL; gchar* _tmp107_; gchar* _tmp108_ = NULL; gchar* _tmp109_; ValaCCodeIdentifier* _tmp110_; ValaCCodeIdentifier* _tmp111_; ValaCCodeBlock* _tmp112_; ValaCCodeFunctionCall* _tmp113_; ValaCCodeExpressionStatement* _tmp114_; ValaCCodeExpressionStatement* _tmp115_; _tmp90_ = cl; vala_dova_object_module_add_finalize_function (self, _tmp90_); _tmp91_ = ((ValaDovaBaseModule*) self)->object_class; _tmp92_ = vala_symbol_get_scope ((ValaSymbol*) _tmp91_); _tmp93_ = _tmp92_; _tmp94_ = vala_scope_lookup (_tmp93_, "finalize"); _tmp95_ = VALA_METHOD (_tmp94_); _tmp96_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp95_, _tmp96_); _vala_code_node_unref0 (_tmp95_); _tmp97_ = vala_ccode_identifier_new ("dova_object_override_finalize"); _tmp98_ = _tmp97_; _tmp99_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp98_); _tmp100_ = _tmp99_; _vala_ccode_node_unref0 (_tmp98_); override_call = _tmp100_; _tmp101_ = override_call; _tmp102_ = vala_ccode_identifier_new ("type"); _tmp103_ = _tmp102_; vala_ccode_function_call_add_argument (_tmp101_, (ValaCCodeExpression*) _tmp103_); _vala_ccode_node_unref0 (_tmp103_); _tmp104_ = override_call; _tmp105_ = cl; _tmp106_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, (ValaSymbol*) _tmp105_); _tmp107_ = _tmp106_; _tmp108_ = g_strdup_printf ("%sfinalize", _tmp107_); _tmp109_ = _tmp108_; _tmp110_ = vala_ccode_identifier_new (_tmp109_); _tmp111_ = _tmp110_; vala_ccode_function_call_add_argument (_tmp104_, (ValaCCodeExpression*) _tmp111_); _vala_ccode_node_unref0 (_tmp111_); _g_free0 (_tmp109_); _g_free0 (_tmp107_); _tmp112_ = type_init_block; _tmp113_ = override_call; _tmp114_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp113_); _tmp115_ = _tmp114_; vala_ccode_block_add_statement (_tmp112_, (ValaCCodeNode*) _tmp115_); _vala_ccode_node_unref0 (_tmp115_); _vala_ccode_node_unref0 (override_call); } { ValaClass* _tmp116_; ValaList* _tmp117_ = NULL; ValaList* _m_list; ValaList* _tmp118_; gint _tmp119_; gint _tmp120_; gint _m_size; gint _m_index; _tmp116_ = cl; _tmp117_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp116_); _m_list = _tmp117_; _tmp118_ = _m_list; _tmp119_ = vala_collection_get_size ((ValaCollection*) _tmp118_); _tmp120_ = _tmp119_; _m_size = _tmp120_; _m_index = -1; while (TRUE) { gint _tmp121_; gint _tmp122_; gint _tmp123_; ValaList* _tmp124_; gint _tmp125_; gpointer _tmp126_ = NULL; ValaMethod* m; gboolean _tmp127_ = FALSE; ValaMethod* _tmp128_; gboolean _tmp129_; gboolean _tmp130_; gboolean _tmp134_; _tmp121_ = _m_index; _m_index = _tmp121_ + 1; _tmp122_ = _m_index; _tmp123_ = _m_size; if (!(_tmp122_ < _tmp123_)) { break; } _tmp124_ = _m_list; _tmp125_ = _m_index; _tmp126_ = vala_list_get (_tmp124_, _tmp125_); m = (ValaMethod*) _tmp126_; _tmp128_ = m; _tmp129_ = vala_method_get_is_virtual (_tmp128_); _tmp130_ = _tmp129_; if (_tmp130_) { _tmp127_ = TRUE; } else { ValaMethod* _tmp131_; gboolean _tmp132_; gboolean _tmp133_; _tmp131_ = m; _tmp132_ = vala_method_get_overrides (_tmp131_); _tmp133_ = _tmp132_; _tmp127_ = _tmp133_; } _tmp134_ = _tmp127_; if (_tmp134_) { ValaMethod* _tmp135_; ValaMethod* _tmp136_; ValaMethod* _tmp137_; ValaSymbol* _tmp138_; ValaSymbol* _tmp139_; gchar* _tmp140_ = NULL; gchar* _tmp141_; ValaMethod* _tmp142_; const gchar* _tmp143_; const gchar* _tmp144_; gchar* _tmp145_ = NULL; gchar* _tmp146_; ValaCCodeIdentifier* _tmp147_; ValaCCodeIdentifier* _tmp148_; ValaCCodeFunctionCall* _tmp149_; ValaCCodeFunctionCall* _tmp150_; ValaCCodeFunctionCall* override_call; ValaCCodeFunctionCall* _tmp151_; ValaCCodeIdentifier* _tmp152_; ValaCCodeIdentifier* _tmp153_; ValaCCodeFunctionCall* _tmp154_; ValaMethod* _tmp155_; gchar* _tmp156_ = NULL; gchar* _tmp157_; ValaCCodeIdentifier* _tmp158_; ValaCCodeIdentifier* _tmp159_; ValaCCodeBlock* _tmp160_; ValaCCodeFunctionCall* _tmp161_; ValaCCodeExpressionStatement* _tmp162_; ValaCCodeExpressionStatement* _tmp163_; _tmp135_ = m; _tmp136_ = vala_method_get_base_method (_tmp135_); _tmp137_ = _tmp136_; _tmp138_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp137_); _tmp139_ = _tmp138_; _tmp140_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, _tmp139_); _tmp141_ = _tmp140_; _tmp142_ = m; _tmp143_ = vala_symbol_get_name ((ValaSymbol*) _tmp142_); _tmp144_ = _tmp143_; _tmp145_ = g_strdup_printf ("%soverride_%s", _tmp141_, _tmp144_); _tmp146_ = _tmp145_; _tmp147_ = vala_ccode_identifier_new (_tmp146_); _tmp148_ = _tmp147_; _tmp149_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp148_); _tmp150_ = _tmp149_; _vala_ccode_node_unref0 (_tmp148_); _g_free0 (_tmp146_); _g_free0 (_tmp141_); override_call = _tmp150_; _tmp151_ = override_call; _tmp152_ = vala_ccode_identifier_new ("type"); _tmp153_ = _tmp152_; vala_ccode_function_call_add_argument (_tmp151_, (ValaCCodeExpression*) _tmp153_); _vala_ccode_node_unref0 (_tmp153_); _tmp154_ = override_call; _tmp155_ = m; _tmp156_ = vala_dova_base_module_get_ccode_real_name ((ValaDovaBaseModule*) self, _tmp155_); _tmp157_ = _tmp156_; _tmp158_ = vala_ccode_identifier_new (_tmp157_); _tmp159_ = _tmp158_; vala_ccode_function_call_add_argument (_tmp154_, (ValaCCodeExpression*) _tmp159_); _vala_ccode_node_unref0 (_tmp159_); _g_free0 (_tmp157_); _tmp160_ = type_init_block; _tmp161_ = override_call; _tmp162_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp161_); _tmp163_ = _tmp162_; vala_ccode_block_add_statement (_tmp160_, (ValaCCodeNode*) _tmp163_); _vala_ccode_node_unref0 (_tmp163_); _vala_ccode_node_unref0 (override_call); } else { ValaMethod* _tmp164_; ValaMethod* _tmp165_; ValaMethod* _tmp166_; _tmp164_ = m; _tmp165_ = vala_method_get_base_interface_method (_tmp164_); _tmp166_ = _tmp165_; if (_tmp166_ != NULL) { ValaMethod* _tmp167_; ValaMethod* _tmp168_; ValaMethod* _tmp169_; ValaSymbol* _tmp170_; ValaSymbol* _tmp171_; gchar* _tmp172_ = NULL; gchar* _tmp173_; ValaMethod* _tmp174_; const gchar* _tmp175_; const gchar* _tmp176_; gchar* _tmp177_ = NULL; gchar* _tmp178_; ValaCCodeIdentifier* _tmp179_; ValaCCodeIdentifier* _tmp180_; ValaCCodeFunctionCall* _tmp181_; ValaCCodeFunctionCall* _tmp182_; ValaCCodeFunctionCall* override_call; ValaCCodeFunctionCall* _tmp183_; ValaCCodeIdentifier* _tmp184_; ValaCCodeIdentifier* _tmp185_; ValaCCodeFunctionCall* _tmp186_; ValaMethod* _tmp187_; gchar* _tmp188_ = NULL; gchar* _tmp189_; ValaCCodeIdentifier* _tmp190_; ValaCCodeIdentifier* _tmp191_; ValaCCodeBlock* _tmp192_; ValaCCodeFunctionCall* _tmp193_; ValaCCodeExpressionStatement* _tmp194_; ValaCCodeExpressionStatement* _tmp195_; _tmp167_ = m; _tmp168_ = vala_method_get_base_interface_method (_tmp167_); _tmp169_ = _tmp168_; _tmp170_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp169_); _tmp171_ = _tmp170_; _tmp172_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, _tmp171_); _tmp173_ = _tmp172_; _tmp174_ = m; _tmp175_ = vala_symbol_get_name ((ValaSymbol*) _tmp174_); _tmp176_ = _tmp175_; _tmp177_ = g_strdup_printf ("%soverride_%s", _tmp173_, _tmp176_); _tmp178_ = _tmp177_; _tmp179_ = vala_ccode_identifier_new (_tmp178_); _tmp180_ = _tmp179_; _tmp181_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp180_); _tmp182_ = _tmp181_; _vala_ccode_node_unref0 (_tmp180_); _g_free0 (_tmp178_); _g_free0 (_tmp173_); override_call = _tmp182_; _tmp183_ = override_call; _tmp184_ = vala_ccode_identifier_new ("type"); _tmp185_ = _tmp184_; vala_ccode_function_call_add_argument (_tmp183_, (ValaCCodeExpression*) _tmp185_); _vala_ccode_node_unref0 (_tmp185_); _tmp186_ = override_call; _tmp187_ = m; _tmp188_ = vala_dova_base_module_get_ccode_real_name ((ValaDovaBaseModule*) self, _tmp187_); _tmp189_ = _tmp188_; _tmp190_ = vala_ccode_identifier_new (_tmp189_); _tmp191_ = _tmp190_; vala_ccode_function_call_add_argument (_tmp186_, (ValaCCodeExpression*) _tmp191_); _vala_ccode_node_unref0 (_tmp191_); _g_free0 (_tmp189_); _tmp192_ = type_init_block; _tmp193_ = override_call; _tmp194_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp193_); _tmp195_ = _tmp194_; vala_ccode_block_add_statement (_tmp192_, (ValaCCodeNode*) _tmp195_); _vala_ccode_node_unref0 (_tmp195_); _vala_ccode_node_unref0 (override_call); } } _vala_code_node_unref0 (m); } _vala_iterable_unref0 (_m_list); } { ValaClass* _tmp196_; ValaList* _tmp197_ = NULL; ValaList* _prop_list; ValaList* _tmp198_; gint _tmp199_; gint _tmp200_; gint _prop_size; gint _prop_index; _tmp196_ = cl; _tmp197_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp196_); _prop_list = _tmp197_; _tmp198_ = _prop_list; _tmp199_ = vala_collection_get_size ((ValaCollection*) _tmp198_); _tmp200_ = _tmp199_; _prop_size = _tmp200_; _prop_index = -1; while (TRUE) { gint _tmp201_; gint _tmp202_; gint _tmp203_; ValaList* _tmp204_; gint _tmp205_; gpointer _tmp206_ = NULL; ValaProperty* prop; gboolean _tmp207_ = FALSE; ValaProperty* _tmp208_; gboolean _tmp209_; gboolean _tmp210_; gboolean _tmp214_; _tmp201_ = _prop_index; _prop_index = _tmp201_ + 1; _tmp202_ = _prop_index; _tmp203_ = _prop_size; if (!(_tmp202_ < _tmp203_)) { break; } _tmp204_ = _prop_list; _tmp205_ = _prop_index; _tmp206_ = vala_list_get (_tmp204_, _tmp205_); prop = (ValaProperty*) _tmp206_; _tmp208_ = prop; _tmp209_ = vala_property_get_is_virtual (_tmp208_); _tmp210_ = _tmp209_; if (_tmp210_) { _tmp207_ = TRUE; } else { ValaProperty* _tmp211_; gboolean _tmp212_; gboolean _tmp213_; _tmp211_ = prop; _tmp212_ = vala_property_get_overrides (_tmp211_); _tmp213_ = _tmp212_; _tmp207_ = _tmp213_; } _tmp214_ = _tmp207_; if (_tmp214_) { ValaProperty* _tmp215_; ValaPropertyAccessor* _tmp216_; ValaPropertyAccessor* _tmp217_; ValaProperty* _tmp249_; ValaPropertyAccessor* _tmp250_; ValaPropertyAccessor* _tmp251_; _tmp215_ = prop; _tmp216_ = vala_property_get_get_accessor (_tmp215_); _tmp217_ = _tmp216_; if (_tmp217_ != NULL) { ValaProperty* _tmp218_; ValaProperty* _tmp219_; ValaProperty* _tmp220_; ValaSymbol* _tmp221_; ValaSymbol* _tmp222_; gchar* _tmp223_ = NULL; gchar* _tmp224_; ValaProperty* _tmp225_; const gchar* _tmp226_; const gchar* _tmp227_; gchar* _tmp228_ = NULL; gchar* _tmp229_; ValaCCodeIdentifier* _tmp230_; ValaCCodeIdentifier* _tmp231_; ValaCCodeFunctionCall* _tmp232_; ValaCCodeFunctionCall* _tmp233_; ValaCCodeFunctionCall* override_call; ValaCCodeFunctionCall* _tmp234_; ValaCCodeIdentifier* _tmp235_; ValaCCodeIdentifier* _tmp236_; ValaCCodeFunctionCall* _tmp237_; ValaProperty* _tmp238_; ValaPropertyAccessor* _tmp239_; ValaPropertyAccessor* _tmp240_; gchar* _tmp241_ = NULL; gchar* _tmp242_; ValaCCodeIdentifier* _tmp243_; ValaCCodeIdentifier* _tmp244_; ValaCCodeBlock* _tmp245_; ValaCCodeFunctionCall* _tmp246_; ValaCCodeExpressionStatement* _tmp247_; ValaCCodeExpressionStatement* _tmp248_; _tmp218_ = prop; _tmp219_ = vala_property_get_base_property (_tmp218_); _tmp220_ = _tmp219_; _tmp221_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp220_); _tmp222_ = _tmp221_; _tmp223_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, _tmp222_); _tmp224_ = _tmp223_; _tmp225_ = prop; _tmp226_ = vala_symbol_get_name ((ValaSymbol*) _tmp225_); _tmp227_ = _tmp226_; _tmp228_ = g_strdup_printf ("%soverride_get_%s", _tmp224_, _tmp227_); _tmp229_ = _tmp228_; _tmp230_ = vala_ccode_identifier_new (_tmp229_); _tmp231_ = _tmp230_; _tmp232_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp231_); _tmp233_ = _tmp232_; _vala_ccode_node_unref0 (_tmp231_); _g_free0 (_tmp229_); _g_free0 (_tmp224_); override_call = _tmp233_; _tmp234_ = override_call; _tmp235_ = vala_ccode_identifier_new ("type"); _tmp236_ = _tmp235_; vala_ccode_function_call_add_argument (_tmp234_, (ValaCCodeExpression*) _tmp236_); _vala_ccode_node_unref0 (_tmp236_); _tmp237_ = override_call; _tmp238_ = prop; _tmp239_ = vala_property_get_get_accessor (_tmp238_); _tmp240_ = _tmp239_; _tmp241_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp240_); _tmp242_ = _tmp241_; _tmp243_ = vala_ccode_identifier_new (_tmp242_); _tmp244_ = _tmp243_; vala_ccode_function_call_add_argument (_tmp237_, (ValaCCodeExpression*) _tmp244_); _vala_ccode_node_unref0 (_tmp244_); _g_free0 (_tmp242_); _tmp245_ = type_init_block; _tmp246_ = override_call; _tmp247_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp246_); _tmp248_ = _tmp247_; vala_ccode_block_add_statement (_tmp245_, (ValaCCodeNode*) _tmp248_); _vala_ccode_node_unref0 (_tmp248_); _vala_ccode_node_unref0 (override_call); } _tmp249_ = prop; _tmp250_ = vala_property_get_set_accessor (_tmp249_); _tmp251_ = _tmp250_; if (_tmp251_ != NULL) { ValaProperty* _tmp252_; ValaProperty* _tmp253_; ValaProperty* _tmp254_; ValaSymbol* _tmp255_; ValaSymbol* _tmp256_; gchar* _tmp257_ = NULL; gchar* _tmp258_; ValaProperty* _tmp259_; const gchar* _tmp260_; const gchar* _tmp261_; gchar* _tmp262_ = NULL; gchar* _tmp263_; ValaCCodeIdentifier* _tmp264_; ValaCCodeIdentifier* _tmp265_; ValaCCodeFunctionCall* _tmp266_; ValaCCodeFunctionCall* _tmp267_; ValaCCodeFunctionCall* override_call; ValaCCodeFunctionCall* _tmp268_; ValaCCodeIdentifier* _tmp269_; ValaCCodeIdentifier* _tmp270_; ValaCCodeFunctionCall* _tmp271_; ValaProperty* _tmp272_; ValaPropertyAccessor* _tmp273_; ValaPropertyAccessor* _tmp274_; gchar* _tmp275_ = NULL; gchar* _tmp276_; ValaCCodeIdentifier* _tmp277_; ValaCCodeIdentifier* _tmp278_; ValaCCodeBlock* _tmp279_; ValaCCodeFunctionCall* _tmp280_; ValaCCodeExpressionStatement* _tmp281_; ValaCCodeExpressionStatement* _tmp282_; _tmp252_ = prop; _tmp253_ = vala_property_get_base_property (_tmp252_); _tmp254_ = _tmp253_; _tmp255_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp254_); _tmp256_ = _tmp255_; _tmp257_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, _tmp256_); _tmp258_ = _tmp257_; _tmp259_ = prop; _tmp260_ = vala_symbol_get_name ((ValaSymbol*) _tmp259_); _tmp261_ = _tmp260_; _tmp262_ = g_strdup_printf ("%soverride_set_%s", _tmp258_, _tmp261_); _tmp263_ = _tmp262_; _tmp264_ = vala_ccode_identifier_new (_tmp263_); _tmp265_ = _tmp264_; _tmp266_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp265_); _tmp267_ = _tmp266_; _vala_ccode_node_unref0 (_tmp265_); _g_free0 (_tmp263_); _g_free0 (_tmp258_); override_call = _tmp267_; _tmp268_ = override_call; _tmp269_ = vala_ccode_identifier_new ("type"); _tmp270_ = _tmp269_; vala_ccode_function_call_add_argument (_tmp268_, (ValaCCodeExpression*) _tmp270_); _vala_ccode_node_unref0 (_tmp270_); _tmp271_ = override_call; _tmp272_ = prop; _tmp273_ = vala_property_get_set_accessor (_tmp272_); _tmp274_ = _tmp273_; _tmp275_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp274_); _tmp276_ = _tmp275_; _tmp277_ = vala_ccode_identifier_new (_tmp276_); _tmp278_ = _tmp277_; vala_ccode_function_call_add_argument (_tmp271_, (ValaCCodeExpression*) _tmp278_); _vala_ccode_node_unref0 (_tmp278_); _g_free0 (_tmp276_); _tmp279_ = type_init_block; _tmp280_ = override_call; _tmp281_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp280_); _tmp282_ = _tmp281_; vala_ccode_block_add_statement (_tmp279_, (ValaCCodeNode*) _tmp282_); _vala_ccode_node_unref0 (_tmp282_); _vala_ccode_node_unref0 (override_call); } } _vala_code_node_unref0 (prop); } _vala_iterable_unref0 (_prop_list); } _tmp283_ = cl; _tmp284_ = ((ValaDovaBaseModule*) self)->type_class; if (_tmp283_ == _tmp284_) { ValaCCodeIdentifier* _tmp285_; ValaCCodeIdentifier* _tmp286_; ValaCCodeFunctionCall* _tmp287_; ValaCCodeFunctionCall* _tmp288_; ValaCCodeFunctionCall* priv_call; ValaCCodeFunctionCall* _tmp289_; ValaCCodeIdentifier* _tmp290_; ValaCCodeIdentifier* _tmp291_; ValaCCodeFunction* _tmp292_; ValaCCodeFunction* value_copy_function; ValaCCodeFunction* _tmp293_; ValaCCodeParameter* _tmp294_; ValaCCodeParameter* _tmp295_; ValaCCodeFunction* _tmp296_; ValaCCodeParameter* _tmp297_; ValaCCodeParameter* _tmp298_; ValaCCodeFunction* _tmp299_; ValaCCodeParameter* _tmp300_; ValaCCodeParameter* _tmp301_; ValaCCodeFunction* _tmp302_; ValaCCodeParameter* _tmp303_; ValaCCodeParameter* _tmp304_; ValaCCodeFunction* _tmp305_; ValaCCodeParameter* _tmp306_; ValaCCodeParameter* _tmp307_; ValaCCodeFunction* _tmp308_; ValaCCodeBlock* _tmp309_; ValaCCodeBlock* _tmp310_; ValaCCodeFunctionCall* _tmp311_; ValaCCodeMemberAccess* _tmp312_; ValaCCodeMemberAccess* _tmp313_; ValaCCodeFunctionCall* _tmp314_; ValaCCodeFunctionCall* _tmp315_; ValaCCodeFunctionCall* ccall; ValaCCodeFunctionCall* _tmp316_; ValaCCodeIdentifier* _tmp317_; ValaCCodeIdentifier* _tmp318_; ValaCCodeFunctionCall* _tmp319_; ValaCCodeIdentifier* _tmp320_; ValaCCodeIdentifier* _tmp321_; ValaCCodeFunctionCall* _tmp322_; ValaCCodeIdentifier* _tmp323_; ValaCCodeIdentifier* _tmp324_; ValaCCodeFunctionCall* _tmp325_; ValaCCodeIdentifier* _tmp326_; ValaCCodeIdentifier* _tmp327_; ValaCCodeFunction* _tmp328_; ValaCCodeBlock* _tmp329_; ValaCCodeBlock* _tmp330_; ValaCCodeFunctionCall* _tmp331_; ValaCCodeExpressionStatement* _tmp332_; ValaCCodeExpressionStatement* _tmp333_; ValaCCodeFile* _tmp334_; ValaCCodeFunction* _tmp335_; ValaCCodeFile* _tmp336_; ValaCCodeFile* _tmp337_; ValaCCodeFile* _tmp338_; ValaCCodeFunction* _tmp339_ = NULL; ValaCCodeFunction* _tmp340_; ValaCCodeFunction* _tmp341_; ValaCCodeFunction* value_equals_function; ValaCCodeFunction* _tmp342_; ValaCCodeParameter* _tmp343_; ValaCCodeParameter* _tmp344_; ValaCCodeFunction* _tmp345_; ValaCCodeParameter* _tmp346_; ValaCCodeParameter* _tmp347_; ValaCCodeFunction* _tmp348_; ValaCCodeParameter* _tmp349_; ValaCCodeParameter* _tmp350_; ValaCCodeFunction* _tmp351_; ValaCCodeParameter* _tmp352_; ValaCCodeParameter* _tmp353_; ValaCCodeFunction* _tmp354_; ValaCCodeParameter* _tmp355_; ValaCCodeParameter* _tmp356_; ValaCCodeFunction* _tmp357_; ValaCCodeBlock* _tmp358_; ValaCCodeBlock* _tmp359_; ValaCCodeFunctionCall* _tmp360_; ValaCCodeMemberAccess* _tmp361_; ValaCCodeMemberAccess* _tmp362_; ValaCCodeFunctionCall* _tmp363_; ValaCCodeFunctionCall* _tmp364_; ValaCCodeIdentifier* _tmp365_; ValaCCodeIdentifier* _tmp366_; ValaCCodeFunctionCall* _tmp367_; ValaCCodeIdentifier* _tmp368_; ValaCCodeIdentifier* _tmp369_; ValaCCodeFunctionCall* _tmp370_; ValaCCodeIdentifier* _tmp371_; ValaCCodeIdentifier* _tmp372_; ValaCCodeFunctionCall* _tmp373_; ValaCCodeIdentifier* _tmp374_; ValaCCodeIdentifier* _tmp375_; ValaCCodeFunction* _tmp376_; ValaCCodeBlock* _tmp377_; ValaCCodeBlock* _tmp378_; ValaCCodeFunctionCall* _tmp379_; ValaCCodeReturnStatement* _tmp380_; ValaCCodeReturnStatement* _tmp381_; ValaCCodeFile* _tmp382_; ValaCCodeFunction* _tmp383_; ValaCCodeFile* _tmp384_; ValaCCodeFile* _tmp385_; ValaCCodeFile* _tmp386_; ValaCCodeFunction* _tmp387_ = NULL; ValaCCodeFunction* _tmp388_; ValaCCodeFunction* _tmp389_; ValaCCodeFunction* value_hash_function; ValaCCodeFunction* _tmp390_; ValaCCodeParameter* _tmp391_; ValaCCodeParameter* _tmp392_; ValaCCodeFunction* _tmp393_; ValaCCodeParameter* _tmp394_; ValaCCodeParameter* _tmp395_; ValaCCodeFunction* _tmp396_; ValaCCodeParameter* _tmp397_; ValaCCodeParameter* _tmp398_; ValaCCodeFunction* _tmp399_; ValaCCodeBlock* _tmp400_; ValaCCodeBlock* _tmp401_; ValaCCodeFunctionCall* _tmp402_; ValaCCodeMemberAccess* _tmp403_; ValaCCodeMemberAccess* _tmp404_; ValaCCodeFunctionCall* _tmp405_; ValaCCodeFunctionCall* _tmp406_; ValaCCodeIdentifier* _tmp407_; ValaCCodeIdentifier* _tmp408_; ValaCCodeFunctionCall* _tmp409_; ValaCCodeIdentifier* _tmp410_; ValaCCodeIdentifier* _tmp411_; ValaCCodeFunction* _tmp412_; ValaCCodeBlock* _tmp413_; ValaCCodeBlock* _tmp414_; ValaCCodeFunctionCall* _tmp415_; ValaCCodeReturnStatement* _tmp416_; ValaCCodeReturnStatement* _tmp417_; ValaCCodeFile* _tmp418_; ValaCCodeFunction* _tmp419_; ValaCCodeFile* _tmp420_; ValaCCodeFile* _tmp421_; ValaCCodeFile* _tmp422_; ValaCCodeFunction* _tmp423_ = NULL; ValaCCodeFunction* _tmp424_; ValaCCodeFunction* _tmp425_; ValaCCodeFunction* value_to_any_function; ValaCCodeFunction* _tmp426_; ValaCCodeParameter* _tmp427_; ValaCCodeParameter* _tmp428_; ValaCCodeFunction* _tmp429_; ValaCCodeParameter* _tmp430_; ValaCCodeParameter* _tmp431_; ValaCCodeFunction* _tmp432_; ValaCCodeParameter* _tmp433_; ValaCCodeParameter* _tmp434_; ValaCCodeFunction* _tmp435_; ValaCCodeBlock* _tmp436_; ValaCCodeBlock* _tmp437_; ValaCCodeFunctionCall* _tmp438_; ValaCCodeMemberAccess* _tmp439_; ValaCCodeMemberAccess* _tmp440_; ValaCCodeFunctionCall* _tmp441_; ValaCCodeFunctionCall* _tmp442_; ValaCCodeIdentifier* _tmp443_; ValaCCodeIdentifier* _tmp444_; ValaCCodeFunctionCall* _tmp445_; ValaCCodeIdentifier* _tmp446_; ValaCCodeIdentifier* _tmp447_; ValaCCodeFunction* _tmp448_; ValaCCodeBlock* _tmp449_; ValaCCodeBlock* _tmp450_; ValaCCodeFunctionCall* _tmp451_; ValaCCodeReturnStatement* _tmp452_; ValaCCodeReturnStatement* _tmp453_; ValaCCodeFile* _tmp454_; ValaCCodeFunction* _tmp455_; ValaCCodeFile* _tmp456_; ValaCCodeFile* _tmp457_; ValaCCodeFile* _tmp458_; ValaCCodeFunction* _tmp459_ = NULL; ValaCCodeFunction* _tmp460_; ValaCCodeFunction* _tmp461_; ValaCCodeFunction* value_from_any_function; ValaCCodeFunction* _tmp462_; ValaCCodeParameter* _tmp463_; ValaCCodeParameter* _tmp464_; ValaCCodeFunction* _tmp465_; ValaCCodeParameter* _tmp466_; ValaCCodeParameter* _tmp467_; ValaCCodeFunction* _tmp468_; ValaCCodeParameter* _tmp469_; ValaCCodeParameter* _tmp470_; ValaCCodeFunction* _tmp471_; ValaCCodeParameter* _tmp472_; ValaCCodeParameter* _tmp473_; ValaCCodeFunction* _tmp474_; ValaCCodeBlock* _tmp475_; ValaCCodeBlock* _tmp476_; ValaCCodeFunctionCall* _tmp477_; ValaCCodeMemberAccess* _tmp478_; ValaCCodeMemberAccess* _tmp479_; ValaCCodeFunctionCall* _tmp480_; ValaCCodeFunctionCall* _tmp481_; ValaCCodeIdentifier* _tmp482_; ValaCCodeIdentifier* _tmp483_; ValaCCodeFunctionCall* _tmp484_; ValaCCodeIdentifier* _tmp485_; ValaCCodeIdentifier* _tmp486_; ValaCCodeFunctionCall* _tmp487_; ValaCCodeIdentifier* _tmp488_; ValaCCodeIdentifier* _tmp489_; ValaCCodeFunction* _tmp490_; ValaCCodeBlock* _tmp491_; ValaCCodeBlock* _tmp492_; ValaCCodeFunctionCall* _tmp493_; ValaCCodeReturnStatement* _tmp494_; ValaCCodeReturnStatement* _tmp495_; ValaCCodeFile* _tmp496_; ValaCCodeFunction* _tmp497_; ValaCCodeFile* _tmp498_; ValaCCodeFile* _tmp499_; ValaCCodeFile* _tmp500_; ValaCCodeFunction* _tmp501_ = NULL; ValaCCodeFunction* _tmp502_; _tmp285_ = vala_ccode_identifier_new ("DOVA_TYPE_GET_PRIVATE"); _tmp286_ = _tmp285_; _tmp287_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp286_); _tmp288_ = _tmp287_; _vala_ccode_node_unref0 (_tmp286_); priv_call = _tmp288_; _tmp289_ = priv_call; _tmp290_ = vala_ccode_identifier_new ("type"); _tmp291_ = _tmp290_; vala_ccode_function_call_add_argument (_tmp289_, (ValaCCodeExpression*) _tmp291_); _vala_ccode_node_unref0 (_tmp291_); _tmp292_ = vala_ccode_function_new ("dova_type_value_copy", "void"); value_copy_function = _tmp292_; _tmp293_ = value_copy_function; _tmp294_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp295_ = _tmp294_; vala_ccode_function_add_parameter (_tmp293_, _tmp295_); _vala_ccode_node_unref0 (_tmp295_); _tmp296_ = value_copy_function; _tmp297_ = vala_ccode_parameter_new ("dest", "void *"); _tmp298_ = _tmp297_; vala_ccode_function_add_parameter (_tmp296_, _tmp298_); _vala_ccode_node_unref0 (_tmp298_); _tmp299_ = value_copy_function; _tmp300_ = vala_ccode_parameter_new ("dest_index", "intptr_t"); _tmp301_ = _tmp300_; vala_ccode_function_add_parameter (_tmp299_, _tmp301_); _vala_ccode_node_unref0 (_tmp301_); _tmp302_ = value_copy_function; _tmp303_ = vala_ccode_parameter_new ("src", "void *"); _tmp304_ = _tmp303_; vala_ccode_function_add_parameter (_tmp302_, _tmp304_); _vala_ccode_node_unref0 (_tmp304_); _tmp305_ = value_copy_function; _tmp306_ = vala_ccode_parameter_new ("src_index", "intptr_t"); _tmp307_ = _tmp306_; vala_ccode_function_add_parameter (_tmp305_, _tmp307_); _vala_ccode_node_unref0 (_tmp307_); _tmp308_ = value_copy_function; _tmp309_ = vala_ccode_block_new (); _tmp310_ = _tmp309_; vala_ccode_function_set_block (_tmp308_, _tmp310_); _vala_ccode_node_unref0 (_tmp310_); _tmp311_ = priv_call; _tmp312_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp311_, "value_copy"); _tmp313_ = _tmp312_; _tmp314_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp313_); _tmp315_ = _tmp314_; _vala_ccode_node_unref0 (_tmp313_); ccall = _tmp315_; _tmp316_ = ccall; _tmp317_ = vala_ccode_identifier_new ("dest"); _tmp318_ = _tmp317_; vala_ccode_function_call_add_argument (_tmp316_, (ValaCCodeExpression*) _tmp318_); _vala_ccode_node_unref0 (_tmp318_); _tmp319_ = ccall; _tmp320_ = vala_ccode_identifier_new ("dest_index"); _tmp321_ = _tmp320_; vala_ccode_function_call_add_argument (_tmp319_, (ValaCCodeExpression*) _tmp321_); _vala_ccode_node_unref0 (_tmp321_); _tmp322_ = ccall; _tmp323_ = vala_ccode_identifier_new ("src"); _tmp324_ = _tmp323_; vala_ccode_function_call_add_argument (_tmp322_, (ValaCCodeExpression*) _tmp324_); _vala_ccode_node_unref0 (_tmp324_); _tmp325_ = ccall; _tmp326_ = vala_ccode_identifier_new ("src_index"); _tmp327_ = _tmp326_; vala_ccode_function_call_add_argument (_tmp325_, (ValaCCodeExpression*) _tmp327_); _vala_ccode_node_unref0 (_tmp327_); _tmp328_ = value_copy_function; _tmp329_ = vala_ccode_function_get_block (_tmp328_); _tmp330_ = _tmp329_; _tmp331_ = ccall; _tmp332_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp331_); _tmp333_ = _tmp332_; vala_ccode_block_add_statement (_tmp330_, (ValaCCodeNode*) _tmp333_); _vala_ccode_node_unref0 (_tmp333_); _tmp334_ = ((ValaDovaBaseModule*) self)->cfile; _tmp335_ = value_copy_function; vala_ccode_file_add_function (_tmp334_, _tmp335_); _tmp336_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_declare_set_value_copy_function (self, _tmp336_); _tmp337_ = ((ValaDovaBaseModule*) self)->header_file; vala_dova_object_module_declare_set_value_copy_function (self, _tmp337_); _tmp338_ = ((ValaDovaBaseModule*) self)->cfile; _tmp339_ = vala_dova_object_module_create_set_value_copy_function (self, FALSE); _tmp340_ = _tmp339_; vala_ccode_file_add_function (_tmp338_, _tmp340_); _vala_ccode_node_unref0 (_tmp340_); _tmp341_ = vala_ccode_function_new ("dova_type_value_equals", "bool"); value_equals_function = _tmp341_; _tmp342_ = value_equals_function; _tmp343_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp344_ = _tmp343_; vala_ccode_function_add_parameter (_tmp342_, _tmp344_); _vala_ccode_node_unref0 (_tmp344_); _tmp345_ = value_equals_function; _tmp346_ = vala_ccode_parameter_new ("value", "void *"); _tmp347_ = _tmp346_; vala_ccode_function_add_parameter (_tmp345_, _tmp347_); _vala_ccode_node_unref0 (_tmp347_); _tmp348_ = value_equals_function; _tmp349_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp350_ = _tmp349_; vala_ccode_function_add_parameter (_tmp348_, _tmp350_); _vala_ccode_node_unref0 (_tmp350_); _tmp351_ = value_equals_function; _tmp352_ = vala_ccode_parameter_new ("other", "void *"); _tmp353_ = _tmp352_; vala_ccode_function_add_parameter (_tmp351_, _tmp353_); _vala_ccode_node_unref0 (_tmp353_); _tmp354_ = value_equals_function; _tmp355_ = vala_ccode_parameter_new ("other_index", "intptr_t"); _tmp356_ = _tmp355_; vala_ccode_function_add_parameter (_tmp354_, _tmp356_); _vala_ccode_node_unref0 (_tmp356_); _tmp357_ = value_equals_function; _tmp358_ = vala_ccode_block_new (); _tmp359_ = _tmp358_; vala_ccode_function_set_block (_tmp357_, _tmp359_); _vala_ccode_node_unref0 (_tmp359_); _tmp360_ = priv_call; _tmp361_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp360_, "value_equals"); _tmp362_ = _tmp361_; _tmp363_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp362_); _vala_ccode_node_unref0 (ccall); ccall = _tmp363_; _vala_ccode_node_unref0 (_tmp362_); _tmp364_ = ccall; _tmp365_ = vala_ccode_identifier_new ("value"); _tmp366_ = _tmp365_; vala_ccode_function_call_add_argument (_tmp364_, (ValaCCodeExpression*) _tmp366_); _vala_ccode_node_unref0 (_tmp366_); _tmp367_ = ccall; _tmp368_ = vala_ccode_identifier_new ("value_index"); _tmp369_ = _tmp368_; vala_ccode_function_call_add_argument (_tmp367_, (ValaCCodeExpression*) _tmp369_); _vala_ccode_node_unref0 (_tmp369_); _tmp370_ = ccall; _tmp371_ = vala_ccode_identifier_new ("other"); _tmp372_ = _tmp371_; vala_ccode_function_call_add_argument (_tmp370_, (ValaCCodeExpression*) _tmp372_); _vala_ccode_node_unref0 (_tmp372_); _tmp373_ = ccall; _tmp374_ = vala_ccode_identifier_new ("other_index"); _tmp375_ = _tmp374_; vala_ccode_function_call_add_argument (_tmp373_, (ValaCCodeExpression*) _tmp375_); _vala_ccode_node_unref0 (_tmp375_); _tmp376_ = value_equals_function; _tmp377_ = vala_ccode_function_get_block (_tmp376_); _tmp378_ = _tmp377_; _tmp379_ = ccall; _tmp380_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp379_); _tmp381_ = _tmp380_; vala_ccode_block_add_statement (_tmp378_, (ValaCCodeNode*) _tmp381_); _vala_ccode_node_unref0 (_tmp381_); _tmp382_ = ((ValaDovaBaseModule*) self)->cfile; _tmp383_ = value_equals_function; vala_ccode_file_add_function (_tmp382_, _tmp383_); _tmp384_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_declare_set_value_equals_function (self, _tmp384_); _tmp385_ = ((ValaDovaBaseModule*) self)->header_file; vala_dova_object_module_declare_set_value_equals_function (self, _tmp385_); _tmp386_ = ((ValaDovaBaseModule*) self)->cfile; _tmp387_ = vala_dova_object_module_create_set_value_equals_function (self, FALSE); _tmp388_ = _tmp387_; vala_ccode_file_add_function (_tmp386_, _tmp388_); _vala_ccode_node_unref0 (_tmp388_); _tmp389_ = vala_ccode_function_new ("dova_type_value_hash", "uintptr_t"); value_hash_function = _tmp389_; _tmp390_ = value_hash_function; _tmp391_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp392_ = _tmp391_; vala_ccode_function_add_parameter (_tmp390_, _tmp392_); _vala_ccode_node_unref0 (_tmp392_); _tmp393_ = value_hash_function; _tmp394_ = vala_ccode_parameter_new ("value", "void *"); _tmp395_ = _tmp394_; vala_ccode_function_add_parameter (_tmp393_, _tmp395_); _vala_ccode_node_unref0 (_tmp395_); _tmp396_ = value_hash_function; _tmp397_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp398_ = _tmp397_; vala_ccode_function_add_parameter (_tmp396_, _tmp398_); _vala_ccode_node_unref0 (_tmp398_); _tmp399_ = value_hash_function; _tmp400_ = vala_ccode_block_new (); _tmp401_ = _tmp400_; vala_ccode_function_set_block (_tmp399_, _tmp401_); _vala_ccode_node_unref0 (_tmp401_); _tmp402_ = priv_call; _tmp403_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp402_, "value_hash"); _tmp404_ = _tmp403_; _tmp405_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp404_); _vala_ccode_node_unref0 (ccall); ccall = _tmp405_; _vala_ccode_node_unref0 (_tmp404_); _tmp406_ = ccall; _tmp407_ = vala_ccode_identifier_new ("value"); _tmp408_ = _tmp407_; vala_ccode_function_call_add_argument (_tmp406_, (ValaCCodeExpression*) _tmp408_); _vala_ccode_node_unref0 (_tmp408_); _tmp409_ = ccall; _tmp410_ = vala_ccode_identifier_new ("value_index"); _tmp411_ = _tmp410_; vala_ccode_function_call_add_argument (_tmp409_, (ValaCCodeExpression*) _tmp411_); _vala_ccode_node_unref0 (_tmp411_); _tmp412_ = value_hash_function; _tmp413_ = vala_ccode_function_get_block (_tmp412_); _tmp414_ = _tmp413_; _tmp415_ = ccall; _tmp416_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp415_); _tmp417_ = _tmp416_; vala_ccode_block_add_statement (_tmp414_, (ValaCCodeNode*) _tmp417_); _vala_ccode_node_unref0 (_tmp417_); _tmp418_ = ((ValaDovaBaseModule*) self)->cfile; _tmp419_ = value_hash_function; vala_ccode_file_add_function (_tmp418_, _tmp419_); _tmp420_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_declare_set_value_hash_function (self, _tmp420_); _tmp421_ = ((ValaDovaBaseModule*) self)->header_file; vala_dova_object_module_declare_set_value_hash_function (self, _tmp421_); _tmp422_ = ((ValaDovaBaseModule*) self)->cfile; _tmp423_ = vala_dova_object_module_create_set_value_hash_function (self, FALSE); _tmp424_ = _tmp423_; vala_ccode_file_add_function (_tmp422_, _tmp424_); _vala_ccode_node_unref0 (_tmp424_); _tmp425_ = vala_ccode_function_new ("dova_type_value_to_any", "DovaObject *"); value_to_any_function = _tmp425_; _tmp426_ = value_to_any_function; _tmp427_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp428_ = _tmp427_; vala_ccode_function_add_parameter (_tmp426_, _tmp428_); _vala_ccode_node_unref0 (_tmp428_); _tmp429_ = value_to_any_function; _tmp430_ = vala_ccode_parameter_new ("value", "void *"); _tmp431_ = _tmp430_; vala_ccode_function_add_parameter (_tmp429_, _tmp431_); _vala_ccode_node_unref0 (_tmp431_); _tmp432_ = value_to_any_function; _tmp433_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp434_ = _tmp433_; vala_ccode_function_add_parameter (_tmp432_, _tmp434_); _vala_ccode_node_unref0 (_tmp434_); _tmp435_ = value_to_any_function; _tmp436_ = vala_ccode_block_new (); _tmp437_ = _tmp436_; vala_ccode_function_set_block (_tmp435_, _tmp437_); _vala_ccode_node_unref0 (_tmp437_); _tmp438_ = priv_call; _tmp439_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp438_, "value_to_any"); _tmp440_ = _tmp439_; _tmp441_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp440_); _vala_ccode_node_unref0 (ccall); ccall = _tmp441_; _vala_ccode_node_unref0 (_tmp440_); _tmp442_ = ccall; _tmp443_ = vala_ccode_identifier_new ("value"); _tmp444_ = _tmp443_; vala_ccode_function_call_add_argument (_tmp442_, (ValaCCodeExpression*) _tmp444_); _vala_ccode_node_unref0 (_tmp444_); _tmp445_ = ccall; _tmp446_ = vala_ccode_identifier_new ("value_index"); _tmp447_ = _tmp446_; vala_ccode_function_call_add_argument (_tmp445_, (ValaCCodeExpression*) _tmp447_); _vala_ccode_node_unref0 (_tmp447_); _tmp448_ = value_to_any_function; _tmp449_ = vala_ccode_function_get_block (_tmp448_); _tmp450_ = _tmp449_; _tmp451_ = ccall; _tmp452_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp451_); _tmp453_ = _tmp452_; vala_ccode_block_add_statement (_tmp450_, (ValaCCodeNode*) _tmp453_); _vala_ccode_node_unref0 (_tmp453_); _tmp454_ = ((ValaDovaBaseModule*) self)->cfile; _tmp455_ = value_to_any_function; vala_ccode_file_add_function (_tmp454_, _tmp455_); _tmp456_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_declare_set_value_to_any_function (self, _tmp456_); _tmp457_ = ((ValaDovaBaseModule*) self)->header_file; vala_dova_object_module_declare_set_value_to_any_function (self, _tmp457_); _tmp458_ = ((ValaDovaBaseModule*) self)->cfile; _tmp459_ = vala_dova_object_module_create_set_value_to_any_function (self, FALSE); _tmp460_ = _tmp459_; vala_ccode_file_add_function (_tmp458_, _tmp460_); _vala_ccode_node_unref0 (_tmp460_); _tmp461_ = vala_ccode_function_new ("dova_type_value_from_any", "void"); value_from_any_function = _tmp461_; _tmp462_ = value_from_any_function; _tmp463_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp464_ = _tmp463_; vala_ccode_function_add_parameter (_tmp462_, _tmp464_); _vala_ccode_node_unref0 (_tmp464_); _tmp465_ = value_from_any_function; _tmp466_ = vala_ccode_parameter_new ("any_", "any *"); _tmp467_ = _tmp466_; vala_ccode_function_add_parameter (_tmp465_, _tmp467_); _vala_ccode_node_unref0 (_tmp467_); _tmp468_ = value_from_any_function; _tmp469_ = vala_ccode_parameter_new ("value", "void *"); _tmp470_ = _tmp469_; vala_ccode_function_add_parameter (_tmp468_, _tmp470_); _vala_ccode_node_unref0 (_tmp470_); _tmp471_ = value_from_any_function; _tmp472_ = vala_ccode_parameter_new ("value_index", "intptr_t"); _tmp473_ = _tmp472_; vala_ccode_function_add_parameter (_tmp471_, _tmp473_); _vala_ccode_node_unref0 (_tmp473_); _tmp474_ = value_from_any_function; _tmp475_ = vala_ccode_block_new (); _tmp476_ = _tmp475_; vala_ccode_function_set_block (_tmp474_, _tmp476_); _vala_ccode_node_unref0 (_tmp476_); _tmp477_ = priv_call; _tmp478_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp477_, "value_from_any"); _tmp479_ = _tmp478_; _tmp480_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp479_); _vala_ccode_node_unref0 (ccall); ccall = _tmp480_; _vala_ccode_node_unref0 (_tmp479_); _tmp481_ = ccall; _tmp482_ = vala_ccode_identifier_new ("any_"); _tmp483_ = _tmp482_; vala_ccode_function_call_add_argument (_tmp481_, (ValaCCodeExpression*) _tmp483_); _vala_ccode_node_unref0 (_tmp483_); _tmp484_ = ccall; _tmp485_ = vala_ccode_identifier_new ("value"); _tmp486_ = _tmp485_; vala_ccode_function_call_add_argument (_tmp484_, (ValaCCodeExpression*) _tmp486_); _vala_ccode_node_unref0 (_tmp486_); _tmp487_ = ccall; _tmp488_ = vala_ccode_identifier_new ("value_index"); _tmp489_ = _tmp488_; vala_ccode_function_call_add_argument (_tmp487_, (ValaCCodeExpression*) _tmp489_); _vala_ccode_node_unref0 (_tmp489_); _tmp490_ = value_from_any_function; _tmp491_ = vala_ccode_function_get_block (_tmp490_); _tmp492_ = _tmp491_; _tmp493_ = ccall; _tmp494_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp493_); _tmp495_ = _tmp494_; vala_ccode_block_add_statement (_tmp492_, (ValaCCodeNode*) _tmp495_); _vala_ccode_node_unref0 (_tmp495_); _tmp496_ = ((ValaDovaBaseModule*) self)->cfile; _tmp497_ = value_from_any_function; vala_ccode_file_add_function (_tmp496_, _tmp497_); _tmp498_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_object_module_declare_set_value_from_any_function (self, _tmp498_); _tmp499_ = ((ValaDovaBaseModule*) self)->header_file; vala_dova_object_module_declare_set_value_from_any_function (self, _tmp499_); _tmp500_ = ((ValaDovaBaseModule*) self)->cfile; _tmp501_ = vala_dova_object_module_create_set_value_from_any_function (self, FALSE); _tmp502_ = _tmp501_; vala_ccode_file_add_function (_tmp500_, _tmp502_); _vala_ccode_node_unref0 (_tmp502_); _vala_ccode_node_unref0 (value_from_any_function); _vala_ccode_node_unref0 (value_to_any_function); _vala_ccode_node_unref0 (value_hash_function); _vala_ccode_node_unref0 (value_equals_function); _vala_ccode_node_unref0 (ccall); _vala_ccode_node_unref0 (value_copy_function); _vala_ccode_node_unref0 (priv_call); } vala_dova_base_module_pop_context ((ValaDovaBaseModule*) self); _vala_ccode_node_unref0 (type_init_block); } static void vala_dova_object_module_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface) { ValaDovaObjectModule * self; ValaInterface* _tmp0_; ValaDovaBaseModuleEmitContext* _tmp1_; ValaDovaBaseModuleEmitContext* _tmp2_; ValaInterface* _tmp3_; ValaCCodeFile* _tmp4_; ValaInterface* _tmp5_; gchar* _tmp6_ = NULL; gchar* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; ValaCCodeStruct* _tmp10_; ValaCCodeStruct* _tmp11_; ValaCCodeStruct* type_priv_struct; ValaCCodeStruct* _tmp50_; gboolean _tmp51_; gboolean _tmp52_; ValaCCodeDeclaration* _tmp70_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp71_; ValaInterface* _tmp72_; gchar* _tmp73_ = NULL; gchar* _tmp74_; gchar* _tmp75_ = NULL; gchar* _tmp76_; ValaCCodeConstant* _tmp77_; ValaCCodeConstant* _tmp78_; ValaCCodeVariableDeclarator* _tmp79_; ValaCCodeVariableDeclarator* _tmp80_; ValaCCodeDeclaration* _tmp81_; ValaCCodeFile* _tmp82_; ValaCCodeDeclaration* _tmp83_; ValaInterface* _tmp84_; gchar* _tmp85_ = NULL; gchar* _tmp86_; gchar* _tmp87_ = NULL; gchar* _tmp88_; ValaCCodeFunction* _tmp89_; ValaCCodeFunction* _tmp90_; ValaCCodeFunction* type_fun; ValaInterface* _tmp91_; gboolean _tmp92_ = FALSE; ValaCCodeFunction* _tmp115_; ValaCCodeBlock* _tmp116_; ValaCCodeBlock* _tmp117_; ValaCCodeBlock* _tmp118_; ValaCCodeBlock* type_init_block; ValaCCodeIdentifier* _tmp119_; ValaCCodeIdentifier* _tmp120_; ValaCCodeFunctionCall* _tmp121_; ValaCCodeFunctionCall* _tmp122_; ValaCCodeFunctionCall* calloc_call; ValaCCodeFunctionCall* _tmp123_; ValaCCodeConstant* _tmp124_; ValaCCodeConstant* _tmp125_; ValaCCodeStruct* _tmp126_; gboolean _tmp127_; gboolean _tmp128_; ValaCCodeBlock* _tmp140_; ValaInterface* _tmp141_; gchar* _tmp142_ = NULL; gchar* _tmp143_; gchar* _tmp144_ = NULL; gchar* _tmp145_; ValaCCodeIdentifier* _tmp146_; ValaCCodeIdentifier* _tmp147_; ValaCCodeFunctionCall* _tmp148_; ValaCCodeAssignment* _tmp149_; ValaCCodeAssignment* _tmp150_; ValaCCodeExpressionStatement* _tmp151_; ValaCCodeExpressionStatement* _tmp152_; ValaCCodeIdentifier* _tmp153_; ValaCCodeIdentifier* _tmp154_; ValaCCodeFunctionCall* _tmp155_; ValaCCodeFunctionCall* _tmp156_; ValaCCodeFunctionCall* any_type_init_call; ValaCCodeFunctionCall* _tmp157_; ValaInterface* _tmp158_; gchar* _tmp159_ = NULL; gchar* _tmp160_; gchar* _tmp161_ = NULL; gchar* _tmp162_; ValaCCodeIdentifier* _tmp163_; ValaCCodeIdentifier* _tmp164_; ValaCCodeBlock* _tmp165_; ValaCCodeFunctionCall* _tmp166_; ValaCCodeExpressionStatement* _tmp167_; ValaCCodeExpressionStatement* _tmp168_; ValaInterface* _tmp169_; gchar* _tmp170_ = NULL; gchar* _tmp171_; gchar* _tmp172_ = NULL; gchar* _tmp173_; ValaCCodeIdentifier* _tmp174_; ValaCCodeIdentifier* _tmp175_; ValaCCodeFunctionCall* _tmp176_; ValaCCodeFunctionCall* _tmp177_; ValaCCodeFunctionCall* type_init_call; ValaCCodeFunctionCall* _tmp178_; ValaInterface* _tmp179_; gchar* _tmp180_ = NULL; gchar* _tmp181_; gchar* _tmp182_ = NULL; gchar* _tmp183_; ValaCCodeIdentifier* _tmp184_; ValaCCodeIdentifier* _tmp185_; ValaCCodeBlock* _tmp207_; ValaCCodeFunctionCall* _tmp208_; ValaCCodeExpressionStatement* _tmp209_; ValaCCodeExpressionStatement* _tmp210_; ValaCCodeFunction* _tmp211_; ValaCCodeBlock* _tmp212_; ValaCCodeBlock* _tmp213_; ValaInterface* _tmp214_; gchar* _tmp215_ = NULL; gchar* _tmp216_; gchar* _tmp217_ = NULL; gchar* _tmp218_; ValaCCodeIdentifier* _tmp219_; ValaCCodeIdentifier* _tmp220_; ValaCCodeUnaryExpression* _tmp221_; ValaCCodeUnaryExpression* _tmp222_; ValaCCodeBlock* _tmp223_; ValaCCodeIfStatement* _tmp224_; ValaCCodeIfStatement* _tmp225_; ValaCCodeFunction* _tmp226_; ValaCCodeBlock* _tmp227_; ValaCCodeBlock* _tmp228_; ValaInterface* _tmp229_; gchar* _tmp230_ = NULL; gchar* _tmp231_; gchar* _tmp232_ = NULL; gchar* _tmp233_; ValaCCodeIdentifier* _tmp234_; ValaCCodeIdentifier* _tmp235_; ValaCCodeReturnStatement* _tmp236_; ValaCCodeReturnStatement* _tmp237_; ValaCCodeFile* _tmp238_; ValaCCodeFunction* _tmp239_; ValaInterface* _tmp240_; gchar* _tmp241_ = NULL; gchar* _tmp242_; gchar* _tmp243_ = NULL; gchar* _tmp244_; ValaCCodeFunction* _tmp245_; ValaCCodeFunction* _tmp246_; ValaCCodeFunction* type_init_fun; ValaInterface* _tmp247_; gboolean _tmp248_ = FALSE; ValaCCodeFunction* _tmp250_; ValaCCodeParameter* _tmp251_; ValaCCodeParameter* _tmp252_; ValaCCodeFunction* _tmp274_; ValaCCodeBlock* _tmp275_; ValaCCodeBlock* _tmp276_; ValaCCodeIdentifier* _tmp312_; ValaCCodeIdentifier* _tmp313_; ValaCCodeFunctionCall* _tmp314_; ValaCCodeFunctionCall* _tmp315_; ValaCCodeFunctionCall* vtable_alloc; ValaCCodeFunctionCall* _tmp316_; ValaCCodeConstant* _tmp317_; ValaCCodeConstant* _tmp318_; ValaCCodeFunctionCall* _tmp319_; ValaInterface* _tmp320_; gchar* _tmp321_ = NULL; gchar* _tmp322_; gchar* _tmp323_ = NULL; gchar* _tmp324_; ValaCCodeConstant* _tmp325_; ValaCCodeConstant* _tmp326_; ValaInterface* _tmp327_; gchar* _tmp328_ = NULL; gchar* _tmp329_; gchar* _tmp330_ = NULL; gchar* _tmp331_; ValaCCodeIdentifier* _tmp332_; ValaCCodeIdentifier* _tmp333_; ValaCCodeFunctionCall* _tmp334_; ValaCCodeFunctionCall* _tmp335_; ValaCCodeFunctionCall* type_get_call; ValaCCodeStruct* _tmp357_; gboolean _tmp358_; gboolean _tmp359_; ValaCCodeFile* _tmp377_; ValaCCodeFunction* _tmp378_; ValaInterface* _tmp379_; self = (ValaDovaObjectModule*) base; g_return_if_fail (iface != NULL); _tmp0_ = iface; _tmp1_ = vala_dova_base_module_emit_context_new ((ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; vala_dova_base_module_push_context ((ValaDovaBaseModule*) self, _tmp2_); _vala_dova_base_module_emit_context_unref0 (_tmp2_); _tmp3_ = iface; _tmp4_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_interface_declaration ((ValaDovaBaseModule*) self, _tmp3_, _tmp4_); _tmp5_ = iface; _tmp6_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp5_); _tmp7_ = _tmp6_; _tmp8_ = g_strdup_printf ("_%sTypePrivate", _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_struct_new (_tmp9_); _tmp11_ = _tmp10_; _g_free0 (_tmp9_); _g_free0 (_tmp7_); type_priv_struct = _tmp11_; { ValaInterface* _tmp12_; ValaList* _tmp13_ = NULL; ValaList* _type_param_list; ValaList* _tmp14_; gint _tmp15_; gint _tmp16_; gint _type_param_size; gint _type_param_index; _tmp12_ = iface; _tmp13_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp12_); _type_param_list = _tmp13_; _tmp14_ = _type_param_list; _tmp15_ = vala_collection_get_size ((ValaCollection*) _tmp14_); _tmp16_ = _tmp15_; _type_param_size = _tmp16_; _type_param_index = -1; while (TRUE) { gint _tmp17_; gint _tmp18_; gint _tmp19_; ValaList* _tmp20_; gint _tmp21_; gpointer _tmp22_ = NULL; ValaTypeParameter* type_param; ValaCCodeDeclaration* _tmp23_; ValaCCodeDeclaration* type_param_decl; ValaCCodeDeclaration* _tmp24_; ValaTypeParameter* _tmp25_; const gchar* _tmp26_; const gchar* _tmp27_; gchar* _tmp28_ = NULL; gchar* _tmp29_; gchar* _tmp30_ = NULL; gchar* _tmp31_; ValaCCodeVariableDeclarator* _tmp32_; ValaCCodeVariableDeclarator* _tmp33_; ValaCCodeStruct* _tmp34_; ValaCCodeDeclaration* _tmp35_; _tmp17_ = _type_param_index; _type_param_index = _tmp17_ + 1; _tmp18_ = _type_param_index; _tmp19_ = _type_param_size; if (!(_tmp18_ < _tmp19_)) { break; } _tmp20_ = _type_param_list; _tmp21_ = _type_param_index; _tmp22_ = vala_list_get (_tmp20_, _tmp21_); type_param = (ValaTypeParameter*) _tmp22_; _tmp23_ = vala_ccode_declaration_new ("DovaType *"); type_param_decl = _tmp23_; _tmp24_ = type_param_decl; _tmp25_ = type_param; _tmp26_ = vala_symbol_get_name ((ValaSymbol*) _tmp25_); _tmp27_ = _tmp26_; _tmp28_ = g_utf8_strdown (_tmp27_, (gssize) (-1)); _tmp29_ = _tmp28_; _tmp30_ = g_strdup_printf ("%s_type", _tmp29_); _tmp31_ = _tmp30_; _tmp32_ = vala_ccode_variable_declarator_new (_tmp31_, NULL, NULL); _tmp33_ = _tmp32_; vala_ccode_declaration_add_declarator (_tmp24_, (ValaCCodeDeclarator*) _tmp33_); _vala_ccode_node_unref0 (_tmp33_); _g_free0 (_tmp31_); _g_free0 (_tmp29_); _tmp34_ = type_priv_struct; _tmp35_ = type_param_decl; vala_ccode_struct_add_declaration (_tmp34_, _tmp35_); _vala_ccode_node_unref0 (type_param_decl); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } { ValaInterface* _tmp36_; ValaList* _tmp37_ = NULL; ValaList* _m_list; ValaList* _tmp38_; gint _tmp39_; gint _tmp40_; gint _m_size; gint _m_index; _tmp36_ = iface; _tmp37_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp36_); _m_list = _tmp37_; _tmp38_ = _m_list; _tmp39_ = vala_collection_get_size ((ValaCollection*) _tmp38_); _tmp40_ = _tmp39_; _m_size = _tmp40_; _m_index = -1; while (TRUE) { gint _tmp41_; gint _tmp42_; gint _tmp43_; ValaList* _tmp44_; gint _tmp45_; gpointer _tmp46_ = NULL; ValaMethod* m; ValaMethod* _tmp47_; ValaCCodeFile* _tmp48_; ValaCCodeStruct* _tmp49_; _tmp41_ = _m_index; _m_index = _tmp41_ + 1; _tmp42_ = _m_index; _tmp43_ = _m_size; if (!(_tmp42_ < _tmp43_)) { break; } _tmp44_ = _m_list; _tmp45_ = _m_index; _tmp46_ = vala_list_get (_tmp44_, _tmp45_); m = (ValaMethod*) _tmp46_; _tmp47_ = m; _tmp48_ = ((ValaDovaBaseModule*) self)->cfile; _tmp49_ = type_priv_struct; vala_dova_object_module_generate_virtual_method_declaration (self, _tmp47_, _tmp48_, _tmp49_); _vala_code_node_unref0 (m); } _vala_iterable_unref0 (_m_list); } _tmp50_ = type_priv_struct; _tmp51_ = vala_ccode_struct_get_is_empty (_tmp50_); _tmp52_ = _tmp51_; if (!_tmp52_) { ValaCCodeFile* _tmp53_; ValaCCodeStruct* _tmp54_; const gchar* _tmp55_; const gchar* _tmp56_; gchar* _tmp57_ = NULL; gchar* _tmp58_; ValaInterface* _tmp59_; gchar* _tmp60_ = NULL; gchar* _tmp61_; gchar* _tmp62_ = NULL; gchar* _tmp63_; ValaCCodeVariableDeclarator* _tmp64_; ValaCCodeVariableDeclarator* _tmp65_; ValaCCodeTypeDefinition* _tmp66_; ValaCCodeTypeDefinition* _tmp67_; ValaCCodeFile* _tmp68_; ValaCCodeStruct* _tmp69_; _tmp53_ = ((ValaDovaBaseModule*) self)->cfile; _tmp54_ = type_priv_struct; _tmp55_ = vala_ccode_struct_get_name (_tmp54_); _tmp56_ = _tmp55_; _tmp57_ = g_strdup_printf ("struct %s", _tmp56_); _tmp58_ = _tmp57_; _tmp59_ = iface; _tmp60_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp59_); _tmp61_ = _tmp60_; _tmp62_ = g_strdup_printf ("%sTypePrivate", _tmp61_); _tmp63_ = _tmp62_; _tmp64_ = vala_ccode_variable_declarator_new (_tmp63_, NULL, NULL); _tmp65_ = _tmp64_; _tmp66_ = vala_ccode_type_definition_new (_tmp58_, (ValaCCodeDeclarator*) _tmp65_); _tmp67_ = _tmp66_; vala_ccode_file_add_type_declaration (_tmp53_, (ValaCCodeNode*) _tmp67_); _vala_ccode_node_unref0 (_tmp67_); _vala_ccode_node_unref0 (_tmp65_); _g_free0 (_tmp63_); _g_free0 (_tmp61_); _g_free0 (_tmp58_); _tmp68_ = ((ValaDovaBaseModule*) self)->cfile; _tmp69_ = type_priv_struct; vala_ccode_file_add_type_definition (_tmp68_, (ValaCCodeNode*) _tmp69_); } _tmp70_ = vala_ccode_declaration_new ("DovaType *"); _cdecl_ = _tmp70_; _tmp71_ = _cdecl_; _tmp72_ = iface; _tmp73_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp72_, NULL); _tmp74_ = _tmp73_; _tmp75_ = g_strdup_printf ("%s_type", _tmp74_); _tmp76_ = _tmp75_; _tmp77_ = vala_ccode_constant_new ("NULL"); _tmp78_ = _tmp77_; _tmp79_ = vala_ccode_variable_declarator_new (_tmp76_, (ValaCCodeExpression*) _tmp78_, NULL); _tmp80_ = _tmp79_; vala_ccode_declaration_add_declarator (_tmp71_, (ValaCCodeDeclarator*) _tmp80_); _vala_ccode_node_unref0 (_tmp80_); _vala_ccode_node_unref0 (_tmp78_); _g_free0 (_tmp76_); _g_free0 (_tmp74_); _tmp81_ = _cdecl_; vala_ccode_declaration_set_modifiers (_tmp81_, VALA_CCODE_MODIFIERS_STATIC); _tmp82_ = ((ValaDovaBaseModule*) self)->cfile; _tmp83_ = _cdecl_; vala_ccode_file_add_type_member_declaration (_tmp82_, (ValaCCodeNode*) _tmp83_); _tmp84_ = iface; _tmp85_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp84_, NULL); _tmp86_ = _tmp85_; _tmp87_ = g_strdup_printf ("%s_type_get", _tmp86_); _tmp88_ = _tmp87_; _tmp89_ = vala_ccode_function_new (_tmp88_, "DovaType *"); _tmp90_ = _tmp89_; _g_free0 (_tmp88_); _g_free0 (_tmp86_); type_fun = _tmp90_; _tmp91_ = iface; _tmp92_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp91_); if (_tmp92_) { ValaCCodeFunction* _tmp93_; _tmp93_ = type_fun; vala_ccode_function_set_modifiers (_tmp93_, VALA_CCODE_MODIFIERS_STATIC); } { ValaInterface* _tmp94_; ValaList* _tmp95_ = NULL; ValaList* _type_param_list; ValaList* _tmp96_; gint _tmp97_; gint _tmp98_; gint _type_param_size; gint _type_param_index; _tmp94_ = iface; _tmp95_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp94_); _type_param_list = _tmp95_; _tmp96_ = _type_param_list; _tmp97_ = vala_collection_get_size ((ValaCollection*) _tmp96_); _tmp98_ = _tmp97_; _type_param_size = _tmp98_; _type_param_index = -1; while (TRUE) { gint _tmp99_; gint _tmp100_; gint _tmp101_; ValaList* _tmp102_; gint _tmp103_; gpointer _tmp104_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp105_; ValaTypeParameter* _tmp106_; const gchar* _tmp107_; const gchar* _tmp108_; gchar* _tmp109_ = NULL; gchar* _tmp110_; gchar* _tmp111_ = NULL; gchar* _tmp112_; ValaCCodeParameter* _tmp113_; ValaCCodeParameter* _tmp114_; _tmp99_ = _type_param_index; _type_param_index = _tmp99_ + 1; _tmp100_ = _type_param_index; _tmp101_ = _type_param_size; if (!(_tmp100_ < _tmp101_)) { break; } _tmp102_ = _type_param_list; _tmp103_ = _type_param_index; _tmp104_ = vala_list_get (_tmp102_, _tmp103_); type_param = (ValaTypeParameter*) _tmp104_; _tmp105_ = type_fun; _tmp106_ = type_param; _tmp107_ = vala_symbol_get_name ((ValaSymbol*) _tmp106_); _tmp108_ = _tmp107_; _tmp109_ = g_utf8_strdown (_tmp108_, (gssize) (-1)); _tmp110_ = _tmp109_; _tmp111_ = g_strdup_printf ("%s_type", _tmp110_); _tmp112_ = _tmp111_; _tmp113_ = vala_ccode_parameter_new (_tmp112_, "DovaType *"); _tmp114_ = _tmp113_; vala_ccode_function_add_parameter (_tmp105_, _tmp114_); _vala_ccode_node_unref0 (_tmp114_); _g_free0 (_tmp112_); _g_free0 (_tmp110_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _tmp115_ = type_fun; _tmp116_ = vala_ccode_block_new (); _tmp117_ = _tmp116_; vala_ccode_function_set_block (_tmp115_, _tmp117_); _vala_ccode_node_unref0 (_tmp117_); _tmp118_ = vala_ccode_block_new (); type_init_block = _tmp118_; _tmp119_ = vala_ccode_identifier_new ("calloc"); _tmp120_ = _tmp119_; _tmp121_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp120_); _tmp122_ = _tmp121_; _vala_ccode_node_unref0 (_tmp120_); calloc_call = _tmp122_; _tmp123_ = calloc_call; _tmp124_ = vala_ccode_constant_new ("1"); _tmp125_ = _tmp124_; vala_ccode_function_call_add_argument (_tmp123_, (ValaCCodeExpression*) _tmp125_); _vala_ccode_node_unref0 (_tmp125_); _tmp126_ = type_priv_struct; _tmp127_ = vala_ccode_struct_get_is_empty (_tmp126_); _tmp128_ = _tmp127_; if (!_tmp128_) { ValaCCodeFunctionCall* _tmp129_; ValaInterface* _tmp130_; gchar* _tmp131_ = NULL; gchar* _tmp132_; gchar* _tmp133_ = NULL; gchar* _tmp134_; ValaCCodeConstant* _tmp135_; ValaCCodeConstant* _tmp136_; _tmp129_ = calloc_call; _tmp130_ = iface; _tmp131_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp130_); _tmp132_ = _tmp131_; _tmp133_ = g_strdup_printf ("dova_type_get_type_size (dova_type_type_get ()) + sizeof (%sTypePrivat" \ "e)", _tmp132_); _tmp134_ = _tmp133_; _tmp135_ = vala_ccode_constant_new (_tmp134_); _tmp136_ = _tmp135_; vala_ccode_function_call_add_argument (_tmp129_, (ValaCCodeExpression*) _tmp136_); _vala_ccode_node_unref0 (_tmp136_); _g_free0 (_tmp134_); _g_free0 (_tmp132_); } else { ValaCCodeFunctionCall* _tmp137_; ValaCCodeConstant* _tmp138_; ValaCCodeConstant* _tmp139_; _tmp137_ = calloc_call; _tmp138_ = vala_ccode_constant_new ("dova_type_get_type_size (dova_type_type_get ())"); _tmp139_ = _tmp138_; vala_ccode_function_call_add_argument (_tmp137_, (ValaCCodeExpression*) _tmp139_); _vala_ccode_node_unref0 (_tmp139_); } _tmp140_ = type_init_block; _tmp141_ = iface; _tmp142_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp141_, NULL); _tmp143_ = _tmp142_; _tmp144_ = g_strdup_printf ("%s_type", _tmp143_); _tmp145_ = _tmp144_; _tmp146_ = vala_ccode_identifier_new (_tmp145_); _tmp147_ = _tmp146_; _tmp148_ = calloc_call; _tmp149_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp147_, (ValaCCodeExpression*) _tmp148_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp150_ = _tmp149_; _tmp151_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp150_); _tmp152_ = _tmp151_; vala_ccode_block_add_statement (_tmp140_, (ValaCCodeNode*) _tmp152_); _vala_ccode_node_unref0 (_tmp152_); _vala_ccode_node_unref0 (_tmp150_); _vala_ccode_node_unref0 (_tmp147_); _g_free0 (_tmp145_); _g_free0 (_tmp143_); _tmp153_ = vala_ccode_identifier_new ("any_type_init"); _tmp154_ = _tmp153_; _tmp155_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp154_); _tmp156_ = _tmp155_; _vala_ccode_node_unref0 (_tmp154_); any_type_init_call = _tmp156_; _tmp157_ = any_type_init_call; _tmp158_ = iface; _tmp159_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp158_, NULL); _tmp160_ = _tmp159_; _tmp161_ = g_strdup_printf ("%s_type", _tmp160_); _tmp162_ = _tmp161_; _tmp163_ = vala_ccode_identifier_new (_tmp162_); _tmp164_ = _tmp163_; vala_ccode_function_call_add_argument (_tmp157_, (ValaCCodeExpression*) _tmp164_); _vala_ccode_node_unref0 (_tmp164_); _g_free0 (_tmp162_); _g_free0 (_tmp160_); _tmp165_ = type_init_block; _tmp166_ = any_type_init_call; _tmp167_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp166_); _tmp168_ = _tmp167_; vala_ccode_block_add_statement (_tmp165_, (ValaCCodeNode*) _tmp168_); _vala_ccode_node_unref0 (_tmp168_); _tmp169_ = iface; _tmp170_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp169_, NULL); _tmp171_ = _tmp170_; _tmp172_ = g_strdup_printf ("%s_type_init", _tmp171_); _tmp173_ = _tmp172_; _tmp174_ = vala_ccode_identifier_new (_tmp173_); _tmp175_ = _tmp174_; _tmp176_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp175_); _tmp177_ = _tmp176_; _vala_ccode_node_unref0 (_tmp175_); _g_free0 (_tmp173_); _g_free0 (_tmp171_); type_init_call = _tmp177_; _tmp178_ = type_init_call; _tmp179_ = iface; _tmp180_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp179_, NULL); _tmp181_ = _tmp180_; _tmp182_ = g_strdup_printf ("%s_type", _tmp181_); _tmp183_ = _tmp182_; _tmp184_ = vala_ccode_identifier_new (_tmp183_); _tmp185_ = _tmp184_; vala_ccode_function_call_add_argument (_tmp178_, (ValaCCodeExpression*) _tmp185_); _vala_ccode_node_unref0 (_tmp185_); _g_free0 (_tmp183_); _g_free0 (_tmp181_); { ValaInterface* _tmp186_; ValaList* _tmp187_ = NULL; ValaList* _type_param_list; ValaList* _tmp188_; gint _tmp189_; gint _tmp190_; gint _type_param_size; gint _type_param_index; _tmp186_ = iface; _tmp187_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp186_); _type_param_list = _tmp187_; _tmp188_ = _type_param_list; _tmp189_ = vala_collection_get_size ((ValaCollection*) _tmp188_); _tmp190_ = _tmp189_; _type_param_size = _tmp190_; _type_param_index = -1; while (TRUE) { gint _tmp191_; gint _tmp192_; gint _tmp193_; ValaList* _tmp194_; gint _tmp195_; gpointer _tmp196_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunctionCall* _tmp197_; ValaTypeParameter* _tmp198_; const gchar* _tmp199_; const gchar* _tmp200_; gchar* _tmp201_ = NULL; gchar* _tmp202_; gchar* _tmp203_ = NULL; gchar* _tmp204_; ValaCCodeIdentifier* _tmp205_; ValaCCodeIdentifier* _tmp206_; _tmp191_ = _type_param_index; _type_param_index = _tmp191_ + 1; _tmp192_ = _type_param_index; _tmp193_ = _type_param_size; if (!(_tmp192_ < _tmp193_)) { break; } _tmp194_ = _type_param_list; _tmp195_ = _type_param_index; _tmp196_ = vala_list_get (_tmp194_, _tmp195_); type_param = (ValaTypeParameter*) _tmp196_; _tmp197_ = type_init_call; _tmp198_ = type_param; _tmp199_ = vala_symbol_get_name ((ValaSymbol*) _tmp198_); _tmp200_ = _tmp199_; _tmp201_ = g_utf8_strdown (_tmp200_, (gssize) (-1)); _tmp202_ = _tmp201_; _tmp203_ = g_strdup_printf ("%s_type", _tmp202_); _tmp204_ = _tmp203_; _tmp205_ = vala_ccode_identifier_new (_tmp204_); _tmp206_ = _tmp205_; vala_ccode_function_call_add_argument (_tmp197_, (ValaCCodeExpression*) _tmp206_); _vala_ccode_node_unref0 (_tmp206_); _g_free0 (_tmp204_); _g_free0 (_tmp202_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _tmp207_ = type_init_block; _tmp208_ = type_init_call; _tmp209_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp208_); _tmp210_ = _tmp209_; vala_ccode_block_add_statement (_tmp207_, (ValaCCodeNode*) _tmp210_); _vala_ccode_node_unref0 (_tmp210_); _tmp211_ = type_fun; _tmp212_ = vala_ccode_function_get_block (_tmp211_); _tmp213_ = _tmp212_; _tmp214_ = iface; _tmp215_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp214_, NULL); _tmp216_ = _tmp215_; _tmp217_ = g_strdup_printf ("%s_type", _tmp216_); _tmp218_ = _tmp217_; _tmp219_ = vala_ccode_identifier_new (_tmp218_); _tmp220_ = _tmp219_; _tmp221_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp220_); _tmp222_ = _tmp221_; _tmp223_ = type_init_block; _tmp224_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp222_, (ValaCCodeStatement*) _tmp223_, NULL); _tmp225_ = _tmp224_; vala_ccode_block_add_statement (_tmp213_, (ValaCCodeNode*) _tmp225_); _vala_ccode_node_unref0 (_tmp225_); _vala_ccode_node_unref0 (_tmp222_); _vala_ccode_node_unref0 (_tmp220_); _g_free0 (_tmp218_); _g_free0 (_tmp216_); _tmp226_ = type_fun; _tmp227_ = vala_ccode_function_get_block (_tmp226_); _tmp228_ = _tmp227_; _tmp229_ = iface; _tmp230_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp229_, NULL); _tmp231_ = _tmp230_; _tmp232_ = g_strdup_printf ("%s_type", _tmp231_); _tmp233_ = _tmp232_; _tmp234_ = vala_ccode_identifier_new (_tmp233_); _tmp235_ = _tmp234_; _tmp236_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp235_); _tmp237_ = _tmp236_; vala_ccode_block_add_statement (_tmp228_, (ValaCCodeNode*) _tmp237_); _vala_ccode_node_unref0 (_tmp237_); _vala_ccode_node_unref0 (_tmp235_); _g_free0 (_tmp233_); _g_free0 (_tmp231_); _tmp238_ = ((ValaDovaBaseModule*) self)->cfile; _tmp239_ = type_fun; vala_ccode_file_add_function (_tmp238_, _tmp239_); _tmp240_ = iface; _tmp241_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp240_, NULL); _tmp242_ = _tmp241_; _tmp243_ = g_strdup_printf ("%s_type_init", _tmp242_); _tmp244_ = _tmp243_; _tmp245_ = vala_ccode_function_new (_tmp244_, "void"); _tmp246_ = _tmp245_; _g_free0 (_tmp244_); _g_free0 (_tmp242_); type_init_fun = _tmp246_; _tmp247_ = iface; _tmp248_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp247_); if (_tmp248_) { ValaCCodeFunction* _tmp249_; _tmp249_ = type_init_fun; vala_ccode_function_set_modifiers (_tmp249_, VALA_CCODE_MODIFIERS_STATIC); } _tmp250_ = type_init_fun; _tmp251_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp252_ = _tmp251_; vala_ccode_function_add_parameter (_tmp250_, _tmp252_); _vala_ccode_node_unref0 (_tmp252_); { ValaInterface* _tmp253_; ValaList* _tmp254_ = NULL; ValaList* _type_param_list; ValaList* _tmp255_; gint _tmp256_; gint _tmp257_; gint _type_param_size; gint _type_param_index; _tmp253_ = iface; _tmp254_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp253_); _type_param_list = _tmp254_; _tmp255_ = _type_param_list; _tmp256_ = vala_collection_get_size ((ValaCollection*) _tmp255_); _tmp257_ = _tmp256_; _type_param_size = _tmp257_; _type_param_index = -1; while (TRUE) { gint _tmp258_; gint _tmp259_; gint _tmp260_; ValaList* _tmp261_; gint _tmp262_; gpointer _tmp263_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp264_; ValaTypeParameter* _tmp265_; const gchar* _tmp266_; const gchar* _tmp267_; gchar* _tmp268_ = NULL; gchar* _tmp269_; gchar* _tmp270_ = NULL; gchar* _tmp271_; ValaCCodeParameter* _tmp272_; ValaCCodeParameter* _tmp273_; _tmp258_ = _type_param_index; _type_param_index = _tmp258_ + 1; _tmp259_ = _type_param_index; _tmp260_ = _type_param_size; if (!(_tmp259_ < _tmp260_)) { break; } _tmp261_ = _type_param_list; _tmp262_ = _type_param_index; _tmp263_ = vala_list_get (_tmp261_, _tmp262_); type_param = (ValaTypeParameter*) _tmp263_; _tmp264_ = type_init_fun; _tmp265_ = type_param; _tmp266_ = vala_symbol_get_name ((ValaSymbol*) _tmp265_); _tmp267_ = _tmp266_; _tmp268_ = g_utf8_strdown (_tmp267_, (gssize) (-1)); _tmp269_ = _tmp268_; _tmp270_ = g_strdup_printf ("%s_type", _tmp269_); _tmp271_ = _tmp270_; _tmp272_ = vala_ccode_parameter_new (_tmp271_, "DovaType *"); _tmp273_ = _tmp272_; vala_ccode_function_add_parameter (_tmp264_, _tmp273_); _vala_ccode_node_unref0 (_tmp273_); _g_free0 (_tmp271_); _g_free0 (_tmp269_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _tmp274_ = type_init_fun; _tmp275_ = vala_ccode_block_new (); _tmp276_ = _tmp275_; vala_ccode_function_set_block (_tmp274_, _tmp276_); _vala_ccode_node_unref0 (_tmp276_); { ValaInterface* _tmp277_; ValaList* _tmp278_ = NULL; ValaList* _base_type_list; ValaList* _tmp279_; gint _tmp280_; gint _tmp281_; gint _base_type_size; gint _base_type_index; _tmp277_ = iface; _tmp278_ = vala_interface_get_prerequisites (_tmp277_); _base_type_list = _tmp278_; _tmp279_ = _base_type_list; _tmp280_ = vala_collection_get_size ((ValaCollection*) _tmp279_); _tmp281_ = _tmp280_; _base_type_size = _tmp281_; _base_type_index = -1; while (TRUE) { gint _tmp282_; gint _tmp283_; gint _tmp284_; ValaList* _tmp285_; gint _tmp286_; gpointer _tmp287_ = NULL; ValaDataType* base_type; ValaDataType* _tmp288_; ValaObjectType* _tmp289_; ValaObjectType* object_type; ValaObjectType* _tmp290_; ValaObjectTypeSymbol* _tmp291_; ValaObjectTypeSymbol* _tmp292_; _tmp282_ = _base_type_index; _base_type_index = _tmp282_ + 1; _tmp283_ = _base_type_index; _tmp284_ = _base_type_size; if (!(_tmp283_ < _tmp284_)) { break; } _tmp285_ = _base_type_list; _tmp286_ = _base_type_index; _tmp287_ = vala_list_get (_tmp285_, _tmp286_); base_type = (ValaDataType*) _tmp287_; _tmp288_ = base_type; _tmp289_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE (_tmp288_)); object_type = _tmp289_; _tmp290_ = object_type; _tmp291_ = vala_object_type_get_type_symbol (_tmp290_); _tmp292_ = _tmp291_; if (VALA_IS_INTERFACE (_tmp292_)) { ValaObjectType* _tmp293_; ValaObjectTypeSymbol* _tmp294_; ValaObjectTypeSymbol* _tmp295_; gchar* _tmp296_ = NULL; gchar* _tmp297_; gchar* _tmp298_ = NULL; gchar* _tmp299_; ValaCCodeIdentifier* _tmp300_; ValaCCodeIdentifier* _tmp301_; ValaCCodeFunctionCall* _tmp302_; ValaCCodeFunctionCall* _tmp303_; ValaCCodeIdentifier* _tmp304_; ValaCCodeIdentifier* _tmp305_; ValaCCodeFunction* _tmp306_; ValaCCodeBlock* _tmp307_; ValaCCodeBlock* _tmp308_; ValaCCodeFunctionCall* _tmp309_; ValaCCodeExpressionStatement* _tmp310_; ValaCCodeExpressionStatement* _tmp311_; _tmp293_ = object_type; _tmp294_ = vala_object_type_get_type_symbol (_tmp293_); _tmp295_ = _tmp294_; _tmp296_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp295_, NULL); _tmp297_ = _tmp296_; _tmp298_ = g_strdup_printf ("%s_type_init", _tmp297_); _tmp299_ = _tmp298_; _tmp300_ = vala_ccode_identifier_new (_tmp299_); _tmp301_ = _tmp300_; _tmp302_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp301_); _vala_ccode_node_unref0 (type_init_call); type_init_call = _tmp302_; _vala_ccode_node_unref0 (_tmp301_); _g_free0 (_tmp299_); _g_free0 (_tmp297_); _tmp303_ = type_init_call; _tmp304_ = vala_ccode_identifier_new ("type"); _tmp305_ = _tmp304_; vala_ccode_function_call_add_argument (_tmp303_, (ValaCCodeExpression*) _tmp305_); _vala_ccode_node_unref0 (_tmp305_); _tmp306_ = type_init_fun; _tmp307_ = vala_ccode_function_get_block (_tmp306_); _tmp308_ = _tmp307_; _tmp309_ = type_init_call; _tmp310_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp309_); _tmp311_ = _tmp310_; vala_ccode_block_add_statement (_tmp308_, (ValaCCodeNode*) _tmp311_); _vala_ccode_node_unref0 (_tmp311_); } _vala_code_node_unref0 (object_type); _vala_code_node_unref0 (base_type); } _vala_iterable_unref0 (_base_type_list); } _tmp312_ = vala_ccode_identifier_new ("calloc"); _tmp313_ = _tmp312_; _tmp314_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp313_); _tmp315_ = _tmp314_; _vala_ccode_node_unref0 (_tmp313_); vtable_alloc = _tmp315_; _tmp316_ = vtable_alloc; _tmp317_ = vala_ccode_constant_new ("1"); _tmp318_ = _tmp317_; vala_ccode_function_call_add_argument (_tmp316_, (ValaCCodeExpression*) _tmp318_); _vala_ccode_node_unref0 (_tmp318_); _tmp319_ = vtable_alloc; _tmp320_ = iface; _tmp321_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp320_); _tmp322_ = _tmp321_; _tmp323_ = g_strdup_printf ("sizeof (%sTypePrivate)", _tmp322_); _tmp324_ = _tmp323_; _tmp325_ = vala_ccode_constant_new (_tmp324_); _tmp326_ = _tmp325_; vala_ccode_function_call_add_argument (_tmp319_, (ValaCCodeExpression*) _tmp326_); _vala_ccode_node_unref0 (_tmp326_); _g_free0 (_tmp324_); _g_free0 (_tmp322_); _tmp327_ = iface; _tmp328_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp327_, NULL); _tmp329_ = _tmp328_; _tmp330_ = g_strdup_printf ("%s_type_get", _tmp329_); _tmp331_ = _tmp330_; _tmp332_ = vala_ccode_identifier_new (_tmp331_); _tmp333_ = _tmp332_; _tmp334_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp333_); _tmp335_ = _tmp334_; _vala_ccode_node_unref0 (_tmp333_); _g_free0 (_tmp331_); _g_free0 (_tmp329_); type_get_call = _tmp335_; { ValaInterface* _tmp336_; ValaList* _tmp337_ = NULL; ValaList* _type_param_list; ValaList* _tmp338_; gint _tmp339_; gint _tmp340_; gint _type_param_size; gint _type_param_index; _tmp336_ = iface; _tmp337_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp336_); _type_param_list = _tmp337_; _tmp338_ = _type_param_list; _tmp339_ = vala_collection_get_size ((ValaCollection*) _tmp338_); _tmp340_ = _tmp339_; _type_param_size = _tmp340_; _type_param_index = -1; while (TRUE) { gint _tmp341_; gint _tmp342_; gint _tmp343_; ValaList* _tmp344_; gint _tmp345_; gpointer _tmp346_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunctionCall* _tmp347_; ValaTypeParameter* _tmp348_; const gchar* _tmp349_; const gchar* _tmp350_; gchar* _tmp351_ = NULL; gchar* _tmp352_; gchar* _tmp353_ = NULL; gchar* _tmp354_; ValaCCodeIdentifier* _tmp355_; ValaCCodeIdentifier* _tmp356_; _tmp341_ = _type_param_index; _type_param_index = _tmp341_ + 1; _tmp342_ = _type_param_index; _tmp343_ = _type_param_size; if (!(_tmp342_ < _tmp343_)) { break; } _tmp344_ = _type_param_list; _tmp345_ = _type_param_index; _tmp346_ = vala_list_get (_tmp344_, _tmp345_); type_param = (ValaTypeParameter*) _tmp346_; _tmp347_ = type_get_call; _tmp348_ = type_param; _tmp349_ = vala_symbol_get_name ((ValaSymbol*) _tmp348_); _tmp350_ = _tmp349_; _tmp351_ = g_utf8_strdown (_tmp350_, (gssize) (-1)); _tmp352_ = _tmp351_; _tmp353_ = g_strdup_printf ("%s_type", _tmp352_); _tmp354_ = _tmp353_; _tmp355_ = vala_ccode_identifier_new (_tmp354_); _tmp356_ = _tmp355_; vala_ccode_function_call_add_argument (_tmp347_, (ValaCCodeExpression*) _tmp356_); _vala_ccode_node_unref0 (_tmp356_); _g_free0 (_tmp354_); _g_free0 (_tmp352_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _tmp357_ = type_priv_struct; _tmp358_ = vala_ccode_struct_get_is_empty (_tmp357_); _tmp359_ = _tmp358_; if (!_tmp359_) { ValaCCodeIdentifier* _tmp360_; ValaCCodeIdentifier* _tmp361_; ValaCCodeFunctionCall* _tmp362_; ValaCCodeFunctionCall* _tmp363_; ValaCCodeFunctionCall* add_interface_call; ValaCCodeFunctionCall* _tmp364_; ValaCCodeIdentifier* _tmp365_; ValaCCodeIdentifier* _tmp366_; ValaCCodeFunctionCall* _tmp367_; ValaCCodeFunctionCall* _tmp368_; ValaCCodeFunctionCall* _tmp369_; ValaCCodeFunctionCall* _tmp370_; ValaCCodeFunction* _tmp371_; ValaCCodeBlock* _tmp372_; ValaCCodeBlock* _tmp373_; ValaCCodeFunctionCall* _tmp374_; ValaCCodeExpressionStatement* _tmp375_; ValaCCodeExpressionStatement* _tmp376_; _tmp360_ = vala_ccode_identifier_new ("dova_type_add_interface"); _tmp361_ = _tmp360_; _tmp362_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp361_); _tmp363_ = _tmp362_; _vala_ccode_node_unref0 (_tmp361_); add_interface_call = _tmp363_; _tmp364_ = add_interface_call; _tmp365_ = vala_ccode_identifier_new ("type"); _tmp366_ = _tmp365_; vala_ccode_function_call_add_argument (_tmp364_, (ValaCCodeExpression*) _tmp366_); _vala_ccode_node_unref0 (_tmp366_); _tmp367_ = add_interface_call; _tmp368_ = type_get_call; vala_ccode_function_call_add_argument (_tmp367_, (ValaCCodeExpression*) _tmp368_); _tmp369_ = add_interface_call; _tmp370_ = vtable_alloc; vala_ccode_function_call_add_argument (_tmp369_, (ValaCCodeExpression*) _tmp370_); _tmp371_ = type_init_fun; _tmp372_ = vala_ccode_function_get_block (_tmp371_); _tmp373_ = _tmp372_; _tmp374_ = add_interface_call; _tmp375_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp374_); _tmp376_ = _tmp375_; vala_ccode_block_add_statement (_tmp373_, (ValaCCodeNode*) _tmp376_); _vala_ccode_node_unref0 (_tmp376_); _vala_ccode_node_unref0 (add_interface_call); } _tmp377_ = ((ValaDovaBaseModule*) self)->cfile; _tmp378_ = type_init_fun; vala_ccode_file_add_function (_tmp377_, _tmp378_); _tmp379_ = iface; vala_code_node_accept_children ((ValaCodeNode*) _tmp379_, (ValaCodeVisitor*) self); vala_dova_base_module_pop_context ((ValaDovaBaseModule*) self); _vala_ccode_node_unref0 (type_get_call); _vala_ccode_node_unref0 (vtable_alloc); _vala_ccode_node_unref0 (type_init_fun); _vala_ccode_node_unref0 (type_init_call); _vala_ccode_node_unref0 (any_type_init_call); _vala_ccode_node_unref0 (calloc_call); _vala_ccode_node_unref0 (type_init_block); _vala_ccode_node_unref0 (type_fun); _vala_ccode_node_unref0 (_cdecl_); _vala_ccode_node_unref0 (type_priv_struct); } static void vala_dova_object_module_real_generate_property_accessor_declaration (ValaDovaBaseModule* base, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space) { ValaDovaObjectModule * self; ValaCCodeFile* _tmp0_; ValaPropertyAccessor* _tmp1_; ValaProperty* _tmp2_; ValaProperty* _tmp3_; ValaPropertyAccessor* _tmp4_; gchar* _tmp5_ = NULL; gchar* _tmp6_; gboolean _tmp7_ = FALSE; gboolean _tmp8_; ValaPropertyAccessor* _tmp9_; ValaProperty* _tmp10_; ValaProperty* _tmp11_; ValaProperty* _tmp12_; ValaProperty* prop; ValaPropertyAccessor* _tmp13_; ValaDataType* _tmp14_; ValaDataType* _tmp15_; ValaCCodeFile* _tmp16_; ValaCCodeFunction* function = NULL; ValaPropertyAccessor* _tmp17_; gboolean _tmp18_; gboolean _tmp19_; ValaProperty* _tmp33_; ValaMemberBinding _tmp34_; ValaMemberBinding _tmp35_; ValaPropertyAccessor* _tmp60_; gboolean _tmp61_; gboolean _tmp62_; gboolean _tmp72_ = FALSE; ValaProperty* _tmp73_; gboolean _tmp74_ = FALSE; gboolean _tmp77_; ValaCCodeFile* _tmp82_; ValaCCodeFunction* _tmp83_; gboolean _tmp84_ = FALSE; ValaProperty* _tmp85_; gboolean _tmp86_; gboolean _tmp87_; gboolean _tmp91_; self = (ValaDovaObjectModule*) base; g_return_if_fail (acc != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = acc; _tmp2_ = vala_property_accessor_get_prop (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = acc; _tmp5_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp3_, _tmp6_); _tmp8_ = _tmp7_; _g_free0 (_tmp6_); if (_tmp8_) { return; } _tmp9_ = acc; _tmp10_ = vala_property_accessor_get_prop (_tmp9_); _tmp11_ = _tmp10_; _tmp12_ = _vala_code_node_ref0 (VALA_PROPERTY (_tmp11_)); prop = _tmp12_; _tmp13_ = acc; _tmp14_ = vala_property_accessor_get_value_type (_tmp13_); _tmp15_ = _tmp14_; _tmp16_ = decl_space; vala_dova_base_module_generate_type_declaration ((ValaDovaBaseModule*) self, _tmp15_, _tmp16_); _tmp17_ = acc; _tmp18_ = vala_property_accessor_get_readable (_tmp17_); _tmp19_ = _tmp18_; if (_tmp19_) { ValaPropertyAccessor* _tmp20_; gchar* _tmp21_ = NULL; gchar* _tmp22_; ValaPropertyAccessor* _tmp23_; ValaDataType* _tmp24_; ValaDataType* _tmp25_; gchar* _tmp26_ = NULL; gchar* _tmp27_; ValaCCodeFunction* _tmp28_; _tmp20_ = acc; _tmp21_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp20_); _tmp22_ = _tmp21_; _tmp23_ = acc; _tmp24_ = vala_property_accessor_get_value_type (_tmp23_); _tmp25_ = _tmp24_; _tmp26_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp25_); _tmp27_ = _tmp26_; _tmp28_ = vala_ccode_function_new (_tmp22_, _tmp27_); _vala_ccode_node_unref0 (function); function = _tmp28_; _g_free0 (_tmp27_); _g_free0 (_tmp22_); } else { ValaPropertyAccessor* _tmp29_; gchar* _tmp30_ = NULL; gchar* _tmp31_; ValaCCodeFunction* _tmp32_; _tmp29_ = acc; _tmp30_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp29_); _tmp31_ = _tmp30_; _tmp32_ = vala_ccode_function_new (_tmp31_, "void"); _vala_ccode_node_unref0 (function); function = _tmp32_; _g_free0 (_tmp31_); } _tmp33_ = prop; _tmp34_ = vala_property_get_binding (_tmp33_); _tmp35_ = _tmp34_; if (_tmp35_ == VALA_MEMBER_BINDING_INSTANCE) { ValaDataType* this_type = NULL; ValaProperty* _tmp36_; ValaSymbol* _tmp37_; ValaSymbol* _tmp38_; ValaDataType* _tmp51_; ValaCCodeFile* _tmp52_; ValaDataType* _tmp53_; gchar* _tmp54_ = NULL; gchar* _tmp55_; ValaCCodeParameter* _tmp56_; ValaCCodeParameter* _tmp57_; ValaCCodeParameter* cselfparam; ValaCCodeFunction* _tmp58_; ValaCCodeParameter* _tmp59_; _tmp36_ = prop; _tmp37_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp36_); _tmp38_ = _tmp37_; if (VALA_IS_STRUCT (_tmp38_)) { ValaProperty* _tmp39_; ValaSymbol* _tmp40_; ValaSymbol* _tmp41_; ValaStruct* _tmp42_; ValaStruct* st; ValaStruct* _tmp43_; ValaDataType* _tmp44_ = NULL; _tmp39_ = prop; _tmp40_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp39_); _tmp41_ = _tmp40_; _tmp42_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp41_)); st = _tmp42_; _tmp43_ = st; _tmp44_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp43_); _vala_code_node_unref0 (this_type); this_type = _tmp44_; _vala_code_node_unref0 (st); } else { ValaProperty* _tmp45_; ValaSymbol* _tmp46_; ValaSymbol* _tmp47_; ValaObjectTypeSymbol* _tmp48_; ValaObjectTypeSymbol* t; ValaObjectTypeSymbol* _tmp49_; ValaObjectType* _tmp50_; _tmp45_ = prop; _tmp46_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp45_); _tmp47_ = _tmp46_; _tmp48_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE_SYMBOL (_tmp47_)); t = _tmp48_; _tmp49_ = t; _tmp50_ = vala_object_type_new (_tmp49_); _vala_code_node_unref0 (this_type); this_type = (ValaDataType*) _tmp50_; _vala_code_node_unref0 (t); } _tmp51_ = this_type; _tmp52_ = decl_space; vala_dova_base_module_generate_type_declaration ((ValaDovaBaseModule*) self, _tmp51_, _tmp52_); _tmp53_ = this_type; _tmp54_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp53_); _tmp55_ = _tmp54_; _tmp56_ = vala_ccode_parameter_new ("this", _tmp55_); _tmp57_ = _tmp56_; _g_free0 (_tmp55_); cselfparam = _tmp57_; _tmp58_ = function; _tmp59_ = cselfparam; vala_ccode_function_add_parameter (_tmp58_, _tmp59_); _vala_ccode_node_unref0 (cselfparam); _vala_code_node_unref0 (this_type); } _tmp60_ = acc; _tmp61_ = vala_property_accessor_get_writable (_tmp60_); _tmp62_ = _tmp61_; if (_tmp62_) { ValaPropertyAccessor* _tmp63_; ValaDataType* _tmp64_; ValaDataType* _tmp65_; gchar* _tmp66_ = NULL; gchar* _tmp67_; ValaCCodeParameter* _tmp68_; ValaCCodeParameter* _tmp69_; ValaCCodeParameter* cvalueparam; ValaCCodeFunction* _tmp70_; ValaCCodeParameter* _tmp71_; _tmp63_ = acc; _tmp64_ = vala_property_accessor_get_value_type (_tmp63_); _tmp65_ = _tmp64_; _tmp66_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp65_); _tmp67_ = _tmp66_; _tmp68_ = vala_ccode_parameter_new ("value", _tmp67_); _tmp69_ = _tmp68_; _g_free0 (_tmp67_); cvalueparam = _tmp69_; _tmp70_ = function; _tmp71_ = cvalueparam; vala_ccode_function_add_parameter (_tmp70_, _tmp71_); _vala_ccode_node_unref0 (cvalueparam); } _tmp73_ = prop; _tmp74_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp73_); if (_tmp74_) { _tmp72_ = TRUE; } else { ValaPropertyAccessor* _tmp75_; gboolean _tmp76_ = FALSE; _tmp75_ = acc; _tmp76_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp75_); _tmp72_ = _tmp76_; } _tmp77_ = _tmp72_; if (_tmp77_) { ValaCCodeFunction* _tmp78_; ValaCCodeFunction* _tmp79_; ValaCCodeModifiers _tmp80_; ValaCCodeModifiers _tmp81_; _tmp78_ = function; _tmp79_ = function; _tmp80_ = vala_ccode_function_get_modifiers (_tmp79_); _tmp81_ = _tmp80_; vala_ccode_function_set_modifiers (_tmp79_, _tmp81_ | VALA_CCODE_MODIFIERS_STATIC); } _tmp82_ = decl_space; _tmp83_ = function; vala_ccode_file_add_function_declaration (_tmp82_, _tmp83_); _tmp85_ = prop; _tmp86_ = vala_property_get_is_abstract (_tmp85_); _tmp87_ = _tmp86_; if (_tmp87_) { _tmp84_ = TRUE; } else { ValaProperty* _tmp88_; gboolean _tmp89_; gboolean _tmp90_; _tmp88_ = prop; _tmp89_ = vala_property_get_is_virtual (_tmp88_); _tmp90_ = _tmp89_; _tmp84_ = _tmp90_; } _tmp91_ = _tmp84_; if (_tmp91_) { ValaProperty* _tmp92_; ValaSymbol* _tmp93_; ValaSymbol* _tmp94_; gchar* _tmp95_ = NULL; gchar* _tmp96_; gchar* _tmp97_ = NULL; gchar* _tmp98_; gchar* param_list; ValaPropertyAccessor* _tmp99_; gboolean _tmp100_; gboolean _tmp101_; const gchar* _tmp111_; gchar* _tmp112_; const gchar* _tmp113_ = NULL; ValaPropertyAccessor* _tmp114_; gboolean _tmp115_; gboolean _tmp116_; ValaProperty* _tmp117_; ValaSymbol* _tmp118_; ValaSymbol* _tmp119_; gchar* _tmp120_ = NULL; gchar* _tmp121_; const gchar* _tmp122_; ValaProperty* _tmp123_; const gchar* _tmp124_; const gchar* _tmp125_; gchar* _tmp126_ = NULL; gchar* _tmp127_; ValaCCodeFunction* _tmp128_; ValaCCodeFunction* _tmp129_; ValaCCodeFunction* override_func; ValaCCodeFunction* _tmp130_; ValaCCodeParameter* _tmp131_; ValaCCodeParameter* _tmp132_; gchar* _tmp133_ = NULL; ValaPropertyAccessor* _tmp134_; gboolean _tmp135_; gboolean _tmp136_; ValaCCodeFunction* _tmp142_; const gchar* _tmp143_; gchar* _tmp144_ = NULL; gchar* _tmp145_; const gchar* _tmp146_; ValaCCodeParameter* _tmp147_; ValaCCodeParameter* _tmp148_; ValaCCodeFile* _tmp149_; ValaCCodeFunction* _tmp150_; _tmp92_ = prop; _tmp93_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp92_); _tmp94_ = _tmp93_; _tmp95_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp94_); _tmp96_ = _tmp95_; _tmp97_ = g_strdup_printf ("(%s *this", _tmp96_); _tmp98_ = _tmp97_; _g_free0 (_tmp96_); param_list = _tmp98_; _tmp99_ = acc; _tmp100_ = vala_property_accessor_get_readable (_tmp99_); _tmp101_ = _tmp100_; if (!_tmp101_) { const gchar* _tmp102_; gchar* _tmp103_; const gchar* _tmp104_; ValaPropertyAccessor* _tmp105_; ValaDataType* _tmp106_; ValaDataType* _tmp107_; gchar* _tmp108_ = NULL; gchar* _tmp109_; gchar* _tmp110_; _tmp102_ = param_list; _tmp103_ = g_strconcat (_tmp102_, ", ", NULL); _g_free0 (param_list); param_list = _tmp103_; _tmp104_ = param_list; _tmp105_ = acc; _tmp106_ = vala_property_accessor_get_value_type (_tmp105_); _tmp107_ = _tmp106_; _tmp108_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp107_); _tmp109_ = _tmp108_; _tmp110_ = g_strconcat (_tmp104_, _tmp109_, NULL); _g_free0 (param_list); param_list = _tmp110_; _g_free0 (_tmp109_); } _tmp111_ = param_list; _tmp112_ = g_strconcat (_tmp111_, ")", NULL); _g_free0 (param_list); param_list = _tmp112_; _tmp114_ = acc; _tmp115_ = vala_property_accessor_get_readable (_tmp114_); _tmp116_ = _tmp115_; if (_tmp116_) { _tmp113_ = "get"; } else { _tmp113_ = "set"; } _tmp117_ = prop; _tmp118_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp117_); _tmp119_ = _tmp118_; _tmp120_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, _tmp119_); _tmp121_ = _tmp120_; _tmp122_ = _tmp113_; _tmp123_ = prop; _tmp124_ = vala_symbol_get_name ((ValaSymbol*) _tmp123_); _tmp125_ = _tmp124_; _tmp126_ = g_strdup_printf ("%soverride_%s_%s", _tmp121_, _tmp122_, _tmp125_); _tmp127_ = _tmp126_; _tmp128_ = vala_ccode_function_new (_tmp127_, "void"); _tmp129_ = _tmp128_; _g_free0 (_tmp127_); _g_free0 (_tmp121_); override_func = _tmp129_; _tmp130_ = override_func; _tmp131_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp132_ = _tmp131_; vala_ccode_function_add_parameter (_tmp130_, _tmp132_); _vala_ccode_node_unref0 (_tmp132_); _tmp134_ = acc; _tmp135_ = vala_property_accessor_get_readable (_tmp134_); _tmp136_ = _tmp135_; if (_tmp136_) { ValaPropertyAccessor* _tmp137_; ValaDataType* _tmp138_; ValaDataType* _tmp139_; gchar* _tmp140_ = NULL; _tmp137_ = acc; _tmp138_ = vala_property_accessor_get_value_type (_tmp137_); _tmp139_ = _tmp138_; _tmp140_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp139_); _g_free0 (_tmp133_); _tmp133_ = _tmp140_; } else { gchar* _tmp141_; _tmp141_ = g_strdup ("void"); _g_free0 (_tmp133_); _tmp133_ = _tmp141_; } _tmp142_ = override_func; _tmp143_ = param_list; _tmp144_ = g_strdup_printf ("(*function) %s", _tmp143_); _tmp145_ = _tmp144_; _tmp146_ = _tmp133_; _tmp147_ = vala_ccode_parameter_new (_tmp145_, _tmp146_); _tmp148_ = _tmp147_; vala_ccode_function_add_parameter (_tmp142_, _tmp148_); _vala_ccode_node_unref0 (_tmp148_); _g_free0 (_tmp145_); _tmp149_ = decl_space; _tmp150_ = override_func; vala_ccode_file_add_function_declaration (_tmp149_, _tmp150_); _g_free0 (_tmp133_); _vala_ccode_node_unref0 (override_func); _g_free0 (param_list); } _vala_ccode_node_unref0 (function); _vala_code_node_unref0 (prop); } static void vala_dova_object_module_real_visit_property_accessor (ValaCodeVisitor* base, ValaPropertyAccessor* acc) { ValaDovaObjectModule * self; ValaPropertyAccessor* _tmp0_; ValaDovaBaseModuleEmitContext* _tmp1_; ValaDovaBaseModuleEmitContext* _tmp2_; ValaPropertyAccessor* _tmp3_; ValaProperty* _tmp4_; ValaProperty* _tmp5_; ValaProperty* _tmp6_; ValaProperty* prop; gboolean _tmp7_ = FALSE; gboolean _tmp8_ = FALSE; ValaProperty* _tmp9_; gboolean _tmp10_; gboolean _tmp11_; gboolean _tmp15_; gboolean _tmp24_; ValaDataType* this_type = NULL; ValaProperty* _tmp41_; ValaSymbol* _tmp42_; ValaSymbol* _tmp43_; ValaDataType* _tmp56_; gchar* _tmp57_ = NULL; gchar* _tmp58_; ValaCCodeParameter* _tmp59_; ValaCCodeParameter* _tmp60_; ValaCCodeParameter* cselfparam; ValaPropertyAccessor* _tmp61_; ValaDataType* _tmp62_; ValaDataType* _tmp63_; gchar* _tmp64_ = NULL; gchar* _tmp65_; ValaCCodeParameter* _tmp66_; ValaCCodeParameter* _tmp67_; ValaCCodeParameter* cvalueparam; ValaPropertyAccessor* _tmp68_; gchar* _tmp69_ = NULL; gchar* cname; gboolean _tmp70_ = FALSE; ValaProperty* _tmp71_; gboolean _tmp72_; gboolean _tmp73_; gboolean _tmp77_; ValaProperty* _tmp253_; gboolean _tmp254_; gboolean _tmp255_; self = (ValaDovaObjectModule*) base; g_return_if_fail (acc != NULL); _tmp0_ = acc; _tmp1_ = vala_dova_base_module_emit_context_new ((ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; vala_dova_base_module_push_context ((ValaDovaBaseModule*) self, _tmp2_); _vala_dova_base_module_emit_context_unref0 (_tmp2_); _tmp3_ = acc; _tmp4_ = vala_property_accessor_get_prop (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = _vala_code_node_ref0 (VALA_PROPERTY (_tmp5_)); prop = _tmp6_; _tmp9_ = prop; _tmp10_ = vala_property_get_is_abstract (_tmp9_); _tmp11_ = _tmp10_; if (_tmp11_) { _tmp8_ = TRUE; } else { ValaProperty* _tmp12_; gboolean _tmp13_; gboolean _tmp14_; _tmp12_ = prop; _tmp13_ = vala_property_get_is_virtual (_tmp12_); _tmp14_ = _tmp13_; _tmp8_ = _tmp14_; } _tmp15_ = _tmp8_; if (_tmp15_) { _tmp7_ = TRUE; } else { gboolean _tmp16_ = FALSE; ValaProperty* _tmp17_; ValaProperty* _tmp18_; ValaProperty* _tmp19_; gboolean _tmp23_; _tmp17_ = prop; _tmp18_ = vala_property_get_base_property (_tmp17_); _tmp19_ = _tmp18_; if (_tmp19_ == NULL) { ValaProperty* _tmp20_; ValaProperty* _tmp21_; ValaProperty* _tmp22_; _tmp20_ = prop; _tmp21_ = vala_property_get_base_interface_property (_tmp20_); _tmp22_ = _tmp21_; _tmp16_ = _tmp22_ == NULL; } else { _tmp16_ = FALSE; } _tmp23_ = _tmp16_; _tmp7_ = _tmp23_; } _tmp24_ = _tmp7_; if (_tmp24_) { ValaPropertyAccessor* _tmp25_; ValaCCodeFile* _tmp26_; gboolean _tmp27_ = FALSE; ValaProperty* _tmp28_; gboolean _tmp29_ = FALSE; gboolean _tmp38_; _tmp25_ = acc; _tmp26_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_property_accessor_declaration ((ValaDovaBaseModule*) self, _tmp25_, _tmp26_); _tmp28_ = prop; _tmp29_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp28_); if (!_tmp29_) { gboolean _tmp30_ = FALSE; ValaPropertyAccessor* _tmp31_; ValaSymbolAccessibility _tmp32_; ValaSymbolAccessibility _tmp33_; gboolean _tmp37_; _tmp31_ = acc; _tmp32_ = vala_symbol_get_access ((ValaSymbol*) _tmp31_); _tmp33_ = _tmp32_; if (_tmp33_ == VALA_SYMBOL_ACCESSIBILITY_PUBLIC) { _tmp30_ = TRUE; } else { ValaPropertyAccessor* _tmp34_; ValaSymbolAccessibility _tmp35_; ValaSymbolAccessibility _tmp36_; _tmp34_ = acc; _tmp35_ = vala_symbol_get_access ((ValaSymbol*) _tmp34_); _tmp36_ = _tmp35_; _tmp30_ = _tmp36_ == VALA_SYMBOL_ACCESSIBILITY_PROTECTED; } _tmp37_ = _tmp30_; _tmp27_ = _tmp37_; } else { _tmp27_ = FALSE; } _tmp38_ = _tmp27_; if (_tmp38_) { ValaPropertyAccessor* _tmp39_; ValaCCodeFile* _tmp40_; _tmp39_ = acc; _tmp40_ = ((ValaDovaBaseModule*) self)->header_file; vala_dova_base_module_generate_property_accessor_declaration ((ValaDovaBaseModule*) self, _tmp39_, _tmp40_); } } _tmp41_ = prop; _tmp42_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp41_); _tmp43_ = _tmp42_; if (VALA_IS_STRUCT (_tmp43_)) { ValaProperty* _tmp44_; ValaSymbol* _tmp45_; ValaSymbol* _tmp46_; ValaStruct* _tmp47_; ValaStruct* st; ValaStruct* _tmp48_; ValaDataType* _tmp49_ = NULL; _tmp44_ = prop; _tmp45_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp44_); _tmp46_ = _tmp45_; _tmp47_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp46_)); st = _tmp47_; _tmp48_ = st; _tmp49_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp48_); _vala_code_node_unref0 (this_type); this_type = _tmp49_; _vala_code_node_unref0 (st); } else { ValaProperty* _tmp50_; ValaSymbol* _tmp51_; ValaSymbol* _tmp52_; ValaObjectTypeSymbol* _tmp53_; ValaObjectTypeSymbol* t; ValaObjectTypeSymbol* _tmp54_; ValaObjectType* _tmp55_; _tmp50_ = prop; _tmp51_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp50_); _tmp52_ = _tmp51_; _tmp53_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE_SYMBOL (_tmp52_)); t = _tmp53_; _tmp54_ = t; _tmp55_ = vala_object_type_new (_tmp54_); _vala_code_node_unref0 (this_type); this_type = (ValaDataType*) _tmp55_; _vala_code_node_unref0 (t); } _tmp56_ = this_type; _tmp57_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp56_); _tmp58_ = _tmp57_; _tmp59_ = vala_ccode_parameter_new ("this", _tmp58_); _tmp60_ = _tmp59_; _g_free0 (_tmp58_); cselfparam = _tmp60_; _tmp61_ = acc; _tmp62_ = vala_property_accessor_get_value_type (_tmp61_); _tmp63_ = _tmp62_; _tmp64_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp63_); _tmp65_ = _tmp64_; _tmp66_ = vala_ccode_parameter_new ("value", _tmp65_); _tmp67_ = _tmp66_; _g_free0 (_tmp65_); cvalueparam = _tmp67_; _tmp68_ = acc; _tmp69_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp68_); cname = _tmp69_; _tmp71_ = prop; _tmp72_ = vala_property_get_is_abstract (_tmp71_); _tmp73_ = _tmp72_; if (_tmp73_) { _tmp70_ = TRUE; } else { ValaProperty* _tmp74_; gboolean _tmp75_; gboolean _tmp76_; _tmp74_ = prop; _tmp75_ = vala_property_get_is_virtual (_tmp74_); _tmp76_ = _tmp75_; _tmp70_ = _tmp76_; } _tmp77_ = _tmp70_; if (_tmp77_) { ValaCCodeFunction* function = NULL; ValaPropertyAccessor* _tmp78_; gboolean _tmp79_; gboolean _tmp80_; ValaCCodeFunction* _tmp93_; ValaCCodeParameter* _tmp94_; ValaPropertyAccessor* _tmp95_; gboolean _tmp96_; gboolean _tmp97_; gboolean _tmp100_ = FALSE; gboolean _tmp101_ = FALSE; ValaProperty* _tmp102_; gboolean _tmp103_ = FALSE; gboolean _tmp112_; gboolean _tmp115_; ValaCCodeFunction* _tmp120_; ValaProperty* _tmp121_; ValaSymbol* _tmp122_; ValaSymbol* _tmp123_; ValaCCodeIdentifier* _tmp124_; ValaCCodeIdentifier* _tmp125_; ValaCCodeExpression* _tmp126_ = NULL; ValaCCodeExpression* _tmp127_; ValaCCodeExpression* _tmp128_ = NULL; ValaCCodeExpression* _tmp129_; ValaCCodeExpression* vcast; ValaPropertyAccessor* _tmp130_; gboolean _tmp131_; gboolean _tmp132_; ValaCCodeFile* _tmp168_; ValaCCodeFunction* _tmp169_; ValaProperty* _tmp170_; ValaSymbol* _tmp171_; ValaSymbol* _tmp172_; gchar* _tmp173_ = NULL; gchar* _tmp174_; gchar* _tmp175_ = NULL; gchar* _tmp176_; gchar* param_list; ValaPropertyAccessor* _tmp177_; gboolean _tmp178_; gboolean _tmp179_; const gchar* _tmp189_; gchar* _tmp190_; const gchar* _tmp191_ = NULL; ValaPropertyAccessor* _tmp192_; gboolean _tmp193_; gboolean _tmp194_; ValaProperty* _tmp195_; ValaSymbol* _tmp196_; ValaSymbol* _tmp197_; gchar* _tmp198_ = NULL; gchar* _tmp199_; const gchar* _tmp200_; ValaProperty* _tmp201_; const gchar* _tmp202_; const gchar* _tmp203_; gchar* _tmp204_ = NULL; gchar* _tmp205_; ValaCCodeFunction* _tmp206_; ValaCCodeFunction* _tmp207_; ValaCCodeFunction* override_func; ValaCCodeFunction* _tmp208_; ValaCCodeParameter* _tmp209_; ValaCCodeParameter* _tmp210_; gchar* _tmp211_ = NULL; ValaPropertyAccessor* _tmp212_; gboolean _tmp213_; gboolean _tmp214_; ValaCCodeFunction* _tmp220_; const gchar* _tmp221_; gchar* _tmp222_ = NULL; gchar* _tmp223_; const gchar* _tmp224_; ValaCCodeParameter* _tmp225_; ValaCCodeParameter* _tmp226_; ValaCCodeFunction* _tmp227_; ValaProperty* _tmp228_; ValaSymbol* _tmp229_; ValaSymbol* _tmp230_; ValaCCodeIdentifier* _tmp231_; ValaCCodeIdentifier* _tmp232_; ValaCCodeExpression* _tmp233_ = NULL; const gchar* _tmp234_ = NULL; ValaPropertyAccessor* _tmp235_; gboolean _tmp236_; gboolean _tmp237_; ValaCCodeFunction* _tmp238_; ValaCCodeFunction* _tmp239_; ValaCCodeExpression* _tmp240_; const gchar* _tmp241_; ValaProperty* _tmp242_; const gchar* _tmp243_; const gchar* _tmp244_; gchar* _tmp245_ = NULL; gchar* _tmp246_; ValaCCodeMemberAccess* _tmp247_; ValaCCodeMemberAccess* _tmp248_; ValaCCodeIdentifier* _tmp249_; ValaCCodeIdentifier* _tmp250_; ValaCCodeFile* _tmp251_; ValaCCodeFunction* _tmp252_; _tmp78_ = acc; _tmp79_ = vala_property_accessor_get_readable (_tmp78_); _tmp80_ = _tmp79_; if (_tmp80_) { ValaPropertyAccessor* _tmp81_; gchar* _tmp82_ = NULL; gchar* _tmp83_; ValaDataType* _tmp84_; ValaDataType* _tmp85_; gchar* _tmp86_ = NULL; gchar* _tmp87_; ValaCCodeFunction* _tmp88_; _tmp81_ = acc; _tmp82_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp81_); _tmp83_ = _tmp82_; _tmp84_ = vala_dova_base_module_get_current_return_type ((ValaDovaBaseModule*) self); _tmp85_ = _tmp84_; _tmp86_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp85_); _tmp87_ = _tmp86_; _tmp88_ = vala_ccode_function_new (_tmp83_, _tmp87_); _vala_ccode_node_unref0 (function); function = _tmp88_; _g_free0 (_tmp87_); _g_free0 (_tmp83_); } else { ValaPropertyAccessor* _tmp89_; gchar* _tmp90_ = NULL; gchar* _tmp91_; ValaCCodeFunction* _tmp92_; _tmp89_ = acc; _tmp90_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp89_); _tmp91_ = _tmp90_; _tmp92_ = vala_ccode_function_new (_tmp91_, "void"); _vala_ccode_node_unref0 (function); function = _tmp92_; _g_free0 (_tmp91_); } _tmp93_ = function; _tmp94_ = cselfparam; vala_ccode_function_add_parameter (_tmp93_, _tmp94_); _tmp95_ = acc; _tmp96_ = vala_property_accessor_get_writable (_tmp95_); _tmp97_ = _tmp96_; if (_tmp97_) { ValaCCodeFunction* _tmp98_; ValaCCodeParameter* _tmp99_; _tmp98_ = function; _tmp99_ = cvalueparam; vala_ccode_function_add_parameter (_tmp98_, _tmp99_); } _tmp102_ = prop; _tmp103_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp102_); if (_tmp103_) { _tmp101_ = TRUE; } else { gboolean _tmp104_ = FALSE; ValaPropertyAccessor* _tmp105_; gboolean _tmp106_; gboolean _tmp107_; gboolean _tmp111_; _tmp105_ = acc; _tmp106_ = vala_property_accessor_get_readable (_tmp105_); _tmp107_ = _tmp106_; if (_tmp107_) { _tmp104_ = TRUE; } else { ValaPropertyAccessor* _tmp108_; gboolean _tmp109_; gboolean _tmp110_; _tmp108_ = acc; _tmp109_ = vala_property_accessor_get_writable (_tmp108_); _tmp110_ = _tmp109_; _tmp104_ = _tmp110_; } _tmp111_ = _tmp104_; _tmp101_ = !_tmp111_; } _tmp112_ = _tmp101_; if (_tmp112_) { _tmp100_ = TRUE; } else { ValaPropertyAccessor* _tmp113_; gboolean _tmp114_ = FALSE; _tmp113_ = acc; _tmp114_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp113_); _tmp100_ = _tmp114_; } _tmp115_ = _tmp100_; if (_tmp115_) { ValaCCodeFunction* _tmp116_; ValaCCodeFunction* _tmp117_; ValaCCodeModifiers _tmp118_; ValaCCodeModifiers _tmp119_; _tmp116_ = function; _tmp117_ = function; _tmp118_ = vala_ccode_function_get_modifiers (_tmp117_); _tmp119_ = _tmp118_; vala_ccode_function_set_modifiers (_tmp117_, _tmp119_ | VALA_CCODE_MODIFIERS_STATIC); } _tmp120_ = function; vala_dova_base_module_push_function ((ValaDovaBaseModule*) self, _tmp120_); _tmp121_ = prop; _tmp122_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp121_); _tmp123_ = _tmp122_; _tmp124_ = vala_ccode_identifier_new ("this"); _tmp125_ = _tmp124_; _tmp126_ = vala_dova_object_module_get_type_from_instance (self, (ValaCCodeExpression*) _tmp125_); _tmp127_ = _tmp126_; _tmp128_ = vala_dova_base_module_get_type_private_from_type ((ValaDovaBaseModule*) self, VALA_OBJECT_TYPE_SYMBOL (_tmp123_), _tmp127_); _tmp129_ = _tmp128_; _vala_ccode_node_unref0 (_tmp127_); _vala_ccode_node_unref0 (_tmp125_); vcast = _tmp129_; _tmp130_ = acc; _tmp131_ = vala_property_accessor_get_readable (_tmp130_); _tmp132_ = _tmp131_; if (_tmp132_) { ValaCCodeExpression* _tmp133_; ValaProperty* _tmp134_; const gchar* _tmp135_; const gchar* _tmp136_; gchar* _tmp137_ = NULL; gchar* _tmp138_; ValaCCodeMemberAccess* _tmp139_; ValaCCodeMemberAccess* _tmp140_; ValaCCodeFunctionCall* _tmp141_; ValaCCodeFunctionCall* _tmp142_; ValaCCodeFunctionCall* vcall; ValaCCodeFunctionCall* _tmp143_; ValaCCodeIdentifier* _tmp144_; ValaCCodeIdentifier* _tmp145_; ValaCCodeFunction* _tmp146_; ValaCCodeFunction* _tmp147_; ValaCCodeFunctionCall* _tmp148_; _tmp133_ = vcast; _tmp134_ = prop; _tmp135_ = vala_symbol_get_name ((ValaSymbol*) _tmp134_); _tmp136_ = _tmp135_; _tmp137_ = g_strdup_printf ("get_%s", _tmp136_); _tmp138_ = _tmp137_; _tmp139_ = vala_ccode_member_access_new_pointer (_tmp133_, _tmp138_); _tmp140_ = _tmp139_; _tmp141_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp140_); _tmp142_ = _tmp141_; _vala_ccode_node_unref0 (_tmp140_); _g_free0 (_tmp138_); vcall = _tmp142_; _tmp143_ = vcall; _tmp144_ = vala_ccode_identifier_new ("this"); _tmp145_ = _tmp144_; vala_ccode_function_call_add_argument (_tmp143_, (ValaCCodeExpression*) _tmp145_); _vala_ccode_node_unref0 (_tmp145_); _tmp146_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp147_ = _tmp146_; _tmp148_ = vcall; vala_ccode_function_add_return (_tmp147_, (ValaCCodeExpression*) _tmp148_); _vala_ccode_node_unref0 (vcall); } else { ValaCCodeExpression* _tmp149_; ValaProperty* _tmp150_; const gchar* _tmp151_; const gchar* _tmp152_; gchar* _tmp153_ = NULL; gchar* _tmp154_; ValaCCodeMemberAccess* _tmp155_; ValaCCodeMemberAccess* _tmp156_; ValaCCodeFunctionCall* _tmp157_; ValaCCodeFunctionCall* _tmp158_; ValaCCodeFunctionCall* vcall; ValaCCodeFunctionCall* _tmp159_; ValaCCodeIdentifier* _tmp160_; ValaCCodeIdentifier* _tmp161_; ValaCCodeFunctionCall* _tmp162_; ValaCCodeIdentifier* _tmp163_; ValaCCodeIdentifier* _tmp164_; ValaCCodeFunction* _tmp165_; ValaCCodeFunction* _tmp166_; ValaCCodeFunctionCall* _tmp167_; _tmp149_ = vcast; _tmp150_ = prop; _tmp151_ = vala_symbol_get_name ((ValaSymbol*) _tmp150_); _tmp152_ = _tmp151_; _tmp153_ = g_strdup_printf ("set_%s", _tmp152_); _tmp154_ = _tmp153_; _tmp155_ = vala_ccode_member_access_new_pointer (_tmp149_, _tmp154_); _tmp156_ = _tmp155_; _tmp157_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp156_); _tmp158_ = _tmp157_; _vala_ccode_node_unref0 (_tmp156_); _g_free0 (_tmp154_); vcall = _tmp158_; _tmp159_ = vcall; _tmp160_ = vala_ccode_identifier_new ("this"); _tmp161_ = _tmp160_; vala_ccode_function_call_add_argument (_tmp159_, (ValaCCodeExpression*) _tmp161_); _vala_ccode_node_unref0 (_tmp161_); _tmp162_ = vcall; _tmp163_ = vala_ccode_identifier_new ("value"); _tmp164_ = _tmp163_; vala_ccode_function_call_add_argument (_tmp162_, (ValaCCodeExpression*) _tmp164_); _vala_ccode_node_unref0 (_tmp164_); _tmp165_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp166_ = _tmp165_; _tmp167_ = vcall; vala_ccode_function_add_expression (_tmp166_, (ValaCCodeExpression*) _tmp167_); _vala_ccode_node_unref0 (vcall); } vala_dova_base_module_pop_function ((ValaDovaBaseModule*) self); _tmp168_ = ((ValaDovaBaseModule*) self)->cfile; _tmp169_ = function; vala_ccode_file_add_function (_tmp168_, _tmp169_); _tmp170_ = prop; _tmp171_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp170_); _tmp172_ = _tmp171_; _tmp173_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp172_); _tmp174_ = _tmp173_; _tmp175_ = g_strdup_printf ("(%s *this", _tmp174_); _tmp176_ = _tmp175_; _g_free0 (_tmp174_); param_list = _tmp176_; _tmp177_ = acc; _tmp178_ = vala_property_accessor_get_readable (_tmp177_); _tmp179_ = _tmp178_; if (!_tmp179_) { const gchar* _tmp180_; gchar* _tmp181_; const gchar* _tmp182_; ValaPropertyAccessor* _tmp183_; ValaDataType* _tmp184_; ValaDataType* _tmp185_; gchar* _tmp186_ = NULL; gchar* _tmp187_; gchar* _tmp188_; _tmp180_ = param_list; _tmp181_ = g_strconcat (_tmp180_, ", ", NULL); _g_free0 (param_list); param_list = _tmp181_; _tmp182_ = param_list; _tmp183_ = acc; _tmp184_ = vala_property_accessor_get_value_type (_tmp183_); _tmp185_ = _tmp184_; _tmp186_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp185_); _tmp187_ = _tmp186_; _tmp188_ = g_strconcat (_tmp182_, _tmp187_, NULL); _g_free0 (param_list); param_list = _tmp188_; _g_free0 (_tmp187_); } _tmp189_ = param_list; _tmp190_ = g_strconcat (_tmp189_, ")", NULL); _g_free0 (param_list); param_list = _tmp190_; _tmp192_ = acc; _tmp193_ = vala_property_accessor_get_readable (_tmp192_); _tmp194_ = _tmp193_; if (_tmp194_) { _tmp191_ = "get"; } else { _tmp191_ = "set"; } _tmp195_ = prop; _tmp196_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp195_); _tmp197_ = _tmp196_; _tmp198_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, _tmp197_); _tmp199_ = _tmp198_; _tmp200_ = _tmp191_; _tmp201_ = prop; _tmp202_ = vala_symbol_get_name ((ValaSymbol*) _tmp201_); _tmp203_ = _tmp202_; _tmp204_ = g_strdup_printf ("%soverride_%s_%s", _tmp199_, _tmp200_, _tmp203_); _tmp205_ = _tmp204_; _tmp206_ = vala_ccode_function_new (_tmp205_, "void"); _tmp207_ = _tmp206_; _g_free0 (_tmp205_); _g_free0 (_tmp199_); override_func = _tmp207_; _tmp208_ = override_func; _tmp209_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp210_ = _tmp209_; vala_ccode_function_add_parameter (_tmp208_, _tmp210_); _vala_ccode_node_unref0 (_tmp210_); _tmp212_ = acc; _tmp213_ = vala_property_accessor_get_readable (_tmp212_); _tmp214_ = _tmp213_; if (_tmp214_) { ValaPropertyAccessor* _tmp215_; ValaDataType* _tmp216_; ValaDataType* _tmp217_; gchar* _tmp218_ = NULL; _tmp215_ = acc; _tmp216_ = vala_property_accessor_get_value_type (_tmp215_); _tmp217_ = _tmp216_; _tmp218_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp217_); _g_free0 (_tmp211_); _tmp211_ = _tmp218_; } else { gchar* _tmp219_; _tmp219_ = g_strdup ("void"); _g_free0 (_tmp211_); _tmp211_ = _tmp219_; } _tmp220_ = override_func; _tmp221_ = param_list; _tmp222_ = g_strdup_printf ("(*function) %s", _tmp221_); _tmp223_ = _tmp222_; _tmp224_ = _tmp211_; _tmp225_ = vala_ccode_parameter_new (_tmp223_, _tmp224_); _tmp226_ = _tmp225_; vala_ccode_function_add_parameter (_tmp220_, _tmp226_); _vala_ccode_node_unref0 (_tmp226_); _g_free0 (_tmp223_); _tmp227_ = override_func; vala_dova_base_module_push_function ((ValaDovaBaseModule*) self, _tmp227_); _tmp228_ = prop; _tmp229_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp228_); _tmp230_ = _tmp229_; _tmp231_ = vala_ccode_identifier_new ("type"); _tmp232_ = _tmp231_; _tmp233_ = vala_dova_base_module_get_type_private_from_type ((ValaDovaBaseModule*) self, VALA_OBJECT_TYPE_SYMBOL (_tmp230_), (ValaCCodeExpression*) _tmp232_); _vala_ccode_node_unref0 (vcast); vcast = _tmp233_; _vala_ccode_node_unref0 (_tmp232_); _tmp235_ = acc; _tmp236_ = vala_property_accessor_get_readable (_tmp235_); _tmp237_ = _tmp236_; if (_tmp237_) { _tmp234_ = "get"; } else { _tmp234_ = "set"; } _tmp238_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp239_ = _tmp238_; _tmp240_ = vcast; _tmp241_ = _tmp234_; _tmp242_ = prop; _tmp243_ = vala_symbol_get_name ((ValaSymbol*) _tmp242_); _tmp244_ = _tmp243_; _tmp245_ = g_strdup_printf ("%s_%s", _tmp241_, _tmp244_); _tmp246_ = _tmp245_; _tmp247_ = vala_ccode_member_access_new_pointer (_tmp240_, _tmp246_); _tmp248_ = _tmp247_; _tmp249_ = vala_ccode_identifier_new ("function"); _tmp250_ = _tmp249_; vala_ccode_function_add_assignment (_tmp239_, (ValaCCodeExpression*) _tmp248_, (ValaCCodeExpression*) _tmp250_); _vala_ccode_node_unref0 (_tmp250_); _vala_ccode_node_unref0 (_tmp248_); _g_free0 (_tmp246_); vala_dova_base_module_pop_function ((ValaDovaBaseModule*) self); _tmp251_ = ((ValaDovaBaseModule*) self)->cfile; _tmp252_ = override_func; vala_ccode_file_add_function (_tmp251_, _tmp252_); _g_free0 (_tmp211_); _vala_ccode_node_unref0 (override_func); _g_free0 (param_list); _vala_ccode_node_unref0 (vcast); _vala_ccode_node_unref0 (function); } _tmp253_ = prop; _tmp254_ = vala_property_get_is_abstract (_tmp253_); _tmp255_ = _tmp254_; if (!_tmp255_) { ValaCCodeFunction* function = NULL; ValaPropertyAccessor* _tmp256_; gboolean _tmp257_; gboolean _tmp258_; ValaProperty* _tmp268_; ValaMemberBinding _tmp269_; ValaMemberBinding _tmp270_; ValaPropertyAccessor* _tmp273_; gboolean _tmp274_; gboolean _tmp275_; gboolean _tmp278_ = FALSE; gboolean _tmp279_ = FALSE; ValaProperty* _tmp280_; gboolean _tmp281_ = FALSE; gboolean _tmp290_; gboolean _tmp293_; ValaCCodeFunction* _tmp298_; ValaPropertyAccessor* _tmp299_; ValaBlock* _tmp300_; ValaBlock* _tmp301_; ValaPropertyAccessor* _tmp302_; gboolean _tmp303_; gboolean _tmp304_; ValaCCodeFile* _tmp331_; ValaCCodeFunction* _tmp332_; _tmp256_ = acc; _tmp257_ = vala_property_accessor_get_writable (_tmp256_); _tmp258_ = _tmp257_; if (_tmp258_) { const gchar* _tmp259_; ValaCCodeFunction* _tmp260_; _tmp259_ = cname; _tmp260_ = vala_ccode_function_new (_tmp259_, "void"); _vala_ccode_node_unref0 (function); function = _tmp260_; } else { const gchar* _tmp261_; ValaPropertyAccessor* _tmp262_; ValaDataType* _tmp263_; ValaDataType* _tmp264_; gchar* _tmp265_ = NULL; gchar* _tmp266_; ValaCCodeFunction* _tmp267_; _tmp261_ = cname; _tmp262_ = acc; _tmp263_ = vala_property_accessor_get_value_type (_tmp262_); _tmp264_ = _tmp263_; _tmp265_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp264_); _tmp266_ = _tmp265_; _tmp267_ = vala_ccode_function_new (_tmp261_, _tmp266_); _vala_ccode_node_unref0 (function); function = _tmp267_; _g_free0 (_tmp266_); } _tmp268_ = prop; _tmp269_ = vala_property_get_binding (_tmp268_); _tmp270_ = _tmp269_; if (_tmp270_ == VALA_MEMBER_BINDING_INSTANCE) { ValaCCodeFunction* _tmp271_; ValaCCodeParameter* _tmp272_; _tmp271_ = function; _tmp272_ = cselfparam; vala_ccode_function_add_parameter (_tmp271_, _tmp272_); } _tmp273_ = acc; _tmp274_ = vala_property_accessor_get_writable (_tmp273_); _tmp275_ = _tmp274_; if (_tmp275_) { ValaCCodeFunction* _tmp276_; ValaCCodeParameter* _tmp277_; _tmp276_ = function; _tmp277_ = cvalueparam; vala_ccode_function_add_parameter (_tmp276_, _tmp277_); } _tmp280_ = prop; _tmp281_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp280_); if (_tmp281_) { _tmp279_ = TRUE; } else { gboolean _tmp282_ = FALSE; ValaPropertyAccessor* _tmp283_; gboolean _tmp284_; gboolean _tmp285_; gboolean _tmp289_; _tmp283_ = acc; _tmp284_ = vala_property_accessor_get_readable (_tmp283_); _tmp285_ = _tmp284_; if (_tmp285_) { _tmp282_ = TRUE; } else { ValaPropertyAccessor* _tmp286_; gboolean _tmp287_; gboolean _tmp288_; _tmp286_ = acc; _tmp287_ = vala_property_accessor_get_writable (_tmp286_); _tmp288_ = _tmp287_; _tmp282_ = _tmp288_; } _tmp289_ = _tmp282_; _tmp279_ = !_tmp289_; } _tmp290_ = _tmp279_; if (_tmp290_) { _tmp278_ = TRUE; } else { ValaPropertyAccessor* _tmp291_; gboolean _tmp292_ = FALSE; _tmp291_ = acc; _tmp292_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp291_); _tmp278_ = _tmp292_; } _tmp293_ = _tmp278_; if (_tmp293_) { ValaCCodeFunction* _tmp294_; ValaCCodeFunction* _tmp295_; ValaCCodeModifiers _tmp296_; ValaCCodeModifiers _tmp297_; _tmp294_ = function; _tmp295_ = function; _tmp296_ = vala_ccode_function_get_modifiers (_tmp295_); _tmp297_ = _tmp296_; vala_ccode_function_set_modifiers (_tmp295_, _tmp297_ | VALA_CCODE_MODIFIERS_STATIC); } _tmp298_ = function; vala_dova_base_module_push_function ((ValaDovaBaseModule*) self, _tmp298_); _tmp299_ = acc; _tmp300_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp299_); _tmp301_ = _tmp300_; vala_code_node_emit ((ValaCodeNode*) _tmp301_, (ValaCodeGenerator*) self); _tmp302_ = acc; _tmp303_ = vala_property_accessor_get_readable (_tmp302_); _tmp304_ = _tmp303_; if (_tmp304_) { ValaPropertyAccessor* _tmp305_; ValaDataType* _tmp306_; ValaDataType* _tmp307_; gchar* _tmp308_ = NULL; gchar* _tmp309_; ValaCCodeDeclaration* _tmp310_; ValaCCodeDeclaration* _tmp311_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp312_; ValaPropertyAccessor* _tmp313_; ValaDataType* _tmp314_; ValaDataType* _tmp315_; ValaCCodeExpression* _tmp316_ = NULL; ValaCCodeExpression* _tmp317_; ValaCCodeVariableDeclarator* _tmp318_; ValaCCodeVariableDeclarator* _tmp319_; ValaCCodeFunction* _tmp320_; ValaCCodeBlock* _tmp321_; ValaCCodeBlock* _tmp322_; ValaCCodeDeclaration* _tmp323_; ValaCCodeFunction* _tmp324_; ValaCCodeBlock* _tmp325_; ValaCCodeBlock* _tmp326_; ValaCCodeIdentifier* _tmp327_; ValaCCodeIdentifier* _tmp328_; ValaCCodeReturnStatement* _tmp329_; ValaCCodeReturnStatement* _tmp330_; _tmp305_ = acc; _tmp306_ = vala_property_accessor_get_value_type (_tmp305_); _tmp307_ = _tmp306_; _tmp308_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp307_); _tmp309_ = _tmp308_; _tmp310_ = vala_ccode_declaration_new (_tmp309_); _tmp311_ = _tmp310_; _g_free0 (_tmp309_); _cdecl_ = _tmp311_; _tmp312_ = _cdecl_; _tmp313_ = acc; _tmp314_ = vala_property_accessor_get_value_type (_tmp313_); _tmp315_ = _tmp314_; _tmp316_ = vala_dova_base_module_default_value_for_type ((ValaDovaBaseModule*) self, _tmp315_, TRUE); _tmp317_ = _tmp316_; _tmp318_ = vala_ccode_variable_declarator_new_zero ("result", _tmp317_, NULL); _tmp319_ = _tmp318_; vala_ccode_declaration_add_declarator (_tmp312_, (ValaCCodeDeclarator*) _tmp319_); _vala_ccode_node_unref0 (_tmp319_); _vala_ccode_node_unref0 (_tmp317_); _tmp320_ = function; _tmp321_ = vala_ccode_function_get_block (_tmp320_); _tmp322_ = _tmp321_; _tmp323_ = _cdecl_; vala_ccode_block_prepend_statement (_tmp322_, (ValaCCodeNode*) _tmp323_); _tmp324_ = function; _tmp325_ = vala_ccode_function_get_block (_tmp324_); _tmp326_ = _tmp325_; _tmp327_ = vala_ccode_identifier_new ("result"); _tmp328_ = _tmp327_; _tmp329_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp328_); _tmp330_ = _tmp329_; vala_ccode_block_add_statement (_tmp326_, (ValaCCodeNode*) _tmp330_); _vala_ccode_node_unref0 (_tmp330_); _vala_ccode_node_unref0 (_tmp328_); _vala_ccode_node_unref0 (_cdecl_); } _tmp331_ = ((ValaDovaBaseModule*) self)->cfile; _tmp332_ = function; vala_ccode_file_add_function (_tmp331_, _tmp332_); _vala_ccode_node_unref0 (function); } vala_dova_base_module_pop_context ((ValaDovaBaseModule*) self); _g_free0 (cname); _vala_ccode_node_unref0 (cvalueparam); _vala_ccode_node_unref0 (cselfparam); _vala_code_node_unref0 (this_type); _vala_code_node_unref0 (prop); } static void vala_dova_object_module_real_generate_interface_declaration (ValaDovaBaseModule* base, ValaInterface* iface, ValaCCodeFile* decl_space) { ValaDovaObjectModule * self; ValaCCodeFile* _tmp0_; ValaInterface* _tmp1_; ValaInterface* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gboolean _tmp5_ = FALSE; gboolean _tmp6_; ValaClass* _tmp7_; ValaCCodeFile* _tmp8_; ValaCCodeFile* _tmp9_; ValaInterface* _tmp10_; gchar* _tmp11_ = NULL; gchar* _tmp12_; ValaCCodeVariableDeclarator* _tmp13_; ValaCCodeVariableDeclarator* _tmp14_; ValaCCodeTypeDefinition* _tmp15_; ValaCCodeTypeDefinition* _tmp16_; ValaClass* _tmp17_; ValaCCodeFile* _tmp18_; ValaInterface* _tmp19_; gchar* _tmp20_ = NULL; gchar* _tmp21_; gchar* _tmp22_ = NULL; gchar* _tmp23_; ValaCCodeFunction* _tmp24_; ValaCCodeFunction* _tmp25_; ValaCCodeFunction* type_fun; ValaInterface* _tmp26_; gboolean _tmp27_ = FALSE; ValaCCodeFile* _tmp50_; ValaCCodeFunction* _tmp51_; ValaInterface* _tmp52_; gchar* _tmp53_ = NULL; gchar* _tmp54_; gchar* _tmp55_ = NULL; gchar* _tmp56_; ValaCCodeFunction* _tmp57_; ValaCCodeFunction* _tmp58_; ValaCCodeFunction* type_init_fun; ValaInterface* _tmp59_; gboolean _tmp60_ = FALSE; ValaCCodeFunction* _tmp62_; ValaCCodeParameter* _tmp63_; ValaCCodeParameter* _tmp64_; ValaCCodeFile* _tmp86_; ValaCCodeFunction* _tmp87_; self = (ValaDovaObjectModule*) base; g_return_if_fail (iface != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = iface; _tmp2_ = iface; _tmp3_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); if (_tmp6_) { return; } _tmp7_ = ((ValaDovaBaseModule*) self)->object_class; _tmp8_ = decl_space; vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, _tmp7_, _tmp8_); _tmp9_ = decl_space; _tmp10_ = iface; _tmp11_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp10_); _tmp12_ = _tmp11_; _tmp13_ = vala_ccode_variable_declarator_new (_tmp12_, NULL, NULL); _tmp14_ = _tmp13_; _tmp15_ = vala_ccode_type_definition_new ("DovaObject", (ValaCCodeDeclarator*) _tmp14_); _tmp16_ = _tmp15_; vala_ccode_file_add_type_declaration (_tmp9_, (ValaCCodeNode*) _tmp16_); _vala_ccode_node_unref0 (_tmp16_); _vala_ccode_node_unref0 (_tmp14_); _g_free0 (_tmp12_); _tmp17_ = ((ValaDovaBaseModule*) self)->type_class; _tmp18_ = decl_space; vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, _tmp17_, _tmp18_); _tmp19_ = iface; _tmp20_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp19_, NULL); _tmp21_ = _tmp20_; _tmp22_ = g_strdup_printf ("%s_type_get", _tmp21_); _tmp23_ = _tmp22_; _tmp24_ = vala_ccode_function_new (_tmp23_, "DovaType *"); _tmp25_ = _tmp24_; _g_free0 (_tmp23_); _g_free0 (_tmp21_); type_fun = _tmp25_; _tmp26_ = iface; _tmp27_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp26_); if (_tmp27_) { ValaCCodeFunction* _tmp28_; _tmp28_ = type_fun; vala_ccode_function_set_modifiers (_tmp28_, VALA_CCODE_MODIFIERS_STATIC); } { ValaInterface* _tmp29_; ValaList* _tmp30_ = NULL; ValaList* _type_param_list; ValaList* _tmp31_; gint _tmp32_; gint _tmp33_; gint _type_param_size; gint _type_param_index; _tmp29_ = iface; _tmp30_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp29_); _type_param_list = _tmp30_; _tmp31_ = _type_param_list; _tmp32_ = vala_collection_get_size ((ValaCollection*) _tmp31_); _tmp33_ = _tmp32_; _type_param_size = _tmp33_; _type_param_index = -1; while (TRUE) { gint _tmp34_; gint _tmp35_; gint _tmp36_; ValaList* _tmp37_; gint _tmp38_; gpointer _tmp39_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp40_; ValaTypeParameter* _tmp41_; const gchar* _tmp42_; const gchar* _tmp43_; gchar* _tmp44_ = NULL; gchar* _tmp45_; gchar* _tmp46_ = NULL; gchar* _tmp47_; ValaCCodeParameter* _tmp48_; ValaCCodeParameter* _tmp49_; _tmp34_ = _type_param_index; _type_param_index = _tmp34_ + 1; _tmp35_ = _type_param_index; _tmp36_ = _type_param_size; if (!(_tmp35_ < _tmp36_)) { break; } _tmp37_ = _type_param_list; _tmp38_ = _type_param_index; _tmp39_ = vala_list_get (_tmp37_, _tmp38_); type_param = (ValaTypeParameter*) _tmp39_; _tmp40_ = type_fun; _tmp41_ = type_param; _tmp42_ = vala_symbol_get_name ((ValaSymbol*) _tmp41_); _tmp43_ = _tmp42_; _tmp44_ = g_utf8_strdown (_tmp43_, (gssize) (-1)); _tmp45_ = _tmp44_; _tmp46_ = g_strdup_printf ("%s_type", _tmp45_); _tmp47_ = _tmp46_; _tmp48_ = vala_ccode_parameter_new (_tmp47_, "DovaType *"); _tmp49_ = _tmp48_; vala_ccode_function_add_parameter (_tmp40_, _tmp49_); _vala_ccode_node_unref0 (_tmp49_); _g_free0 (_tmp47_); _g_free0 (_tmp45_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _tmp50_ = decl_space; _tmp51_ = type_fun; vala_ccode_file_add_function_declaration (_tmp50_, _tmp51_); _tmp52_ = iface; _tmp53_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp52_, NULL); _tmp54_ = _tmp53_; _tmp55_ = g_strdup_printf ("%s_type_init", _tmp54_); _tmp56_ = _tmp55_; _tmp57_ = vala_ccode_function_new (_tmp56_, "void"); _tmp58_ = _tmp57_; _g_free0 (_tmp56_); _g_free0 (_tmp54_); type_init_fun = _tmp58_; _tmp59_ = iface; _tmp60_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp59_); if (_tmp60_) { ValaCCodeFunction* _tmp61_; _tmp61_ = type_init_fun; vala_ccode_function_set_modifiers (_tmp61_, VALA_CCODE_MODIFIERS_STATIC); } _tmp62_ = type_init_fun; _tmp63_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp64_ = _tmp63_; vala_ccode_function_add_parameter (_tmp62_, _tmp64_); _vala_ccode_node_unref0 (_tmp64_); { ValaInterface* _tmp65_; ValaList* _tmp66_ = NULL; ValaList* _type_param_list; ValaList* _tmp67_; gint _tmp68_; gint _tmp69_; gint _type_param_size; gint _type_param_index; _tmp65_ = iface; _tmp66_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp65_); _type_param_list = _tmp66_; _tmp67_ = _type_param_list; _tmp68_ = vala_collection_get_size ((ValaCollection*) _tmp67_); _tmp69_ = _tmp68_; _type_param_size = _tmp69_; _type_param_index = -1; while (TRUE) { gint _tmp70_; gint _tmp71_; gint _tmp72_; ValaList* _tmp73_; gint _tmp74_; gpointer _tmp75_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp76_; ValaTypeParameter* _tmp77_; const gchar* _tmp78_; const gchar* _tmp79_; gchar* _tmp80_ = NULL; gchar* _tmp81_; gchar* _tmp82_ = NULL; gchar* _tmp83_; ValaCCodeParameter* _tmp84_; ValaCCodeParameter* _tmp85_; _tmp70_ = _type_param_index; _type_param_index = _tmp70_ + 1; _tmp71_ = _type_param_index; _tmp72_ = _type_param_size; if (!(_tmp71_ < _tmp72_)) { break; } _tmp73_ = _type_param_list; _tmp74_ = _type_param_index; _tmp75_ = vala_list_get (_tmp73_, _tmp74_); type_param = (ValaTypeParameter*) _tmp75_; _tmp76_ = type_init_fun; _tmp77_ = type_param; _tmp78_ = vala_symbol_get_name ((ValaSymbol*) _tmp77_); _tmp79_ = _tmp78_; _tmp80_ = g_utf8_strdown (_tmp79_, (gssize) (-1)); _tmp81_ = _tmp80_; _tmp82_ = g_strdup_printf ("%s_type", _tmp81_); _tmp83_ = _tmp82_; _tmp84_ = vala_ccode_parameter_new (_tmp83_, "DovaType *"); _tmp85_ = _tmp84_; vala_ccode_function_add_parameter (_tmp76_, _tmp85_); _vala_ccode_node_unref0 (_tmp85_); _g_free0 (_tmp83_); _g_free0 (_tmp81_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _tmp86_ = decl_space; _tmp87_ = type_init_fun; vala_ccode_file_add_function_declaration (_tmp86_, _tmp87_); _vala_ccode_node_unref0 (type_init_fun); _vala_ccode_node_unref0 (type_fun); } static gboolean vala_dova_object_module_real_method_has_wrapper (ValaDovaBaseModule* base, ValaMethod* method) { ValaDovaObjectModule * self; gboolean result = FALSE; ValaMethod* _tmp0_; ValaAttribute* _tmp1_ = NULL; ValaAttribute* _tmp2_; gboolean _tmp3_; self = (ValaDovaObjectModule*) base; g_return_val_if_fail (method != NULL, FALSE); _tmp0_ = method; _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp0_, "NoWrapper"); _tmp2_ = _tmp1_; _tmp3_ = _tmp2_ == NULL; _vala_code_node_unref0 (_tmp2_); result = _tmp3_; return result; } static gchar* vala_dova_object_module_real_get_custom_creturn_type (ValaDovaBaseModule* base, ValaMethod* m) { ValaDovaObjectModule * self; gchar* result = NULL; ValaMethod* _tmp0_; ValaAttribute* _tmp1_ = NULL; ValaAttribute* attr; ValaAttribute* _tmp2_; self = (ValaDovaObjectModule*) base; g_return_val_if_fail (m != NULL, NULL); _tmp0_ = m; _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp0_, "CCode"); attr = _tmp1_; _tmp2_ = attr; if (_tmp2_ != NULL) { ValaAttribute* _tmp3_; gchar* _tmp4_ = NULL; gchar* type; const gchar* _tmp5_; _tmp3_ = attr; _tmp4_ = vala_attribute_get_string (_tmp3_, "type"); type = _tmp4_; _tmp5_ = type; if (_tmp5_ != NULL) { result = type; _vala_code_node_unref0 (attr); return result; } _g_free0 (type); } result = NULL; _vala_code_node_unref0 (attr); return result; } static void vala_dova_object_module_real_generate_method_declaration (ValaDovaBaseModule* base, ValaMethod* m, ValaCCodeFile* decl_space) { ValaDovaObjectModule * self; ValaCCodeFile* _tmp0_; ValaMethod* _tmp1_; ValaMethod* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; gboolean _tmp5_ = FALSE; gboolean _tmp6_; ValaMethod* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; ValaCCodeFunction* _tmp10_; ValaCCodeFunction* _tmp11_; ValaCCodeFunction* function; ValaMethod* _tmp12_; gboolean _tmp13_ = FALSE; ValaMethod* _tmp25_; ValaCCodeFile* _tmp26_; ValaCCodeFunction* _tmp27_; ValaCCodeIdentifier* _tmp28_; ValaCCodeIdentifier* _tmp29_; ValaCCodeFunctionCall* _tmp30_; ValaCCodeFunctionCall* _tmp31_; ValaCCodeFile* _tmp32_; ValaCCodeFunction* _tmp33_; gboolean _tmp34_ = FALSE; ValaMethod* _tmp35_; gboolean _tmp36_; gboolean _tmp37_; gboolean _tmp41_; gboolean _tmp127_ = FALSE; ValaMethod* _tmp128_; gboolean _tmp132_; self = (ValaDovaObjectModule*) base; g_return_if_fail (m != NULL); g_return_if_fail (decl_space != NULL); _tmp0_ = decl_space; _tmp1_ = m; _tmp2_ = m; _tmp3_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_); _tmp6_ = _tmp5_; _g_free0 (_tmp4_); if (_tmp6_) { return; } _tmp7_ = m; _tmp8_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp7_); _tmp9_ = _tmp8_; _tmp10_ = vala_ccode_function_new (_tmp9_, "void"); _tmp11_ = _tmp10_; _g_free0 (_tmp9_); function = _tmp11_; _tmp12_ = m; _tmp13_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp12_); if (_tmp13_) { ValaCCodeFunction* _tmp14_; ValaCCodeFunction* _tmp15_; ValaCCodeModifiers _tmp16_; ValaCCodeModifiers _tmp17_; ValaMethod* _tmp18_; gboolean _tmp19_; gboolean _tmp20_; _tmp14_ = function; _tmp15_ = function; _tmp16_ = vala_ccode_function_get_modifiers (_tmp15_); _tmp17_ = _tmp16_; vala_ccode_function_set_modifiers (_tmp15_, _tmp17_ | VALA_CCODE_MODIFIERS_STATIC); _tmp18_ = m; _tmp19_ = vala_method_get_is_inline (_tmp18_); _tmp20_ = _tmp19_; if (_tmp20_) { ValaCCodeFunction* _tmp21_; ValaCCodeFunction* _tmp22_; ValaCCodeModifiers _tmp23_; ValaCCodeModifiers _tmp24_; _tmp21_ = function; _tmp22_ = function; _tmp23_ = vala_ccode_function_get_modifiers (_tmp22_); _tmp24_ = _tmp23_; vala_ccode_function_set_modifiers (_tmp22_, _tmp24_ | VALA_CCODE_MODIFIERS_INLINE); } } _tmp25_ = m; _tmp26_ = decl_space; _tmp27_ = function; _tmp28_ = vala_ccode_identifier_new ("fake"); _tmp29_ = _tmp28_; _tmp30_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp29_); _tmp31_ = _tmp30_; vala_dova_base_module_generate_cparameters ((ValaDovaBaseModule*) self, _tmp25_, _tmp26_, _tmp27_, NULL, _tmp31_); _vala_ccode_node_unref0 (_tmp31_); _vala_ccode_node_unref0 (_tmp29_); _tmp32_ = decl_space; _tmp33_ = function; vala_ccode_file_add_function_declaration (_tmp32_, _tmp33_); _tmp35_ = m; _tmp36_ = vala_method_get_is_abstract (_tmp35_); _tmp37_ = _tmp36_; if (_tmp37_) { _tmp34_ = TRUE; } else { ValaMethod* _tmp38_; gboolean _tmp39_; gboolean _tmp40_; _tmp38_ = m; _tmp39_ = vala_method_get_is_virtual (_tmp38_); _tmp40_ = _tmp39_; _tmp34_ = _tmp40_; } _tmp41_ = _tmp34_; if (_tmp41_) { ValaCCodeFunction* _tmp42_; ValaCCodeFunction* _tmp43_ = NULL; ValaCCodeFunction* base_func; ValaCCodeFunction* _tmp44_; ValaMethod* _tmp45_; ValaSymbol* _tmp46_; ValaSymbol* _tmp47_; gchar* _tmp48_ = NULL; gchar* _tmp49_; ValaMethod* _tmp50_; const gchar* _tmp51_; const gchar* _tmp52_; gchar* _tmp53_ = NULL; gchar* _tmp54_; ValaCCodeFunction* _tmp55_; ValaCCodeParameter* _tmp56_; ValaCCodeParameter* _tmp57_; ValaCCodeFile* _tmp58_; ValaCCodeFunction* _tmp59_; ValaMethod* _tmp60_; ValaSymbol* _tmp61_; ValaSymbol* _tmp62_; gchar* _tmp63_ = NULL; gchar* _tmp64_; gchar* _tmp65_ = NULL; gchar* _tmp66_; gchar* param_list; ValaMethod* _tmp87_; ValaDataType* _tmp88_; ValaDataType* _tmp89_; const gchar* _tmp92_; gchar* _tmp93_; ValaMethod* _tmp94_; ValaSymbol* _tmp95_; ValaSymbol* _tmp96_; gchar* _tmp97_ = NULL; gchar* _tmp98_; ValaMethod* _tmp99_; const gchar* _tmp100_; const gchar* _tmp101_; gchar* _tmp102_ = NULL; gchar* _tmp103_; ValaCCodeFunction* _tmp104_; ValaCCodeFunction* _tmp105_; ValaCCodeFunction* override_func; ValaCCodeFunction* _tmp106_; ValaCCodeParameter* _tmp107_; ValaCCodeParameter* _tmp108_; gchar* _tmp109_ = NULL; ValaMethod* _tmp110_; ValaDataType* _tmp111_; ValaDataType* _tmp112_; ValaCCodeFunction* _tmp118_; const gchar* _tmp119_; gchar* _tmp120_ = NULL; gchar* _tmp121_; const gchar* _tmp122_; ValaCCodeParameter* _tmp123_; ValaCCodeParameter* _tmp124_; ValaCCodeFile* _tmp125_; ValaCCodeFunction* _tmp126_; _tmp42_ = function; _tmp43_ = vala_ccode_function_copy (_tmp42_); base_func = _tmp43_; _tmp44_ = base_func; _tmp45_ = m; _tmp46_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp45_); _tmp47_ = _tmp46_; _tmp48_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, _tmp47_); _tmp49_ = _tmp48_; _tmp50_ = m; _tmp51_ = vala_symbol_get_name ((ValaSymbol*) _tmp50_); _tmp52_ = _tmp51_; _tmp53_ = g_strdup_printf ("%sbase_%s", _tmp49_, _tmp52_); _tmp54_ = _tmp53_; vala_ccode_function_set_name (_tmp44_, _tmp54_); _g_free0 (_tmp54_); _g_free0 (_tmp49_); _tmp55_ = base_func; _tmp56_ = vala_ccode_parameter_new ("base_type", "DovaType *"); _tmp57_ = _tmp56_; vala_ccode_function_insert_parameter (_tmp55_, 0, _tmp57_); _vala_ccode_node_unref0 (_tmp57_); _tmp58_ = decl_space; _tmp59_ = base_func; vala_ccode_file_add_function_declaration (_tmp58_, _tmp59_); _tmp60_ = m; _tmp61_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp60_); _tmp62_ = _tmp61_; _tmp63_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp62_); _tmp64_ = _tmp63_; _tmp65_ = g_strdup_printf ("(%s *this", _tmp64_); _tmp66_ = _tmp65_; _g_free0 (_tmp64_); param_list = _tmp66_; { ValaMethod* _tmp67_; ValaList* _tmp68_ = NULL; ValaList* _param_list; ValaList* _tmp69_; gint _tmp70_; gint _tmp71_; gint _param_size; gint _param_index; _tmp67_ = m; _tmp68_ = vala_method_get_parameters (_tmp67_); _param_list = _tmp68_; _tmp69_ = _param_list; _tmp70_ = vala_collection_get_size ((ValaCollection*) _tmp69_); _tmp71_ = _tmp70_; _param_size = _tmp71_; _param_index = -1; while (TRUE) { gint _tmp72_; gint _tmp73_; gint _tmp74_; ValaList* _tmp75_; gint _tmp76_; gpointer _tmp77_ = NULL; ValaParameter* param; const gchar* _tmp78_; gchar* _tmp79_; const gchar* _tmp80_; ValaParameter* _tmp81_; ValaDataType* _tmp82_; ValaDataType* _tmp83_; gchar* _tmp84_ = NULL; gchar* _tmp85_; gchar* _tmp86_; _tmp72_ = _param_index; _param_index = _tmp72_ + 1; _tmp73_ = _param_index; _tmp74_ = _param_size; if (!(_tmp73_ < _tmp74_)) { break; } _tmp75_ = _param_list; _tmp76_ = _param_index; _tmp77_ = vala_list_get (_tmp75_, _tmp76_); param = (ValaParameter*) _tmp77_; _tmp78_ = param_list; _tmp79_ = g_strconcat (_tmp78_, ", ", NULL); _g_free0 (param_list); param_list = _tmp79_; _tmp80_ = param_list; _tmp81_ = param; _tmp82_ = vala_variable_get_variable_type ((ValaVariable*) _tmp81_); _tmp83_ = _tmp82_; _tmp84_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp83_); _tmp85_ = _tmp84_; _tmp86_ = g_strconcat (_tmp80_, _tmp85_, NULL); _g_free0 (param_list); param_list = _tmp86_; _g_free0 (_tmp85_); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp87_ = m; _tmp88_ = vala_method_get_return_type (_tmp87_); _tmp89_ = _tmp88_; if (VALA_IS_GENERIC_TYPE (_tmp89_)) { const gchar* _tmp90_; gchar* _tmp91_; _tmp90_ = param_list; _tmp91_ = g_strconcat (_tmp90_, ", void *", NULL); _g_free0 (param_list); param_list = _tmp91_; } _tmp92_ = param_list; _tmp93_ = g_strconcat (_tmp92_, ")", NULL); _g_free0 (param_list); param_list = _tmp93_; _tmp94_ = m; _tmp95_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp94_); _tmp96_ = _tmp95_; _tmp97_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, _tmp96_); _tmp98_ = _tmp97_; _tmp99_ = m; _tmp100_ = vala_symbol_get_name ((ValaSymbol*) _tmp99_); _tmp101_ = _tmp100_; _tmp102_ = g_strdup_printf ("%soverride_%s", _tmp98_, _tmp101_); _tmp103_ = _tmp102_; _tmp104_ = vala_ccode_function_new (_tmp103_, "void"); _tmp105_ = _tmp104_; _g_free0 (_tmp103_); _g_free0 (_tmp98_); override_func = _tmp105_; _tmp106_ = override_func; _tmp107_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp108_ = _tmp107_; vala_ccode_function_add_parameter (_tmp106_, _tmp108_); _vala_ccode_node_unref0 (_tmp108_); _tmp110_ = m; _tmp111_ = vala_method_get_return_type (_tmp110_); _tmp112_ = _tmp111_; if (VALA_IS_GENERIC_TYPE (_tmp112_)) { gchar* _tmp113_; _tmp113_ = g_strdup ("void"); _g_free0 (_tmp109_); _tmp109_ = _tmp113_; } else { ValaMethod* _tmp114_; ValaDataType* _tmp115_; ValaDataType* _tmp116_; gchar* _tmp117_ = NULL; _tmp114_ = m; _tmp115_ = vala_method_get_return_type (_tmp114_); _tmp116_ = _tmp115_; _tmp117_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp116_); _g_free0 (_tmp109_); _tmp109_ = _tmp117_; } _tmp118_ = override_func; _tmp119_ = param_list; _tmp120_ = g_strdup_printf ("(*function) %s", _tmp119_); _tmp121_ = _tmp120_; _tmp122_ = _tmp109_; _tmp123_ = vala_ccode_parameter_new (_tmp121_, _tmp122_); _tmp124_ = _tmp123_; vala_ccode_function_add_parameter (_tmp118_, _tmp124_); _vala_ccode_node_unref0 (_tmp124_); _g_free0 (_tmp121_); _tmp125_ = decl_space; _tmp126_ = override_func; vala_ccode_file_add_function_declaration (_tmp125_, _tmp126_); _g_free0 (_tmp109_); _vala_ccode_node_unref0 (override_func); _g_free0 (param_list); _vala_ccode_node_unref0 (base_func); } _tmp128_ = m; if (VALA_IS_CREATION_METHOD (_tmp128_)) { ValaMethod* _tmp129_; ValaSymbol* _tmp130_; ValaSymbol* _tmp131_; _tmp129_ = m; _tmp130_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp129_); _tmp131_ = _tmp130_; _tmp127_ = VALA_IS_CLASS (_tmp131_); } else { _tmp127_ = FALSE; } _tmp132_ = _tmp127_; if (_tmp132_) { ValaMethod* _tmp133_; ValaSymbol* _tmp134_; ValaSymbol* _tmp135_; ValaCCodeFile* _tmp136_; ValaMethod* _tmp137_; gchar* _tmp138_ = NULL; gchar* _tmp139_; ValaCCodeFunction* _tmp140_; ValaMethod* _tmp141_; gboolean _tmp142_ = FALSE; ValaMethod* _tmp147_; ValaCCodeFile* _tmp148_; ValaCCodeFunction* _tmp149_; ValaCCodeFile* _tmp150_; ValaCCodeFunction* _tmp151_; _tmp133_ = m; _tmp134_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp133_); _tmp135_ = _tmp134_; _tmp136_ = decl_space; vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, VALA_CLASS (_tmp135_), _tmp136_); _tmp137_ = m; _tmp138_ = vala_dova_base_module_get_ccode_real_name ((ValaDovaBaseModule*) self, _tmp137_); _tmp139_ = _tmp138_; _tmp140_ = vala_ccode_function_new (_tmp139_, "void"); _vala_ccode_node_unref0 (function); function = _tmp140_; _g_free0 (_tmp139_); _tmp141_ = m; _tmp142_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp141_); if (_tmp142_) { ValaCCodeFunction* _tmp143_; ValaCCodeFunction* _tmp144_; ValaCCodeModifiers _tmp145_; ValaCCodeModifiers _tmp146_; _tmp143_ = function; _tmp144_ = function; _tmp145_ = vala_ccode_function_get_modifiers (_tmp144_); _tmp146_ = _tmp145_; vala_ccode_function_set_modifiers (_tmp144_, _tmp146_ | VALA_CCODE_MODIFIERS_STATIC); } _tmp147_ = m; _tmp148_ = decl_space; _tmp149_ = function; vala_dova_base_module_generate_cparameters ((ValaDovaBaseModule*) self, _tmp147_, _tmp148_, _tmp149_, NULL, NULL); _tmp150_ = decl_space; _tmp151_ = function; vala_ccode_file_add_function_declaration (_tmp150_, _tmp151_); } _vala_ccode_node_unref0 (function); } static ValaCCodeExpression* vala_dova_object_module_get_type_from_instance (ValaDovaObjectModule* self, ValaCCodeExpression* instance_expression) { ValaCCodeExpression* result = NULL; ValaCCodeExpression* _tmp0_; ValaCCodeCastExpression* _tmp1_; ValaCCodeCastExpression* _tmp2_; ValaCCodeMemberAccess* _tmp3_; ValaCCodeExpression* _tmp4_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (instance_expression != NULL, NULL); _tmp0_ = instance_expression; _tmp1_ = vala_ccode_cast_expression_new (_tmp0_, "DovaObject *"); _tmp2_ = _tmp1_; _tmp3_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp2_, "type"); _tmp4_ = (ValaCCodeExpression*) _tmp3_; _vala_ccode_node_unref0 (_tmp2_); result = _tmp4_; return result; } static void vala_dova_object_module_real_visit_method (ValaCodeVisitor* base, ValaMethod* m) { ValaDovaObjectModule * self; ValaMethod* _tmp0_; ValaDovaBaseModuleEmitContext* _tmp1_; ValaDovaBaseModuleEmitContext* _tmp2_; ValaMethod* _tmp39_; ValaCCodeFile* _tmp40_; ValaMethod* _tmp41_; gboolean _tmp42_ = FALSE; ValaMethod* _tmp45_; gchar* _tmp46_ = NULL; gchar* _tmp47_; ValaCCodeFunction* _tmp48_; ValaCCodeFunction* _tmp49_; ValaCCodeFunction* function; ValaMethod* _tmp50_; ValaCCodeFile* _tmp51_; ValaCCodeFunction* _tmp52_; ValaMethod* _tmp53_; gboolean _tmp54_; gboolean _tmp55_; gboolean _tmp289_ = FALSE; ValaMethod* _tmp290_; gboolean _tmp291_; gboolean _tmp292_; gboolean _tmp296_; ValaMethod* _tmp799_; gboolean _tmp800_; gboolean _tmp801_; self = (ValaDovaObjectModule*) base; g_return_if_fail (m != NULL); _tmp0_ = m; _tmp1_ = vala_dova_base_module_emit_context_new ((ValaSymbol*) _tmp0_); _tmp2_ = _tmp1_; vala_dova_base_module_push_context ((ValaDovaBaseModule*) self, _tmp2_); _vala_dova_base_module_emit_context_unref0 (_tmp2_); { ValaMethod* _tmp3_; ValaList* _tmp4_ = NULL; ValaList* _param_list; ValaList* _tmp5_; gint _tmp6_; gint _tmp7_; gint _param_size; gint _param_index; _tmp3_ = m; _tmp4_ = vala_method_get_parameters (_tmp3_); _param_list = _tmp4_; _tmp5_ = _param_list; _tmp6_ = vala_collection_get_size ((ValaCollection*) _tmp5_); _tmp7_ = _tmp6_; _param_size = _tmp7_; _param_index = -1; while (TRUE) { gint _tmp8_; gint _tmp9_; gint _tmp10_; ValaList* _tmp11_; gint _tmp12_; gpointer _tmp13_ = NULL; ValaParameter* param; ValaParameter* _tmp14_; _tmp8_ = _param_index; _param_index = _tmp8_ + 1; _tmp9_ = _param_index; _tmp10_ = _param_size; if (!(_tmp9_ < _tmp10_)) { break; } _tmp11_ = _param_list; _tmp12_ = _param_index; _tmp13_ = vala_list_get (_tmp11_, _tmp12_); param = (ValaParameter*) _tmp13_; _tmp14_ = param; vala_code_node_accept ((ValaCodeNode*) _tmp14_, (ValaCodeVisitor*) self); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } { ValaMethod* _tmp15_; ValaList* _tmp16_ = NULL; ValaList* _precondition_list; ValaList* _tmp17_; gint _tmp18_; gint _tmp19_; gint _precondition_size; gint _precondition_index; _tmp15_ = m; _tmp16_ = vala_method_get_preconditions (_tmp15_); _precondition_list = _tmp16_; _tmp17_ = _precondition_list; _tmp18_ = vala_collection_get_size ((ValaCollection*) _tmp17_); _tmp19_ = _tmp18_; _precondition_size = _tmp19_; _precondition_index = -1; while (TRUE) { gint _tmp20_; gint _tmp21_; gint _tmp22_; ValaList* _tmp23_; gint _tmp24_; gpointer _tmp25_ = NULL; ValaExpression* precondition; ValaExpression* _tmp26_; _tmp20_ = _precondition_index; _precondition_index = _tmp20_ + 1; _tmp21_ = _precondition_index; _tmp22_ = _precondition_size; if (!(_tmp21_ < _tmp22_)) { break; } _tmp23_ = _precondition_list; _tmp24_ = _precondition_index; _tmp25_ = vala_list_get (_tmp23_, _tmp24_); precondition = (ValaExpression*) _tmp25_; _tmp26_ = precondition; vala_code_node_emit ((ValaCodeNode*) _tmp26_, (ValaCodeGenerator*) self); _vala_code_node_unref0 (precondition); } _vala_iterable_unref0 (_precondition_list); } { ValaMethod* _tmp27_; ValaList* _tmp28_ = NULL; ValaList* _postcondition_list; ValaList* _tmp29_; gint _tmp30_; gint _tmp31_; gint _postcondition_size; gint _postcondition_index; _tmp27_ = m; _tmp28_ = vala_method_get_postconditions (_tmp27_); _postcondition_list = _tmp28_; _tmp29_ = _postcondition_list; _tmp30_ = vala_collection_get_size ((ValaCollection*) _tmp29_); _tmp31_ = _tmp30_; _postcondition_size = _tmp31_; _postcondition_index = -1; while (TRUE) { gint _tmp32_; gint _tmp33_; gint _tmp34_; ValaList* _tmp35_; gint _tmp36_; gpointer _tmp37_ = NULL; ValaExpression* postcondition; ValaExpression* _tmp38_; _tmp32_ = _postcondition_index; _postcondition_index = _tmp32_ + 1; _tmp33_ = _postcondition_index; _tmp34_ = _postcondition_size; if (!(_tmp33_ < _tmp34_)) { break; } _tmp35_ = _postcondition_list; _tmp36_ = _postcondition_index; _tmp37_ = vala_list_get (_tmp35_, _tmp36_); postcondition = (ValaExpression*) _tmp37_; _tmp38_ = postcondition; vala_code_node_emit ((ValaCodeNode*) _tmp38_, (ValaCodeGenerator*) self); _vala_code_node_unref0 (postcondition); } _vala_iterable_unref0 (_postcondition_list); } _tmp39_ = m; _tmp40_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp39_, _tmp40_); _tmp41_ = m; _tmp42_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp41_); if (!_tmp42_) { ValaMethod* _tmp43_; ValaCCodeFile* _tmp44_; _tmp43_ = m; _tmp44_ = ((ValaDovaBaseModule*) self)->header_file; vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp43_, _tmp44_); } _tmp45_ = m; _tmp46_ = vala_dova_base_module_get_ccode_real_name ((ValaDovaBaseModule*) self, _tmp45_); _tmp47_ = _tmp46_; _tmp48_ = vala_ccode_function_new (_tmp47_, "void"); _tmp49_ = _tmp48_; _g_free0 (_tmp47_); function = _tmp49_; _tmp50_ = m; _tmp51_ = ((ValaDovaBaseModule*) self)->cfile; _tmp52_ = function; vala_dova_base_module_generate_cparameters ((ValaDovaBaseModule*) self, _tmp50_, _tmp51_, _tmp52_, NULL, NULL); _tmp53_ = m; _tmp54_ = vala_method_get_is_abstract (_tmp53_); _tmp55_ = _tmp54_; if (!_tmp55_) { gboolean _tmp56_ = FALSE; ValaMethod* _tmp57_; ValaMethod* _tmp58_; ValaMethod* _tmp59_; gboolean _tmp63_; ValaMethod* _tmp76_; ValaBlock* _tmp77_; ValaBlock* _tmp78_; _tmp57_ = m; _tmp58_ = vala_method_get_base_method (_tmp57_); _tmp59_ = _tmp58_; if (_tmp59_ != NULL) { _tmp56_ = TRUE; } else { ValaMethod* _tmp60_; ValaMethod* _tmp61_; ValaMethod* _tmp62_; _tmp60_ = m; _tmp61_ = vala_method_get_base_interface_method (_tmp60_); _tmp62_ = _tmp61_; _tmp56_ = _tmp62_ != NULL; } _tmp63_ = _tmp56_; if (_tmp63_) { ValaCCodeFunction* _tmp64_; ValaCCodeFunction* _tmp65_; ValaCCodeModifiers _tmp66_; ValaCCodeModifiers _tmp67_; ValaCCodeFile* _tmp68_; ValaCCodeFunction* _tmp69_; _tmp64_ = function; _tmp65_ = function; _tmp66_ = vala_ccode_function_get_modifiers (_tmp65_); _tmp67_ = _tmp66_; vala_ccode_function_set_modifiers (_tmp65_, _tmp67_ | VALA_CCODE_MODIFIERS_STATIC); _tmp68_ = ((ValaDovaBaseModule*) self)->cfile; _tmp69_ = function; vala_ccode_file_add_function_declaration (_tmp68_, _tmp69_); } else { ValaMethod* _tmp70_; gboolean _tmp71_ = FALSE; _tmp70_ = m; _tmp71_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp70_); if (_tmp71_) { ValaCCodeFunction* _tmp72_; ValaCCodeFunction* _tmp73_; ValaCCodeModifiers _tmp74_; ValaCCodeModifiers _tmp75_; _tmp72_ = function; _tmp73_ = function; _tmp74_ = vala_ccode_function_get_modifiers (_tmp73_); _tmp75_ = _tmp74_; vala_ccode_function_set_modifiers (_tmp73_, _tmp75_ | VALA_CCODE_MODIFIERS_STATIC); } } _tmp76_ = m; _tmp77_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp76_); _tmp78_ = _tmp77_; if (_tmp78_ != NULL) { ValaCCodeFunction* _tmp79_; ValaCodeContext* _tmp80_; ValaCodeContext* _tmp81_; ValaMethod* _tmp82_; ValaMethod* _tmp83_; ValaMethod* _tmp84_; ValaMethod* _tmp85_; gboolean _tmp86_; gboolean _tmp87_; ValaMethod* _tmp213_; ValaBlock* _tmp214_; ValaBlock* _tmp215_; gboolean _tmp216_ = FALSE; ValaMethod* _tmp217_; ValaDataType* _tmp218_; ValaDataType* _tmp219_; gboolean _tmp223_; ValaMethod* _tmp248_; ValaSymbol* _tmp249_; ValaSymbol* _tmp250_; ValaStruct* _tmp251_; ValaStruct* st; gboolean _tmp252_ = FALSE; gboolean _tmp253_ = FALSE; ValaMethod* _tmp254_; gboolean _tmp256_; gboolean _tmp267_; ValaCCodeFile* _tmp287_; ValaCCodeFunction* _tmp288_; _tmp79_ = function; vala_dova_base_module_push_function ((ValaDovaBaseModule*) self, _tmp79_); _tmp80_ = vala_dova_base_module_get_context ((ValaDovaBaseModule*) self); _tmp81_ = _tmp80_; _tmp82_ = vala_code_context_get_module_init_method (_tmp81_); _tmp83_ = _tmp82_; _tmp84_ = m; if (_tmp83_ == _tmp84_) { vala_dova_object_module_add_module_init (self); } _tmp85_ = m; _tmp86_ = vala_method_get_closure (_tmp85_); _tmp87_ = _tmp86_; if (_tmp87_) { ValaBlock* _tmp88_; ValaBlock* _tmp89_; ValaBlock* _tmp90_; ValaBlock* closure_block; ValaBlock* _tmp91_; gint _tmp92_ = 0; gint block_id; ValaMethod* _tmp129_; ValaMemberBinding _tmp130_; ValaMemberBinding _tmp131_; _tmp88_ = vala_dova_base_module_get_current_closure_block ((ValaDovaBaseModule*) self); _tmp89_ = _tmp88_; _tmp90_ = _vala_code_node_ref0 (_tmp89_); closure_block = _tmp90_; _tmp91_ = closure_block; _tmp92_ = vala_dova_base_module_get_block_id ((ValaDovaBaseModule*) self, _tmp91_); block_id = _tmp92_; while (TRUE) { ValaBlock* _tmp93_; ValaSymbol* _tmp94_; ValaSymbol* _tmp95_; ValaBlock* _tmp96_ = NULL; ValaBlock* _tmp97_; ValaBlock* parent_closure_block; ValaBlock* _tmp98_; ValaBlock* _tmp99_; gint _tmp100_ = 0; gint parent_block_id; gint _tmp101_; gchar* _tmp102_ = NULL; gchar* _tmp103_; ValaCCodeIdentifier* _tmp104_; ValaCCodeIdentifier* _tmp105_; gint _tmp106_; gchar* _tmp107_ = NULL; gchar* _tmp108_; ValaCCodeMemberAccess* _tmp109_; ValaCCodeMemberAccess* _tmp110_; ValaCCodeMemberAccess* parent_data; gint _tmp111_; gchar* _tmp112_ = NULL; gchar* _tmp113_; ValaCCodeDeclaration* _tmp114_; ValaCCodeDeclaration* _tmp115_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp116_; gint _tmp117_; gchar* _tmp118_ = NULL; gchar* _tmp119_; ValaCCodeMemberAccess* _tmp120_; ValaCCodeVariableDeclarator* _tmp121_; ValaCCodeVariableDeclarator* _tmp122_; ValaCCodeFunction* _tmp123_; ValaCCodeFunction* _tmp124_; ValaCCodeDeclaration* _tmp125_; ValaBlock* _tmp126_; ValaBlock* _tmp127_; gint _tmp128_; _tmp93_ = closure_block; _tmp94_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp93_); _tmp95_ = _tmp94_; _tmp96_ = vala_dova_base_module_next_closure_block ((ValaDovaBaseModule*) self, _tmp95_); _tmp97_ = _vala_code_node_ref0 (_tmp96_); parent_closure_block = _tmp97_; _tmp98_ = parent_closure_block; if (_tmp98_ == NULL) { _vala_code_node_unref0 (parent_closure_block); break; } _tmp99_ = parent_closure_block; _tmp100_ = vala_dova_base_module_get_block_id ((ValaDovaBaseModule*) self, _tmp99_); parent_block_id = _tmp100_; _tmp101_ = block_id; _tmp102_ = g_strdup_printf ("_data%d_", _tmp101_); _tmp103_ = _tmp102_; _tmp104_ = vala_ccode_identifier_new (_tmp103_); _tmp105_ = _tmp104_; _tmp106_ = parent_block_id; _tmp107_ = g_strdup_printf ("_data%d_", _tmp106_); _tmp108_ = _tmp107_; _tmp109_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp105_, _tmp108_); _tmp110_ = _tmp109_; _g_free0 (_tmp108_); _vala_ccode_node_unref0 (_tmp105_); _g_free0 (_tmp103_); parent_data = _tmp110_; _tmp111_ = parent_block_id; _tmp112_ = g_strdup_printf ("Block%dData*", _tmp111_); _tmp113_ = _tmp112_; _tmp114_ = vala_ccode_declaration_new (_tmp113_); _tmp115_ = _tmp114_; _g_free0 (_tmp113_); _cdecl_ = _tmp115_; _tmp116_ = _cdecl_; _tmp117_ = parent_block_id; _tmp118_ = g_strdup_printf ("_data%d_", _tmp117_); _tmp119_ = _tmp118_; _tmp120_ = parent_data; _tmp121_ = vala_ccode_variable_declarator_new (_tmp119_, (ValaCCodeExpression*) _tmp120_, NULL); _tmp122_ = _tmp121_; vala_ccode_declaration_add_declarator (_tmp116_, (ValaCCodeDeclarator*) _tmp122_); _vala_ccode_node_unref0 (_tmp122_); _g_free0 (_tmp119_); _tmp123_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp124_ = _tmp123_; _tmp125_ = _cdecl_; vala_ccode_function_add_statement (_tmp124_, (ValaCCodeNode*) _tmp125_); _tmp126_ = parent_closure_block; _tmp127_ = _vala_code_node_ref0 (_tmp126_); _vala_code_node_unref0 (closure_block); closure_block = _tmp127_; _tmp128_ = parent_block_id; block_id = _tmp128_; _vala_ccode_node_unref0 (_cdecl_); _vala_ccode_node_unref0 (parent_data); _vala_code_node_unref0 (parent_closure_block); } _tmp129_ = m; _tmp130_ = vala_method_get_binding (_tmp129_); _tmp131_ = _tmp130_; if (_tmp131_ == VALA_MEMBER_BINDING_INSTANCE) { gint _tmp132_; gchar* _tmp133_ = NULL; gchar* _tmp134_; ValaCCodeIdentifier* _tmp135_; ValaCCodeIdentifier* _tmp136_; ValaCCodeMemberAccess* _tmp137_; ValaCCodeMemberAccess* _tmp138_; ValaCCodeMemberAccess* cself; ValaClass* _tmp139_; ValaClass* _tmp140_; gchar* _tmp141_ = NULL; gchar* _tmp142_; gchar* _tmp143_ = NULL; gchar* _tmp144_; ValaCCodeDeclaration* _tmp145_; ValaCCodeDeclaration* _tmp146_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp147_; ValaCCodeMemberAccess* _tmp148_; ValaCCodeVariableDeclarator* _tmp149_; ValaCCodeVariableDeclarator* _tmp150_; ValaCCodeFunction* _tmp151_; ValaCCodeFunction* _tmp152_; ValaCCodeDeclaration* _tmp153_; _tmp132_ = block_id; _tmp133_ = g_strdup_printf ("_data%d_", _tmp132_); _tmp134_ = _tmp133_; _tmp135_ = vala_ccode_identifier_new (_tmp134_); _tmp136_ = _tmp135_; _tmp137_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp136_, "this"); _tmp138_ = _tmp137_; _vala_ccode_node_unref0 (_tmp136_); _g_free0 (_tmp134_); cself = _tmp138_; _tmp139_ = vala_dova_base_module_get_current_class ((ValaDovaBaseModule*) self); _tmp140_ = _tmp139_; _tmp141_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp140_); _tmp142_ = _tmp141_; _tmp143_ = g_strdup_printf ("%s *", _tmp142_); _tmp144_ = _tmp143_; _tmp145_ = vala_ccode_declaration_new (_tmp144_); _tmp146_ = _tmp145_; _g_free0 (_tmp144_); _g_free0 (_tmp142_); _cdecl_ = _tmp146_; _tmp147_ = _cdecl_; _tmp148_ = cself; _tmp149_ = vala_ccode_variable_declarator_new ("this", (ValaCCodeExpression*) _tmp148_, NULL); _tmp150_ = _tmp149_; vala_ccode_declaration_add_declarator (_tmp147_, (ValaCCodeDeclarator*) _tmp150_); _vala_ccode_node_unref0 (_tmp150_); _tmp151_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp152_ = _tmp151_; _tmp153_ = _cdecl_; vala_ccode_function_add_statement (_tmp152_, (ValaCCodeNode*) _tmp153_); _vala_ccode_node_unref0 (_cdecl_); _vala_ccode_node_unref0 (cself); } _vala_code_node_unref0 (closure_block); } { ValaMethod* _tmp154_; ValaList* _tmp155_ = NULL; ValaList* _param_list; ValaList* _tmp156_; gint _tmp157_; gint _tmp158_; gint _param_size; gint _param_index; _tmp154_ = m; _tmp155_ = vala_method_get_parameters (_tmp154_); _param_list = _tmp155_; _tmp156_ = _param_list; _tmp157_ = vala_collection_get_size ((ValaCollection*) _tmp156_); _tmp158_ = _tmp157_; _param_size = _tmp158_; _param_index = -1; while (TRUE) { gint _tmp159_; gint _tmp160_; gint _tmp161_; ValaList* _tmp162_; gint _tmp163_; gpointer _tmp164_ = NULL; ValaParameter* param; ValaParameter* _tmp165_; gboolean _tmp166_; gboolean _tmp167_; ValaParameter* _tmp168_; ValaDataType* _tmp169_; ValaDataType* _tmp170_; ValaTypeSymbol* _tmp171_; ValaTypeSymbol* _tmp172_; ValaTypeSymbol* _tmp173_; ValaTypeSymbol* t; gboolean _tmp174_ = FALSE; ValaTypeSymbol* _tmp175_; gboolean _tmp178_; _tmp159_ = _param_index; _param_index = _tmp159_ + 1; _tmp160_ = _param_index; _tmp161_ = _param_size; if (!(_tmp160_ < _tmp161_)) { break; } _tmp162_ = _param_list; _tmp163_ = _param_index; _tmp164_ = vala_list_get (_tmp162_, _tmp163_); param = (ValaParameter*) _tmp164_; _tmp165_ = param; _tmp166_ = vala_parameter_get_ellipsis (_tmp165_); _tmp167_ = _tmp166_; if (_tmp167_) { _vala_code_node_unref0 (param); break; } _tmp168_ = param; _tmp169_ = vala_variable_get_variable_type ((ValaVariable*) _tmp168_); _tmp170_ = _tmp169_; _tmp171_ = vala_data_type_get_data_type (_tmp170_); _tmp172_ = _tmp171_; _tmp173_ = _vala_code_node_ref0 (_tmp172_); t = _tmp173_; _tmp175_ = t; if (_tmp175_ != NULL) { ValaTypeSymbol* _tmp176_; gboolean _tmp177_ = FALSE; _tmp176_ = t; _tmp177_ = vala_typesymbol_is_reference_type (_tmp176_); _tmp174_ = _tmp177_; } else { _tmp174_ = FALSE; } _tmp178_ = _tmp174_; if (_tmp178_) { ValaParameter* _tmp179_; ValaParameterDirection _tmp180_; ValaParameterDirection _tmp181_; _tmp179_ = param; _tmp180_ = vala_parameter_get_direction (_tmp179_); _tmp181_ = _tmp180_; if (_tmp181_ == VALA_PARAMETER_DIRECTION_OUT) { ValaParameter* _tmp182_; const gchar* _tmp183_; const gchar* _tmp184_; ValaCCodeExpression* _tmp185_ = NULL; ValaCCodeExpression* _tmp186_; ValaCCodeUnaryExpression* _tmp187_; ValaCCodeUnaryExpression* _tmp188_; ValaCCodeConstant* _tmp189_; ValaCCodeConstant* _tmp190_; ValaCCodeAssignment* _tmp191_; ValaCCodeAssignment* _tmp192_; ValaCCodeAssignment* a; ValaCCodeBlock* _tmp193_; ValaCCodeBlock* cblock; ValaCCodeBlock* _tmp194_; ValaCCodeAssignment* _tmp195_; ValaCCodeExpressionStatement* _tmp196_; ValaCCodeExpressionStatement* _tmp197_; ValaParameter* _tmp198_; const gchar* _tmp199_; const gchar* _tmp200_; ValaCCodeIdentifier* _tmp201_; ValaCCodeIdentifier* _tmp202_; ValaCCodeConstant* _tmp203_; ValaCCodeConstant* _tmp204_; ValaCCodeBinaryExpression* _tmp205_; ValaCCodeBinaryExpression* _tmp206_; ValaCCodeBinaryExpression* condition; ValaCCodeBinaryExpression* _tmp207_; ValaCCodeBlock* _tmp208_; ValaCCodeIfStatement* _tmp209_; ValaCCodeIfStatement* if_statement; ValaCCodeFunction* _tmp210_; ValaCCodeFunction* _tmp211_; ValaCCodeIfStatement* _tmp212_; _tmp182_ = param; _tmp183_ = vala_symbol_get_name ((ValaSymbol*) _tmp182_); _tmp184_ = _tmp183_; _tmp185_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp184_); _tmp186_ = _tmp185_; _tmp187_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp186_); _tmp188_ = _tmp187_; _tmp189_ = vala_ccode_constant_new ("NULL"); _tmp190_ = _tmp189_; _tmp191_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp188_, (ValaCCodeExpression*) _tmp190_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp192_ = _tmp191_; _vala_ccode_node_unref0 (_tmp190_); _vala_ccode_node_unref0 (_tmp188_); _vala_ccode_node_unref0 (_tmp186_); a = _tmp192_; _tmp193_ = vala_ccode_block_new (); cblock = _tmp193_; _tmp194_ = cblock; _tmp195_ = a; _tmp196_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp195_); _tmp197_ = _tmp196_; vala_ccode_block_add_statement (_tmp194_, (ValaCCodeNode*) _tmp197_); _vala_ccode_node_unref0 (_tmp197_); _tmp198_ = param; _tmp199_ = vala_symbol_get_name ((ValaSymbol*) _tmp198_); _tmp200_ = _tmp199_; _tmp201_ = vala_ccode_identifier_new (_tmp200_); _tmp202_ = _tmp201_; _tmp203_ = vala_ccode_constant_new ("NULL"); _tmp204_ = _tmp203_; _tmp205_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, (ValaCCodeExpression*) _tmp202_, (ValaCCodeExpression*) _tmp204_); _tmp206_ = _tmp205_; _vala_ccode_node_unref0 (_tmp204_); _vala_ccode_node_unref0 (_tmp202_); condition = _tmp206_; _tmp207_ = condition; _tmp208_ = cblock; _tmp209_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp207_, (ValaCCodeStatement*) _tmp208_, NULL); if_statement = _tmp209_; _tmp210_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp211_ = _tmp210_; _tmp212_ = if_statement; vala_ccode_function_add_statement (_tmp211_, (ValaCCodeNode*) _tmp212_); _vala_ccode_node_unref0 (if_statement); _vala_ccode_node_unref0 (condition); _vala_ccode_node_unref0 (cblock); _vala_ccode_node_unref0 (a); } } _vala_code_node_unref0 (t); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp213_ = m; _tmp214_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp213_); _tmp215_ = _tmp214_; vala_code_node_emit ((ValaCodeNode*) _tmp215_, (ValaCodeGenerator*) self); _tmp217_ = m; _tmp218_ = vala_method_get_return_type (_tmp217_); _tmp219_ = _tmp218_; if (!VALA_IS_VOID_TYPE (_tmp219_)) { ValaMethod* _tmp220_; ValaDataType* _tmp221_; ValaDataType* _tmp222_; _tmp220_ = m; _tmp221_ = vala_method_get_return_type (_tmp220_); _tmp222_ = _tmp221_; _tmp216_ = !VALA_IS_GENERIC_TYPE (_tmp222_); } else { _tmp216_ = FALSE; } _tmp223_ = _tmp216_; if (_tmp223_) { ValaMethod* _tmp224_; ValaDataType* _tmp225_; ValaDataType* _tmp226_; gchar* _tmp227_ = NULL; gchar* _tmp228_; ValaCCodeDeclaration* _tmp229_; ValaCCodeDeclaration* _tmp230_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp231_; ValaMethod* _tmp232_; ValaDataType* _tmp233_; ValaDataType* _tmp234_; ValaCCodeExpression* _tmp235_ = NULL; ValaCCodeExpression* _tmp236_; ValaCCodeVariableDeclarator* _tmp237_; ValaCCodeVariableDeclarator* _tmp238_; ValaCCodeFunction* _tmp239_; ValaCCodeFunction* _tmp240_; ValaCCodeDeclaration* _tmp241_; ValaCCodeFunction* _tmp242_; ValaCCodeFunction* _tmp243_; ValaCCodeIdentifier* _tmp244_; ValaCCodeIdentifier* _tmp245_; ValaCCodeReturnStatement* _tmp246_; ValaCCodeReturnStatement* _tmp247_; _tmp224_ = m; _tmp225_ = vala_method_get_return_type (_tmp224_); _tmp226_ = _tmp225_; _tmp227_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp226_); _tmp228_ = _tmp227_; _tmp229_ = vala_ccode_declaration_new (_tmp228_); _tmp230_ = _tmp229_; _g_free0 (_tmp228_); _cdecl_ = _tmp230_; _tmp231_ = _cdecl_; _tmp232_ = m; _tmp233_ = vala_method_get_return_type (_tmp232_); _tmp234_ = _tmp233_; _tmp235_ = vala_dova_base_module_default_value_for_type ((ValaDovaBaseModule*) self, _tmp234_, TRUE); _tmp236_ = _tmp235_; _tmp237_ = vala_ccode_variable_declarator_new_zero ("result", _tmp236_, NULL); _tmp238_ = _tmp237_; vala_ccode_declaration_add_declarator (_tmp231_, (ValaCCodeDeclarator*) _tmp238_); _vala_ccode_node_unref0 (_tmp238_); _vala_ccode_node_unref0 (_tmp236_); _tmp239_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp240_ = _tmp239_; _tmp241_ = _cdecl_; vala_ccode_function_add_statement (_tmp240_, (ValaCCodeNode*) _tmp241_); _tmp242_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp243_ = _tmp242_; _tmp244_ = vala_ccode_identifier_new ("result"); _tmp245_ = _tmp244_; _tmp246_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp245_); _tmp247_ = _tmp246_; vala_ccode_function_add_statement (_tmp243_, (ValaCCodeNode*) _tmp247_); _vala_ccode_node_unref0 (_tmp247_); _vala_ccode_node_unref0 (_tmp245_); _vala_ccode_node_unref0 (_cdecl_); } _tmp248_ = m; _tmp249_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp248_); _tmp250_ = _tmp249_; _tmp251_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp250_) ? ((ValaStruct*) _tmp250_) : NULL); st = _tmp251_; _tmp254_ = m; if (VALA_IS_CREATION_METHOD (_tmp254_)) { ValaStruct* _tmp255_; _tmp255_ = st; _tmp253_ = _tmp255_ != NULL; } else { _tmp253_ = FALSE; } _tmp256_ = _tmp253_; if (_tmp256_) { gboolean _tmp257_ = FALSE; gboolean _tmp258_ = FALSE; ValaStruct* _tmp259_; gboolean _tmp260_ = FALSE; gboolean _tmp263_; gboolean _tmp266_; _tmp259_ = st; _tmp260_ = vala_struct_is_boolean_type (_tmp259_); if (_tmp260_) { _tmp258_ = TRUE; } else { ValaStruct* _tmp261_; gboolean _tmp262_ = FALSE; _tmp261_ = st; _tmp262_ = vala_struct_is_integer_type (_tmp261_); _tmp258_ = _tmp262_; } _tmp263_ = _tmp258_; if (_tmp263_) { _tmp257_ = TRUE; } else { ValaStruct* _tmp264_; gboolean _tmp265_ = FALSE; _tmp264_ = st; _tmp265_ = vala_struct_is_floating_type (_tmp264_); _tmp257_ = _tmp265_; } _tmp266_ = _tmp257_; _tmp252_ = _tmp266_; } else { _tmp252_ = FALSE; } _tmp267_ = _tmp252_; if (_tmp267_) { ValaStruct* _tmp268_; gchar* _tmp269_ = NULL; gchar* _tmp270_; ValaCCodeDeclaration* _tmp271_; ValaCCodeDeclaration* _tmp272_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp273_; ValaCCodeConstant* _tmp274_; ValaCCodeConstant* _tmp275_; ValaCCodeVariableDeclarator* _tmp276_; ValaCCodeVariableDeclarator* _tmp277_; ValaCCodeFunction* _tmp278_; ValaCCodeFunction* _tmp279_; ValaCCodeDeclaration* _tmp280_; ValaCCodeFunction* _tmp281_; ValaCCodeFunction* _tmp282_; ValaCCodeIdentifier* _tmp283_; ValaCCodeIdentifier* _tmp284_; ValaCCodeReturnStatement* _tmp285_; ValaCCodeReturnStatement* _tmp286_; _tmp268_ = st; _tmp269_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp268_); _tmp270_ = _tmp269_; _tmp271_ = vala_ccode_declaration_new (_tmp270_); _tmp272_ = _tmp271_; _g_free0 (_tmp270_); _cdecl_ = _tmp272_; _tmp273_ = _cdecl_; _tmp274_ = vala_ccode_constant_new ("0"); _tmp275_ = _tmp274_; _tmp276_ = vala_ccode_variable_declarator_new ("this", (ValaCCodeExpression*) _tmp275_, NULL); _tmp277_ = _tmp276_; vala_ccode_declaration_add_declarator (_tmp273_, (ValaCCodeDeclarator*) _tmp277_); _vala_ccode_node_unref0 (_tmp277_); _vala_ccode_node_unref0 (_tmp275_); _tmp278_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp279_ = _tmp278_; _tmp280_ = _cdecl_; vala_ccode_function_add_statement (_tmp279_, (ValaCCodeNode*) _tmp280_); _tmp281_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp282_ = _tmp281_; _tmp283_ = vala_ccode_identifier_new ("this"); _tmp284_ = _tmp283_; _tmp285_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp284_); _tmp286_ = _tmp285_; vala_ccode_function_add_statement (_tmp282_, (ValaCCodeNode*) _tmp286_); _vala_ccode_node_unref0 (_tmp286_); _vala_ccode_node_unref0 (_tmp284_); _vala_ccode_node_unref0 (_cdecl_); } _tmp287_ = ((ValaDovaBaseModule*) self)->cfile; _tmp288_ = function; vala_ccode_file_add_function (_tmp287_, _tmp288_); _vala_code_node_unref0 (st); } } _tmp290_ = m; _tmp291_ = vala_method_get_is_abstract (_tmp290_); _tmp292_ = _tmp291_; if (_tmp292_) { _tmp289_ = TRUE; } else { ValaMethod* _tmp293_; gboolean _tmp294_; gboolean _tmp295_; _tmp293_ = m; _tmp294_ = vala_method_get_is_virtual (_tmp293_); _tmp295_ = _tmp294_; _tmp289_ = _tmp295_; } _tmp296_ = _tmp289_; if (_tmp296_) { ValaClass* _tmp297_; ValaCCodeFile* _tmp298_; gchar* _tmp299_ = NULL; ValaMethod* _tmp300_; ValaDataType* _tmp301_; ValaDataType* _tmp302_; ValaMethod* _tmp308_; gchar* _tmp309_ = NULL; gchar* _tmp310_; const gchar* _tmp311_; ValaCCodeFunction* _tmp312_; ValaCCodeFunction* _tmp313_; ValaCCodeFunction* vfunc; ValaCCodeFunction* _tmp314_; ValaCCodeBlock* _tmp315_; ValaCCodeBlock* _tmp316_; ValaCCodeFunction* _tmp317_; ValaMethod* _tmp318_; ValaSymbol* _tmp319_; ValaSymbol* _tmp320_; gchar* _tmp321_ = NULL; gchar* _tmp322_; gchar* _tmp323_ = NULL; gchar* _tmp324_; ValaCCodeParameter* _tmp325_; ValaCCodeParameter* _tmp326_; ValaMethod* _tmp375_; ValaDataType* _tmp376_; ValaDataType* _tmp377_; ValaMethod* _tmp381_; gchar* _tmp382_ = NULL; gchar* _tmp383_; gboolean _tmp384_; ValaMethod* _tmp449_; ValaSymbol* _tmp450_; ValaSymbol* _tmp451_; ValaCCodeIdentifier* _tmp452_; ValaCCodeIdentifier* _tmp453_; ValaCCodeExpression* _tmp454_ = NULL; ValaCCodeExpression* _tmp455_; ValaCCodeExpression* _tmp456_ = NULL; ValaCCodeExpression* _tmp457_; ValaCCodeExpression* vcast; ValaCCodeExpression* _tmp458_; ValaMethod* _tmp459_; gchar* _tmp460_ = NULL; gchar* _tmp461_; ValaCCodeMemberAccess* _tmp462_; ValaCCodeMemberAccess* _tmp463_; ValaCCodeFunctionCall* _tmp464_; ValaCCodeFunctionCall* _tmp465_; ValaCCodeFunctionCall* vcall; ValaCCodeFunctionCall* _tmp466_; ValaCCodeIdentifier* _tmp467_; ValaCCodeIdentifier* _tmp468_; ValaMethod* _tmp507_; ValaDataType* _tmp508_; ValaDataType* _tmp509_; gboolean _tmp513_ = FALSE; ValaMethod* _tmp514_; ValaDataType* _tmp515_; ValaDataType* _tmp516_; gboolean _tmp520_; ValaCCodeFile* _tmp533_; ValaCCodeFunction* _tmp534_; gchar* _tmp535_ = NULL; ValaMethod* _tmp536_; ValaDataType* _tmp537_; ValaDataType* _tmp538_; ValaMethod* _tmp544_; ValaSymbol* _tmp545_; ValaSymbol* _tmp546_; gchar* _tmp547_ = NULL; gchar* _tmp548_; ValaMethod* _tmp549_; const gchar* _tmp550_; const gchar* _tmp551_; gchar* _tmp552_ = NULL; gchar* _tmp553_; const gchar* _tmp554_; ValaCCodeFunction* _tmp555_; ValaCCodeFunction* _tmp556_; ValaCCodeBlock* _tmp557_; ValaCCodeBlock* _tmp558_; ValaCCodeFunction* _tmp559_; ValaCCodeParameter* _tmp560_; ValaCCodeParameter* _tmp561_; ValaCCodeFunction* _tmp562_; ValaMethod* _tmp563_; ValaSymbol* _tmp564_; ValaSymbol* _tmp565_; gchar* _tmp566_ = NULL; gchar* _tmp567_; gchar* _tmp568_ = NULL; gchar* _tmp569_; ValaCCodeParameter* _tmp570_; ValaCCodeParameter* _tmp571_; ValaMethod* _tmp620_; ValaDataType* _tmp621_; ValaDataType* _tmp622_; ValaCCodeIdentifier* _tmp626_; ValaCCodeIdentifier* base_type; ValaMethod* _tmp627_; ValaSymbol* _tmp628_; ValaSymbol* _tmp629_; ValaCCodeIdentifier* _tmp630_; ValaCCodeExpression* _tmp631_ = NULL; ValaCCodeExpression* _tmp632_; ValaMethod* _tmp633_; gchar* _tmp634_ = NULL; gchar* _tmp635_; ValaCCodeMemberAccess* _tmp636_; ValaCCodeMemberAccess* _tmp637_; ValaCCodeFunctionCall* _tmp638_; ValaCCodeFunctionCall* _tmp639_; ValaCCodeIdentifier* _tmp640_; ValaCCodeIdentifier* _tmp641_; ValaMethod* _tmp680_; ValaDataType* _tmp681_; ValaDataType* _tmp682_; gboolean _tmp686_ = FALSE; ValaMethod* _tmp687_; ValaDataType* _tmp688_; ValaDataType* _tmp689_; gboolean _tmp693_; ValaCCodeFile* _tmp706_; ValaCCodeFunction* _tmp707_; ValaMethod* _tmp708_; ValaSymbol* _tmp709_; ValaSymbol* _tmp710_; gchar* _tmp711_ = NULL; gchar* _tmp712_; gchar* _tmp713_ = NULL; gchar* _tmp714_; gchar* param_list; ValaMethod* _tmp735_; ValaDataType* _tmp736_; ValaDataType* _tmp737_; const gchar* _tmp740_; gchar* _tmp741_; ValaMethod* _tmp742_; ValaSymbol* _tmp743_; ValaSymbol* _tmp744_; gchar* _tmp745_ = NULL; gchar* _tmp746_; ValaMethod* _tmp747_; const gchar* _tmp748_; const gchar* _tmp749_; gchar* _tmp750_ = NULL; gchar* _tmp751_; ValaCCodeFunction* _tmp752_; ValaCCodeFunction* _tmp753_; ValaCCodeFunction* override_func; ValaCCodeFunction* _tmp754_; ValaCCodeParameter* _tmp755_; ValaCCodeParameter* _tmp756_; gchar* _tmp757_ = NULL; ValaMethod* _tmp758_; ValaDataType* _tmp759_; ValaDataType* _tmp760_; ValaCCodeFunction* _tmp766_; const gchar* _tmp767_; gchar* _tmp768_ = NULL; gchar* _tmp769_; const gchar* _tmp770_; ValaCCodeParameter* _tmp771_; ValaCCodeParameter* _tmp772_; ValaCCodeFunction* _tmp773_; ValaCCodeBlock* _tmp774_; ValaCCodeBlock* _tmp775_; ValaMethod* _tmp776_; ValaSymbol* _tmp777_; ValaSymbol* _tmp778_; ValaCCodeIdentifier* _tmp779_; ValaCCodeIdentifier* _tmp780_; ValaCCodeExpression* _tmp781_ = NULL; ValaCCodeFunction* _tmp782_; ValaCCodeBlock* _tmp783_; ValaCCodeBlock* _tmp784_; ValaCCodeExpression* _tmp785_; ValaMethod* _tmp786_; const gchar* _tmp787_; const gchar* _tmp788_; ValaCCodeMemberAccess* _tmp789_; ValaCCodeMemberAccess* _tmp790_; ValaCCodeIdentifier* _tmp791_; ValaCCodeIdentifier* _tmp792_; ValaCCodeAssignment* _tmp793_; ValaCCodeAssignment* _tmp794_; ValaCCodeExpressionStatement* _tmp795_; ValaCCodeExpressionStatement* _tmp796_; ValaCCodeFile* _tmp797_; ValaCCodeFunction* _tmp798_; _tmp297_ = ((ValaDovaBaseModule*) self)->object_class; _tmp298_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, VALA_CLASS (_tmp297_), _tmp298_); _tmp300_ = m; _tmp301_ = vala_method_get_return_type (_tmp300_); _tmp302_ = _tmp301_; if (VALA_IS_GENERIC_TYPE (_tmp302_)) { gchar* _tmp303_; _tmp303_ = g_strdup ("void"); _g_free0 (_tmp299_); _tmp299_ = _tmp303_; } else { ValaMethod* _tmp304_; ValaDataType* _tmp305_; ValaDataType* _tmp306_; gchar* _tmp307_ = NULL; _tmp304_ = m; _tmp305_ = vala_method_get_return_type (_tmp304_); _tmp306_ = _tmp305_; _tmp307_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp306_); _g_free0 (_tmp299_); _tmp299_ = _tmp307_; } _tmp308_ = m; _tmp309_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp308_); _tmp310_ = _tmp309_; _tmp311_ = _tmp299_; _tmp312_ = vala_ccode_function_new (_tmp310_, _tmp311_); _tmp313_ = _tmp312_; _g_free0 (_tmp310_); vfunc = _tmp313_; _tmp314_ = vfunc; _tmp315_ = vala_ccode_block_new (); _tmp316_ = _tmp315_; vala_ccode_function_set_block (_tmp314_, _tmp316_); _vala_ccode_node_unref0 (_tmp316_); _tmp317_ = vfunc; _tmp318_ = m; _tmp319_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp318_); _tmp320_ = _tmp319_; _tmp321_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp320_); _tmp322_ = _tmp321_; _tmp323_ = g_strdup_printf ("%s *", _tmp322_); _tmp324_ = _tmp323_; _tmp325_ = vala_ccode_parameter_new ("this", _tmp324_); _tmp326_ = _tmp325_; vala_ccode_function_add_parameter (_tmp317_, _tmp326_); _vala_ccode_node_unref0 (_tmp326_); _g_free0 (_tmp324_); _g_free0 (_tmp322_); { ValaMethod* _tmp327_; ValaList* _tmp328_ = NULL; ValaList* _type_param_list; ValaList* _tmp329_; gint _tmp330_; gint _tmp331_; gint _type_param_size; gint _type_param_index; _tmp327_ = m; _tmp328_ = vala_method_get_type_parameters (_tmp327_); _type_param_list = _tmp328_; _tmp329_ = _type_param_list; _tmp330_ = vala_collection_get_size ((ValaCollection*) _tmp329_); _tmp331_ = _tmp330_; _type_param_size = _tmp331_; _type_param_index = -1; while (TRUE) { gint _tmp332_; gint _tmp333_; gint _tmp334_; ValaList* _tmp335_; gint _tmp336_; gpointer _tmp337_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp338_; ValaTypeParameter* _tmp339_; const gchar* _tmp340_; const gchar* _tmp341_; gchar* _tmp342_ = NULL; gchar* _tmp343_; gchar* _tmp344_ = NULL; gchar* _tmp345_; ValaCCodeParameter* _tmp346_; ValaCCodeParameter* _tmp347_; _tmp332_ = _type_param_index; _type_param_index = _tmp332_ + 1; _tmp333_ = _type_param_index; _tmp334_ = _type_param_size; if (!(_tmp333_ < _tmp334_)) { break; } _tmp335_ = _type_param_list; _tmp336_ = _type_param_index; _tmp337_ = vala_list_get (_tmp335_, _tmp336_); type_param = (ValaTypeParameter*) _tmp337_; _tmp338_ = vfunc; _tmp339_ = type_param; _tmp340_ = vala_symbol_get_name ((ValaSymbol*) _tmp339_); _tmp341_ = _tmp340_; _tmp342_ = g_utf8_strdown (_tmp341_, (gssize) (-1)); _tmp343_ = _tmp342_; _tmp344_ = g_strdup_printf ("%s_type", _tmp343_); _tmp345_ = _tmp344_; _tmp346_ = vala_ccode_parameter_new (_tmp345_, "DovaType*"); _tmp347_ = _tmp346_; vala_ccode_function_add_parameter (_tmp338_, _tmp347_); _vala_ccode_node_unref0 (_tmp347_); _g_free0 (_tmp345_); _g_free0 (_tmp343_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } { ValaMethod* _tmp348_; ValaList* _tmp349_ = NULL; ValaList* _param_list; ValaList* _tmp350_; gint _tmp351_; gint _tmp352_; gint _param_size; gint _param_index; _tmp348_ = m; _tmp349_ = vala_method_get_parameters (_tmp348_); _param_list = _tmp349_; _tmp350_ = _param_list; _tmp351_ = vala_collection_get_size ((ValaCollection*) _tmp350_); _tmp352_ = _tmp351_; _param_size = _tmp352_; _param_index = -1; while (TRUE) { gint _tmp353_; gint _tmp354_; gint _tmp355_; ValaList* _tmp356_; gint _tmp357_; gpointer _tmp358_ = NULL; ValaParameter* param; ValaParameter* _tmp359_; ValaDataType* _tmp360_; ValaDataType* _tmp361_; gchar* _tmp362_ = NULL; gchar* ctypename; ValaParameter* _tmp363_; ValaParameterDirection _tmp364_; ValaParameterDirection _tmp365_; ValaCCodeFunction* _tmp368_; ValaParameter* _tmp369_; const gchar* _tmp370_; const gchar* _tmp371_; const gchar* _tmp372_; ValaCCodeParameter* _tmp373_; ValaCCodeParameter* _tmp374_; _tmp353_ = _param_index; _param_index = _tmp353_ + 1; _tmp354_ = _param_index; _tmp355_ = _param_size; if (!(_tmp354_ < _tmp355_)) { break; } _tmp356_ = _param_list; _tmp357_ = _param_index; _tmp358_ = vala_list_get (_tmp356_, _tmp357_); param = (ValaParameter*) _tmp358_; _tmp359_ = param; _tmp360_ = vala_variable_get_variable_type ((ValaVariable*) _tmp359_); _tmp361_ = _tmp360_; _tmp362_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp361_); ctypename = _tmp362_; _tmp363_ = param; _tmp364_ = vala_parameter_get_direction (_tmp363_); _tmp365_ = _tmp364_; if (_tmp365_ != VALA_PARAMETER_DIRECTION_IN) { const gchar* _tmp366_; gchar* _tmp367_; _tmp366_ = ctypename; _tmp367_ = g_strconcat (_tmp366_, "*", NULL); _g_free0 (ctypename); ctypename = _tmp367_; } _tmp368_ = vfunc; _tmp369_ = param; _tmp370_ = vala_symbol_get_name ((ValaSymbol*) _tmp369_); _tmp371_ = _tmp370_; _tmp372_ = ctypename; _tmp373_ = vala_ccode_parameter_new (_tmp371_, _tmp372_); _tmp374_ = _tmp373_; vala_ccode_function_add_parameter (_tmp368_, _tmp374_); _vala_ccode_node_unref0 (_tmp374_); _g_free0 (ctypename); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp375_ = m; _tmp376_ = vala_method_get_return_type (_tmp375_); _tmp377_ = _tmp376_; if (VALA_IS_GENERIC_TYPE (_tmp377_)) { ValaCCodeFunction* _tmp378_; ValaCCodeParameter* _tmp379_; ValaCCodeParameter* _tmp380_; _tmp378_ = vfunc; _tmp379_ = vala_ccode_parameter_new ("result", "void *"); _tmp380_ = _tmp379_; vala_ccode_function_add_parameter (_tmp378_, _tmp380_); _vala_ccode_node_unref0 (_tmp380_); } _tmp381_ = m; _tmp382_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp381_); _tmp383_ = _tmp382_; _tmp384_ = g_strcmp0 (_tmp383_, "any.equals") == 0; _g_free0 (_tmp383_); if (_tmp384_) { ValaCCodeBlock* _tmp385_; ValaCCodeBlock* null_block; ValaCCodeBlock* _tmp386_; ValaCCodeIdentifier* _tmp387_; ValaCCodeIdentifier* _tmp388_; ValaCCodeUnaryExpression* _tmp389_; ValaCCodeUnaryExpression* _tmp390_; ValaCCodeReturnStatement* _tmp391_; ValaCCodeReturnStatement* _tmp392_; ValaCCodeFunction* _tmp393_; ValaCCodeBlock* _tmp394_; ValaCCodeBlock* _tmp395_; ValaCCodeIdentifier* _tmp396_; ValaCCodeIdentifier* _tmp397_; ValaCCodeUnaryExpression* _tmp398_; ValaCCodeUnaryExpression* _tmp399_; ValaCCodeBlock* _tmp400_; ValaCCodeIfStatement* _tmp401_; ValaCCodeIfStatement* _tmp402_; _tmp385_ = vala_ccode_block_new (); null_block = _tmp385_; _tmp386_ = null_block; _tmp387_ = vala_ccode_identifier_new ("other"); _tmp388_ = _tmp387_; _tmp389_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp388_); _tmp390_ = _tmp389_; _tmp391_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp390_); _tmp392_ = _tmp391_; vala_ccode_block_add_statement (_tmp386_, (ValaCCodeNode*) _tmp392_); _vala_ccode_node_unref0 (_tmp392_); _vala_ccode_node_unref0 (_tmp390_); _vala_ccode_node_unref0 (_tmp388_); _tmp393_ = vfunc; _tmp394_ = vala_ccode_function_get_block (_tmp393_); _tmp395_ = _tmp394_; _tmp396_ = vala_ccode_identifier_new ("this"); _tmp397_ = _tmp396_; _tmp398_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp397_); _tmp399_ = _tmp398_; _tmp400_ = null_block; _tmp401_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp399_, (ValaCCodeStatement*) _tmp400_, NULL); _tmp402_ = _tmp401_; vala_ccode_block_add_statement (_tmp395_, (ValaCCodeNode*) _tmp402_); _vala_ccode_node_unref0 (_tmp402_); _vala_ccode_node_unref0 (_tmp399_); _vala_ccode_node_unref0 (_tmp397_); _vala_ccode_node_unref0 (null_block); } else { ValaMethod* _tmp403_; gchar* _tmp404_ = NULL; gchar* _tmp405_; gboolean _tmp406_; _tmp403_ = m; _tmp404_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp403_); _tmp405_ = _tmp404_; _tmp406_ = g_strcmp0 (_tmp405_, "any.hash") == 0; _g_free0 (_tmp405_); if (_tmp406_) { ValaCCodeBlock* _tmp407_; ValaCCodeBlock* null_block; ValaCCodeBlock* _tmp408_; ValaCCodeConstant* _tmp409_; ValaCCodeConstant* _tmp410_; ValaCCodeReturnStatement* _tmp411_; ValaCCodeReturnStatement* _tmp412_; ValaCCodeFunction* _tmp413_; ValaCCodeBlock* _tmp414_; ValaCCodeBlock* _tmp415_; ValaCCodeIdentifier* _tmp416_; ValaCCodeIdentifier* _tmp417_; ValaCCodeUnaryExpression* _tmp418_; ValaCCodeUnaryExpression* _tmp419_; ValaCCodeBlock* _tmp420_; ValaCCodeIfStatement* _tmp421_; ValaCCodeIfStatement* _tmp422_; _tmp407_ = vala_ccode_block_new (); null_block = _tmp407_; _tmp408_ = null_block; _tmp409_ = vala_ccode_constant_new ("0"); _tmp410_ = _tmp409_; _tmp411_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp410_); _tmp412_ = _tmp411_; vala_ccode_block_add_statement (_tmp408_, (ValaCCodeNode*) _tmp412_); _vala_ccode_node_unref0 (_tmp412_); _vala_ccode_node_unref0 (_tmp410_); _tmp413_ = vfunc; _tmp414_ = vala_ccode_function_get_block (_tmp413_); _tmp415_ = _tmp414_; _tmp416_ = vala_ccode_identifier_new ("this"); _tmp417_ = _tmp416_; _tmp418_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp417_); _tmp419_ = _tmp418_; _tmp420_ = null_block; _tmp421_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp419_, (ValaCCodeStatement*) _tmp420_, NULL); _tmp422_ = _tmp421_; vala_ccode_block_add_statement (_tmp415_, (ValaCCodeNode*) _tmp422_); _vala_ccode_node_unref0 (_tmp422_); _vala_ccode_node_unref0 (_tmp419_); _vala_ccode_node_unref0 (_tmp417_); _vala_ccode_node_unref0 (null_block); } else { ValaMethod* _tmp423_; gchar* _tmp424_ = NULL; gchar* _tmp425_; gboolean _tmp426_; _tmp423_ = m; _tmp424_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp423_); _tmp425_ = _tmp424_; _tmp426_ = g_strcmp0 (_tmp425_, "any.to_string") == 0; _g_free0 (_tmp425_); if (_tmp426_) { ValaCCodeIdentifier* _tmp427_; ValaCCodeIdentifier* _tmp428_; ValaCCodeFunctionCall* _tmp429_; ValaCCodeFunctionCall* _tmp430_; ValaCCodeFunctionCall* null_string; ValaCCodeFunctionCall* _tmp431_; ValaCCodeConstant* _tmp432_; ValaCCodeConstant* _tmp433_; ValaCCodeBlock* _tmp434_; ValaCCodeBlock* null_block; ValaCCodeBlock* _tmp435_; ValaCCodeFunctionCall* _tmp436_; ValaCCodeReturnStatement* _tmp437_; ValaCCodeReturnStatement* _tmp438_; ValaCCodeFunction* _tmp439_; ValaCCodeBlock* _tmp440_; ValaCCodeBlock* _tmp441_; ValaCCodeIdentifier* _tmp442_; ValaCCodeIdentifier* _tmp443_; ValaCCodeUnaryExpression* _tmp444_; ValaCCodeUnaryExpression* _tmp445_; ValaCCodeBlock* _tmp446_; ValaCCodeIfStatement* _tmp447_; ValaCCodeIfStatement* _tmp448_; _tmp427_ = vala_ccode_identifier_new ("string_create_from_cstring"); _tmp428_ = _tmp427_; _tmp429_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp428_); _tmp430_ = _tmp429_; _vala_ccode_node_unref0 (_tmp428_); null_string = _tmp430_; _tmp431_ = null_string; _tmp432_ = vala_ccode_constant_new ("\"(null)\""); _tmp433_ = _tmp432_; vala_ccode_function_call_add_argument (_tmp431_, (ValaCCodeExpression*) _tmp433_); _vala_ccode_node_unref0 (_tmp433_); _tmp434_ = vala_ccode_block_new (); null_block = _tmp434_; _tmp435_ = null_block; _tmp436_ = null_string; _tmp437_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp436_); _tmp438_ = _tmp437_; vala_ccode_block_add_statement (_tmp435_, (ValaCCodeNode*) _tmp438_); _vala_ccode_node_unref0 (_tmp438_); _tmp439_ = vfunc; _tmp440_ = vala_ccode_function_get_block (_tmp439_); _tmp441_ = _tmp440_; _tmp442_ = vala_ccode_identifier_new ("this"); _tmp443_ = _tmp442_; _tmp444_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp443_); _tmp445_ = _tmp444_; _tmp446_ = null_block; _tmp447_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp445_, (ValaCCodeStatement*) _tmp446_, NULL); _tmp448_ = _tmp447_; vala_ccode_block_add_statement (_tmp441_, (ValaCCodeNode*) _tmp448_); _vala_ccode_node_unref0 (_tmp448_); _vala_ccode_node_unref0 (_tmp445_); _vala_ccode_node_unref0 (_tmp443_); _vala_ccode_node_unref0 (null_block); _vala_ccode_node_unref0 (null_string); } } } _tmp449_ = m; _tmp450_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp449_); _tmp451_ = _tmp450_; _tmp452_ = vala_ccode_identifier_new ("this"); _tmp453_ = _tmp452_; _tmp454_ = vala_dova_object_module_get_type_from_instance (self, (ValaCCodeExpression*) _tmp453_); _tmp455_ = _tmp454_; _tmp456_ = vala_dova_base_module_get_type_private_from_type ((ValaDovaBaseModule*) self, VALA_OBJECT_TYPE_SYMBOL (_tmp451_), _tmp455_); _tmp457_ = _tmp456_; _vala_ccode_node_unref0 (_tmp455_); _vala_ccode_node_unref0 (_tmp453_); vcast = _tmp457_; _tmp458_ = vcast; _tmp459_ = m; _tmp460_ = vala_dova_base_module_get_ccode_vfunc_name ((ValaDovaBaseModule*) self, _tmp459_); _tmp461_ = _tmp460_; _tmp462_ = vala_ccode_member_access_new_pointer (_tmp458_, _tmp461_); _tmp463_ = _tmp462_; _tmp464_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp463_); _tmp465_ = _tmp464_; _vala_ccode_node_unref0 (_tmp463_); _g_free0 (_tmp461_); vcall = _tmp465_; _tmp466_ = vcall; _tmp467_ = vala_ccode_identifier_new ("this"); _tmp468_ = _tmp467_; vala_ccode_function_call_add_argument (_tmp466_, (ValaCCodeExpression*) _tmp468_); _vala_ccode_node_unref0 (_tmp468_); { ValaMethod* _tmp469_; ValaList* _tmp470_ = NULL; ValaList* _type_param_list; ValaList* _tmp471_; gint _tmp472_; gint _tmp473_; gint _type_param_size; gint _type_param_index; _tmp469_ = m; _tmp470_ = vala_method_get_type_parameters (_tmp469_); _type_param_list = _tmp470_; _tmp471_ = _type_param_list; _tmp472_ = vala_collection_get_size ((ValaCollection*) _tmp471_); _tmp473_ = _tmp472_; _type_param_size = _tmp473_; _type_param_index = -1; while (TRUE) { gint _tmp474_; gint _tmp475_; gint _tmp476_; ValaList* _tmp477_; gint _tmp478_; gpointer _tmp479_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunctionCall* _tmp480_; ValaTypeParameter* _tmp481_; const gchar* _tmp482_; const gchar* _tmp483_; gchar* _tmp484_ = NULL; gchar* _tmp485_; gchar* _tmp486_ = NULL; gchar* _tmp487_; ValaCCodeIdentifier* _tmp488_; ValaCCodeIdentifier* _tmp489_; _tmp474_ = _type_param_index; _type_param_index = _tmp474_ + 1; _tmp475_ = _type_param_index; _tmp476_ = _type_param_size; if (!(_tmp475_ < _tmp476_)) { break; } _tmp477_ = _type_param_list; _tmp478_ = _type_param_index; _tmp479_ = vala_list_get (_tmp477_, _tmp478_); type_param = (ValaTypeParameter*) _tmp479_; _tmp480_ = vcall; _tmp481_ = type_param; _tmp482_ = vala_symbol_get_name ((ValaSymbol*) _tmp481_); _tmp483_ = _tmp482_; _tmp484_ = g_utf8_strdown (_tmp483_, (gssize) (-1)); _tmp485_ = _tmp484_; _tmp486_ = g_strdup_printf ("%s_type", _tmp485_); _tmp487_ = _tmp486_; _tmp488_ = vala_ccode_identifier_new (_tmp487_); _tmp489_ = _tmp488_; vala_ccode_function_call_add_argument (_tmp480_, (ValaCCodeExpression*) _tmp489_); _vala_ccode_node_unref0 (_tmp489_); _g_free0 (_tmp487_); _g_free0 (_tmp485_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } { ValaMethod* _tmp490_; ValaList* _tmp491_ = NULL; ValaList* _param_list; ValaList* _tmp492_; gint _tmp493_; gint _tmp494_; gint _param_size; gint _param_index; _tmp490_ = m; _tmp491_ = vala_method_get_parameters (_tmp490_); _param_list = _tmp491_; _tmp492_ = _param_list; _tmp493_ = vala_collection_get_size ((ValaCollection*) _tmp492_); _tmp494_ = _tmp493_; _param_size = _tmp494_; _param_index = -1; while (TRUE) { gint _tmp495_; gint _tmp496_; gint _tmp497_; ValaList* _tmp498_; gint _tmp499_; gpointer _tmp500_ = NULL; ValaParameter* param; ValaCCodeFunctionCall* _tmp501_; ValaParameter* _tmp502_; const gchar* _tmp503_; const gchar* _tmp504_; ValaCCodeIdentifier* _tmp505_; ValaCCodeIdentifier* _tmp506_; _tmp495_ = _param_index; _param_index = _tmp495_ + 1; _tmp496_ = _param_index; _tmp497_ = _param_size; if (!(_tmp496_ < _tmp497_)) { break; } _tmp498_ = _param_list; _tmp499_ = _param_index; _tmp500_ = vala_list_get (_tmp498_, _tmp499_); param = (ValaParameter*) _tmp500_; _tmp501_ = vcall; _tmp502_ = param; _tmp503_ = vala_symbol_get_name ((ValaSymbol*) _tmp502_); _tmp504_ = _tmp503_; _tmp505_ = vala_ccode_identifier_new (_tmp504_); _tmp506_ = _tmp505_; vala_ccode_function_call_add_argument (_tmp501_, (ValaCCodeExpression*) _tmp506_); _vala_ccode_node_unref0 (_tmp506_); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp507_ = m; _tmp508_ = vala_method_get_return_type (_tmp507_); _tmp509_ = _tmp508_; if (VALA_IS_GENERIC_TYPE (_tmp509_)) { ValaCCodeFunctionCall* _tmp510_; ValaCCodeIdentifier* _tmp511_; ValaCCodeIdentifier* _tmp512_; _tmp510_ = vcall; _tmp511_ = vala_ccode_identifier_new ("result"); _tmp512_ = _tmp511_; vala_ccode_function_call_add_argument (_tmp510_, (ValaCCodeExpression*) _tmp512_); _vala_ccode_node_unref0 (_tmp512_); } _tmp514_ = m; _tmp515_ = vala_method_get_return_type (_tmp514_); _tmp516_ = _tmp515_; if (VALA_IS_VOID_TYPE (_tmp516_)) { _tmp513_ = TRUE; } else { ValaMethod* _tmp517_; ValaDataType* _tmp518_; ValaDataType* _tmp519_; _tmp517_ = m; _tmp518_ = vala_method_get_return_type (_tmp517_); _tmp519_ = _tmp518_; _tmp513_ = VALA_IS_GENERIC_TYPE (_tmp519_); } _tmp520_ = _tmp513_; if (_tmp520_) { ValaCCodeFunction* _tmp521_; ValaCCodeBlock* _tmp522_; ValaCCodeBlock* _tmp523_; ValaCCodeFunctionCall* _tmp524_; ValaCCodeExpressionStatement* _tmp525_; ValaCCodeExpressionStatement* _tmp526_; _tmp521_ = vfunc; _tmp522_ = vala_ccode_function_get_block (_tmp521_); _tmp523_ = _tmp522_; _tmp524_ = vcall; _tmp525_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp524_); _tmp526_ = _tmp525_; vala_ccode_block_add_statement (_tmp523_, (ValaCCodeNode*) _tmp526_); _vala_ccode_node_unref0 (_tmp526_); } else { ValaCCodeFunction* _tmp527_; ValaCCodeBlock* _tmp528_; ValaCCodeBlock* _tmp529_; ValaCCodeFunctionCall* _tmp530_; ValaCCodeReturnStatement* _tmp531_; ValaCCodeReturnStatement* _tmp532_; _tmp527_ = vfunc; _tmp528_ = vala_ccode_function_get_block (_tmp527_); _tmp529_ = _tmp528_; _tmp530_ = vcall; _tmp531_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp530_); _tmp532_ = _tmp531_; vala_ccode_block_add_statement (_tmp529_, (ValaCCodeNode*) _tmp532_); _vala_ccode_node_unref0 (_tmp532_); } _tmp533_ = ((ValaDovaBaseModule*) self)->cfile; _tmp534_ = vfunc; vala_ccode_file_add_function (_tmp533_, _tmp534_); _tmp536_ = m; _tmp537_ = vala_method_get_return_type (_tmp536_); _tmp538_ = _tmp537_; if (VALA_IS_GENERIC_TYPE (_tmp538_)) { gchar* _tmp539_; _tmp539_ = g_strdup ("void"); _g_free0 (_tmp535_); _tmp535_ = _tmp539_; } else { ValaMethod* _tmp540_; ValaDataType* _tmp541_; ValaDataType* _tmp542_; gchar* _tmp543_ = NULL; _tmp540_ = m; _tmp541_ = vala_method_get_return_type (_tmp540_); _tmp542_ = _tmp541_; _tmp543_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp542_); _g_free0 (_tmp535_); _tmp535_ = _tmp543_; } _tmp544_ = m; _tmp545_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp544_); _tmp546_ = _tmp545_; _tmp547_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, _tmp546_); _tmp548_ = _tmp547_; _tmp549_ = m; _tmp550_ = vala_symbol_get_name ((ValaSymbol*) _tmp549_); _tmp551_ = _tmp550_; _tmp552_ = g_strdup_printf ("%sbase_%s", _tmp548_, _tmp551_); _tmp553_ = _tmp552_; _tmp554_ = _tmp535_; _tmp555_ = vala_ccode_function_new (_tmp553_, _tmp554_); _vala_ccode_node_unref0 (vfunc); vfunc = _tmp555_; _g_free0 (_tmp553_); _g_free0 (_tmp548_); _tmp556_ = vfunc; _tmp557_ = vala_ccode_block_new (); _tmp558_ = _tmp557_; vala_ccode_function_set_block (_tmp556_, _tmp558_); _vala_ccode_node_unref0 (_tmp558_); _tmp559_ = vfunc; _tmp560_ = vala_ccode_parameter_new ("base_type", "DovaType *"); _tmp561_ = _tmp560_; vala_ccode_function_add_parameter (_tmp559_, _tmp561_); _vala_ccode_node_unref0 (_tmp561_); _tmp562_ = vfunc; _tmp563_ = m; _tmp564_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp563_); _tmp565_ = _tmp564_; _tmp566_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp565_); _tmp567_ = _tmp566_; _tmp568_ = g_strdup_printf ("%s *", _tmp567_); _tmp569_ = _tmp568_; _tmp570_ = vala_ccode_parameter_new ("this", _tmp569_); _tmp571_ = _tmp570_; vala_ccode_function_add_parameter (_tmp562_, _tmp571_); _vala_ccode_node_unref0 (_tmp571_); _g_free0 (_tmp569_); _g_free0 (_tmp567_); { ValaMethod* _tmp572_; ValaList* _tmp573_ = NULL; ValaList* _type_param_list; ValaList* _tmp574_; gint _tmp575_; gint _tmp576_; gint _type_param_size; gint _type_param_index; _tmp572_ = m; _tmp573_ = vala_method_get_type_parameters (_tmp572_); _type_param_list = _tmp573_; _tmp574_ = _type_param_list; _tmp575_ = vala_collection_get_size ((ValaCollection*) _tmp574_); _tmp576_ = _tmp575_; _type_param_size = _tmp576_; _type_param_index = -1; while (TRUE) { gint _tmp577_; gint _tmp578_; gint _tmp579_; ValaList* _tmp580_; gint _tmp581_; gpointer _tmp582_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunction* _tmp583_; ValaTypeParameter* _tmp584_; const gchar* _tmp585_; const gchar* _tmp586_; gchar* _tmp587_ = NULL; gchar* _tmp588_; gchar* _tmp589_ = NULL; gchar* _tmp590_; ValaCCodeParameter* _tmp591_; ValaCCodeParameter* _tmp592_; _tmp577_ = _type_param_index; _type_param_index = _tmp577_ + 1; _tmp578_ = _type_param_index; _tmp579_ = _type_param_size; if (!(_tmp578_ < _tmp579_)) { break; } _tmp580_ = _type_param_list; _tmp581_ = _type_param_index; _tmp582_ = vala_list_get (_tmp580_, _tmp581_); type_param = (ValaTypeParameter*) _tmp582_; _tmp583_ = vfunc; _tmp584_ = type_param; _tmp585_ = vala_symbol_get_name ((ValaSymbol*) _tmp584_); _tmp586_ = _tmp585_; _tmp587_ = g_utf8_strdown (_tmp586_, (gssize) (-1)); _tmp588_ = _tmp587_; _tmp589_ = g_strdup_printf ("%s_type", _tmp588_); _tmp590_ = _tmp589_; _tmp591_ = vala_ccode_parameter_new (_tmp590_, "DovaType*"); _tmp592_ = _tmp591_; vala_ccode_function_add_parameter (_tmp583_, _tmp592_); _vala_ccode_node_unref0 (_tmp592_); _g_free0 (_tmp590_); _g_free0 (_tmp588_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } { ValaMethod* _tmp593_; ValaList* _tmp594_ = NULL; ValaList* _param_list; ValaList* _tmp595_; gint _tmp596_; gint _tmp597_; gint _param_size; gint _param_index; _tmp593_ = m; _tmp594_ = vala_method_get_parameters (_tmp593_); _param_list = _tmp594_; _tmp595_ = _param_list; _tmp596_ = vala_collection_get_size ((ValaCollection*) _tmp595_); _tmp597_ = _tmp596_; _param_size = _tmp597_; _param_index = -1; while (TRUE) { gint _tmp598_; gint _tmp599_; gint _tmp600_; ValaList* _tmp601_; gint _tmp602_; gpointer _tmp603_ = NULL; ValaParameter* param; ValaParameter* _tmp604_; ValaDataType* _tmp605_; ValaDataType* _tmp606_; gchar* _tmp607_ = NULL; gchar* ctypename; ValaParameter* _tmp608_; ValaParameterDirection _tmp609_; ValaParameterDirection _tmp610_; ValaCCodeFunction* _tmp613_; ValaParameter* _tmp614_; const gchar* _tmp615_; const gchar* _tmp616_; const gchar* _tmp617_; ValaCCodeParameter* _tmp618_; ValaCCodeParameter* _tmp619_; _tmp598_ = _param_index; _param_index = _tmp598_ + 1; _tmp599_ = _param_index; _tmp600_ = _param_size; if (!(_tmp599_ < _tmp600_)) { break; } _tmp601_ = _param_list; _tmp602_ = _param_index; _tmp603_ = vala_list_get (_tmp601_, _tmp602_); param = (ValaParameter*) _tmp603_; _tmp604_ = param; _tmp605_ = vala_variable_get_variable_type ((ValaVariable*) _tmp604_); _tmp606_ = _tmp605_; _tmp607_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp606_); ctypename = _tmp607_; _tmp608_ = param; _tmp609_ = vala_parameter_get_direction (_tmp608_); _tmp610_ = _tmp609_; if (_tmp610_ != VALA_PARAMETER_DIRECTION_IN) { const gchar* _tmp611_; gchar* _tmp612_; _tmp611_ = ctypename; _tmp612_ = g_strconcat (_tmp611_, "*", NULL); _g_free0 (ctypename); ctypename = _tmp612_; } _tmp613_ = vfunc; _tmp614_ = param; _tmp615_ = vala_symbol_get_name ((ValaSymbol*) _tmp614_); _tmp616_ = _tmp615_; _tmp617_ = ctypename; _tmp618_ = vala_ccode_parameter_new (_tmp616_, _tmp617_); _tmp619_ = _tmp618_; vala_ccode_function_add_parameter (_tmp613_, _tmp619_); _vala_ccode_node_unref0 (_tmp619_); _g_free0 (ctypename); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp620_ = m; _tmp621_ = vala_method_get_return_type (_tmp620_); _tmp622_ = _tmp621_; if (VALA_IS_GENERIC_TYPE (_tmp622_)) { ValaCCodeFunction* _tmp623_; ValaCCodeParameter* _tmp624_; ValaCCodeParameter* _tmp625_; _tmp623_ = vfunc; _tmp624_ = vala_ccode_parameter_new ("result", "void *"); _tmp625_ = _tmp624_; vala_ccode_function_add_parameter (_tmp623_, _tmp625_); _vala_ccode_node_unref0 (_tmp625_); } _tmp626_ = vala_ccode_identifier_new ("base_type"); base_type = _tmp626_; _tmp627_ = m; _tmp628_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp627_); _tmp629_ = _tmp628_; _tmp630_ = base_type; _tmp631_ = vala_dova_base_module_get_type_private_from_type ((ValaDovaBaseModule*) self, VALA_OBJECT_TYPE_SYMBOL (_tmp629_), (ValaCCodeExpression*) _tmp630_); _vala_ccode_node_unref0 (vcast); vcast = _tmp631_; _tmp632_ = vcast; _tmp633_ = m; _tmp634_ = vala_dova_base_module_get_ccode_vfunc_name ((ValaDovaBaseModule*) self, _tmp633_); _tmp635_ = _tmp634_; _tmp636_ = vala_ccode_member_access_new_pointer (_tmp632_, _tmp635_); _tmp637_ = _tmp636_; _tmp638_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp637_); _vala_ccode_node_unref0 (vcall); vcall = _tmp638_; _vala_ccode_node_unref0 (_tmp637_); _g_free0 (_tmp635_); _tmp639_ = vcall; _tmp640_ = vala_ccode_identifier_new ("this"); _tmp641_ = _tmp640_; vala_ccode_function_call_add_argument (_tmp639_, (ValaCCodeExpression*) _tmp641_); _vala_ccode_node_unref0 (_tmp641_); { ValaMethod* _tmp642_; ValaList* _tmp643_ = NULL; ValaList* _type_param_list; ValaList* _tmp644_; gint _tmp645_; gint _tmp646_; gint _type_param_size; gint _type_param_index; _tmp642_ = m; _tmp643_ = vala_method_get_type_parameters (_tmp642_); _type_param_list = _tmp643_; _tmp644_ = _type_param_list; _tmp645_ = vala_collection_get_size ((ValaCollection*) _tmp644_); _tmp646_ = _tmp645_; _type_param_size = _tmp646_; _type_param_index = -1; while (TRUE) { gint _tmp647_; gint _tmp648_; gint _tmp649_; ValaList* _tmp650_; gint _tmp651_; gpointer _tmp652_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunctionCall* _tmp653_; ValaTypeParameter* _tmp654_; const gchar* _tmp655_; const gchar* _tmp656_; gchar* _tmp657_ = NULL; gchar* _tmp658_; gchar* _tmp659_ = NULL; gchar* _tmp660_; ValaCCodeIdentifier* _tmp661_; ValaCCodeIdentifier* _tmp662_; _tmp647_ = _type_param_index; _type_param_index = _tmp647_ + 1; _tmp648_ = _type_param_index; _tmp649_ = _type_param_size; if (!(_tmp648_ < _tmp649_)) { break; } _tmp650_ = _type_param_list; _tmp651_ = _type_param_index; _tmp652_ = vala_list_get (_tmp650_, _tmp651_); type_param = (ValaTypeParameter*) _tmp652_; _tmp653_ = vcall; _tmp654_ = type_param; _tmp655_ = vala_symbol_get_name ((ValaSymbol*) _tmp654_); _tmp656_ = _tmp655_; _tmp657_ = g_utf8_strdown (_tmp656_, (gssize) (-1)); _tmp658_ = _tmp657_; _tmp659_ = g_strdup_printf ("%s_type", _tmp658_); _tmp660_ = _tmp659_; _tmp661_ = vala_ccode_identifier_new (_tmp660_); _tmp662_ = _tmp661_; vala_ccode_function_call_add_argument (_tmp653_, (ValaCCodeExpression*) _tmp662_); _vala_ccode_node_unref0 (_tmp662_); _g_free0 (_tmp660_); _g_free0 (_tmp658_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } { ValaMethod* _tmp663_; ValaList* _tmp664_ = NULL; ValaList* _param_list; ValaList* _tmp665_; gint _tmp666_; gint _tmp667_; gint _param_size; gint _param_index; _tmp663_ = m; _tmp664_ = vala_method_get_parameters (_tmp663_); _param_list = _tmp664_; _tmp665_ = _param_list; _tmp666_ = vala_collection_get_size ((ValaCollection*) _tmp665_); _tmp667_ = _tmp666_; _param_size = _tmp667_; _param_index = -1; while (TRUE) { gint _tmp668_; gint _tmp669_; gint _tmp670_; ValaList* _tmp671_; gint _tmp672_; gpointer _tmp673_ = NULL; ValaParameter* param; ValaCCodeFunctionCall* _tmp674_; ValaParameter* _tmp675_; const gchar* _tmp676_; const gchar* _tmp677_; ValaCCodeIdentifier* _tmp678_; ValaCCodeIdentifier* _tmp679_; _tmp668_ = _param_index; _param_index = _tmp668_ + 1; _tmp669_ = _param_index; _tmp670_ = _param_size; if (!(_tmp669_ < _tmp670_)) { break; } _tmp671_ = _param_list; _tmp672_ = _param_index; _tmp673_ = vala_list_get (_tmp671_, _tmp672_); param = (ValaParameter*) _tmp673_; _tmp674_ = vcall; _tmp675_ = param; _tmp676_ = vala_symbol_get_name ((ValaSymbol*) _tmp675_); _tmp677_ = _tmp676_; _tmp678_ = vala_ccode_identifier_new (_tmp677_); _tmp679_ = _tmp678_; vala_ccode_function_call_add_argument (_tmp674_, (ValaCCodeExpression*) _tmp679_); _vala_ccode_node_unref0 (_tmp679_); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp680_ = m; _tmp681_ = vala_method_get_return_type (_tmp680_); _tmp682_ = _tmp681_; if (VALA_IS_GENERIC_TYPE (_tmp682_)) { ValaCCodeFunctionCall* _tmp683_; ValaCCodeIdentifier* _tmp684_; ValaCCodeIdentifier* _tmp685_; _tmp683_ = vcall; _tmp684_ = vala_ccode_identifier_new ("result"); _tmp685_ = _tmp684_; vala_ccode_function_call_add_argument (_tmp683_, (ValaCCodeExpression*) _tmp685_); _vala_ccode_node_unref0 (_tmp685_); } _tmp687_ = m; _tmp688_ = vala_method_get_return_type (_tmp687_); _tmp689_ = _tmp688_; if (VALA_IS_VOID_TYPE (_tmp689_)) { _tmp686_ = TRUE; } else { ValaMethod* _tmp690_; ValaDataType* _tmp691_; ValaDataType* _tmp692_; _tmp690_ = m; _tmp691_ = vala_method_get_return_type (_tmp690_); _tmp692_ = _tmp691_; _tmp686_ = VALA_IS_GENERIC_TYPE (_tmp692_); } _tmp693_ = _tmp686_; if (_tmp693_) { ValaCCodeFunction* _tmp694_; ValaCCodeBlock* _tmp695_; ValaCCodeBlock* _tmp696_; ValaCCodeFunctionCall* _tmp697_; ValaCCodeExpressionStatement* _tmp698_; ValaCCodeExpressionStatement* _tmp699_; _tmp694_ = vfunc; _tmp695_ = vala_ccode_function_get_block (_tmp694_); _tmp696_ = _tmp695_; _tmp697_ = vcall; _tmp698_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp697_); _tmp699_ = _tmp698_; vala_ccode_block_add_statement (_tmp696_, (ValaCCodeNode*) _tmp699_); _vala_ccode_node_unref0 (_tmp699_); } else { ValaCCodeFunction* _tmp700_; ValaCCodeBlock* _tmp701_; ValaCCodeBlock* _tmp702_; ValaCCodeFunctionCall* _tmp703_; ValaCCodeReturnStatement* _tmp704_; ValaCCodeReturnStatement* _tmp705_; _tmp700_ = vfunc; _tmp701_ = vala_ccode_function_get_block (_tmp700_); _tmp702_ = _tmp701_; _tmp703_ = vcall; _tmp704_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp703_); _tmp705_ = _tmp704_; vala_ccode_block_add_statement (_tmp702_, (ValaCCodeNode*) _tmp705_); _vala_ccode_node_unref0 (_tmp705_); } _tmp706_ = ((ValaDovaBaseModule*) self)->cfile; _tmp707_ = vfunc; vala_ccode_file_add_function (_tmp706_, _tmp707_); _tmp708_ = m; _tmp709_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp708_); _tmp710_ = _tmp709_; _tmp711_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp710_); _tmp712_ = _tmp711_; _tmp713_ = g_strdup_printf ("(%s *this", _tmp712_); _tmp714_ = _tmp713_; _g_free0 (_tmp712_); param_list = _tmp714_; { ValaMethod* _tmp715_; ValaList* _tmp716_ = NULL; ValaList* _param_list; ValaList* _tmp717_; gint _tmp718_; gint _tmp719_; gint _param_size; gint _param_index; _tmp715_ = m; _tmp716_ = vala_method_get_parameters (_tmp715_); _param_list = _tmp716_; _tmp717_ = _param_list; _tmp718_ = vala_collection_get_size ((ValaCollection*) _tmp717_); _tmp719_ = _tmp718_; _param_size = _tmp719_; _param_index = -1; while (TRUE) { gint _tmp720_; gint _tmp721_; gint _tmp722_; ValaList* _tmp723_; gint _tmp724_; gpointer _tmp725_ = NULL; ValaParameter* param; const gchar* _tmp726_; gchar* _tmp727_; const gchar* _tmp728_; ValaParameter* _tmp729_; ValaDataType* _tmp730_; ValaDataType* _tmp731_; gchar* _tmp732_ = NULL; gchar* _tmp733_; gchar* _tmp734_; _tmp720_ = _param_index; _param_index = _tmp720_ + 1; _tmp721_ = _param_index; _tmp722_ = _param_size; if (!(_tmp721_ < _tmp722_)) { break; } _tmp723_ = _param_list; _tmp724_ = _param_index; _tmp725_ = vala_list_get (_tmp723_, _tmp724_); param = (ValaParameter*) _tmp725_; _tmp726_ = param_list; _tmp727_ = g_strconcat (_tmp726_, ", ", NULL); _g_free0 (param_list); param_list = _tmp727_; _tmp728_ = param_list; _tmp729_ = param; _tmp730_ = vala_variable_get_variable_type ((ValaVariable*) _tmp729_); _tmp731_ = _tmp730_; _tmp732_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp731_); _tmp733_ = _tmp732_; _tmp734_ = g_strconcat (_tmp728_, _tmp733_, NULL); _g_free0 (param_list); param_list = _tmp734_; _g_free0 (_tmp733_); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp735_ = m; _tmp736_ = vala_method_get_return_type (_tmp735_); _tmp737_ = _tmp736_; if (VALA_IS_GENERIC_TYPE (_tmp737_)) { const gchar* _tmp738_; gchar* _tmp739_; _tmp738_ = param_list; _tmp739_ = g_strconcat (_tmp738_, ", void *", NULL); _g_free0 (param_list); param_list = _tmp739_; } _tmp740_ = param_list; _tmp741_ = g_strconcat (_tmp740_, ")", NULL); _g_free0 (param_list); param_list = _tmp741_; _tmp742_ = m; _tmp743_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp742_); _tmp744_ = _tmp743_; _tmp745_ = vala_dova_base_module_get_ccode_lower_case_prefix ((ValaDovaBaseModule*) self, _tmp744_); _tmp746_ = _tmp745_; _tmp747_ = m; _tmp748_ = vala_symbol_get_name ((ValaSymbol*) _tmp747_); _tmp749_ = _tmp748_; _tmp750_ = g_strdup_printf ("%soverride_%s", _tmp746_, _tmp749_); _tmp751_ = _tmp750_; _tmp752_ = vala_ccode_function_new (_tmp751_, "void"); _tmp753_ = _tmp752_; _g_free0 (_tmp751_); _g_free0 (_tmp746_); override_func = _tmp753_; _tmp754_ = override_func; _tmp755_ = vala_ccode_parameter_new ("type", "DovaType *"); _tmp756_ = _tmp755_; vala_ccode_function_add_parameter (_tmp754_, _tmp756_); _vala_ccode_node_unref0 (_tmp756_); _tmp758_ = m; _tmp759_ = vala_method_get_return_type (_tmp758_); _tmp760_ = _tmp759_; if (VALA_IS_GENERIC_TYPE (_tmp760_)) { gchar* _tmp761_; _tmp761_ = g_strdup ("void"); _g_free0 (_tmp757_); _tmp757_ = _tmp761_; } else { ValaMethod* _tmp762_; ValaDataType* _tmp763_; ValaDataType* _tmp764_; gchar* _tmp765_ = NULL; _tmp762_ = m; _tmp763_ = vala_method_get_return_type (_tmp762_); _tmp764_ = _tmp763_; _tmp765_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp764_); _g_free0 (_tmp757_); _tmp757_ = _tmp765_; } _tmp766_ = override_func; _tmp767_ = param_list; _tmp768_ = g_strdup_printf ("(*function) %s", _tmp767_); _tmp769_ = _tmp768_; _tmp770_ = _tmp757_; _tmp771_ = vala_ccode_parameter_new (_tmp769_, _tmp770_); _tmp772_ = _tmp771_; vala_ccode_function_add_parameter (_tmp766_, _tmp772_); _vala_ccode_node_unref0 (_tmp772_); _g_free0 (_tmp769_); _tmp773_ = override_func; _tmp774_ = vala_ccode_block_new (); _tmp775_ = _tmp774_; vala_ccode_function_set_block (_tmp773_, _tmp775_); _vala_ccode_node_unref0 (_tmp775_); _tmp776_ = m; _tmp777_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp776_); _tmp778_ = _tmp777_; _tmp779_ = vala_ccode_identifier_new ("type"); _tmp780_ = _tmp779_; _tmp781_ = vala_dova_base_module_get_type_private_from_type ((ValaDovaBaseModule*) self, VALA_OBJECT_TYPE_SYMBOL (_tmp778_), (ValaCCodeExpression*) _tmp780_); _vala_ccode_node_unref0 (vcast); vcast = _tmp781_; _vala_ccode_node_unref0 (_tmp780_); _tmp782_ = override_func; _tmp783_ = vala_ccode_function_get_block (_tmp782_); _tmp784_ = _tmp783_; _tmp785_ = vcast; _tmp786_ = m; _tmp787_ = vala_symbol_get_name ((ValaSymbol*) _tmp786_); _tmp788_ = _tmp787_; _tmp789_ = vala_ccode_member_access_new_pointer (_tmp785_, _tmp788_); _tmp790_ = _tmp789_; _tmp791_ = vala_ccode_identifier_new ("function"); _tmp792_ = _tmp791_; _tmp793_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp790_, (ValaCCodeExpression*) _tmp792_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp794_ = _tmp793_; _tmp795_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp794_); _tmp796_ = _tmp795_; vala_ccode_block_add_statement (_tmp784_, (ValaCCodeNode*) _tmp796_); _vala_ccode_node_unref0 (_tmp796_); _vala_ccode_node_unref0 (_tmp794_); _vala_ccode_node_unref0 (_tmp792_); _vala_ccode_node_unref0 (_tmp790_); _tmp797_ = ((ValaDovaBaseModule*) self)->cfile; _tmp798_ = override_func; vala_ccode_file_add_function (_tmp797_, _tmp798_); _g_free0 (_tmp757_); _vala_ccode_node_unref0 (override_func); _g_free0 (param_list); _vala_ccode_node_unref0 (base_type); _g_free0 (_tmp535_); _vala_ccode_node_unref0 (vcall); _vala_ccode_node_unref0 (vcast); _vala_ccode_node_unref0 (vfunc); _g_free0 (_tmp299_); } vala_dova_base_module_pop_context ((ValaDovaBaseModule*) self); _tmp799_ = m; _tmp800_ = vala_method_get_entry_point (_tmp799_); _tmp801_ = _tmp800_; if (_tmp801_) { ValaStruct* _tmp802_; ValaStructValueType* _tmp803_; ValaStructValueType* _tmp804_; ValaCCodeFile* _tmp805_; ValaCCodeFunction* _tmp806_; ValaCCodeFunction* cmain; ValaCCodeFunction* _tmp807_; ValaCCodeFunction* _tmp808_; ValaCCodeLineDirective* _tmp809_; ValaCCodeLineDirective* _tmp810_; ValaCCodeFunction* _tmp811_; ValaCCodeParameter* _tmp812_; ValaCCodeParameter* _tmp813_; ValaCCodeFunction* _tmp814_; ValaCCodeParameter* _tmp815_; ValaCCodeParameter* _tmp816_; ValaCCodeFunction* _tmp817_; ValaCCodeIdentifier* _tmp818_; ValaCCodeIdentifier* _tmp819_; ValaCCodeFunctionCall* _tmp820_; ValaCCodeFunctionCall* _tmp821_; ValaCCodeFunctionCall* dova_init_call; ValaCCodeFunctionCall* _tmp822_; ValaCCodeIdentifier* _tmp823_; ValaCCodeIdentifier* _tmp824_; ValaCCodeFunctionCall* _tmp825_; ValaCCodeIdentifier* _tmp826_; ValaCCodeIdentifier* _tmp827_; ValaCCodeFunction* _tmp828_; ValaCCodeFunction* _tmp829_; ValaCCodeFunctionCall* _tmp830_; ValaCCodeExpressionStatement* _tmp831_; ValaCCodeExpressionStatement* _tmp832_; ValaCCodeDeclaration* _tmp833_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp834_; ValaCCodeConstant* _tmp835_; ValaCCodeConstant* _tmp836_; ValaCCodeVariableDeclarator* _tmp837_; ValaCCodeVariableDeclarator* _tmp838_; ValaCCodeFunction* _tmp839_; ValaCCodeFunction* _tmp840_; ValaCCodeDeclaration* _tmp841_; ValaCCodeFunction* _tmp842_; const gchar* _tmp843_; const gchar* _tmp844_; ValaCCodeIdentifier* _tmp845_; ValaCCodeIdentifier* _tmp846_; ValaCCodeFunctionCall* _tmp847_; ValaCCodeFunctionCall* _tmp848_; ValaCCodeFunctionCall* main_call; ValaMethod* _tmp849_; ValaList* _tmp850_ = NULL; ValaList* _tmp851_; gint _tmp852_; gint _tmp853_; gboolean _tmp854_; ValaMethod* _tmp945_; ValaDataType* _tmp946_; ValaDataType* _tmp947_; ValaCCodeIdentifier* _tmp971_; ValaCCodeIdentifier* _tmp972_; ValaCCodeReturnStatement* _tmp973_; ValaCCodeReturnStatement* _tmp974_; ValaCCodeReturnStatement* ret_stmt; ValaCCodeReturnStatement* _tmp975_; ValaCCodeFunction* _tmp976_; ValaCCodeLineDirective* _tmp977_; ValaCCodeLineDirective* _tmp978_; ValaCCodeFunction* _tmp979_; ValaCCodeFunction* _tmp980_; ValaCCodeReturnStatement* _tmp981_; ValaCCodeFile* _tmp982_; ValaCCodeFunction* _tmp983_; _tmp802_ = ((ValaDovaBaseModule*) self)->array_struct; _tmp803_ = vala_struct_value_type_new (_tmp802_); _tmp804_ = _tmp803_; _tmp805_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_type_declaration ((ValaDovaBaseModule*) self, (ValaDataType*) _tmp804_, _tmp805_); _vala_code_node_unref0 (_tmp804_); _tmp806_ = vala_ccode_function_new ("main", "int"); cmain = _tmp806_; _tmp807_ = cmain; _tmp808_ = function; _tmp809_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp808_); _tmp810_ = _tmp809_; vala_ccode_node_set_line ((ValaCCodeNode*) _tmp807_, _tmp810_); _tmp811_ = cmain; _tmp812_ = vala_ccode_parameter_new ("argc", "int"); _tmp813_ = _tmp812_; vala_ccode_function_add_parameter (_tmp811_, _tmp813_); _vala_ccode_node_unref0 (_tmp813_); _tmp814_ = cmain; _tmp815_ = vala_ccode_parameter_new ("argv", "char **"); _tmp816_ = _tmp815_; vala_ccode_function_add_parameter (_tmp814_, _tmp816_); _vala_ccode_node_unref0 (_tmp816_); _tmp817_ = cmain; vala_dova_base_module_push_function ((ValaDovaBaseModule*) self, _tmp817_); _tmp818_ = vala_ccode_identifier_new ("dova_init"); _tmp819_ = _tmp818_; _tmp820_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp819_); _tmp821_ = _tmp820_; _vala_ccode_node_unref0 (_tmp819_); dova_init_call = _tmp821_; _tmp822_ = dova_init_call; _tmp823_ = vala_ccode_identifier_new ("argc"); _tmp824_ = _tmp823_; vala_ccode_function_call_add_argument (_tmp822_, (ValaCCodeExpression*) _tmp824_); _vala_ccode_node_unref0 (_tmp824_); _tmp825_ = dova_init_call; _tmp826_ = vala_ccode_identifier_new ("argv"); _tmp827_ = _tmp826_; vala_ccode_function_call_add_argument (_tmp825_, (ValaCCodeExpression*) _tmp827_); _vala_ccode_node_unref0 (_tmp827_); _tmp828_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp829_ = _tmp828_; _tmp830_ = dova_init_call; _tmp831_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp830_); _tmp832_ = _tmp831_; vala_ccode_function_add_statement (_tmp829_, (ValaCCodeNode*) _tmp832_); _vala_ccode_node_unref0 (_tmp832_); vala_dova_object_module_add_module_init (self); _tmp833_ = vala_ccode_declaration_new ("int"); _cdecl_ = _tmp833_; _tmp834_ = _cdecl_; _tmp835_ = vala_ccode_constant_new ("0"); _tmp836_ = _tmp835_; _tmp837_ = vala_ccode_variable_declarator_new ("result", (ValaCCodeExpression*) _tmp836_, NULL); _tmp838_ = _tmp837_; vala_ccode_declaration_add_declarator (_tmp834_, (ValaCCodeDeclarator*) _tmp838_); _vala_ccode_node_unref0 (_tmp838_); _vala_ccode_node_unref0 (_tmp836_); _tmp839_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp840_ = _tmp839_; _tmp841_ = _cdecl_; vala_ccode_function_add_statement (_tmp840_, (ValaCCodeNode*) _tmp841_); _tmp842_ = function; _tmp843_ = vala_ccode_function_get_name (_tmp842_); _tmp844_ = _tmp843_; _tmp845_ = vala_ccode_identifier_new (_tmp844_); _tmp846_ = _tmp845_; _tmp847_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp846_); _tmp848_ = _tmp847_; _vala_ccode_node_unref0 (_tmp846_); main_call = _tmp848_; _tmp849_ = m; _tmp850_ = vala_method_get_parameters (_tmp849_); _tmp851_ = _tmp850_; _tmp852_ = vala_collection_get_size ((ValaCollection*) _tmp851_); _tmp853_ = _tmp852_; _tmp854_ = _tmp853_ == 1; _vala_iterable_unref0 (_tmp851_); if (_tmp854_) { ValaCCodeIdentifier* _tmp855_; ValaCCodeIdentifier* _tmp856_; ValaCCodeFunctionCall* _tmp857_; ValaCCodeFunctionCall* _tmp858_; ValaCCodeFunctionCall* array_creation; ValaCCodeFunctionCall* _tmp859_; ValaCCodeIdentifier* _tmp860_; ValaCCodeIdentifier* _tmp861_; ValaCCodeFunctionCall* _tmp862_; ValaCCodeFunctionCall* _tmp863_; ValaCCodeFunctionCall* _tmp864_; ValaCCodeIdentifier* _tmp865_; ValaCCodeIdentifier* _tmp866_; ValaCCodeDeclaration* _tmp867_; ValaCCodeDeclaration* _tmp868_; ValaCCodeFunctionCall* _tmp869_; ValaCCodeVariableDeclarator* _tmp870_; ValaCCodeVariableDeclarator* _tmp871_; ValaCCodeFunction* _tmp872_; ValaCCodeFunction* _tmp873_; ValaCCodeDeclaration* _tmp874_; ValaCCodeIdentifier* _tmp875_; ValaCCodeIdentifier* _tmp876_; ValaCCodeMemberAccess* _tmp877_; ValaCCodeMemberAccess* _tmp878_; ValaCCodeMemberAccess* array_data; ValaCCodeDeclaration* _tmp879_; ValaCCodeDeclaration* _tmp880_; ValaCCodeMemberAccess* _tmp881_; ValaCCodeVariableDeclarator* _tmp882_; ValaCCodeVariableDeclarator* _tmp883_; ValaCCodeFunction* _tmp884_; ValaCCodeFunction* _tmp885_; ValaCCodeDeclaration* _tmp886_; ValaCCodeDeclaration* _tmp887_; ValaCCodeDeclaration* _tmp888_; ValaCCodeVariableDeclarator* _tmp889_; ValaCCodeVariableDeclarator* _tmp890_; ValaCCodeFunction* _tmp891_; ValaCCodeFunction* _tmp892_; ValaCCodeDeclaration* _tmp893_; ValaCCodeIdentifier* _tmp894_; ValaCCodeIdentifier* _tmp895_; ValaCCodeFunctionCall* _tmp896_; ValaCCodeFunctionCall* _tmp897_; ValaCCodeFunctionCall* string_creation; ValaCCodeFunctionCall* _tmp898_; ValaCCodeIdentifier* _tmp899_; ValaCCodeIdentifier* _tmp900_; ValaCCodeIdentifier* _tmp901_; ValaCCodeIdentifier* _tmp902_; ValaCCodeElementAccess* _tmp903_; ValaCCodeElementAccess* _tmp904_; ValaCCodeBlock* _tmp905_; ValaCCodeBlock* loop_block; ValaCCodeBlock* _tmp906_; ValaCCodeIdentifier* _tmp907_; ValaCCodeIdentifier* _tmp908_; ValaCCodeIdentifier* _tmp909_; ValaCCodeIdentifier* _tmp910_; ValaCCodeElementAccess* _tmp911_; ValaCCodeElementAccess* _tmp912_; ValaCCodeFunctionCall* _tmp913_; ValaCCodeAssignment* _tmp914_; ValaCCodeAssignment* _tmp915_; ValaCCodeExpressionStatement* _tmp916_; ValaCCodeExpressionStatement* _tmp917_; ValaCCodeIdentifier* _tmp918_; ValaCCodeIdentifier* _tmp919_; ValaCCodeIdentifier* _tmp920_; ValaCCodeIdentifier* _tmp921_; ValaCCodeBinaryExpression* _tmp922_; ValaCCodeBinaryExpression* _tmp923_; ValaCCodeBlock* _tmp924_; ValaCCodeForStatement* _tmp925_; ValaCCodeForStatement* _tmp926_; ValaCCodeForStatement* for_stmt; ValaCCodeForStatement* _tmp927_; ValaCCodeIdentifier* _tmp928_; ValaCCodeIdentifier* _tmp929_; ValaCCodeConstant* _tmp930_; ValaCCodeConstant* _tmp931_; ValaCCodeAssignment* _tmp932_; ValaCCodeAssignment* _tmp933_; ValaCCodeForStatement* _tmp934_; ValaCCodeIdentifier* _tmp935_; ValaCCodeIdentifier* _tmp936_; ValaCCodeUnaryExpression* _tmp937_; ValaCCodeUnaryExpression* _tmp938_; ValaCCodeFunction* _tmp939_; ValaCCodeFunction* _tmp940_; ValaCCodeForStatement* _tmp941_; ValaCCodeFunctionCall* _tmp942_; ValaCCodeIdentifier* _tmp943_; ValaCCodeIdentifier* _tmp944_; _tmp855_ = vala_ccode_identifier_new ("dova_array_create"); _tmp856_ = _tmp855_; _tmp857_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp856_); _tmp858_ = _tmp857_; _vala_ccode_node_unref0 (_tmp856_); array_creation = _tmp858_; _tmp859_ = array_creation; _tmp860_ = vala_ccode_identifier_new ("string_type_get"); _tmp861_ = _tmp860_; _tmp862_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp861_); _tmp863_ = _tmp862_; vala_ccode_function_call_add_argument (_tmp859_, (ValaCCodeExpression*) _tmp863_); _vala_ccode_node_unref0 (_tmp863_); _vala_ccode_node_unref0 (_tmp861_); _tmp864_ = array_creation; _tmp865_ = vala_ccode_identifier_new ("argc"); _tmp866_ = _tmp865_; vala_ccode_function_call_add_argument (_tmp864_, (ValaCCodeExpression*) _tmp866_); _vala_ccode_node_unref0 (_tmp866_); _tmp867_ = vala_ccode_declaration_new ("DovaArray"); _vala_ccode_node_unref0 (_cdecl_); _cdecl_ = _tmp867_; _tmp868_ = _cdecl_; _tmp869_ = array_creation; _tmp870_ = vala_ccode_variable_declarator_new ("args", (ValaCCodeExpression*) _tmp869_, NULL); _tmp871_ = _tmp870_; vala_ccode_declaration_add_declarator (_tmp868_, (ValaCCodeDeclarator*) _tmp871_); _vala_ccode_node_unref0 (_tmp871_); _tmp872_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp873_ = _tmp872_; _tmp874_ = _cdecl_; vala_ccode_function_add_statement (_tmp873_, (ValaCCodeNode*) _tmp874_); _tmp875_ = vala_ccode_identifier_new ("args"); _tmp876_ = _tmp875_; _tmp877_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp876_, "data", FALSE); _tmp878_ = _tmp877_; _vala_ccode_node_unref0 (_tmp876_); array_data = _tmp878_; _tmp879_ = vala_ccode_declaration_new ("string_t*"); _vala_ccode_node_unref0 (_cdecl_); _cdecl_ = _tmp879_; _tmp880_ = _cdecl_; _tmp881_ = array_data; _tmp882_ = vala_ccode_variable_declarator_new ("args_data", (ValaCCodeExpression*) _tmp881_, NULL); _tmp883_ = _tmp882_; vala_ccode_declaration_add_declarator (_tmp880_, (ValaCCodeDeclarator*) _tmp883_); _vala_ccode_node_unref0 (_tmp883_); _tmp884_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp885_ = _tmp884_; _tmp886_ = _cdecl_; vala_ccode_function_add_statement (_tmp885_, (ValaCCodeNode*) _tmp886_); _tmp887_ = vala_ccode_declaration_new ("int"); _vala_ccode_node_unref0 (_cdecl_); _cdecl_ = _tmp887_; _tmp888_ = _cdecl_; _tmp889_ = vala_ccode_variable_declarator_new ("argi", NULL, NULL); _tmp890_ = _tmp889_; vala_ccode_declaration_add_declarator (_tmp888_, (ValaCCodeDeclarator*) _tmp890_); _vala_ccode_node_unref0 (_tmp890_); _tmp891_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp892_ = _tmp891_; _tmp893_ = _cdecl_; vala_ccode_function_add_statement (_tmp892_, (ValaCCodeNode*) _tmp893_); _tmp894_ = vala_ccode_identifier_new ("string_create_from_cstring"); _tmp895_ = _tmp894_; _tmp896_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp895_); _tmp897_ = _tmp896_; _vala_ccode_node_unref0 (_tmp895_); string_creation = _tmp897_; _tmp898_ = string_creation; _tmp899_ = vala_ccode_identifier_new ("argv"); _tmp900_ = _tmp899_; _tmp901_ = vala_ccode_identifier_new ("argi"); _tmp902_ = _tmp901_; _tmp903_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp900_, (ValaCCodeExpression*) _tmp902_); _tmp904_ = _tmp903_; vala_ccode_function_call_add_argument (_tmp898_, (ValaCCodeExpression*) _tmp904_); _vala_ccode_node_unref0 (_tmp904_); _vala_ccode_node_unref0 (_tmp902_); _vala_ccode_node_unref0 (_tmp900_); _tmp905_ = vala_ccode_block_new (); loop_block = _tmp905_; _tmp906_ = loop_block; _tmp907_ = vala_ccode_identifier_new ("args_data"); _tmp908_ = _tmp907_; _tmp909_ = vala_ccode_identifier_new ("argi"); _tmp910_ = _tmp909_; _tmp911_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp908_, (ValaCCodeExpression*) _tmp910_); _tmp912_ = _tmp911_; _tmp913_ = string_creation; _tmp914_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp912_, (ValaCCodeExpression*) _tmp913_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp915_ = _tmp914_; _tmp916_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp915_); _tmp917_ = _tmp916_; vala_ccode_block_add_statement (_tmp906_, (ValaCCodeNode*) _tmp917_); _vala_ccode_node_unref0 (_tmp917_); _vala_ccode_node_unref0 (_tmp915_); _vala_ccode_node_unref0 (_tmp912_); _vala_ccode_node_unref0 (_tmp910_); _vala_ccode_node_unref0 (_tmp908_); _tmp918_ = vala_ccode_identifier_new ("argi"); _tmp919_ = _tmp918_; _tmp920_ = vala_ccode_identifier_new ("argc"); _tmp921_ = _tmp920_; _tmp922_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_LESS_THAN, (ValaCCodeExpression*) _tmp919_, (ValaCCodeExpression*) _tmp921_); _tmp923_ = _tmp922_; _tmp924_ = loop_block; _tmp925_ = vala_ccode_for_statement_new ((ValaCCodeExpression*) _tmp923_, (ValaCCodeStatement*) _tmp924_); _tmp926_ = _tmp925_; _vala_ccode_node_unref0 (_tmp923_); _vala_ccode_node_unref0 (_tmp921_); _vala_ccode_node_unref0 (_tmp919_); for_stmt = _tmp926_; _tmp927_ = for_stmt; _tmp928_ = vala_ccode_identifier_new ("argi"); _tmp929_ = _tmp928_; _tmp930_ = vala_ccode_constant_new ("0"); _tmp931_ = _tmp930_; _tmp932_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp929_, (ValaCCodeExpression*) _tmp931_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp933_ = _tmp932_; vala_ccode_for_statement_add_initializer (_tmp927_, (ValaCCodeExpression*) _tmp933_); _vala_ccode_node_unref0 (_tmp933_); _vala_ccode_node_unref0 (_tmp931_); _vala_ccode_node_unref0 (_tmp929_); _tmp934_ = for_stmt; _tmp935_ = vala_ccode_identifier_new ("argi"); _tmp936_ = _tmp935_; _tmp937_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp936_); _tmp938_ = _tmp937_; vala_ccode_for_statement_add_iterator (_tmp934_, (ValaCCodeExpression*) _tmp938_); _vala_ccode_node_unref0 (_tmp938_); _vala_ccode_node_unref0 (_tmp936_); _tmp939_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp940_ = _tmp939_; _tmp941_ = for_stmt; vala_ccode_function_add_statement (_tmp940_, (ValaCCodeNode*) _tmp941_); _tmp942_ = main_call; _tmp943_ = vala_ccode_identifier_new ("args"); _tmp944_ = _tmp943_; vala_ccode_function_call_add_argument (_tmp942_, (ValaCCodeExpression*) _tmp944_); _vala_ccode_node_unref0 (_tmp944_); _vala_ccode_node_unref0 (for_stmt); _vala_ccode_node_unref0 (loop_block); _vala_ccode_node_unref0 (string_creation); _vala_ccode_node_unref0 (array_data); _vala_ccode_node_unref0 (array_creation); } _tmp945_ = m; _tmp946_ = vala_method_get_return_type (_tmp945_); _tmp947_ = _tmp946_; if (VALA_IS_VOID_TYPE (_tmp947_)) { ValaCCodeFunctionCall* _tmp948_; ValaCCodeExpressionStatement* _tmp949_; ValaCCodeExpressionStatement* main_stmt; ValaCCodeExpressionStatement* _tmp950_; ValaCCodeFunction* _tmp951_; ValaCCodeLineDirective* _tmp952_; ValaCCodeLineDirective* _tmp953_; ValaCCodeFunction* _tmp954_; ValaCCodeFunction* _tmp955_; ValaCCodeExpressionStatement* _tmp956_; _tmp948_ = main_call; _tmp949_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp948_); main_stmt = _tmp949_; _tmp950_ = main_stmt; _tmp951_ = cmain; _tmp952_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp951_); _tmp953_ = _tmp952_; vala_ccode_node_set_line ((ValaCCodeNode*) _tmp950_, _tmp953_); _tmp954_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp955_ = _tmp954_; _tmp956_ = main_stmt; vala_ccode_function_add_statement (_tmp955_, (ValaCCodeNode*) _tmp956_); _vala_ccode_node_unref0 (main_stmt); } else { ValaCCodeIdentifier* _tmp957_; ValaCCodeIdentifier* _tmp958_; ValaCCodeFunctionCall* _tmp959_; ValaCCodeAssignment* _tmp960_; ValaCCodeAssignment* _tmp961_; ValaCCodeExpressionStatement* _tmp962_; ValaCCodeExpressionStatement* _tmp963_; ValaCCodeExpressionStatement* main_stmt; ValaCCodeExpressionStatement* _tmp964_; ValaCCodeFunction* _tmp965_; ValaCCodeLineDirective* _tmp966_; ValaCCodeLineDirective* _tmp967_; ValaCCodeFunction* _tmp968_; ValaCCodeFunction* _tmp969_; ValaCCodeExpressionStatement* _tmp970_; _tmp957_ = vala_ccode_identifier_new ("result"); _tmp958_ = _tmp957_; _tmp959_ = main_call; _tmp960_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp958_, (ValaCCodeExpression*) _tmp959_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp961_ = _tmp960_; _tmp962_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp961_); _tmp963_ = _tmp962_; _vala_ccode_node_unref0 (_tmp961_); _vala_ccode_node_unref0 (_tmp958_); main_stmt = _tmp963_; _tmp964_ = main_stmt; _tmp965_ = cmain; _tmp966_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp965_); _tmp967_ = _tmp966_; vala_ccode_node_set_line ((ValaCCodeNode*) _tmp964_, _tmp967_); _tmp968_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp969_ = _tmp968_; _tmp970_ = main_stmt; vala_ccode_function_add_statement (_tmp969_, (ValaCCodeNode*) _tmp970_); _vala_ccode_node_unref0 (main_stmt); } _tmp971_ = vala_ccode_identifier_new ("result"); _tmp972_ = _tmp971_; _tmp973_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp972_); _tmp974_ = _tmp973_; _vala_ccode_node_unref0 (_tmp972_); ret_stmt = _tmp974_; _tmp975_ = ret_stmt; _tmp976_ = cmain; _tmp977_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp976_); _tmp978_ = _tmp977_; vala_ccode_node_set_line ((ValaCCodeNode*) _tmp975_, _tmp978_); _tmp979_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp980_ = _tmp979_; _tmp981_ = ret_stmt; vala_ccode_function_add_statement (_tmp980_, (ValaCCodeNode*) _tmp981_); vala_dova_base_module_pop_function ((ValaDovaBaseModule*) self); _tmp982_ = ((ValaDovaBaseModule*) self)->cfile; _tmp983_ = cmain; vala_ccode_file_add_function (_tmp982_, _tmp983_); _vala_ccode_node_unref0 (ret_stmt); _vala_ccode_node_unref0 (main_call); _vala_ccode_node_unref0 (_cdecl_); _vala_ccode_node_unref0 (dova_init_call); _vala_ccode_node_unref0 (cmain); } _vala_ccode_node_unref0 (function); } static void vala_dova_object_module_real_visit_creation_method (ValaCodeVisitor* base, ValaCreationMethod* m) { ValaDovaObjectModule * self; ValaCreationMethod* _tmp0_; gboolean _tmp1_ = FALSE; gboolean visible; ValaCreationMethod* _tmp2_; ValaDataType* creturn_type = NULL; ValaTypeSymbol* _tmp3_; ValaTypeSymbol* _tmp4_; gboolean _tmp9_ = FALSE; ValaTypeSymbol* _tmp10_; ValaTypeSymbol* _tmp11_; gboolean _tmp16_; self = (ValaDovaObjectModule*) base; g_return_if_fail (m != NULL); _tmp0_ = m; _tmp1_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp0_); visible = !_tmp1_; _tmp2_ = m; vala_code_visitor_visit_method ((ValaCodeVisitor*) self, (ValaMethod*) _tmp2_); _tmp3_ = vala_dova_base_module_get_current_type_symbol ((ValaDovaBaseModule*) self); _tmp4_ = _tmp3_; if (VALA_IS_CLASS (_tmp4_)) { ValaClass* _tmp5_; ValaClass* _tmp6_; ValaObjectType* _tmp7_; _tmp5_ = vala_dova_base_module_get_current_class ((ValaDovaBaseModule*) self); _tmp6_ = _tmp5_; _tmp7_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp6_); _vala_code_node_unref0 (creturn_type); creturn_type = (ValaDataType*) _tmp7_; } else { ValaVoidType* _tmp8_; _tmp8_ = vala_void_type_new (NULL); _vala_code_node_unref0 (creturn_type); creturn_type = (ValaDataType*) _tmp8_; } _tmp10_ = vala_dova_base_module_get_current_type_symbol ((ValaDovaBaseModule*) self); _tmp11_ = _tmp10_; if (VALA_IS_CLASS (_tmp11_)) { ValaClass* _tmp12_; ValaClass* _tmp13_; gboolean _tmp14_; gboolean _tmp15_; _tmp12_ = vala_dova_base_module_get_current_class ((ValaDovaBaseModule*) self); _tmp13_ = _tmp12_; _tmp14_ = vala_class_get_is_abstract (_tmp13_); _tmp15_ = _tmp14_; _tmp9_ = !_tmp15_; } else { _tmp9_ = FALSE; } _tmp16_ = _tmp9_; if (_tmp16_) { ValaCreationMethod* _tmp17_; gchar* _tmp18_ = NULL; gchar* _tmp19_; ValaCCodeFunction* _tmp20_; ValaCCodeFunction* _tmp21_; ValaCCodeFunction* vfunc; ValaCCodeBlock* _tmp22_; ValaCCodeBlock* vblock; ValaTypeSymbol* _tmp23_; ValaTypeSymbol* _tmp24_; gchar* _tmp25_ = NULL; gchar* _tmp26_; gchar* _tmp27_ = NULL; gchar* _tmp28_; ValaCCodeDeclaration* _tmp29_; ValaCCodeDeclaration* _tmp30_; ValaCCodeDeclaration* _cdecl_; ValaCCodeDeclaration* _tmp31_; ValaCCodeVariableDeclarator* _tmp32_; ValaCCodeVariableDeclarator* _tmp33_; ValaCCodeBlock* _tmp34_; ValaCCodeDeclaration* _tmp35_; ValaClass* _tmp36_; ValaClass* _tmp37_; gchar* _tmp38_ = NULL; gchar* _tmp39_; gchar* _tmp40_; gchar* _tmp41_; ValaCCodeIdentifier* _tmp42_; ValaCCodeIdentifier* _tmp43_; ValaCCodeFunctionCall* _tmp44_; ValaCCodeFunctionCall* _tmp45_; ValaCCodeFunctionCall* type_get; ValaCCodeIdentifier* _tmp68_; ValaCCodeIdentifier* _tmp69_; ValaCCodeFunctionCall* _tmp70_; ValaCCodeFunctionCall* _tmp71_; ValaCCodeFunctionCall* alloc_call; ValaCCodeFunctionCall* _tmp72_; ValaCCodeFunctionCall* _tmp73_; ValaCCodeBlock* _tmp74_; ValaCCodeIdentifier* _tmp75_; ValaCCodeIdentifier* _tmp76_; ValaCCodeFunctionCall* _tmp77_; ValaTypeSymbol* _tmp78_; ValaTypeSymbol* _tmp79_; gchar* _tmp80_ = NULL; gchar* _tmp81_; gchar* _tmp82_ = NULL; gchar* _tmp83_; ValaCCodeCastExpression* _tmp84_; ValaCCodeCastExpression* _tmp85_; ValaCCodeAssignment* _tmp86_; ValaCCodeAssignment* _tmp87_; ValaCCodeExpressionStatement* _tmp88_; ValaCCodeExpressionStatement* _tmp89_; ValaCreationMethod* _tmp164_; gchar* _tmp165_ = NULL; gchar* _tmp166_; ValaCCodeIdentifier* _tmp167_; ValaCCodeIdentifier* _tmp168_; ValaCCodeFunctionCall* _tmp169_; ValaCCodeFunctionCall* _tmp170_; ValaCCodeFunctionCall* vcall; ValaCCodeFunctionCall* _tmp171_; ValaCCodeIdentifier* _tmp172_; ValaCCodeIdentifier* _tmp173_; ValaCCodeBlock* _tmp174_; ValaCCodeFunctionCall* _tmp175_; ValaCCodeExpressionStatement* _tmp176_; ValaCCodeExpressionStatement* _tmp177_; ValaCreationMethod* _tmp178_; ValaCCodeFile* _tmp179_; ValaCCodeFunction* _tmp180_; ValaCCodeFunctionCall* _tmp181_; ValaCCodeIdentifier* _tmp182_; ValaCCodeIdentifier* _tmp183_; ValaCCodeReturnStatement* _tmp184_; ValaCCodeStatement* _tmp185_; ValaCCodeStatement* cstmt; ValaCCodeStatement* _tmp186_; ValaCCodeFunction* _tmp187_; ValaCCodeLineDirective* _tmp188_; ValaCCodeLineDirective* _tmp189_; ValaCCodeBlock* _tmp190_; ValaCCodeStatement* _tmp191_; gboolean _tmp192_; ValaCCodeFile* _tmp197_; ValaCCodeFunction* _tmp198_; ValaCCodeFunction* _tmp199_; ValaCCodeBlock* _tmp200_; ValaCCodeFile* _tmp201_; ValaCCodeFunction* _tmp202_; _tmp17_ = m; _tmp18_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp17_); _tmp19_ = _tmp18_; _tmp20_ = vala_ccode_function_new (_tmp19_, "void"); _tmp21_ = _tmp20_; _g_free0 (_tmp19_); vfunc = _tmp21_; _tmp22_ = vala_ccode_block_new (); vblock = _tmp22_; _tmp23_ = vala_dova_base_module_get_current_type_symbol ((ValaDovaBaseModule*) self); _tmp24_ = _tmp23_; _tmp25_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp24_); _tmp26_ = _tmp25_; _tmp27_ = g_strdup_printf ("%s *", _tmp26_); _tmp28_ = _tmp27_; _tmp29_ = vala_ccode_declaration_new (_tmp28_); _tmp30_ = _tmp29_; _g_free0 (_tmp28_); _g_free0 (_tmp26_); _cdecl_ = _tmp30_; _tmp31_ = _cdecl_; _tmp32_ = vala_ccode_variable_declarator_new ("this", NULL, NULL); _tmp33_ = _tmp32_; vala_ccode_declaration_add_declarator (_tmp31_, (ValaCCodeDeclarator*) _tmp33_); _vala_ccode_node_unref0 (_tmp33_); _tmp34_ = vblock; _tmp35_ = _cdecl_; vala_ccode_block_add_statement (_tmp34_, (ValaCCodeNode*) _tmp35_); _tmp36_ = vala_dova_base_module_get_current_class ((ValaDovaBaseModule*) self); _tmp37_ = _tmp36_; _tmp38_ = vala_dova_base_module_get_ccode_lower_case_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp37_, NULL); _tmp39_ = _tmp38_; _tmp40_ = g_strconcat (_tmp39_, "_type_get", NULL); _tmp41_ = _tmp40_; _tmp42_ = vala_ccode_identifier_new (_tmp41_); _tmp43_ = _tmp42_; _tmp44_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp43_); _tmp45_ = _tmp44_; _vala_ccode_node_unref0 (_tmp43_); _g_free0 (_tmp41_); _g_free0 (_tmp39_); type_get = _tmp45_; { ValaClass* _tmp46_; ValaClass* _tmp47_; ValaList* _tmp48_ = NULL; ValaList* _type_param_list; ValaList* _tmp49_; gint _tmp50_; gint _tmp51_; gint _type_param_size; gint _type_param_index; _tmp46_ = vala_dova_base_module_get_current_class ((ValaDovaBaseModule*) self); _tmp47_ = _tmp46_; _tmp48_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp47_); _type_param_list = _tmp48_; _tmp49_ = _type_param_list; _tmp50_ = vala_collection_get_size ((ValaCollection*) _tmp49_); _tmp51_ = _tmp50_; _type_param_size = _tmp51_; _type_param_index = -1; while (TRUE) { gint _tmp52_; gint _tmp53_; gint _tmp54_; ValaList* _tmp55_; gint _tmp56_; gpointer _tmp57_ = NULL; ValaTypeParameter* type_param; ValaCCodeFunctionCall* _tmp58_; ValaTypeParameter* _tmp59_; const gchar* _tmp60_; const gchar* _tmp61_; gchar* _tmp62_ = NULL; gchar* _tmp63_; gchar* _tmp64_ = NULL; gchar* _tmp65_; ValaCCodeIdentifier* _tmp66_; ValaCCodeIdentifier* _tmp67_; _tmp52_ = _type_param_index; _type_param_index = _tmp52_ + 1; _tmp53_ = _type_param_index; _tmp54_ = _type_param_size; if (!(_tmp53_ < _tmp54_)) { break; } _tmp55_ = _type_param_list; _tmp56_ = _type_param_index; _tmp57_ = vala_list_get (_tmp55_, _tmp56_); type_param = (ValaTypeParameter*) _tmp57_; _tmp58_ = type_get; _tmp59_ = type_param; _tmp60_ = vala_symbol_get_name ((ValaSymbol*) _tmp59_); _tmp61_ = _tmp60_; _tmp62_ = g_utf8_strdown (_tmp61_, (gssize) (-1)); _tmp63_ = _tmp62_; _tmp64_ = g_strdup_printf ("%s_type", _tmp63_); _tmp65_ = _tmp64_; _tmp66_ = vala_ccode_identifier_new (_tmp65_); _tmp67_ = _tmp66_; vala_ccode_function_call_add_argument (_tmp58_, (ValaCCodeExpression*) _tmp67_); _vala_ccode_node_unref0 (_tmp67_); _g_free0 (_tmp65_); _g_free0 (_tmp63_); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _tmp68_ = vala_ccode_identifier_new ("dova_object_alloc"); _tmp69_ = _tmp68_; _tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_); _tmp71_ = _tmp70_; _vala_ccode_node_unref0 (_tmp69_); alloc_call = _tmp71_; _tmp72_ = alloc_call; _tmp73_ = type_get; vala_ccode_function_call_add_argument (_tmp72_, (ValaCCodeExpression*) _tmp73_); _tmp74_ = vblock; _tmp75_ = vala_ccode_identifier_new ("this"); _tmp76_ = _tmp75_; _tmp77_ = alloc_call; _tmp78_ = vala_dova_base_module_get_current_type_symbol ((ValaDovaBaseModule*) self); _tmp79_ = _tmp78_; _tmp80_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp79_); _tmp81_ = _tmp80_; _tmp82_ = g_strdup_printf ("%s *", _tmp81_); _tmp83_ = _tmp82_; _tmp84_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp77_, _tmp83_); _tmp85_ = _tmp84_; _tmp86_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp76_, (ValaCCodeExpression*) _tmp85_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp87_ = _tmp86_; _tmp88_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp87_); _tmp89_ = _tmp88_; vala_ccode_block_add_statement (_tmp74_, (ValaCCodeNode*) _tmp89_); _vala_ccode_node_unref0 (_tmp89_); _vala_ccode_node_unref0 (_tmp87_); _vala_ccode_node_unref0 (_tmp85_); _g_free0 (_tmp83_); _g_free0 (_tmp81_); _vala_ccode_node_unref0 (_tmp76_); { ValaClass* _tmp90_; ValaClass* _tmp91_; ValaList* _tmp92_ = NULL; ValaList* _f_list; ValaList* _tmp93_; gint _tmp94_; gint _tmp95_; gint _f_size; gint _f_index; _tmp90_ = vala_dova_base_module_get_current_class ((ValaDovaBaseModule*) self); _tmp91_ = _tmp90_; _tmp92_ = vala_class_get_fields (_tmp91_); _f_list = _tmp92_; _tmp93_ = _f_list; _tmp94_ = vala_collection_get_size ((ValaCollection*) _tmp93_); _tmp95_ = _tmp94_; _f_size = _tmp95_; _f_index = -1; while (TRUE) { gint _tmp96_; gint _tmp97_; gint _tmp98_; ValaList* _tmp99_; gint _tmp100_; gpointer _tmp101_ = NULL; ValaField* f; gboolean _tmp102_ = FALSE; ValaField* _tmp103_; ValaMemberBinding _tmp104_; ValaMemberBinding _tmp105_; gboolean _tmp109_; ValaField* _tmp110_; ValaDataType* _tmp111_; ValaDataType* _tmp112_; ValaGenericType* _tmp113_; ValaGenericType* generic_type; ValaCCodeIdentifier* _tmp114_; ValaCCodeIdentifier* _tmp115_; ValaCCodeFunctionCall* _tmp116_; ValaCCodeFunctionCall* _tmp117_; ValaCCodeFunctionCall* type_get_value_size; ValaCCodeFunctionCall* _tmp118_; ValaGenericType* _tmp119_; ValaTypeParameter* _tmp120_; ValaTypeParameter* _tmp121_; const gchar* _tmp122_; const gchar* _tmp123_; gchar* _tmp124_ = NULL; gchar* _tmp125_; gchar* _tmp126_ = NULL; gchar* _tmp127_; ValaCCodeIdentifier* _tmp128_; ValaCCodeIdentifier* _tmp129_; ValaCCodeIdentifier* _tmp130_; ValaCCodeIdentifier* _tmp131_; ValaCCodeFunctionCall* _tmp132_; ValaCCodeFunctionCall* _tmp133_; ValaCCodeFunctionCall* calloc_call; ValaCCodeFunctionCall* _tmp134_; ValaCCodeConstant* _tmp135_; ValaCCodeConstant* _tmp136_; ValaCCodeFunctionCall* _tmp137_; ValaCCodeFunctionCall* _tmp138_; ValaClass* _tmp139_; ValaClass* _tmp140_; gchar* _tmp141_ = NULL; gchar* _tmp142_; gchar* _tmp143_ = NULL; gchar* _tmp144_; ValaCCodeIdentifier* _tmp145_; ValaCCodeIdentifier* _tmp146_; ValaCCodeFunctionCall* _tmp147_; ValaCCodeFunctionCall* _tmp148_; ValaCCodeFunctionCall* priv_call; ValaCCodeFunctionCall* _tmp149_; ValaCCodeIdentifier* _tmp150_; ValaCCodeIdentifier* _tmp151_; ValaCCodeBlock* _tmp152_; ValaCCodeFunctionCall* _tmp153_; ValaField* _tmp154_; const gchar* _tmp155_; const gchar* _tmp156_; ValaCCodeMemberAccess* _tmp157_; ValaCCodeMemberAccess* _tmp158_; ValaCCodeFunctionCall* _tmp159_; ValaCCodeAssignment* _tmp160_; ValaCCodeAssignment* _tmp161_; ValaCCodeExpressionStatement* _tmp162_; ValaCCodeExpressionStatement* _tmp163_; _tmp96_ = _f_index; _f_index = _tmp96_ + 1; _tmp97_ = _f_index; _tmp98_ = _f_size; if (!(_tmp97_ < _tmp98_)) { break; } _tmp99_ = _f_list; _tmp100_ = _f_index; _tmp101_ = vala_list_get (_tmp99_, _tmp100_); f = (ValaField*) _tmp101_; _tmp103_ = f; _tmp104_ = vala_field_get_binding (_tmp103_); _tmp105_ = _tmp104_; if (_tmp105_ != VALA_MEMBER_BINDING_INSTANCE) { _tmp102_ = TRUE; } else { ValaField* _tmp106_; ValaDataType* _tmp107_; ValaDataType* _tmp108_; _tmp106_ = f; _tmp107_ = vala_variable_get_variable_type ((ValaVariable*) _tmp106_); _tmp108_ = _tmp107_; _tmp102_ = !VALA_IS_GENERIC_TYPE (_tmp108_); } _tmp109_ = _tmp102_; if (_tmp109_) { _vala_code_node_unref0 (f); continue; } _tmp110_ = f; _tmp111_ = vala_variable_get_variable_type ((ValaVariable*) _tmp110_); _tmp112_ = _tmp111_; _tmp113_ = _vala_code_node_ref0 (VALA_GENERIC_TYPE (_tmp112_)); generic_type = _tmp113_; _tmp114_ = vala_ccode_identifier_new ("dova_type_get_value_size"); _tmp115_ = _tmp114_; _tmp116_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp115_); _tmp117_ = _tmp116_; _vala_ccode_node_unref0 (_tmp115_); type_get_value_size = _tmp117_; _tmp118_ = type_get_value_size; _tmp119_ = generic_type; _tmp120_ = vala_data_type_get_type_parameter ((ValaDataType*) _tmp119_); _tmp121_ = _tmp120_; _tmp122_ = vala_symbol_get_name ((ValaSymbol*) _tmp121_); _tmp123_ = _tmp122_; _tmp124_ = g_utf8_strdown (_tmp123_, (gssize) (-1)); _tmp125_ = _tmp124_; _tmp126_ = g_strdup_printf ("%s_type", _tmp125_); _tmp127_ = _tmp126_; _tmp128_ = vala_ccode_identifier_new (_tmp127_); _tmp129_ = _tmp128_; vala_ccode_function_call_add_argument (_tmp118_, (ValaCCodeExpression*) _tmp129_); _vala_ccode_node_unref0 (_tmp129_); _g_free0 (_tmp127_); _g_free0 (_tmp125_); _tmp130_ = vala_ccode_identifier_new ("calloc"); _tmp131_ = _tmp130_; _tmp132_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp131_); _tmp133_ = _tmp132_; _vala_ccode_node_unref0 (_tmp131_); calloc_call = _tmp133_; _tmp134_ = calloc_call; _tmp135_ = vala_ccode_constant_new ("1"); _tmp136_ = _tmp135_; vala_ccode_function_call_add_argument (_tmp134_, (ValaCCodeExpression*) _tmp136_); _vala_ccode_node_unref0 (_tmp136_); _tmp137_ = calloc_call; _tmp138_ = type_get_value_size; vala_ccode_function_call_add_argument (_tmp137_, (ValaCCodeExpression*) _tmp138_); _tmp139_ = vala_dova_base_module_get_current_class ((ValaDovaBaseModule*) self); _tmp140_ = _tmp139_; _tmp141_ = vala_dova_base_module_get_ccode_upper_case_name ((ValaDovaBaseModule*) self, (ValaSymbol*) _tmp140_, NULL); _tmp142_ = _tmp141_; _tmp143_ = g_strdup_printf ("%s_GET_PRIVATE", _tmp142_); _tmp144_ = _tmp143_; _tmp145_ = vala_ccode_identifier_new (_tmp144_); _tmp146_ = _tmp145_; _tmp147_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp146_); _tmp148_ = _tmp147_; _vala_ccode_node_unref0 (_tmp146_); _g_free0 (_tmp144_); _g_free0 (_tmp142_); priv_call = _tmp148_; _tmp149_ = priv_call; _tmp150_ = vala_ccode_identifier_new ("this"); _tmp151_ = _tmp150_; vala_ccode_function_call_add_argument (_tmp149_, (ValaCCodeExpression*) _tmp151_); _vala_ccode_node_unref0 (_tmp151_); _tmp152_ = vblock; _tmp153_ = priv_call; _tmp154_ = f; _tmp155_ = vala_symbol_get_name ((ValaSymbol*) _tmp154_); _tmp156_ = _tmp155_; _tmp157_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp153_, _tmp156_); _tmp158_ = _tmp157_; _tmp159_ = calloc_call; _tmp160_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp158_, (ValaCCodeExpression*) _tmp159_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE); _tmp161_ = _tmp160_; _tmp162_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp161_); _tmp163_ = _tmp162_; vala_ccode_block_add_statement (_tmp152_, (ValaCCodeNode*) _tmp163_); _vala_ccode_node_unref0 (_tmp163_); _vala_ccode_node_unref0 (_tmp161_); _vala_ccode_node_unref0 (_tmp158_); _vala_ccode_node_unref0 (priv_call); _vala_ccode_node_unref0 (calloc_call); _vala_ccode_node_unref0 (type_get_value_size); _vala_code_node_unref0 (generic_type); _vala_code_node_unref0 (f); } _vala_iterable_unref0 (_f_list); } _tmp164_ = m; _tmp165_ = vala_dova_base_module_get_ccode_real_name ((ValaDovaBaseModule*) self, (ValaMethod*) _tmp164_); _tmp166_ = _tmp165_; _tmp167_ = vala_ccode_identifier_new (_tmp166_); _tmp168_ = _tmp167_; _tmp169_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp168_); _tmp170_ = _tmp169_; _vala_ccode_node_unref0 (_tmp168_); _g_free0 (_tmp166_); vcall = _tmp170_; _tmp171_ = vcall; _tmp172_ = vala_ccode_identifier_new ("this"); _tmp173_ = _tmp172_; vala_ccode_function_call_add_argument (_tmp171_, (ValaCCodeExpression*) _tmp173_); _vala_ccode_node_unref0 (_tmp173_); _tmp174_ = vblock; _tmp175_ = vcall; _tmp176_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp175_); _tmp177_ = _tmp176_; vala_ccode_block_add_statement (_tmp174_, (ValaCCodeNode*) _tmp177_); _vala_ccode_node_unref0 (_tmp177_); _tmp178_ = m; _tmp179_ = ((ValaDovaBaseModule*) self)->cfile; _tmp180_ = vfunc; _tmp181_ = vcall; vala_dova_base_module_generate_cparameters ((ValaDovaBaseModule*) self, (ValaMethod*) _tmp178_, _tmp179_, _tmp180_, NULL, _tmp181_); _tmp182_ = vala_ccode_identifier_new ("this"); _tmp183_ = _tmp182_; _tmp184_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp183_); _tmp185_ = (ValaCCodeStatement*) _tmp184_; _vala_ccode_node_unref0 (_tmp183_); cstmt = _tmp185_; _tmp186_ = cstmt; _tmp187_ = vfunc; _tmp188_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp187_); _tmp189_ = _tmp188_; vala_ccode_node_set_line ((ValaCCodeNode*) _tmp186_, _tmp189_); _tmp190_ = vblock; _tmp191_ = cstmt; vala_ccode_block_add_statement (_tmp190_, (ValaCCodeNode*) _tmp191_); _tmp192_ = visible; if (!_tmp192_) { ValaCCodeFunction* _tmp193_; ValaCCodeFunction* _tmp194_; ValaCCodeModifiers _tmp195_; ValaCCodeModifiers _tmp196_; _tmp193_ = vfunc; _tmp194_ = vfunc; _tmp195_ = vala_ccode_function_get_modifiers (_tmp194_); _tmp196_ = _tmp195_; vala_ccode_function_set_modifiers (_tmp194_, _tmp196_ | VALA_CCODE_MODIFIERS_STATIC); } _tmp197_ = ((ValaDovaBaseModule*) self)->cfile; _tmp198_ = vfunc; vala_ccode_file_add_function_declaration (_tmp197_, _tmp198_); _tmp199_ = vfunc; _tmp200_ = vblock; vala_ccode_function_set_block (_tmp199_, _tmp200_); _tmp201_ = ((ValaDovaBaseModule*) self)->cfile; _tmp202_ = vfunc; vala_ccode_file_add_function (_tmp201_, _tmp202_); _vala_ccode_node_unref0 (cstmt); _vala_ccode_node_unref0 (vcall); _vala_ccode_node_unref0 (alloc_call); _vala_ccode_node_unref0 (type_get); _vala_ccode_node_unref0 (_cdecl_); _vala_ccode_node_unref0 (vblock); _vala_ccode_node_unref0 (vfunc); } _vala_code_node_unref0 (creturn_type); } static ValaTypeSymbol* vala_dova_object_module_find_parent_type (ValaDovaObjectModule* self, ValaSymbol* sym) { ValaTypeSymbol* result = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (sym != NULL, NULL); while (TRUE) { ValaSymbol* _tmp0_; ValaSymbol* _tmp1_; ValaSymbol* _tmp4_; ValaSymbol* _tmp5_; ValaSymbol* _tmp6_; _tmp0_ = sym; if (!(_tmp0_ != NULL)) { break; } _tmp1_ = sym; if (VALA_IS_TYPESYMBOL (_tmp1_)) { ValaSymbol* _tmp2_; ValaTypeSymbol* _tmp3_; _tmp2_ = sym; _tmp3_ = _vala_code_node_ref0 (VALA_TYPESYMBOL (_tmp2_)); result = _tmp3_; return result; } _tmp4_ = sym; _tmp5_ = vala_symbol_get_parent_symbol (_tmp4_); _tmp6_ = _tmp5_; sym = _tmp6_; } result = NULL; return result; } static void vala_dova_object_module_real_generate_cparameters (ValaDovaBaseModule* base, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaCCodeFunctionCall* vcall) { ValaDovaObjectModule * self; ValaCCodeParameter* instance_param; ValaMethod* _tmp0_; gboolean _tmp1_; gboolean _tmp2_; ValaCCodeParameter* _tmp113_; ValaMethod* _tmp119_; gboolean _tmp243_ = FALSE; gboolean _tmp244_ = FALSE; ValaMethod* _tmp245_; ValaSymbol* _tmp246_; ValaSymbol* _tmp247_; gboolean _tmp249_; gboolean _tmp251_; self = (ValaDovaObjectModule*) base; g_return_if_fail (m != NULL); g_return_if_fail (decl_space != NULL); g_return_if_fail (func != NULL); instance_param = NULL; _tmp0_ = m; _tmp1_ = vala_method_get_closure (_tmp0_); _tmp2_ = _tmp1_; if (_tmp2_) { ValaBlock* _tmp3_; ValaBlock* _tmp4_; ValaBlock* _tmp5_; ValaBlock* closure_block; ValaBlock* _tmp6_; gint _tmp7_ = 0; gint block_id; gint _tmp8_; gchar* _tmp9_ = NULL; gchar* _tmp10_; gint _tmp11_; gchar* _tmp12_ = NULL; gchar* _tmp13_; ValaCCodeParameter* _tmp14_; _tmp3_ = vala_dova_base_module_get_current_closure_block ((ValaDovaBaseModule*) self); _tmp4_ = _tmp3_; _tmp5_ = _vala_code_node_ref0 (_tmp4_); closure_block = _tmp5_; _tmp6_ = closure_block; _tmp7_ = vala_dova_base_module_get_block_id ((ValaDovaBaseModule*) self, _tmp6_); block_id = _tmp7_; _tmp8_ = block_id; _tmp9_ = g_strdup_printf ("_data%d_", _tmp8_); _tmp10_ = _tmp9_; _tmp11_ = block_id; _tmp12_ = g_strdup_printf ("Block%dData*", _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = vala_ccode_parameter_new (_tmp10_, _tmp13_); _vala_ccode_node_unref0 (instance_param); instance_param = _tmp14_; _g_free0 (_tmp13_); _g_free0 (_tmp10_); _vala_code_node_unref0 (closure_block); } else { gboolean _tmp15_ = FALSE; ValaMethod* _tmp16_; ValaSymbol* _tmp17_; ValaSymbol* _tmp18_; gboolean _tmp20_; _tmp16_ = m; _tmp17_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp16_); _tmp18_ = _tmp17_; if (VALA_IS_CLASS (_tmp18_)) { ValaMethod* _tmp19_; _tmp19_ = m; _tmp15_ = VALA_IS_CREATION_METHOD (_tmp19_); } else { _tmp15_ = FALSE; } _tmp20_ = _tmp15_; if (_tmp20_) { ValaCCodeFunctionCall* _tmp21_; _tmp21_ = vcall; if (_tmp21_ == NULL) { ValaMethod* _tmp22_; ValaSymbol* _tmp23_; ValaSymbol* _tmp24_; gchar* _tmp25_ = NULL; gchar* _tmp26_; gchar* _tmp27_; gchar* _tmp28_; ValaCCodeParameter* _tmp29_; _tmp22_ = m; _tmp23_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp22_); _tmp24_ = _tmp23_; _tmp25_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) VALA_CLASS (_tmp24_)); _tmp26_ = _tmp25_; _tmp27_ = g_strconcat (_tmp26_, "*", NULL); _tmp28_ = _tmp27_; _tmp29_ = vala_ccode_parameter_new ("this", _tmp28_); _vala_ccode_node_unref0 (instance_param); instance_param = _tmp29_; _g_free0 (_tmp28_); _g_free0 (_tmp26_); } } else { gboolean _tmp30_ = FALSE; ValaMethod* _tmp31_; ValaMemberBinding _tmp32_; ValaMemberBinding _tmp33_; gboolean _tmp40_; _tmp31_ = m; _tmp32_ = vala_method_get_binding (_tmp31_); _tmp33_ = _tmp32_; if (_tmp33_ == VALA_MEMBER_BINDING_INSTANCE) { _tmp30_ = TRUE; } else { gboolean _tmp34_ = FALSE; ValaMethod* _tmp35_; ValaSymbol* _tmp36_; ValaSymbol* _tmp37_; gboolean _tmp39_; _tmp35_ = m; _tmp36_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp35_); _tmp37_ = _tmp36_; if (VALA_IS_STRUCT (_tmp37_)) { ValaMethod* _tmp38_; _tmp38_ = m; _tmp34_ = VALA_IS_CREATION_METHOD (_tmp38_); } else { _tmp34_ = FALSE; } _tmp39_ = _tmp34_; _tmp30_ = _tmp39_; } _tmp40_ = _tmp30_; if (_tmp40_) { ValaMethod* _tmp41_; ValaTypeSymbol* _tmp42_ = NULL; ValaTypeSymbol* parent_type; ValaTypeSymbol* _tmp43_; ValaDataType* _tmp44_ = NULL; ValaDataType* this_type; ValaDataType* _tmp45_; ValaCCodeFile* _tmp46_; gboolean _tmp47_ = FALSE; gboolean _tmp48_ = FALSE; ValaMethod* _tmp49_; ValaMethod* _tmp50_; ValaMethod* _tmp51_; gboolean _tmp55_; gboolean _tmp59_; _tmp41_ = m; _tmp42_ = vala_dova_object_module_find_parent_type (self, (ValaSymbol*) _tmp41_); parent_type = _tmp42_; _tmp43_ = parent_type; _tmp44_ = vala_dova_base_module_get_data_type_for_symbol (_tmp43_); this_type = _tmp44_; _tmp45_ = this_type; _tmp46_ = decl_space; vala_dova_base_module_generate_type_declaration ((ValaDovaBaseModule*) self, _tmp45_, _tmp46_); _tmp49_ = m; _tmp50_ = vala_method_get_base_interface_method (_tmp49_); _tmp51_ = _tmp50_; if (_tmp51_ != NULL) { ValaMethod* _tmp52_; gboolean _tmp53_; gboolean _tmp54_; _tmp52_ = m; _tmp53_ = vala_method_get_is_abstract (_tmp52_); _tmp54_ = _tmp53_; _tmp48_ = !_tmp54_; } else { _tmp48_ = FALSE; } _tmp55_ = _tmp48_; if (_tmp55_) { ValaMethod* _tmp56_; gboolean _tmp57_; gboolean _tmp58_; _tmp56_ = m; _tmp57_ = vala_method_get_is_virtual (_tmp56_); _tmp58_ = _tmp57_; _tmp47_ = !_tmp58_; } else { _tmp47_ = FALSE; } _tmp59_ = _tmp47_; if (_tmp59_) { ValaMethod* _tmp60_; ValaMethod* _tmp61_; ValaMethod* _tmp62_; ValaSymbol* _tmp63_; ValaSymbol* _tmp64_; ValaObjectType* _tmp65_; ValaObjectType* base_type; ValaObjectType* _tmp66_; gchar* _tmp67_ = NULL; gchar* _tmp68_; ValaCCodeParameter* _tmp69_; _tmp60_ = m; _tmp61_ = vala_method_get_base_interface_method (_tmp60_); _tmp62_ = _tmp61_; _tmp63_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp62_); _tmp64_ = _tmp63_; _tmp65_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_INTERFACE (_tmp64_)); base_type = _tmp65_; _tmp66_ = base_type; _tmp67_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp66_); _tmp68_ = _tmp67_; _tmp69_ = vala_ccode_parameter_new ("this", _tmp68_); _vala_ccode_node_unref0 (instance_param); instance_param = _tmp69_; _g_free0 (_tmp68_); _vala_code_node_unref0 (base_type); } else { ValaMethod* _tmp70_; gboolean _tmp71_; gboolean _tmp72_; _tmp70_ = m; _tmp71_ = vala_method_get_overrides (_tmp70_); _tmp72_ = _tmp71_; if (_tmp72_) { ValaMethod* _tmp73_; ValaMethod* _tmp74_; ValaMethod* _tmp75_; ValaSymbol* _tmp76_; ValaSymbol* _tmp77_; ValaObjectType* _tmp78_; ValaObjectType* base_type; ValaObjectType* _tmp79_; ValaCCodeFile* _tmp80_; ValaObjectType* _tmp81_; gchar* _tmp82_ = NULL; gchar* _tmp83_; ValaCCodeParameter* _tmp84_; _tmp73_ = m; _tmp74_ = vala_method_get_base_method (_tmp73_); _tmp75_ = _tmp74_; _tmp76_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp75_); _tmp77_ = _tmp76_; _tmp78_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_CLASS (_tmp77_)); base_type = _tmp78_; _tmp79_ = base_type; _tmp80_ = decl_space; vala_dova_base_module_generate_type_declaration ((ValaDovaBaseModule*) self, (ValaDataType*) _tmp79_, _tmp80_); _tmp81_ = base_type; _tmp82_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp81_); _tmp83_ = _tmp82_; _tmp84_ = vala_ccode_parameter_new ("this", _tmp83_); _vala_ccode_node_unref0 (instance_param); instance_param = _tmp84_; _g_free0 (_tmp83_); _vala_code_node_unref0 (base_type); } else { gboolean _tmp85_ = FALSE; ValaMethod* _tmp86_; ValaSymbol* _tmp87_; ValaSymbol* _tmp88_; gboolean _tmp90_; _tmp86_ = m; _tmp87_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp86_); _tmp88_ = _tmp87_; if (VALA_IS_STRUCT (_tmp88_)) { ValaMethod* _tmp89_; _tmp89_ = m; _tmp85_ = VALA_IS_CREATION_METHOD (_tmp89_); } else { _tmp85_ = FALSE; } _tmp90_ = _tmp85_; if (_tmp90_) { ValaMethod* _tmp91_; ValaSymbol* _tmp92_; ValaSymbol* _tmp93_; ValaStruct* _tmp94_; ValaStruct* st; gboolean _tmp95_ = FALSE; gboolean _tmp96_ = FALSE; ValaStruct* _tmp97_; gboolean _tmp98_ = FALSE; gboolean _tmp101_; gboolean _tmp104_; _tmp91_ = m; _tmp92_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp91_); _tmp93_ = _tmp92_; _tmp94_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp93_)); st = _tmp94_; _tmp97_ = st; _tmp98_ = vala_struct_is_boolean_type (_tmp97_); if (_tmp98_) { _tmp96_ = TRUE; } else { ValaStruct* _tmp99_; gboolean _tmp100_ = FALSE; _tmp99_ = st; _tmp100_ = vala_struct_is_integer_type (_tmp99_); _tmp96_ = _tmp100_; } _tmp101_ = _tmp96_; if (_tmp101_) { _tmp95_ = TRUE; } else { ValaStruct* _tmp102_; gboolean _tmp103_ = FALSE; _tmp102_ = st; _tmp103_ = vala_struct_is_floating_type (_tmp102_); _tmp95_ = _tmp103_; } _tmp104_ = _tmp95_; if (_tmp104_) { } else { ValaDataType* _tmp105_; gchar* _tmp106_ = NULL; gchar* _tmp107_; ValaCCodeParameter* _tmp108_; _tmp105_ = this_type; _tmp106_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp105_); _tmp107_ = _tmp106_; _tmp108_ = vala_ccode_parameter_new ("*this", _tmp107_); _vala_ccode_node_unref0 (instance_param); instance_param = _tmp108_; _g_free0 (_tmp107_); } _vala_code_node_unref0 (st); } else { ValaDataType* _tmp109_; gchar* _tmp110_ = NULL; gchar* _tmp111_; ValaCCodeParameter* _tmp112_; _tmp109_ = this_type; _tmp110_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp109_); _tmp111_ = _tmp110_; _tmp112_ = vala_ccode_parameter_new ("this", _tmp111_); _vala_ccode_node_unref0 (instance_param); instance_param = _tmp112_; _g_free0 (_tmp111_); } } } _vala_code_node_unref0 (this_type); _vala_code_node_unref0 (parent_type); } } } _tmp113_ = instance_param; if (_tmp113_ != NULL) { ValaCCodeFunction* _tmp114_; ValaCCodeParameter* _tmp115_; ValaCCodeFunctionDeclarator* _tmp116_; _tmp114_ = func; _tmp115_ = instance_param; vala_ccode_function_add_parameter (_tmp114_, _tmp115_); _tmp116_ = vdeclarator; if (_tmp116_ != NULL) { ValaCCodeFunctionDeclarator* _tmp117_; ValaCCodeParameter* _tmp118_; _tmp117_ = vdeclarator; _tmp118_ = instance_param; vala_ccode_function_declarator_add_parameter (_tmp117_, _tmp118_); } } _tmp119_ = m; if (VALA_IS_CREATION_METHOD (_tmp119_)) { ValaClass* _tmp120_; ValaCCodeFile* _tmp121_; ValaMethod* _tmp122_; ValaSymbol* _tmp123_; ValaSymbol* _tmp124_; _tmp120_ = ((ValaDovaBaseModule*) self)->type_class; _tmp121_ = decl_space; vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, VALA_CLASS (_tmp120_), _tmp121_); _tmp122_ = m; _tmp123_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp122_); _tmp124_ = _tmp123_; if (VALA_IS_CLASS (_tmp124_)) { ValaMethod* _tmp125_; ValaSymbol* _tmp126_; ValaSymbol* _tmp127_; ValaClass* _tmp128_; ValaClass* cl; _tmp125_ = m; _tmp126_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp125_); _tmp127_ = _tmp126_; _tmp128_ = _vala_code_node_ref0 (VALA_CLASS (_tmp127_)); cl = _tmp128_; { ValaClass* _tmp129_; ValaList* _tmp130_ = NULL; ValaList* _type_param_list; ValaList* _tmp131_; gint _tmp132_; gint _tmp133_; gint _type_param_size; gint _type_param_index; _tmp129_ = cl; _tmp130_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp129_); _type_param_list = _tmp130_; _tmp131_ = _type_param_list; _tmp132_ = vala_collection_get_size ((ValaCollection*) _tmp131_); _tmp133_ = _tmp132_; _type_param_size = _tmp133_; _type_param_index = -1; while (TRUE) { gint _tmp134_; gint _tmp135_; gint _tmp136_; ValaList* _tmp137_; gint _tmp138_; gpointer _tmp139_ = NULL; ValaTypeParameter* type_param; ValaTypeParameter* _tmp140_; const gchar* _tmp141_; const gchar* _tmp142_; gchar* _tmp143_ = NULL; gchar* _tmp144_; gchar* _tmp145_ = NULL; gchar* _tmp146_; ValaCCodeParameter* _tmp147_; ValaCCodeParameter* _tmp148_; ValaCCodeParameter* cparam; ValaCCodeFunctionCall* _tmp149_; _tmp134_ = _type_param_index; _type_param_index = _tmp134_ + 1; _tmp135_ = _type_param_index; _tmp136_ = _type_param_size; if (!(_tmp135_ < _tmp136_)) { break; } _tmp137_ = _type_param_list; _tmp138_ = _type_param_index; _tmp139_ = vala_list_get (_tmp137_, _tmp138_); type_param = (ValaTypeParameter*) _tmp139_; _tmp140_ = type_param; _tmp141_ = vala_symbol_get_name ((ValaSymbol*) _tmp140_); _tmp142_ = _tmp141_; _tmp143_ = g_utf8_strdown (_tmp142_, (gssize) (-1)); _tmp144_ = _tmp143_; _tmp145_ = g_strdup_printf ("%s_type", _tmp144_); _tmp146_ = _tmp145_; _tmp147_ = vala_ccode_parameter_new (_tmp146_, "DovaType*"); _tmp148_ = _tmp147_; _g_free0 (_tmp146_); _g_free0 (_tmp144_); cparam = _tmp148_; _tmp149_ = vcall; if (_tmp149_ != NULL) { ValaCCodeFunction* _tmp150_; ValaCCodeParameter* _tmp151_; _tmp150_ = func; _tmp151_ = cparam; vala_ccode_function_add_parameter (_tmp150_, _tmp151_); } _vala_ccode_node_unref0 (cparam); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } _vala_code_node_unref0 (cl); } } else { { ValaMethod* _tmp152_; ValaList* _tmp153_ = NULL; ValaList* _type_param_list; ValaList* _tmp154_; gint _tmp155_; gint _tmp156_; gint _type_param_size; gint _type_param_index; _tmp152_ = m; _tmp153_ = vala_method_get_type_parameters (_tmp152_); _type_param_list = _tmp153_; _tmp154_ = _type_param_list; _tmp155_ = vala_collection_get_size ((ValaCollection*) _tmp154_); _tmp156_ = _tmp155_; _type_param_size = _tmp156_; _type_param_index = -1; while (TRUE) { gint _tmp157_; gint _tmp158_; gint _tmp159_; ValaList* _tmp160_; gint _tmp161_; gpointer _tmp162_ = NULL; ValaTypeParameter* type_param; ValaTypeParameter* _tmp163_; const gchar* _tmp164_; const gchar* _tmp165_; gchar* _tmp166_ = NULL; gchar* _tmp167_; gchar* _tmp168_ = NULL; gchar* _tmp169_; ValaCCodeParameter* _tmp170_; ValaCCodeParameter* _tmp171_; ValaCCodeParameter* cparam; ValaCCodeFunction* _tmp172_; ValaCCodeParameter* _tmp173_; ValaCCodeFunctionDeclarator* _tmp174_; ValaCCodeFunctionCall* _tmp177_; _tmp157_ = _type_param_index; _type_param_index = _tmp157_ + 1; _tmp158_ = _type_param_index; _tmp159_ = _type_param_size; if (!(_tmp158_ < _tmp159_)) { break; } _tmp160_ = _type_param_list; _tmp161_ = _type_param_index; _tmp162_ = vala_list_get (_tmp160_, _tmp161_); type_param = (ValaTypeParameter*) _tmp162_; _tmp163_ = type_param; _tmp164_ = vala_symbol_get_name ((ValaSymbol*) _tmp163_); _tmp165_ = _tmp164_; _tmp166_ = g_utf8_strdown (_tmp165_, (gssize) (-1)); _tmp167_ = _tmp166_; _tmp168_ = g_strdup_printf ("%s_type", _tmp167_); _tmp169_ = _tmp168_; _tmp170_ = vala_ccode_parameter_new (_tmp169_, "DovaType*"); _tmp171_ = _tmp170_; _g_free0 (_tmp169_); _g_free0 (_tmp167_); cparam = _tmp171_; _tmp172_ = func; _tmp173_ = cparam; vala_ccode_function_add_parameter (_tmp172_, _tmp173_); _tmp174_ = vdeclarator; if (_tmp174_ != NULL) { ValaCCodeFunctionDeclarator* _tmp175_; ValaCCodeParameter* _tmp176_; _tmp175_ = vdeclarator; _tmp176_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp175_, _tmp176_); } _tmp177_ = vcall; if (_tmp177_ != NULL) { ValaCCodeFunctionCall* _tmp178_; ValaTypeParameter* _tmp179_; const gchar* _tmp180_; const gchar* _tmp181_; gchar* _tmp182_ = NULL; gchar* _tmp183_; gchar* _tmp184_ = NULL; gchar* _tmp185_; ValaCCodeIdentifier* _tmp186_; ValaCCodeIdentifier* _tmp187_; _tmp178_ = vcall; _tmp179_ = type_param; _tmp180_ = vala_symbol_get_name ((ValaSymbol*) _tmp179_); _tmp181_ = _tmp180_; _tmp182_ = g_utf8_strdown (_tmp181_, (gssize) (-1)); _tmp183_ = _tmp182_; _tmp184_ = g_strdup_printf ("%s_type", _tmp183_); _tmp185_ = _tmp184_; _tmp186_ = vala_ccode_identifier_new (_tmp185_); _tmp187_ = _tmp186_; vala_ccode_function_call_add_argument (_tmp178_, (ValaCCodeExpression*) _tmp187_); _vala_ccode_node_unref0 (_tmp187_); _g_free0 (_tmp185_); _g_free0 (_tmp183_); } _vala_ccode_node_unref0 (cparam); _vala_code_node_unref0 (type_param); } _vala_iterable_unref0 (_type_param_list); } } { ValaMethod* _tmp188_; ValaList* _tmp189_ = NULL; ValaList* _param_list; ValaList* _tmp190_; gint _tmp191_; gint _tmp192_; gint _param_size; gint _param_index; _tmp188_ = m; _tmp189_ = vala_method_get_parameters (_tmp188_); _param_list = _tmp189_; _tmp190_ = _param_list; _tmp191_ = vala_collection_get_size ((ValaCollection*) _tmp190_); _tmp192_ = _tmp191_; _param_size = _tmp192_; _param_index = -1; while (TRUE) { gint _tmp193_; gint _tmp194_; gint _tmp195_; ValaList* _tmp196_; gint _tmp197_; gpointer _tmp198_ = NULL; ValaParameter* param; ValaCCodeParameter* cparam = NULL; ValaParameter* _tmp199_; gboolean _tmp200_; gboolean _tmp201_; ValaCCodeFunction* _tmp228_; ValaCCodeParameter* _tmp229_; ValaCCodeFunctionDeclarator* _tmp230_; ValaCCodeFunctionCall* _tmp233_; _tmp193_ = _param_index; _param_index = _tmp193_ + 1; _tmp194_ = _param_index; _tmp195_ = _param_size; if (!(_tmp194_ < _tmp195_)) { break; } _tmp196_ = _param_list; _tmp197_ = _param_index; _tmp198_ = vala_list_get (_tmp196_, _tmp197_); param = (ValaParameter*) _tmp198_; _tmp199_ = param; _tmp200_ = vala_parameter_get_ellipsis (_tmp199_); _tmp201_ = _tmp200_; if (!_tmp201_) { ValaParameter* _tmp202_; ValaDataType* _tmp203_; ValaDataType* _tmp204_; gchar* _tmp205_ = NULL; gchar* ctypename; ValaParameter* _tmp206_; ValaDataType* _tmp207_; ValaDataType* _tmp208_; ValaCCodeFile* _tmp209_; gboolean _tmp210_ = FALSE; ValaParameter* _tmp211_; ValaParameterDirection _tmp212_; ValaParameterDirection _tmp213_; gboolean _tmp217_; ValaParameter* _tmp220_; const gchar* _tmp221_; const gchar* _tmp222_; gchar* _tmp223_ = NULL; gchar* _tmp224_; const gchar* _tmp225_; ValaCCodeParameter* _tmp226_; _tmp202_ = param; _tmp203_ = vala_variable_get_variable_type ((ValaVariable*) _tmp202_); _tmp204_ = _tmp203_; _tmp205_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp204_); ctypename = _tmp205_; _tmp206_ = param; _tmp207_ = vala_variable_get_variable_type ((ValaVariable*) _tmp206_); _tmp208_ = _tmp207_; _tmp209_ = decl_space; vala_dova_base_module_generate_type_declaration ((ValaDovaBaseModule*) self, _tmp208_, _tmp209_); _tmp211_ = param; _tmp212_ = vala_parameter_get_direction (_tmp211_); _tmp213_ = _tmp212_; if (_tmp213_ != VALA_PARAMETER_DIRECTION_IN) { ValaParameter* _tmp214_; ValaDataType* _tmp215_; ValaDataType* _tmp216_; _tmp214_ = param; _tmp215_ = vala_variable_get_variable_type ((ValaVariable*) _tmp214_); _tmp216_ = _tmp215_; _tmp210_ = !VALA_IS_GENERIC_TYPE (_tmp216_); } else { _tmp210_ = FALSE; } _tmp217_ = _tmp210_; if (_tmp217_) { const gchar* _tmp218_; gchar* _tmp219_; _tmp218_ = ctypename; _tmp219_ = g_strconcat (_tmp218_, "*", NULL); _g_free0 (ctypename); ctypename = _tmp219_; } _tmp220_ = param; _tmp221_ = vala_symbol_get_name ((ValaSymbol*) _tmp220_); _tmp222_ = _tmp221_; _tmp223_ = vala_dova_base_module_get_variable_cname ((ValaDovaBaseModule*) self, _tmp222_); _tmp224_ = _tmp223_; _tmp225_ = ctypename; _tmp226_ = vala_ccode_parameter_new (_tmp224_, _tmp225_); _vala_ccode_node_unref0 (cparam); cparam = _tmp226_; _g_free0 (_tmp224_); _g_free0 (ctypename); } else { ValaCCodeParameter* _tmp227_; _tmp227_ = vala_ccode_parameter_new_with_ellipsis (); _vala_ccode_node_unref0 (cparam); cparam = _tmp227_; } _tmp228_ = func; _tmp229_ = cparam; vala_ccode_function_add_parameter (_tmp228_, _tmp229_); _tmp230_ = vdeclarator; if (_tmp230_ != NULL) { ValaCCodeFunctionDeclarator* _tmp231_; ValaCCodeParameter* _tmp232_; _tmp231_ = vdeclarator; _tmp232_ = cparam; vala_ccode_function_declarator_add_parameter (_tmp231_, _tmp232_); } _tmp233_ = vcall; if (_tmp233_ != NULL) { ValaParameter* _tmp234_; const gchar* _tmp235_; const gchar* _tmp236_; _tmp234_ = param; _tmp235_ = vala_symbol_get_name ((ValaSymbol*) _tmp234_); _tmp236_ = _tmp235_; if (_tmp236_ != NULL) { ValaCCodeFunctionCall* _tmp237_; ValaParameter* _tmp238_; const gchar* _tmp239_; const gchar* _tmp240_; ValaCCodeExpression* _tmp241_ = NULL; ValaCCodeExpression* _tmp242_; _tmp237_ = vcall; _tmp238_ = param; _tmp239_ = vala_symbol_get_name ((ValaSymbol*) _tmp238_); _tmp240_ = _tmp239_; _tmp241_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp240_); _tmp242_ = _tmp241_; vala_ccode_function_call_add_argument (_tmp237_, _tmp242_); _vala_ccode_node_unref0 (_tmp242_); } } _vala_ccode_node_unref0 (cparam); _vala_code_node_unref0 (param); } _vala_iterable_unref0 (_param_list); } _tmp245_ = m; _tmp246_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp245_); _tmp247_ = _tmp246_; if (VALA_IS_CLASS (_tmp247_)) { ValaMethod* _tmp248_; _tmp248_ = m; _tmp244_ = VALA_IS_CREATION_METHOD (_tmp248_); } else { _tmp244_ = FALSE; } _tmp249_ = _tmp244_; if (_tmp249_) { ValaCCodeFunctionCall* _tmp250_; _tmp250_ = vcall; _tmp243_ = _tmp250_ != NULL; } else { _tmp243_ = FALSE; } _tmp251_ = _tmp243_; if (_tmp251_) { ValaCCodeFunction* _tmp252_; ValaMethod* _tmp253_; ValaSymbol* _tmp254_; ValaSymbol* _tmp255_; gchar* _tmp256_ = NULL; gchar* _tmp257_; gchar* _tmp258_; gchar* _tmp259_; _tmp252_ = func; _tmp253_ = m; _tmp254_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp253_); _tmp255_ = _tmp254_; _tmp256_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) VALA_CLASS (_tmp255_)); _tmp257_ = _tmp256_; _tmp258_ = g_strconcat (_tmp257_, "*", NULL); _tmp259_ = _tmp258_; vala_ccode_function_set_return_type (_tmp252_, _tmp259_); _g_free0 (_tmp259_); _g_free0 (_tmp257_); } else { ValaMethod* _tmp260_; ValaDataType* _tmp261_; ValaDataType* _tmp262_; ValaMethod* _tmp300_; ValaDataType* _tmp301_; ValaDataType* _tmp302_; ValaCCodeFile* _tmp303_; _tmp260_ = m; _tmp261_ = vala_method_get_return_type (_tmp260_); _tmp262_ = _tmp261_; if (VALA_IS_GENERIC_TYPE (_tmp262_)) { ValaCCodeFunction* _tmp263_; ValaCCodeParameter* _tmp264_; ValaCCodeParameter* _tmp265_; ValaCCodeFunctionDeclarator* _tmp266_; _tmp263_ = func; _tmp264_ = vala_ccode_parameter_new ("result", "void *"); _tmp265_ = _tmp264_; vala_ccode_function_add_parameter (_tmp263_, _tmp265_); _vala_ccode_node_unref0 (_tmp265_); _tmp266_ = vdeclarator; if (_tmp266_ != NULL) { ValaCCodeFunctionDeclarator* _tmp267_; ValaCCodeParameter* _tmp268_; ValaCCodeParameter* _tmp269_; _tmp267_ = vdeclarator; _tmp268_ = vala_ccode_parameter_new ("result", "void *"); _tmp269_ = _tmp268_; vala_ccode_function_declarator_add_parameter (_tmp267_, _tmp269_); _vala_ccode_node_unref0 (_tmp269_); } } else { ValaMethod* _tmp270_; ValaSymbol* _tmp271_; ValaSymbol* _tmp272_; ValaStruct* _tmp273_; ValaStruct* st; gboolean _tmp274_ = FALSE; gboolean _tmp275_ = FALSE; ValaMethod* _tmp276_; gboolean _tmp278_; gboolean _tmp289_; _tmp270_ = m; _tmp271_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp270_); _tmp272_ = _tmp271_; _tmp273_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp272_) ? ((ValaStruct*) _tmp272_) : NULL); st = _tmp273_; _tmp276_ = m; if (VALA_IS_CREATION_METHOD (_tmp276_)) { ValaStruct* _tmp277_; _tmp277_ = st; _tmp275_ = _tmp277_ != NULL; } else { _tmp275_ = FALSE; } _tmp278_ = _tmp275_; if (_tmp278_) { gboolean _tmp279_ = FALSE; gboolean _tmp280_ = FALSE; ValaStruct* _tmp281_; gboolean _tmp282_ = FALSE; gboolean _tmp285_; gboolean _tmp288_; _tmp281_ = st; _tmp282_ = vala_struct_is_boolean_type (_tmp281_); if (_tmp282_) { _tmp280_ = TRUE; } else { ValaStruct* _tmp283_; gboolean _tmp284_ = FALSE; _tmp283_ = st; _tmp284_ = vala_struct_is_integer_type (_tmp283_); _tmp280_ = _tmp284_; } _tmp285_ = _tmp280_; if (_tmp285_) { _tmp279_ = TRUE; } else { ValaStruct* _tmp286_; gboolean _tmp287_ = FALSE; _tmp286_ = st; _tmp287_ = vala_struct_is_floating_type (_tmp286_); _tmp279_ = _tmp287_; } _tmp288_ = _tmp279_; _tmp274_ = _tmp288_; } else { _tmp274_ = FALSE; } _tmp289_ = _tmp274_; if (_tmp289_) { ValaCCodeFunction* _tmp290_; ValaStruct* _tmp291_; gchar* _tmp292_ = NULL; gchar* _tmp293_; _tmp290_ = func; _tmp291_ = st; _tmp292_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp291_); _tmp293_ = _tmp292_; vala_ccode_function_set_return_type (_tmp290_, _tmp293_); _g_free0 (_tmp293_); } else { ValaCCodeFunction* _tmp294_; ValaMethod* _tmp295_; ValaDataType* _tmp296_; ValaDataType* _tmp297_; gchar* _tmp298_ = NULL; gchar* _tmp299_; _tmp294_ = func; _tmp295_ = m; _tmp296_ = vala_method_get_return_type (_tmp295_); _tmp297_ = _tmp296_; _tmp298_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp297_); _tmp299_ = _tmp298_; vala_ccode_function_set_return_type (_tmp294_, _tmp299_); _g_free0 (_tmp299_); } _vala_code_node_unref0 (st); } _tmp300_ = m; _tmp301_ = vala_method_get_return_type (_tmp300_); _tmp302_ = _tmp301_; _tmp303_ = decl_space; vala_dova_base_module_generate_type_declaration ((ValaDovaBaseModule*) self, _tmp302_, _tmp303_); } _vala_ccode_node_unref0 (instance_param); } static void vala_dova_object_module_real_visit_element_access (ValaCodeVisitor* base, ValaElementAccess* expr) { ValaDovaObjectModule * self; ValaElementAccess* _tmp0_; ValaExpression* _tmp1_; ValaExpression* _tmp2_; ValaDataType* _tmp3_; ValaDataType* _tmp4_; ValaArrayType* _tmp5_; ValaArrayType* array_type; ValaArrayType* _tmp6_; self = (ValaDovaObjectModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_element_access_get_container (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_expression_get_value_type (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp4_) ? ((ValaArrayType*) _tmp4_) : NULL); array_type = _tmp5_; _tmp6_ = array_type; if (_tmp6_ != NULL) { ValaElementAccess* _tmp7_; ValaElementAccess* _tmp8_; ValaList* _tmp9_ = NULL; ValaList* indices; ValaList* _tmp10_; gpointer _tmp11_ = NULL; ValaExpression* _tmp12_; ValaCCodeExpression* _tmp13_ = NULL; ValaCCodeExpression* _tmp14_; ValaCCodeExpression* cindex; ValaArrayType* _tmp15_; gboolean _tmp16_; gboolean _tmp17_; _tmp7_ = expr; vala_code_node_accept_children ((ValaCodeNode*) _tmp7_, (ValaCodeVisitor*) self); _tmp8_ = expr; _tmp9_ = vala_element_access_get_indices (_tmp8_); indices = _tmp9_; _tmp10_ = indices; _tmp11_ = vala_list_get (_tmp10_, 0); _tmp12_ = (ValaExpression*) _tmp11_; _tmp13_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp12_); _tmp14_ = _tmp13_; _vala_code_node_unref0 (_tmp12_); cindex = _tmp14_; _tmp15_ = array_type; _tmp16_ = vala_array_type_get_inline_allocated (_tmp15_); _tmp17_ = _tmp16_; if (_tmp17_) { ValaArrayType* _tmp18_; ValaDataType* _tmp19_; ValaDataType* _tmp20_; _tmp18_ = array_type; _tmp19_ = vala_array_type_get_element_type (_tmp18_); _tmp20_ = _tmp19_; if (VALA_IS_GENERIC_TYPE (_tmp20_)) { ValaCCodeIdentifier* _tmp21_; ValaCCodeIdentifier* _tmp22_; ValaCCodeFunctionCall* _tmp23_; ValaCCodeFunctionCall* _tmp24_; ValaCCodeFunctionCall* value_size; ValaCCodeFunctionCall* _tmp25_; ValaArrayType* _tmp26_; ValaDataType* _tmp27_; ValaDataType* _tmp28_; ValaCCodeExpression* _tmp29_ = NULL; ValaCCodeExpression* _tmp30_; ValaElementAccess* _tmp31_; ValaElementAccess* _tmp32_; ValaExpression* _tmp33_; ValaExpression* _tmp34_; ValaCCodeExpression* _tmp35_ = NULL; ValaCCodeExpression* _tmp36_; ValaCCodeCastExpression* _tmp37_; ValaCCodeCastExpression* _tmp38_; ValaCCodeFunctionCall* _tmp39_; ValaCCodeExpression* _tmp40_; ValaCCodeBinaryExpression* _tmp41_; ValaCCodeBinaryExpression* _tmp42_; ValaCCodeBinaryExpression* _tmp43_; ValaCCodeBinaryExpression* _tmp44_; _tmp21_ = vala_ccode_identifier_new ("dova_type_get_value_size"); _tmp22_ = _tmp21_; _tmp23_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp22_); _tmp24_ = _tmp23_; _vala_ccode_node_unref0 (_tmp22_); value_size = _tmp24_; _tmp25_ = value_size; _tmp26_ = array_type; _tmp27_ = vala_array_type_get_element_type (_tmp26_); _tmp28_ = _tmp27_; _tmp29_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp28_, FALSE); _tmp30_ = _tmp29_; vala_ccode_function_call_add_argument (_tmp25_, _tmp30_); _vala_ccode_node_unref0 (_tmp30_); _tmp31_ = expr; _tmp32_ = expr; _tmp33_ = vala_element_access_get_container (_tmp32_); _tmp34_ = _tmp33_; _tmp35_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp34_); _tmp36_ = _tmp35_; _tmp37_ = vala_ccode_cast_expression_new (_tmp36_, "char*"); _tmp38_ = _tmp37_; _tmp39_ = value_size; _tmp40_ = cindex; _tmp41_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, (ValaCCodeExpression*) _tmp39_, _tmp40_); _tmp42_ = _tmp41_; _tmp43_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp38_, (ValaCCodeExpression*) _tmp42_); _tmp44_ = _tmp43_; vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) _tmp31_, (ValaCCodeExpression*) _tmp44_); _vala_ccode_node_unref0 (_tmp44_); _vala_ccode_node_unref0 (_tmp42_); _vala_ccode_node_unref0 (_tmp38_); _vala_ccode_node_unref0 (_tmp36_); _vala_ccode_node_unref0 (value_size); } else { ValaElementAccess* _tmp45_; ValaElementAccess* _tmp46_; ValaExpression* _tmp47_; ValaExpression* _tmp48_; ValaCCodeExpression* _tmp49_ = NULL; ValaCCodeExpression* _tmp50_; ValaCCodeExpression* _tmp51_; ValaCCodeElementAccess* _tmp52_; ValaCCodeElementAccess* _tmp53_; _tmp45_ = expr; _tmp46_ = expr; _tmp47_ = vala_element_access_get_container (_tmp46_); _tmp48_ = _tmp47_; _tmp49_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp48_); _tmp50_ = _tmp49_; _tmp51_ = cindex; _tmp52_ = vala_ccode_element_access_new (_tmp50_, _tmp51_); _tmp53_ = _tmp52_; vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) _tmp45_, (ValaCCodeExpression*) _tmp53_); _vala_ccode_node_unref0 (_tmp53_); _vala_ccode_node_unref0 (_tmp50_); } } else { ValaElementAccess* _tmp54_; ValaExpression* _tmp55_; ValaExpression* _tmp56_; ValaCCodeExpression* _tmp57_ = NULL; ValaCCodeExpression* _tmp58_; ValaCCodeMemberAccess* _tmp59_; ValaCCodeMemberAccess* _tmp60_; ValaCCodeMemberAccess* ccontainer; ValaArrayType* _tmp61_; ValaDataType* _tmp62_; ValaDataType* _tmp63_; _tmp54_ = expr; _tmp55_ = vala_element_access_get_container (_tmp54_); _tmp56_ = _tmp55_; _tmp57_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp56_); _tmp58_ = _tmp57_; _tmp59_ = vala_ccode_member_access_new (_tmp58_, "data", FALSE); _tmp60_ = _tmp59_; _vala_ccode_node_unref0 (_tmp58_); ccontainer = _tmp60_; _tmp61_ = array_type; _tmp62_ = vala_array_type_get_element_type (_tmp61_); _tmp63_ = _tmp62_; if (VALA_IS_GENERIC_TYPE (_tmp63_)) { ValaCCodeIdentifier* _tmp64_; ValaCCodeIdentifier* _tmp65_; ValaCCodeFunctionCall* _tmp66_; ValaCCodeFunctionCall* _tmp67_; ValaCCodeFunctionCall* value_size; ValaCCodeFunctionCall* _tmp68_; ValaArrayType* _tmp69_; ValaDataType* _tmp70_; ValaDataType* _tmp71_; ValaCCodeExpression* _tmp72_ = NULL; ValaCCodeExpression* _tmp73_; ValaElementAccess* _tmp74_; ValaCCodeMemberAccess* _tmp75_; ValaCCodeCastExpression* _tmp76_; ValaCCodeCastExpression* _tmp77_; ValaCCodeFunctionCall* _tmp78_; ValaCCodeExpression* _tmp79_; ValaCCodeBinaryExpression* _tmp80_; ValaCCodeBinaryExpression* _tmp81_; ValaCCodeBinaryExpression* _tmp82_; ValaCCodeBinaryExpression* _tmp83_; _tmp64_ = vala_ccode_identifier_new ("dova_type_get_value_size"); _tmp65_ = _tmp64_; _tmp66_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp65_); _tmp67_ = _tmp66_; _vala_ccode_node_unref0 (_tmp65_); value_size = _tmp67_; _tmp68_ = value_size; _tmp69_ = array_type; _tmp70_ = vala_array_type_get_element_type (_tmp69_); _tmp71_ = _tmp70_; _tmp72_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp71_, FALSE); _tmp73_ = _tmp72_; vala_ccode_function_call_add_argument (_tmp68_, _tmp73_); _vala_ccode_node_unref0 (_tmp73_); _tmp74_ = expr; _tmp75_ = ccontainer; _tmp76_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp75_, "char*"); _tmp77_ = _tmp76_; _tmp78_ = value_size; _tmp79_ = cindex; _tmp80_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, (ValaCCodeExpression*) _tmp78_, _tmp79_); _tmp81_ = _tmp80_; _tmp82_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp77_, (ValaCCodeExpression*) _tmp81_); _tmp83_ = _tmp82_; vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) _tmp74_, (ValaCCodeExpression*) _tmp83_); _vala_ccode_node_unref0 (_tmp83_); _vala_ccode_node_unref0 (_tmp81_); _vala_ccode_node_unref0 (_tmp77_); _vala_ccode_node_unref0 (value_size); } else { ValaElementAccess* _tmp84_; ValaCCodeMemberAccess* _tmp85_; ValaArrayType* _tmp86_; ValaDataType* _tmp87_; ValaDataType* _tmp88_; gchar* _tmp89_ = NULL; gchar* _tmp90_; gchar* _tmp91_ = NULL; gchar* _tmp92_; ValaCCodeCastExpression* _tmp93_; ValaCCodeCastExpression* _tmp94_; ValaCCodeExpression* _tmp95_; ValaCCodeElementAccess* _tmp96_; ValaCCodeElementAccess* _tmp97_; _tmp84_ = expr; _tmp85_ = ccontainer; _tmp86_ = array_type; _tmp87_ = vala_array_type_get_element_type (_tmp86_); _tmp88_ = _tmp87_; _tmp89_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp88_); _tmp90_ = _tmp89_; _tmp91_ = g_strdup_printf ("%s*", _tmp90_); _tmp92_ = _tmp91_; _tmp93_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp85_, _tmp92_); _tmp94_ = _tmp93_; _tmp95_ = cindex; _tmp96_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp94_, _tmp95_); _tmp97_ = _tmp96_; vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) _tmp84_, (ValaCCodeExpression*) _tmp97_); _vala_ccode_node_unref0 (_tmp97_); _vala_ccode_node_unref0 (_tmp94_); _g_free0 (_tmp92_); _g_free0 (_tmp90_); } _vala_ccode_node_unref0 (ccontainer); } _vala_ccode_node_unref0 (cindex); _vala_iterable_unref0 (indices); } else { ValaElementAccess* _tmp98_; _tmp98_ = expr; VALA_CODE_VISITOR_CLASS (vala_dova_object_module_parent_class)->visit_element_access ((ValaCodeVisitor*) VALA_DOVA_ARRAY_MODULE (self), _tmp98_); } _vala_code_node_unref0 (array_type); } static gpointer _vala_iterable_ref0 (gpointer self) { return self ? vala_iterable_ref (self) : NULL; } static void vala_dova_object_module_add_module_init (ValaDovaObjectModule* self) { g_return_if_fail (self != NULL); { ValaList* _tmp0_; ValaList* _tmp1_; ValaList* _field_list; ValaList* _tmp2_; gint _tmp3_; gint _tmp4_; gint _field_size; gint _field_index; _tmp0_ = ((ValaDovaBaseModule*) self)->static_fields; _tmp1_ = _vala_iterable_ref0 (_tmp0_); _field_list = _tmp1_; _tmp2_ = _field_list; _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_); _tmp4_ = _tmp3_; _field_size = _tmp4_; _field_index = -1; while (TRUE) { gint _tmp5_; gint _tmp6_; gint _tmp7_; ValaList* _tmp8_; gint _tmp9_; gpointer _tmp10_ = NULL; ValaField* field; ValaField* _tmp11_; ValaExpression* _tmp12_; ValaExpression* _tmp13_; ValaField* _tmp14_; gchar* _tmp15_ = NULL; gchar* _tmp16_; ValaCCodeIdentifier* _tmp17_; ValaCCodeIdentifier* _tmp18_; ValaCCodeIdentifier* lhs; ValaField* _tmp19_; ValaExpression* _tmp20_; ValaExpression* _tmp21_; ValaCCodeExpression* _tmp22_ = NULL; ValaCCodeExpression* rhs; ValaCCodeFunction* _tmp23_; ValaCCodeFunction* _tmp24_; ValaCCodeIdentifier* _tmp25_; ValaCCodeExpression* _tmp26_; _tmp5_ = _field_index; _field_index = _tmp5_ + 1; _tmp6_ = _field_index; _tmp7_ = _field_size; if (!(_tmp6_ < _tmp7_)) { break; } _tmp8_ = _field_list; _tmp9_ = _field_index; _tmp10_ = vala_list_get (_tmp8_, _tmp9_); field = (ValaField*) _tmp10_; _tmp11_ = field; _tmp12_ = vala_variable_get_initializer ((ValaVariable*) _tmp11_); _tmp13_ = _tmp12_; vala_code_node_emit ((ValaCodeNode*) _tmp13_, (ValaCodeGenerator*) self); _tmp14_ = field; _tmp15_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_ccode_identifier_new (_tmp16_); _tmp18_ = _tmp17_; _g_free0 (_tmp16_); lhs = _tmp18_; _tmp19_ = field; _tmp20_ = vala_variable_get_initializer ((ValaVariable*) _tmp19_); _tmp21_ = _tmp20_; _tmp22_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp21_); rhs = _tmp22_; _tmp23_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp24_ = _tmp23_; _tmp25_ = lhs; _tmp26_ = rhs; vala_ccode_function_add_assignment (_tmp24_, (ValaCCodeExpression*) _tmp25_, _tmp26_); _vala_ccode_node_unref0 (rhs); _vala_ccode_node_unref0 (lhs); _vala_code_node_unref0 (field); } _vala_iterable_unref0 (_field_list); } } ValaDovaObjectModule* vala_dova_object_module_construct (GType object_type) { ValaDovaObjectModule* self = NULL; self = (ValaDovaObjectModule*) vala_dova_array_module_construct (object_type); return self; } ValaDovaObjectModule* vala_dova_object_module_new (void) { return vala_dova_object_module_construct (VALA_TYPE_DOVA_OBJECT_MODULE); } static void vala_dova_object_module_class_init (ValaDovaObjectModuleClass * klass) { vala_dova_object_module_parent_class = g_type_class_peek_parent (klass); VALA_DOVA_BASE_MODULE_CLASS (klass)->generate_class_declaration = vala_dova_object_module_real_generate_class_declaration; VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_dova_object_module_real_visit_class; VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_dova_object_module_real_visit_interface; VALA_DOVA_BASE_MODULE_CLASS (klass)->generate_property_accessor_declaration = vala_dova_object_module_real_generate_property_accessor_declaration; VALA_CODE_VISITOR_CLASS (klass)->visit_property_accessor = vala_dova_object_module_real_visit_property_accessor; VALA_DOVA_BASE_MODULE_CLASS (klass)->generate_interface_declaration = vala_dova_object_module_real_generate_interface_declaration; VALA_DOVA_BASE_MODULE_CLASS (klass)->method_has_wrapper = vala_dova_object_module_real_method_has_wrapper; VALA_DOVA_BASE_MODULE_CLASS (klass)->get_custom_creturn_type = vala_dova_object_module_real_get_custom_creturn_type; VALA_DOVA_BASE_MODULE_CLASS (klass)->generate_method_declaration = vala_dova_object_module_real_generate_method_declaration; VALA_CODE_VISITOR_CLASS (klass)->visit_method = vala_dova_object_module_real_visit_method; VALA_CODE_VISITOR_CLASS (klass)->visit_creation_method = vala_dova_object_module_real_visit_creation_method; VALA_DOVA_BASE_MODULE_CLASS (klass)->generate_cparameters = vala_dova_object_module_real_generate_cparameters; VALA_CODE_VISITOR_CLASS (klass)->visit_element_access = vala_dova_object_module_real_visit_element_access; } static void vala_dova_object_module_instance_init (ValaDovaObjectModule * self) { } GType vala_dova_object_module_get_type (void) { static volatile gsize vala_dova_object_module_type_id__volatile = 0; if (g_once_init_enter (&vala_dova_object_module_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (ValaDovaObjectModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_dova_object_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaDovaObjectModule), 0, (GInstanceInitFunc) vala_dova_object_module_instance_init, NULL }; GType vala_dova_object_module_type_id; vala_dova_object_module_type_id = g_type_register_static (VALA_TYPE_DOVA_ARRAY_MODULE, "ValaDovaObjectModule", &g_define_type_info, 0); g_once_init_leave (&vala_dova_object_module_type_id__volatile, vala_dova_object_module_type_id); } return vala_dova_object_module_type_id__volatile; }