Logo Search packages:      
Sourcecode: vala-0.14 version File versions  Download package

valadovavaluemodule.c

/* valadovavaluemodule.c generated by valac, the Vala compiler
 * generated from valadovavaluemodule.vala, do not modify */

/* valadovavaluemodule.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 <j@bitron.ch>
 */

#include <glib.h>
#include <glib-object.h>
#include <vala.h>
#include <valaccode.h>
#include <stdlib.h>
#include <string.h>
#include <valagee.h>


#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 VALA_TYPE_DOVA_VALUE_MODULE (vala_dova_value_module_get_type ())
#define VALA_DOVA_VALUE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_VALUE_MODULE, ValaDovaValueModule))
#define VALA_DOVA_VALUE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_VALUE_MODULE, ValaDovaValueModuleClass))
#define VALA_IS_DOVA_VALUE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_VALUE_MODULE))
#define VALA_IS_DOVA_VALUE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_VALUE_MODULE))
#define VALA_DOVA_VALUE_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_VALUE_MODULE, ValaDovaValueModuleClass))

typedef struct _ValaDovaValueModule ValaDovaValueModule;
typedef struct _ValaDovaValueModuleClass ValaDovaValueModuleClass;
typedef struct _ValaDovaValueModulePrivate ValaDovaValueModulePrivate;
#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)))

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;
      ValaDataType* float_type;
      ValaDataType* double_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;
};

struct _ValaDovaValueModule {
      ValaDovaObjectModule parent_instance;
      ValaDovaValueModulePrivate * priv;
};

struct _ValaDovaValueModuleClass {
      ValaDovaObjectModuleClass parent_class;
};


static gpointer vala_dova_value_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;
GType vala_dova_value_module_get_type (void) G_GNUC_CONST;
enum  {
      VALA_DOVA_VALUE_MODULE_DUMMY_PROPERTY
};
static void vala_dova_value_module_real_visit_creation_method (ValaCodeVisitor* base, ValaCreationMethod* m);
ValaTypeSymbol* vala_dova_base_module_get_current_type_symbol (ValaDovaBaseModule* self);
ValaClass* vala_dova_base_module_get_current_class (ValaDovaBaseModule* self);
static void vala_dova_value_module_real_generate_struct_declaration (ValaDovaBaseModule* base, ValaStruct* st, ValaCCodeFile* decl_space);
void vala_dova_base_module_generate_struct_declaration (ValaDovaBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space);
gboolean vala_dova_base_module_add_symbol_declaration (ValaDovaBaseModule* self, ValaCCodeFile* decl_space, ValaSymbol* sym, const gchar* name);
void vala_dova_base_module_generate_class_declaration (ValaDovaBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
static void vala_dova_value_module_real_visit_struct (ValaCodeVisitor* base, ValaStruct* st);
void vala_dova_base_module_generate_method_declaration (ValaDovaBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space);
void vala_dova_base_module_generate_property_accessor_declaration (ValaDovaBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space);
ValaCodeContext* vala_dova_base_module_get_context (ValaDovaBaseModule* self);
void vala_dova_object_module_declare_set_value_copy_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space);
void vala_dova_object_module_declare_set_value_equals_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space);
void vala_dova_object_module_declare_set_value_hash_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space);
void vala_dova_object_module_declare_set_value_to_any_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space);
void vala_dova_object_module_declare_set_value_from_any_function (ValaDovaObjectModule* self, ValaCCodeFile* decl_space);
static void vala_dova_value_module_add_struct_copy_function (ValaDovaValueModule* self, ValaStruct* st);
gboolean vala_dova_base_module_requires_destroy (ValaDovaBaseModule* self, ValaDataType* type);
ValaCCodeExpression* vala_dova_base_module_get_unref_expression (ValaDovaBaseModule* self, ValaCCodeExpression* cvar, ValaDataType* type, ValaExpression* expr);
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);
gboolean vala_dova_base_module_requires_copy (ValaDovaBaseModule* self, ValaDataType* type);
ValaCCodeExpression* vala_dova_base_module_get_ref_cexpression (ValaDovaBaseModule* self, ValaDataType* expression_type, ValaCCodeExpression* cexpr, ValaExpression* expr, ValaCodeNode* node);
static void vala_dova_value_module_real_visit_assignment (ValaCodeVisitor* base, ValaAssignment* assignment);
ValaCCodeExpression* vala_dova_base_module_get_ccodenode (ValaDovaBaseModule* self, ValaExpression* node);
ValaCCodeExpression* vala_dova_base_module_get_type_private_from_type (ValaDovaBaseModule* self, ValaObjectTypeSymbol* type_symbol, ValaCCodeExpression* type_expression);
static void vala_dova_value_module_real_store_variable (ValaDovaAssignmentModule* base, ValaVariable* variable, ValaTargetValue* lvalue, ValaTargetValue* value, gboolean initializer);
void vala_dova_assignment_module_store_variable (ValaDovaAssignmentModule* self, ValaVariable* variable, ValaTargetValue* lvalue, ValaTargetValue* value, gboolean initializer);
ValaCCodeExpression* vala_dova_base_module_get_cvalue_ (ValaDovaBaseModule* self, ValaTargetValue* value);
ValaCCodeFunction* vala_dova_base_module_get_ccode (ValaDovaBaseModule* self);
static void vala_dova_value_module_real_visit_binary_expression (ValaCodeVisitor* base, ValaBinaryExpression* expr);
ValaCCodeExpression* vala_dova_base_module_get_type_id_expression (ValaDovaBaseModule* self, ValaDataType* type, gboolean is_chainup);
static void vala_dova_value_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr);
static void vala_dova_value_module_real_visit_list_literal (ValaCodeVisitor* base, ValaListLiteral* expr);
ValaLocalVariable* vala_dova_base_module_get_temp_variable (ValaDovaBaseModule* self, ValaDataType* type, gboolean value_owned, ValaCodeNode* node_reference);
ValaCCodeExpression* vala_dova_base_module_get_variable_cexpression (ValaDovaBaseModule* self, const gchar* name);
void vala_dova_base_module_emit_temp_var (ValaDovaBaseModule* self, ValaLocalVariable* local);
ValaCCodeExpression* vala_dova_base_module_get_cvalue (ValaDovaBaseModule* self, ValaExpression* expr);
static void vala_dova_value_module_real_visit_set_literal (ValaCodeVisitor* base, ValaSetLiteral* expr);
static void vala_dova_value_module_real_visit_map_literal (ValaCodeVisitor* base, ValaMapLiteral* expr);
static void vala_dova_value_module_real_visit_tuple (ValaCodeVisitor* base, ValaTuple* tuple);
ValaDovaValueModule* vala_dova_value_module_new (void);
ValaDovaValueModule* vala_dova_value_module_construct (GType object_type);
ValaDovaObjectModule* vala_dova_object_module_new (void);
ValaDovaObjectModule* vala_dova_object_module_construct (GType object_type);


static void vala_dova_value_module_real_visit_creation_method (ValaCodeVisitor* base, ValaCreationMethod* m) {
      ValaDovaValueModule * self;
      gboolean _tmp0_ = FALSE;
      ValaTypeSymbol* _tmp1_ = NULL;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (m != NULL);
      _tmp1_ = vala_dova_base_module_get_current_type_symbol ((ValaDovaBaseModule*) self);
      if (VALA_IS_CLASS (_tmp1_)) {
            gboolean _tmp2_ = FALSE;
            ValaClass* _tmp3_ = NULL;
            ValaClass* _tmp4_ = NULL;
            _tmp3_ = vala_dova_base_module_get_current_class ((ValaDovaBaseModule*) self);
            _tmp4_ = vala_class_get_base_class (_tmp3_);
            if (_tmp4_ == NULL) {
                  _tmp2_ = TRUE;
            } else {
                  ValaClass* _tmp5_ = NULL;
                  ValaClass* _tmp6_ = NULL;
                  gchar* _tmp7_ = NULL;
                  gchar* _tmp8_;
                  _tmp5_ = vala_dova_base_module_get_current_class ((ValaDovaBaseModule*) self);
                  _tmp6_ = vala_class_get_base_class (_tmp5_);
                  _tmp7_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp6_);
                  _tmp8_ = _tmp7_;
                  _tmp2_ = g_strcmp0 (_tmp8_, "Dova.Value") != 0;
                  _g_free0 (_tmp8_);
            }
            _tmp0_ = _tmp2_;
      } else {
            _tmp0_ = FALSE;
      }
      if (_tmp0_) {
            VALA_CODE_VISITOR_CLASS (vala_dova_value_module_parent_class)->visit_creation_method ((ValaCodeVisitor*) VALA_DOVA_OBJECT_MODULE (self), m);
            return;
      }
      vala_code_visitor_visit_method ((ValaCodeVisitor*) self, (ValaMethod*) m);
}


static void vala_dova_value_module_real_generate_struct_declaration (ValaDovaBaseModule* base, ValaStruct* st, ValaCCodeFile* decl_space) {
      ValaDovaValueModule * self;
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gboolean _tmp2_;
      gboolean _tmp3_;
      gchar* _tmp4_ = NULL;
      gchar* _tmp5_;
      gchar* _tmp6_ = NULL;
      gchar* _tmp7_;
      ValaCCodeFunction* _tmp8_ = NULL;
      ValaCCodeFunction* _tmp9_;
      ValaCCodeFunction* type_fun;
      gboolean _tmp10_;
      gchar* _tmp11_ = NULL;
      gchar* _tmp12_;
      gchar* _tmp13_ = NULL;
      gchar* _tmp14_;
      ValaCCodeFunction* _tmp15_ = NULL;
      ValaCCodeFunction* _tmp16_;
      ValaCCodeFunction* type_init_fun;
      ValaCCodeParameter* _tmp17_ = NULL;
      ValaCCodeParameter* _tmp18_;
      gboolean _tmp19_;
      gchar* _tmp20_ = NULL;
      gchar* _tmp21_;
      ValaCCodeFunction* _tmp22_ = NULL;
      ValaCCodeFunction* _tmp23_;
      ValaCCodeFunction* function;
      gboolean _tmp24_;
      gchar* _tmp25_ = NULL;
      gchar* _tmp26_;
      gchar* _tmp27_;
      gchar* _tmp28_;
      ValaCCodeParameter* _tmp29_ = NULL;
      ValaCCodeParameter* _tmp30_;
      ValaCCodeParameter* _tmp31_ = NULL;
      ValaCCodeParameter* _tmp32_;
      gchar* _tmp33_ = NULL;
      gchar* _tmp34_;
      gchar* _tmp35_;
      gchar* _tmp36_;
      ValaCCodeParameter* _tmp37_ = NULL;
      ValaCCodeParameter* _tmp38_;
      ValaCCodeParameter* _tmp39_ = NULL;
      ValaCCodeParameter* _tmp40_;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (st != NULL);
      g_return_if_fail (decl_space != NULL);
      VALA_DOVA_BASE_MODULE_CLASS (vala_dova_value_module_parent_class)->generate_struct_declaration ((ValaDovaBaseModule*) VALA_DOVA_OBJECT_MODULE (self), st, decl_space);
      _tmp0_ = vala_typesymbol_get_copy_function ((ValaTypeSymbol*) st);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_dova_base_module_add_symbol_declaration ((ValaDovaBaseModule*) self, decl_space, (ValaSymbol*) st, _tmp1_);
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      if (_tmp3_) {
            return;
      }
      vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, ((ValaDovaBaseModule*) self)->type_class, decl_space);
      _tmp4_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp5_ = _tmp4_;
      _tmp6_ = g_strdup_printf ("%s_type_get", _tmp5_);
      _tmp7_ = _tmp6_;
      _tmp8_ = vala_ccode_function_new (_tmp7_, "DovaType *");
      _tmp9_ = _tmp8_;
      _g_free0 (_tmp7_);
      _g_free0 (_tmp5_);
      type_fun = _tmp9_;
      _tmp10_ = vala_symbol_is_internal_symbol ((ValaSymbol*) st);
      if (_tmp10_) {
            vala_ccode_function_set_modifiers (type_fun, VALA_CCODE_MODIFIERS_STATIC);
      }
      vala_ccode_file_add_function_declaration (decl_space, type_fun);
      _tmp11_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp12_ = _tmp11_;
      _tmp13_ = g_strdup_printf ("%s_type_init", _tmp12_);
      _tmp14_ = _tmp13_;
      _tmp15_ = vala_ccode_function_new (_tmp14_, "void");
      _tmp16_ = _tmp15_;
      _g_free0 (_tmp14_);
      _g_free0 (_tmp12_);
      type_init_fun = _tmp16_;
      _tmp17_ = vala_ccode_parameter_new ("type", "DovaType *");
      _tmp18_ = _tmp17_;
      vala_ccode_function_add_parameter (type_init_fun, _tmp18_);
      _vala_ccode_node_unref0 (_tmp18_);
      _tmp19_ = vala_symbol_is_internal_symbol ((ValaSymbol*) st);
      if (_tmp19_) {
            vala_ccode_function_set_modifiers (type_init_fun, VALA_CCODE_MODIFIERS_STATIC);
      }
      vala_ccode_file_add_function_declaration (decl_space, type_init_fun);
      _tmp20_ = vala_typesymbol_get_copy_function ((ValaTypeSymbol*) st);
      _tmp21_ = _tmp20_;
      _tmp22_ = vala_ccode_function_new (_tmp21_, "void");
      _tmp23_ = _tmp22_;
      _g_free0 (_tmp21_);
      function = _tmp23_;
      _tmp24_ = vala_symbol_is_internal_symbol ((ValaSymbol*) st);
      if (_tmp24_) {
            vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      }
      _tmp25_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
      _tmp26_ = _tmp25_;
      _tmp27_ = g_strconcat (_tmp26_, "*", NULL);
      _tmp28_ = _tmp27_;
      _tmp29_ = vala_ccode_parameter_new ("dest", _tmp28_);
      _tmp30_ = _tmp29_;
      vala_ccode_function_add_parameter (function, _tmp30_);
      _vala_ccode_node_unref0 (_tmp30_);
      _g_free0 (_tmp28_);
      _g_free0 (_tmp26_);
      _tmp31_ = vala_ccode_parameter_new ("dest_index", "intptr_t");
      _tmp32_ = _tmp31_;
      vala_ccode_function_add_parameter (function, _tmp32_);
      _vala_ccode_node_unref0 (_tmp32_);
      _tmp33_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
      _tmp34_ = _tmp33_;
      _tmp35_ = g_strconcat (_tmp34_, "*", NULL);
      _tmp36_ = _tmp35_;
      _tmp37_ = vala_ccode_parameter_new ("src", _tmp36_);
      _tmp38_ = _tmp37_;
      vala_ccode_function_add_parameter (function, _tmp38_);
      _vala_ccode_node_unref0 (_tmp38_);
      _g_free0 (_tmp36_);
      _g_free0 (_tmp34_);
      _tmp39_ = vala_ccode_parameter_new ("src_index", "intptr_t");
      _tmp40_ = _tmp39_;
      vala_ccode_function_add_parameter (function, _tmp40_);
      _vala_ccode_node_unref0 (_tmp40_);
      vala_ccode_file_add_function_declaration (decl_space, function);
      _vala_ccode_node_unref0 (function);
      _vala_ccode_node_unref0 (type_init_fun);
      _vala_ccode_node_unref0 (type_fun);
}


static void vala_dova_value_module_real_visit_struct (ValaCodeVisitor* base, ValaStruct* st) {
      ValaDovaValueModule * self;
      ValaCCodeDeclaration* _tmp0_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      gchar* _tmp1_ = NULL;
      gchar* _tmp2_;
      gchar* _tmp3_ = NULL;
      gchar* _tmp4_;
      ValaCCodeConstant* _tmp5_ = NULL;
      ValaCCodeConstant* _tmp6_;
      ValaCCodeVariableDeclarator* _tmp7_ = NULL;
      ValaCCodeVariableDeclarator* _tmp8_;
      gchar* _tmp9_ = NULL;
      gchar* _tmp10_;
      gchar* _tmp11_ = NULL;
      gchar* _tmp12_;
      gchar* _tmp13_ = NULL;
      gchar* _tmp14_;
      gchar* macro;
      gchar* _tmp15_ = NULL;
      gchar* _tmp16_;
      gchar* _tmp17_ = NULL;
      gchar* _tmp18_;
      ValaCCodeMacroReplacement* _tmp19_ = NULL;
      ValaCCodeMacroReplacement* _tmp20_;
      ValaCCodeDeclaration* _tmp21_ = NULL;
      gchar* _tmp22_ = NULL;
      gchar* _tmp23_;
      gchar* _tmp24_ = NULL;
      gchar* _tmp25_;
      ValaCCodeConstant* _tmp26_ = NULL;
      ValaCCodeConstant* _tmp27_;
      ValaCCodeVariableDeclarator* _tmp28_ = NULL;
      ValaCCodeVariableDeclarator* _tmp29_;
      gchar* _tmp30_ = NULL;
      gchar* _tmp31_;
      gchar* _tmp32_ = NULL;
      gchar* _tmp33_;
      ValaCCodeFunction* _tmp34_ = NULL;
      ValaCCodeFunction* _tmp35_;
      ValaCCodeFunction* type_fun;
      ValaCCodeBlock* _tmp36_ = NULL;
      ValaCCodeBlock* _tmp37_;
      ValaCCodeBlock* _tmp38_ = NULL;
      ValaCCodeBlock* type_init_block;
      ValaScope* _tmp39_ = NULL;
      ValaSymbol* _tmp40_ = NULL;
      ValaMethod* _tmp41_;
      ValaScope* _tmp42_ = NULL;
      ValaSymbol* _tmp43_ = NULL;
      ValaProperty* _tmp44_;
      ValaPropertyAccessor* _tmp45_ = NULL;
      ValaScope* _tmp46_ = NULL;
      ValaSymbol* _tmp47_ = NULL;
      ValaProperty* _tmp48_;
      ValaPropertyAccessor* _tmp49_ = NULL;
      ValaScope* _tmp50_ = NULL;
      ValaSymbol* _tmp51_ = NULL;
      ValaProperty* _tmp52_;
      ValaPropertyAccessor* _tmp53_ = NULL;
      ValaScope* _tmp54_ = NULL;
      ValaSymbol* _tmp55_ = NULL;
      ValaProperty* _tmp56_;
      ValaPropertyAccessor* _tmp57_ = NULL;
      ValaScope* _tmp58_ = NULL;
      ValaSymbol* _tmp59_ = NULL;
      ValaProperty* _tmp60_;
      ValaPropertyAccessor* _tmp61_ = NULL;
      ValaScope* _tmp62_ = NULL;
      ValaSymbol* _tmp63_ = NULL;
      ValaProperty* _tmp64_;
      ValaPropertyAccessor* _tmp65_ = NULL;
      ValaScope* _tmp66_ = NULL;
      ValaSymbol* _tmp67_ = NULL;
      ValaProperty* _tmp68_;
      ValaPropertyAccessor* _tmp69_ = NULL;
      ValaCodeContext* _tmp70_ = NULL;
      ValaNamespace* _tmp71_ = NULL;
      ValaScope* _tmp72_ = NULL;
      ValaSymbol* _tmp73_ = NULL;
      ValaSymbol* _tmp74_;
      ValaScope* _tmp75_ = NULL;
      ValaSymbol* _tmp76_ = NULL;
      ValaClass* _tmp77_;
      ValaCCodeIdentifier* _tmp78_ = NULL;
      ValaCCodeIdentifier* _tmp79_;
      ValaCCodeFunctionCall* _tmp80_ = NULL;
      ValaCCodeFunctionCall* _tmp81_;
      ValaCCodeFunctionCall* base_type;
      ValaCCodeIdentifier* _tmp82_ = NULL;
      ValaCCodeIdentifier* _tmp83_;
      ValaCCodeFunctionCall* _tmp84_ = NULL;
      ValaCCodeFunctionCall* _tmp85_;
      ValaCCodeFunctionCall* base_type_size;
      ValaCCodeIdentifier* _tmp86_ = NULL;
      ValaCCodeIdentifier* _tmp87_;
      ValaCCodeFunctionCall* _tmp88_ = NULL;
      ValaCCodeFunctionCall* _tmp89_;
      ValaCCodeFunctionCall* calloc_call;
      ValaCCodeConstant* _tmp90_ = NULL;
      ValaCCodeConstant* _tmp91_;
      gchar* _tmp92_ = NULL;
      gchar* _tmp93_;
      gchar* _tmp94_ = NULL;
      gchar* _tmp95_;
      ValaCCodeIdentifier* _tmp96_ = NULL;
      ValaCCodeIdentifier* _tmp97_;
      ValaCCodeAssignment* _tmp98_ = NULL;
      ValaCCodeAssignment* _tmp99_;
      ValaCCodeExpressionStatement* _tmp100_ = NULL;
      ValaCCodeExpressionStatement* _tmp101_;
      gchar* _tmp102_ = NULL;
      gchar* _tmp103_;
      gchar* _tmp104_ = NULL;
      gchar* _tmp105_;
      ValaCCodeIdentifier* _tmp106_ = NULL;
      ValaCCodeIdentifier* _tmp107_;
      ValaCCodeCastExpression* _tmp108_ = NULL;
      ValaCCodeCastExpression* _tmp109_;
      ValaCCodeMemberAccess* _tmp110_ = NULL;
      ValaCCodeMemberAccess* _tmp111_;
      ValaCCodeIdentifier* _tmp112_ = NULL;
      ValaCCodeIdentifier* _tmp113_;
      ValaCCodeFunctionCall* _tmp114_ = NULL;
      ValaCCodeFunctionCall* _tmp115_;
      ValaCCodeAssignment* _tmp116_ = NULL;
      ValaCCodeAssignment* _tmp117_;
      ValaCCodeExpressionStatement* _tmp118_ = NULL;
      ValaCCodeExpressionStatement* _tmp119_;
      ValaCCodeIdentifier* _tmp120_ = NULL;
      ValaCCodeIdentifier* _tmp121_;
      ValaCCodeFunctionCall* _tmp122_ = NULL;
      ValaCCodeFunctionCall* _tmp123_;
      ValaCCodeFunctionCall* set_base_type;
      gchar* _tmp124_ = NULL;
      gchar* _tmp125_;
      gchar* _tmp126_ = NULL;
      gchar* _tmp127_;
      ValaCCodeIdentifier* _tmp128_ = NULL;
      ValaCCodeIdentifier* _tmp129_;
      ValaCCodeExpressionStatement* _tmp130_ = NULL;
      ValaCCodeExpressionStatement* _tmp131_;
      ValaCCodeIdentifier* _tmp132_ = NULL;
      ValaCCodeIdentifier* _tmp133_;
      ValaCCodeFunctionCall* _tmp134_ = NULL;
      ValaCCodeFunctionCall* _tmp135_;
      ValaCCodeFunctionCall* base_size;
      gchar* _tmp136_ = NULL;
      gchar* _tmp137_;
      gchar* _tmp138_ = NULL;
      gchar* _tmp139_;
      ValaCCodeIdentifier* _tmp140_ = NULL;
      ValaCCodeIdentifier* _tmp141_;
      ValaCCodeAssignment* _tmp142_ = NULL;
      ValaCCodeAssignment* _tmp143_;
      ValaCCodeExpressionStatement* _tmp144_ = NULL;
      ValaCCodeExpressionStatement* _tmp145_;
      ValaCCodeIdentifier* _tmp146_ = NULL;
      ValaCCodeIdentifier* _tmp147_;
      ValaCCodeFunctionCall* _tmp148_ = NULL;
      ValaCCodeFunctionCall* _tmp149_;
      ValaCCodeFunctionCall* sizeof_call;
      gchar* _tmp150_ = NULL;
      gchar* _tmp151_;
      ValaCCodeIdentifier* _tmp152_ = NULL;
      ValaCCodeIdentifier* _tmp153_;
      ValaCCodeIdentifier* _tmp154_ = NULL;
      ValaCCodeIdentifier* _tmp155_;
      ValaCCodeFunctionCall* _tmp156_ = NULL;
      ValaCCodeFunctionCall* _tmp157_;
      ValaCCodeFunctionCall* set_size;
      gchar* _tmp158_ = NULL;
      gchar* _tmp159_;
      gchar* _tmp160_ = NULL;
      gchar* _tmp161_;
      ValaCCodeIdentifier* _tmp162_ = NULL;
      ValaCCodeIdentifier* _tmp163_;
      ValaCCodeBinaryExpression* _tmp164_ = NULL;
      ValaCCodeBinaryExpression* _tmp165_;
      ValaCCodeExpressionStatement* _tmp166_ = NULL;
      ValaCCodeExpressionStatement* _tmp167_;
      ValaCCodeIdentifier* _tmp168_ = NULL;
      ValaCCodeIdentifier* _tmp169_;
      ValaCCodeFunctionCall* _tmp170_ = NULL;
      gchar* _tmp171_ = NULL;
      gchar* _tmp172_;
      gchar* _tmp173_ = NULL;
      gchar* _tmp174_;
      ValaCCodeIdentifier* _tmp175_ = NULL;
      ValaCCodeIdentifier* _tmp176_;
      ValaCCodeExpressionStatement* _tmp177_ = NULL;
      ValaCCodeExpressionStatement* _tmp178_;
      ValaCCodeIdentifier* _tmp179_ = NULL;
      ValaCCodeIdentifier* _tmp180_;
      ValaCCodeFunctionCall* _tmp181_ = NULL;
      gchar* _tmp182_ = NULL;
      gchar* _tmp183_;
      gchar* _tmp184_ = NULL;
      gchar* _tmp185_;
      ValaCCodeIdentifier* _tmp186_ = NULL;
      ValaCCodeIdentifier* _tmp187_;
      ValaCCodeExpressionStatement* _tmp188_ = NULL;
      ValaCCodeExpressionStatement* _tmp189_;
      gchar* _tmp190_ = NULL;
      gchar* _tmp191_;
      gchar* _tmp192_ = NULL;
      gchar* _tmp193_;
      ValaCCodeIdentifier* _tmp194_ = NULL;
      ValaCCodeIdentifier* _tmp195_;
      ValaCCodeFunctionCall* _tmp196_ = NULL;
      ValaCCodeFunctionCall* _tmp197_;
      ValaCCodeFunctionCall* type_init_call;
      gchar* _tmp198_ = NULL;
      gchar* _tmp199_;
      gchar* _tmp200_ = NULL;
      gchar* _tmp201_;
      ValaCCodeIdentifier* _tmp202_ = NULL;
      ValaCCodeIdentifier* _tmp203_;
      ValaCCodeExpressionStatement* _tmp204_ = NULL;
      ValaCCodeExpressionStatement* _tmp205_;
      ValaCCodeIdentifier* _tmp206_ = NULL;
      ValaCCodeIdentifier* _tmp207_;
      ValaCCodeFunctionCall* _tmp208_ = NULL;
      gchar* _tmp209_ = NULL;
      gchar* _tmp210_;
      gchar* _tmp211_ = NULL;
      gchar* _tmp212_;
      ValaCCodeIdentifier* _tmp213_ = NULL;
      ValaCCodeIdentifier* _tmp214_;
      ValaCCodeExpressionStatement* _tmp215_ = NULL;
      ValaCCodeExpressionStatement* _tmp216_;
      ValaCCodeBlock* _tmp217_ = NULL;
      gchar* _tmp218_ = NULL;
      gchar* _tmp219_;
      gchar* _tmp220_ = NULL;
      gchar* _tmp221_;
      ValaCCodeIdentifier* _tmp222_ = NULL;
      ValaCCodeIdentifier* _tmp223_;
      ValaCCodeUnaryExpression* _tmp224_ = NULL;
      ValaCCodeUnaryExpression* _tmp225_;
      ValaCCodeIfStatement* _tmp226_ = NULL;
      ValaCCodeIfStatement* _tmp227_;
      ValaCCodeBlock* _tmp228_ = NULL;
      gchar* _tmp229_ = NULL;
      gchar* _tmp230_;
      gchar* _tmp231_ = NULL;
      gchar* _tmp232_;
      ValaCCodeIdentifier* _tmp233_ = NULL;
      ValaCCodeIdentifier* _tmp234_;
      ValaCCodeReturnStatement* _tmp235_ = NULL;
      ValaCCodeReturnStatement* _tmp236_;
      gchar* _tmp237_ = NULL;
      gchar* _tmp238_;
      gchar* _tmp239_ = NULL;
      gchar* _tmp240_;
      ValaCCodeFunction* _tmp241_ = NULL;
      ValaCCodeFunction* _tmp242_;
      ValaCCodeFunction* type_init_fun;
      ValaCCodeParameter* _tmp243_ = NULL;
      ValaCCodeParameter* _tmp244_;
      ValaCCodeBlock* _tmp245_ = NULL;
      ValaCCodeBlock* _tmp246_;
      ValaCCodeIdentifier* _tmp247_ = NULL;
      ValaCCodeIdentifier* _tmp248_;
      ValaCCodeFunctionCall* _tmp249_ = NULL;
      ValaCCodeIdentifier* _tmp250_ = NULL;
      ValaCCodeIdentifier* _tmp251_;
      ValaCCodeBlock* _tmp252_ = NULL;
      ValaCCodeExpressionStatement* _tmp253_ = NULL;
      ValaCCodeExpressionStatement* _tmp254_;
      ValaCCodeIdentifier* _tmp255_ = NULL;
      ValaCCodeIdentifier* _tmp256_;
      ValaCCodeFunctionCall* _tmp257_ = NULL;
      ValaCCodeFunctionCall* _tmp258_;
      ValaCCodeFunctionCall* value_copy_call;
      ValaCCodeIdentifier* _tmp259_ = NULL;
      ValaCCodeIdentifier* _tmp260_;
      gchar* _tmp261_ = NULL;
      gchar* _tmp262_;
      gchar* _tmp263_ = NULL;
      gchar* _tmp264_;
      ValaCCodeIdentifier* _tmp265_ = NULL;
      ValaCCodeIdentifier* _tmp266_;
      ValaCCodeCastExpression* _tmp267_ = NULL;
      ValaCCodeCastExpression* _tmp268_;
      ValaCCodeBlock* _tmp269_ = NULL;
      ValaCCodeExpressionStatement* _tmp270_ = NULL;
      ValaCCodeExpressionStatement* _tmp271_;
      ValaScope* _tmp272_ = NULL;
      ValaSymbol* _tmp273_ = NULL;
      ValaSymbol* _tmp274_;
      gboolean _tmp275_;
      ValaScope* _tmp344_ = NULL;
      ValaSymbol* _tmp345_ = NULL;
      ValaSymbol* _tmp346_;
      gboolean _tmp347_;
      gchar* _tmp400_ = NULL;
      gchar* _tmp401_;
      gchar* _tmp402_ = NULL;
      gchar* _tmp403_;
      ValaCCodeFunction* _tmp404_ = NULL;
      ValaCCodeFunction* _tmp405_;
      ValaCCodeFunction* value_to_any_fun;
      ValaCCodeParameter* _tmp406_ = NULL;
      ValaCCodeParameter* _tmp407_;
      ValaCCodeParameter* _tmp408_ = NULL;
      ValaCCodeParameter* _tmp409_;
      ValaCCodeBlock* _tmp410_ = NULL;
      ValaCCodeBlock* _tmp411_;
      ValaCCodeIdentifier* _tmp412_ = NULL;
      ValaCCodeIdentifier* _tmp413_;
      ValaCCodeFunctionCall* _tmp414_ = NULL;
      ValaCCodeFunctionCall* _tmp415_;
      ValaCCodeFunctionCall* alloc_call;
      gchar* _tmp416_ = NULL;
      gchar* _tmp417_;
      gchar* _tmp418_ = NULL;
      gchar* _tmp419_;
      ValaCCodeIdentifier* _tmp420_ = NULL;
      ValaCCodeIdentifier* _tmp421_;
      ValaCCodeFunctionCall* _tmp422_ = NULL;
      ValaCCodeFunctionCall* _tmp423_;
      ValaCCodeDeclaration* _tmp424_ = NULL;
      ValaCCodeVariableDeclarator* _tmp425_ = NULL;
      ValaCCodeVariableDeclarator* _tmp426_;
      ValaCCodeBlock* _tmp427_ = NULL;
      gchar* _tmp428_ = NULL;
      gchar* _tmp429_;
      gchar* _tmp430_ = NULL;
      gchar* _tmp431_;
      ValaCCodeIdentifier* _tmp432_ = NULL;
      ValaCCodeIdentifier* _tmp433_;
      ValaCCodeFunctionCall* _tmp434_ = NULL;
      ValaCCodeFunctionCall* _tmp435_;
      ValaCCodeFunctionCall* priv_call;
      ValaCCodeIdentifier* _tmp436_ = NULL;
      ValaCCodeIdentifier* _tmp437_;
      gchar* _tmp438_ = NULL;
      gchar* _tmp439_;
      gchar* _tmp440_ = NULL;
      gchar* _tmp441_;
      ValaCCodeIdentifier* _tmp442_ = NULL;
      ValaCCodeIdentifier* _tmp443_;
      ValaCCodeFunctionCall* _tmp444_ = NULL;
      ValaCCodeFunctionCall* _tmp445_;
      ValaCCodeFunctionCall* copy_call;
      ValaCCodeConstant* _tmp446_ = NULL;
      ValaCCodeConstant* _tmp447_;
      ValaCCodeIdentifier* _tmp448_ = NULL;
      ValaCCodeIdentifier* _tmp449_;
      ValaCCodeIdentifier* _tmp450_ = NULL;
      ValaCCodeIdentifier* _tmp451_;
      ValaCCodeBlock* _tmp452_ = NULL;
      ValaCCodeExpressionStatement* _tmp453_ = NULL;
      ValaCCodeExpressionStatement* _tmp454_;
      ValaCCodeBlock* _tmp455_ = NULL;
      ValaCCodeIdentifier* _tmp456_ = NULL;
      ValaCCodeIdentifier* _tmp457_;
      ValaCCodeReturnStatement* _tmp458_ = NULL;
      ValaCCodeReturnStatement* _tmp459_;
      ValaCCodeIdentifier* _tmp460_ = NULL;
      ValaCCodeIdentifier* _tmp461_;
      ValaCCodeFunctionCall* _tmp462_ = NULL;
      ValaCCodeFunctionCall* _tmp463_;
      ValaCCodeFunctionCall* value_to_any_call;
      ValaCCodeIdentifier* _tmp464_ = NULL;
      ValaCCodeIdentifier* _tmp465_;
      gchar* _tmp466_ = NULL;
      gchar* _tmp467_;
      gchar* _tmp468_ = NULL;
      gchar* _tmp469_;
      ValaCCodeIdentifier* _tmp470_ = NULL;
      ValaCCodeIdentifier* _tmp471_;
      ValaCCodeBlock* _tmp472_ = NULL;
      ValaCCodeExpressionStatement* _tmp473_ = NULL;
      ValaCCodeExpressionStatement* _tmp474_;
      gchar* _tmp475_ = NULL;
      gchar* _tmp476_;
      gchar* _tmp477_ = NULL;
      gchar* _tmp478_;
      ValaCCodeFunction* _tmp479_ = NULL;
      ValaCCodeFunction* _tmp480_;
      ValaCCodeFunction* value_from_any_fun;
      ValaCCodeParameter* _tmp481_ = NULL;
      ValaCCodeParameter* _tmp482_;
      gchar* _tmp483_ = NULL;
      gchar* _tmp484_;
      gchar* _tmp485_;
      gchar* _tmp486_;
      ValaCCodeParameter* _tmp487_ = NULL;
      ValaCCodeParameter* _tmp488_;
      ValaCCodeParameter* _tmp489_ = NULL;
      ValaCCodeParameter* _tmp490_;
      ValaCCodeBlock* _tmp491_ = NULL;
      ValaCCodeBlock* _tmp492_;
      gchar* _tmp493_ = NULL;
      gchar* _tmp494_;
      gchar* _tmp495_ = NULL;
      gchar* _tmp496_;
      ValaCCodeIdentifier* _tmp497_ = NULL;
      ValaCCodeIdentifier* _tmp498_;
      ValaCCodeFunctionCall* _tmp499_ = NULL;
      ValaCCodeIdentifier* _tmp500_ = NULL;
      ValaCCodeIdentifier* _tmp501_;
      gchar* _tmp502_ = NULL;
      gchar* _tmp503_;
      gchar* _tmp504_ = NULL;
      gchar* _tmp505_;
      ValaCCodeIdentifier* _tmp506_ = NULL;
      ValaCCodeIdentifier* _tmp507_;
      ValaCCodeFunctionCall* _tmp508_ = NULL;
      ValaCCodeIdentifier* _tmp509_ = NULL;
      ValaCCodeIdentifier* _tmp510_;
      ValaCCodeIdentifier* _tmp511_ = NULL;
      ValaCCodeIdentifier* _tmp512_;
      ValaCCodeConstant* _tmp513_ = NULL;
      ValaCCodeConstant* _tmp514_;
      ValaCCodeBlock* _tmp515_ = NULL;
      ValaCCodeExpressionStatement* _tmp516_ = NULL;
      ValaCCodeExpressionStatement* _tmp517_;
      ValaCCodeIdentifier* _tmp518_ = NULL;
      ValaCCodeIdentifier* _tmp519_;
      ValaCCodeFunctionCall* _tmp520_ = NULL;
      ValaCCodeFunctionCall* _tmp521_;
      ValaCCodeFunctionCall* value_from_any_call;
      ValaCCodeIdentifier* _tmp522_ = NULL;
      ValaCCodeIdentifier* _tmp523_;
      gchar* _tmp524_ = NULL;
      gchar* _tmp525_;
      gchar* _tmp526_ = NULL;
      gchar* _tmp527_;
      ValaCCodeIdentifier* _tmp528_ = NULL;
      ValaCCodeIdentifier* _tmp529_;
      ValaCCodeBlock* _tmp530_ = NULL;
      ValaCCodeExpressionStatement* _tmp531_ = NULL;
      ValaCCodeExpressionStatement* _tmp532_;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (st != NULL);
      VALA_CODE_VISITOR_CLASS (vala_dova_value_module_parent_class)->visit_struct ((ValaCodeVisitor*) VALA_DOVA_OBJECT_MODULE (self), st);
      _tmp0_ = vala_ccode_declaration_new ("intptr_t");
      _cdecl_ = _tmp0_;
      _tmp1_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp2_ = _tmp1_;
      _tmp3_ = g_strdup_printf ("_%s_object_offset", _tmp2_);
      _tmp4_ = _tmp3_;
      _tmp5_ = vala_ccode_constant_new ("0");
      _tmp6_ = _tmp5_;
      _tmp7_ = vala_ccode_variable_declarator_new (_tmp4_, (ValaCCodeExpression*) _tmp6_, NULL);
      _tmp8_ = _tmp7_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp8_);
      _vala_ccode_node_unref0 (_tmp8_);
      _vala_ccode_node_unref0 (_tmp6_);
      _g_free0 (_tmp4_);
      _g_free0 (_tmp2_);
      vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_file_add_type_member_declaration (((ValaDovaBaseModule*) self)->cfile, (ValaCCodeNode*) _cdecl_);
      _tmp9_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
      _tmp10_ = _tmp9_;
      _tmp11_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp12_ = _tmp11_;
      _tmp13_ = g_strdup_printf ("((%s *) (((char *) o) + _%s_object_offset))", _tmp10_, _tmp12_);
      _tmp14_ = _tmp13_;
      _g_free0 (_tmp12_);
      _g_free0 (_tmp10_);
      macro = _tmp14_;
      _tmp15_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) st, NULL);
      _tmp16_ = _tmp15_;
      _tmp17_ = g_strdup_printf ("%s_GET_PRIVATE(o)", _tmp16_);
      _tmp18_ = _tmp17_;
      _tmp19_ = vala_ccode_macro_replacement_new (_tmp18_, macro);
      _tmp20_ = _tmp19_;
      vala_ccode_file_add_type_member_declaration (((ValaDovaBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp20_);
      _vala_ccode_node_unref0 (_tmp20_);
      _g_free0 (_tmp18_);
      _g_free0 (_tmp16_);
      _tmp21_ = vala_ccode_declaration_new ("DovaType *");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp21_;
      _tmp22_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp23_ = _tmp22_;
      _tmp24_ = g_strdup_printf ("%s_type", _tmp23_);
      _tmp25_ = _tmp24_;
      _tmp26_ = vala_ccode_constant_new ("NULL");
      _tmp27_ = _tmp26_;
      _tmp28_ = vala_ccode_variable_declarator_new (_tmp25_, (ValaCCodeExpression*) _tmp27_, NULL);
      _tmp29_ = _tmp28_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp29_);
      _vala_ccode_node_unref0 (_tmp29_);
      _vala_ccode_node_unref0 (_tmp27_);
      _g_free0 (_tmp25_);
      _g_free0 (_tmp23_);
      vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_file_add_type_member_declaration (((ValaDovaBaseModule*) self)->cfile, (ValaCCodeNode*) _cdecl_);
      _tmp30_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp31_ = _tmp30_;
      _tmp32_ = g_strdup_printf ("%s_type_get", _tmp31_);
      _tmp33_ = _tmp32_;
      _tmp34_ = vala_ccode_function_new (_tmp33_, "DovaType *");
      _tmp35_ = _tmp34_;
      _g_free0 (_tmp33_);
      _g_free0 (_tmp31_);
      type_fun = _tmp35_;
      _tmp36_ = vala_ccode_block_new ();
      _tmp37_ = _tmp36_;
      vala_ccode_function_set_block (type_fun, _tmp37_);
      _vala_ccode_node_unref0 (_tmp37_);
      _tmp38_ = vala_ccode_block_new ();
      type_init_block = _tmp38_;
      _tmp39_ = vala_symbol_get_scope ((ValaSymbol*) ((ValaDovaBaseModule*) self)->object_class);
      _tmp40_ = vala_scope_lookup (_tmp39_, "alloc");
      _tmp41_ = VALA_METHOD (_tmp40_);
      vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp41_, ((ValaDovaBaseModule*) self)->cfile);
      _vala_code_node_unref0 (_tmp41_);
      _tmp42_ = vala_symbol_get_scope ((ValaSymbol*) ((ValaDovaBaseModule*) self)->type_class);
      _tmp43_ = vala_scope_lookup (_tmp42_, "base_type");
      _tmp44_ = VALA_PROPERTY (_tmp43_);
      _tmp45_ = vala_property_get_get_accessor (_tmp44_);
      vala_dova_base_module_generate_property_accessor_declaration ((ValaDovaBaseModule*) self, _tmp45_, ((ValaDovaBaseModule*) self)->cfile);
      _vala_code_node_unref0 (_tmp44_);
      _tmp46_ = vala_symbol_get_scope ((ValaSymbol*) ((ValaDovaBaseModule*) self)->type_class);
      _tmp47_ = vala_scope_lookup (_tmp46_, "base_type");
      _tmp48_ = VALA_PROPERTY (_tmp47_);
      _tmp49_ = vala_property_get_set_accessor (_tmp48_);
      vala_dova_base_module_generate_property_accessor_declaration ((ValaDovaBaseModule*) self, _tmp49_, ((ValaDovaBaseModule*) self)->cfile);
      _vala_code_node_unref0 (_tmp48_);
      _tmp50_ = vala_symbol_get_scope ((ValaSymbol*) ((ValaDovaBaseModule*) self)->type_class);
      _tmp51_ = vala_scope_lookup (_tmp50_, "object_size");
      _tmp52_ = VALA_PROPERTY (_tmp51_);
      _tmp53_ = vala_property_get_get_accessor (_tmp52_);
      vala_dova_base_module_generate_property_accessor_declaration ((ValaDovaBaseModule*) self, _tmp53_, ((ValaDovaBaseModule*) self)->cfile);
      _vala_code_node_unref0 (_tmp52_);
      _tmp54_ = vala_symbol_get_scope ((ValaSymbol*) ((ValaDovaBaseModule*) self)->type_class);
      _tmp55_ = vala_scope_lookup (_tmp54_, "object_size");
      _tmp56_ = VALA_PROPERTY (_tmp55_);
      _tmp57_ = vala_property_get_set_accessor (_tmp56_);
      vala_dova_base_module_generate_property_accessor_declaration ((ValaDovaBaseModule*) self, _tmp57_, ((ValaDovaBaseModule*) self)->cfile);
      _vala_code_node_unref0 (_tmp56_);
      _tmp58_ = vala_symbol_get_scope ((ValaSymbol*) ((ValaDovaBaseModule*) self)->type_class);
      _tmp59_ = vala_scope_lookup (_tmp58_, "type_size");
      _tmp60_ = VALA_PROPERTY (_tmp59_);
      _tmp61_ = vala_property_get_get_accessor (_tmp60_);
      vala_dova_base_module_generate_property_accessor_declaration ((ValaDovaBaseModule*) self, _tmp61_, ((ValaDovaBaseModule*) self)->cfile);
      _vala_code_node_unref0 (_tmp60_);
      _tmp62_ = vala_symbol_get_scope ((ValaSymbol*) ((ValaDovaBaseModule*) self)->type_class);
      _tmp63_ = vala_scope_lookup (_tmp62_, "type_size");
      _tmp64_ = VALA_PROPERTY (_tmp63_);
      _tmp65_ = vala_property_get_set_accessor (_tmp64_);
      vala_dova_base_module_generate_property_accessor_declaration ((ValaDovaBaseModule*) self, _tmp65_, ((ValaDovaBaseModule*) self)->cfile);
      _vala_code_node_unref0 (_tmp64_);
      _tmp66_ = vala_symbol_get_scope ((ValaSymbol*) ((ValaDovaBaseModule*) self)->type_class);
      _tmp67_ = vala_scope_lookup (_tmp66_, "value_size");
      _tmp68_ = VALA_PROPERTY (_tmp67_);
      _tmp69_ = vala_property_get_set_accessor (_tmp68_);
      vala_dova_base_module_generate_property_accessor_declaration ((ValaDovaBaseModule*) self, _tmp69_, ((ValaDovaBaseModule*) self)->cfile);
      _vala_code_node_unref0 (_tmp68_);
      _tmp70_ = vala_dova_base_module_get_context ((ValaDovaBaseModule*) self);
      _tmp71_ = vala_code_context_get_root (_tmp70_);
      _tmp72_ = vala_symbol_get_scope ((ValaSymbol*) _tmp71_);
      _tmp73_ = vala_scope_lookup (_tmp72_, "Dova");
      _tmp74_ = _tmp73_;
      _tmp75_ = vala_symbol_get_scope (_tmp74_);
      _tmp76_ = vala_scope_lookup (_tmp75_, "Value");
      _tmp77_ = VALA_CLASS (_tmp76_);
      vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, _tmp77_, ((ValaDovaBaseModule*) self)->cfile);
      _vala_code_node_unref0 (_tmp77_);
      _vala_code_node_unref0 (_tmp74_);
      _tmp78_ = vala_ccode_identifier_new ("dova_value_type_get");
      _tmp79_ = _tmp78_;
      _tmp80_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp79_);
      _tmp81_ = _tmp80_;
      _vala_ccode_node_unref0 (_tmp79_);
      base_type = _tmp81_;
      _tmp82_ = vala_ccode_identifier_new ("dova_type_get_type_size");
      _tmp83_ = _tmp82_;
      _tmp84_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp83_);
      _tmp85_ = _tmp84_;
      _vala_ccode_node_unref0 (_tmp83_);
      base_type_size = _tmp85_;
      vala_ccode_function_call_add_argument (base_type_size, (ValaCCodeExpression*) base_type);
      _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_ = vala_ccode_constant_new ("1");
      _tmp91_ = _tmp90_;
      vala_ccode_function_call_add_argument (calloc_call, (ValaCCodeExpression*) _tmp91_);
      _vala_ccode_node_unref0 (_tmp91_);
      vala_ccode_function_call_add_argument (calloc_call, (ValaCCodeExpression*) base_type_size);
      _tmp92_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp93_ = _tmp92_;
      _tmp94_ = g_strdup_printf ("%s_type", _tmp93_);
      _tmp95_ = _tmp94_;
      _tmp96_ = vala_ccode_identifier_new (_tmp95_);
      _tmp97_ = _tmp96_;
      _tmp98_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp97_, (ValaCCodeExpression*) calloc_call, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp99_ = _tmp98_;
      _tmp100_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp99_);
      _tmp101_ = _tmp100_;
      vala_ccode_block_add_statement (type_init_block, (ValaCCodeNode*) _tmp101_);
      _vala_ccode_node_unref0 (_tmp101_);
      _vala_ccode_node_unref0 (_tmp99_);
      _vala_ccode_node_unref0 (_tmp97_);
      _g_free0 (_tmp95_);
      _g_free0 (_tmp93_);
      vala_dova_base_module_generate_class_declaration ((ValaDovaBaseModule*) self, VALA_CLASS (((ValaDovaBaseModule*) self)->object_class), ((ValaDovaBaseModule*) self)->cfile);
      _tmp102_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp103_ = _tmp102_;
      _tmp104_ = g_strdup_printf ("%s_type", _tmp103_);
      _tmp105_ = _tmp104_;
      _tmp106_ = vala_ccode_identifier_new (_tmp105_);
      _tmp107_ = _tmp106_;
      _tmp108_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp107_, "DovaObject *");
      _tmp109_ = _tmp108_;
      _tmp110_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp109_, "type");
      _tmp111_ = _tmp110_;
      _tmp112_ = vala_ccode_identifier_new ("dova_type_type_get");
      _tmp113_ = _tmp112_;
      _tmp114_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp113_);
      _tmp115_ = _tmp114_;
      _tmp116_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp111_, (ValaCCodeExpression*) _tmp115_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp117_ = _tmp116_;
      _tmp118_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp117_);
      _tmp119_ = _tmp118_;
      vala_ccode_block_add_statement (type_init_block, (ValaCCodeNode*) _tmp119_);
      _vala_ccode_node_unref0 (_tmp119_);
      _vala_ccode_node_unref0 (_tmp117_);
      _vala_ccode_node_unref0 (_tmp115_);
      _vala_ccode_node_unref0 (_tmp113_);
      _vala_ccode_node_unref0 (_tmp111_);
      _vala_ccode_node_unref0 (_tmp109_);
      _vala_ccode_node_unref0 (_tmp107_);
      _g_free0 (_tmp105_);
      _g_free0 (_tmp103_);
      _tmp120_ = vala_ccode_identifier_new ("dova_type_set_base_type");
      _tmp121_ = _tmp120_;
      _tmp122_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp121_);
      _tmp123_ = _tmp122_;
      _vala_ccode_node_unref0 (_tmp121_);
      set_base_type = _tmp123_;
      _tmp124_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _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 (set_base_type, (ValaCCodeExpression*) _tmp129_);
      _vala_ccode_node_unref0 (_tmp129_);
      _g_free0 (_tmp127_);
      _g_free0 (_tmp125_);
      vala_ccode_function_call_add_argument (set_base_type, (ValaCCodeExpression*) base_type);
      _tmp130_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) set_base_type);
      _tmp131_ = _tmp130_;
      vala_ccode_block_add_statement (type_init_block, (ValaCCodeNode*) _tmp131_);
      _vala_ccode_node_unref0 (_tmp131_);
      _tmp132_ = vala_ccode_identifier_new ("dova_type_get_object_size");
      _tmp133_ = _tmp132_;
      _tmp134_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp133_);
      _tmp135_ = _tmp134_;
      _vala_ccode_node_unref0 (_tmp133_);
      base_size = _tmp135_;
      vala_ccode_function_call_add_argument (base_size, (ValaCCodeExpression*) base_type);
      _tmp136_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp137_ = _tmp136_;
      _tmp138_ = g_strdup_printf ("_%s_object_offset", _tmp137_);
      _tmp139_ = _tmp138_;
      _tmp140_ = vala_ccode_identifier_new (_tmp139_);
      _tmp141_ = _tmp140_;
      _tmp142_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp141_, (ValaCCodeExpression*) base_size, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp143_ = _tmp142_;
      _tmp144_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp143_);
      _tmp145_ = _tmp144_;
      vala_ccode_block_add_statement (type_init_block, (ValaCCodeNode*) _tmp145_);
      _vala_ccode_node_unref0 (_tmp145_);
      _vala_ccode_node_unref0 (_tmp143_);
      _vala_ccode_node_unref0 (_tmp141_);
      _g_free0 (_tmp139_);
      _g_free0 (_tmp137_);
      _tmp146_ = vala_ccode_identifier_new ("sizeof");
      _tmp147_ = _tmp146_;
      _tmp148_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp147_);
      _tmp149_ = _tmp148_;
      _vala_ccode_node_unref0 (_tmp147_);
      sizeof_call = _tmp149_;
      _tmp150_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
      _tmp151_ = _tmp150_;
      _tmp152_ = vala_ccode_identifier_new (_tmp151_);
      _tmp153_ = _tmp152_;
      vala_ccode_function_call_add_argument (sizeof_call, (ValaCCodeExpression*) _tmp153_);
      _vala_ccode_node_unref0 (_tmp153_);
      _g_free0 (_tmp151_);
      _tmp154_ = vala_ccode_identifier_new ("dova_type_set_object_size");
      _tmp155_ = _tmp154_;
      _tmp156_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp155_);
      _tmp157_ = _tmp156_;
      _vala_ccode_node_unref0 (_tmp155_);
      set_size = _tmp157_;
      _tmp158_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp159_ = _tmp158_;
      _tmp160_ = g_strdup_printf ("%s_type", _tmp159_);
      _tmp161_ = _tmp160_;
      _tmp162_ = vala_ccode_identifier_new (_tmp161_);
      _tmp163_ = _tmp162_;
      vala_ccode_function_call_add_argument (set_size, (ValaCCodeExpression*) _tmp163_);
      _vala_ccode_node_unref0 (_tmp163_);
      _g_free0 (_tmp161_);
      _g_free0 (_tmp159_);
      _tmp164_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) base_size, (ValaCCodeExpression*) sizeof_call);
      _tmp165_ = _tmp164_;
      vala_ccode_function_call_add_argument (set_size, (ValaCCodeExpression*) _tmp165_);
      _vala_ccode_node_unref0 (_tmp165_);
      _tmp166_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) set_size);
      _tmp167_ = _tmp166_;
      vala_ccode_block_add_statement (type_init_block, (ValaCCodeNode*) _tmp167_);
      _vala_ccode_node_unref0 (_tmp167_);
      _tmp168_ = vala_ccode_identifier_new ("dova_type_set_value_size");
      _tmp169_ = _tmp168_;
      _tmp170_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp169_);
      _vala_ccode_node_unref0 (set_size);
      set_size = _tmp170_;
      _vala_ccode_node_unref0 (_tmp169_);
      _tmp171_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp172_ = _tmp171_;
      _tmp173_ = g_strdup_printf ("%s_type", _tmp172_);
      _tmp174_ = _tmp173_;
      _tmp175_ = vala_ccode_identifier_new (_tmp174_);
      _tmp176_ = _tmp175_;
      vala_ccode_function_call_add_argument (set_size, (ValaCCodeExpression*) _tmp176_);
      _vala_ccode_node_unref0 (_tmp176_);
      _g_free0 (_tmp174_);
      _g_free0 (_tmp172_);
      vala_ccode_function_call_add_argument (set_size, (ValaCCodeExpression*) sizeof_call);
      _tmp177_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) set_size);
      _tmp178_ = _tmp177_;
      vala_ccode_block_add_statement (type_init_block, (ValaCCodeNode*) _tmp178_);
      _vala_ccode_node_unref0 (_tmp178_);
      _tmp179_ = vala_ccode_identifier_new ("dova_type_set_type_size");
      _tmp180_ = _tmp179_;
      _tmp181_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp180_);
      _vala_ccode_node_unref0 (set_size);
      set_size = _tmp181_;
      _vala_ccode_node_unref0 (_tmp180_);
      _tmp182_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _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 (set_size, (ValaCCodeExpression*) _tmp187_);
      _vala_ccode_node_unref0 (_tmp187_);
      _g_free0 (_tmp185_);
      _g_free0 (_tmp183_);
      vala_ccode_function_call_add_argument (set_size, (ValaCCodeExpression*) base_type_size);
      _tmp188_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) set_size);
      _tmp189_ = _tmp188_;
      vala_ccode_block_add_statement (type_init_block, (ValaCCodeNode*) _tmp189_);
      _vala_ccode_node_unref0 (_tmp189_);
      _tmp190_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp191_ = _tmp190_;
      _tmp192_ = g_strdup_printf ("%s_type_init", _tmp191_);
      _tmp193_ = _tmp192_;
      _tmp194_ = vala_ccode_identifier_new (_tmp193_);
      _tmp195_ = _tmp194_;
      _tmp196_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp195_);
      _tmp197_ = _tmp196_;
      _vala_ccode_node_unref0 (_tmp195_);
      _g_free0 (_tmp193_);
      _g_free0 (_tmp191_);
      type_init_call = _tmp197_;
      _tmp198_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp199_ = _tmp198_;
      _tmp200_ = g_strdup_printf ("%s_type", _tmp199_);
      _tmp201_ = _tmp200_;
      _tmp202_ = vala_ccode_identifier_new (_tmp201_);
      _tmp203_ = _tmp202_;
      vala_ccode_function_call_add_argument (type_init_call, (ValaCCodeExpression*) _tmp203_);
      _vala_ccode_node_unref0 (_tmp203_);
      _g_free0 (_tmp201_);
      _g_free0 (_tmp199_);
      _tmp204_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) type_init_call);
      _tmp205_ = _tmp204_;
      vala_ccode_block_add_statement (type_init_block, (ValaCCodeNode*) _tmp205_);
      _vala_ccode_node_unref0 (_tmp205_);
      _tmp206_ = vala_ccode_identifier_new ("dova_type_set_value_size");
      _tmp207_ = _tmp206_;
      _tmp208_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp207_);
      _vala_ccode_node_unref0 (set_size);
      set_size = _tmp208_;
      _vala_ccode_node_unref0 (_tmp207_);
      _tmp209_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp210_ = _tmp209_;
      _tmp211_ = g_strdup_printf ("%s_type", _tmp210_);
      _tmp212_ = _tmp211_;
      _tmp213_ = vala_ccode_identifier_new (_tmp212_);
      _tmp214_ = _tmp213_;
      vala_ccode_function_call_add_argument (set_size, (ValaCCodeExpression*) _tmp214_);
      _vala_ccode_node_unref0 (_tmp214_);
      _g_free0 (_tmp212_);
      _g_free0 (_tmp210_);
      vala_ccode_function_call_add_argument (set_size, (ValaCCodeExpression*) sizeof_call);
      _tmp215_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) set_size);
      _tmp216_ = _tmp215_;
      vala_ccode_block_add_statement (type_init_block, (ValaCCodeNode*) _tmp216_);
      _vala_ccode_node_unref0 (_tmp216_);
      _tmp217_ = vala_ccode_function_get_block (type_fun);
      _tmp218_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp219_ = _tmp218_;
      _tmp220_ = g_strdup_printf ("%s_type", _tmp219_);
      _tmp221_ = _tmp220_;
      _tmp222_ = vala_ccode_identifier_new (_tmp221_);
      _tmp223_ = _tmp222_;
      _tmp224_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp223_);
      _tmp225_ = _tmp224_;
      _tmp226_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp225_, (ValaCCodeStatement*) type_init_block, NULL);
      _tmp227_ = _tmp226_;
      vala_ccode_block_add_statement (_tmp217_, (ValaCCodeNode*) _tmp227_);
      _vala_ccode_node_unref0 (_tmp227_);
      _vala_ccode_node_unref0 (_tmp225_);
      _vala_ccode_node_unref0 (_tmp223_);
      _g_free0 (_tmp221_);
      _g_free0 (_tmp219_);
      _tmp228_ = vala_ccode_function_get_block (type_fun);
      _tmp229_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp230_ = _tmp229_;
      _tmp231_ = g_strdup_printf ("%s_type", _tmp230_);
      _tmp232_ = _tmp231_;
      _tmp233_ = vala_ccode_identifier_new (_tmp232_);
      _tmp234_ = _tmp233_;
      _tmp235_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp234_);
      _tmp236_ = _tmp235_;
      vala_ccode_block_add_statement (_tmp228_, (ValaCCodeNode*) _tmp236_);
      _vala_ccode_node_unref0 (_tmp236_);
      _vala_ccode_node_unref0 (_tmp234_);
      _g_free0 (_tmp232_);
      _g_free0 (_tmp230_);
      vala_ccode_file_add_function (((ValaDovaBaseModule*) self)->cfile, type_fun);
      _tmp237_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp238_ = _tmp237_;
      _tmp239_ = g_strdup_printf ("%s_type_init", _tmp238_);
      _tmp240_ = _tmp239_;
      _tmp241_ = vala_ccode_function_new (_tmp240_, "void");
      _tmp242_ = _tmp241_;
      _g_free0 (_tmp240_);
      _g_free0 (_tmp238_);
      type_init_fun = _tmp242_;
      _tmp243_ = vala_ccode_parameter_new ("type", "DovaType *");
      _tmp244_ = _tmp243_;
      vala_ccode_function_add_parameter (type_init_fun, _tmp244_);
      _vala_ccode_node_unref0 (_tmp244_);
      _tmp245_ = vala_ccode_block_new ();
      _tmp246_ = _tmp245_;
      vala_ccode_function_set_block (type_init_fun, _tmp246_);
      _vala_ccode_node_unref0 (_tmp246_);
      _tmp247_ = vala_ccode_identifier_new ("dova_value_type_init");
      _tmp248_ = _tmp247_;
      _tmp249_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp248_);
      _vala_ccode_node_unref0 (type_init_call);
      type_init_call = _tmp249_;
      _vala_ccode_node_unref0 (_tmp248_);
      _tmp250_ = vala_ccode_identifier_new ("type");
      _tmp251_ = _tmp250_;
      vala_ccode_function_call_add_argument (type_init_call, (ValaCCodeExpression*) _tmp251_);
      _vala_ccode_node_unref0 (_tmp251_);
      _tmp252_ = vala_ccode_function_get_block (type_init_fun);
      _tmp253_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) type_init_call);
      _tmp254_ = _tmp253_;
      vala_ccode_block_add_statement (_tmp252_, (ValaCCodeNode*) _tmp254_);
      _vala_ccode_node_unref0 (_tmp254_);
      vala_dova_object_module_declare_set_value_copy_function ((ValaDovaObjectModule*) self, ((ValaDovaBaseModule*) self)->cfile);
      _tmp255_ = vala_ccode_identifier_new ("dova_type_set_value_copy");
      _tmp256_ = _tmp255_;
      _tmp257_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp256_);
      _tmp258_ = _tmp257_;
      _vala_ccode_node_unref0 (_tmp256_);
      value_copy_call = _tmp258_;
      _tmp259_ = vala_ccode_identifier_new ("type");
      _tmp260_ = _tmp259_;
      vala_ccode_function_call_add_argument (value_copy_call, (ValaCCodeExpression*) _tmp260_);
      _vala_ccode_node_unref0 (_tmp260_);
      _tmp261_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp262_ = _tmp261_;
      _tmp263_ = g_strdup_printf ("%s_copy", _tmp262_);
      _tmp264_ = _tmp263_;
      _tmp265_ = vala_ccode_identifier_new (_tmp264_);
      _tmp266_ = _tmp265_;
      _tmp267_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp266_, "void (*)(void *, intptr_t,  void *, intptr_t)");
      _tmp268_ = _tmp267_;
      vala_ccode_function_call_add_argument (value_copy_call, (ValaCCodeExpression*) _tmp268_);
      _vala_ccode_node_unref0 (_tmp268_);
      _vala_ccode_node_unref0 (_tmp266_);
      _g_free0 (_tmp264_);
      _g_free0 (_tmp262_);
      _tmp269_ = vala_ccode_function_get_block (type_init_fun);
      _tmp270_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) value_copy_call);
      _tmp271_ = _tmp270_;
      vala_ccode_block_add_statement (_tmp269_, (ValaCCodeNode*) _tmp271_);
      _vala_ccode_node_unref0 (_tmp271_);
      _tmp272_ = vala_symbol_get_scope ((ValaSymbol*) st);
      _tmp273_ = vala_scope_lookup (_tmp272_, "equals");
      _tmp274_ = _tmp273_;
      _tmp275_ = VALA_IS_METHOD (_tmp274_);
      _vala_code_node_unref0 (_tmp274_);
      if (_tmp275_) {
            gchar* _tmp276_ = NULL;
            gchar* _tmp277_;
            gchar* _tmp278_ = NULL;
            gchar* _tmp279_;
            ValaCCodeFunction* _tmp280_ = NULL;
            ValaCCodeFunction* _tmp281_;
            ValaCCodeFunction* value_equals_fun;
            gchar* _tmp282_ = NULL;
            gchar* _tmp283_;
            gchar* _tmp284_;
            gchar* _tmp285_;
            ValaCCodeParameter* _tmp286_ = NULL;
            ValaCCodeParameter* _tmp287_;
            ValaCCodeParameter* _tmp288_ = NULL;
            ValaCCodeParameter* _tmp289_;
            gchar* _tmp290_ = NULL;
            gchar* _tmp291_;
            gchar* _tmp292_;
            gchar* _tmp293_;
            ValaCCodeParameter* _tmp294_ = NULL;
            ValaCCodeParameter* _tmp295_;
            ValaCCodeParameter* _tmp296_ = NULL;
            ValaCCodeParameter* _tmp297_;
            ValaCCodeBlock* _tmp298_ = NULL;
            ValaCCodeBlock* _tmp299_;
            ValaCCodeIdentifier* _tmp300_ = NULL;
            ValaCCodeIdentifier* _tmp301_;
            ValaCCodeIdentifier* _tmp302_ = NULL;
            ValaCCodeIdentifier* _tmp303_;
            ValaCCodeBinaryExpression* _tmp304_ = NULL;
            ValaCCodeBinaryExpression* _tmp305_;
            ValaCCodeBinaryExpression* val;
            ValaCCodeIdentifier* _tmp306_ = NULL;
            ValaCCodeIdentifier* _tmp307_;
            ValaCCodeIdentifier* _tmp308_ = NULL;
            ValaCCodeIdentifier* _tmp309_;
            ValaCCodeBinaryExpression* _tmp310_ = NULL;
            ValaCCodeBinaryExpression* _tmp311_;
            ValaCCodeBinaryExpression* other;
            gchar* _tmp312_ = NULL;
            gchar* _tmp313_;
            gchar* _tmp314_ = NULL;
            gchar* _tmp315_;
            ValaCCodeIdentifier* _tmp316_ = NULL;
            ValaCCodeIdentifier* _tmp317_;
            ValaCCodeFunctionCall* _tmp318_ = NULL;
            ValaCCodeFunctionCall* _tmp319_;
            ValaCCodeFunctionCall* ccall;
            ValaCCodeUnaryExpression* _tmp320_ = NULL;
            ValaCCodeUnaryExpression* _tmp321_;
            ValaCCodeUnaryExpression* _tmp322_ = NULL;
            ValaCCodeUnaryExpression* _tmp323_;
            ValaCCodeBlock* _tmp324_ = NULL;
            ValaCCodeReturnStatement* _tmp325_ = NULL;
            ValaCCodeReturnStatement* _tmp326_;
            ValaCCodeIdentifier* _tmp327_ = NULL;
            ValaCCodeIdentifier* _tmp328_;
            ValaCCodeFunctionCall* _tmp329_ = NULL;
            ValaCCodeFunctionCall* _tmp330_;
            ValaCCodeFunctionCall* value_equals_call;
            ValaCCodeIdentifier* _tmp331_ = NULL;
            ValaCCodeIdentifier* _tmp332_;
            gchar* _tmp333_ = NULL;
            gchar* _tmp334_;
            gchar* _tmp335_ = NULL;
            gchar* _tmp336_;
            ValaCCodeIdentifier* _tmp337_ = NULL;
            ValaCCodeIdentifier* _tmp338_;
            ValaCCodeCastExpression* _tmp339_ = NULL;
            ValaCCodeCastExpression* _tmp340_;
            ValaCCodeBlock* _tmp341_ = NULL;
            ValaCCodeExpressionStatement* _tmp342_ = NULL;
            ValaCCodeExpressionStatement* _tmp343_;
            _tmp276_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
            _tmp277_ = _tmp276_;
            _tmp278_ = g_strdup_printf ("%s_value_equals", _tmp277_);
            _tmp279_ = _tmp278_;
            _tmp280_ = vala_ccode_function_new (_tmp279_, "bool");
            _tmp281_ = _tmp280_;
            _g_free0 (_tmp279_);
            _g_free0 (_tmp277_);
            value_equals_fun = _tmp281_;
            vala_ccode_function_set_modifiers (value_equals_fun, VALA_CCODE_MODIFIERS_STATIC);
            _tmp282_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
            _tmp283_ = _tmp282_;
            _tmp284_ = g_strconcat (_tmp283_, "*", NULL);
            _tmp285_ = _tmp284_;
            _tmp286_ = vala_ccode_parameter_new ("value", _tmp285_);
            _tmp287_ = _tmp286_;
            vala_ccode_function_add_parameter (value_equals_fun, _tmp287_);
            _vala_ccode_node_unref0 (_tmp287_);
            _g_free0 (_tmp285_);
            _g_free0 (_tmp283_);
            _tmp288_ = vala_ccode_parameter_new ("value_index", "intptr_t");
            _tmp289_ = _tmp288_;
            vala_ccode_function_add_parameter (value_equals_fun, _tmp289_);
            _vala_ccode_node_unref0 (_tmp289_);
            _tmp290_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
            _tmp291_ = _tmp290_;
            _tmp292_ = g_strconcat (_tmp291_, "*", NULL);
            _tmp293_ = _tmp292_;
            _tmp294_ = vala_ccode_parameter_new ("other", _tmp293_);
            _tmp295_ = _tmp294_;
            vala_ccode_function_add_parameter (value_equals_fun, _tmp295_);
            _vala_ccode_node_unref0 (_tmp295_);
            _g_free0 (_tmp293_);
            _g_free0 (_tmp291_);
            _tmp296_ = vala_ccode_parameter_new ("other_index", "intptr_t");
            _tmp297_ = _tmp296_;
            vala_ccode_function_add_parameter (value_equals_fun, _tmp297_);
            _vala_ccode_node_unref0 (_tmp297_);
            _tmp298_ = vala_ccode_block_new ();
            _tmp299_ = _tmp298_;
            vala_ccode_function_set_block (value_equals_fun, _tmp299_);
            _vala_ccode_node_unref0 (_tmp299_);
            _tmp300_ = vala_ccode_identifier_new ("value");
            _tmp301_ = _tmp300_;
            _tmp302_ = vala_ccode_identifier_new ("value_index");
            _tmp303_ = _tmp302_;
            _tmp304_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp301_, (ValaCCodeExpression*) _tmp303_);
            _tmp305_ = _tmp304_;
            _vala_ccode_node_unref0 (_tmp303_);
            _vala_ccode_node_unref0 (_tmp301_);
            val = _tmp305_;
            _tmp306_ = vala_ccode_identifier_new ("other");
            _tmp307_ = _tmp306_;
            _tmp308_ = vala_ccode_identifier_new ("other_index");
            _tmp309_ = _tmp308_;
            _tmp310_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp307_, (ValaCCodeExpression*) _tmp309_);
            _tmp311_ = _tmp310_;
            _vala_ccode_node_unref0 (_tmp309_);
            _vala_ccode_node_unref0 (_tmp307_);
            other = _tmp311_;
            _tmp312_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
            _tmp313_ = _tmp312_;
            _tmp314_ = g_strdup_printf ("%s_equals", _tmp313_);
            _tmp315_ = _tmp314_;
            _tmp316_ = vala_ccode_identifier_new (_tmp315_);
            _tmp317_ = _tmp316_;
            _tmp318_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp317_);
            _tmp319_ = _tmp318_;
            _vala_ccode_node_unref0 (_tmp317_);
            _g_free0 (_tmp315_);
            _g_free0 (_tmp313_);
            ccall = _tmp319_;
            _tmp320_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) val);
            _tmp321_ = _tmp320_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp321_);
            _vala_ccode_node_unref0 (_tmp321_);
            _tmp322_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) other);
            _tmp323_ = _tmp322_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp323_);
            _vala_ccode_node_unref0 (_tmp323_);
            _tmp324_ = vala_ccode_function_get_block (value_equals_fun);
            _tmp325_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) ccall);
            _tmp326_ = _tmp325_;
            vala_ccode_block_add_statement (_tmp324_, (ValaCCodeNode*) _tmp326_);
            _vala_ccode_node_unref0 (_tmp326_);
            vala_ccode_file_add_function (((ValaDovaBaseModule*) self)->cfile, value_equals_fun);
            vala_dova_object_module_declare_set_value_equals_function ((ValaDovaObjectModule*) self, ((ValaDovaBaseModule*) self)->cfile);
            _tmp327_ = vala_ccode_identifier_new ("dova_type_set_value_equals");
            _tmp328_ = _tmp327_;
            _tmp329_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp328_);
            _tmp330_ = _tmp329_;
            _vala_ccode_node_unref0 (_tmp328_);
            value_equals_call = _tmp330_;
            _tmp331_ = vala_ccode_identifier_new ("type");
            _tmp332_ = _tmp331_;
            vala_ccode_function_call_add_argument (value_equals_call, (ValaCCodeExpression*) _tmp332_);
            _vala_ccode_node_unref0 (_tmp332_);
            _tmp333_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
            _tmp334_ = _tmp333_;
            _tmp335_ = g_strdup_printf ("%s_value_equals", _tmp334_);
            _tmp336_ = _tmp335_;
            _tmp337_ = vala_ccode_identifier_new (_tmp336_);
            _tmp338_ = _tmp337_;
            _tmp339_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp338_, "bool (*)(void *, intptr_t,  void *, intptr_t)");
            _tmp340_ = _tmp339_;
            vala_ccode_function_call_add_argument (value_equals_call, (ValaCCodeExpression*) _tmp340_);
            _vala_ccode_node_unref0 (_tmp340_);
            _vala_ccode_node_unref0 (_tmp338_);
            _g_free0 (_tmp336_);
            _g_free0 (_tmp334_);
            _tmp341_ = vala_ccode_function_get_block (type_init_fun);
            _tmp342_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) value_equals_call);
            _tmp343_ = _tmp342_;
            vala_ccode_block_add_statement (_tmp341_, (ValaCCodeNode*) _tmp343_);
            _vala_ccode_node_unref0 (_tmp343_);
            _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);
      }
      _tmp344_ = vala_symbol_get_scope ((ValaSymbol*) st);
      _tmp345_ = vala_scope_lookup (_tmp344_, "hash");
      _tmp346_ = _tmp345_;
      _tmp347_ = VALA_IS_METHOD (_tmp346_);
      _vala_code_node_unref0 (_tmp346_);
      if (_tmp347_) {
            gchar* _tmp348_ = NULL;
            gchar* _tmp349_;
            gchar* _tmp350_ = NULL;
            gchar* _tmp351_;
            ValaCCodeFunction* _tmp352_ = NULL;
            ValaCCodeFunction* _tmp353_;
            ValaCCodeFunction* value_hash_fun;
            gchar* _tmp354_ = NULL;
            gchar* _tmp355_;
            gchar* _tmp356_;
            gchar* _tmp357_;
            ValaCCodeParameter* _tmp358_ = NULL;
            ValaCCodeParameter* _tmp359_;
            ValaCCodeParameter* _tmp360_ = NULL;
            ValaCCodeParameter* _tmp361_;
            ValaCCodeBlock* _tmp362_ = NULL;
            ValaCCodeBlock* _tmp363_;
            ValaCCodeIdentifier* _tmp364_ = NULL;
            ValaCCodeIdentifier* _tmp365_;
            ValaCCodeIdentifier* _tmp366_ = NULL;
            ValaCCodeIdentifier* _tmp367_;
            ValaCCodeBinaryExpression* _tmp368_ = NULL;
            ValaCCodeBinaryExpression* _tmp369_;
            ValaCCodeBinaryExpression* val;
            gchar* _tmp370_ = NULL;
            gchar* _tmp371_;
            gchar* _tmp372_ = NULL;
            gchar* _tmp373_;
            ValaCCodeIdentifier* _tmp374_ = NULL;
            ValaCCodeIdentifier* _tmp375_;
            ValaCCodeFunctionCall* _tmp376_ = NULL;
            ValaCCodeFunctionCall* _tmp377_;
            ValaCCodeFunctionCall* ccall;
            ValaCCodeUnaryExpression* _tmp378_ = NULL;
            ValaCCodeUnaryExpression* _tmp379_;
            ValaCCodeBlock* _tmp380_ = NULL;
            ValaCCodeReturnStatement* _tmp381_ = NULL;
            ValaCCodeReturnStatement* _tmp382_;
            ValaCCodeIdentifier* _tmp383_ = NULL;
            ValaCCodeIdentifier* _tmp384_;
            ValaCCodeFunctionCall* _tmp385_ = NULL;
            ValaCCodeFunctionCall* _tmp386_;
            ValaCCodeFunctionCall* value_hash_call;
            ValaCCodeIdentifier* _tmp387_ = NULL;
            ValaCCodeIdentifier* _tmp388_;
            gchar* _tmp389_ = NULL;
            gchar* _tmp390_;
            gchar* _tmp391_ = NULL;
            gchar* _tmp392_;
            ValaCCodeIdentifier* _tmp393_ = NULL;
            ValaCCodeIdentifier* _tmp394_;
            ValaCCodeCastExpression* _tmp395_ = NULL;
            ValaCCodeCastExpression* _tmp396_;
            ValaCCodeBlock* _tmp397_ = NULL;
            ValaCCodeExpressionStatement* _tmp398_ = NULL;
            ValaCCodeExpressionStatement* _tmp399_;
            _tmp348_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
            _tmp349_ = _tmp348_;
            _tmp350_ = g_strdup_printf ("%s_value_hash", _tmp349_);
            _tmp351_ = _tmp350_;
            _tmp352_ = vala_ccode_function_new (_tmp351_, "uintptr_t");
            _tmp353_ = _tmp352_;
            _g_free0 (_tmp351_);
            _g_free0 (_tmp349_);
            value_hash_fun = _tmp353_;
            vala_ccode_function_set_modifiers (value_hash_fun, VALA_CCODE_MODIFIERS_STATIC);
            _tmp354_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
            _tmp355_ = _tmp354_;
            _tmp356_ = g_strconcat (_tmp355_, "*", NULL);
            _tmp357_ = _tmp356_;
            _tmp358_ = vala_ccode_parameter_new ("value", _tmp357_);
            _tmp359_ = _tmp358_;
            vala_ccode_function_add_parameter (value_hash_fun, _tmp359_);
            _vala_ccode_node_unref0 (_tmp359_);
            _g_free0 (_tmp357_);
            _g_free0 (_tmp355_);
            _tmp360_ = vala_ccode_parameter_new ("value_index", "intptr_t");
            _tmp361_ = _tmp360_;
            vala_ccode_function_add_parameter (value_hash_fun, _tmp361_);
            _vala_ccode_node_unref0 (_tmp361_);
            _tmp362_ = vala_ccode_block_new ();
            _tmp363_ = _tmp362_;
            vala_ccode_function_set_block (value_hash_fun, _tmp363_);
            _vala_ccode_node_unref0 (_tmp363_);
            _tmp364_ = vala_ccode_identifier_new ("value");
            _tmp365_ = _tmp364_;
            _tmp366_ = vala_ccode_identifier_new ("value_index");
            _tmp367_ = _tmp366_;
            _tmp368_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp365_, (ValaCCodeExpression*) _tmp367_);
            _tmp369_ = _tmp368_;
            _vala_ccode_node_unref0 (_tmp367_);
            _vala_ccode_node_unref0 (_tmp365_);
            val = _tmp369_;
            _tmp370_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
            _tmp371_ = _tmp370_;
            _tmp372_ = g_strdup_printf ("%s_hash", _tmp371_);
            _tmp373_ = _tmp372_;
            _tmp374_ = vala_ccode_identifier_new (_tmp373_);
            _tmp375_ = _tmp374_;
            _tmp376_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp375_);
            _tmp377_ = _tmp376_;
            _vala_ccode_node_unref0 (_tmp375_);
            _g_free0 (_tmp373_);
            _g_free0 (_tmp371_);
            ccall = _tmp377_;
            _tmp378_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) val);
            _tmp379_ = _tmp378_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp379_);
            _vala_ccode_node_unref0 (_tmp379_);
            _tmp380_ = vala_ccode_function_get_block (value_hash_fun);
            _tmp381_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) ccall);
            _tmp382_ = _tmp381_;
            vala_ccode_block_add_statement (_tmp380_, (ValaCCodeNode*) _tmp382_);
            _vala_ccode_node_unref0 (_tmp382_);
            vala_ccode_file_add_function (((ValaDovaBaseModule*) self)->cfile, value_hash_fun);
            vala_dova_object_module_declare_set_value_hash_function ((ValaDovaObjectModule*) self, ((ValaDovaBaseModule*) self)->cfile);
            _tmp383_ = vala_ccode_identifier_new ("dova_type_set_value_hash");
            _tmp384_ = _tmp383_;
            _tmp385_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp384_);
            _tmp386_ = _tmp385_;
            _vala_ccode_node_unref0 (_tmp384_);
            value_hash_call = _tmp386_;
            _tmp387_ = vala_ccode_identifier_new ("type");
            _tmp388_ = _tmp387_;
            vala_ccode_function_call_add_argument (value_hash_call, (ValaCCodeExpression*) _tmp388_);
            _vala_ccode_node_unref0 (_tmp388_);
            _tmp389_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
            _tmp390_ = _tmp389_;
            _tmp391_ = g_strdup_printf ("%s_value_hash", _tmp390_);
            _tmp392_ = _tmp391_;
            _tmp393_ = vala_ccode_identifier_new (_tmp392_);
            _tmp394_ = _tmp393_;
            _tmp395_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp394_, "uintptr_t (*)(void *, intptr_t)");
            _tmp396_ = _tmp395_;
            vala_ccode_function_call_add_argument (value_hash_call, (ValaCCodeExpression*) _tmp396_);
            _vala_ccode_node_unref0 (_tmp396_);
            _vala_ccode_node_unref0 (_tmp394_);
            _g_free0 (_tmp392_);
            _g_free0 (_tmp390_);
            _tmp397_ = vala_ccode_function_get_block (type_init_fun);
            _tmp398_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) value_hash_call);
            _tmp399_ = _tmp398_;
            vala_ccode_block_add_statement (_tmp397_, (ValaCCodeNode*) _tmp399_);
            _vala_ccode_node_unref0 (_tmp399_);
            _vala_ccode_node_unref0 (value_hash_call);
            _vala_ccode_node_unref0 (ccall);
            _vala_ccode_node_unref0 (val);
            _vala_ccode_node_unref0 (value_hash_fun);
      }
      _tmp400_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp401_ = _tmp400_;
      _tmp402_ = g_strdup_printf ("%s_value_to_any", _tmp401_);
      _tmp403_ = _tmp402_;
      _tmp404_ = vala_ccode_function_new (_tmp403_, "DovaObject*");
      _tmp405_ = _tmp404_;
      _g_free0 (_tmp403_);
      _g_free0 (_tmp401_);
      value_to_any_fun = _tmp405_;
      vala_ccode_function_set_modifiers (value_to_any_fun, VALA_CCODE_MODIFIERS_STATIC);
      _tmp406_ = vala_ccode_parameter_new ("value", "void *");
      _tmp407_ = _tmp406_;
      vala_ccode_function_add_parameter (value_to_any_fun, _tmp407_);
      _vala_ccode_node_unref0 (_tmp407_);
      _tmp408_ = vala_ccode_parameter_new ("value_index", "intptr_t");
      _tmp409_ = _tmp408_;
      vala_ccode_function_add_parameter (value_to_any_fun, _tmp409_);
      _vala_ccode_node_unref0 (_tmp409_);
      _tmp410_ = vala_ccode_block_new ();
      _tmp411_ = _tmp410_;
      vala_ccode_function_set_block (value_to_any_fun, _tmp411_);
      _vala_ccode_node_unref0 (_tmp411_);
      _tmp412_ = vala_ccode_identifier_new ("dova_object_alloc");
      _tmp413_ = _tmp412_;
      _tmp414_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp413_);
      _tmp415_ = _tmp414_;
      _vala_ccode_node_unref0 (_tmp413_);
      alloc_call = _tmp415_;
      _tmp416_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp417_ = _tmp416_;
      _tmp418_ = g_strdup_printf ("%s_type_get", _tmp417_);
      _tmp419_ = _tmp418_;
      _tmp420_ = vala_ccode_identifier_new (_tmp419_);
      _tmp421_ = _tmp420_;
      _tmp422_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp421_);
      _tmp423_ = _tmp422_;
      vala_ccode_function_call_add_argument (alloc_call, (ValaCCodeExpression*) _tmp423_);
      _vala_ccode_node_unref0 (_tmp423_);
      _vala_ccode_node_unref0 (_tmp421_);
      _g_free0 (_tmp419_);
      _g_free0 (_tmp417_);
      _tmp424_ = vala_ccode_declaration_new ("DovaObject *");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp424_;
      _tmp425_ = vala_ccode_variable_declarator_new ("result", (ValaCCodeExpression*) alloc_call, NULL);
      _tmp426_ = _tmp425_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp426_);
      _vala_ccode_node_unref0 (_tmp426_);
      _tmp427_ = vala_ccode_function_get_block (value_to_any_fun);
      vala_ccode_block_add_statement (_tmp427_, (ValaCCodeNode*) _cdecl_);
      _tmp428_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) st, NULL);
      _tmp429_ = _tmp428_;
      _tmp430_ = g_strdup_printf ("%s_GET_PRIVATE", _tmp429_);
      _tmp431_ = _tmp430_;
      _tmp432_ = vala_ccode_identifier_new (_tmp431_);
      _tmp433_ = _tmp432_;
      _tmp434_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp433_);
      _tmp435_ = _tmp434_;
      _vala_ccode_node_unref0 (_tmp433_);
      _g_free0 (_tmp431_);
      _g_free0 (_tmp429_);
      priv_call = _tmp435_;
      _tmp436_ = vala_ccode_identifier_new ("result");
      _tmp437_ = _tmp436_;
      vala_ccode_function_call_add_argument (priv_call, (ValaCCodeExpression*) _tmp437_);
      _vala_ccode_node_unref0 (_tmp437_);
      _tmp438_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp439_ = _tmp438_;
      _tmp440_ = g_strdup_printf ("%s_copy", _tmp439_);
      _tmp441_ = _tmp440_;
      _tmp442_ = vala_ccode_identifier_new (_tmp441_);
      _tmp443_ = _tmp442_;
      _tmp444_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp443_);
      _tmp445_ = _tmp444_;
      _vala_ccode_node_unref0 (_tmp443_);
      _g_free0 (_tmp441_);
      _g_free0 (_tmp439_);
      copy_call = _tmp445_;
      vala_ccode_function_call_add_argument (copy_call, (ValaCCodeExpression*) priv_call);
      _tmp446_ = vala_ccode_constant_new ("0");
      _tmp447_ = _tmp446_;
      vala_ccode_function_call_add_argument (copy_call, (ValaCCodeExpression*) _tmp447_);
      _vala_ccode_node_unref0 (_tmp447_);
      _tmp448_ = vala_ccode_identifier_new ("value");
      _tmp449_ = _tmp448_;
      vala_ccode_function_call_add_argument (copy_call, (ValaCCodeExpression*) _tmp449_);
      _vala_ccode_node_unref0 (_tmp449_);
      _tmp450_ = vala_ccode_identifier_new ("value_index");
      _tmp451_ = _tmp450_;
      vala_ccode_function_call_add_argument (copy_call, (ValaCCodeExpression*) _tmp451_);
      _vala_ccode_node_unref0 (_tmp451_);
      _tmp452_ = vala_ccode_function_get_block (value_to_any_fun);
      _tmp453_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) copy_call);
      _tmp454_ = _tmp453_;
      vala_ccode_block_add_statement (_tmp452_, (ValaCCodeNode*) _tmp454_);
      _vala_ccode_node_unref0 (_tmp454_);
      _tmp455_ = vala_ccode_function_get_block (value_to_any_fun);
      _tmp456_ = vala_ccode_identifier_new ("result");
      _tmp457_ = _tmp456_;
      _tmp458_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp457_);
      _tmp459_ = _tmp458_;
      vala_ccode_block_add_statement (_tmp455_, (ValaCCodeNode*) _tmp459_);
      _vala_ccode_node_unref0 (_tmp459_);
      _vala_ccode_node_unref0 (_tmp457_);
      vala_ccode_file_add_function (((ValaDovaBaseModule*) self)->cfile, value_to_any_fun);
      vala_dova_object_module_declare_set_value_to_any_function ((ValaDovaObjectModule*) self, ((ValaDovaBaseModule*) self)->cfile);
      _tmp460_ = vala_ccode_identifier_new ("dova_type_set_value_to_any");
      _tmp461_ = _tmp460_;
      _tmp462_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp461_);
      _tmp463_ = _tmp462_;
      _vala_ccode_node_unref0 (_tmp461_);
      value_to_any_call = _tmp463_;
      _tmp464_ = vala_ccode_identifier_new ("type");
      _tmp465_ = _tmp464_;
      vala_ccode_function_call_add_argument (value_to_any_call, (ValaCCodeExpression*) _tmp465_);
      _vala_ccode_node_unref0 (_tmp465_);
      _tmp466_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp467_ = _tmp466_;
      _tmp468_ = g_strdup_printf ("%s_value_to_any", _tmp467_);
      _tmp469_ = _tmp468_;
      _tmp470_ = vala_ccode_identifier_new (_tmp469_);
      _tmp471_ = _tmp470_;
      vala_ccode_function_call_add_argument (value_to_any_call, (ValaCCodeExpression*) _tmp471_);
      _vala_ccode_node_unref0 (_tmp471_);
      _g_free0 (_tmp469_);
      _g_free0 (_tmp467_);
      _tmp472_ = vala_ccode_function_get_block (type_init_fun);
      _tmp473_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) value_to_any_call);
      _tmp474_ = _tmp473_;
      vala_ccode_block_add_statement (_tmp472_, (ValaCCodeNode*) _tmp474_);
      _vala_ccode_node_unref0 (_tmp474_);
      _tmp475_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp476_ = _tmp475_;
      _tmp477_ = g_strdup_printf ("%s_value_from_any", _tmp476_);
      _tmp478_ = _tmp477_;
      _tmp479_ = vala_ccode_function_new (_tmp478_, "void");
      _tmp480_ = _tmp479_;
      _g_free0 (_tmp478_);
      _g_free0 (_tmp476_);
      value_from_any_fun = _tmp480_;
      vala_ccode_function_set_modifiers (value_from_any_fun, VALA_CCODE_MODIFIERS_STATIC);
      _tmp481_ = vala_ccode_parameter_new ("any_", "any *");
      _tmp482_ = _tmp481_;
      vala_ccode_function_add_parameter (value_from_any_fun, _tmp482_);
      _vala_ccode_node_unref0 (_tmp482_);
      _tmp483_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
      _tmp484_ = _tmp483_;
      _tmp485_ = g_strconcat (_tmp484_, "*", NULL);
      _tmp486_ = _tmp485_;
      _tmp487_ = vala_ccode_parameter_new ("value", _tmp486_);
      _tmp488_ = _tmp487_;
      vala_ccode_function_add_parameter (value_from_any_fun, _tmp488_);
      _vala_ccode_node_unref0 (_tmp488_);
      _g_free0 (_tmp486_);
      _g_free0 (_tmp484_);
      _tmp489_ = vala_ccode_parameter_new ("value_index", "intptr_t");
      _tmp490_ = _tmp489_;
      vala_ccode_function_add_parameter (value_from_any_fun, _tmp490_);
      _vala_ccode_node_unref0 (_tmp490_);
      _tmp491_ = vala_ccode_block_new ();
      _tmp492_ = _tmp491_;
      vala_ccode_function_set_block (value_from_any_fun, _tmp492_);
      _vala_ccode_node_unref0 (_tmp492_);
      _tmp493_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) st, NULL);
      _tmp494_ = _tmp493_;
      _tmp495_ = g_strdup_printf ("%s_GET_PRIVATE", _tmp494_);
      _tmp496_ = _tmp495_;
      _tmp497_ = vala_ccode_identifier_new (_tmp496_);
      _tmp498_ = _tmp497_;
      _tmp499_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp498_);
      _vala_ccode_node_unref0 (priv_call);
      priv_call = _tmp499_;
      _vala_ccode_node_unref0 (_tmp498_);
      _g_free0 (_tmp496_);
      _g_free0 (_tmp494_);
      _tmp500_ = vala_ccode_identifier_new ("any_");
      _tmp501_ = _tmp500_;
      vala_ccode_function_call_add_argument (priv_call, (ValaCCodeExpression*) _tmp501_);
      _vala_ccode_node_unref0 (_tmp501_);
      _tmp502_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp503_ = _tmp502_;
      _tmp504_ = g_strdup_printf ("%s_copy", _tmp503_);
      _tmp505_ = _tmp504_;
      _tmp506_ = vala_ccode_identifier_new (_tmp505_);
      _tmp507_ = _tmp506_;
      _tmp508_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp507_);
      _vala_ccode_node_unref0 (copy_call);
      copy_call = _tmp508_;
      _vala_ccode_node_unref0 (_tmp507_);
      _g_free0 (_tmp505_);
      _g_free0 (_tmp503_);
      _tmp509_ = vala_ccode_identifier_new ("value");
      _tmp510_ = _tmp509_;
      vala_ccode_function_call_add_argument (copy_call, (ValaCCodeExpression*) _tmp510_);
      _vala_ccode_node_unref0 (_tmp510_);
      _tmp511_ = vala_ccode_identifier_new ("value_index");
      _tmp512_ = _tmp511_;
      vala_ccode_function_call_add_argument (copy_call, (ValaCCodeExpression*) _tmp512_);
      _vala_ccode_node_unref0 (_tmp512_);
      vala_ccode_function_call_add_argument (copy_call, (ValaCCodeExpression*) priv_call);
      _tmp513_ = vala_ccode_constant_new ("0");
      _tmp514_ = _tmp513_;
      vala_ccode_function_call_add_argument (copy_call, (ValaCCodeExpression*) _tmp514_);
      _vala_ccode_node_unref0 (_tmp514_);
      _tmp515_ = vala_ccode_function_get_block (value_from_any_fun);
      _tmp516_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) copy_call);
      _tmp517_ = _tmp516_;
      vala_ccode_block_add_statement (_tmp515_, (ValaCCodeNode*) _tmp517_);
      _vala_ccode_node_unref0 (_tmp517_);
      vala_ccode_file_add_function (((ValaDovaBaseModule*) self)->cfile, value_from_any_fun);
      vala_dova_object_module_declare_set_value_from_any_function ((ValaDovaObjectModule*) self, ((ValaDovaBaseModule*) self)->cfile);
      _tmp518_ = vala_ccode_identifier_new ("dova_type_set_value_from_any");
      _tmp519_ = _tmp518_;
      _tmp520_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp519_);
      _tmp521_ = _tmp520_;
      _vala_ccode_node_unref0 (_tmp519_);
      value_from_any_call = _tmp521_;
      _tmp522_ = vala_ccode_identifier_new ("type");
      _tmp523_ = _tmp522_;
      vala_ccode_function_call_add_argument (value_from_any_call, (ValaCCodeExpression*) _tmp523_);
      _vala_ccode_node_unref0 (_tmp523_);
      _tmp524_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) st, NULL);
      _tmp525_ = _tmp524_;
      _tmp526_ = g_strdup_printf ("%s_value_from_any", _tmp525_);
      _tmp527_ = _tmp526_;
      _tmp528_ = vala_ccode_identifier_new (_tmp527_);
      _tmp529_ = _tmp528_;
      vala_ccode_function_call_add_argument (value_from_any_call, (ValaCCodeExpression*) _tmp529_);
      _vala_ccode_node_unref0 (_tmp529_);
      _g_free0 (_tmp527_);
      _g_free0 (_tmp525_);
      _tmp530_ = vala_ccode_function_get_block (type_init_fun);
      _tmp531_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) value_from_any_call);
      _tmp532_ = _tmp531_;
      vala_ccode_block_add_statement (_tmp530_, (ValaCCodeNode*) _tmp532_);
      _vala_ccode_node_unref0 (_tmp532_);
      vala_ccode_file_add_function (((ValaDovaBaseModule*) self)->cfile, type_init_fun);
      vala_dova_value_module_add_struct_copy_function (self, st);
      _vala_ccode_node_unref0 (value_from_any_call);
      _vala_ccode_node_unref0 (value_from_any_fun);
      _vala_ccode_node_unref0 (value_to_any_call);
      _vala_ccode_node_unref0 (copy_call);
      _vala_ccode_node_unref0 (priv_call);
      _vala_ccode_node_unref0 (alloc_call);
      _vala_ccode_node_unref0 (value_to_any_fun);
      _vala_ccode_node_unref0 (value_copy_call);
      _vala_ccode_node_unref0 (type_init_fun);
      _vala_ccode_node_unref0 (type_init_call);
      _vala_ccode_node_unref0 (set_size);
      _vala_ccode_node_unref0 (sizeof_call);
      _vala_ccode_node_unref0 (base_size);
      _vala_ccode_node_unref0 (set_base_type);
      _vala_ccode_node_unref0 (calloc_call);
      _vala_ccode_node_unref0 (base_type_size);
      _vala_ccode_node_unref0 (base_type);
      _vala_ccode_node_unref0 (type_init_block);
      _vala_ccode_node_unref0 (type_fun);
      _g_free0 (macro);
      _vala_ccode_node_unref0 (_cdecl_);
}


static gpointer _vala_code_node_ref0 (gpointer self) {
      return self ? vala_code_node_ref (self) : NULL;
}


static void vala_dova_value_module_add_struct_copy_function (ValaDovaValueModule* self, ValaStruct* st) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      ValaCCodeFunction* _tmp2_ = NULL;
      ValaCCodeFunction* _tmp3_;
      ValaCCodeFunction* function;
      gboolean _tmp4_;
      gchar* _tmp5_ = NULL;
      gchar* _tmp6_;
      gchar* _tmp7_;
      gchar* _tmp8_;
      ValaCCodeParameter* _tmp9_ = NULL;
      ValaCCodeParameter* _tmp10_;
      ValaCCodeParameter* _tmp11_ = NULL;
      ValaCCodeParameter* _tmp12_;
      gchar* _tmp13_ = NULL;
      gchar* _tmp14_;
      gchar* _tmp15_;
      gchar* _tmp16_;
      ValaCCodeParameter* _tmp17_ = NULL;
      ValaCCodeParameter* _tmp18_;
      ValaCCodeParameter* _tmp19_ = NULL;
      ValaCCodeParameter* _tmp20_;
      ValaCCodeBlock* _tmp21_ = NULL;
      ValaCCodeBlock* cblock;
      ValaCCodeFragment* _tmp22_ = NULL;
      ValaCCodeFragment* cfrag;
      ValaCCodeIdentifier* _tmp23_ = NULL;
      ValaCCodeIdentifier* _tmp24_;
      ValaCCodeIdentifier* _tmp25_ = NULL;
      ValaCCodeIdentifier* _tmp26_;
      ValaCCodeBinaryExpression* _tmp27_ = NULL;
      ValaCCodeBinaryExpression* _tmp28_;
      ValaCCodeBinaryExpression* dest;
      ValaCCodeIdentifier* _tmp29_ = NULL;
      ValaCCodeIdentifier* _tmp30_;
      ValaCCodeIdentifier* _tmp31_ = NULL;
      ValaCCodeIdentifier* _tmp32_;
      ValaCCodeBinaryExpression* _tmp33_ = NULL;
      ValaCCodeBinaryExpression* _tmp34_;
      ValaCCodeBinaryExpression* src;
      ValaCCodeBlock* _tmp79_ = NULL;
      ValaCCodeBlock* copy_block;
      ValaList* _tmp80_ = NULL;
      ValaList* _tmp81_;
      gint _tmp82_;
      gboolean _tmp83_;
      ValaCCodeIdentifier* _tmp143_ = NULL;
      ValaCCodeIdentifier* _tmp144_;
      ValaCCodeIfStatement* _tmp145_ = NULL;
      ValaCCodeIfStatement* _tmp146_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (st != NULL);
      _tmp0_ = vala_typesymbol_get_copy_function ((ValaTypeSymbol*) st);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_ccode_function_new (_tmp1_, "void");
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      function = _tmp3_;
      _tmp4_ = vala_symbol_is_internal_symbol ((ValaSymbol*) st);
      if (_tmp4_) {
            vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      }
      _tmp5_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
      _tmp6_ = _tmp5_;
      _tmp7_ = g_strconcat (_tmp6_, "*", NULL);
      _tmp8_ = _tmp7_;
      _tmp9_ = vala_ccode_parameter_new ("dest", _tmp8_);
      _tmp10_ = _tmp9_;
      vala_ccode_function_add_parameter (function, _tmp10_);
      _vala_ccode_node_unref0 (_tmp10_);
      _g_free0 (_tmp8_);
      _g_free0 (_tmp6_);
      _tmp11_ = vala_ccode_parameter_new ("dest_index", "intptr_t");
      _tmp12_ = _tmp11_;
      vala_ccode_function_add_parameter (function, _tmp12_);
      _vala_ccode_node_unref0 (_tmp12_);
      _tmp13_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
      _tmp14_ = _tmp13_;
      _tmp15_ = g_strconcat (_tmp14_, "*", NULL);
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_ccode_parameter_new ("src", _tmp16_);
      _tmp18_ = _tmp17_;
      vala_ccode_function_add_parameter (function, _tmp18_);
      _vala_ccode_node_unref0 (_tmp18_);
      _g_free0 (_tmp16_);
      _g_free0 (_tmp14_);
      _tmp19_ = vala_ccode_parameter_new ("src_index", "intptr_t");
      _tmp20_ = _tmp19_;
      vala_ccode_function_add_parameter (function, _tmp20_);
      _vala_ccode_node_unref0 (_tmp20_);
      _tmp21_ = vala_ccode_block_new ();
      cblock = _tmp21_;
      _tmp22_ = vala_ccode_fragment_new ();
      cfrag = _tmp22_;
      vala_ccode_block_add_statement (cblock, (ValaCCodeNode*) cfrag);
      _tmp23_ = vala_ccode_identifier_new ("dest");
      _tmp24_ = _tmp23_;
      _tmp25_ = vala_ccode_identifier_new ("dest_index");
      _tmp26_ = _tmp25_;
      _tmp27_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp24_, (ValaCCodeExpression*) _tmp26_);
      _tmp28_ = _tmp27_;
      _vala_ccode_node_unref0 (_tmp26_);
      _vala_ccode_node_unref0 (_tmp24_);
      dest = _tmp28_;
      _tmp29_ = vala_ccode_identifier_new ("src");
      _tmp30_ = _tmp29_;
      _tmp31_ = vala_ccode_identifier_new ("src_index");
      _tmp32_ = _tmp31_;
      _tmp33_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp30_, (ValaCCodeExpression*) _tmp32_);
      _tmp34_ = _tmp33_;
      _vala_ccode_node_unref0 (_tmp32_);
      _vala_ccode_node_unref0 (_tmp30_);
      src = _tmp34_;
      {
            ValaList* _tmp35_ = NULL;
            ValaList* _f_list;
            gint _tmp36_;
            gint _f_size;
            gint _f_index;
            _tmp35_ = vala_struct_get_fields (st);
            _f_list = _tmp35_;
            _tmp36_ = vala_collection_get_size ((ValaCollection*) _f_list);
            _f_size = _tmp36_;
            _f_index = -1;
            while (TRUE) {
                  gpointer _tmp37_ = NULL;
                  ValaField* f;
                  ValaMemberBinding _tmp38_;
                  _f_index = _f_index + 1;
                  if (!(_f_index < _f_size)) {
                        break;
                  }
                  _tmp37_ = vala_list_get (_f_list, _f_index);
                  f = (ValaField*) _tmp37_;
                  _tmp38_ = vala_field_get_binding (f);
                  if (_tmp38_ == VALA_MEMBER_BINDING_INSTANCE) {
                        const gchar* _tmp39_ = NULL;
                        ValaCCodeMemberAccess* _tmp40_ = NULL;
                        ValaCCodeMemberAccess* field;
                        ValaDataType* _tmp41_ = NULL;
                        ValaDataType* _tmp42_;
                        ValaArrayType* _tmp43_;
                        ValaArrayType* array_type;
                        gboolean _tmp44_ = FALSE;
                        ValaDataType* _tmp61_ = NULL;
                        gboolean _tmp62_;
                        _tmp39_ = vala_symbol_get_name ((ValaSymbol*) f);
                        _tmp40_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) dest, _tmp39_);
                        field = _tmp40_;
                        _tmp41_ = vala_variable_get_variable_type ((ValaVariable*) f);
                        _tmp42_ = _tmp41_;
                        _tmp43_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp42_) ? ((ValaArrayType*) _tmp42_) : NULL);
                        array_type = _tmp43_;
                        if (array_type != NULL) {
                              gboolean _tmp45_;
                              _tmp45_ = vala_array_type_get_fixed_length (array_type);
                              _tmp44_ = _tmp45_;
                        } else {
                              _tmp44_ = FALSE;
                        }
                        if (_tmp44_) {
                              {
                                    gint i;
                                    i = 0;
                                    {
                                          gboolean _tmp46_;
                                          _tmp46_ = TRUE;
                                          while (TRUE) {
                                                gint _tmp47_;
                                                gchar* _tmp48_ = NULL;
                                                gchar* _tmp49_;
                                                ValaCCodeConstant* _tmp50_ = NULL;
                                                ValaCCodeConstant* _tmp51_;
                                                ValaCCodeElementAccess* _tmp52_ = NULL;
                                                ValaCCodeElementAccess* _tmp53_;
                                                ValaCCodeElementAccess* element;
                                                ValaDataType* _tmp54_ = NULL;
                                                gboolean _tmp55_;
                                                if (!_tmp46_) {
                                                      i++;
                                                }
                                                _tmp46_ = FALSE;
                                                _tmp47_ = vala_array_type_get_length (array_type);
                                                if (!(i < _tmp47_)) {
                                                      break;
                                                }
                                                _tmp48_ = g_strdup_printf ("%i", i);
                                                _tmp49_ = _tmp48_;
                                                _tmp50_ = vala_ccode_constant_new (_tmp49_);
                                                _tmp51_ = _tmp50_;
                                                _tmp52_ = vala_ccode_element_access_new ((ValaCCodeExpression*) field, (ValaCCodeExpression*) _tmp51_);
                                                _tmp53_ = _tmp52_;
                                                _vala_ccode_node_unref0 (_tmp51_);
                                                _g_free0 (_tmp49_);
                                                element = _tmp53_;
                                                _tmp54_ = vala_array_type_get_element_type (array_type);
                                                _tmp55_ = vala_dova_base_module_requires_destroy ((ValaDovaBaseModule*) self, _tmp54_);
                                                if (_tmp55_) {
                                                      ValaDataType* _tmp56_ = NULL;
                                                      ValaCCodeExpression* _tmp57_ = NULL;
                                                      ValaCCodeExpression* _tmp58_;
                                                      ValaCCodeExpressionStatement* _tmp59_ = NULL;
                                                      ValaCCodeExpressionStatement* _tmp60_;
                                                      _tmp56_ = vala_array_type_get_element_type (array_type);
                                                      _tmp57_ = vala_dova_base_module_get_unref_expression ((ValaDovaBaseModule*) self, (ValaCCodeExpression*) element, _tmp56_, NULL);
                                                      _tmp58_ = _tmp57_;
                                                      _tmp59_ = vala_ccode_expression_statement_new (_tmp58_);
                                                      _tmp60_ = _tmp59_;
                                                      vala_ccode_block_add_statement (cblock, (ValaCCodeNode*) _tmp60_);
                                                      _vala_ccode_node_unref0 (_tmp60_);
                                                      _vala_ccode_node_unref0 (_tmp58_);
                                                }
                                                _vala_ccode_node_unref0 (element);
                                          }
                                    }
                              }
                              _vala_code_node_unref0 (array_type);
                              _vala_ccode_node_unref0 (field);
                              _vala_code_node_unref0 (f);
                              continue;
                        }
                        _tmp61_ = vala_variable_get_variable_type ((ValaVariable*) f);
                        _tmp62_ = vala_dova_base_module_requires_destroy ((ValaDovaBaseModule*) self, _tmp61_);
                        if (_tmp62_) {
                              ValaMemberAccess* _tmp63_ = NULL;
                              ValaMemberAccess* this_access;
                              ValaSymbol* _tmp64_ = NULL;
                              ValaDataType* _tmp65_ = NULL;
                              ValaDataType* _tmp66_;
                              ValaCCodeUnaryExpression* _tmp67_ = NULL;
                              ValaCCodeUnaryExpression* _tmp68_;
                              const gchar* _tmp69_ = NULL;
                              ValaMemberAccess* _tmp70_ = NULL;
                              ValaMemberAccess* ma;
                              ValaDataType* _tmp71_ = NULL;
                              ValaDataType* _tmp72_ = NULL;
                              ValaDataType* _tmp73_;
                              ValaDataType* _tmp74_ = NULL;
                              ValaCCodeExpression* _tmp75_ = NULL;
                              ValaCCodeExpression* _tmp76_;
                              ValaCCodeExpressionStatement* _tmp77_ = NULL;
                              ValaCCodeExpressionStatement* _tmp78_;
                              _tmp63_ = vala_member_access_new_simple ("this", NULL);
                              this_access = _tmp63_;
                              _tmp64_ = vala_symbol_get_parent_symbol ((ValaSymbol*) f);
                              _tmp65_ = vala_dova_base_module_get_data_type_for_symbol (VALA_TYPESYMBOL (_tmp64_));
                              _tmp66_ = _tmp65_;
                              vala_expression_set_value_type ((ValaExpression*) this_access, _tmp66_);
                              _vala_code_node_unref0 (_tmp66_);
                              _tmp67_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) dest);
                              _tmp68_ = _tmp67_;
                              vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) this_access, (ValaCCodeExpression*) _tmp68_);
                              _vala_ccode_node_unref0 (_tmp68_);
                              _tmp69_ = vala_symbol_get_name ((ValaSymbol*) f);
                              _tmp70_ = vala_member_access_new ((ValaExpression*) this_access, _tmp69_, NULL);
                              ma = _tmp70_;
                              vala_expression_set_symbol_reference ((ValaExpression*) ma, (ValaSymbol*) f);
                              _tmp71_ = vala_variable_get_variable_type ((ValaVariable*) f);
                              _tmp72_ = vala_data_type_copy (_tmp71_);
                              _tmp73_ = _tmp72_;
                              vala_expression_set_value_type ((ValaExpression*) ma, _tmp73_);
                              _vala_code_node_unref0 (_tmp73_);
                              _tmp74_ = vala_variable_get_variable_type ((ValaVariable*) f);
                              _tmp75_ = vala_dova_base_module_get_unref_expression ((ValaDovaBaseModule*) self, (ValaCCodeExpression*) field, _tmp74_, (ValaExpression*) ma);
                              _tmp76_ = _tmp75_;
                              _tmp77_ = vala_ccode_expression_statement_new (_tmp76_);
                              _tmp78_ = _tmp77_;
                              vala_ccode_block_add_statement (cblock, (ValaCCodeNode*) _tmp78_);
                              _vala_ccode_node_unref0 (_tmp78_);
                              _vala_ccode_node_unref0 (_tmp76_);
                              _vala_code_node_unref0 (ma);
                              _vala_code_node_unref0 (this_access);
                        }
                        _vala_code_node_unref0 (array_type);
                        _vala_ccode_node_unref0 (field);
                  }
                  _vala_code_node_unref0 (f);
            }
            _vala_iterable_unref0 (_f_list);
      }
      _tmp79_ = vala_ccode_block_new ();
      copy_block = _tmp79_;
      _tmp80_ = vala_struct_get_fields (st);
      _tmp81_ = _tmp80_;
      _tmp82_ = vala_collection_get_size ((ValaCollection*) _tmp81_);
      _tmp83_ = _tmp82_ == 0;
      _vala_iterable_unref0 (_tmp81_);
      if (_tmp83_) {
            ValaCCodeUnaryExpression* _tmp84_ = NULL;
            ValaCCodeUnaryExpression* _tmp85_;
            ValaCCodeUnaryExpression* _tmp86_ = NULL;
            ValaCCodeUnaryExpression* _tmp87_;
            ValaCCodeAssignment* _tmp88_ = NULL;
            ValaCCodeAssignment* _tmp89_;
            ValaCCodeExpressionStatement* _tmp90_ = NULL;
            ValaCCodeExpressionStatement* _tmp91_;
            _tmp84_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) dest);
            _tmp85_ = _tmp84_;
            _tmp86_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) src);
            _tmp87_ = _tmp86_;
            _tmp88_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp85_, (ValaCCodeExpression*) _tmp87_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
            _tmp89_ = _tmp88_;
            _tmp90_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp89_);
            _tmp91_ = _tmp90_;
            vala_ccode_block_add_statement (copy_block, (ValaCCodeNode*) _tmp91_);
            _vala_ccode_node_unref0 (_tmp91_);
            _vala_ccode_node_unref0 (_tmp89_);
            _vala_ccode_node_unref0 (_tmp87_);
            _vala_ccode_node_unref0 (_tmp85_);
      } else {
            {
                  ValaList* _tmp92_ = NULL;
                  ValaList* _f_list;
                  gint _tmp93_;
                  gint _f_size;
                  gint _f_index;
                  _tmp92_ = vala_struct_get_fields (st);
                  _f_list = _tmp92_;
                  _tmp93_ = vala_collection_get_size ((ValaCollection*) _f_list);
                  _f_size = _tmp93_;
                  _f_index = -1;
                  while (TRUE) {
                        gpointer _tmp94_ = NULL;
                        ValaField* f;
                        ValaMemberBinding _tmp95_;
                        _f_index = _f_index + 1;
                        if (!(_f_index < _f_size)) {
                              break;
                        }
                        _tmp94_ = vala_list_get (_f_list, _f_index);
                        f = (ValaField*) _tmp94_;
                        _tmp95_ = vala_field_get_binding (f);
                        if (_tmp95_ == VALA_MEMBER_BINDING_INSTANCE) {
                              const gchar* _tmp96_ = NULL;
                              ValaCCodeMemberAccess* _tmp97_ = NULL;
                              ValaCCodeExpression* copy;
                              const gchar* _tmp98_ = NULL;
                              ValaCCodeMemberAccess* _tmp99_ = NULL;
                              ValaCCodeMemberAccess* dest_field;
                              ValaDataType* _tmp100_ = NULL;
                              ValaDataType* _tmp101_;
                              ValaArrayType* _tmp102_;
                              ValaArrayType* array_type;
                              gboolean _tmp103_ = FALSE;
                              ValaDataType* _tmp127_ = NULL;
                              gboolean _tmp128_;
                              ValaCCodeAssignment* _tmp139_ = NULL;
                              ValaCCodeAssignment* _tmp140_;
                              ValaCCodeExpressionStatement* _tmp141_ = NULL;
                              ValaCCodeExpressionStatement* _tmp142_;
                              _tmp96_ = vala_symbol_get_name ((ValaSymbol*) f);
                              _tmp97_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) src, _tmp96_);
                              copy = (ValaCCodeExpression*) _tmp97_;
                              _tmp98_ = vala_symbol_get_name ((ValaSymbol*) f);
                              _tmp99_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) dest, _tmp98_);
                              dest_field = _tmp99_;
                              _tmp100_ = vala_variable_get_variable_type ((ValaVariable*) f);
                              _tmp101_ = _tmp100_;
                              _tmp102_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp101_) ? ((ValaArrayType*) _tmp101_) : NULL);
                              array_type = _tmp102_;
                              if (array_type != NULL) {
                                    gboolean _tmp104_;
                                    _tmp104_ = vala_array_type_get_fixed_length (array_type);
                                    _tmp103_ = _tmp104_;
                              } else {
                                    _tmp103_ = FALSE;
                              }
                              if (_tmp103_) {
                                    {
                                          gint i;
                                          i = 0;
                                          {
                                                gboolean _tmp105_;
                                                _tmp105_ = TRUE;
                                                while (TRUE) {
                                                      gint _tmp106_;
                                                      gchar* _tmp107_ = NULL;
                                                      gchar* _tmp108_;
                                                      ValaCCodeConstant* _tmp109_ = NULL;
                                                      ValaCCodeConstant* _tmp110_;
                                                      ValaCCodeElementAccess* _tmp111_ = NULL;
                                                      ValaCCodeExpression* _tmp112_;
                                                      ValaCCodeExpression* copy_element;
                                                      gchar* _tmp113_ = NULL;
                                                      gchar* _tmp114_;
                                                      ValaCCodeConstant* _tmp115_ = NULL;
                                                      ValaCCodeConstant* _tmp116_;
                                                      ValaCCodeElementAccess* _tmp117_ = NULL;
                                                      ValaCCodeElementAccess* _tmp118_;
                                                      ValaCCodeElementAccess* dest_field_element;
                                                      ValaDataType* _tmp119_ = NULL;
                                                      gboolean _tmp120_;
                                                      ValaCCodeAssignment* _tmp123_ = NULL;
                                                      ValaCCodeAssignment* _tmp124_;
                                                      ValaCCodeExpressionStatement* _tmp125_ = NULL;
                                                      ValaCCodeExpressionStatement* _tmp126_;
                                                      if (!_tmp105_) {
                                                            i++;
                                                      }
                                                      _tmp105_ = FALSE;
                                                      _tmp106_ = vala_array_type_get_length (array_type);
                                                      if (!(i < _tmp106_)) {
                                                            break;
                                                      }
                                                      _tmp107_ = g_strdup_printf ("%i", i);
                                                      _tmp108_ = _tmp107_;
                                                      _tmp109_ = vala_ccode_constant_new (_tmp108_);
                                                      _tmp110_ = _tmp109_;
                                                      _tmp111_ = vala_ccode_element_access_new (copy, (ValaCCodeExpression*) _tmp110_);
                                                      _tmp112_ = (ValaCCodeExpression*) _tmp111_;
                                                      _vala_ccode_node_unref0 (_tmp110_);
                                                      _g_free0 (_tmp108_);
                                                      copy_element = _tmp112_;
                                                      _tmp113_ = g_strdup_printf ("%i", i);
                                                      _tmp114_ = _tmp113_;
                                                      _tmp115_ = vala_ccode_constant_new (_tmp114_);
                                                      _tmp116_ = _tmp115_;
                                                      _tmp117_ = vala_ccode_element_access_new ((ValaCCodeExpression*) dest_field, (ValaCCodeExpression*) _tmp116_);
                                                      _tmp118_ = _tmp117_;
                                                      _vala_ccode_node_unref0 (_tmp116_);
                                                      _g_free0 (_tmp114_);
                                                      dest_field_element = _tmp118_;
                                                      _tmp119_ = vala_array_type_get_element_type (array_type);
                                                      _tmp120_ = vala_dova_base_module_requires_copy ((ValaDovaBaseModule*) self, _tmp119_);
                                                      if (_tmp120_) {
                                                            ValaDataType* _tmp121_ = NULL;
                                                            ValaCCodeExpression* _tmp122_ = NULL;
                                                            _tmp121_ = vala_array_type_get_element_type (array_type);
                                                            _tmp122_ = vala_dova_base_module_get_ref_cexpression ((ValaDovaBaseModule*) self, _tmp121_, copy_element, NULL, (ValaCodeNode*) f);
                                                            _vala_ccode_node_unref0 (copy_element);
                                                            copy_element = _tmp122_;
                                                      }
                                                      _tmp123_ = vala_ccode_assignment_new ((ValaCCodeExpression*) dest_field_element, copy_element, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                                                      _tmp124_ = _tmp123_;
                                                      _tmp125_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp124_);
                                                      _tmp126_ = _tmp125_;
                                                      vala_ccode_block_add_statement (copy_block, (ValaCCodeNode*) _tmp126_);
                                                      _vala_ccode_node_unref0 (_tmp126_);
                                                      _vala_ccode_node_unref0 (_tmp124_);
                                                      _vala_ccode_node_unref0 (dest_field_element);
                                                      _vala_ccode_node_unref0 (copy_element);
                                                }
                                          }
                                    }
                                    _vala_code_node_unref0 (array_type);
                                    _vala_ccode_node_unref0 (dest_field);
                                    _vala_ccode_node_unref0 (copy);
                                    _vala_code_node_unref0 (f);
                                    continue;
                              }
                              _tmp127_ = vala_variable_get_variable_type ((ValaVariable*) f);
                              _tmp128_ = vala_dova_base_module_requires_copy ((ValaDovaBaseModule*) self, _tmp127_);
                              if (_tmp128_) {
                                    ValaMemberAccess* _tmp129_ = NULL;
                                    ValaMemberAccess* this_access;
                                    ValaSymbol* _tmp130_ = NULL;
                                    ValaDataType* _tmp131_ = NULL;
                                    ValaDataType* _tmp132_;
                                    ValaCCodeUnaryExpression* _tmp133_ = NULL;
                                    ValaCCodeUnaryExpression* _tmp134_;
                                    const gchar* _tmp135_ = NULL;
                                    ValaMemberAccess* _tmp136_ = NULL;
                                    ValaMemberAccess* ma;
                                    ValaDataType* _tmp137_ = NULL;
                                    ValaCCodeExpression* _tmp138_ = NULL;
                                    _tmp129_ = vala_member_access_new_simple ("this", NULL);
                                    this_access = _tmp129_;
                                    _tmp130_ = vala_symbol_get_parent_symbol ((ValaSymbol*) f);
                                    _tmp131_ = vala_dova_base_module_get_data_type_for_symbol (VALA_TYPESYMBOL (_tmp130_));
                                    _tmp132_ = _tmp131_;
                                    vala_expression_set_value_type ((ValaExpression*) this_access, _tmp132_);
                                    _vala_code_node_unref0 (_tmp132_);
                                    _tmp133_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) src);
                                    _tmp134_ = _tmp133_;
                                    vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) this_access, (ValaCCodeExpression*) _tmp134_);
                                    _vala_ccode_node_unref0 (_tmp134_);
                                    _tmp135_ = vala_symbol_get_name ((ValaSymbol*) f);
                                    _tmp136_ = vala_member_access_new ((ValaExpression*) this_access, _tmp135_, NULL);
                                    ma = _tmp136_;
                                    vala_expression_set_symbol_reference ((ValaExpression*) ma, (ValaSymbol*) f);
                                    _tmp137_ = vala_variable_get_variable_type ((ValaVariable*) f);
                                    _tmp138_ = vala_dova_base_module_get_ref_cexpression ((ValaDovaBaseModule*) self, _tmp137_, copy, (ValaExpression*) ma, (ValaCodeNode*) f);
                                    _vala_ccode_node_unref0 (copy);
                                    copy = _tmp138_;
                                    _vala_code_node_unref0 (ma);
                                    _vala_code_node_unref0 (this_access);
                              }
                              _tmp139_ = vala_ccode_assignment_new ((ValaCCodeExpression*) dest_field, copy, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                              _tmp140_ = _tmp139_;
                              _tmp141_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp140_);
                              _tmp142_ = _tmp141_;
                              vala_ccode_block_add_statement (copy_block, (ValaCCodeNode*) _tmp142_);
                              _vala_ccode_node_unref0 (_tmp142_);
                              _vala_ccode_node_unref0 (_tmp140_);
                              _vala_code_node_unref0 (array_type);
                              _vala_ccode_node_unref0 (dest_field);
                              _vala_ccode_node_unref0 (copy);
                        }
                        _vala_code_node_unref0 (f);
                  }
                  _vala_iterable_unref0 (_f_list);
            }
      }
      _tmp143_ = vala_ccode_identifier_new ("src");
      _tmp144_ = _tmp143_;
      _tmp145_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp144_, (ValaCCodeStatement*) copy_block, NULL);
      _tmp146_ = _tmp145_;
      vala_ccode_block_add_statement (cblock, (ValaCCodeNode*) _tmp146_);
      _vala_ccode_node_unref0 (_tmp146_);
      _vala_ccode_node_unref0 (_tmp144_);
      vala_ccode_function_set_block (function, cblock);
      vala_ccode_file_add_function (((ValaDovaBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (copy_block);
      _vala_ccode_node_unref0 (src);
      _vala_ccode_node_unref0 (dest);
      _vala_ccode_node_unref0 (cfrag);
      _vala_ccode_node_unref0 (cblock);
      _vala_ccode_node_unref0 (function);
}


static void vala_dova_value_module_real_visit_assignment (ValaCodeVisitor* base, ValaAssignment* assignment) {
      ValaDovaValueModule * self;
      ValaExpression* _tmp0_ = NULL;
      ValaDataType* _tmp1_ = NULL;
      ValaDataType* _tmp2_;
      ValaGenericType* _tmp3_;
      ValaGenericType* generic_type;
      ValaExpression* _tmp4_ = NULL;
      ValaExpression* _tmp5_;
      ValaExpression* dest;
      ValaCCodeExpression* cdest = NULL;
      ValaCCodeConstant* _tmp6_ = NULL;
      ValaCCodeExpression* dest_index;
      ValaExpression* _tmp7_ = NULL;
      ValaExpression* _tmp8_;
      ValaExpression* src;
      ValaCCodeExpression* csrc = NULL;
      ValaCCodeConstant* _tmp9_ = NULL;
      ValaCCodeExpression* src_index;
      ValaExpression* _tmp12_;
      ValaElementAccess* _tmp13_;
      ValaElementAccess* dest_ea;
      ValaExpression* _tmp14_;
      ValaElementAccess* _tmp15_;
      ValaElementAccess* src_ea;
      ValaCCodeIdentifier* _tmp50_ = NULL;
      ValaCCodeIdentifier* _tmp51_;
      ValaCCodeFunctionCall* _tmp52_ = NULL;
      ValaCCodeFunctionCall* _tmp53_;
      ValaCCodeFunctionCall* ccall;
      ValaTypeParameter* _tmp54_ = NULL;
      ValaSymbol* _tmp55_ = NULL;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (assignment != NULL);
      _tmp0_ = vala_assignment_get_left (assignment);
      _tmp1_ = vala_expression_get_value_type (_tmp0_);
      _tmp2_ = _tmp1_;
      _tmp3_ = _vala_code_node_ref0 (VALA_IS_GENERIC_TYPE (_tmp2_) ? ((ValaGenericType*) _tmp2_) : NULL);
      generic_type = _tmp3_;
      if (generic_type == NULL) {
            VALA_CODE_VISITOR_CLASS (vala_dova_value_module_parent_class)->visit_assignment ((ValaCodeVisitor*) VALA_DOVA_OBJECT_MODULE (self), assignment);
            _vala_code_node_unref0 (generic_type);
            return;
      }
      _tmp4_ = vala_assignment_get_left (assignment);
      _tmp5_ = _vala_code_node_ref0 (_tmp4_);
      dest = _tmp5_;
      _tmp6_ = vala_ccode_constant_new ("0");
      dest_index = (ValaCCodeExpression*) _tmp6_;
      _tmp7_ = vala_assignment_get_right (assignment);
      _tmp8_ = _vala_code_node_ref0 (_tmp7_);
      src = _tmp8_;
      _tmp9_ = vala_ccode_constant_new ("0");
      src_index = (ValaCCodeExpression*) _tmp9_;
      if (VALA_IS_NULL_LITERAL (src)) {
            ValaCCodeConstant* _tmp10_ = NULL;
            ValaCCodeConstant* _tmp11_;
            _tmp10_ = vala_ccode_constant_new ("0");
            _tmp11_ = _tmp10_;
            vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) assignment, (ValaCCodeExpression*) _tmp11_);
            _vala_ccode_node_unref0 (_tmp11_);
            _vala_ccode_node_unref0 (src_index);
            _vala_ccode_node_unref0 (csrc);
            _vala_code_node_unref0 (src);
            _vala_ccode_node_unref0 (dest_index);
            _vala_ccode_node_unref0 (cdest);
            _vala_code_node_unref0 (dest);
            _vala_code_node_unref0 (generic_type);
            return;
      }
      _tmp12_ = dest;
      _tmp13_ = _vala_code_node_ref0 (VALA_IS_ELEMENT_ACCESS (_tmp12_) ? ((ValaElementAccess*) _tmp12_) : NULL);
      dest_ea = _tmp13_;
      _tmp14_ = src;
      _tmp15_ = _vala_code_node_ref0 (VALA_IS_ELEMENT_ACCESS (_tmp14_) ? ((ValaElementAccess*) _tmp14_) : NULL);
      src_ea = _tmp15_;
      if (dest_ea != NULL) {
            ValaExpression* _tmp16_ = NULL;
            ValaExpression* _tmp17_;
            ValaDataType* _tmp18_ = NULL;
            ValaDataType* _tmp19_;
            ValaArrayType* _tmp20_;
            ValaArrayType* array_type;
            gboolean _tmp21_ = FALSE;
            ValaList* _tmp27_ = NULL;
            ValaList* _tmp28_;
            gpointer _tmp29_ = NULL;
            ValaExpression* _tmp30_;
            ValaCCodeExpression* _tmp31_ = NULL;
            _tmp16_ = vala_element_access_get_container (dest_ea);
            _tmp17_ = _vala_code_node_ref0 (_tmp16_);
            _vala_code_node_unref0 (dest);
            dest = _tmp17_;
            _tmp18_ = vala_expression_get_value_type (dest);
            _tmp19_ = _tmp18_;
            _tmp20_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp19_) ? ((ValaArrayType*) _tmp19_) : NULL);
            array_type = _tmp20_;
            if (array_type != NULL) {
                  gboolean _tmp22_;
                  _tmp22_ = vala_array_type_get_inline_allocated (array_type);
                  _tmp21_ = !_tmp22_;
            } else {
                  _tmp21_ = FALSE;
            }
            if (_tmp21_) {
                  ValaCCodeExpression* _tmp23_ = NULL;
                  ValaCCodeExpression* _tmp24_;
                  ValaCCodeMemberAccess* _tmp25_ = NULL;
                  _tmp23_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, dest);
                  _tmp24_ = VALA_CCODE_EXPRESSION (_tmp23_);
                  _tmp25_ = vala_ccode_member_access_new (_tmp24_, "data", FALSE);
                  _vala_ccode_node_unref0 (cdest);
                  cdest = (ValaCCodeExpression*) _tmp25_;
                  _vala_ccode_node_unref0 (_tmp24_);
            } else {
                  ValaCCodeExpression* _tmp26_ = NULL;
                  _tmp26_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, dest);
                  _vala_ccode_node_unref0 (cdest);
                  cdest = VALA_CCODE_EXPRESSION (_tmp26_);
            }
            _tmp27_ = vala_element_access_get_indices (dest_ea);
            _tmp28_ = _tmp27_;
            _tmp29_ = vala_list_get (_tmp28_, 0);
            _tmp30_ = (ValaExpression*) _tmp29_;
            _tmp31_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, _tmp30_);
            _vala_ccode_node_unref0 (dest_index);
            dest_index = VALA_CCODE_EXPRESSION (_tmp31_);
            _vala_code_node_unref0 (_tmp30_);
            _vala_iterable_unref0 (_tmp28_);
            _vala_code_node_unref0 (array_type);
      } else {
            ValaCCodeExpression* _tmp32_ = NULL;
            _tmp32_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, dest);
            _vala_ccode_node_unref0 (cdest);
            cdest = VALA_CCODE_EXPRESSION (_tmp32_);
      }
      if (src_ea != NULL) {
            ValaExpression* _tmp33_ = NULL;
            ValaExpression* _tmp34_;
            ValaDataType* _tmp35_ = NULL;
            ValaDataType* _tmp36_;
            ValaArrayType* _tmp37_;
            ValaArrayType* array_type;
            gboolean _tmp38_ = FALSE;
            ValaList* _tmp44_ = NULL;
            ValaList* _tmp45_;
            gpointer _tmp46_ = NULL;
            ValaExpression* _tmp47_;
            ValaCCodeExpression* _tmp48_ = NULL;
            _tmp33_ = vala_element_access_get_container (src_ea);
            _tmp34_ = _vala_code_node_ref0 (_tmp33_);
            _vala_code_node_unref0 (src);
            src = _tmp34_;
            _tmp35_ = vala_expression_get_value_type (src);
            _tmp36_ = _tmp35_;
            _tmp37_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp36_) ? ((ValaArrayType*) _tmp36_) : NULL);
            array_type = _tmp37_;
            if (array_type != NULL) {
                  gboolean _tmp39_;
                  _tmp39_ = vala_array_type_get_inline_allocated (array_type);
                  _tmp38_ = !_tmp39_;
            } else {
                  _tmp38_ = FALSE;
            }
            if (_tmp38_) {
                  ValaCCodeExpression* _tmp40_ = NULL;
                  ValaCCodeExpression* _tmp41_;
                  ValaCCodeMemberAccess* _tmp42_ = NULL;
                  _tmp40_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, src);
                  _tmp41_ = VALA_CCODE_EXPRESSION (_tmp40_);
                  _tmp42_ = vala_ccode_member_access_new (_tmp41_, "data", FALSE);
                  _vala_ccode_node_unref0 (csrc);
                  csrc = (ValaCCodeExpression*) _tmp42_;
                  _vala_ccode_node_unref0 (_tmp41_);
            } else {
                  ValaCCodeExpression* _tmp43_ = NULL;
                  _tmp43_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, src);
                  _vala_ccode_node_unref0 (csrc);
                  csrc = VALA_CCODE_EXPRESSION (_tmp43_);
            }
            _tmp44_ = vala_element_access_get_indices (src_ea);
            _tmp45_ = _tmp44_;
            _tmp46_ = vala_list_get (_tmp45_, 0);
            _tmp47_ = (ValaExpression*) _tmp46_;
            _tmp48_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, _tmp47_);
            _vala_ccode_node_unref0 (src_index);
            src_index = VALA_CCODE_EXPRESSION (_tmp48_);
            _vala_code_node_unref0 (_tmp47_);
            _vala_iterable_unref0 (_tmp45_);
            _vala_code_node_unref0 (array_type);
      } else {
            ValaCCodeExpression* _tmp49_ = NULL;
            _tmp49_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, src);
            _vala_ccode_node_unref0 (csrc);
            csrc = VALA_CCODE_EXPRESSION (_tmp49_);
      }
      _tmp50_ = vala_ccode_identifier_new ("dova_type_value_copy");
      _tmp51_ = _tmp50_;
      _tmp52_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp51_);
      _tmp53_ = _tmp52_;
      _vala_ccode_node_unref0 (_tmp51_);
      ccall = _tmp53_;
      _tmp54_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
      _tmp55_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp54_);
      if (VALA_IS_TYPESYMBOL (_tmp55_)) {
            ValaTypeParameter* _tmp56_ = NULL;
            ValaSymbol* _tmp57_ = NULL;
            ValaCCodeIdentifier* _tmp58_ = NULL;
            ValaCCodeIdentifier* _tmp59_;
            ValaCCodeMemberAccess* _tmp60_ = NULL;
            ValaCCodeMemberAccess* _tmp61_;
            ValaCCodeExpression* _tmp62_ = NULL;
            ValaCCodeExpression* _tmp63_;
            ValaTypeParameter* _tmp64_ = NULL;
            const gchar* _tmp65_ = NULL;
            gchar* _tmp66_ = NULL;
            gchar* _tmp67_;
            gchar* _tmp68_ = NULL;
            gchar* _tmp69_;
            ValaCCodeMemberAccess* _tmp70_ = NULL;
            ValaCCodeMemberAccess* _tmp71_;
            _tmp56_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
            _tmp57_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp56_);
            _tmp58_ = vala_ccode_identifier_new ("this");
            _tmp59_ = _tmp58_;
            _tmp60_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp59_, "type");
            _tmp61_ = _tmp60_;
            _tmp62_ = vala_dova_base_module_get_type_private_from_type ((ValaDovaBaseModule*) self, VALA_OBJECT_TYPE_SYMBOL (_tmp57_), (ValaCCodeExpression*) _tmp61_);
            _tmp63_ = _tmp62_;
            _tmp64_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
            _tmp65_ = vala_symbol_get_name ((ValaSymbol*) _tmp64_);
            _tmp66_ = g_utf8_strdown (_tmp65_, (gssize) (-1));
            _tmp67_ = _tmp66_;
            _tmp68_ = g_strdup_printf ("%s_type", _tmp67_);
            _tmp69_ = _tmp68_;
            _tmp70_ = vala_ccode_member_access_new_pointer (_tmp63_, _tmp69_);
            _tmp71_ = _tmp70_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp71_);
            _vala_ccode_node_unref0 (_tmp71_);
            _g_free0 (_tmp69_);
            _g_free0 (_tmp67_);
            _vala_ccode_node_unref0 (_tmp63_);
            _vala_ccode_node_unref0 (_tmp61_);
            _vala_ccode_node_unref0 (_tmp59_);
      } else {
            ValaTypeParameter* _tmp72_ = NULL;
            const gchar* _tmp73_ = NULL;
            gchar* _tmp74_ = NULL;
            gchar* _tmp75_;
            gchar* _tmp76_ = NULL;
            gchar* _tmp77_;
            ValaCCodeIdentifier* _tmp78_ = NULL;
            ValaCCodeIdentifier* _tmp79_;
            _tmp72_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
            _tmp73_ = vala_symbol_get_name ((ValaSymbol*) _tmp72_);
            _tmp74_ = g_utf8_strdown (_tmp73_, (gssize) (-1));
            _tmp75_ = _tmp74_;
            _tmp76_ = g_strdup_printf ("%s_type", _tmp75_);
            _tmp77_ = _tmp76_;
            _tmp78_ = vala_ccode_identifier_new (_tmp77_);
            _tmp79_ = _tmp78_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp79_);
            _vala_ccode_node_unref0 (_tmp79_);
            _g_free0 (_tmp77_);
            _g_free0 (_tmp75_);
      }
      vala_ccode_function_call_add_argument (ccall, cdest);
      vala_ccode_function_call_add_argument (ccall, dest_index);
      vala_ccode_function_call_add_argument (ccall, csrc);
      vala_ccode_function_call_add_argument (ccall, src_index);
      vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) assignment, (ValaCCodeExpression*) ccall);
      _vala_ccode_node_unref0 (ccall);
      _vala_code_node_unref0 (src_ea);
      _vala_code_node_unref0 (dest_ea);
      _vala_ccode_node_unref0 (src_index);
      _vala_ccode_node_unref0 (csrc);
      _vala_code_node_unref0 (src);
      _vala_ccode_node_unref0 (dest_index);
      _vala_ccode_node_unref0 (cdest);
      _vala_code_node_unref0 (dest);
      _vala_code_node_unref0 (generic_type);
}


static void vala_dova_value_module_real_store_variable (ValaDovaAssignmentModule* base, ValaVariable* variable, ValaTargetValue* lvalue, ValaTargetValue* value, gboolean initializer) {
      ValaDovaValueModule * self;
      ValaDataType* _tmp0_ = NULL;
      ValaDataType* _tmp1_;
      ValaGenericType* _tmp2_;
      ValaGenericType* generic_type;
      ValaCCodeIdentifier* _tmp3_ = NULL;
      ValaCCodeIdentifier* _tmp4_;
      ValaCCodeFunctionCall* _tmp5_ = NULL;
      ValaCCodeFunctionCall* _tmp6_;
      ValaCCodeFunctionCall* ccall;
      ValaTypeParameter* _tmp7_ = NULL;
      ValaSymbol* _tmp8_ = NULL;
      ValaCCodeExpression* _tmp33_ = NULL;
      ValaCCodeExpression* _tmp34_;
      ValaCCodeConstant* _tmp35_ = NULL;
      ValaCCodeConstant* _tmp36_;
      ValaCCodeExpression* _tmp37_ = NULL;
      ValaCCodeExpression* _tmp38_;
      ValaCCodeConstant* _tmp39_ = NULL;
      ValaCCodeConstant* _tmp40_;
      ValaCCodeFunction* _tmp41_ = NULL;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (variable != NULL);
      g_return_if_fail (lvalue != NULL);
      g_return_if_fail (value != NULL);
      _tmp0_ = vala_target_value_get_value_type (lvalue);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_GENERIC_TYPE (_tmp1_) ? ((ValaGenericType*) _tmp1_) : NULL);
      generic_type = _tmp2_;
      if (generic_type == NULL) {
            VALA_DOVA_ASSIGNMENT_MODULE_CLASS (vala_dova_value_module_parent_class)->store_variable ((ValaDovaAssignmentModule*) VALA_DOVA_OBJECT_MODULE (self), variable, lvalue, value, initializer);
            _vala_code_node_unref0 (generic_type);
            return;
      }
      _tmp3_ = vala_ccode_identifier_new ("dova_type_value_copy");
      _tmp4_ = _tmp3_;
      _tmp5_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp4_);
      _tmp6_ = _tmp5_;
      _vala_ccode_node_unref0 (_tmp4_);
      ccall = _tmp6_;
      _tmp7_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
      _tmp8_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp7_);
      if (VALA_IS_TYPESYMBOL (_tmp8_)) {
            ValaTypeParameter* _tmp9_ = NULL;
            ValaSymbol* _tmp10_ = NULL;
            ValaCCodeIdentifier* _tmp11_ = NULL;
            ValaCCodeIdentifier* _tmp12_;
            ValaCCodeMemberAccess* _tmp13_ = NULL;
            ValaCCodeMemberAccess* _tmp14_;
            ValaCCodeExpression* _tmp15_ = NULL;
            ValaCCodeExpression* _tmp16_;
            ValaTypeParameter* _tmp17_ = NULL;
            const gchar* _tmp18_ = NULL;
            gchar* _tmp19_ = NULL;
            gchar* _tmp20_;
            gchar* _tmp21_ = NULL;
            gchar* _tmp22_;
            ValaCCodeMemberAccess* _tmp23_ = NULL;
            ValaCCodeMemberAccess* _tmp24_;
            _tmp9_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
            _tmp10_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp9_);
            _tmp11_ = vala_ccode_identifier_new ("this");
            _tmp12_ = _tmp11_;
            _tmp13_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp12_, "type");
            _tmp14_ = _tmp13_;
            _tmp15_ = vala_dova_base_module_get_type_private_from_type ((ValaDovaBaseModule*) self, VALA_OBJECT_TYPE_SYMBOL (_tmp10_), (ValaCCodeExpression*) _tmp14_);
            _tmp16_ = _tmp15_;
            _tmp17_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
            _tmp18_ = vala_symbol_get_name ((ValaSymbol*) _tmp17_);
            _tmp19_ = g_utf8_strdown (_tmp18_, (gssize) (-1));
            _tmp20_ = _tmp19_;
            _tmp21_ = g_strdup_printf ("%s_type", _tmp20_);
            _tmp22_ = _tmp21_;
            _tmp23_ = vala_ccode_member_access_new_pointer (_tmp16_, _tmp22_);
            _tmp24_ = _tmp23_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp24_);
            _vala_ccode_node_unref0 (_tmp24_);
            _g_free0 (_tmp22_);
            _g_free0 (_tmp20_);
            _vala_ccode_node_unref0 (_tmp16_);
            _vala_ccode_node_unref0 (_tmp14_);
            _vala_ccode_node_unref0 (_tmp12_);
      } else {
            ValaTypeParameter* _tmp25_ = NULL;
            const gchar* _tmp26_ = NULL;
            gchar* _tmp27_ = NULL;
            gchar* _tmp28_;
            gchar* _tmp29_ = NULL;
            gchar* _tmp30_;
            ValaCCodeIdentifier* _tmp31_ = NULL;
            ValaCCodeIdentifier* _tmp32_;
            _tmp25_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
            _tmp26_ = vala_symbol_get_name ((ValaSymbol*) _tmp25_);
            _tmp27_ = g_utf8_strdown (_tmp26_, (gssize) (-1));
            _tmp28_ = _tmp27_;
            _tmp29_ = g_strdup_printf ("%s_type", _tmp28_);
            _tmp30_ = _tmp29_;
            _tmp31_ = vala_ccode_identifier_new (_tmp30_);
            _tmp32_ = _tmp31_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp32_);
            _vala_ccode_node_unref0 (_tmp32_);
            _g_free0 (_tmp30_);
            _g_free0 (_tmp28_);
      }
      _tmp33_ = vala_dova_base_module_get_cvalue_ ((ValaDovaBaseModule*) self, lvalue);
      _tmp34_ = _tmp33_;
      vala_ccode_function_call_add_argument (ccall, _tmp34_);
      _vala_ccode_node_unref0 (_tmp34_);
      _tmp35_ = vala_ccode_constant_new ("0");
      _tmp36_ = _tmp35_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp36_);
      _vala_ccode_node_unref0 (_tmp36_);
      _tmp37_ = vala_dova_base_module_get_cvalue_ ((ValaDovaBaseModule*) self, value);
      _tmp38_ = _tmp37_;
      vala_ccode_function_call_add_argument (ccall, _tmp38_);
      _vala_ccode_node_unref0 (_tmp38_);
      _tmp39_ = vala_ccode_constant_new ("0");
      _tmp40_ = _tmp39_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp40_);
      _vala_ccode_node_unref0 (_tmp40_);
      _tmp41_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self);
      vala_ccode_function_add_expression (_tmp41_, (ValaCCodeExpression*) ccall);
      _vala_ccode_node_unref0 (ccall);
      _vala_code_node_unref0 (generic_type);
}


static void vala_dova_value_module_real_visit_binary_expression (ValaCodeVisitor* base, ValaBinaryExpression* expr) {
      ValaDovaValueModule * self;
      ValaExpression* _tmp0_ = NULL;
      ValaDataType* _tmp1_ = NULL;
      ValaDataType* _tmp2_;
      ValaGenericType* _tmp3_;
      ValaGenericType* generic_type;
      ValaCCodeExpression* cleft = NULL;
      ValaCCodeConstant* _tmp4_ = NULL;
      ValaCCodeExpression* left_index;
      ValaCCodeExpression* cright = NULL;
      ValaCCodeConstant* _tmp5_ = NULL;
      ValaCCodeExpression* right_index;
      ValaExpression* _tmp6_ = NULL;
      ValaExpression* _tmp7_;
      ValaElementAccess* _tmp8_;
      ValaElementAccess* left_ea;
      ValaExpression* _tmp9_ = NULL;
      ValaExpression* _tmp10_;
      ValaElementAccess* _tmp11_;
      ValaElementAccess* right_ea;
      ValaCCodeIdentifier* _tmp34_ = NULL;
      ValaCCodeIdentifier* _tmp35_;
      ValaCCodeFunctionCall* _tmp36_ = NULL;
      ValaCCodeFunctionCall* _tmp37_;
      ValaCCodeFunctionCall* ccall;
      ValaCCodeExpression* _tmp38_ = NULL;
      ValaCCodeExpression* _tmp39_;
      ValaBinaryOperator _tmp40_;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (expr != NULL);
      _tmp0_ = vala_binary_expression_get_left (expr);
      _tmp1_ = vala_expression_get_value_type (_tmp0_);
      _tmp2_ = _tmp1_;
      _tmp3_ = _vala_code_node_ref0 (VALA_IS_GENERIC_TYPE (_tmp2_) ? ((ValaGenericType*) _tmp2_) : NULL);
      generic_type = _tmp3_;
      if (generic_type == NULL) {
            VALA_CODE_VISITOR_CLASS (vala_dova_value_module_parent_class)->visit_binary_expression ((ValaCodeVisitor*) VALA_DOVA_OBJECT_MODULE (self), expr);
            _vala_code_node_unref0 (generic_type);
            return;
      }
      _tmp4_ = vala_ccode_constant_new ("0");
      left_index = (ValaCCodeExpression*) _tmp4_;
      _tmp5_ = vala_ccode_constant_new ("0");
      right_index = (ValaCCodeExpression*) _tmp5_;
      _tmp6_ = vala_binary_expression_get_left (expr);
      _tmp7_ = _tmp6_;
      _tmp8_ = _vala_code_node_ref0 (VALA_IS_ELEMENT_ACCESS (_tmp7_) ? ((ValaElementAccess*) _tmp7_) : NULL);
      left_ea = _tmp8_;
      _tmp9_ = vala_binary_expression_get_right (expr);
      _tmp10_ = _tmp9_;
      _tmp11_ = _vala_code_node_ref0 (VALA_IS_ELEMENT_ACCESS (_tmp10_) ? ((ValaElementAccess*) _tmp10_) : NULL);
      right_ea = _tmp11_;
      if (left_ea != NULL) {
            ValaExpression* _tmp12_ = NULL;
            ValaCCodeExpression* _tmp13_ = NULL;
            ValaCCodeExpression* _tmp14_;
            ValaCCodeMemberAccess* _tmp15_ = NULL;
            ValaList* _tmp16_ = NULL;
            ValaList* _tmp17_;
            gpointer _tmp18_ = NULL;
            ValaExpression* _tmp19_;
            ValaCCodeExpression* _tmp20_ = NULL;
            _tmp12_ = vala_element_access_get_container (left_ea);
            _tmp13_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, _tmp12_);
            _tmp14_ = VALA_CCODE_EXPRESSION (_tmp13_);
            _tmp15_ = vala_ccode_member_access_new (_tmp14_, "data", FALSE);
            _vala_ccode_node_unref0 (cleft);
            cleft = (ValaCCodeExpression*) _tmp15_;
            _vala_ccode_node_unref0 (_tmp14_);
            _tmp16_ = vala_element_access_get_indices (left_ea);
            _tmp17_ = _tmp16_;
            _tmp18_ = vala_list_get (_tmp17_, 0);
            _tmp19_ = (ValaExpression*) _tmp18_;
            _tmp20_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, _tmp19_);
            _vala_ccode_node_unref0 (left_index);
            left_index = VALA_CCODE_EXPRESSION (_tmp20_);
            _vala_code_node_unref0 (_tmp19_);
            _vala_iterable_unref0 (_tmp17_);
      } else {
            ValaExpression* _tmp21_ = NULL;
            ValaCCodeExpression* _tmp22_ = NULL;
            _tmp21_ = vala_binary_expression_get_left (expr);
            _tmp22_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, _tmp21_);
            _vala_ccode_node_unref0 (cleft);
            cleft = VALA_CCODE_EXPRESSION (_tmp22_);
      }
      if (right_ea != NULL) {
            ValaExpression* _tmp23_ = NULL;
            ValaCCodeExpression* _tmp24_ = NULL;
            ValaCCodeExpression* _tmp25_;
            ValaCCodeMemberAccess* _tmp26_ = NULL;
            ValaList* _tmp27_ = NULL;
            ValaList* _tmp28_;
            gpointer _tmp29_ = NULL;
            ValaExpression* _tmp30_;
            ValaCCodeExpression* _tmp31_ = NULL;
            _tmp23_ = vala_element_access_get_container (right_ea);
            _tmp24_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, _tmp23_);
            _tmp25_ = VALA_CCODE_EXPRESSION (_tmp24_);
            _tmp26_ = vala_ccode_member_access_new (_tmp25_, "data", FALSE);
            _vala_ccode_node_unref0 (cright);
            cright = (ValaCCodeExpression*) _tmp26_;
            _vala_ccode_node_unref0 (_tmp25_);
            _tmp27_ = vala_element_access_get_indices (right_ea);
            _tmp28_ = _tmp27_;
            _tmp29_ = vala_list_get (_tmp28_, 0);
            _tmp30_ = (ValaExpression*) _tmp29_;
            _tmp31_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, _tmp30_);
            _vala_ccode_node_unref0 (right_index);
            right_index = VALA_CCODE_EXPRESSION (_tmp31_);
            _vala_code_node_unref0 (_tmp30_);
            _vala_iterable_unref0 (_tmp28_);
      } else {
            ValaExpression* _tmp32_ = NULL;
            ValaCCodeExpression* _tmp33_ = NULL;
            _tmp32_ = vala_binary_expression_get_right (expr);
            _tmp33_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, _tmp32_);
            _vala_ccode_node_unref0 (cright);
            cright = VALA_CCODE_EXPRESSION (_tmp33_);
      }
      _tmp34_ = vala_ccode_identifier_new ("dova_type_value_equals");
      _tmp35_ = _tmp34_;
      _tmp36_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp35_);
      _tmp37_ = _tmp36_;
      _vala_ccode_node_unref0 (_tmp35_);
      ccall = _tmp37_;
      _tmp38_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, (ValaDataType*) generic_type, FALSE);
      _tmp39_ = _tmp38_;
      vala_ccode_function_call_add_argument (ccall, _tmp39_);
      _vala_ccode_node_unref0 (_tmp39_);
      vala_ccode_function_call_add_argument (ccall, cleft);
      vala_ccode_function_call_add_argument (ccall, left_index);
      vala_ccode_function_call_add_argument (ccall, cright);
      vala_ccode_function_call_add_argument (ccall, right_index);
      _tmp40_ = vala_binary_expression_get_operator (expr);
      if (_tmp40_ == VALA_BINARY_OPERATOR_EQUALITY) {
            vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) ccall);
      } else {
            ValaCCodeUnaryExpression* _tmp41_ = NULL;
            ValaCCodeUnaryExpression* _tmp42_;
            _tmp41_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) ccall);
            _tmp42_ = _tmp41_;
            vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp42_);
            _vala_ccode_node_unref0 (_tmp42_);
      }
      _vala_ccode_node_unref0 (ccall);
      _vala_code_node_unref0 (right_ea);
      _vala_code_node_unref0 (left_ea);
      _vala_ccode_node_unref0 (right_index);
      _vala_ccode_node_unref0 (cright);
      _vala_ccode_node_unref0 (left_index);
      _vala_ccode_node_unref0 (cleft);
      _vala_code_node_unref0 (generic_type);
}


static void vala_dova_value_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr) {
      ValaDovaValueModule * self;
      ValaExpression* _tmp0_ = NULL;
      ValaExpression* _tmp1_;
      ValaMemberAccess* _tmp2_;
      ValaMemberAccess* ma;
      gboolean _tmp3_ = FALSE;
      gboolean _tmp4_ = FALSE;
      const gchar* _tmp8_ = NULL;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (expr != NULL);
      _tmp0_ = vala_method_call_get_call (expr);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp1_) ? ((ValaMemberAccess*) _tmp1_) : NULL);
      ma = _tmp2_;
      if (ma == NULL) {
            _tmp4_ = TRUE;
      } else {
            ValaExpression* _tmp5_ = NULL;
            _tmp5_ = vala_member_access_get_inner (ma);
            _tmp4_ = _tmp5_ == NULL;
      }
      if (_tmp4_) {
            _tmp3_ = TRUE;
      } else {
            ValaExpression* _tmp6_ = NULL;
            ValaDataType* _tmp7_ = NULL;
            _tmp6_ = vala_member_access_get_inner (ma);
            _tmp7_ = vala_expression_get_value_type (_tmp6_);
            _tmp3_ = !VALA_IS_GENERIC_TYPE (_tmp7_);
      }
      if (_tmp3_) {
            VALA_CODE_VISITOR_CLASS (vala_dova_value_module_parent_class)->visit_method_call ((ValaCodeVisitor*) VALA_DOVA_OBJECT_MODULE (self), expr);
            _vala_code_node_unref0 (ma);
            return;
      }
      vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
      _tmp8_ = vala_member_access_get_member_name (ma);
      if (g_strcmp0 (_tmp8_, "hash") == 0) {
            ValaExpression* _tmp9_ = NULL;
            ValaExpression* _tmp10_;
            ValaExpression* val;
            ValaCCodeExpression* cval = NULL;
            ValaCCodeConstant* _tmp11_ = NULL;
            ValaCCodeExpression* val_index;
            ValaExpression* _tmp12_;
            ValaElementAccess* _tmp13_;
            ValaElementAccess* val_ea;
            ValaCCodeIdentifier* _tmp25_ = NULL;
            ValaCCodeIdentifier* _tmp26_;
            ValaCCodeFunctionCall* _tmp27_ = NULL;
            ValaCCodeFunctionCall* _tmp28_;
            ValaCCodeFunctionCall* ccall;
            ValaExpression* _tmp29_ = NULL;
            ValaDataType* _tmp30_ = NULL;
            ValaCCodeExpression* _tmp31_ = NULL;
            ValaCCodeExpression* _tmp32_;
            _tmp9_ = vala_member_access_get_inner (ma);
            _tmp10_ = _vala_code_node_ref0 (_tmp9_);
            val = _tmp10_;
            _tmp11_ = vala_ccode_constant_new ("0");
            val_index = (ValaCCodeExpression*) _tmp11_;
            _tmp12_ = val;
            _tmp13_ = _vala_code_node_ref0 (VALA_IS_ELEMENT_ACCESS (_tmp12_) ? ((ValaElementAccess*) _tmp12_) : NULL);
            val_ea = _tmp13_;
            if (val_ea != NULL) {
                  ValaExpression* _tmp14_ = NULL;
                  ValaExpression* _tmp15_;
                  ValaCCodeExpression* _tmp16_ = NULL;
                  ValaCCodeExpression* _tmp17_;
                  ValaCCodeMemberAccess* _tmp18_ = NULL;
                  ValaList* _tmp19_ = NULL;
                  ValaList* _tmp20_;
                  gpointer _tmp21_ = NULL;
                  ValaExpression* _tmp22_;
                  ValaCCodeExpression* _tmp23_ = NULL;
                  _tmp14_ = vala_element_access_get_container (val_ea);
                  _tmp15_ = _vala_code_node_ref0 (_tmp14_);
                  _vala_code_node_unref0 (val);
                  val = _tmp15_;
                  _tmp16_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, val);
                  _tmp17_ = VALA_CCODE_EXPRESSION (_tmp16_);
                  _tmp18_ = vala_ccode_member_access_new (_tmp17_, "data", FALSE);
                  _vala_ccode_node_unref0 (cval);
                  cval = (ValaCCodeExpression*) _tmp18_;
                  _vala_ccode_node_unref0 (_tmp17_);
                  _tmp19_ = vala_element_access_get_indices (val_ea);
                  _tmp20_ = _tmp19_;
                  _tmp21_ = vala_list_get (_tmp20_, 0);
                  _tmp22_ = (ValaExpression*) _tmp21_;
                  _tmp23_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, _tmp22_);
                  _vala_ccode_node_unref0 (val_index);
                  val_index = VALA_CCODE_EXPRESSION (_tmp23_);
                  _vala_code_node_unref0 (_tmp22_);
                  _vala_iterable_unref0 (_tmp20_);
            } else {
                  ValaCCodeExpression* _tmp24_ = NULL;
                  _tmp24_ = vala_dova_base_module_get_ccodenode ((ValaDovaBaseModule*) self, val);
                  _vala_ccode_node_unref0 (cval);
                  cval = VALA_CCODE_EXPRESSION (_tmp24_);
            }
            _tmp25_ = vala_ccode_identifier_new ("dova_type_value_hash");
            _tmp26_ = _tmp25_;
            _tmp27_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp26_);
            _tmp28_ = _tmp27_;
            _vala_ccode_node_unref0 (_tmp26_);
            ccall = _tmp28_;
            _tmp29_ = vala_member_access_get_inner (ma);
            _tmp30_ = vala_expression_get_value_type (_tmp29_);
            _tmp31_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp30_, FALSE);
            _tmp32_ = _tmp31_;
            vala_ccode_function_call_add_argument (ccall, _tmp32_);
            _vala_ccode_node_unref0 (_tmp32_);
            vala_ccode_function_call_add_argument (ccall, cval);
            vala_ccode_function_call_add_argument (ccall, val_index);
            vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) ccall);
            _vala_ccode_node_unref0 (ccall);
            _vala_code_node_unref0 (val_ea);
            _vala_ccode_node_unref0 (val_index);
            _vala_ccode_node_unref0 (cval);
            _vala_code_node_unref0 (val);
      }
      _vala_code_node_unref0 (ma);
}


static gpointer _vala_ccode_node_ref0 (gpointer self) {
      return self ? vala_ccode_node_ref (self) : NULL;
}


static void vala_dova_value_module_real_visit_list_literal (ValaCodeVisitor* base, ValaListLiteral* expr) {
      ValaDovaValueModule * self;
      ValaCCodeExpression* ptr = NULL;
      ValaList* _tmp0_ = NULL;
      ValaList* _tmp1_;
      gint _tmp2_;
      gint _tmp3_;
      gint length;
      ValaDataType* _tmp24_ = NULL;
      ValaSourceReference* _tmp25_ = NULL;
      ValaArrayType* _tmp26_ = NULL;
      ValaArrayType* array_type;
      ValaLocalVariable* _tmp27_ = NULL;
      ValaLocalVariable* temp_var;
      const gchar* _tmp28_ = NULL;
      ValaCCodeExpression* _tmp29_ = NULL;
      ValaCCodeExpression* name_cnode;
      ValaCCodeIdentifier* _tmp30_ = NULL;
      ValaCCodeIdentifier* _tmp31_;
      ValaCCodeFunctionCall* _tmp32_ = NULL;
      ValaCCodeFunctionCall* _tmp33_;
      ValaCCodeFunctionCall* array_init;
      ValaCCodeUnaryExpression* _tmp34_ = NULL;
      ValaCCodeUnaryExpression* _tmp35_;
      gchar* _tmp36_ = NULL;
      gchar* _tmp37_;
      ValaCCodeConstant* _tmp38_ = NULL;
      ValaCCodeConstant* _tmp39_;
      ValaCCodeFunction* _tmp40_ = NULL;
      ValaCCodeIdentifier* _tmp41_ = NULL;
      ValaCCodeIdentifier* _tmp42_;
      ValaCCodeFunctionCall* _tmp43_ = NULL;
      ValaCCodeFunctionCall* _tmp44_;
      ValaCCodeFunctionCall* list_creation;
      ValaDataType* _tmp45_ = NULL;
      ValaCCodeExpression* _tmp46_ = NULL;
      ValaCCodeExpression* _tmp47_;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (expr != NULL);
      _tmp0_ = vala_list_literal_get_expressions (expr);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_collection_get_size ((ValaCollection*) _tmp1_);
      _tmp3_ = _tmp2_;
      _vala_iterable_unref0 (_tmp1_);
      length = _tmp3_;
      if (length == 0) {
            ValaCCodeConstant* _tmp4_ = NULL;
            _tmp4_ = vala_ccode_constant_new ("NULL");
            _vala_ccode_node_unref0 (ptr);
            ptr = (ValaCCodeExpression*) _tmp4_;
      } else {
            ValaDataType* _tmp5_ = NULL;
            ValaSourceReference* _tmp6_ = NULL;
            ValaArrayType* _tmp7_ = NULL;
            ValaArrayType* array_type;
            ValaLocalVariable* _tmp8_ = NULL;
            ValaLocalVariable* temp_var;
            const gchar* _tmp9_ = NULL;
            ValaCCodeExpression* _tmp10_ = NULL;
            ValaCCodeExpression* name_cnode;
            gint i;
            ValaCCodeExpression* _tmp23_;
            _tmp5_ = vala_list_literal_get_element_type (expr);
            _tmp6_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
            _tmp7_ = vala_array_type_new (_tmp5_, 1, _tmp6_);
            array_type = _tmp7_;
            vala_array_type_set_inline_allocated (array_type, TRUE);
            vala_array_type_set_fixed_length (array_type, TRUE);
            vala_array_type_set_length (array_type, length);
            _tmp8_ = vala_dova_base_module_get_temp_variable ((ValaDovaBaseModule*) self, (ValaDataType*) array_type, TRUE, (ValaCodeNode*) expr);
            temp_var = _tmp8_;
            _tmp9_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
            _tmp10_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp9_);
            name_cnode = _tmp10_;
            vala_dova_base_module_emit_temp_var ((ValaDovaBaseModule*) self, temp_var);
            i = 0;
            {
                  ValaList* _tmp11_ = NULL;
                  ValaList* _e_list;
                  gint _tmp12_;
                  gint _e_size;
                  gint _e_index;
                  _tmp11_ = vala_list_literal_get_expressions (expr);
                  _e_list = _tmp11_;
                  _tmp12_ = vala_collection_get_size ((ValaCollection*) _e_list);
                  _e_size = _tmp12_;
                  _e_index = -1;
                  while (TRUE) {
                        gpointer _tmp13_ = NULL;
                        ValaExpression* e;
                        ValaCCodeFunction* _tmp14_ = NULL;
                        gchar* _tmp15_ = NULL;
                        gchar* _tmp16_;
                        ValaCCodeConstant* _tmp17_ = NULL;
                        ValaCCodeConstant* _tmp18_;
                        ValaCCodeElementAccess* _tmp19_ = NULL;
                        ValaCCodeElementAccess* _tmp20_;
                        ValaCCodeExpression* _tmp21_ = NULL;
                        ValaCCodeExpression* _tmp22_;
                        _e_index = _e_index + 1;
                        if (!(_e_index < _e_size)) {
                              break;
                        }
                        _tmp13_ = vala_list_get (_e_list, _e_index);
                        e = (ValaExpression*) _tmp13_;
                        _tmp14_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self);
                        _tmp15_ = g_strdup_printf ("%i", i);
                        _tmp16_ = _tmp15_;
                        _tmp17_ = vala_ccode_constant_new (_tmp16_);
                        _tmp18_ = _tmp17_;
                        _tmp19_ = vala_ccode_element_access_new (name_cnode, (ValaCCodeExpression*) _tmp18_);
                        _tmp20_ = _tmp19_;
                        _tmp21_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, e);
                        _tmp22_ = _tmp21_;
                        vala_ccode_function_add_assignment (_tmp14_, (ValaCCodeExpression*) _tmp20_, _tmp22_);
                        _vala_ccode_node_unref0 (_tmp22_);
                        _vala_ccode_node_unref0 (_tmp20_);
                        _vala_ccode_node_unref0 (_tmp18_);
                        _g_free0 (_tmp16_);
                        i++;
                        _vala_code_node_unref0 (e);
                  }
                  _vala_iterable_unref0 (_e_list);
            }
            _tmp23_ = _vala_ccode_node_ref0 (name_cnode);
            _vala_ccode_node_unref0 (ptr);
            ptr = _tmp23_;
            _vala_ccode_node_unref0 (name_cnode);
            _vala_code_node_unref0 (temp_var);
            _vala_code_node_unref0 (array_type);
      }
      _tmp24_ = vala_list_literal_get_element_type (expr);
      _tmp25_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
      _tmp26_ = vala_array_type_new (_tmp24_, 1, _tmp25_);
      array_type = _tmp26_;
      _tmp27_ = vala_dova_base_module_get_temp_variable ((ValaDovaBaseModule*) self, (ValaDataType*) array_type, TRUE, (ValaCodeNode*) expr);
      temp_var = _tmp27_;
      _tmp28_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
      _tmp29_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp28_);
      name_cnode = _tmp29_;
      vala_dova_base_module_emit_temp_var ((ValaDovaBaseModule*) self, temp_var);
      _tmp30_ = vala_ccode_identifier_new ("dova_array_init");
      _tmp31_ = _tmp30_;
      _tmp32_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp31_);
      _tmp33_ = _tmp32_;
      _vala_ccode_node_unref0 (_tmp31_);
      array_init = _tmp33_;
      _tmp34_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, name_cnode);
      _tmp35_ = _tmp34_;
      vala_ccode_function_call_add_argument (array_init, (ValaCCodeExpression*) _tmp35_);
      _vala_ccode_node_unref0 (_tmp35_);
      vala_ccode_function_call_add_argument (array_init, ptr);
      _tmp36_ = g_strdup_printf ("%i", length);
      _tmp37_ = _tmp36_;
      _tmp38_ = vala_ccode_constant_new (_tmp37_);
      _tmp39_ = _tmp38_;
      vala_ccode_function_call_add_argument (array_init, (ValaCCodeExpression*) _tmp39_);
      _vala_ccode_node_unref0 (_tmp39_);
      _g_free0 (_tmp37_);
      _tmp40_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self);
      vala_ccode_function_add_expression (_tmp40_, (ValaCCodeExpression*) array_init);
      _tmp41_ = vala_ccode_identifier_new ("dova_list_new");
      _tmp42_ = _tmp41_;
      _tmp43_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp42_);
      _tmp44_ = _tmp43_;
      _vala_ccode_node_unref0 (_tmp42_);
      list_creation = _tmp44_;
      _tmp45_ = vala_list_literal_get_element_type (expr);
      _tmp46_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp45_, FALSE);
      _tmp47_ = _tmp46_;
      vala_ccode_function_call_add_argument (list_creation, _tmp47_);
      _vala_ccode_node_unref0 (_tmp47_);
      vala_ccode_function_call_add_argument (list_creation, name_cnode);
      vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) list_creation);
      _vala_ccode_node_unref0 (list_creation);
      _vala_ccode_node_unref0 (array_init);
      _vala_ccode_node_unref0 (name_cnode);
      _vala_code_node_unref0 (temp_var);
      _vala_code_node_unref0 (array_type);
      _vala_ccode_node_unref0 (ptr);
}


static void vala_dova_value_module_real_visit_set_literal (ValaCodeVisitor* base, ValaSetLiteral* expr) {
      ValaDovaValueModule * self;
      ValaCCodeCommaExpression* _tmp0_ = NULL;
      ValaCCodeCommaExpression* ce;
      ValaList* _tmp1_ = NULL;
      ValaList* _tmp2_;
      gint _tmp3_;
      gint _tmp4_;
      gint length;
      ValaCCodeIdentifier* _tmp26_ = NULL;
      ValaCCodeIdentifier* _tmp27_;
      ValaCCodeFunctionCall* _tmp28_ = NULL;
      ValaCCodeFunctionCall* _tmp29_;
      ValaCCodeFunctionCall* set_creation;
      ValaDataType* _tmp30_ = NULL;
      ValaCCodeExpression* _tmp31_ = NULL;
      ValaCCodeExpression* _tmp32_;
      gchar* _tmp33_ = NULL;
      gchar* _tmp34_;
      ValaCCodeConstant* _tmp35_ = NULL;
      ValaCCodeConstant* _tmp36_;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (expr != NULL);
      _tmp0_ = vala_ccode_comma_expression_new ();
      ce = _tmp0_;
      _tmp1_ = vala_set_literal_get_expressions (expr);
      _tmp2_ = _tmp1_;
      _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
      _tmp4_ = _tmp3_;
      _vala_iterable_unref0 (_tmp2_);
      length = _tmp4_;
      if (length == 0) {
            ValaCCodeConstant* _tmp5_ = NULL;
            ValaCCodeConstant* _tmp6_;
            _tmp5_ = vala_ccode_constant_new ("NULL");
            _tmp6_ = _tmp5_;
            vala_ccode_comma_expression_append_expression (ce, (ValaCCodeExpression*) _tmp6_);
            _vala_ccode_node_unref0 (_tmp6_);
      } else {
            ValaDataType* _tmp7_ = NULL;
            ValaSourceReference* _tmp8_ = NULL;
            ValaArrayType* _tmp9_ = NULL;
            ValaArrayType* array_type;
            ValaLocalVariable* _tmp10_ = NULL;
            ValaLocalVariable* temp_var;
            const gchar* _tmp11_ = NULL;
            ValaCCodeExpression* _tmp12_ = NULL;
            ValaCCodeExpression* name_cnode;
            gint i;
            _tmp7_ = vala_set_literal_get_element_type (expr);
            _tmp8_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
            _tmp9_ = vala_array_type_new (_tmp7_, 1, _tmp8_);
            array_type = _tmp9_;
            vala_array_type_set_inline_allocated (array_type, TRUE);
            vala_array_type_set_fixed_length (array_type, TRUE);
            vala_array_type_set_length (array_type, length);
            _tmp10_ = vala_dova_base_module_get_temp_variable ((ValaDovaBaseModule*) self, (ValaDataType*) array_type, TRUE, (ValaCodeNode*) expr);
            temp_var = _tmp10_;
            _tmp11_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
            _tmp12_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp11_);
            name_cnode = _tmp12_;
            vala_dova_base_module_emit_temp_var ((ValaDovaBaseModule*) self, temp_var);
            i = 0;
            {
                  ValaList* _tmp13_ = NULL;
                  ValaList* _e_list;
                  gint _tmp14_;
                  gint _e_size;
                  gint _e_index;
                  _tmp13_ = vala_set_literal_get_expressions (expr);
                  _e_list = _tmp13_;
                  _tmp14_ = vala_collection_get_size ((ValaCollection*) _e_list);
                  _e_size = _tmp14_;
                  _e_index = -1;
                  while (TRUE) {
                        gpointer _tmp15_ = NULL;
                        ValaExpression* e;
                        gchar* _tmp16_ = NULL;
                        gchar* _tmp17_;
                        ValaCCodeConstant* _tmp18_ = NULL;
                        ValaCCodeConstant* _tmp19_;
                        ValaCCodeElementAccess* _tmp20_ = NULL;
                        ValaCCodeElementAccess* _tmp21_;
                        ValaCCodeExpression* _tmp22_ = NULL;
                        ValaCCodeExpression* _tmp23_;
                        ValaCCodeAssignment* _tmp24_ = NULL;
                        ValaCCodeAssignment* _tmp25_;
                        _e_index = _e_index + 1;
                        if (!(_e_index < _e_size)) {
                              break;
                        }
                        _tmp15_ = vala_list_get (_e_list, _e_index);
                        e = (ValaExpression*) _tmp15_;
                        _tmp16_ = g_strdup_printf ("%i", i);
                        _tmp17_ = _tmp16_;
                        _tmp18_ = vala_ccode_constant_new (_tmp17_);
                        _tmp19_ = _tmp18_;
                        _tmp20_ = vala_ccode_element_access_new (name_cnode, (ValaCCodeExpression*) _tmp19_);
                        _tmp21_ = _tmp20_;
                        _tmp22_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, e);
                        _tmp23_ = _tmp22_;
                        _tmp24_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp21_, _tmp23_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                        _tmp25_ = _tmp24_;
                        vala_ccode_comma_expression_append_expression (ce, (ValaCCodeExpression*) _tmp25_);
                        _vala_ccode_node_unref0 (_tmp25_);
                        _vala_ccode_node_unref0 (_tmp23_);
                        _vala_ccode_node_unref0 (_tmp21_);
                        _vala_ccode_node_unref0 (_tmp19_);
                        _g_free0 (_tmp17_);
                        i++;
                        _vala_code_node_unref0 (e);
                  }
                  _vala_iterable_unref0 (_e_list);
            }
            vala_ccode_comma_expression_append_expression (ce, name_cnode);
            _vala_ccode_node_unref0 (name_cnode);
            _vala_code_node_unref0 (temp_var);
            _vala_code_node_unref0 (array_type);
      }
      _tmp26_ = vala_ccode_identifier_new ("dova_set_new");
      _tmp27_ = _tmp26_;
      _tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_);
      _tmp29_ = _tmp28_;
      _vala_ccode_node_unref0 (_tmp27_);
      set_creation = _tmp29_;
      _tmp30_ = vala_set_literal_get_element_type (expr);
      _tmp31_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp30_, FALSE);
      _tmp32_ = _tmp31_;
      vala_ccode_function_call_add_argument (set_creation, _tmp32_);
      _vala_ccode_node_unref0 (_tmp32_);
      _tmp33_ = g_strdup_printf ("%i", length);
      _tmp34_ = _tmp33_;
      _tmp35_ = vala_ccode_constant_new (_tmp34_);
      _tmp36_ = _tmp35_;
      vala_ccode_function_call_add_argument (set_creation, (ValaCCodeExpression*) _tmp36_);
      _vala_ccode_node_unref0 (_tmp36_);
      _g_free0 (_tmp34_);
      vala_ccode_function_call_add_argument (set_creation, (ValaCCodeExpression*) ce);
      vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) set_creation);
      _vala_ccode_node_unref0 (set_creation);
      _vala_ccode_node_unref0 (ce);
}


static void vala_dova_value_module_real_visit_map_literal (ValaCodeVisitor* base, ValaMapLiteral* expr) {
      ValaDovaValueModule * self;
      ValaCCodeCommaExpression* _tmp0_ = NULL;
      ValaCCodeCommaExpression* key_ce;
      ValaCCodeCommaExpression* _tmp1_ = NULL;
      ValaCCodeCommaExpression* value_ce;
      ValaList* _tmp2_ = NULL;
      ValaList* _tmp3_;
      gint _tmp4_;
      gint _tmp5_;
      gint length;
      ValaCCodeIdentifier* _tmp51_ = NULL;
      ValaCCodeIdentifier* _tmp52_;
      ValaCCodeFunctionCall* _tmp53_ = NULL;
      ValaCCodeFunctionCall* _tmp54_;
      ValaCCodeFunctionCall* map_creation;
      ValaDataType* _tmp55_ = NULL;
      ValaCCodeExpression* _tmp56_ = NULL;
      ValaCCodeExpression* _tmp57_;
      ValaDataType* _tmp58_ = NULL;
      ValaCCodeExpression* _tmp59_ = NULL;
      ValaCCodeExpression* _tmp60_;
      gchar* _tmp61_ = NULL;
      gchar* _tmp62_;
      ValaCCodeConstant* _tmp63_ = NULL;
      ValaCCodeConstant* _tmp64_;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (expr != NULL);
      _tmp0_ = vala_ccode_comma_expression_new ();
      key_ce = _tmp0_;
      _tmp1_ = vala_ccode_comma_expression_new ();
      value_ce = _tmp1_;
      _tmp2_ = vala_map_literal_get_keys (expr);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_collection_get_size ((ValaCollection*) _tmp3_);
      _tmp5_ = _tmp4_;
      _vala_iterable_unref0 (_tmp3_);
      length = _tmp5_;
      if (length == 0) {
            ValaCCodeConstant* _tmp6_ = NULL;
            ValaCCodeConstant* _tmp7_;
            ValaCCodeConstant* _tmp8_ = NULL;
            ValaCCodeConstant* _tmp9_;
            _tmp6_ = vala_ccode_constant_new ("NULL");
            _tmp7_ = _tmp6_;
            vala_ccode_comma_expression_append_expression (key_ce, (ValaCCodeExpression*) _tmp7_);
            _vala_ccode_node_unref0 (_tmp7_);
            _tmp8_ = vala_ccode_constant_new ("NULL");
            _tmp9_ = _tmp8_;
            vala_ccode_comma_expression_append_expression (value_ce, (ValaCCodeExpression*) _tmp9_);
            _vala_ccode_node_unref0 (_tmp9_);
      } else {
            ValaDataType* _tmp10_ = NULL;
            ValaSourceReference* _tmp11_ = NULL;
            ValaArrayType* _tmp12_ = NULL;
            ValaArrayType* key_array_type;
            ValaLocalVariable* _tmp13_ = NULL;
            ValaLocalVariable* key_temp_var;
            const gchar* _tmp14_ = NULL;
            ValaCCodeExpression* _tmp15_ = NULL;
            ValaCCodeExpression* key_name_cnode;
            ValaDataType* _tmp16_ = NULL;
            ValaSourceReference* _tmp17_ = NULL;
            ValaArrayType* _tmp18_ = NULL;
            ValaArrayType* value_array_type;
            ValaLocalVariable* _tmp19_ = NULL;
            ValaLocalVariable* value_temp_var;
            const gchar* _tmp20_ = NULL;
            ValaCCodeExpression* _tmp21_ = NULL;
            ValaCCodeExpression* value_name_cnode;
            _tmp10_ = vala_map_literal_get_map_key_type (expr);
            _tmp11_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
            _tmp12_ = vala_array_type_new (_tmp10_, 1, _tmp11_);
            key_array_type = _tmp12_;
            vala_array_type_set_inline_allocated (key_array_type, TRUE);
            vala_array_type_set_fixed_length (key_array_type, TRUE);
            vala_array_type_set_length (key_array_type, length);
            _tmp13_ = vala_dova_base_module_get_temp_variable ((ValaDovaBaseModule*) self, (ValaDataType*) key_array_type, TRUE, (ValaCodeNode*) expr);
            key_temp_var = _tmp13_;
            _tmp14_ = vala_symbol_get_name ((ValaSymbol*) key_temp_var);
            _tmp15_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp14_);
            key_name_cnode = _tmp15_;
            vala_dova_base_module_emit_temp_var ((ValaDovaBaseModule*) self, key_temp_var);
            _tmp16_ = vala_map_literal_get_map_value_type (expr);
            _tmp17_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
            _tmp18_ = vala_array_type_new (_tmp16_, 1, _tmp17_);
            value_array_type = _tmp18_;
            vala_array_type_set_inline_allocated (value_array_type, TRUE);
            vala_array_type_set_fixed_length (value_array_type, TRUE);
            vala_array_type_set_length (value_array_type, length);
            _tmp19_ = vala_dova_base_module_get_temp_variable ((ValaDovaBaseModule*) self, (ValaDataType*) value_array_type, TRUE, (ValaCodeNode*) expr);
            value_temp_var = _tmp19_;
            _tmp20_ = vala_symbol_get_name ((ValaSymbol*) value_temp_var);
            _tmp21_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp20_);
            value_name_cnode = _tmp21_;
            vala_dova_base_module_emit_temp_var ((ValaDovaBaseModule*) self, value_temp_var);
            {
                  gint i;
                  i = 0;
                  {
                        gboolean _tmp22_;
                        _tmp22_ = TRUE;
                        while (TRUE) {
                              gchar* _tmp23_ = NULL;
                              gchar* _tmp24_;
                              ValaCCodeConstant* _tmp25_ = NULL;
                              ValaCCodeConstant* _tmp26_;
                              ValaCCodeElementAccess* _tmp27_ = NULL;
                              ValaCCodeElementAccess* _tmp28_;
                              ValaList* _tmp29_ = NULL;
                              ValaList* _tmp30_;
                              gpointer _tmp31_ = NULL;
                              ValaExpression* _tmp32_;
                              ValaCCodeExpression* _tmp33_ = NULL;
                              ValaCCodeExpression* _tmp34_;
                              ValaCCodeAssignment* _tmp35_ = NULL;
                              ValaCCodeAssignment* _tmp36_;
                              gchar* _tmp37_ = NULL;
                              gchar* _tmp38_;
                              ValaCCodeConstant* _tmp39_ = NULL;
                              ValaCCodeConstant* _tmp40_;
                              ValaCCodeElementAccess* _tmp41_ = NULL;
                              ValaCCodeElementAccess* _tmp42_;
                              ValaList* _tmp43_ = NULL;
                              ValaList* _tmp44_;
                              gpointer _tmp45_ = NULL;
                              ValaExpression* _tmp46_;
                              ValaCCodeExpression* _tmp47_ = NULL;
                              ValaCCodeExpression* _tmp48_;
                              ValaCCodeAssignment* _tmp49_ = NULL;
                              ValaCCodeAssignment* _tmp50_;
                              if (!_tmp22_) {
                                    i++;
                              }
                              _tmp22_ = FALSE;
                              if (!(i < length)) {
                                    break;
                              }
                              _tmp23_ = g_strdup_printf ("%i", i);
                              _tmp24_ = _tmp23_;
                              _tmp25_ = vala_ccode_constant_new (_tmp24_);
                              _tmp26_ = _tmp25_;
                              _tmp27_ = vala_ccode_element_access_new (key_name_cnode, (ValaCCodeExpression*) _tmp26_);
                              _tmp28_ = _tmp27_;
                              _tmp29_ = vala_map_literal_get_keys (expr);
                              _tmp30_ = _tmp29_;
                              _tmp31_ = vala_list_get (_tmp30_, i);
                              _tmp32_ = (ValaExpression*) _tmp31_;
                              _tmp33_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp32_);
                              _tmp34_ = _tmp33_;
                              _tmp35_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp28_, _tmp34_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                              _tmp36_ = _tmp35_;
                              vala_ccode_comma_expression_append_expression (key_ce, (ValaCCodeExpression*) _tmp36_);
                              _vala_ccode_node_unref0 (_tmp36_);
                              _vala_ccode_node_unref0 (_tmp34_);
                              _vala_code_node_unref0 (_tmp32_);
                              _vala_iterable_unref0 (_tmp30_);
                              _vala_ccode_node_unref0 (_tmp28_);
                              _vala_ccode_node_unref0 (_tmp26_);
                              _g_free0 (_tmp24_);
                              _tmp37_ = g_strdup_printf ("%i", i);
                              _tmp38_ = _tmp37_;
                              _tmp39_ = vala_ccode_constant_new (_tmp38_);
                              _tmp40_ = _tmp39_;
                              _tmp41_ = vala_ccode_element_access_new (value_name_cnode, (ValaCCodeExpression*) _tmp40_);
                              _tmp42_ = _tmp41_;
                              _tmp43_ = vala_map_literal_get_values (expr);
                              _tmp44_ = _tmp43_;
                              _tmp45_ = vala_list_get (_tmp44_, i);
                              _tmp46_ = (ValaExpression*) _tmp45_;
                              _tmp47_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp46_);
                              _tmp48_ = _tmp47_;
                              _tmp49_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp42_, _tmp48_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                              _tmp50_ = _tmp49_;
                              vala_ccode_comma_expression_append_expression (value_ce, (ValaCCodeExpression*) _tmp50_);
                              _vala_ccode_node_unref0 (_tmp50_);
                              _vala_ccode_node_unref0 (_tmp48_);
                              _vala_code_node_unref0 (_tmp46_);
                              _vala_iterable_unref0 (_tmp44_);
                              _vala_ccode_node_unref0 (_tmp42_);
                              _vala_ccode_node_unref0 (_tmp40_);
                              _g_free0 (_tmp38_);
                        }
                  }
            }
            vala_ccode_comma_expression_append_expression (key_ce, key_name_cnode);
            vala_ccode_comma_expression_append_expression (value_ce, value_name_cnode);
            _vala_ccode_node_unref0 (value_name_cnode);
            _vala_code_node_unref0 (value_temp_var);
            _vala_code_node_unref0 (value_array_type);
            _vala_ccode_node_unref0 (key_name_cnode);
            _vala_code_node_unref0 (key_temp_var);
            _vala_code_node_unref0 (key_array_type);
      }
      _tmp51_ = vala_ccode_identifier_new ("dova_map_new");
      _tmp52_ = _tmp51_;
      _tmp53_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp52_);
      _tmp54_ = _tmp53_;
      _vala_ccode_node_unref0 (_tmp52_);
      map_creation = _tmp54_;
      _tmp55_ = vala_map_literal_get_map_key_type (expr);
      _tmp56_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp55_, FALSE);
      _tmp57_ = _tmp56_;
      vala_ccode_function_call_add_argument (map_creation, _tmp57_);
      _vala_ccode_node_unref0 (_tmp57_);
      _tmp58_ = vala_map_literal_get_map_value_type (expr);
      _tmp59_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp58_, FALSE);
      _tmp60_ = _tmp59_;
      vala_ccode_function_call_add_argument (map_creation, _tmp60_);
      _vala_ccode_node_unref0 (_tmp60_);
      _tmp61_ = g_strdup_printf ("%i", length);
      _tmp62_ = _tmp61_;
      _tmp63_ = vala_ccode_constant_new (_tmp62_);
      _tmp64_ = _tmp63_;
      vala_ccode_function_call_add_argument (map_creation, (ValaCCodeExpression*) _tmp64_);
      _vala_ccode_node_unref0 (_tmp64_);
      _g_free0 (_tmp62_);
      vala_ccode_function_call_add_argument (map_creation, (ValaCCodeExpression*) key_ce);
      vala_ccode_function_call_add_argument (map_creation, (ValaCCodeExpression*) value_ce);
      vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) map_creation);
      _vala_ccode_node_unref0 (map_creation);
      _vala_ccode_node_unref0 (value_ce);
      _vala_ccode_node_unref0 (key_ce);
}


static void vala_dova_value_module_real_visit_tuple (ValaCodeVisitor* base, ValaTuple* tuple) {
      ValaDovaValueModule * self;
      ValaVoidType* _tmp0_ = NULL;
      ValaVoidType* _tmp1_;
      ValaPointerType* _tmp2_ = NULL;
      ValaPointerType* _tmp3_;
      ValaSourceReference* _tmp4_ = NULL;
      ValaArrayType* _tmp5_ = NULL;
      ValaArrayType* _tmp6_;
      ValaArrayType* type_array_type;
      ValaList* _tmp7_ = NULL;
      ValaList* _tmp8_;
      gint _tmp9_;
      ValaLocalVariable* _tmp10_ = NULL;
      ValaLocalVariable* type_temp_var;
      const gchar* _tmp11_ = NULL;
      ValaCCodeExpression* _tmp12_ = NULL;
      ValaCCodeExpression* type_name_cnode;
      ValaVoidType* _tmp13_ = NULL;
      ValaVoidType* _tmp14_;
      ValaPointerType* _tmp15_ = NULL;
      ValaPointerType* _tmp16_;
      ValaSourceReference* _tmp17_ = NULL;
      ValaArrayType* _tmp18_ = NULL;
      ValaArrayType* _tmp19_;
      ValaArrayType* array_type;
      ValaList* _tmp20_ = NULL;
      ValaList* _tmp21_;
      gint _tmp22_;
      ValaLocalVariable* _tmp23_ = NULL;
      ValaLocalVariable* temp_var;
      const gchar* _tmp24_ = NULL;
      ValaCCodeExpression* _tmp25_ = NULL;
      ValaCCodeExpression* name_cnode;
      ValaCCodeCommaExpression* _tmp26_ = NULL;
      ValaCCodeCommaExpression* type_ce;
      ValaCCodeCommaExpression* _tmp27_ = NULL;
      ValaCCodeCommaExpression* ce;
      gint i;
      ValaCCodeIdentifier* _tmp73_ = NULL;
      ValaCCodeIdentifier* _tmp74_;
      ValaCCodeFunctionCall* _tmp75_ = NULL;
      ValaCCodeFunctionCall* _tmp76_;
      ValaCCodeFunctionCall* tuple_creation;
      ValaList* _tmp77_ = NULL;
      ValaList* _tmp78_;
      gint _tmp79_;
      gchar* _tmp80_ = NULL;
      gchar* _tmp81_;
      ValaCCodeConstant* _tmp82_ = NULL;
      ValaCCodeConstant* _tmp83_;
      self = (ValaDovaValueModule*) base;
      g_return_if_fail (tuple != NULL);
      _tmp0_ = vala_void_type_new (NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_pointer_type_new ((ValaDataType*) _tmp1_, NULL);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) tuple);
      _tmp5_ = vala_array_type_new ((ValaDataType*) _tmp3_, 1, _tmp4_);
      _tmp6_ = _tmp5_;
      _vala_code_node_unref0 (_tmp3_);
      _vala_code_node_unref0 (_tmp1_);
      type_array_type = _tmp6_;
      vala_array_type_set_inline_allocated (type_array_type, TRUE);
      vala_array_type_set_fixed_length (type_array_type, TRUE);
      _tmp7_ = vala_tuple_get_expressions (tuple);
      _tmp8_ = _tmp7_;
      _tmp9_ = vala_collection_get_size ((ValaCollection*) _tmp8_);
      vala_array_type_set_length (type_array_type, _tmp9_);
      _vala_iterable_unref0 (_tmp8_);
      _tmp10_ = vala_dova_base_module_get_temp_variable ((ValaDovaBaseModule*) self, (ValaDataType*) type_array_type, TRUE, (ValaCodeNode*) tuple);
      type_temp_var = _tmp10_;
      _tmp11_ = vala_symbol_get_name ((ValaSymbol*) type_temp_var);
      _tmp12_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp11_);
      type_name_cnode = _tmp12_;
      vala_dova_base_module_emit_temp_var ((ValaDovaBaseModule*) self, type_temp_var);
      _tmp13_ = vala_void_type_new (NULL);
      _tmp14_ = _tmp13_;
      _tmp15_ = vala_pointer_type_new ((ValaDataType*) _tmp14_, NULL);
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_code_node_get_source_reference ((ValaCodeNode*) tuple);
      _tmp18_ = vala_array_type_new ((ValaDataType*) _tmp16_, 1, _tmp17_);
      _tmp19_ = _tmp18_;
      _vala_code_node_unref0 (_tmp16_);
      _vala_code_node_unref0 (_tmp14_);
      array_type = _tmp19_;
      vala_array_type_set_inline_allocated (array_type, TRUE);
      vala_array_type_set_fixed_length (array_type, TRUE);
      _tmp20_ = vala_tuple_get_expressions (tuple);
      _tmp21_ = _tmp20_;
      _tmp22_ = vala_collection_get_size ((ValaCollection*) _tmp21_);
      vala_array_type_set_length (array_type, _tmp22_);
      _vala_iterable_unref0 (_tmp21_);
      _tmp23_ = vala_dova_base_module_get_temp_variable ((ValaDovaBaseModule*) self, (ValaDataType*) array_type, TRUE, (ValaCodeNode*) tuple);
      temp_var = _tmp23_;
      _tmp24_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
      _tmp25_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp24_);
      name_cnode = _tmp25_;
      vala_dova_base_module_emit_temp_var ((ValaDovaBaseModule*) self, temp_var);
      _tmp26_ = vala_ccode_comma_expression_new ();
      type_ce = _tmp26_;
      _tmp27_ = vala_ccode_comma_expression_new ();
      ce = _tmp27_;
      i = 0;
      {
            ValaList* _tmp28_ = NULL;
            ValaList* _e_list;
            gint _tmp29_;
            gint _e_size;
            gint _e_index;
            _tmp28_ = vala_tuple_get_expressions (tuple);
            _e_list = _tmp28_;
            _tmp29_ = vala_collection_get_size ((ValaCollection*) _e_list);
            _e_size = _tmp29_;
            _e_index = -1;
            while (TRUE) {
                  gpointer _tmp30_ = NULL;
                  ValaExpression* e;
                  ValaDataType* _tmp31_ = NULL;
                  ValaList* _tmp32_ = NULL;
                  ValaList* _tmp33_;
                  gpointer _tmp34_ = NULL;
                  ValaDataType* _tmp35_;
                  ValaDataType* element_type;
                  gchar* _tmp36_ = NULL;
                  gchar* _tmp37_;
                  ValaCCodeConstant* _tmp38_ = NULL;
                  ValaCCodeConstant* _tmp39_;
                  ValaCCodeElementAccess* _tmp40_ = NULL;
                  ValaCCodeElementAccess* _tmp41_;
                  ValaCCodeExpression* _tmp42_ = NULL;
                  ValaCCodeExpression* _tmp43_;
                  ValaCCodeAssignment* _tmp44_ = NULL;
                  ValaCCodeAssignment* _tmp45_;
                  ValaCCodeExpression* _tmp46_ = NULL;
                  ValaCCodeExpression* cexpr;
                  ValaCCodeExpression* _tmp47_;
                  ValaCCodeUnaryExpression* _tmp48_;
                  ValaCCodeUnaryExpression* unary;
                  gboolean _tmp49_ = FALSE;
                  gchar* _tmp65_ = NULL;
                  gchar* _tmp66_;
                  ValaCCodeConstant* _tmp67_ = NULL;
                  ValaCCodeConstant* _tmp68_;
                  ValaCCodeElementAccess* _tmp69_ = NULL;
                  ValaCCodeElementAccess* _tmp70_;
                  ValaCCodeAssignment* _tmp71_ = NULL;
                  ValaCCodeAssignment* _tmp72_;
                  _e_index = _e_index + 1;
                  if (!(_e_index < _e_size)) {
                        break;
                  }
                  _tmp30_ = vala_list_get (_e_list, _e_index);
                  e = (ValaExpression*) _tmp30_;
                  _tmp31_ = vala_expression_get_value_type ((ValaExpression*) tuple);
                  _tmp32_ = vala_data_type_get_type_arguments (_tmp31_);
                  _tmp33_ = _tmp32_;
                  _tmp34_ = vala_list_get (_tmp33_, i);
                  _tmp35_ = (ValaDataType*) _tmp34_;
                  _vala_iterable_unref0 (_tmp33_);
                  element_type = _tmp35_;
                  _tmp36_ = g_strdup_printf ("%i", i);
                  _tmp37_ = _tmp36_;
                  _tmp38_ = vala_ccode_constant_new (_tmp37_);
                  _tmp39_ = _tmp38_;
                  _tmp40_ = vala_ccode_element_access_new (type_name_cnode, (ValaCCodeExpression*) _tmp39_);
                  _tmp41_ = _tmp40_;
                  _tmp42_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, element_type, FALSE);
                  _tmp43_ = _tmp42_;
                  _tmp44_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp41_, _tmp43_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                  _tmp45_ = _tmp44_;
                  vala_ccode_comma_expression_append_expression (type_ce, (ValaCCodeExpression*) _tmp45_);
                  _vala_ccode_node_unref0 (_tmp45_);
                  _vala_ccode_node_unref0 (_tmp43_);
                  _vala_ccode_node_unref0 (_tmp41_);
                  _vala_ccode_node_unref0 (_tmp39_);
                  _g_free0 (_tmp37_);
                  _tmp46_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, e);
                  cexpr = _tmp46_;
                  _tmp47_ = cexpr;
                  _tmp48_ = _vala_ccode_node_ref0 (VALA_IS_CCODE_UNARY_EXPRESSION (_tmp47_) ? ((ValaCCodeUnaryExpression*) _tmp47_) : NULL);
                  unary = _tmp48_;
                  if (unary != NULL) {
                        ValaCCodeUnaryOperator _tmp50_;
                        _tmp50_ = vala_ccode_unary_expression_get_operator (unary);
                        _tmp49_ = _tmp50_ == VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION;
                  } else {
                        _tmp49_ = FALSE;
                  }
                  if (_tmp49_) {
                        ValaCCodeExpression* _tmp51_ = NULL;
                        ValaCCodeExpression* _tmp52_;
                        _tmp51_ = vala_ccode_unary_expression_get_inner (unary);
                        _tmp52_ = _vala_ccode_node_ref0 (_tmp51_);
                        _vala_ccode_node_unref0 (cexpr);
                        cexpr = _tmp52_;
                  } else {
                        gboolean _tmp53_ = FALSE;
                        if (VALA_IS_CCODE_IDENTIFIER (cexpr)) {
                              _tmp53_ = TRUE;
                        } else {
                              _tmp53_ = VALA_IS_CCODE_MEMBER_ACCESS (cexpr);
                        }
                        if (_tmp53_) {
                              ValaCCodeUnaryExpression* _tmp54_ = NULL;
                              _tmp54_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, cexpr);
                              _vala_ccode_node_unref0 (cexpr);
                              cexpr = (ValaCCodeExpression*) _tmp54_;
                        } else {
                              ValaLocalVariable* _tmp55_ = NULL;
                              ValaLocalVariable* element_temp_var;
                              const gchar* _tmp56_ = NULL;
                              ValaCCodeExpression* _tmp57_ = NULL;
                              ValaCCodeExpression* _tmp58_;
                              ValaCCodeAssignment* _tmp59_ = NULL;
                              ValaCCodeAssignment* _tmp60_;
                              const gchar* _tmp61_ = NULL;
                              ValaCCodeIdentifier* _tmp62_ = NULL;
                              ValaCCodeIdentifier* _tmp63_;
                              ValaCCodeUnaryExpression* _tmp64_ = NULL;
                              _tmp55_ = vala_dova_base_module_get_temp_variable ((ValaDovaBaseModule*) self, element_type, TRUE, NULL);
                              element_temp_var = _tmp55_;
                              vala_dova_base_module_emit_temp_var ((ValaDovaBaseModule*) self, element_temp_var);
                              _tmp56_ = vala_symbol_get_name ((ValaSymbol*) element_temp_var);
                              _tmp57_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp56_);
                              _tmp58_ = _tmp57_;
                              _tmp59_ = vala_ccode_assignment_new (_tmp58_, cexpr, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                              _tmp60_ = _tmp59_;
                              vala_ccode_comma_expression_append_expression (ce, (ValaCCodeExpression*) _tmp60_);
                              _vala_ccode_node_unref0 (_tmp60_);
                              _vala_ccode_node_unref0 (_tmp58_);
                              _tmp61_ = vala_symbol_get_name ((ValaSymbol*) element_temp_var);
                              _tmp62_ = vala_ccode_identifier_new (_tmp61_);
                              _tmp63_ = _tmp62_;
                              _tmp64_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp63_);
                              _vala_ccode_node_unref0 (cexpr);
                              cexpr = (ValaCCodeExpression*) _tmp64_;
                              _vala_ccode_node_unref0 (_tmp63_);
                              _vala_code_node_unref0 (element_temp_var);
                        }
                  }
                  _tmp65_ = g_strdup_printf ("%i", i);
                  _tmp66_ = _tmp65_;
                  _tmp67_ = vala_ccode_constant_new (_tmp66_);
                  _tmp68_ = _tmp67_;
                  _tmp69_ = vala_ccode_element_access_new (name_cnode, (ValaCCodeExpression*) _tmp68_);
                  _tmp70_ = _tmp69_;
                  _tmp71_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp70_, cexpr, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                  _tmp72_ = _tmp71_;
                  vala_ccode_comma_expression_append_expression (ce, (ValaCCodeExpression*) _tmp72_);
                  _vala_ccode_node_unref0 (_tmp72_);
                  _vala_ccode_node_unref0 (_tmp70_);
                  _vala_ccode_node_unref0 (_tmp68_);
                  _g_free0 (_tmp66_);
                  i++;
                  _vala_ccode_node_unref0 (unary);
                  _vala_ccode_node_unref0 (cexpr);
                  _vala_code_node_unref0 (element_type);
                  _vala_code_node_unref0 (e);
            }
            _vala_iterable_unref0 (_e_list);
      }
      vala_ccode_comma_expression_append_expression (type_ce, type_name_cnode);
      vala_ccode_comma_expression_append_expression (ce, name_cnode);
      _tmp73_ = vala_ccode_identifier_new ("dova_tuple_new");
      _tmp74_ = _tmp73_;
      _tmp75_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp74_);
      _tmp76_ = _tmp75_;
      _vala_ccode_node_unref0 (_tmp74_);
      tuple_creation = _tmp76_;
      _tmp77_ = vala_tuple_get_expressions (tuple);
      _tmp78_ = _tmp77_;
      _tmp79_ = vala_collection_get_size ((ValaCollection*) _tmp78_);
      _tmp80_ = g_strdup_printf ("%i", _tmp79_);
      _tmp81_ = _tmp80_;
      _tmp82_ = vala_ccode_constant_new (_tmp81_);
      _tmp83_ = _tmp82_;
      vala_ccode_function_call_add_argument (tuple_creation, (ValaCCodeExpression*) _tmp83_);
      _vala_ccode_node_unref0 (_tmp83_);
      _g_free0 (_tmp81_);
      _vala_iterable_unref0 (_tmp78_);
      vala_ccode_function_call_add_argument (tuple_creation, (ValaCCodeExpression*) type_ce);
      vala_ccode_function_call_add_argument (tuple_creation, (ValaCCodeExpression*) ce);
      vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) tuple, (ValaCCodeExpression*) tuple_creation);
      _vala_ccode_node_unref0 (tuple_creation);
      _vala_ccode_node_unref0 (ce);
      _vala_ccode_node_unref0 (type_ce);
      _vala_ccode_node_unref0 (name_cnode);
      _vala_code_node_unref0 (temp_var);
      _vala_code_node_unref0 (array_type);
      _vala_ccode_node_unref0 (type_name_cnode);
      _vala_code_node_unref0 (type_temp_var);
      _vala_code_node_unref0 (type_array_type);
}


ValaDovaValueModule* vala_dova_value_module_construct (GType object_type) {
      ValaDovaValueModule* self = NULL;
      self = (ValaDovaValueModule*) vala_dova_object_module_construct (object_type);
      return self;
}


ValaDovaValueModule* vala_dova_value_module_new (void) {
      return vala_dova_value_module_construct (VALA_TYPE_DOVA_VALUE_MODULE);
}


static void vala_dova_value_module_class_init (ValaDovaValueModuleClass * klass) {
      vala_dova_value_module_parent_class = g_type_class_peek_parent (klass);
      VALA_CODE_VISITOR_CLASS (klass)->visit_creation_method = vala_dova_value_module_real_visit_creation_method;
      VALA_DOVA_BASE_MODULE_CLASS (klass)->generate_struct_declaration = vala_dova_value_module_real_generate_struct_declaration;
      VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_dova_value_module_real_visit_struct;
      VALA_CODE_VISITOR_CLASS (klass)->visit_assignment = vala_dova_value_module_real_visit_assignment;
      VALA_DOVA_ASSIGNMENT_MODULE_CLASS (klass)->store_variable = vala_dova_value_module_real_store_variable;
      VALA_CODE_VISITOR_CLASS (klass)->visit_binary_expression = vala_dova_value_module_real_visit_binary_expression;
      VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_dova_value_module_real_visit_method_call;
      VALA_CODE_VISITOR_CLASS (klass)->visit_list_literal = vala_dova_value_module_real_visit_list_literal;
      VALA_CODE_VISITOR_CLASS (klass)->visit_set_literal = vala_dova_value_module_real_visit_set_literal;
      VALA_CODE_VISITOR_CLASS (klass)->visit_map_literal = vala_dova_value_module_real_visit_map_literal;
      VALA_CODE_VISITOR_CLASS (klass)->visit_tuple = vala_dova_value_module_real_visit_tuple;
}


static void vala_dova_value_module_instance_init (ValaDovaValueModule * self) {
}


GType vala_dova_value_module_get_type (void) {
      static volatile gsize vala_dova_value_module_type_id__volatile = 0;
      if (g_once_init_enter (&vala_dova_value_module_type_id__volatile)) {
            static const GTypeInfo g_define_type_info = { sizeof (ValaDovaValueModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_dova_value_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaDovaValueModule), 0, (GInstanceInitFunc) vala_dova_value_module_instance_init, NULL };
            GType vala_dova_value_module_type_id;
            vala_dova_value_module_type_id = g_type_register_static (VALA_TYPE_DOVA_OBJECT_MODULE, "ValaDovaValueModule", &g_define_type_info, 0);
            g_once_init_leave (&vala_dova_value_module_type_id__volatile, vala_dova_value_module_type_id);
      }
      return vala_dova_value_module_type_id__volatile;
}




Generated by  Doxygen 1.6.0   Back to index