1 /* valaccodebasemodule.c generated by valac, the Vala compiler
2 * generated from valaccodebasemodule.vala, do not modify */
4 /* valaccodebasemodule.vala
6 * Copyright (C) 2006-2012 Jürg Billeter
7 * Copyright (C) 2006-2008 Raffaele Sandrini
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 * Jürg Billeter <j@bitron.ch>
25 * Raffaele Sandrini <raffaele@sandrini.ch>
29 #include <glib-object.h>
31 #include <valaccode.h>
35 #include <glib/gstdio.h>
39 #include <gobject/gvaluecollector.h>
42 #define VALA_TYPE_CCODE_BASE_MODULE (vala_ccode_base_module_get_type ())
43 #define VALA_CCODE_BASE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModule))
44 #define VALA_CCODE_BASE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModuleClass))
45 #define VALA_IS_CCODE_BASE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_BASE_MODULE))
46 #define VALA_IS_CCODE_BASE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_BASE_MODULE))
47 #define VALA_CCODE_BASE_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModuleClass))
49 typedef struct _ValaCCodeBaseModule ValaCCodeBaseModule;
50 typedef struct _ValaCCodeBaseModuleClass ValaCCodeBaseModuleClass;
51 typedef struct _ValaCCodeBaseModulePrivate ValaCCodeBaseModulePrivate;
53 #define VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT (vala_ccode_base_module_emit_context_get_type ())
54 #define VALA_CCODE_BASE_MODULE_EMIT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContext))
55 #define VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContextClass))
56 #define VALA_CCODE_BASE_MODULE_IS_EMIT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT))
57 #define VALA_CCODE_BASE_MODULE_IS_EMIT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT))
58 #define VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContextClass))
60 typedef struct _ValaCCodeBaseModuleEmitContext ValaCCodeBaseModuleEmitContext;
61 typedef struct _ValaCCodeBaseModuleEmitContextClass ValaCCodeBaseModuleEmitContextClass;
62 #define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))
63 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
64 #define _vala_ccode_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_base_module_emit_context_unref (var), NULL)))
65 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
66 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
67 #define _vala_ccode_file_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_file_unref (var), NULL)))
68 #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
69 #define _g_free0(var) (var = (g_free (var), NULL))
70 #define _vala_source_file_unref0(var) ((var == NULL) ? NULL : (var = (vala_source_file_unref (var), NULL)))
71 #define _fclose0(var) ((var == NULL) ? NULL : (var = (fclose (var), NULL)))
72 typedef struct _ValaCCodeBaseModuleEmitContextPrivate ValaCCodeBaseModuleEmitContextPrivate;
73 #define _vala_comment_unref0(var) ((var == NULL) ? NULL : (var = (vala_comment_unref (var), NULL)))
74 #define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))
76 #define VALA_TYPE_GLIB_VALUE (vala_glib_value_get_type ())
77 #define VALA_GLIB_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GLIB_VALUE, ValaGLibValue))
78 #define VALA_GLIB_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GLIB_VALUE, ValaGLibValueClass))
79 #define VALA_IS_GLIB_VALUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GLIB_VALUE))
80 #define VALA_IS_GLIB_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GLIB_VALUE))
81 #define VALA_GLIB_VALUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GLIB_VALUE, ValaGLibValueClass))
83 typedef struct _ValaGLibValue ValaGLibValue;
84 typedef struct _ValaGLibValueClass ValaGLibValueClass;
85 typedef struct _ValaGLibValuePrivate ValaGLibValuePrivate;
86 #define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))
87 #define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
88 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
90 #define VALA_TYPE_CCODE_ATTRIBUTE (vala_ccode_attribute_get_type ())
91 #define VALA_CCODE_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ATTRIBUTE, ValaCCodeAttribute))
92 #define VALA_CCODE_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ATTRIBUTE, ValaCCodeAttributeClass))
93 #define VALA_IS_CCODE_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ATTRIBUTE))
94 #define VALA_IS_CCODE_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ATTRIBUTE))
95 #define VALA_CCODE_ATTRIBUTE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ATTRIBUTE, ValaCCodeAttributeClass))
97 typedef struct _ValaCCodeAttribute ValaCCodeAttribute;
98 typedef struct _ValaCCodeAttributeClass ValaCCodeAttributeClass;
99 #define _vala_attribute_cache_unref0(var) ((var == NULL) ? NULL : (var = (vala_attribute_cache_unref (var), NULL)))
100 #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
101 typedef struct _ValaCCodeBaseModuleParamSpecEmitContext ValaCCodeBaseModuleParamSpecEmitContext;
102 #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
104 struct _ValaCCodeBaseModule {
105 ValaCodeGenerator parent_instance;
106 ValaCCodeBaseModulePrivate * priv;
107 ValaSymbol* root_symbol;
108 ValaCCodeBaseModuleEmitContext* emit_context;
109 ValaCCodeLineDirective* current_line;
110 ValaCCodeFile* header_file;
111 ValaCCodeFile* internal_header_file;
112 ValaCCodeFile* cfile;
113 ValaCCodeBaseModuleEmitContext* class_init_context;
114 ValaCCodeBaseModuleEmitContext* base_init_context;
115 ValaCCodeBaseModuleEmitContext* class_finalize_context;
116 ValaCCodeBaseModuleEmitContext* base_finalize_context;
117 ValaCCodeBaseModuleEmitContext* instance_init_context;
118 ValaCCodeBaseModuleEmitContext* instance_finalize_context;
119 ValaCCodeStruct* param_spec_struct;
120 ValaCCodeStruct* closure_struct;
121 ValaCCodeEnum* prop_enum;
122 ValaSet* user_marshal_set;
123 ValaSet* predefined_marshal_set;
125 gint next_coroutine_state;
126 ValaDataType* void_type;
127 ValaDataType* bool_type;
128 ValaDataType* char_type;
129 ValaDataType* uchar_type;
130 ValaDataType* unichar_type;
131 ValaDataType* short_type;
132 ValaDataType* ushort_type;
133 ValaDataType* int_type;
134 ValaDataType* uint_type;
135 ValaDataType* long_type;
136 ValaDataType* ulong_type;
137 ValaDataType* int8_type;
138 ValaDataType* uint8_type;
139 ValaDataType* int16_type;
140 ValaDataType* uint16_type;
141 ValaDataType* int32_type;
142 ValaDataType* uint32_type;
143 ValaDataType* int64_type;
144 ValaDataType* uint64_type;
145 ValaDataType* string_type;
146 ValaDataType* regex_type;
147 ValaDataType* float_type;
148 ValaDataType* double_type;
149 ValaTypeSymbol* gtype_type;
150 ValaTypeSymbol* gobject_type;
151 ValaErrorType* gerror_type;
152 ValaClass* glist_type;
153 ValaClass* gslist_type;
154 ValaClass* gnode_type;
155 ValaClass* gqueue_type;
156 ValaClass* gvaluearray_type;
157 ValaTypeSymbol* gstringbuilder_type;
158 ValaTypeSymbol* garray_type;
159 ValaTypeSymbol* gbytearray_type;
160 ValaTypeSymbol* gptrarray_type;
161 ValaTypeSymbol* gthreadpool_type;
162 ValaDataType* gdestroynotify_type;
163 ValaDataType* gquark_type;
164 ValaStruct* gvalue_type;
165 ValaClass* gvariant_type;
166 ValaStruct* mutex_type;
167 ValaStruct* gmutex_type;
168 ValaStruct* grecmutex_type;
169 ValaStruct* grwlock_type;
170 ValaStruct* gcond_type;
171 ValaClass* gsource_type;
172 ValaTypeSymbol* type_module_type;
173 ValaTypeSymbol* dbus_proxy_type;
175 gchar* module_init_param_name;
176 gboolean gvaluecollector_h_needed;
177 gboolean requires_assert;
178 gboolean requires_array_free;
179 gboolean requires_array_move;
180 gboolean requires_array_length;
181 gboolean requires_clear_mutex;
185 struct _ValaCCodeBaseModuleClass {
186 ValaCodeGeneratorClass parent_class;
187 void (*append_vala_array_free) (ValaCCodeBaseModule* self);
188 void (*append_vala_array_move) (ValaCCodeBaseModule* self);
189 void (*append_vala_array_length) (ValaCCodeBaseModule* self);
190 gboolean (*generate_enum_declaration) (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space);
191 void (*generate_class_struct_declaration) (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
192 void (*generate_struct_declaration) (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space);
193 void (*generate_delegate_declaration) (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space);
194 void (*generate_cparameters) (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction);
195 ValaCCodeExpression* (*get_dup_func_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup);
196 gchar* (*append_struct_array_free) (ValaCCodeBaseModule* self, ValaStruct* st);
197 ValaCCodeExpression* (*destroy_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition);
198 void (*append_scope_free) (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at);
199 ValaTargetValue* (*get_local_cvalue) (ValaCCodeBaseModule* self, ValaLocalVariable* local);
200 ValaTargetValue* (*get_parameter_cvalue) (ValaCCodeBaseModule* self, ValaParameter* param);
201 ValaTargetValue* (*get_field_cvalue) (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance);
202 ValaTargetValue* (*load_variable) (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value);
203 ValaTargetValue* (*load_this_parameter) (ValaCCodeBaseModule* self, ValaTypeSymbol* sym);
204 void (*store_value) (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value);
205 gchar* (*get_delegate_target_cname) (ValaCCodeBaseModule* self, const gchar* delegate_cname);
206 ValaCCodeExpression* (*get_delegate_target_cexpression) (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify);
207 ValaCCodeExpression* (*get_delegate_target_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value);
208 ValaCCodeExpression* (*get_delegate_target_destroy_notify_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value);
209 gchar* (*get_delegate_target_destroy_notify_cname) (ValaCCodeBaseModule* self, const gchar* delegate_cname);
210 ValaTargetValue* (*copy_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node);
211 void (*generate_class_declaration) (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
212 void (*generate_interface_declaration) (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space);
213 void (*generate_method_declaration) (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space);
214 void (*generate_error_domain_declaration) (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space);
215 ValaCCodeExpression* (*deserialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail);
216 ValaCCodeExpression* (*serialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr);
217 ValaCCodeExpression* (*get_implicit_cast_expression) (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node);
218 void (*create_type_check_statement) (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name);
219 gboolean (*is_gobject_property) (ValaCCodeBaseModule* self, ValaProperty* prop);
220 void (*generate_dynamic_method_wrapper) (ValaCCodeBaseModule* self, ValaDynamicMethod* method);
221 gboolean (*method_has_wrapper) (ValaCCodeBaseModule* self, ValaMethod* method);
222 ValaCCodeFunctionCall* (*get_param_spec) (ValaCCodeBaseModule* self, ValaProperty* prop);
223 ValaCCodeFunctionCall* (*get_signal_creation) (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type);
224 void (*register_dbus_info) (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable);
225 gchar* (*get_dynamic_property_getter_cname) (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
226 gchar* (*get_dynamic_property_setter_cname) (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
227 gchar* (*get_dynamic_signal_cname) (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
228 gchar* (*get_dynamic_signal_connect_wrapper_name) (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
229 gchar* (*get_dynamic_signal_connect_after_wrapper_name) (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
230 gchar* (*get_dynamic_signal_disconnect_wrapper_name) (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
231 gchar* (*get_array_length_cname) (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim);
232 gchar* (*get_parameter_array_length_cname) (ValaCCodeBaseModule* self, ValaParameter* param, gint dim);
233 ValaCCodeExpression* (*get_array_length_cexpression) (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim);
234 ValaCCodeExpression* (*get_array_length_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim);
235 gchar* (*get_array_size_cname) (ValaCCodeBaseModule* self, const gchar* array_cname);
236 void (*add_simple_check) (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails);
237 gchar* (*generate_ready_function) (ValaCCodeBaseModule* self, ValaMethod* m);
240 struct _ValaCCodeBaseModulePrivate {
241 ValaCodeContext* _context;
242 ValaList* emit_context_stack;
243 ValaList* line_directive_stack;
244 ValaSet* reserved_identifiers;
247 ValaSet* generated_external_symbols;
248 gint next_variant_function_id;
251 struct _ValaCCodeBaseModuleEmitContext {
252 GTypeInstance parent_instance;
253 volatile int ref_count;
254 ValaCCodeBaseModuleEmitContextPrivate * priv;
255 ValaSymbol* current_symbol;
256 ValaArrayList* symbol_stack;
257 ValaTryStatement* current_try;
258 ValaCatchClause* current_catch;
259 ValaCCodeFunction* ccode;
260 ValaArrayList* ccode_stack;
261 ValaArrayList* temp_ref_values;
262 gint next_temp_var_id;
263 gboolean current_method_inner_error;
264 gboolean current_method_return;
265 ValaMap* variable_name_map;
266 ValaMap* closure_variable_count_map;
267 ValaMap* closure_variable_clash_map;
270 struct _ValaCCodeBaseModuleEmitContextClass {
271 GTypeClass parent_class;
272 void (*finalize) (ValaCCodeBaseModuleEmitContext *self);
275 struct _ValaGLibValue {
276 ValaTargetValue parent_instance;
277 ValaGLibValuePrivate * priv;
278 ValaCCodeExpression* cvalue;
282 ValaList* array_length_cvalues;
283 ValaCCodeExpression* array_size_cvalue;
284 gboolean array_null_terminated;
285 ValaCCodeExpression* array_length_cexpr;
286 ValaCCodeExpression* delegate_target_cvalue;
287 ValaCCodeExpression* delegate_target_destroy_notify_cvalue;
290 struct _ValaGLibValueClass {
291 ValaTargetValueClass parent_class;
294 struct _ValaCCodeBaseModuleParamSpecEmitContext {
295 GParamSpec parent_instance;
299 static gpointer vala_ccode_base_module_parent_class = NULL;
300 extern gint vala_ccode_base_module_ccode_attribute_cache_index;
301 gint vala_ccode_base_module_ccode_attribute_cache_index = 0;
302 static gpointer vala_ccode_base_module_emit_context_parent_class = NULL;
303 static gpointer vala_glib_value_parent_class = NULL;
305 GType vala_ccode_base_module_get_type (void) G_GNUC_CONST;
306 gpointer vala_ccode_base_module_emit_context_ref (gpointer instance);
307 void vala_ccode_base_module_emit_context_unref (gpointer instance);
308 GParamSpec* vala_ccode_base_module_param_spec_emit_context (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
309 void vala_ccode_base_module_value_set_emit_context (GValue* value, gpointer v_object);
310 void vala_ccode_base_module_value_take_emit_context (GValue* value, gpointer v_object);
311 gpointer vala_ccode_base_module_value_get_emit_context (const GValue* value);
312 GType vala_ccode_base_module_emit_context_get_type (void) G_GNUC_CONST;
313 #define VALA_CCODE_BASE_MODULE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModulePrivate))
315 VALA_CCODE_BASE_MODULE_DUMMY_PROPERTY
317 ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_new (ValaSymbol* symbol);
318 ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_construct (GType object_type, ValaSymbol* symbol);
319 gboolean vala_ccode_base_module_is_in_coroutine (ValaCCodeBaseModule* self);
320 ValaMethod* vala_ccode_base_module_get_current_method (ValaCCodeBaseModule* self);
321 gboolean vala_ccode_base_module_is_in_constructor (ValaCCodeBaseModule* self);
322 ValaSymbol* vala_ccode_base_module_get_current_symbol (ValaCCodeBaseModule* self);
323 gboolean vala_ccode_base_module_is_in_destructor (ValaCCodeBaseModule* self);
324 ValaBlock* vala_ccode_base_module_next_closure_block (ValaCCodeBaseModule* self, ValaSymbol* sym);
325 ValaCCodeBaseModule* vala_ccode_base_module_construct (GType object_type);
326 static void vala_ccode_base_module_real_emit (ValaCodeGenerator* base, ValaCodeContext* context);
327 void vala_ccode_base_module_set_context (ValaCCodeBaseModule* self, ValaCodeContext* value);
328 void vala_ccode_base_module_push_context (ValaCCodeBaseModule* self, ValaCCodeBaseModuleEmitContext* emit_context);
329 ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self);
330 void vala_ccode_base_module_pop_context (ValaCCodeBaseModule* self);
331 void vala_ccode_base_module_push_line (ValaCCodeBaseModule* self, ValaSourceReference* source_reference);
332 void vala_ccode_base_module_pop_line (ValaCCodeBaseModule* self);
333 void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func);
334 void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self);
335 gboolean vala_ccode_base_module_add_symbol_declaration (ValaCCodeBaseModule* self, ValaCCodeFile* decl_space, ValaSymbol* sym, const gchar* name);
336 gchar* vala_ccode_base_module_get_ccode_header_filenames (ValaSymbol* sym);
337 ValaCCodeIdentifier* vala_ccode_base_module_get_value_setter_function (ValaCCodeBaseModule* self, ValaDataType* type_reference);
338 gchar* vala_ccode_base_module_get_ccode_set_value_function (ValaCodeNode* sym);
339 ValaCCodeIdentifier* vala_ccode_base_module_get_value_taker_function (ValaCCodeBaseModule* self, ValaDataType* type_reference);
340 gchar* vala_ccode_base_module_get_ccode_take_value_function (ValaCodeNode* sym);
341 static ValaCCodeIdentifier* vala_ccode_base_module_get_value_getter_function (ValaCCodeBaseModule* self, ValaDataType* type_reference);
342 gchar* vala_ccode_base_module_get_ccode_get_value_function (ValaCodeNode* sym);
343 void vala_ccode_base_module_append_vala_array_free (ValaCCodeBaseModule* self);
344 static void vala_ccode_base_module_real_append_vala_array_free (ValaCCodeBaseModule* self);
345 void vala_ccode_base_module_append_vala_array_move (ValaCCodeBaseModule* self);
346 static void vala_ccode_base_module_real_append_vala_array_move (ValaCCodeBaseModule* self);
347 void vala_ccode_base_module_append_vala_array_length (ValaCCodeBaseModule* self);
348 static void vala_ccode_base_module_real_append_vala_array_length (ValaCCodeBaseModule* self);
349 void vala_ccode_base_module_append_vala_clear_mutex (ValaCCodeBaseModule* self, const gchar* typename, const gchar* funcprefix);
350 static void vala_ccode_base_module_real_visit_source_file (ValaCodeVisitor* base, ValaSourceFile* source_file);
351 ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self);
352 gboolean vala_ccode_base_module_generate_enum_declaration (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space);
353 static gboolean vala_ccode_base_module_real_generate_enum_declaration (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space);
354 gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
355 ValaCCodeExpression* vala_ccode_base_module_get_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr);
356 gboolean vala_ccode_base_module_get_ccode_has_type_id (ValaTypeSymbol* sym);
357 gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix);
358 gchar* vala_ccode_base_module_get_ccode_type_id (ValaCodeNode* node);
359 static void vala_ccode_base_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en);
360 void vala_ccode_base_module_visit_member (ValaCCodeBaseModule* self, ValaSymbol* m);
361 gchar* vala_ccode_base_module_get_symbol_lock_name (ValaCCodeBaseModule* self, const gchar* symname);
362 gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const gchar* infix);
363 void vala_ccode_base_module_generate_constant_declaration (ValaCCodeBaseModule* self, ValaConstant* c, ValaCCodeFile* decl_space, gboolean definition);
364 void vala_ccode_base_module_generate_type_declaration (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeFile* decl_space);
365 gchar* vala_ccode_base_module_get_ccode_const_name (ValaCodeNode* node);
366 static void vala_ccode_base_module_real_visit_constant (ValaCodeVisitor* base, ValaConstant* c);
367 void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* self, ValaField* f, ValaCCodeFile* decl_space);
368 gchar* vala_ccode_base_module_get_ccode_declarator_suffix (ValaDataType* type);
369 gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node);
370 gchar* vala_ccode_base_module_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim);
371 gchar* vala_ccode_base_module_get_ccode_delegate_target_name (ValaVariable* variable);
372 gchar* vala_ccode_base_module_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname);
373 static void vala_ccode_base_module_real_visit_field (ValaCodeVisitor* base, ValaField* f);
374 void vala_ccode_base_module_check_type (ValaCCodeBaseModule* self, ValaDataType* type);
375 ValaTargetValue* vala_ccode_base_module_get_field_cvalue (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance);
376 ValaTargetValue* vala_ccode_base_module_load_this_parameter (ValaCCodeBaseModule* self, ValaTypeSymbol* sym);
377 GType vala_glib_value_get_type (void) G_GNUC_CONST;
378 ValaCCodeExpression* vala_ccode_base_module_get_array_length_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim);
379 ValaCCodeExpression* vala_ccode_base_module_get_cvalue_ (ValaCCodeBaseModule* self, ValaTargetValue* value);
380 ValaCCodeExpression* vala_ccode_base_module_get_array_size_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value);
381 ValaArrayList* vala_ccode_base_module_get_temp_ref_values (ValaCCodeBaseModule* self);
382 ValaCCodeExpression* vala_ccode_base_module_destroy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition);
383 gboolean vala_ccode_base_module_requires_destroy (ValaCCodeBaseModule* self, ValaDataType* type);
384 ValaCCodeExpression* vala_ccode_base_module_destroy_field (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance);
385 ValaCCodeExpression* vala_ccode_base_module_default_value_for_type (ValaCCodeBaseModule* self, ValaDataType* type, gboolean initializer_expression);
386 gboolean vala_ccode_base_module_is_constant_ccode_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr);
387 gchar* vala_ccode_base_module_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname);
388 ValaLocalVariable* vala_ccode_base_module_get_temp_variable (ValaCCodeBaseModule* self, ValaDataType* type, gboolean value_owned, ValaCodeNode* node_reference, gboolean init);
389 ValaCCodeExpression* vala_ccode_base_module_get_variable_cexpression (ValaCCodeBaseModule* self, const gchar* name);
390 gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, const gchar* name);
391 gboolean vala_ccode_base_module_is_pure_ccode_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr);
392 static void vala_ccode_base_module_real_visit_formal_parameter (ValaCodeVisitor* base, ValaParameter* p);
393 static void vala_ccode_base_module_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop);
394 void vala_ccode_base_module_generate_class_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
395 void vala_ccode_base_module_generate_interface_declaration (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space);
396 void vala_ccode_base_module_generate_delegate_declaration (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space);
397 void vala_ccode_base_module_generate_struct_declaration (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space);
398 void vala_ccode_base_module_generate_error_domain_declaration (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space);
399 void vala_ccode_base_module_generate_class_struct_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
400 static void vala_ccode_base_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
401 static void vala_ccode_base_module_real_generate_struct_declaration (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space);
402 static void vala_ccode_base_module_real_generate_delegate_declaration (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space);
403 void vala_ccode_base_module_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction);
404 static void vala_ccode_base_module_real_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction);
405 void vala_ccode_base_module_generate_property_accessor_declaration (ValaCCodeBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space);
406 ValaDataType* vala_ccode_base_module_get_data_type_for_symbol (ValaTypeSymbol* sym);
407 gchar* vala_ccode_base_module_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname);
408 static void vala_ccode_base_module_real_visit_property_accessor (ValaCodeVisitor* base, ValaPropertyAccessor* acc);
409 gboolean vala_ccode_base_module_is_gobject_property (ValaCCodeBaseModule* self, ValaProperty* prop);
410 ValaDataType* vala_ccode_base_module_get_current_return_type (ValaCCodeBaseModule* self);
411 static void vala_ccode_base_module_create_property_type_check_statement (ValaCCodeBaseModule* self, ValaProperty* prop, gboolean check_return_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name);
412 gchar* vala_ccode_base_module_get_ccode_real_name (ValaSymbol* sym);
413 ValaTargetValue* vala_ccode_base_module_transform_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaDataType* target_type, ValaCodeNode* node);
414 ValaGLibValue* vala_glib_value_new (ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue);
415 ValaGLibValue* vala_glib_value_construct (GType object_type, ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue);
416 gboolean vala_ccode_base_module_get_current_method_inner_error (ValaCCodeBaseModule* self);
417 gboolean vala_ccode_base_module_get_ccode_notify (ValaProperty* prop);
418 ValaCCodeConstant* vala_ccode_base_module_get_property_canonical_cconstant (ValaCCodeBaseModule* self, ValaProperty* prop);
419 static void vala_ccode_base_module_real_visit_destructor (ValaCodeVisitor* base, ValaDestructor* d);
420 gint vala_ccode_base_module_get_block_id (ValaCCodeBaseModule* self, ValaBlock* b);
421 gboolean vala_ccode_base_module_no_implicit_copy (ValaCCodeBaseModule* self, ValaDataType* type);
422 gboolean vala_ccode_base_module_is_reference_counting (ValaTypeSymbol* sym);
423 gboolean vala_ccode_base_module_get_ccode_is_gboxed (ValaTypeSymbol* sym);
424 static void vala_ccode_base_module_capture_parameter (ValaCCodeBaseModule* self, ValaParameter* param, ValaCCodeStruct* data, gint block_id);
425 gchar* vala_ccode_base_module_get_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim);
426 ValaTargetValue* vala_ccode_base_module_get_parameter_cvalue (ValaCCodeBaseModule* self, ValaParameter* param);
427 ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value);
428 static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, ValaBlock* b);
429 void vala_ccode_base_module_emit_context_push_symbol (ValaCCodeBaseModuleEmitContext* self, ValaSymbol* symbol);
430 ValaDataType* vala_ccode_base_module_get_this_type (ValaCCodeBaseModule* self);
431 ValaTypeSymbol* vala_ccode_base_module_get_current_type_symbol (ValaCCodeBaseModule* self);
432 gchar* vala_ccode_base_module_get_local_cname (ValaCCodeBaseModule* self, ValaLocalVariable* local);
433 ValaClass* vala_ccode_base_module_get_current_class (ValaCCodeBaseModule* self);
434 ValaCCodeExpression* vala_ccode_base_module_get_dup_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup);
435 ValaCCodeExpression* vala_ccode_base_module_get_result_cexpression (ValaCCodeBaseModule* self, const gchar* cname);
436 ValaCCodeExpression* vala_ccode_base_module_destroy_local (ValaCCodeBaseModule* self, ValaLocalVariable* local);
437 ValaCCodeExpression* vala_ccode_base_module_destroy_parameter (ValaCCodeBaseModule* self, ValaParameter* param);
438 void vala_ccode_base_module_return_out_parameter (ValaCCodeBaseModule* self, ValaParameter* param);
439 void vala_ccode_base_module_emit_context_pop_symbol (ValaCCodeBaseModuleEmitContext* self);
440 static void vala_ccode_base_module_real_visit_declaration_statement (ValaCodeVisitor* base, ValaDeclarationStatement* stmt);
441 ValaCCodeExpression* vala_ccode_base_module_get_local_cexpression (ValaCCodeBaseModule* self, ValaLocalVariable* local);
442 ValaCCodeExpression* vala_ccode_base_module_get_this_cexpression (ValaCCodeBaseModule* self);
443 ValaMap* vala_ccode_base_module_get_variable_name_map (ValaCCodeBaseModule* self);
444 gint vala_ccode_base_module_get_next_temp_var_id (ValaCCodeBaseModule* self);
445 void vala_ccode_base_module_set_next_temp_var_id (ValaCCodeBaseModule* self, gint value);
446 gboolean vala_ccode_base_module_is_simple_struct_creation (ValaCCodeBaseModule* self, ValaVariable* variable, ValaExpression* expr);
447 static gboolean vala_ccode_base_module_is_foreach_element_variable (ValaCCodeBaseModule* self, ValaLocalVariable* local);
448 static void vala_ccode_base_module_real_visit_local_variable (ValaCodeVisitor* base, ValaLocalVariable* local);
449 void vala_ccode_base_module_emit_temp_var (ValaCCodeBaseModule* self, ValaLocalVariable* local);
450 void vala_ccode_base_module_add_simple_check (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails);
451 ValaTargetValue* vala_ccode_base_module_create_temp_value (ValaCCodeBaseModule* self, ValaDataType* type, gboolean init, ValaCodeNode* node_reference, gboolean* value_owned);
452 ValaTargetValue* vala_ccode_base_module_get_local_cvalue (ValaCCodeBaseModule* self, ValaLocalVariable* local);
453 void vala_ccode_base_module_set_array_size_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCCodeExpression* cvalue);
454 ValaTargetValue* vala_ccode_base_module_load_temp_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue);
455 ValaGLibValue* vala_glib_value_copy (ValaGLibValue* self);
456 ValaTargetValue* vala_ccode_base_module_store_temp_value (ValaCCodeBaseModule* self, ValaTargetValue* initializer, ValaCodeNode* node_reference, gboolean* value_owned);
457 void vala_ccode_base_module_store_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value);
458 static void vala_ccode_base_module_real_visit_initializer_list (ValaCodeVisitor* base, ValaInitializerList* list);
459 gchar* vala_ccode_base_module_get_ccode_type (ValaCodeNode* node);
460 gboolean vala_ccode_base_module_get_ccode_array_null_terminated (ValaCodeNode* node);
461 void vala_ccode_base_module_set_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue);
462 static ValaLocalVariable* vala_ccode_base_module_real_create_local (ValaCodeGenerator* base, ValaDataType* type);
463 static gboolean vala_ccode_base_module_is_in_generic_type (ValaCCodeBaseModule* self, ValaDataType* type);
464 static void vala_ccode_base_module_require_generic_accessors (ValaCCodeBaseModule* self, ValaInterface* iface);
465 ValaCCodeExpression* vala_ccode_base_module_get_type_id_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup);
466 gboolean vala_ccode_base_module_get_in_creation_method (ValaCCodeBaseModule* self);
467 static ValaCCodeExpression* vala_ccode_base_module_real_get_dup_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup);
468 gchar* vala_ccode_base_module_get_ccode_ref_function (ValaTypeSymbol* sym);
469 gchar* vala_ccode_base_module_get_ccode_dup_function (ValaTypeSymbol* sym);
470 gchar* vala_ccode_base_module_generate_dup_func_wrapper (ValaCCodeBaseModule* self, ValaDataType* type);
471 static gchar* vala_ccode_base_module_generate_struct_dup_wrapper (ValaCCodeBaseModule* self, ValaValueType* value_type);
472 static void vala_ccode_base_module_make_comparable_cexpression (ValaCCodeBaseModule* self, ValaDataType** left_type, ValaCCodeExpression** cleft, ValaDataType** right_type, ValaCCodeExpression** cright);
473 ValaCCodeExpression* vala_ccode_base_module_try_cast_value_to_type (ValaCCodeBaseModule* self, ValaCCodeExpression* ccodeexpr, ValaDataType* from, ValaDataType* to, ValaExpression* expr);
474 ValaCCodeFunctionCall* vala_ccode_base_module_generate_instance_cast (ValaCCodeBaseModule* self, ValaCCodeExpression* expr, ValaTypeSymbol* type);
475 static gchar* vala_ccode_base_module_generate_struct_equal_function (ValaCCodeBaseModule* self, ValaStruct* st);
476 gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym);
477 gboolean vala_ccode_base_module_add_wrapper (ValaCCodeBaseModule* self, const gchar* wrapper_name);
478 static gchar* vala_ccode_base_module_generate_numeric_equal_function (ValaCCodeBaseModule* self, ValaTypeSymbol* sym);
479 gboolean vala_ccode_base_module_get_ccode_has_copy_function (ValaStruct* st);
480 static void vala_ccode_base_module_generate_struct_copy_function (ValaCCodeBaseModule* self, ValaStruct* st);
481 gchar* vala_ccode_base_module_get_ccode_copy_function (ValaTypeSymbol* sym);
482 gchar* vala_ccode_base_module_generate_free_function_address_of_wrapper (ValaCCodeBaseModule* self, ValaDataType* type);
483 gchar* vala_ccode_base_module_get_ccode_free_function (ValaTypeSymbol* sym);
484 gchar* vala_ccode_base_module_generate_free_func_wrapper (ValaCCodeBaseModule* self, ValaDataType* type);
485 gboolean vala_ccode_base_module_get_ccode_has_destroy_function (ValaStruct* st);
486 static void vala_ccode_base_module_generate_struct_destroy_function (ValaCCodeBaseModule* self, ValaStruct* st);
487 gchar* vala_ccode_base_module_get_ccode_destroy_function (ValaTypeSymbol* sym);
488 ValaCCodeExpression* vala_ccode_base_module_get_destroy0_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup);
489 ValaCCodeExpression* vala_ccode_base_module_get_destroy_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup);
490 static gchar* vala_ccode_base_module_generate_collection_free_wrapper (ValaCCodeBaseModule* self, ValaDataType* collection_type, ValaCCodeIdentifier* element_destroy_func_expression);
491 gchar* vala_ccode_base_module_get_ccode_unref_function (ValaObjectTypeSymbol* sym);
492 static gboolean vala_ccode_base_module_is_free_function_address_of (ValaCCodeBaseModule* self, ValaDataType* type);
493 gchar* vala_ccode_base_module_append_struct_array_free (ValaCCodeBaseModule* self, ValaStruct* st);
494 static gchar* vala_ccode_base_module_real_append_struct_array_free (ValaCCodeBaseModule* self, ValaStruct* st);
495 static ValaCCodeExpression* vala_ccode_base_module_real_destroy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition);
496 ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value);
497 gboolean vala_ccode_base_module_get_array_null_terminated (ValaCCodeBaseModule* self, ValaTargetValue* value);
498 ValaCCodeExpression* vala_ccode_base_module_get_array_length_cexpr (ValaCCodeBaseModule* self, ValaTargetValue* value);
499 static void vala_ccode_base_module_real_visit_end_full_expression (ValaCodeVisitor* base, ValaExpression* expr);
500 static void vala_ccode_base_module_real_visit_expression_statement (ValaCodeVisitor* base, ValaExpressionStatement* stmt);
501 void vala_ccode_base_module_append_scope_free (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at);
502 static void vala_ccode_base_module_real_append_scope_free (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at);
503 void vala_ccode_base_module_append_local_free (ValaCCodeBaseModule* self, ValaSymbol* sym, gboolean stop_at_loop, ValaCodeNode* stop_at);
504 static void vala_ccode_base_module_append_param_free (ValaCCodeBaseModule* self, ValaMethod* m);
505 gboolean vala_ccode_base_module_variable_accessible_in_finally (ValaCCodeBaseModule* self, ValaLocalVariable* local);
506 ValaTryStatement* vala_ccode_base_module_get_current_try (ValaCCodeBaseModule* self);
507 static void vala_ccode_base_module_real_visit_return_statement (ValaCodeVisitor* base, ValaReturnStatement* stmt);
508 ValaPropertyAccessor* vala_ccode_base_module_get_current_property_accessor (ValaCCodeBaseModule* self);
509 void vala_ccode_base_module_create_postcondition_statement (ValaCCodeBaseModule* self, ValaExpression* postcondition);
510 void vala_ccode_base_module_set_current_method_return (ValaCCodeBaseModule* self, gboolean value);
511 static ValaCCodeExpression* vala_ccode_base_module_get_lock_expression (ValaCCodeBaseModule* self, ValaStatement* stmt, ValaExpression* resource);
512 static void vala_ccode_base_module_real_visit_lock_statement (ValaCodeVisitor* base, ValaLockStatement* stmt);
513 static void vala_ccode_base_module_real_visit_unlock_statement (ValaCodeVisitor* base, ValaUnlockStatement* stmt);
514 static void vala_ccode_base_module_real_visit_delete_statement (ValaCodeVisitor* base, ValaDeleteStatement* stmt);
515 static void vala_ccode_base_module_real_visit_expression (ValaCodeVisitor* base, ValaExpression* expr);
516 ValaCCodeExpression* vala_ccode_base_module_convert_from_generic_pointer (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr, ValaDataType* actual_type);
517 ValaCCodeExpression* vala_ccode_base_module_convert_to_generic_pointer (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr, ValaDataType* actual_type);
518 static void vala_ccode_base_module_real_visit_boolean_literal (ValaCodeVisitor* base, ValaBooleanLiteral* expr);
519 static void vala_ccode_base_module_real_visit_character_literal (ValaCodeVisitor* base, ValaCharacterLiteral* expr);
520 static void vala_ccode_base_module_real_visit_integer_literal (ValaCodeVisitor* base, ValaIntegerLiteral* expr);
521 static void vala_ccode_base_module_real_visit_real_literal (ValaCodeVisitor* base, ValaRealLiteral* expr);
522 static void vala_ccode_base_module_real_visit_string_literal (ValaCodeVisitor* base, ValaStringLiteral* expr);
523 static void vala_ccode_base_module_real_visit_regex_literal (ValaCodeVisitor* base, ValaRegexLiteral* expr);
524 static void vala_ccode_base_module_real_visit_null_literal (ValaCodeVisitor* base, ValaNullLiteral* expr);
525 void vala_ccode_base_module_append_array_length (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* size);
526 void vala_ccode_base_module_set_delegate_target (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* delegate_target);
527 void vala_ccode_base_module_set_delegate_target_destroy_notify (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* destroy_notify);
528 static ValaTargetValue* vala_ccode_base_module_real_get_local_cvalue (ValaCCodeBaseModule* self, ValaLocalVariable* local);
529 static ValaTargetValue* vala_ccode_base_module_real_get_parameter_cvalue (ValaCCodeBaseModule* self, ValaParameter* param);
530 static ValaTargetValue* vala_ccode_base_module_real_get_field_cvalue (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance);
531 ValaTargetValue* vala_ccode_base_module_load_variable (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value);
532 static ValaTargetValue* vala_ccode_base_module_real_load_variable (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value);
533 static ValaTargetValue* vala_ccode_base_module_real_load_this_parameter (ValaCCodeBaseModule* self, ValaTypeSymbol* sym);
534 static void vala_ccode_base_module_real_store_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value);
535 static gchar* vala_ccode_base_module_real_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname);
536 ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cexpression (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify);
537 static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_cexpression (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify);
538 static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value);
539 static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value);
540 static gchar* vala_ccode_base_module_real_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname);
541 static void vala_ccode_base_module_real_visit_base_access (ValaCodeVisitor* base, ValaBaseAccess* expr);
542 static void vala_ccode_base_module_real_visit_postfix_expression (ValaCodeVisitor* base, ValaPostfixExpression* expr);
543 static ValaMemberAccess* vala_ccode_base_module_find_property_access (ValaCCodeBaseModule* self, ValaExpression* expr);
544 void vala_ccode_base_module_store_property (ValaCCodeBaseModule* self, ValaProperty* prop, ValaExpression* instance, ValaTargetValue* value);
545 static gboolean vala_ccode_base_module_is_limited_generic_type (ValaCCodeBaseModule* self, ValaDataType* type);
546 gboolean vala_ccode_base_module_requires_copy (ValaCCodeBaseModule* self, ValaDataType* type);
547 static gboolean vala_ccode_base_module_is_ref_function_void (ValaCCodeBaseModule* self, ValaDataType* type);
548 gboolean vala_ccode_base_module_get_ccode_ref_function_void (ValaClass* cl);
549 gboolean vala_ccode_base_module_get_ccode_free_function_address_of (ValaClass* cl);
550 ValaTargetValue* vala_ccode_base_module_copy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node);
551 static ValaTargetValue* vala_ccode_base_module_real_copy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node);
552 gboolean vala_ccode_base_module_get_non_null (ValaCCodeBaseModule* self, ValaTargetValue* value);
553 static gboolean vala_ccode_base_module_is_reference_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg);
554 static gboolean vala_ccode_base_module_is_nullable_value_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg);
555 static gboolean vala_ccode_base_module_is_signed_integer_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg);
556 static gboolean vala_ccode_base_module_is_unsigned_integer_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg);
557 static void vala_ccode_base_module_check_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg);
558 static void vala_ccode_base_module_real_generate_class_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
559 static void vala_ccode_base_module_real_generate_interface_declaration (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space);
560 void vala_ccode_base_module_generate_method_declaration (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space);
561 static void vala_ccode_base_module_real_generate_method_declaration (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space);
562 static void vala_ccode_base_module_real_generate_error_domain_declaration (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space);
563 void vala_ccode_base_module_add_generic_type_arguments (ValaCCodeBaseModule* self, ValaMap* arg_map, ValaList* type_args, ValaCodeNode* expr, gboolean is_chainup, ValaList* type_parameters);
564 gint vala_ccode_base_module_get_param_pos (ValaCCodeBaseModule* self, gdouble param_pos, gboolean ellipsis);
565 static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCodeVisitor* base, ValaObjectCreationExpression* expr);
566 gboolean vala_ccode_base_module_get_ccode_has_new_function (ValaMethod* m);
567 gdouble vala_ccode_base_module_get_ccode_instance_pos (ValaCodeNode* node);
568 gchar* vala_ccode_base_module_get_ccode_finish_name (ValaMethod* m);
569 gboolean vala_ccode_base_module_get_ccode_simple_generics (ValaMethod* m);
570 gdouble vala_ccode_base_module_get_ccode_array_length_pos (ValaCodeNode* node);
571 ValaCCodeExpression* vala_ccode_base_module_get_array_length_cexpression (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim);
572 gdouble vala_ccode_base_module_get_ccode_delegate_target_pos (ValaCodeNode* node);
573 ValaCCodeExpression* vala_ccode_base_module_handle_struct_argument (ValaCCodeBaseModule* self, ValaParameter* param, ValaExpression* arg, ValaCCodeExpression* cexpr);
574 gdouble vala_ccode_base_module_get_ccode_pos (ValaParameter* param);
575 void vala_ccode_base_module_set_current_method_inner_error (ValaCCodeBaseModule* self, gboolean value);
576 gchar* vala_ccode_base_module_get_ccode_sentinel (ValaMethod* m);
577 gchar* vala_ccode_base_module_generate_ready_function (ValaCCodeBaseModule* self, ValaMethod* m);
578 static void vala_ccode_base_module_real_visit_sizeof_expression (ValaCodeVisitor* base, ValaSizeofExpression* expr);
579 static void vala_ccode_base_module_real_visit_typeof_expression (ValaCodeVisitor* base, ValaTypeofExpression* expr);
580 static void vala_ccode_base_module_real_visit_unary_expression (ValaCodeVisitor* base, ValaUnaryExpression* expr);
581 void vala_glib_value_append_array_length_cvalue (ValaGLibValue* self, ValaCCodeExpression* length_cvalue);
582 ValaTargetValue* vala_ccode_base_module_try_cast_variant_to_type (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaDataType* to, ValaCodeNode* node);
583 ValaCCodeExpression* vala_ccode_base_module_deserialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail);
584 static ValaCCodeExpression* vala_ccode_base_module_real_deserialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail);
585 ValaCCodeExpression* vala_ccode_base_module_serialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr);
586 static ValaCCodeExpression* vala_ccode_base_module_real_serialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr);
587 static void vala_ccode_base_module_real_visit_cast_expression (ValaCodeVisitor* base, ValaCastExpression* expr);
588 static ValaCCodeExpression* vala_ccode_base_module_create_type_check (ValaCCodeBaseModule* self, ValaCCodeNode* ccodenode, ValaDataType* type);
589 ValaCCodeExpression* vala_ccode_base_module_get_delegate_target (ValaCCodeBaseModule* self, ValaExpression* expr);
590 ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_destroy_notify (ValaCCodeBaseModule* self, ValaExpression* expr);
591 static void vala_ccode_base_module_real_visit_named_argument (ValaCodeVisitor* base, ValaNamedArgument* expr);
592 static void vala_ccode_base_module_real_visit_pointer_indirection (ValaCodeVisitor* base, ValaPointerIndirection* expr);
593 static void vala_ccode_base_module_real_visit_addressof_expression (ValaCodeVisitor* base, ValaAddressofExpression* expr);
594 static void vala_ccode_base_module_real_visit_reference_transfer_expression (ValaCodeVisitor* base, ValaReferenceTransferExpression* expr);
595 static void vala_ccode_base_module_real_visit_binary_expression (ValaCodeVisitor* base, ValaBinaryExpression* expr);
596 static gchar* vala_ccode_base_module_generate_array_contains_wrapper (ValaCCodeBaseModule* self, ValaArrayType* array_type);
597 static void vala_ccode_base_module_real_visit_type_check (ValaCodeVisitor* base, ValaTypeCheck* expr);
598 static void vala_ccode_base_module_real_visit_lambda_expression (ValaCodeVisitor* base, ValaLambdaExpression* lambda);
599 ValaBlock* vala_ccode_base_module_get_current_closure_block (ValaCCodeBaseModule* self);
600 gchar* vala_ccode_base_module_get_ccode_ref_sink_function (ValaObjectTypeSymbol* sym);
601 gboolean vala_ccode_base_module_is_lvalue_access_allowed (ValaCCodeBaseModule* self, ValaDataType* type);
602 ValaCCodeExpression* vala_ccode_base_module_get_implicit_cast_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node);
603 static ValaCCodeExpression* vala_ccode_base_module_real_get_implicit_cast_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node);
604 ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node);
605 gboolean vala_ccode_base_module_get_ccode_no_accessor_method (ValaProperty* p);
606 gchar* vala_ccode_base_module_get_dynamic_property_setter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
607 gboolean vala_ccode_base_module_add_generated_external_symbol (ValaCCodeBaseModule* self, ValaSymbol* external_symbol);
608 gboolean vala_ccode_base_module_get_lvalue (ValaCCodeBaseModule* self, ValaTargetValue* value);
609 gchar* vala_ccode_base_module_get_ccode_default_value (ValaTypeSymbol* sym);
610 void vala_ccode_base_module_create_type_check_statement (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name);
611 static void vala_ccode_base_module_real_create_type_check_statement (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name);
612 GType vala_ccode_attribute_get_type (void) G_GNUC_CONST;
613 ValaCCodeAttribute* vala_ccode_base_module_get_ccode_attribute (ValaCodeNode* node);
614 ValaCCodeAttribute* vala_ccode_attribute_new (ValaCodeNode* node);
615 ValaCCodeAttribute* vala_ccode_attribute_construct (GType object_type, ValaCodeNode* node);
616 const gchar* vala_ccode_attribute_get_name (ValaCCodeAttribute* self);
617 const gchar* vala_ccode_attribute_get_const_name (ValaCCodeAttribute* self);
618 gchar* vala_ccode_base_module_get_ccode_type_name (ValaInterface* iface);
619 const gchar* vala_ccode_attribute_get_type_name (ValaCCodeAttribute* self);
620 gchar* vala_ccode_base_module_get_ccode_lower_case_suffix (ValaSymbol* sym);
621 const gchar* vala_ccode_attribute_get_header_filenames (ValaCCodeAttribute* self);
622 gchar* vala_ccode_base_module_get_ccode_prefix (ValaSymbol* sym);
623 const gchar* vala_ccode_attribute_get_prefix (ValaCCodeAttribute* self);
624 const gchar* vala_ccode_attribute_get_lower_case_prefix (ValaCCodeAttribute* self);
625 const gchar* vala_ccode_attribute_get_lower_case_suffix (ValaCCodeAttribute* self);
626 const gchar* vala_ccode_attribute_get_ref_function (ValaCCodeAttribute* self);
627 gboolean vala_ccode_attribute_get_ref_function_void (ValaCCodeAttribute* self);
628 gboolean vala_ccode_attribute_get_free_function_address_of (ValaCCodeAttribute* self);
629 const gchar* vala_ccode_attribute_get_unref_function (ValaCCodeAttribute* self);
630 const gchar* vala_ccode_attribute_get_ref_sink_function (ValaCCodeAttribute* self);
631 const gchar* vala_ccode_attribute_get_copy_function (ValaCCodeAttribute* self);
632 const gchar* vala_ccode_attribute_get_destroy_function (ValaCCodeAttribute* self);
633 const gchar* vala_ccode_attribute_get_free_function (ValaCCodeAttribute* self);
634 const gchar* vala_ccode_attribute_get_type_id (ValaCCodeAttribute* self);
635 gchar* vala_ccode_base_module_get_ccode_marshaller_type_name (ValaCodeNode* node);
636 const gchar* vala_ccode_attribute_get_marshaller_type_name (ValaCCodeAttribute* self);
637 const gchar* vala_ccode_attribute_get_get_value_function (ValaCCodeAttribute* self);
638 const gchar* vala_ccode_attribute_get_set_value_function (ValaCCodeAttribute* self);
639 const gchar* vala_ccode_attribute_get_take_value_function (ValaCCodeAttribute* self);
640 gchar* vala_ccode_base_module_get_ccode_param_spec_function (ValaCodeNode* sym);
641 const gchar* vala_ccode_attribute_get_param_spec_function (ValaCCodeAttribute* self);
642 gchar* vala_ccode_base_module_get_ccode_type_check_function (ValaTypeSymbol* sym);
643 const gchar* vala_ccode_attribute_get_default_value (ValaCCodeAttribute* self);
644 gboolean vala_ccode_attribute_get_array_length (ValaCCodeAttribute* self);
645 gchar* vala_ccode_base_module_get_ccode_array_length_type (ValaCodeNode* node);
646 const gchar* vala_ccode_attribute_get_array_length_type (ValaCCodeAttribute* self);
647 gboolean vala_ccode_attribute_get_array_null_terminated (ValaCCodeAttribute* self);
648 gchar* vala_ccode_base_module_get_ccode_array_length_name (ValaCodeNode* node);
649 const gchar* vala_ccode_attribute_get_array_length_name (ValaCCodeAttribute* self);
650 gchar* vala_ccode_base_module_get_ccode_array_length_expr (ValaCodeNode* node);
651 const gchar* vala_ccode_attribute_get_array_length_expr (ValaCCodeAttribute* self);
652 gdouble vala_ccode_base_module_get_ccode_destroy_notify_pos (ValaCodeNode* node);
653 gboolean vala_ccode_base_module_get_ccode_delegate_target (ValaCodeNode* node);
654 gboolean vala_ccode_attribute_get_delegate_target (ValaCCodeAttribute* self);
655 const gchar* vala_ccode_attribute_get_delegate_target_name (ValaCCodeAttribute* self);
656 gdouble vala_ccode_attribute_get_pos (ValaCCodeAttribute* self);
657 const gchar* vala_ccode_attribute_get_real_name (ValaCCodeAttribute* self);
658 gchar* vala_ccode_base_module_get_ccode_vfunc_name (ValaMethod* m);
659 const gchar* vala_ccode_attribute_get_vfunc_name (ValaCCodeAttribute* self);
660 const gchar* vala_ccode_attribute_get_finish_name (ValaCCodeAttribute* self);
661 gchar* vala_ccode_base_module_get_ccode_finish_vfunc_name (ValaMethod* m);
662 const gchar* vala_ccode_attribute_get_finish_vfunc_name (ValaCCodeAttribute* self);
663 gchar* vala_ccode_base_module_get_ccode_finish_real_name (ValaMethod* m);
664 const gchar* vala_ccode_attribute_get_finish_real_name (ValaCCodeAttribute* self);
665 gboolean vala_ccode_base_module_get_ccode_has_generic_type_parameter (ValaMethod* m);
666 gdouble vala_ccode_base_module_get_ccode_generic_type_pos (ValaMethod* m);
667 const gchar* vala_ccode_attribute_get_sentinel (ValaCCodeAttribute* self);
668 gchar* vala_ccode_base_module_get_ccode_nick (ValaProperty* prop);
669 gchar* vala_ccode_base_module_get_ccode_blurb (ValaProperty* prop);
670 ValaCCodeConstant* vala_ccode_base_module_get_signal_canonical_constant (ValaCCodeBaseModule* self, ValaSignal* sig, const gchar* detail);
671 ValaCCodeConstant* vala_ccode_base_module_get_enum_value_canonical_cconstant (ValaEnumValue* ev);
672 gboolean vala_ccode_base_module_get_signal_has_emitter (ValaCCodeBaseModule* self, ValaSignal* sig);
673 static void vala_ccode_base_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl);
674 static gboolean vala_ccode_base_module_real_is_gobject_property (ValaCCodeBaseModule* self, ValaProperty* prop);
675 ValaConstructor* vala_ccode_base_module_get_current_constructor (ValaCCodeBaseModule* self);
676 ValaDestructor* vala_ccode_base_module_get_current_destructor (ValaCCodeBaseModule* self);
677 void vala_ccode_base_module_return_default_value (ValaCCodeBaseModule* self, ValaDataType* return_type);
678 void vala_ccode_base_module_generate_dynamic_method_wrapper (ValaCCodeBaseModule* self, ValaDynamicMethod* method);
679 static void vala_ccode_base_module_real_generate_dynamic_method_wrapper (ValaCCodeBaseModule* self, ValaDynamicMethod* method);
680 gboolean vala_ccode_base_module_method_has_wrapper (ValaCCodeBaseModule* self, ValaMethod* method);
681 static gboolean vala_ccode_base_module_real_method_has_wrapper (ValaCCodeBaseModule* self, ValaMethod* method);
682 ValaCCodeFunctionCall* vala_ccode_base_module_get_param_spec (ValaCCodeBaseModule* self, ValaProperty* prop);
683 static ValaCCodeFunctionCall* vala_ccode_base_module_real_get_param_spec (ValaCCodeBaseModule* self, ValaProperty* prop);
684 ValaCCodeFunctionCall* vala_ccode_base_module_get_signal_creation (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type);
685 static ValaCCodeFunctionCall* vala_ccode_base_module_real_get_signal_creation (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type);
686 void vala_ccode_base_module_register_dbus_info (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable);
687 static void vala_ccode_base_module_real_register_dbus_info (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable);
688 gchar* vala_ccode_base_module_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
689 static gchar* vala_ccode_base_module_real_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
690 static gchar* vala_ccode_base_module_real_get_dynamic_property_setter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
691 gchar* vala_ccode_base_module_get_dynamic_signal_cname (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
692 static gchar* vala_ccode_base_module_real_get_dynamic_signal_cname (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
693 gchar* vala_ccode_base_module_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
694 static gchar* vala_ccode_base_module_real_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
695 gchar* vala_ccode_base_module_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
696 static gchar* vala_ccode_base_module_real_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
697 gchar* vala_ccode_base_module_get_dynamic_signal_disconnect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
698 static gchar* vala_ccode_base_module_real_get_dynamic_signal_disconnect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
699 static gchar* vala_ccode_base_module_real_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim);
700 static gchar* vala_ccode_base_module_real_get_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim);
701 static ValaCCodeExpression* vala_ccode_base_module_real_get_array_length_cexpression (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim);
702 static ValaCCodeExpression* vala_ccode_base_module_real_get_array_length_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim);
703 static gchar* vala_ccode_base_module_real_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname);
704 static void vala_ccode_base_module_real_add_simple_check (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails);
705 static gchar* vala_ccode_base_module_real_generate_ready_function (ValaCCodeBaseModule* self, ValaMethod* m);
706 ValaList* vala_ccode_base_module_get_array_lengths (ValaCCodeBaseModule* self, ValaExpression* expr);
707 gchar* vala_ccode_base_module_get_ctype (ValaCCodeBaseModule* self, ValaTargetValue* value);
708 void vala_ccode_base_module_set_current_try (ValaCCodeBaseModule* self, ValaTryStatement* value);
709 ValaCatchClause* vala_ccode_base_module_get_current_catch (ValaCCodeBaseModule* self);
710 void vala_ccode_base_module_set_current_catch (ValaCCodeBaseModule* self, ValaCatchClause* value);
711 gboolean vala_ccode_base_module_get_current_method_return (ValaCCodeBaseModule* self);
713 VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_DUMMY_PROPERTY
715 static void vala_ccode_base_module_emit_context_finalize (ValaCCodeBaseModuleEmitContext* obj);
716 static void vala_ccode_base_module_finalize (ValaCodeVisitor* obj);
718 VALA_GLIB_VALUE_DUMMY_PROPERTY
720 static void vala_glib_value_finalize (ValaTargetValue* obj);
721 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
722 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
723 static gint _vala_array_length (gpointer array);
726 gboolean vala_ccode_base_module_is_in_coroutine (ValaCCodeBaseModule* self) {
727 gboolean result = FALSE;
728 gboolean _tmp0_ = FALSE;
732 g_return_val_if_fail (self != NULL, FALSE);
733 _tmp1_ = vala_ccode_base_module_get_current_method (self);
735 if (_tmp2_ != NULL) {
740 _tmp3_ = vala_ccode_base_module_get_current_method (self);
742 _tmp5_ = vala_method_get_coroutine (_tmp4_);
754 static gpointer _vala_code_node_ref0 (gpointer self) {
755 return self ? vala_code_node_ref (self) : NULL;
759 gboolean vala_ccode_base_module_is_in_constructor (ValaCCodeBaseModule* self) {
760 gboolean result = FALSE;
767 g_return_val_if_fail (self != NULL, FALSE);
768 _tmp0_ = vala_ccode_base_module_get_current_method (self);
770 if (_tmp1_ != NULL) {
774 _tmp2_ = vala_ccode_base_module_get_current_symbol (self);
776 _tmp4_ = _vala_code_node_ref0 (_tmp3_);
786 if (!(_tmp5_ != NULL)) {
790 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_CONSTRUCTOR)) {
792 _vala_code_node_unref0 (sym);
796 _tmp8_ = vala_symbol_get_parent_symbol (_tmp7_);
798 _tmp10_ = _vala_code_node_ref0 (_tmp9_);
799 _vala_code_node_unref0 (sym);
803 _vala_code_node_unref0 (sym);
808 gboolean vala_ccode_base_module_is_in_destructor (ValaCCodeBaseModule* self) {
809 gboolean result = FALSE;
816 g_return_val_if_fail (self != NULL, FALSE);
817 _tmp0_ = vala_ccode_base_module_get_current_method (self);
819 if (_tmp1_ != NULL) {
823 _tmp2_ = vala_ccode_base_module_get_current_symbol (self);
825 _tmp4_ = _vala_code_node_ref0 (_tmp3_);
835 if (!(_tmp5_ != NULL)) {
839 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_DESTRUCTOR)) {
841 _vala_code_node_unref0 (sym);
845 _tmp8_ = vala_symbol_get_parent_symbol (_tmp7_);
847 _tmp10_ = _vala_code_node_ref0 (_tmp9_);
848 _vala_code_node_unref0 (sym);
852 _vala_code_node_unref0 (sym);
857 ValaBlock* vala_ccode_base_module_next_closure_block (ValaCCodeBaseModule* self, ValaSymbol* sym) {
858 ValaBlock* result = NULL;
859 g_return_val_if_fail (self != NULL, NULL);
860 g_return_val_if_fail (sym != NULL, NULL);
864 gboolean _tmp1_ = FALSE;
869 gboolean _tmp8_ = FALSE;
872 gboolean _tmp12_ = FALSE;
879 method = G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp0_) : NULL;
881 if (_tmp2_ != NULL) {
886 _tmp4_ = vala_method_get_closure (_tmp3_);
897 block = G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_BLOCK) ? ((ValaBlock*) _tmp7_) : NULL;
899 if (_tmp9_ == NULL) {
902 _tmp8_ = _tmp10_ == NULL;
911 if (_tmp13_ != NULL) {
916 _tmp15_ = vala_block_get_captured (_tmp14_);
930 _tmp20_ = vala_symbol_get_parent_symbol (_tmp19_);
939 ValaCCodeBaseModule* vala_ccode_base_module_construct (GType object_type) {
940 ValaCCodeBaseModule* self = NULL;
964 ValaHashSet* _tmp23_;
1007 self = (ValaCCodeBaseModule*) vala_code_generator_construct (object_type);
1008 _tmp0_ = g_str_hash;
1009 _tmp1_ = g_str_equal;
1010 _tmp2_ = vala_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp0_, _tmp1_);
1011 _vala_iterable_unref0 (self->predefined_marshal_set);
1012 self->predefined_marshal_set = (ValaSet*) _tmp2_;
1013 _tmp3_ = self->predefined_marshal_set;
1014 vala_collection_add ((ValaCollection*) _tmp3_, "VOID:VOID");
1015 _tmp4_ = self->predefined_marshal_set;
1016 vala_collection_add ((ValaCollection*) _tmp4_, "VOID:BOOLEAN");
1017 _tmp5_ = self->predefined_marshal_set;
1018 vala_collection_add ((ValaCollection*) _tmp5_, "VOID:CHAR");
1019 _tmp6_ = self->predefined_marshal_set;
1020 vala_collection_add ((ValaCollection*) _tmp6_, "VOID:UCHAR");
1021 _tmp7_ = self->predefined_marshal_set;
1022 vala_collection_add ((ValaCollection*) _tmp7_, "VOID:INT");
1023 _tmp8_ = self->predefined_marshal_set;
1024 vala_collection_add ((ValaCollection*) _tmp8_, "VOID:UINT");
1025 _tmp9_ = self->predefined_marshal_set;
1026 vala_collection_add ((ValaCollection*) _tmp9_, "VOID:LONG");
1027 _tmp10_ = self->predefined_marshal_set;
1028 vala_collection_add ((ValaCollection*) _tmp10_, "VOID:ULONG");
1029 _tmp11_ = self->predefined_marshal_set;
1030 vala_collection_add ((ValaCollection*) _tmp11_, "VOID:ENUM");
1031 _tmp12_ = self->predefined_marshal_set;
1032 vala_collection_add ((ValaCollection*) _tmp12_, "VOID:FLAGS");
1033 _tmp13_ = self->predefined_marshal_set;
1034 vala_collection_add ((ValaCollection*) _tmp13_, "VOID:FLOAT");
1035 _tmp14_ = self->predefined_marshal_set;
1036 vala_collection_add ((ValaCollection*) _tmp14_, "VOID:DOUBLE");
1037 _tmp15_ = self->predefined_marshal_set;
1038 vala_collection_add ((ValaCollection*) _tmp15_, "VOID:STRING");
1039 _tmp16_ = self->predefined_marshal_set;
1040 vala_collection_add ((ValaCollection*) _tmp16_, "VOID:POINTER");
1041 _tmp17_ = self->predefined_marshal_set;
1042 vala_collection_add ((ValaCollection*) _tmp17_, "VOID:OBJECT");
1043 _tmp18_ = self->predefined_marshal_set;
1044 vala_collection_add ((ValaCollection*) _tmp18_, "STRING:OBJECT,POINTER");
1045 _tmp19_ = self->predefined_marshal_set;
1046 vala_collection_add ((ValaCollection*) _tmp19_, "VOID:UINT,POINTER");
1047 _tmp20_ = self->predefined_marshal_set;
1048 vala_collection_add ((ValaCollection*) _tmp20_, "BOOLEAN:FLAGS");
1049 _tmp21_ = g_str_hash;
1050 _tmp22_ = g_str_equal;
1051 _tmp23_ = vala_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp21_, _tmp22_);
1052 _vala_iterable_unref0 (self->priv->reserved_identifiers);
1053 self->priv->reserved_identifiers = (ValaSet*) _tmp23_;
1054 _tmp24_ = self->priv->reserved_identifiers;
1055 vala_collection_add ((ValaCollection*) _tmp24_, "_Bool");
1056 _tmp25_ = self->priv->reserved_identifiers;
1057 vala_collection_add ((ValaCollection*) _tmp25_, "_Complex");
1058 _tmp26_ = self->priv->reserved_identifiers;
1059 vala_collection_add ((ValaCollection*) _tmp26_, "_Imaginary");
1060 _tmp27_ = self->priv->reserved_identifiers;
1061 vala_collection_add ((ValaCollection*) _tmp27_, "asm");
1062 _tmp28_ = self->priv->reserved_identifiers;
1063 vala_collection_add ((ValaCollection*) _tmp28_, "auto");
1064 _tmp29_ = self->priv->reserved_identifiers;
1065 vala_collection_add ((ValaCollection*) _tmp29_, "break");
1066 _tmp30_ = self->priv->reserved_identifiers;
1067 vala_collection_add ((ValaCollection*) _tmp30_, "case");
1068 _tmp31_ = self->priv->reserved_identifiers;
1069 vala_collection_add ((ValaCollection*) _tmp31_, "char");
1070 _tmp32_ = self->priv->reserved_identifiers;
1071 vala_collection_add ((ValaCollection*) _tmp32_, "const");
1072 _tmp33_ = self->priv->reserved_identifiers;
1073 vala_collection_add ((ValaCollection*) _tmp33_, "continue");
1074 _tmp34_ = self->priv->reserved_identifiers;
1075 vala_collection_add ((ValaCollection*) _tmp34_, "default");
1076 _tmp35_ = self->priv->reserved_identifiers;
1077 vala_collection_add ((ValaCollection*) _tmp35_, "do");
1078 _tmp36_ = self->priv->reserved_identifiers;
1079 vala_collection_add ((ValaCollection*) _tmp36_, "double");
1080 _tmp37_ = self->priv->reserved_identifiers;
1081 vala_collection_add ((ValaCollection*) _tmp37_, "else");
1082 _tmp38_ = self->priv->reserved_identifiers;
1083 vala_collection_add ((ValaCollection*) _tmp38_, "enum");
1084 _tmp39_ = self->priv->reserved_identifiers;
1085 vala_collection_add ((ValaCollection*) _tmp39_, "extern");
1086 _tmp40_ = self->priv->reserved_identifiers;
1087 vala_collection_add ((ValaCollection*) _tmp40_, "float");
1088 _tmp41_ = self->priv->reserved_identifiers;
1089 vala_collection_add ((ValaCollection*) _tmp41_, "for");
1090 _tmp42_ = self->priv->reserved_identifiers;
1091 vala_collection_add ((ValaCollection*) _tmp42_, "goto");
1092 _tmp43_ = self->priv->reserved_identifiers;
1093 vala_collection_add ((ValaCollection*) _tmp43_, "if");
1094 _tmp44_ = self->priv->reserved_identifiers;
1095 vala_collection_add ((ValaCollection*) _tmp44_, "inline");
1096 _tmp45_ = self->priv->reserved_identifiers;
1097 vala_collection_add ((ValaCollection*) _tmp45_, "int");
1098 _tmp46_ = self->priv->reserved_identifiers;
1099 vala_collection_add ((ValaCollection*) _tmp46_, "long");
1100 _tmp47_ = self->priv->reserved_identifiers;
1101 vala_collection_add ((ValaCollection*) _tmp47_, "register");
1102 _tmp48_ = self->priv->reserved_identifiers;
1103 vala_collection_add ((ValaCollection*) _tmp48_, "restrict");
1104 _tmp49_ = self->priv->reserved_identifiers;
1105 vala_collection_add ((ValaCollection*) _tmp49_, "return");
1106 _tmp50_ = self->priv->reserved_identifiers;
1107 vala_collection_add ((ValaCollection*) _tmp50_, "short");
1108 _tmp51_ = self->priv->reserved_identifiers;
1109 vala_collection_add ((ValaCollection*) _tmp51_, "signed");
1110 _tmp52_ = self->priv->reserved_identifiers;
1111 vala_collection_add ((ValaCollection*) _tmp52_, "sizeof");
1112 _tmp53_ = self->priv->reserved_identifiers;
1113 vala_collection_add ((ValaCollection*) _tmp53_, "static");
1114 _tmp54_ = self->priv->reserved_identifiers;
1115 vala_collection_add ((ValaCollection*) _tmp54_, "struct");
1116 _tmp55_ = self->priv->reserved_identifiers;
1117 vala_collection_add ((ValaCollection*) _tmp55_, "switch");
1118 _tmp56_ = self->priv->reserved_identifiers;
1119 vala_collection_add ((ValaCollection*) _tmp56_, "typedef");
1120 _tmp57_ = self->priv->reserved_identifiers;
1121 vala_collection_add ((ValaCollection*) _tmp57_, "union");
1122 _tmp58_ = self->priv->reserved_identifiers;
1123 vala_collection_add ((ValaCollection*) _tmp58_, "unsigned");
1124 _tmp59_ = self->priv->reserved_identifiers;
1125 vala_collection_add ((ValaCollection*) _tmp59_, "void");
1126 _tmp60_ = self->priv->reserved_identifiers;
1127 vala_collection_add ((ValaCollection*) _tmp60_, "volatile");
1128 _tmp61_ = self->priv->reserved_identifiers;
1129 vala_collection_add ((ValaCollection*) _tmp61_, "while");
1130 _tmp62_ = self->priv->reserved_identifiers;
1131 vala_collection_add ((ValaCollection*) _tmp62_, "cdecl");
1132 _tmp63_ = self->priv->reserved_identifiers;
1133 vala_collection_add ((ValaCollection*) _tmp63_, "error");
1134 _tmp64_ = self->priv->reserved_identifiers;
1135 vala_collection_add ((ValaCollection*) _tmp64_, "result");
1136 _tmp65_ = self->priv->reserved_identifiers;
1137 vala_collection_add ((ValaCollection*) _tmp65_, "self");
1142 static gpointer _vala_iterable_ref0 (gpointer self) {
1143 return self ? vala_iterable_ref (self) : NULL;
1147 static void vala_ccode_base_module_real_emit (ValaCodeGenerator* base, ValaCodeContext* context) {
1148 ValaCCodeBaseModule * self;
1149 ValaCodeContext* _tmp0_;
1150 ValaCodeContext* _tmp1_;
1151 ValaNamespace* _tmp2_;
1152 ValaNamespace* _tmp3_;
1157 ValaSymbol* _tmp8_ = NULL;
1159 ValaBooleanType* _tmp10_;
1160 ValaSymbol* _tmp11_;
1163 ValaSymbol* _tmp14_ = NULL;
1164 ValaStruct* _tmp15_;
1165 ValaIntegerType* _tmp16_;
1166 ValaSymbol* _tmp17_;
1169 ValaSymbol* _tmp20_ = NULL;
1170 ValaStruct* _tmp21_;
1171 ValaIntegerType* _tmp22_;
1172 ValaSymbol* _tmp23_;
1175 ValaSymbol* _tmp26_ = NULL;
1176 ValaStruct* _tmp27_;
1177 ValaIntegerType* _tmp28_;
1178 ValaSymbol* _tmp29_;
1181 ValaSymbol* _tmp32_ = NULL;
1182 ValaStruct* _tmp33_;
1183 ValaIntegerType* _tmp34_;
1184 ValaSymbol* _tmp35_;
1187 ValaSymbol* _tmp38_ = NULL;
1188 ValaStruct* _tmp39_;
1189 ValaIntegerType* _tmp40_;
1190 ValaSymbol* _tmp41_;
1193 ValaSymbol* _tmp44_ = NULL;
1194 ValaStruct* _tmp45_;
1195 ValaIntegerType* _tmp46_;
1196 ValaSymbol* _tmp47_;
1199 ValaSymbol* _tmp50_ = NULL;
1200 ValaStruct* _tmp51_;
1201 ValaIntegerType* _tmp52_;
1202 ValaSymbol* _tmp53_;
1205 ValaSymbol* _tmp56_ = NULL;
1206 ValaStruct* _tmp57_;
1207 ValaIntegerType* _tmp58_;
1208 ValaSymbol* _tmp59_;
1211 ValaSymbol* _tmp62_ = NULL;
1212 ValaStruct* _tmp63_;
1213 ValaIntegerType* _tmp64_;
1214 ValaSymbol* _tmp65_;
1217 ValaSymbol* _tmp68_ = NULL;
1218 ValaStruct* _tmp69_;
1219 ValaIntegerType* _tmp70_;
1220 ValaSymbol* _tmp71_;
1223 ValaSymbol* _tmp74_ = NULL;
1224 ValaStruct* _tmp75_;
1225 ValaIntegerType* _tmp76_;
1226 ValaSymbol* _tmp77_;
1229 ValaSymbol* _tmp80_ = NULL;
1230 ValaStruct* _tmp81_;
1231 ValaIntegerType* _tmp82_;
1232 ValaSymbol* _tmp83_;
1235 ValaSymbol* _tmp86_ = NULL;
1236 ValaStruct* _tmp87_;
1237 ValaIntegerType* _tmp88_;
1238 ValaSymbol* _tmp89_;
1241 ValaSymbol* _tmp92_ = NULL;
1242 ValaStruct* _tmp93_;
1243 ValaIntegerType* _tmp94_;
1244 ValaSymbol* _tmp95_;
1247 ValaSymbol* _tmp98_ = NULL;
1248 ValaStruct* _tmp99_;
1249 ValaIntegerType* _tmp100_;
1250 ValaSymbol* _tmp101_;
1251 ValaScope* _tmp102_;
1252 ValaScope* _tmp103_;
1253 ValaSymbol* _tmp104_ = NULL;
1254 ValaStruct* _tmp105_;
1255 ValaIntegerType* _tmp106_;
1256 ValaSymbol* _tmp107_;
1257 ValaScope* _tmp108_;
1258 ValaScope* _tmp109_;
1259 ValaSymbol* _tmp110_ = NULL;
1260 ValaStruct* _tmp111_;
1261 ValaFloatingType* _tmp112_;
1262 ValaSymbol* _tmp113_;
1263 ValaScope* _tmp114_;
1264 ValaScope* _tmp115_;
1265 ValaSymbol* _tmp116_ = NULL;
1266 ValaStruct* _tmp117_;
1267 ValaFloatingType* _tmp118_;
1268 ValaSymbol* _tmp119_;
1269 ValaScope* _tmp120_;
1270 ValaScope* _tmp121_;
1271 ValaSymbol* _tmp122_ = NULL;
1272 ValaClass* _tmp123_;
1273 ValaObjectType* _tmp124_;
1274 ValaSymbol* _tmp125_;
1275 ValaScope* _tmp126_;
1276 ValaScope* _tmp127_;
1277 ValaSymbol* _tmp128_ = NULL;
1278 ValaStruct* unichar_struct;
1279 ValaStruct* _tmp129_;
1280 ValaSymbol* _tmp132_;
1281 ValaScope* _tmp133_;
1282 ValaScope* _tmp134_;
1283 ValaSymbol* _tmp135_ = NULL;
1284 ValaSymbol* glib_ns;
1285 ValaSymbol* _tmp136_;
1286 ValaScope* _tmp137_;
1287 ValaScope* _tmp138_;
1288 ValaSymbol* _tmp139_ = NULL;
1289 ValaSymbol* _tmp140_;
1290 ValaScope* _tmp141_;
1291 ValaScope* _tmp142_;
1292 ValaSymbol* _tmp143_ = NULL;
1293 ValaErrorType* _tmp144_;
1294 ValaSymbol* _tmp145_;
1295 ValaScope* _tmp146_;
1296 ValaScope* _tmp147_;
1297 ValaSymbol* _tmp148_ = NULL;
1298 ValaSymbol* _tmp149_;
1299 ValaScope* _tmp150_;
1300 ValaScope* _tmp151_;
1301 ValaSymbol* _tmp152_ = NULL;
1302 ValaSymbol* _tmp153_;
1303 ValaScope* _tmp154_;
1304 ValaScope* _tmp155_;
1305 ValaSymbol* _tmp156_ = NULL;
1306 ValaSymbol* _tmp157_;
1307 ValaScope* _tmp158_;
1308 ValaScope* _tmp159_;
1309 ValaSymbol* _tmp160_ = NULL;
1310 ValaSymbol* _tmp161_;
1311 ValaScope* _tmp162_;
1312 ValaScope* _tmp163_;
1313 ValaSymbol* _tmp164_ = NULL;
1314 ValaSymbol* _tmp165_;
1315 ValaScope* _tmp166_;
1316 ValaScope* _tmp167_;
1317 ValaSymbol* _tmp168_ = NULL;
1318 ValaSymbol* _tmp169_;
1319 ValaScope* _tmp170_;
1320 ValaScope* _tmp171_;
1321 ValaSymbol* _tmp172_ = NULL;
1322 ValaSymbol* _tmp173_;
1323 ValaScope* _tmp174_;
1324 ValaScope* _tmp175_;
1325 ValaSymbol* _tmp176_ = NULL;
1326 ValaSymbol* _tmp177_;
1327 ValaScope* _tmp178_;
1328 ValaScope* _tmp179_;
1329 ValaSymbol* _tmp180_ = NULL;
1330 ValaSymbol* _tmp181_;
1331 ValaScope* _tmp182_;
1332 ValaScope* _tmp183_;
1333 ValaSymbol* _tmp184_ = NULL;
1334 ValaSymbol* _tmp185_;
1335 ValaScope* _tmp186_;
1336 ValaScope* _tmp187_;
1337 ValaSymbol* _tmp188_ = NULL;
1338 ValaDelegate* _tmp189_;
1339 ValaDelegateType* _tmp190_;
1340 ValaSymbol* _tmp191_;
1341 ValaScope* _tmp192_;
1342 ValaScope* _tmp193_;
1343 ValaSymbol* _tmp194_ = NULL;
1344 ValaStruct* _tmp195_;
1345 ValaIntegerType* _tmp196_;
1346 ValaSymbol* _tmp197_;
1347 ValaScope* _tmp198_;
1348 ValaScope* _tmp199_;
1349 ValaSymbol* _tmp200_ = NULL;
1350 ValaSymbol* _tmp201_;
1351 ValaScope* _tmp202_;
1352 ValaScope* _tmp203_;
1353 ValaSymbol* _tmp204_ = NULL;
1354 ValaSymbol* _tmp205_;
1355 ValaScope* _tmp206_;
1356 ValaScope* _tmp207_;
1357 ValaSymbol* _tmp208_ = NULL;
1358 ValaCodeContext* _tmp209_;
1359 gboolean _tmp210_ = FALSE;
1360 ValaSymbol* _tmp233_;
1361 ValaScope* _tmp234_;
1362 ValaScope* _tmp235_;
1363 ValaSymbol* _tmp236_ = NULL;
1364 ValaSymbol* _tmp237_;
1365 ValaScope* _tmp238_;
1366 ValaScope* _tmp239_;
1367 ValaSymbol* _tmp240_ = NULL;
1368 ValaSymbol* _tmp241_;
1369 ValaScope* _tmp242_;
1370 ValaScope* _tmp243_;
1371 ValaSymbol* _tmp244_ = NULL;
1372 ValaClass* _tmp245_;
1373 ValaObjectType* _tmp246_;
1374 ValaCodeContext* _tmp247_;
1375 ValaMethod* _tmp248_;
1376 ValaMethod* _tmp249_;
1377 ValaSymbol* _tmp279_;
1378 ValaScope* _tmp280_;
1379 ValaScope* _tmp281_;
1380 ValaSymbol* _tmp282_ = NULL;
1381 ValaCCodeFile* _tmp283_;
1382 ValaCCodeFile* _tmp284_;
1383 ValaCCodeFile* _tmp285_;
1384 ValaCCodeFile* _tmp286_;
1385 ValaCodeContext* _tmp287_;
1386 ValaList* _tmp288_ = NULL;
1387 ValaList* source_files;
1388 ValaCodeContext* _tmp314_;
1389 const gchar* _tmp315_;
1390 const gchar* _tmp316_;
1391 ValaCodeContext* _tmp341_;
1392 const gchar* _tmp342_;
1393 const gchar* _tmp343_;
1394 ValaCodeContext* _tmp358_;
1395 const gchar* _tmp359_;
1396 const gchar* _tmp360_;
1397 self = (ValaCCodeBaseModule*) base;
1398 g_return_if_fail (context != NULL);
1400 vala_ccode_base_module_set_context (self, _tmp0_);
1402 _tmp2_ = vala_code_context_get_root (_tmp1_);
1404 _tmp4_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp3_);
1405 _vala_code_node_unref0 (self->root_symbol);
1406 self->root_symbol = _tmp4_;
1407 _tmp5_ = self->root_symbol;
1408 _tmp6_ = vala_symbol_get_scope (_tmp5_);
1410 _tmp8_ = vala_scope_lookup (_tmp7_, "bool");
1411 _tmp9_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_STRUCT, ValaStruct);
1412 _tmp10_ = vala_boolean_type_new (_tmp9_);
1413 _vala_code_node_unref0 (self->bool_type);
1414 self->bool_type = (ValaDataType*) _tmp10_;
1415 _vala_code_node_unref0 (_tmp9_);
1416 _tmp11_ = self->root_symbol;
1417 _tmp12_ = vala_symbol_get_scope (_tmp11_);
1419 _tmp14_ = vala_scope_lookup (_tmp13_, "char");
1420 _tmp15_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, VALA_TYPE_STRUCT, ValaStruct);
1421 _tmp16_ = vala_integer_type_new (_tmp15_, NULL, NULL);
1422 _vala_code_node_unref0 (self->char_type);
1423 self->char_type = (ValaDataType*) _tmp16_;
1424 _vala_code_node_unref0 (_tmp15_);
1425 _tmp17_ = self->root_symbol;
1426 _tmp18_ = vala_symbol_get_scope (_tmp17_);
1428 _tmp20_ = vala_scope_lookup (_tmp19_, "uchar");
1429 _tmp21_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, VALA_TYPE_STRUCT, ValaStruct);
1430 _tmp22_ = vala_integer_type_new (_tmp21_, NULL, NULL);
1431 _vala_code_node_unref0 (self->uchar_type);
1432 self->uchar_type = (ValaDataType*) _tmp22_;
1433 _vala_code_node_unref0 (_tmp21_);
1434 _tmp23_ = self->root_symbol;
1435 _tmp24_ = vala_symbol_get_scope (_tmp23_);
1437 _tmp26_ = vala_scope_lookup (_tmp25_, "short");
1438 _tmp27_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_STRUCT, ValaStruct);
1439 _tmp28_ = vala_integer_type_new (_tmp27_, NULL, NULL);
1440 _vala_code_node_unref0 (self->short_type);
1441 self->short_type = (ValaDataType*) _tmp28_;
1442 _vala_code_node_unref0 (_tmp27_);
1443 _tmp29_ = self->root_symbol;
1444 _tmp30_ = vala_symbol_get_scope (_tmp29_);
1446 _tmp32_ = vala_scope_lookup (_tmp31_, "ushort");
1447 _tmp33_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp32_, VALA_TYPE_STRUCT, ValaStruct);
1448 _tmp34_ = vala_integer_type_new (_tmp33_, NULL, NULL);
1449 _vala_code_node_unref0 (self->ushort_type);
1450 self->ushort_type = (ValaDataType*) _tmp34_;
1451 _vala_code_node_unref0 (_tmp33_);
1452 _tmp35_ = self->root_symbol;
1453 _tmp36_ = vala_symbol_get_scope (_tmp35_);
1455 _tmp38_ = vala_scope_lookup (_tmp37_, "int");
1456 _tmp39_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, VALA_TYPE_STRUCT, ValaStruct);
1457 _tmp40_ = vala_integer_type_new (_tmp39_, NULL, NULL);
1458 _vala_code_node_unref0 (self->int_type);
1459 self->int_type = (ValaDataType*) _tmp40_;
1460 _vala_code_node_unref0 (_tmp39_);
1461 _tmp41_ = self->root_symbol;
1462 _tmp42_ = vala_symbol_get_scope (_tmp41_);
1464 _tmp44_ = vala_scope_lookup (_tmp43_, "uint");
1465 _tmp45_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, VALA_TYPE_STRUCT, ValaStruct);
1466 _tmp46_ = vala_integer_type_new (_tmp45_, NULL, NULL);
1467 _vala_code_node_unref0 (self->uint_type);
1468 self->uint_type = (ValaDataType*) _tmp46_;
1469 _vala_code_node_unref0 (_tmp45_);
1470 _tmp47_ = self->root_symbol;
1471 _tmp48_ = vala_symbol_get_scope (_tmp47_);
1473 _tmp50_ = vala_scope_lookup (_tmp49_, "long");
1474 _tmp51_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, VALA_TYPE_STRUCT, ValaStruct);
1475 _tmp52_ = vala_integer_type_new (_tmp51_, NULL, NULL);
1476 _vala_code_node_unref0 (self->long_type);
1477 self->long_type = (ValaDataType*) _tmp52_;
1478 _vala_code_node_unref0 (_tmp51_);
1479 _tmp53_ = self->root_symbol;
1480 _tmp54_ = vala_symbol_get_scope (_tmp53_);
1482 _tmp56_ = vala_scope_lookup (_tmp55_, "ulong");
1483 _tmp57_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp56_, VALA_TYPE_STRUCT, ValaStruct);
1484 _tmp58_ = vala_integer_type_new (_tmp57_, NULL, NULL);
1485 _vala_code_node_unref0 (self->ulong_type);
1486 self->ulong_type = (ValaDataType*) _tmp58_;
1487 _vala_code_node_unref0 (_tmp57_);
1488 _tmp59_ = self->root_symbol;
1489 _tmp60_ = vala_symbol_get_scope (_tmp59_);
1491 _tmp62_ = vala_scope_lookup (_tmp61_, "int8");
1492 _tmp63_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp62_, VALA_TYPE_STRUCT, ValaStruct);
1493 _tmp64_ = vala_integer_type_new (_tmp63_, NULL, NULL);
1494 _vala_code_node_unref0 (self->int8_type);
1495 self->int8_type = (ValaDataType*) _tmp64_;
1496 _vala_code_node_unref0 (_tmp63_);
1497 _tmp65_ = self->root_symbol;
1498 _tmp66_ = vala_symbol_get_scope (_tmp65_);
1500 _tmp68_ = vala_scope_lookup (_tmp67_, "uint8");
1501 _tmp69_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp68_, VALA_TYPE_STRUCT, ValaStruct);
1502 _tmp70_ = vala_integer_type_new (_tmp69_, NULL, NULL);
1503 _vala_code_node_unref0 (self->uint8_type);
1504 self->uint8_type = (ValaDataType*) _tmp70_;
1505 _vala_code_node_unref0 (_tmp69_);
1506 _tmp71_ = self->root_symbol;
1507 _tmp72_ = vala_symbol_get_scope (_tmp71_);
1509 _tmp74_ = vala_scope_lookup (_tmp73_, "int16");
1510 _tmp75_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp74_, VALA_TYPE_STRUCT, ValaStruct);
1511 _tmp76_ = vala_integer_type_new (_tmp75_, NULL, NULL);
1512 _vala_code_node_unref0 (self->int16_type);
1513 self->int16_type = (ValaDataType*) _tmp76_;
1514 _vala_code_node_unref0 (_tmp75_);
1515 _tmp77_ = self->root_symbol;
1516 _tmp78_ = vala_symbol_get_scope (_tmp77_);
1518 _tmp80_ = vala_scope_lookup (_tmp79_, "uint16");
1519 _tmp81_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp80_, VALA_TYPE_STRUCT, ValaStruct);
1520 _tmp82_ = vala_integer_type_new (_tmp81_, NULL, NULL);
1521 _vala_code_node_unref0 (self->uint16_type);
1522 self->uint16_type = (ValaDataType*) _tmp82_;
1523 _vala_code_node_unref0 (_tmp81_);
1524 _tmp83_ = self->root_symbol;
1525 _tmp84_ = vala_symbol_get_scope (_tmp83_);
1527 _tmp86_ = vala_scope_lookup (_tmp85_, "int32");
1528 _tmp87_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp86_, VALA_TYPE_STRUCT, ValaStruct);
1529 _tmp88_ = vala_integer_type_new (_tmp87_, NULL, NULL);
1530 _vala_code_node_unref0 (self->int32_type);
1531 self->int32_type = (ValaDataType*) _tmp88_;
1532 _vala_code_node_unref0 (_tmp87_);
1533 _tmp89_ = self->root_symbol;
1534 _tmp90_ = vala_symbol_get_scope (_tmp89_);
1536 _tmp92_ = vala_scope_lookup (_tmp91_, "uint32");
1537 _tmp93_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp92_, VALA_TYPE_STRUCT, ValaStruct);
1538 _tmp94_ = vala_integer_type_new (_tmp93_, NULL, NULL);
1539 _vala_code_node_unref0 (self->uint32_type);
1540 self->uint32_type = (ValaDataType*) _tmp94_;
1541 _vala_code_node_unref0 (_tmp93_);
1542 _tmp95_ = self->root_symbol;
1543 _tmp96_ = vala_symbol_get_scope (_tmp95_);
1545 _tmp98_ = vala_scope_lookup (_tmp97_, "int64");
1546 _tmp99_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp98_, VALA_TYPE_STRUCT, ValaStruct);
1547 _tmp100_ = vala_integer_type_new (_tmp99_, NULL, NULL);
1548 _vala_code_node_unref0 (self->int64_type);
1549 self->int64_type = (ValaDataType*) _tmp100_;
1550 _vala_code_node_unref0 (_tmp99_);
1551 _tmp101_ = self->root_symbol;
1552 _tmp102_ = vala_symbol_get_scope (_tmp101_);
1553 _tmp103_ = _tmp102_;
1554 _tmp104_ = vala_scope_lookup (_tmp103_, "uint64");
1555 _tmp105_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp104_, VALA_TYPE_STRUCT, ValaStruct);
1556 _tmp106_ = vala_integer_type_new (_tmp105_, NULL, NULL);
1557 _vala_code_node_unref0 (self->uint64_type);
1558 self->uint64_type = (ValaDataType*) _tmp106_;
1559 _vala_code_node_unref0 (_tmp105_);
1560 _tmp107_ = self->root_symbol;
1561 _tmp108_ = vala_symbol_get_scope (_tmp107_);
1562 _tmp109_ = _tmp108_;
1563 _tmp110_ = vala_scope_lookup (_tmp109_, "float");
1564 _tmp111_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp110_, VALA_TYPE_STRUCT, ValaStruct);
1565 _tmp112_ = vala_floating_type_new (_tmp111_);
1566 _vala_code_node_unref0 (self->float_type);
1567 self->float_type = (ValaDataType*) _tmp112_;
1568 _vala_code_node_unref0 (_tmp111_);
1569 _tmp113_ = self->root_symbol;
1570 _tmp114_ = vala_symbol_get_scope (_tmp113_);
1571 _tmp115_ = _tmp114_;
1572 _tmp116_ = vala_scope_lookup (_tmp115_, "double");
1573 _tmp117_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp116_, VALA_TYPE_STRUCT, ValaStruct);
1574 _tmp118_ = vala_floating_type_new (_tmp117_);
1575 _vala_code_node_unref0 (self->double_type);
1576 self->double_type = (ValaDataType*) _tmp118_;
1577 _vala_code_node_unref0 (_tmp117_);
1578 _tmp119_ = self->root_symbol;
1579 _tmp120_ = vala_symbol_get_scope (_tmp119_);
1580 _tmp121_ = _tmp120_;
1581 _tmp122_ = vala_scope_lookup (_tmp121_, "string");
1582 _tmp123_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp122_, VALA_TYPE_CLASS, ValaClass);
1583 _tmp124_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp123_);
1584 _vala_code_node_unref0 (self->string_type);
1585 self->string_type = (ValaDataType*) _tmp124_;
1586 _vala_code_node_unref0 (_tmp123_);
1587 _tmp125_ = self->root_symbol;
1588 _tmp126_ = vala_symbol_get_scope (_tmp125_);
1589 _tmp127_ = _tmp126_;
1590 _tmp128_ = vala_scope_lookup (_tmp127_, "unichar");
1591 unichar_struct = G_TYPE_CHECK_INSTANCE_CAST (_tmp128_, VALA_TYPE_STRUCT, ValaStruct);
1592 _tmp129_ = unichar_struct;
1593 if (_tmp129_ != NULL) {
1594 ValaStruct* _tmp130_;
1595 ValaIntegerType* _tmp131_;
1596 _tmp130_ = unichar_struct;
1597 _tmp131_ = vala_integer_type_new (_tmp130_, NULL, NULL);
1598 _vala_code_node_unref0 (self->unichar_type);
1599 self->unichar_type = (ValaDataType*) _tmp131_;
1601 _tmp132_ = self->root_symbol;
1602 _tmp133_ = vala_symbol_get_scope (_tmp132_);
1603 _tmp134_ = _tmp133_;
1604 _tmp135_ = vala_scope_lookup (_tmp134_, "GLib");
1607 _tmp137_ = vala_symbol_get_scope (_tmp136_);
1608 _tmp138_ = _tmp137_;
1609 _tmp139_ = vala_scope_lookup (_tmp138_, "Type");
1610 _vala_code_node_unref0 (self->gtype_type);
1611 self->gtype_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp139_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
1613 _tmp141_ = vala_symbol_get_scope (_tmp140_);
1614 _tmp142_ = _tmp141_;
1615 _tmp143_ = vala_scope_lookup (_tmp142_, "Object");
1616 _vala_code_node_unref0 (self->gobject_type);
1617 self->gobject_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp143_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
1618 _tmp144_ = vala_error_type_new (NULL, NULL, NULL);
1619 _vala_code_node_unref0 (self->gerror_type);
1620 self->gerror_type = _tmp144_;
1622 _tmp146_ = vala_symbol_get_scope (_tmp145_);
1623 _tmp147_ = _tmp146_;
1624 _tmp148_ = vala_scope_lookup (_tmp147_, "List");
1625 _vala_code_node_unref0 (self->glist_type);
1626 self->glist_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp148_, VALA_TYPE_CLASS, ValaClass);
1628 _tmp150_ = vala_symbol_get_scope (_tmp149_);
1629 _tmp151_ = _tmp150_;
1630 _tmp152_ = vala_scope_lookup (_tmp151_, "SList");
1631 _vala_code_node_unref0 (self->gslist_type);
1632 self->gslist_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp152_, VALA_TYPE_CLASS, ValaClass);
1634 _tmp154_ = vala_symbol_get_scope (_tmp153_);
1635 _tmp155_ = _tmp154_;
1636 _tmp156_ = vala_scope_lookup (_tmp155_, "Node");
1637 _vala_code_node_unref0 (self->gnode_type);
1638 self->gnode_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp156_, VALA_TYPE_CLASS, ValaClass);
1640 _tmp158_ = vala_symbol_get_scope (_tmp157_);
1641 _tmp159_ = _tmp158_;
1642 _tmp160_ = vala_scope_lookup (_tmp159_, "Queue");
1643 _vala_code_node_unref0 (self->gqueue_type);
1644 self->gqueue_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp160_, VALA_TYPE_CLASS, ValaClass);
1646 _tmp162_ = vala_symbol_get_scope (_tmp161_);
1647 _tmp163_ = _tmp162_;
1648 _tmp164_ = vala_scope_lookup (_tmp163_, "ValueArray");
1649 _vala_code_node_unref0 (self->gvaluearray_type);
1650 self->gvaluearray_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp164_, VALA_TYPE_CLASS, ValaClass);
1652 _tmp166_ = vala_symbol_get_scope (_tmp165_);
1653 _tmp167_ = _tmp166_;
1654 _tmp168_ = vala_scope_lookup (_tmp167_, "StringBuilder");
1655 _vala_code_node_unref0 (self->gstringbuilder_type);
1656 self->gstringbuilder_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp168_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
1658 _tmp170_ = vala_symbol_get_scope (_tmp169_);
1659 _tmp171_ = _tmp170_;
1660 _tmp172_ = vala_scope_lookup (_tmp171_, "Array");
1661 _vala_code_node_unref0 (self->garray_type);
1662 self->garray_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp172_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
1664 _tmp174_ = vala_symbol_get_scope (_tmp173_);
1665 _tmp175_ = _tmp174_;
1666 _tmp176_ = vala_scope_lookup (_tmp175_, "ByteArray");
1667 _vala_code_node_unref0 (self->gbytearray_type);
1668 self->gbytearray_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp176_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
1670 _tmp178_ = vala_symbol_get_scope (_tmp177_);
1671 _tmp179_ = _tmp178_;
1672 _tmp180_ = vala_scope_lookup (_tmp179_, "PtrArray");
1673 _vala_code_node_unref0 (self->gptrarray_type);
1674 self->gptrarray_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp180_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
1676 _tmp182_ = vala_symbol_get_scope (_tmp181_);
1677 _tmp183_ = _tmp182_;
1678 _tmp184_ = vala_scope_lookup (_tmp183_, "ThreadPool");
1679 _vala_code_node_unref0 (self->gthreadpool_type);
1680 self->gthreadpool_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp184_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
1682 _tmp186_ = vala_symbol_get_scope (_tmp185_);
1683 _tmp187_ = _tmp186_;
1684 _tmp188_ = vala_scope_lookup (_tmp187_, "DestroyNotify");
1685 _tmp189_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp188_, VALA_TYPE_DELEGATE, ValaDelegate);
1686 _tmp190_ = vala_delegate_type_new (_tmp189_);
1687 _vala_code_node_unref0 (self->gdestroynotify_type);
1688 self->gdestroynotify_type = (ValaDataType*) _tmp190_;
1689 _vala_code_node_unref0 (_tmp189_);
1691 _tmp192_ = vala_symbol_get_scope (_tmp191_);
1692 _tmp193_ = _tmp192_;
1693 _tmp194_ = vala_scope_lookup (_tmp193_, "Quark");
1694 _tmp195_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp194_, VALA_TYPE_STRUCT, ValaStruct);
1695 _tmp196_ = vala_integer_type_new (_tmp195_, NULL, NULL);
1696 _vala_code_node_unref0 (self->gquark_type);
1697 self->gquark_type = (ValaDataType*) _tmp196_;
1698 _vala_code_node_unref0 (_tmp195_);
1700 _tmp198_ = vala_symbol_get_scope (_tmp197_);
1701 _tmp199_ = _tmp198_;
1702 _tmp200_ = vala_scope_lookup (_tmp199_, "Value");
1703 _vala_code_node_unref0 (self->gvalue_type);
1704 self->gvalue_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp200_, VALA_TYPE_STRUCT, ValaStruct);
1706 _tmp202_ = vala_symbol_get_scope (_tmp201_);
1707 _tmp203_ = _tmp202_;
1708 _tmp204_ = vala_scope_lookup (_tmp203_, "Variant");
1709 _vala_code_node_unref0 (self->gvariant_type);
1710 self->gvariant_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp204_, VALA_TYPE_CLASS, ValaClass);
1712 _tmp206_ = vala_symbol_get_scope (_tmp205_);
1713 _tmp207_ = _tmp206_;
1714 _tmp208_ = vala_scope_lookup (_tmp207_, "Source");
1715 _vala_code_node_unref0 (self->gsource_type);
1716 self->gsource_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp208_, VALA_TYPE_CLASS, ValaClass);
1718 _tmp210_ = vala_code_context_require_glib_version (_tmp209_, 2, 32);
1720 ValaSymbol* _tmp211_;
1721 ValaScope* _tmp212_;
1722 ValaScope* _tmp213_;
1723 ValaSymbol* _tmp214_ = NULL;
1724 ValaSymbol* _tmp215_;
1725 ValaScope* _tmp216_;
1726 ValaScope* _tmp217_;
1727 ValaSymbol* _tmp218_ = NULL;
1728 ValaSymbol* _tmp219_;
1729 ValaScope* _tmp220_;
1730 ValaScope* _tmp221_;
1731 ValaSymbol* _tmp222_ = NULL;
1732 ValaSymbol* _tmp223_;
1733 ValaScope* _tmp224_;
1734 ValaScope* _tmp225_;
1735 ValaSymbol* _tmp226_ = NULL;
1736 ValaStruct* _tmp227_;
1737 ValaStruct* _tmp228_;
1739 _tmp212_ = vala_symbol_get_scope (_tmp211_);
1740 _tmp213_ = _tmp212_;
1741 _tmp214_ = vala_scope_lookup (_tmp213_, "Mutex");
1742 _vala_code_node_unref0 (self->gmutex_type);
1743 self->gmutex_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp214_, VALA_TYPE_STRUCT, ValaStruct);
1745 _tmp216_ = vala_symbol_get_scope (_tmp215_);
1746 _tmp217_ = _tmp216_;
1747 _tmp218_ = vala_scope_lookup (_tmp217_, "RecMutex");
1748 _vala_code_node_unref0 (self->grecmutex_type);
1749 self->grecmutex_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp218_, VALA_TYPE_STRUCT, ValaStruct);
1751 _tmp220_ = vala_symbol_get_scope (_tmp219_);
1752 _tmp221_ = _tmp220_;
1753 _tmp222_ = vala_scope_lookup (_tmp221_, "RWLock");
1754 _vala_code_node_unref0 (self->grwlock_type);
1755 self->grwlock_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp222_, VALA_TYPE_STRUCT, ValaStruct);
1757 _tmp224_ = vala_symbol_get_scope (_tmp223_);
1758 _tmp225_ = _tmp224_;
1759 _tmp226_ = vala_scope_lookup (_tmp225_, "Cond");
1760 _vala_code_node_unref0 (self->gcond_type);
1761 self->gcond_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp226_, VALA_TYPE_STRUCT, ValaStruct);
1762 _tmp227_ = self->grecmutex_type;
1763 _tmp228_ = _vala_code_node_ref0 (_tmp227_);
1764 _vala_code_node_unref0 (self->mutex_type);
1765 self->mutex_type = _tmp228_;
1767 ValaSymbol* _tmp229_;
1768 ValaScope* _tmp230_;
1769 ValaScope* _tmp231_;
1770 ValaSymbol* _tmp232_ = NULL;
1772 _tmp230_ = vala_symbol_get_scope (_tmp229_);
1773 _tmp231_ = _tmp230_;
1774 _tmp232_ = vala_scope_lookup (_tmp231_, "StaticRecMutex");
1775 _vala_code_node_unref0 (self->mutex_type);
1776 self->mutex_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp232_, VALA_TYPE_STRUCT, ValaStruct);
1779 _tmp234_ = vala_symbol_get_scope (_tmp233_);
1780 _tmp235_ = _tmp234_;
1781 _tmp236_ = vala_scope_lookup (_tmp235_, "TypeModule");
1782 _vala_code_node_unref0 (self->type_module_type);
1783 self->type_module_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp236_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
1784 _tmp237_ = self->root_symbol;
1785 _tmp238_ = vala_symbol_get_scope (_tmp237_);
1786 _tmp239_ = _tmp238_;
1787 _tmp240_ = vala_scope_lookup (_tmp239_, "GLib");
1788 _tmp241_ = _tmp240_;
1789 _tmp242_ = vala_symbol_get_scope (_tmp241_);
1790 _tmp243_ = _tmp242_;
1791 _tmp244_ = vala_scope_lookup (_tmp243_, "Regex");
1792 _tmp245_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp244_, VALA_TYPE_CLASS, ValaClass);
1793 _tmp246_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp245_);
1794 _vala_code_node_unref0 (self->regex_type);
1795 self->regex_type = (ValaDataType*) _tmp246_;
1796 _vala_code_node_unref0 (_tmp245_);
1797 _vala_code_node_unref0 (_tmp241_);
1799 _tmp248_ = vala_code_context_get_module_init_method (_tmp247_);
1800 _tmp249_ = _tmp248_;
1801 if (_tmp249_ != NULL) {
1804 ValaCodeContext* _tmp250_;
1805 ValaMethod* _tmp251_;
1806 ValaMethod* _tmp252_;
1807 ValaList* _tmp253_ = NULL;
1808 ValaList* _parameter_list;
1812 gint _parameter_size;
1813 gint _parameter_index;
1815 _tmp251_ = vala_code_context_get_module_init_method (_tmp250_);
1816 _tmp252_ = _tmp251_;
1817 _tmp253_ = vala_method_get_parameters (_tmp252_);
1818 _parameter_list = _tmp253_;
1819 _tmp254_ = _parameter_list;
1820 _tmp255_ = vala_collection_get_size ((ValaCollection*) _tmp254_);
1821 _tmp256_ = _tmp255_;
1822 _parameter_size = _tmp256_;
1823 _parameter_index = -1;
1830 gpointer _tmp262_ = NULL;
1831 ValaParameter* parameter;
1832 ValaParameter* _tmp263_;
1833 ValaDataType* _tmp264_;
1834 ValaDataType* _tmp265_;
1835 ValaTypeSymbol* _tmp266_;
1836 ValaTypeSymbol* _tmp267_;
1837 ValaTypeSymbol* _tmp268_;
1838 _tmp257_ = _parameter_index;
1839 _parameter_index = _tmp257_ + 1;
1840 _tmp258_ = _parameter_index;
1841 _tmp259_ = _parameter_size;
1842 if (!(_tmp258_ < _tmp259_)) {
1845 _tmp260_ = _parameter_list;
1846 _tmp261_ = _parameter_index;
1847 _tmp262_ = vala_list_get (_tmp260_, _tmp261_);
1848 parameter = (ValaParameter*) _tmp262_;
1849 _tmp263_ = parameter;
1850 _tmp264_ = vala_variable_get_variable_type ((ValaVariable*) _tmp263_);
1851 _tmp265_ = _tmp264_;
1852 _tmp266_ = vala_data_type_get_data_type (_tmp265_);
1853 _tmp267_ = _tmp266_;
1854 _tmp268_ = self->type_module_type;
1855 if (_tmp267_ == _tmp268_) {
1856 ValaParameter* _tmp269_;
1857 const gchar* _tmp270_;
1858 const gchar* _tmp271_;
1860 self->in_plugin = TRUE;
1861 _tmp269_ = parameter;
1862 _tmp270_ = vala_symbol_get_name ((ValaSymbol*) _tmp269_);
1863 _tmp271_ = _tmp270_;
1864 _tmp272_ = g_strdup (_tmp271_);
1865 _g_free0 (self->module_init_param_name);
1866 self->module_init_param_name = _tmp272_;
1867 _vala_code_node_unref0 (parameter);
1870 _vala_code_node_unref0 (parameter);
1872 _vala_iterable_unref0 (_parameter_list);
1874 _tmp273_ = self->in_plugin;
1876 ValaCodeContext* _tmp274_;
1877 ValaMethod* _tmp275_;
1878 ValaMethod* _tmp276_;
1879 ValaSourceReference* _tmp277_;
1880 ValaSourceReference* _tmp278_;
1882 _tmp275_ = vala_code_context_get_module_init_method (_tmp274_);
1883 _tmp276_ = _tmp275_;
1884 _tmp277_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp276_);
1885 _tmp278_ = _tmp277_;
1886 vala_report_error (_tmp278_, "[ModuleInit] requires a parameter of type `GLib.TypeModule'");
1890 _tmp280_ = vala_symbol_get_scope (_tmp279_);
1891 _tmp281_ = _tmp280_;
1892 _tmp282_ = vala_scope_lookup (_tmp281_, "DBusProxy");
1893 _vala_code_node_unref0 (self->dbus_proxy_type);
1894 self->dbus_proxy_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp282_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
1895 _tmp283_ = vala_ccode_file_new ();
1896 _vala_ccode_file_unref0 (self->header_file);
1897 self->header_file = _tmp283_;
1898 _tmp284_ = self->header_file;
1899 vala_ccode_file_set_is_header (_tmp284_, TRUE);
1900 _tmp285_ = vala_ccode_file_new ();
1901 _vala_ccode_file_unref0 (self->internal_header_file);
1902 self->internal_header_file = _tmp285_;
1903 _tmp286_ = self->internal_header_file;
1904 vala_ccode_file_set_is_header (_tmp286_, TRUE);
1906 _tmp288_ = vala_code_context_get_source_files (_tmp287_);
1907 source_files = _tmp288_;
1911 ValaList* _file_list;
1917 _tmp289_ = source_files;
1918 _tmp290_ = _vala_iterable_ref0 (_tmp289_);
1919 _file_list = _tmp290_;
1920 _tmp291_ = _file_list;
1921 _tmp292_ = vala_collection_get_size ((ValaCollection*) _tmp291_);
1922 _tmp293_ = _tmp292_;
1923 _file_size = _tmp293_;
1931 gpointer _tmp299_ = NULL;
1932 ValaSourceFile* file;
1933 gboolean _tmp300_ = FALSE;
1934 ValaSourceFile* _tmp301_;
1935 ValaSourceFileType _tmp302_;
1936 ValaSourceFileType _tmp303_;
1938 _tmp294_ = _file_index;
1939 _file_index = _tmp294_ + 1;
1940 _tmp295_ = _file_index;
1941 _tmp296_ = _file_size;
1942 if (!(_tmp295_ < _tmp296_)) {
1945 _tmp297_ = _file_list;
1946 _tmp298_ = _file_index;
1947 _tmp299_ = vala_list_get (_tmp297_, _tmp298_);
1948 file = (ValaSourceFile*) _tmp299_;
1950 _tmp302_ = vala_source_file_get_file_type (_tmp301_);
1951 _tmp303_ = _tmp302_;
1952 if (_tmp303_ == VALA_SOURCE_FILE_TYPE_SOURCE) {
1955 gboolean _tmp304_ = FALSE;
1956 ValaCodeContext* _tmp305_;
1957 const gchar* _tmp306_;
1958 const gchar* _tmp307_;
1961 _tmp306_ = vala_code_context_get_header_filename (_tmp305_);
1962 _tmp307_ = _tmp306_;
1963 if (_tmp307_ != NULL) {
1964 ValaSourceFile* _tmp308_;
1965 ValaSourceFileType _tmp309_;
1966 ValaSourceFileType _tmp310_;
1968 _tmp309_ = vala_source_file_get_file_type (_tmp308_);
1969 _tmp310_ = _tmp309_;
1970 _tmp304_ = _tmp310_ == VALA_SOURCE_FILE_TYPE_FAST;
1974 _tmp311_ = _tmp304_;
1975 _tmp300_ = _tmp311_;
1977 _tmp312_ = _tmp300_;
1979 ValaSourceFile* _tmp313_;
1981 vala_source_file_accept (_tmp313_, (ValaCodeVisitor*) self);
1983 _vala_source_file_unref0 (file);
1985 _vala_iterable_unref0 (_file_list);
1988 _tmp315_ = vala_code_context_get_symbols_filename (_tmp314_);
1989 _tmp316_ = _tmp315_;
1990 if (_tmp316_ != NULL) {
1991 ValaCodeContext* _tmp317_;
1992 const gchar* _tmp318_;
1993 const gchar* _tmp319_;
1994 FILE* _tmp320_ = NULL;
1998 _tmp318_ = vala_code_context_get_symbols_filename (_tmp317_);
1999 _tmp319_ = _tmp318_;
2000 _tmp320_ = g_fopen (_tmp319_, "w");
2003 if (_tmp321_ == NULL) {
2004 ValaCodeContext* _tmp322_;
2005 const gchar* _tmp323_;
2006 const gchar* _tmp324_;
2007 gchar* _tmp325_ = NULL;
2010 _tmp323_ = vala_code_context_get_symbols_filename (_tmp322_);
2011 _tmp324_ = _tmp323_;
2012 _tmp325_ = g_strdup_printf ("unable to open `%s' for writing", _tmp324_);
2013 _tmp326_ = _tmp325_;
2014 vala_report_error (NULL, _tmp326_);
2015 _g_free0 (_tmp326_);
2017 _vala_iterable_unref0 (source_files);
2018 _vala_code_node_unref0 (glib_ns);
2019 _vala_code_node_unref0 (unichar_struct);
2023 ValaCCodeFile* _tmp327_;
2024 ValaList* _tmp328_ = NULL;
2025 ValaList* _symbol_list;
2031 _tmp327_ = self->header_file;
2032 _tmp328_ = vala_ccode_file_get_symbols (_tmp327_);
2033 _symbol_list = _tmp328_;
2034 _tmp329_ = _symbol_list;
2035 _tmp330_ = vala_collection_get_size ((ValaCollection*) _tmp329_);
2036 _tmp331_ = _tmp330_;
2037 _symbol_size = _tmp331_;
2045 gpointer _tmp337_ = NULL;
2048 const gchar* _tmp339_;
2050 _tmp332_ = _symbol_index;
2051 _symbol_index = _tmp332_ + 1;
2052 _tmp333_ = _symbol_index;
2053 _tmp334_ = _symbol_size;
2054 if (!(_tmp333_ < _tmp334_)) {
2057 _tmp335_ = _symbol_list;
2058 _tmp336_ = _symbol_index;
2059 _tmp337_ = vala_list_get (_tmp335_, _tmp336_);
2060 symbol = (gchar*) _tmp337_;
2063 fputs (_tmp339_, _tmp338_);
2065 fputc ('\n', _tmp340_);
2068 _vala_iterable_unref0 (_symbol_list);
2075 _tmp342_ = vala_code_context_get_header_filename (_tmp341_);
2076 _tmp343_ = _tmp342_;
2077 if (_tmp343_ != NULL) {
2078 ValaCCodeFile* _tmp344_;
2079 ValaCodeContext* _tmp345_;
2080 const gchar* _tmp346_;
2081 const gchar* _tmp347_;
2082 ValaCodeContext* _tmp348_;
2085 gboolean _tmp351_ = FALSE;
2088 _tmp344_ = self->header_file;
2090 _tmp346_ = vala_code_context_get_header_filename (_tmp345_);
2091 _tmp347_ = _tmp346_;
2093 _tmp349_ = vala_code_context_get_version_header (_tmp348_);
2094 _tmp350_ = _tmp349_;
2095 _tmp351_ = vala_ccode_file_store (_tmp344_, _tmp347_, NULL, _tmp350_, FALSE, "G_BEGIN_DECLS", "G_END_DECLS");
2099 ValaCodeContext* _tmp353_;
2100 const gchar* _tmp354_;
2101 const gchar* _tmp355_;
2102 gchar* _tmp356_ = NULL;
2105 _tmp354_ = vala_code_context_get_header_filename (_tmp353_);
2106 _tmp355_ = _tmp354_;
2107 _tmp356_ = g_strdup_printf ("unable to open `%s' for writing", _tmp355_);
2108 _tmp357_ = _tmp356_;
2109 vala_report_error (NULL, _tmp357_);
2110 _g_free0 (_tmp357_);
2114 _tmp359_ = vala_code_context_get_internal_header_filename (_tmp358_);
2115 _tmp360_ = _tmp359_;
2116 if (_tmp360_ != NULL) {
2117 ValaCCodeFile* _tmp361_;
2118 ValaCodeContext* _tmp362_;
2119 const gchar* _tmp363_;
2120 const gchar* _tmp364_;
2121 ValaCodeContext* _tmp365_;
2124 gboolean _tmp368_ = FALSE;
2127 _tmp361_ = self->internal_header_file;
2129 _tmp363_ = vala_code_context_get_internal_header_filename (_tmp362_);
2130 _tmp364_ = _tmp363_;
2132 _tmp366_ = vala_code_context_get_version_header (_tmp365_);
2133 _tmp367_ = _tmp366_;
2134 _tmp368_ = vala_ccode_file_store (_tmp361_, _tmp364_, NULL, _tmp367_, FALSE, "G_BEGIN_DECLS", "G_END_DECLS");
2138 ValaCodeContext* _tmp370_;
2139 const gchar* _tmp371_;
2140 const gchar* _tmp372_;
2141 gchar* _tmp373_ = NULL;
2144 _tmp371_ = vala_code_context_get_internal_header_filename (_tmp370_);
2145 _tmp372_ = _tmp371_;
2146 _tmp373_ = g_strdup_printf ("unable to open `%s' for writing", _tmp372_);
2147 _tmp374_ = _tmp373_;
2148 vala_report_error (NULL, _tmp374_);
2149 _g_free0 (_tmp374_);
2152 _vala_iterable_unref0 (source_files);
2153 _vala_code_node_unref0 (glib_ns);
2154 _vala_code_node_unref0 (unichar_struct);
2158 static gpointer _vala_ccode_base_module_emit_context_ref0 (gpointer self) {
2159 return self ? vala_ccode_base_module_emit_context_ref (self) : NULL;
2163 void vala_ccode_base_module_push_context (ValaCCodeBaseModule* self, ValaCCodeBaseModuleEmitContext* emit_context) {
2164 ValaCCodeBaseModuleEmitContext* _tmp0_;
2165 ValaCCodeBaseModuleEmitContext* _tmp3_;
2166 ValaCCodeBaseModuleEmitContext* _tmp4_;
2167 ValaCCodeFunction* _tmp5_;
2168 ValaCCodeFunction* _tmp6_;
2169 g_return_if_fail (self != NULL);
2170 g_return_if_fail (emit_context != NULL);
2171 _tmp0_ = self->emit_context;
2172 if (_tmp0_ != NULL) {
2174 ValaCCodeBaseModuleEmitContext* _tmp2_;
2175 _tmp1_ = self->priv->emit_context_stack;
2176 _tmp2_ = self->emit_context;
2177 vala_collection_add ((ValaCollection*) _tmp1_, _tmp2_);
2179 _tmp3_ = emit_context;
2180 _tmp4_ = _vala_ccode_base_module_emit_context_ref0 (_tmp3_);
2181 _vala_ccode_base_module_emit_context_unref0 (self->emit_context);
2182 self->emit_context = _tmp4_;
2183 _tmp5_ = vala_ccode_base_module_get_ccode (self);
2185 if (_tmp6_ != NULL) {
2186 ValaCCodeFunction* _tmp7_;
2187 ValaCCodeFunction* _tmp8_;
2188 ValaCCodeLineDirective* _tmp9_;
2189 _tmp7_ = vala_ccode_base_module_get_ccode (self);
2191 _tmp9_ = self->current_line;
2192 vala_ccode_function_set_current_line (_tmp8_, _tmp9_);
2197 void vala_ccode_base_module_pop_context (ValaCCodeBaseModule* self) {
2201 g_return_if_fail (self != NULL);
2202 _tmp0_ = self->priv->emit_context_stack;
2203 _tmp1_ = vala_collection_get_size ((ValaCollection*) _tmp0_);
2210 gpointer _tmp7_ = NULL;
2215 ValaCCodeFunction* _tmp12_;
2216 ValaCCodeFunction* _tmp13_;
2217 _tmp3_ = self->priv->emit_context_stack;
2218 _tmp4_ = self->priv->emit_context_stack;
2219 _tmp5_ = vala_collection_get_size ((ValaCollection*) _tmp4_);
2221 _tmp7_ = vala_list_get (_tmp3_, _tmp6_ - 1);
2222 _vala_ccode_base_module_emit_context_unref0 (self->emit_context);
2223 self->emit_context = (ValaCCodeBaseModuleEmitContext*) _tmp7_;
2224 _tmp8_ = self->priv->emit_context_stack;
2225 _tmp9_ = self->priv->emit_context_stack;
2226 _tmp10_ = vala_collection_get_size ((ValaCollection*) _tmp9_);
2228 vala_list_remove_at (_tmp8_, _tmp11_ - 1);
2229 _tmp12_ = vala_ccode_base_module_get_ccode (self);
2231 if (_tmp13_ != NULL) {
2232 ValaCCodeFunction* _tmp14_;
2233 ValaCCodeFunction* _tmp15_;
2234 ValaCCodeLineDirective* _tmp16_;
2235 _tmp14_ = vala_ccode_base_module_get_ccode (self);
2237 _tmp16_ = self->current_line;
2238 vala_ccode_function_set_current_line (_tmp15_, _tmp16_);
2241 _vala_ccode_base_module_emit_context_unref0 (self->emit_context);
2242 self->emit_context = NULL;
2247 void vala_ccode_base_module_push_line (ValaCCodeBaseModule* self, ValaSourceReference* source_reference) {
2249 ValaCCodeLineDirective* _tmp1_;
2250 ValaSourceReference* _tmp2_;
2251 g_return_if_fail (self != NULL);
2252 _tmp0_ = self->priv->line_directive_stack;
2253 _tmp1_ = self->current_line;
2254 vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_);
2255 _tmp2_ = source_reference;
2256 if (_tmp2_ != NULL) {
2257 ValaSourceReference* _tmp3_;
2258 ValaSourceFile* _tmp4_;
2259 ValaSourceFile* _tmp5_;
2260 const gchar* _tmp6_;
2261 const gchar* _tmp7_;
2262 ValaSourceReference* _tmp8_;
2263 ValaSourceLocation _tmp9_;
2264 ValaSourceLocation _tmp10_;
2266 ValaCCodeLineDirective* _tmp12_;
2267 ValaCCodeFunction* _tmp13_;
2268 ValaCCodeFunction* _tmp14_;
2269 _tmp3_ = source_reference;
2270 _tmp4_ = vala_source_reference_get_file (_tmp3_);
2272 _tmp6_ = vala_source_file_get_filename (_tmp5_);
2274 _tmp8_ = source_reference;
2275 vala_source_reference_get_begin (_tmp8_, &_tmp9_);
2277 _tmp11_ = _tmp10_.line;
2278 _tmp12_ = vala_ccode_line_directive_new (_tmp7_, _tmp11_);
2279 _vala_ccode_node_unref0 (self->current_line);
2280 self->current_line = _tmp12_;
2281 _tmp13_ = vala_ccode_base_module_get_ccode (self);
2283 if (_tmp14_ != NULL) {
2284 ValaCCodeFunction* _tmp15_;
2285 ValaCCodeFunction* _tmp16_;
2286 ValaCCodeLineDirective* _tmp17_;
2287 _tmp15_ = vala_ccode_base_module_get_ccode (self);
2289 _tmp17_ = self->current_line;
2290 vala_ccode_function_set_current_line (_tmp16_, _tmp17_);
2296 void vala_ccode_base_module_pop_line (ValaCCodeBaseModule* self) {
2301 gpointer _tmp4_ = NULL;
2306 ValaCCodeFunction* _tmp9_;
2307 ValaCCodeFunction* _tmp10_;
2308 g_return_if_fail (self != NULL);
2309 _tmp0_ = self->priv->line_directive_stack;
2310 _tmp1_ = self->priv->line_directive_stack;
2311 _tmp2_ = vala_collection_get_size ((ValaCollection*) _tmp1_);
2313 _tmp4_ = vala_list_get (_tmp0_, _tmp3_ - 1);
2314 _vala_ccode_node_unref0 (self->current_line);
2315 self->current_line = (ValaCCodeLineDirective*) _tmp4_;
2316 _tmp5_ = self->priv->line_directive_stack;
2317 _tmp6_ = self->priv->line_directive_stack;
2318 _tmp7_ = vala_collection_get_size ((ValaCollection*) _tmp6_);
2320 vala_list_remove_at (_tmp5_, _tmp8_ - 1);
2321 _tmp9_ = vala_ccode_base_module_get_ccode (self);
2323 if (_tmp10_ != NULL) {
2324 ValaCCodeFunction* _tmp11_;
2325 ValaCCodeFunction* _tmp12_;
2326 ValaCCodeLineDirective* _tmp13_;
2327 _tmp11_ = vala_ccode_base_module_get_ccode (self);
2329 _tmp13_ = self->current_line;
2330 vala_ccode_function_set_current_line (_tmp12_, _tmp13_);
2335 static gpointer _vala_ccode_node_ref0 (gpointer self) {
2336 return self ? vala_ccode_node_ref (self) : NULL;
2340 void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func) {
2341 ValaCCodeBaseModuleEmitContext* _tmp0_;
2342 ValaArrayList* _tmp1_;
2343 ValaCCodeFunction* _tmp2_;
2344 ValaCCodeFunction* _tmp3_;
2345 ValaCCodeBaseModuleEmitContext* _tmp4_;
2346 ValaCCodeFunction* _tmp5_;
2347 ValaCCodeFunction* _tmp6_;
2348 ValaCCodeFunction* _tmp7_;
2349 ValaCCodeFunction* _tmp8_;
2350 ValaCCodeLineDirective* _tmp9_;
2351 g_return_if_fail (self != NULL);
2352 g_return_if_fail (func != NULL);
2353 _tmp0_ = self->emit_context;
2354 _tmp1_ = _tmp0_->ccode_stack;
2355 _tmp2_ = vala_ccode_base_module_get_ccode (self);
2357 vala_collection_add ((ValaCollection*) _tmp1_, _tmp3_);
2358 _tmp4_ = self->emit_context;
2360 _tmp6_ = _vala_ccode_node_ref0 (_tmp5_);
2361 _vala_ccode_node_unref0 (_tmp4_->ccode);
2362 _tmp4_->ccode = _tmp6_;
2363 _tmp7_ = vala_ccode_base_module_get_ccode (self);
2365 _tmp9_ = self->current_line;
2366 vala_ccode_function_set_current_line (_tmp8_, _tmp9_);
2370 void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self) {
2371 ValaCCodeBaseModuleEmitContext* _tmp0_;
2372 ValaCCodeBaseModuleEmitContext* _tmp1_;
2373 ValaArrayList* _tmp2_;
2374 ValaCCodeBaseModuleEmitContext* _tmp3_;
2375 ValaArrayList* _tmp4_;
2378 gpointer _tmp7_ = NULL;
2379 ValaCCodeBaseModuleEmitContext* _tmp8_;
2380 ValaArrayList* _tmp9_;
2381 ValaCCodeBaseModuleEmitContext* _tmp10_;
2382 ValaArrayList* _tmp11_;
2385 ValaCCodeFunction* _tmp14_;
2386 ValaCCodeFunction* _tmp15_;
2387 g_return_if_fail (self != NULL);
2388 _tmp0_ = self->emit_context;
2389 _tmp1_ = self->emit_context;
2390 _tmp2_ = _tmp1_->ccode_stack;
2391 _tmp3_ = self->emit_context;
2392 _tmp4_ = _tmp3_->ccode_stack;
2393 _tmp5_ = vala_collection_get_size ((ValaCollection*) _tmp4_);
2395 _tmp7_ = vala_list_get ((ValaList*) _tmp2_, _tmp6_ - 1);
2396 _vala_ccode_node_unref0 (_tmp0_->ccode);
2397 _tmp0_->ccode = (ValaCCodeFunction*) _tmp7_;
2398 _tmp8_ = self->emit_context;
2399 _tmp9_ = _tmp8_->ccode_stack;
2400 _tmp10_ = self->emit_context;
2401 _tmp11_ = _tmp10_->ccode_stack;
2402 _tmp12_ = vala_collection_get_size ((ValaCollection*) _tmp11_);
2404 vala_list_remove_at ((ValaList*) _tmp9_, _tmp13_ - 1);
2405 _tmp14_ = vala_ccode_base_module_get_ccode (self);
2407 if (_tmp15_ != NULL) {
2408 ValaCCodeFunction* _tmp16_;
2409 ValaCCodeFunction* _tmp17_;
2410 ValaCCodeLineDirective* _tmp18_;
2411 _tmp16_ = vala_ccode_base_module_get_ccode (self);
2413 _tmp18_ = self->current_line;
2414 vala_ccode_function_set_current_line (_tmp17_, _tmp18_);
2419 gboolean vala_ccode_base_module_add_symbol_declaration (ValaCCodeBaseModule* self, ValaCCodeFile* decl_space, ValaSymbol* sym, const gchar* name) {
2420 gboolean result = FALSE;
2421 ValaCCodeFile* _tmp0_;
2422 const gchar* _tmp1_;
2423 gboolean _tmp2_ = FALSE;
2425 ValaSourceReference* _tmp4_;
2426 ValaSourceReference* _tmp5_;
2427 gboolean _tmp11_ = FALSE;
2428 ValaSymbol* _tmp12_;
2432 g_return_val_if_fail (self != NULL, FALSE);
2433 g_return_val_if_fail (decl_space != NULL, FALSE);
2434 g_return_val_if_fail (sym != NULL, FALSE);
2435 g_return_val_if_fail (name != NULL, FALSE);
2436 _tmp0_ = decl_space;
2438 _tmp2_ = vala_ccode_file_add_declaration (_tmp0_, _tmp1_);
2444 _tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_);
2446 if (_tmp5_ != NULL) {
2448 ValaSourceReference* _tmp7_;
2449 ValaSourceReference* _tmp8_;
2450 ValaSourceFile* _tmp9_;
2451 ValaSourceFile* _tmp10_;
2453 _tmp7_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp6_);
2455 _tmp9_ = vala_source_reference_get_file (_tmp8_);
2457 vala_source_file_set_used (_tmp10_, TRUE);
2460 _tmp13_ = vala_symbol_get_external_package (_tmp12_);
2465 gboolean _tmp15_ = FALSE;
2466 gboolean _tmp16_ = FALSE;
2467 ValaCCodeFile* _tmp17_;
2472 _tmp17_ = decl_space;
2473 _tmp18_ = vala_ccode_file_get_is_header (_tmp17_);
2476 ValaCodeContext* _tmp20_ = NULL;
2477 ValaCodeContext* _tmp21_;
2480 _tmp20_ = vala_code_context_get ();
2482 _tmp22_ = vala_code_context_get_use_header (_tmp21_);
2485 _vala_code_context_unref0 (_tmp21_);
2491 ValaSymbol* _tmp25_;
2492 gboolean _tmp26_ = FALSE;
2494 _tmp26_ = vala_symbol_is_internal_symbol (_tmp25_);
2504 ValaSymbol* _tmp29_;
2505 gchar* _tmp30_ = NULL;
2508 gchar** _tmp33_ = NULL;
2510 gint _tmp34__length1;
2512 _tmp30_ = vala_ccode_base_module_get_ccode_header_filenames (_tmp29_);
2514 _tmp33_ = _tmp32_ = g_strsplit (_tmp31_, ",", 0);
2516 _tmp34__length1 = _vala_array_length (_tmp32_);
2519 gchar** header_filename_collection = NULL;
2520 gint header_filename_collection_length1 = 0;
2521 gint _header_filename_collection_size_ = 0;
2522 gint header_filename_it = 0;
2523 header_filename_collection = _tmp34_;
2524 header_filename_collection_length1 = _tmp34__length1;
2525 for (header_filename_it = 0; header_filename_it < _tmp34__length1; header_filename_it = header_filename_it + 1) {
2527 gchar* header_filename = NULL;
2528 _tmp35_ = g_strdup (header_filename_collection[header_filename_it]);
2529 header_filename = _tmp35_;
2531 gboolean _tmp36_ = FALSE;
2532 ValaSymbol* _tmp37_;
2535 ValaCCodeFile* _tmp48_;
2536 const gchar* _tmp49_;
2539 _tmp38_ = vala_symbol_get_external_package (_tmp37_);
2544 gboolean _tmp40_ = FALSE;
2545 ValaSymbol* _tmp41_;
2550 _tmp42_ = vala_symbol_get_external_package (_tmp41_);
2553 ValaSymbol* _tmp44_;
2557 _tmp45_ = vala_symbol_get_from_commandline (_tmp44_);
2566 _tmp48_ = decl_space;
2567 _tmp49_ = header_filename;
2569 vala_ccode_file_add_include (_tmp48_, _tmp49_, _tmp50_);
2570 _g_free0 (header_filename);
2573 header_filename_collection = (_vala_array_free (header_filename_collection, header_filename_collection_length1, (GDestroyNotify) g_free), NULL);
2584 ValaCCodeIdentifier* vala_ccode_base_module_get_value_setter_function (ValaCCodeBaseModule* self, ValaDataType* type_reference) {
2585 ValaCCodeIdentifier* result = NULL;
2586 ValaDataType* _tmp0_;
2587 ValaArrayType* _tmp1_;
2588 ValaArrayType* array_type;
2589 ValaDataType* _tmp2_;
2590 ValaTypeSymbol* _tmp3_;
2591 ValaTypeSymbol* _tmp4_;
2592 g_return_val_if_fail (self != NULL, NULL);
2593 g_return_val_if_fail (type_reference != NULL, NULL);
2594 _tmp0_ = type_reference;
2595 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp0_) : NULL);
2596 array_type = _tmp1_;
2597 _tmp2_ = type_reference;
2598 _tmp3_ = vala_data_type_get_data_type (_tmp2_);
2600 if (_tmp4_ != NULL) {
2601 ValaDataType* _tmp5_;
2602 ValaTypeSymbol* _tmp6_;
2603 ValaTypeSymbol* _tmp7_;
2604 gchar* _tmp8_ = NULL;
2606 ValaCCodeIdentifier* _tmp10_;
2607 ValaCCodeIdentifier* _tmp11_;
2608 _tmp5_ = type_reference;
2609 _tmp6_ = vala_data_type_get_data_type (_tmp5_);
2611 _tmp8_ = vala_ccode_base_module_get_ccode_set_value_function ((ValaCodeNode*) _tmp7_);
2613 _tmp10_ = vala_ccode_identifier_new (_tmp9_);
2617 _vala_code_node_unref0 (array_type);
2620 gboolean _tmp12_ = FALSE;
2621 ValaArrayType* _tmp13_;
2623 _tmp13_ = array_type;
2624 if (_tmp13_ != NULL) {
2625 ValaArrayType* _tmp14_;
2626 ValaDataType* _tmp15_;
2627 ValaDataType* _tmp16_;
2628 ValaTypeSymbol* _tmp17_;
2629 ValaTypeSymbol* _tmp18_;
2630 ValaDataType* _tmp19_;
2631 ValaTypeSymbol* _tmp20_;
2632 ValaTypeSymbol* _tmp21_;
2633 _tmp14_ = array_type;
2634 _tmp15_ = vala_array_type_get_element_type (_tmp14_);
2636 _tmp17_ = vala_data_type_get_data_type (_tmp16_);
2638 _tmp19_ = self->string_type;
2639 _tmp20_ = vala_data_type_get_data_type (_tmp19_);
2641 _tmp12_ = _tmp18_ == _tmp21_;
2647 ValaCCodeIdentifier* _tmp23_;
2648 _tmp23_ = vala_ccode_identifier_new ("g_value_set_boxed");
2650 _vala_code_node_unref0 (array_type);
2653 ValaCCodeIdentifier* _tmp24_;
2654 _tmp24_ = vala_ccode_identifier_new ("g_value_set_pointer");
2656 _vala_code_node_unref0 (array_type);
2660 _vala_code_node_unref0 (array_type);
2664 ValaCCodeIdentifier* vala_ccode_base_module_get_value_taker_function (ValaCCodeBaseModule* self, ValaDataType* type_reference) {
2665 ValaCCodeIdentifier* result = NULL;
2666 ValaDataType* _tmp0_;
2667 ValaArrayType* _tmp1_;
2668 ValaArrayType* array_type;
2669 ValaDataType* _tmp2_;
2670 ValaTypeSymbol* _tmp3_;
2671 ValaTypeSymbol* _tmp4_;
2672 g_return_val_if_fail (self != NULL, NULL);
2673 g_return_val_if_fail (type_reference != NULL, NULL);
2674 _tmp0_ = type_reference;
2675 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp0_) : NULL);
2676 array_type = _tmp1_;
2677 _tmp2_ = type_reference;
2678 _tmp3_ = vala_data_type_get_data_type (_tmp2_);
2680 if (_tmp4_ != NULL) {
2681 ValaDataType* _tmp5_;
2682 ValaTypeSymbol* _tmp6_;
2683 ValaTypeSymbol* _tmp7_;
2684 gchar* _tmp8_ = NULL;
2686 ValaCCodeIdentifier* _tmp10_;
2687 ValaCCodeIdentifier* _tmp11_;
2688 _tmp5_ = type_reference;
2689 _tmp6_ = vala_data_type_get_data_type (_tmp5_);
2691 _tmp8_ = vala_ccode_base_module_get_ccode_take_value_function ((ValaCodeNode*) _tmp7_);
2693 _tmp10_ = vala_ccode_identifier_new (_tmp9_);
2697 _vala_code_node_unref0 (array_type);
2700 gboolean _tmp12_ = FALSE;
2701 ValaArrayType* _tmp13_;
2703 _tmp13_ = array_type;
2704 if (_tmp13_ != NULL) {
2705 ValaArrayType* _tmp14_;
2706 ValaDataType* _tmp15_;
2707 ValaDataType* _tmp16_;
2708 ValaTypeSymbol* _tmp17_;
2709 ValaTypeSymbol* _tmp18_;
2710 ValaDataType* _tmp19_;
2711 ValaTypeSymbol* _tmp20_;
2712 ValaTypeSymbol* _tmp21_;
2713 _tmp14_ = array_type;
2714 _tmp15_ = vala_array_type_get_element_type (_tmp14_);
2716 _tmp17_ = vala_data_type_get_data_type (_tmp16_);
2718 _tmp19_ = self->string_type;
2719 _tmp20_ = vala_data_type_get_data_type (_tmp19_);
2721 _tmp12_ = _tmp18_ == _tmp21_;
2727 ValaCCodeIdentifier* _tmp23_;
2728 _tmp23_ = vala_ccode_identifier_new ("g_value_take_boxed");
2730 _vala_code_node_unref0 (array_type);
2733 ValaCCodeIdentifier* _tmp24_;
2734 _tmp24_ = vala_ccode_identifier_new ("g_value_set_pointer");
2736 _vala_code_node_unref0 (array_type);
2740 _vala_code_node_unref0 (array_type);
2744 static ValaCCodeIdentifier* vala_ccode_base_module_get_value_getter_function (ValaCCodeBaseModule* self, ValaDataType* type_reference) {
2745 ValaCCodeIdentifier* result = NULL;
2746 ValaDataType* _tmp0_;
2747 ValaArrayType* _tmp1_;
2748 ValaArrayType* array_type;
2749 ValaDataType* _tmp2_;
2750 ValaTypeSymbol* _tmp3_;
2751 ValaTypeSymbol* _tmp4_;
2752 g_return_val_if_fail (self != NULL, NULL);
2753 g_return_val_if_fail (type_reference != NULL, NULL);
2754 _tmp0_ = type_reference;
2755 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp0_) : NULL);
2756 array_type = _tmp1_;
2757 _tmp2_ = type_reference;
2758 _tmp3_ = vala_data_type_get_data_type (_tmp2_);
2760 if (_tmp4_ != NULL) {
2761 ValaDataType* _tmp5_;
2762 ValaTypeSymbol* _tmp6_;
2763 ValaTypeSymbol* _tmp7_;
2764 gchar* _tmp8_ = NULL;
2766 ValaCCodeIdentifier* _tmp10_;
2767 ValaCCodeIdentifier* _tmp11_;
2768 _tmp5_ = type_reference;
2769 _tmp6_ = vala_data_type_get_data_type (_tmp5_);
2771 _tmp8_ = vala_ccode_base_module_get_ccode_get_value_function ((ValaCodeNode*) _tmp7_);
2773 _tmp10_ = vala_ccode_identifier_new (_tmp9_);
2777 _vala_code_node_unref0 (array_type);
2780 gboolean _tmp12_ = FALSE;
2781 ValaArrayType* _tmp13_;
2783 _tmp13_ = array_type;
2784 if (_tmp13_ != NULL) {
2785 ValaArrayType* _tmp14_;
2786 ValaDataType* _tmp15_;
2787 ValaDataType* _tmp16_;
2788 ValaTypeSymbol* _tmp17_;
2789 ValaTypeSymbol* _tmp18_;
2790 ValaDataType* _tmp19_;
2791 ValaTypeSymbol* _tmp20_;
2792 ValaTypeSymbol* _tmp21_;
2793 _tmp14_ = array_type;
2794 _tmp15_ = vala_array_type_get_element_type (_tmp14_);
2796 _tmp17_ = vala_data_type_get_data_type (_tmp16_);
2798 _tmp19_ = self->string_type;
2799 _tmp20_ = vala_data_type_get_data_type (_tmp19_);
2801 _tmp12_ = _tmp18_ == _tmp21_;
2807 ValaCCodeIdentifier* _tmp23_;
2808 _tmp23_ = vala_ccode_identifier_new ("g_value_get_boxed");
2810 _vala_code_node_unref0 (array_type);
2813 ValaCCodeIdentifier* _tmp24_;
2814 _tmp24_ = vala_ccode_identifier_new ("g_value_get_pointer");
2816 _vala_code_node_unref0 (array_type);
2820 _vala_code_node_unref0 (array_type);
2824 static void vala_ccode_base_module_real_append_vala_array_free (ValaCCodeBaseModule* self) {
2828 void vala_ccode_base_module_append_vala_array_free (ValaCCodeBaseModule* self) {
2829 g_return_if_fail (self != NULL);
2830 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->append_vala_array_free (self);
2834 static void vala_ccode_base_module_real_append_vala_array_move (ValaCCodeBaseModule* self) {
2838 void vala_ccode_base_module_append_vala_array_move (ValaCCodeBaseModule* self) {
2839 g_return_if_fail (self != NULL);
2840 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->append_vala_array_move (self);
2844 static void vala_ccode_base_module_real_append_vala_array_length (ValaCCodeBaseModule* self) {
2848 void vala_ccode_base_module_append_vala_array_length (ValaCCodeBaseModule* self) {
2849 g_return_if_fail (self != NULL);
2850 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->append_vala_array_length (self);
2854 void vala_ccode_base_module_append_vala_clear_mutex (ValaCCodeBaseModule* self, const gchar* typename, const gchar* funcprefix) {
2855 ValaCCodeFile* _tmp0_;
2856 const gchar* _tmp1_;
2859 ValaCCodeFunction* _tmp4_;
2860 ValaCCodeFunction* _tmp5_;
2861 ValaCCodeFunction* fun;
2862 const gchar* _tmp6_;
2865 ValaCCodeParameter* _tmp9_;
2866 ValaCCodeParameter* _tmp10_;
2867 ValaCCodeFunction* _tmp11_;
2868 ValaCCodeFunction* _tmp12_;
2869 const gchar* _tmp13_;
2870 ValaCCodeConstant* _tmp14_;
2871 ValaCCodeConstant* _tmp15_;
2872 ValaCCodeVariableDeclarator* _tmp16_;
2873 ValaCCodeVariableDeclarator* _tmp17_;
2874 ValaCCodeIdentifier* _tmp18_;
2875 ValaCCodeIdentifier* _tmp19_;
2876 ValaCCodeFunctionCall* _tmp20_;
2877 ValaCCodeFunctionCall* _tmp21_;
2878 ValaCCodeFunctionCall* cmp;
2879 ValaCCodeIdentifier* _tmp22_;
2880 ValaCCodeIdentifier* _tmp23_;
2881 ValaCCodeIdentifier* _tmp24_;
2882 ValaCCodeIdentifier* _tmp25_;
2883 ValaCCodeUnaryExpression* _tmp26_;
2884 ValaCCodeUnaryExpression* _tmp27_;
2885 const gchar* _tmp28_;
2890 ValaCCodeIdentifier* _tmp33_;
2891 ValaCCodeIdentifier* _tmp34_;
2892 ValaCCodeFunction* _tmp35_;
2893 ValaCCodeFunction* _tmp36_;
2894 const gchar* _tmp37_;
2897 ValaCCodeIdentifier* _tmp40_;
2898 ValaCCodeIdentifier* _tmp41_;
2899 ValaCCodeFunctionCall* _tmp42_;
2900 ValaCCodeFunctionCall* _tmp43_;
2901 ValaCCodeFunctionCall* mutex_clear;
2902 ValaCCodeIdentifier* _tmp44_;
2903 ValaCCodeIdentifier* _tmp45_;
2904 ValaCCodeFunction* _tmp46_;
2905 ValaCCodeFunction* _tmp47_;
2906 ValaCCodeIdentifier* _tmp48_;
2907 ValaCCodeIdentifier* _tmp49_;
2908 ValaCCodeFunctionCall* _tmp50_;
2909 ValaCCodeFunctionCall* _tmp51_;
2910 ValaCCodeFunctionCall* mset;
2911 ValaCCodeIdentifier* _tmp52_;
2912 ValaCCodeIdentifier* _tmp53_;
2913 ValaCCodeConstant* _tmp54_;
2914 ValaCCodeConstant* _tmp55_;
2915 const gchar* _tmp56_;
2920 ValaCCodeIdentifier* _tmp61_;
2921 ValaCCodeIdentifier* _tmp62_;
2922 ValaCCodeFunction* _tmp63_;
2923 ValaCCodeFunction* _tmp64_;
2924 ValaCCodeFunction* _tmp65_;
2925 ValaCCodeFunction* _tmp66_;
2926 ValaCCodeFile* _tmp67_;
2927 ValaCCodeFile* _tmp68_;
2928 g_return_if_fail (self != NULL);
2929 g_return_if_fail (typename != NULL);
2930 g_return_if_fail (funcprefix != NULL);
2931 _tmp0_ = self->cfile;
2932 vala_ccode_file_add_include (_tmp0_, "string.h", FALSE);
2934 _tmp2_ = g_strconcat ("_vala_clear_", _tmp1_, NULL);
2936 _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
2940 vala_ccode_function_set_modifiers (fun, VALA_CCODE_MODIFIERS_STATIC);
2942 _tmp7_ = g_strconcat (_tmp6_, " *", NULL);
2944 _tmp9_ = vala_ccode_parameter_new ("mutex", _tmp8_);
2946 vala_ccode_function_add_parameter (fun, _tmp10_);
2947 _vala_ccode_node_unref0 (_tmp10_);
2949 vala_ccode_base_module_push_function (self, fun);
2950 _tmp11_ = vala_ccode_base_module_get_ccode (self);
2953 _tmp14_ = vala_ccode_constant_new ("{ 0 }");
2955 _tmp16_ = vala_ccode_variable_declarator_new_zero ("zero_mutex", (ValaCCodeExpression*) _tmp15_, NULL);
2957 vala_ccode_function_add_declaration (_tmp12_, _tmp13_, (ValaCCodeDeclarator*) _tmp17_, 0);
2958 _vala_ccode_node_unref0 (_tmp17_);
2959 _vala_ccode_node_unref0 (_tmp15_);
2960 _tmp18_ = vala_ccode_identifier_new ("memcmp");
2962 _tmp20_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp19_);
2964 _vala_ccode_node_unref0 (_tmp19_);
2966 _tmp22_ = vala_ccode_identifier_new ("mutex");
2968 vala_ccode_function_call_add_argument (cmp, (ValaCCodeExpression*) _tmp23_);
2969 _vala_ccode_node_unref0 (_tmp23_);
2970 _tmp24_ = vala_ccode_identifier_new ("zero_mutex");
2972 _tmp26_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp25_);
2974 vala_ccode_function_call_add_argument (cmp, (ValaCCodeExpression*) _tmp27_);
2975 _vala_ccode_node_unref0 (_tmp27_);
2976 _vala_ccode_node_unref0 (_tmp25_);
2978 _tmp29_ = g_strconcat ("sizeof (", _tmp28_, NULL);
2980 _tmp31_ = g_strconcat (_tmp30_, ")", NULL);
2982 _tmp33_ = vala_ccode_identifier_new (_tmp32_);
2984 vala_ccode_function_call_add_argument (cmp, (ValaCCodeExpression*) _tmp34_);
2985 _vala_ccode_node_unref0 (_tmp34_);
2988 _tmp35_ = vala_ccode_base_module_get_ccode (self);
2990 vala_ccode_function_open_if (_tmp36_, (ValaCCodeExpression*) cmp);
2991 _tmp37_ = funcprefix;
2992 _tmp38_ = g_strconcat (_tmp37_, "_clear", NULL);
2994 _tmp40_ = vala_ccode_identifier_new (_tmp39_);
2996 _tmp42_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp41_);
2998 _vala_ccode_node_unref0 (_tmp41_);
3000 mutex_clear = _tmp43_;
3001 _tmp44_ = vala_ccode_identifier_new ("mutex");
3003 vala_ccode_function_call_add_argument (mutex_clear, (ValaCCodeExpression*) _tmp45_);
3004 _vala_ccode_node_unref0 (_tmp45_);
3005 _tmp46_ = vala_ccode_base_module_get_ccode (self);
3007 vala_ccode_function_add_expression (_tmp47_, (ValaCCodeExpression*) mutex_clear);
3008 _tmp48_ = vala_ccode_identifier_new ("memset");
3010 _tmp50_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp49_);
3012 _vala_ccode_node_unref0 (_tmp49_);
3014 _tmp52_ = vala_ccode_identifier_new ("mutex");
3016 vala_ccode_function_call_add_argument (mset, (ValaCCodeExpression*) _tmp53_);
3017 _vala_ccode_node_unref0 (_tmp53_);
3018 _tmp54_ = vala_ccode_constant_new ("0");
3020 vala_ccode_function_call_add_argument (mset, (ValaCCodeExpression*) _tmp55_);
3021 _vala_ccode_node_unref0 (_tmp55_);
3023 _tmp57_ = g_strconcat ("sizeof (", _tmp56_, NULL);
3025 _tmp59_ = g_strconcat (_tmp58_, ")", NULL);
3027 _tmp61_ = vala_ccode_identifier_new (_tmp60_);
3029 vala_ccode_function_call_add_argument (mset, (ValaCCodeExpression*) _tmp62_);
3030 _vala_ccode_node_unref0 (_tmp62_);
3033 _tmp63_ = vala_ccode_base_module_get_ccode (self);
3035 vala_ccode_function_add_expression (_tmp64_, (ValaCCodeExpression*) mset);
3036 _tmp65_ = vala_ccode_base_module_get_ccode (self);
3038 vala_ccode_function_close (_tmp66_);
3039 vala_ccode_base_module_pop_function (self);
3040 _tmp67_ = self->cfile;
3041 vala_ccode_file_add_function_declaration (_tmp67_, fun);
3042 _tmp68_ = self->cfile;
3043 vala_ccode_file_add_function (_tmp68_, fun);
3044 _vala_ccode_node_unref0 (mset);
3045 _vala_ccode_node_unref0 (mutex_clear);
3046 _vala_ccode_node_unref0 (cmp);
3047 _vala_ccode_node_unref0 (fun);
3051 static void vala_ccode_base_module_real_visit_source_file (ValaCodeVisitor* base, ValaSourceFile* source_file) {
3052 ValaCCodeBaseModule * self;
3053 ValaCCodeFile* _tmp0_;
3056 ValaHashSet* _tmp3_;
3059 ValaHashSet* _tmp6_;
3062 ValaHashSet* _tmp9_;
3063 ValaCCodeFile* _tmp10_;
3064 ValaCCodeFile* _tmp11_;
3065 ValaCCodeFile* _tmp12_;
3066 ValaCCodeFile* _tmp13_;
3067 ValaSourceFile* _tmp14_;
3068 ValaCodeContext* _tmp15_;
3069 ValaReport* _tmp16_;
3070 ValaReport* _tmp17_;
3072 ValaSourceFile* _tmp19_;
3073 ValaSourceFileType _tmp20_;
3074 ValaSourceFileType _tmp21_;
3081 ValaSourceFile* _tmp34_;
3082 ValaList* _tmp35_ = NULL;
3085 ValaCCodeFile* _tmp54_;
3086 ValaSourceFile* _tmp55_;
3087 gchar* _tmp56_ = NULL;
3089 ValaSourceFile* _tmp58_;
3090 const gchar* _tmp59_;
3091 const gchar* _tmp60_;
3092 ValaCodeContext* _tmp61_;
3095 ValaCodeContext* _tmp64_;
3098 gboolean _tmp67_ = FALSE;
3100 self = (ValaCCodeBaseModule*) base;
3101 g_return_if_fail (source_file != NULL);
3102 _tmp0_ = vala_ccode_file_new ();
3103 _vala_ccode_file_unref0 (self->cfile);
3104 self->cfile = _tmp0_;
3105 _tmp1_ = g_str_hash;
3106 _tmp2_ = g_str_equal;
3107 _tmp3_ = vala_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp1_, _tmp2_);
3108 _vala_iterable_unref0 (self->user_marshal_set);
3109 self->user_marshal_set = (ValaSet*) _tmp3_;
3110 self->next_regex_id = 0;
3111 self->gvaluecollector_h_needed = FALSE;
3112 self->requires_assert = FALSE;
3113 self->requires_array_free = FALSE;
3114 self->requires_array_move = FALSE;
3115 self->requires_array_length = FALSE;
3116 self->requires_clear_mutex = FALSE;
3117 _tmp4_ = g_str_hash;
3118 _tmp5_ = g_str_equal;
3119 _tmp6_ = vala_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp4_, _tmp5_);
3120 _vala_iterable_unref0 (self->wrappers);
3121 self->wrappers = (ValaSet*) _tmp6_;
3122 _tmp7_ = g_direct_hash;
3123 _tmp8_ = g_direct_equal;
3124 _tmp9_ = vala_hash_set_new (VALA_TYPE_SYMBOL, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp7_, _tmp8_);
3125 _vala_iterable_unref0 (self->priv->generated_external_symbols);
3126 self->priv->generated_external_symbols = (ValaSet*) _tmp9_;
3127 _tmp10_ = self->header_file;
3128 vala_ccode_file_add_include (_tmp10_, "glib.h", FALSE);
3129 _tmp11_ = self->internal_header_file;
3130 vala_ccode_file_add_include (_tmp11_, "glib.h", FALSE);
3131 _tmp12_ = self->cfile;
3132 vala_ccode_file_add_include (_tmp12_, "glib.h", FALSE);
3133 _tmp13_ = self->cfile;
3134 vala_ccode_file_add_include (_tmp13_, "glib-object.h", FALSE);
3135 _tmp14_ = source_file;
3136 vala_source_file_accept_children (_tmp14_, (ValaCodeVisitor*) self);
3137 _tmp15_ = self->priv->_context;
3138 _tmp16_ = vala_code_context_get_report (_tmp15_);
3140 _tmp18_ = vala_report_get_errors (_tmp17_);
3144 _tmp19_ = source_file;
3145 _tmp20_ = vala_source_file_get_file_type (_tmp19_);
3147 if (_tmp21_ == VALA_SOURCE_FILE_TYPE_FAST) {
3150 _tmp22_ = self->requires_assert;
3152 ValaCCodeFile* _tmp23_;
3153 ValaCCodeConstant* _tmp24_;
3154 ValaCCodeConstant* _tmp25_;
3155 ValaCCodeMacroReplacement* _tmp26_;
3156 ValaCCodeMacroReplacement* _tmp27_;
3157 _tmp23_ = self->cfile;
3158 _tmp24_ = vala_ccode_constant_new ("if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FI" \
3159 "LE__, __LINE__, G_STRFUNC, msg);");
3161 _tmp26_ = vala_ccode_macro_replacement_new_with_expression ("_vala_assert(expr, msg)", (ValaCCodeExpression*) _tmp25_);
3163 vala_ccode_file_add_type_declaration (_tmp23_, (ValaCCodeNode*) _tmp27_);
3164 _vala_ccode_node_unref0 (_tmp27_);
3165 _vala_ccode_node_unref0 (_tmp25_);
3167 _tmp28_ = self->requires_array_free;
3169 vala_ccode_base_module_append_vala_array_free (self);
3171 _tmp29_ = self->requires_array_move;
3173 vala_ccode_base_module_append_vala_array_move (self);
3175 _tmp30_ = self->requires_array_length;
3177 vala_ccode_base_module_append_vala_array_length (self);
3179 _tmp31_ = self->requires_clear_mutex;
3181 vala_ccode_base_module_append_vala_clear_mutex (self, "GMutex", "g_mutex");
3182 vala_ccode_base_module_append_vala_clear_mutex (self, "GRecMutex", "g_rec_mutex");
3183 vala_ccode_base_module_append_vala_clear_mutex (self, "GRWLock", "g_rw_lock");
3184 vala_ccode_base_module_append_vala_clear_mutex (self, "GCond", "g_cond");
3186 _tmp32_ = self->gvaluecollector_h_needed;
3188 ValaCCodeFile* _tmp33_;
3189 _tmp33_ = self->cfile;
3190 vala_ccode_file_add_include (_tmp33_, "gobject/gvaluecollector.h", FALSE);
3192 _tmp34_ = source_file;
3193 _tmp35_ = vala_source_file_get_comments (_tmp34_);
3196 if (_tmp36_ != NULL) {
3200 ValaList* _comment_list;
3205 gint _comment_index;
3207 _tmp38_ = _vala_iterable_ref0 (_tmp37_);
3208 _comment_list = _tmp38_;
3209 _tmp39_ = _comment_list;
3210 _tmp40_ = vala_collection_get_size ((ValaCollection*) _tmp39_);
3212 _comment_size = _tmp41_;
3213 _comment_index = -1;
3220 gpointer _tmp47_ = NULL;
3221 ValaComment* comment;
3222 ValaComment* _tmp48_;
3223 const gchar* _tmp49_;
3224 const gchar* _tmp50_;
3225 ValaCCodeComment* _tmp51_;
3226 ValaCCodeComment* ccomment;
3227 ValaCCodeFile* _tmp52_;
3228 ValaCCodeComment* _tmp53_;
3229 _tmp42_ = _comment_index;
3230 _comment_index = _tmp42_ + 1;
3231 _tmp43_ = _comment_index;
3232 _tmp44_ = _comment_size;
3233 if (!(_tmp43_ < _tmp44_)) {
3236 _tmp45_ = _comment_list;
3237 _tmp46_ = _comment_index;
3238 _tmp47_ = vala_list_get (_tmp45_, _tmp46_);
3239 comment = (ValaComment*) _tmp47_;
3241 _tmp49_ = vala_comment_get_content (_tmp48_);
3243 _tmp51_ = vala_ccode_comment_new (_tmp50_);
3245 _tmp52_ = self->cfile;
3247 vala_ccode_file_add_comment (_tmp52_, _tmp53_);
3248 _vala_ccode_node_unref0 (ccomment);
3249 _vala_comment_unref0 (comment);
3251 _vala_iterable_unref0 (_comment_list);
3254 _tmp54_ = self->cfile;
3255 _tmp55_ = source_file;
3256 _tmp56_ = vala_source_file_get_csource_filename (_tmp55_);
3258 _tmp58_ = source_file;
3259 _tmp59_ = vala_source_file_get_filename (_tmp58_);
3261 _tmp61_ = self->priv->_context;
3262 _tmp62_ = vala_code_context_get_version_header (_tmp61_);
3264 _tmp64_ = self->priv->_context;
3265 _tmp65_ = vala_code_context_get_debug (_tmp64_);
3267 _tmp67_ = vala_ccode_file_store (_tmp54_, _tmp57_, _tmp60_, _tmp63_, _tmp66_, NULL, NULL);
3271 ValaSourceFile* _tmp69_;
3272 gchar* _tmp70_ = NULL;
3274 gchar* _tmp72_ = NULL;
3276 _tmp69_ = source_file;
3277 _tmp70_ = vala_source_file_get_csource_filename (_tmp69_);
3279 _tmp72_ = g_strdup_printf ("unable to open `%s' for writing", _tmp71_);
3281 vala_report_error (NULL, _tmp73_);
3285 _vala_ccode_file_unref0 (self->cfile);
3287 _vala_iterable_unref0 (comments);
3291 static gboolean vala_ccode_base_module_real_generate_enum_declaration (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space) {
3292 gboolean result = FALSE;
3293 ValaCCodeFile* _tmp0_;
3296 gchar* _tmp3_ = NULL;
3298 gboolean _tmp5_ = FALSE;
3301 gchar* _tmp8_ = NULL;
3303 ValaCCodeEnum* _tmp10_;
3304 ValaCCodeEnum* _tmp11_;
3305 ValaCCodeEnum* cenum;
3306 ValaCCodeEnum* _tmp12_;
3311 ValaCCodeFile* _tmp62_;
3312 ValaCCodeEnum* _tmp63_;
3313 ValaCCodeFile* _tmp64_;
3314 ValaCCodeNewline* _tmp65_;
3315 ValaCCodeNewline* _tmp66_;
3317 gboolean _tmp68_ = FALSE;
3318 ValaCCodeFile* _tmp69_;
3319 ValaCCodeNewline* _tmp70_;
3320 ValaCCodeNewline* _tmp71_;
3322 gchar* _tmp73_ = NULL;
3324 gchar* _tmp75_ = NULL;
3327 ValaCCodeFile* _tmp77_;
3329 gchar* _tmp79_ = NULL;
3331 const gchar* _tmp81_;
3332 ValaCCodeMacroReplacement* _tmp82_;
3333 ValaCCodeMacroReplacement* _tmp83_;
3335 gchar* _tmp85_ = NULL;
3337 gchar* _tmp87_ = NULL;
3340 const gchar* _tmp89_;
3341 ValaCCodeFunction* _tmp90_;
3342 ValaCCodeFunction* regfun;
3343 ValaCCodeFunction* _tmp91_;
3345 ValaSymbolAccessibility _tmp93_;
3346 ValaSymbolAccessibility _tmp94_;
3347 ValaCCodeFile* _tmp97_;
3348 ValaCCodeFunction* _tmp98_;
3349 g_return_val_if_fail (en != NULL, FALSE);
3350 g_return_val_if_fail (decl_space != NULL, FALSE);
3351 _tmp0_ = decl_space;
3354 _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
3356 _tmp5_ = vala_ccode_base_module_add_symbol_declaration (self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_);
3364 _tmp8_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp7_);
3366 _tmp10_ = vala_ccode_enum_new (_tmp9_);
3372 _tmp14_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp13_);
3374 vala_ccode_enum_set_deprecated (_tmp12_, _tmp15_);
3378 ValaList* _tmp17_ = NULL;
3386 _tmp17_ = vala_enum_get_values (_tmp16_);
3389 _tmp19_ = vala_collection_get_size ((ValaCollection*) _tmp18_);
3399 gpointer _tmp26_ = NULL;
3401 ValaCCodeEnumValue* c_ev = NULL;
3402 ValaEnumValue* _tmp27_;
3403 ValaExpression* _tmp28_;
3404 ValaExpression* _tmp29_;
3405 ValaCCodeEnumValue* _tmp56_;
3406 ValaEnumValue* _tmp57_;
3409 ValaCCodeEnum* _tmp60_;
3410 ValaCCodeEnumValue* _tmp61_;
3411 _tmp21_ = _ev_index;
3412 _ev_index = _tmp21_ + 1;
3413 _tmp22_ = _ev_index;
3415 if (!(_tmp22_ < _tmp23_)) {
3419 _tmp25_ = _ev_index;
3420 _tmp26_ = vala_list_get (_tmp24_, _tmp25_);
3421 ev = (ValaEnumValue*) _tmp26_;
3423 _tmp28_ = vala_constant_get_value ((ValaConstant*) _tmp27_);
3425 if (_tmp29_ == NULL) {
3426 ValaEnumValue* _tmp30_;
3427 gchar* _tmp31_ = NULL;
3429 ValaCCodeEnumValue* _tmp33_;
3434 _tmp31_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp30_);
3436 _tmp33_ = vala_ccode_enum_value_new (_tmp32_, NULL);
3437 _vala_ccode_node_unref0 (c_ev);
3441 _tmp35_ = vala_enum_get_is_flags (_tmp34_);
3444 ValaCCodeEnumValue* _tmp37_;
3446 gchar* _tmp39_ = NULL;
3448 ValaCCodeConstant* _tmp41_;
3449 ValaCCodeConstant* _tmp42_;
3452 _tmp38_ = flag_shift;
3453 _tmp39_ = g_strdup_printf ("1 << %d", _tmp38_);
3455 _tmp41_ = vala_ccode_constant_new (_tmp40_);
3457 vala_ccode_enum_value_set_value (_tmp37_, (ValaCCodeExpression*) _tmp42_);
3458 _vala_ccode_node_unref0 (_tmp42_);
3460 _tmp43_ = flag_shift;
3461 flag_shift = _tmp43_ + 1;
3464 ValaEnumValue* _tmp44_;
3465 ValaExpression* _tmp45_;
3466 ValaExpression* _tmp46_;
3467 ValaEnumValue* _tmp47_;
3468 gchar* _tmp48_ = NULL;
3470 ValaEnumValue* _tmp50_;
3471 ValaExpression* _tmp51_;
3472 ValaExpression* _tmp52_;
3473 ValaCCodeExpression* _tmp53_ = NULL;
3474 ValaCCodeExpression* _tmp54_;
3475 ValaCCodeEnumValue* _tmp55_;
3477 _tmp45_ = vala_constant_get_value ((ValaConstant*) _tmp44_);
3479 vala_code_node_emit ((ValaCodeNode*) _tmp46_, (ValaCodeGenerator*) self);
3481 _tmp48_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp47_);
3484 _tmp51_ = vala_constant_get_value ((ValaConstant*) _tmp50_);
3486 _tmp53_ = vala_ccode_base_module_get_cvalue (self, _tmp52_);
3488 _tmp55_ = vala_ccode_enum_value_new (_tmp49_, _tmp54_);
3489 _vala_ccode_node_unref0 (c_ev);
3491 _vala_ccode_node_unref0 (_tmp54_);
3496 _tmp58_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp57_);
3498 vala_ccode_enum_value_set_deprecated (_tmp56_, _tmp59_);
3501 vala_ccode_enum_add_value (_tmp60_, _tmp61_);
3502 _vala_ccode_node_unref0 (c_ev);
3503 _vala_code_node_unref0 (ev);
3505 _vala_iterable_unref0 (_ev_list);
3507 _tmp62_ = decl_space;
3509 vala_ccode_file_add_type_definition (_tmp62_, (ValaCCodeNode*) _tmp63_);
3510 _tmp64_ = decl_space;
3511 _tmp65_ = vala_ccode_newline_new ();
3513 vala_ccode_file_add_type_definition (_tmp64_, (ValaCCodeNode*) _tmp66_);
3514 _vala_ccode_node_unref0 (_tmp66_);
3516 _tmp68_ = vala_ccode_base_module_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp67_);
3519 _vala_ccode_node_unref0 (cenum);
3522 _tmp69_ = decl_space;
3523 _tmp70_ = vala_ccode_newline_new ();
3525 vala_ccode_file_add_type_declaration (_tmp69_, (ValaCCodeNode*) _tmp71_);
3526 _vala_ccode_node_unref0 (_tmp71_);
3528 _tmp73_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp72_, NULL);
3530 _tmp75_ = g_strdup_printf ("(%s_get_type ())", _tmp74_);
3534 _tmp77_ = decl_space;
3536 _tmp79_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp78_);
3539 _tmp82_ = vala_ccode_macro_replacement_new (_tmp80_, _tmp81_);
3541 vala_ccode_file_add_type_declaration (_tmp77_, (ValaCCodeNode*) _tmp83_);
3542 _vala_ccode_node_unref0 (_tmp83_);
3545 _tmp85_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp84_, NULL);
3547 _tmp87_ = g_strdup_printf ("%s_get_type", _tmp86_);
3552 _tmp90_ = vala_ccode_function_new (_tmp89_, "GType");
3555 vala_ccode_function_set_attributes (_tmp91_, "G_GNUC_CONST");
3557 _tmp93_ = vala_symbol_get_access ((ValaSymbol*) _tmp92_);
3559 if (_tmp94_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
3560 ValaCCodeFunction* _tmp95_;
3561 ValaCCodeFunction* _tmp96_;
3563 vala_ccode_function_set_modifiers (_tmp95_, VALA_CCODE_MODIFIERS_STATIC);
3565 vala_ccode_function_set_attributes (_tmp96_, "G_GNUC_UNUSED");
3567 _tmp97_ = decl_space;
3569 vala_ccode_file_add_function_declaration (_tmp97_, _tmp98_);
3571 _vala_ccode_node_unref0 (regfun);
3572 _g_free0 (fun_name);
3574 _vala_ccode_node_unref0 (cenum);
3579 gboolean vala_ccode_base_module_generate_enum_declaration (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space) {
3580 g_return_val_if_fail (self != NULL, FALSE);
3581 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_enum_declaration (self, en, decl_space);
3585 static void vala_ccode_base_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en) {
3586 ValaCCodeBaseModule * self;
3588 ValaSourceReference* _tmp1_;
3589 ValaSourceReference* _tmp2_;
3592 ValaComment* _tmp5_;
3593 ValaComment* _tmp6_;
3595 ValaCCodeFile* _tmp16_;
3597 gboolean _tmp18_ = FALSE;
3599 gboolean _tmp22_ = FALSE;
3600 self = (ValaCCodeBaseModule*) base;
3601 g_return_if_fail (en != NULL);
3603 _tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp0_);
3605 vala_ccode_base_module_push_line (self, _tmp2_);
3607 vala_code_node_accept_children ((ValaCodeNode*) _tmp3_, (ValaCodeVisitor*) self);
3609 _tmp5_ = vala_symbol_get_comment ((ValaSymbol*) _tmp4_);
3611 if (_tmp6_ != NULL) {
3612 ValaCCodeFile* _tmp7_;
3614 ValaComment* _tmp9_;
3615 ValaComment* _tmp10_;
3616 const gchar* _tmp11_;
3617 const gchar* _tmp12_;
3618 ValaCCodeComment* _tmp13_;
3619 ValaCCodeComment* _tmp14_;
3620 _tmp7_ = self->cfile;
3622 _tmp9_ = vala_symbol_get_comment ((ValaSymbol*) _tmp8_);
3624 _tmp11_ = vala_comment_get_content (_tmp10_);
3626 _tmp13_ = vala_ccode_comment_new (_tmp12_);
3628 vala_ccode_file_add_type_member_definition (_tmp7_, (ValaCCodeNode*) _tmp14_);
3629 _vala_ccode_node_unref0 (_tmp14_);
3632 _tmp16_ = self->cfile;
3633 vala_ccode_base_module_generate_enum_declaration (self, _tmp15_, _tmp16_);
3635 _tmp18_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp17_);
3638 ValaCCodeFile* _tmp20_;
3640 _tmp20_ = self->header_file;
3641 vala_ccode_base_module_generate_enum_declaration (self, _tmp19_, _tmp20_);
3644 _tmp22_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp21_);
3647 ValaCCodeFile* _tmp24_;
3649 _tmp24_ = self->internal_header_file;
3650 vala_ccode_base_module_generate_enum_declaration (self, _tmp23_, _tmp24_);
3652 vala_ccode_base_module_pop_line (self);
3656 void vala_ccode_base_module_visit_member (ValaCCodeBaseModule* self, ValaSymbol* m) {
3657 gboolean _tmp0_ = FALSE;
3660 g_return_if_fail (self != NULL);
3661 g_return_if_fail (m != NULL);
3663 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_LOCKABLE)) {
3665 gboolean _tmp3_ = FALSE;
3667 _tmp3_ = vala_lockable_get_lock_used (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_LOCKABLE, ValaLockable));
3674 ValaCCodeIdentifier* _tmp5_;
3675 ValaCCodeExpression* l;
3676 ValaCCodeBaseModuleEmitContext* _tmp6_;
3677 ValaCCodeBaseModuleEmitContext* _tmp7_;
3678 ValaCCodeBaseModuleEmitContext* init_context;
3679 ValaCCodeBaseModuleEmitContext* _tmp8_;
3680 ValaCCodeBaseModuleEmitContext* _tmp9_;
3681 ValaCCodeBaseModuleEmitContext* finalize_context;
3682 ValaSymbol* _tmp10_;
3683 gboolean _tmp11_ = FALSE;
3684 ValaCCodeBaseModuleEmitContext* _tmp63_;
3685 ValaStruct* _tmp64_;
3686 ValaMethod* _tmp65_;
3687 ValaMethod* _tmp66_;
3688 gchar* _tmp67_ = NULL;
3690 ValaCCodeIdentifier* _tmp69_;
3691 ValaCCodeIdentifier* _tmp70_;
3692 ValaCCodeFunctionCall* _tmp71_;
3693 ValaCCodeFunctionCall* _tmp72_;
3694 ValaCCodeFunctionCall* initf;
3695 ValaCCodeFunctionCall* _tmp73_;
3696 ValaCCodeExpression* _tmp74_;
3697 ValaCCodeUnaryExpression* _tmp75_;
3698 ValaCCodeUnaryExpression* _tmp76_;
3699 ValaCCodeFunction* _tmp77_;
3700 ValaCCodeFunction* _tmp78_;
3701 ValaCCodeFunctionCall* _tmp79_;
3702 ValaCCodeBaseModuleEmitContext* _tmp80_;
3703 _tmp5_ = vala_ccode_identifier_new ("self");
3704 l = (ValaCCodeExpression*) _tmp5_;
3705 _tmp6_ = self->class_init_context;
3706 _tmp7_ = _vala_ccode_base_module_emit_context_ref0 (_tmp6_);
3707 init_context = _tmp7_;
3708 _tmp8_ = self->class_finalize_context;
3709 _tmp9_ = _vala_ccode_base_module_emit_context_ref0 (_tmp8_);
3710 finalize_context = _tmp9_;
3712 _tmp11_ = vala_symbol_is_instance_member (_tmp10_);
3714 ValaCCodeExpression* _tmp12_;
3715 ValaCCodeMemberAccess* _tmp13_;
3716 ValaCCodeMemberAccess* _tmp14_;
3717 ValaSymbol* _tmp15_;
3718 const gchar* _tmp16_;
3719 const gchar* _tmp17_;
3720 gchar* _tmp18_ = NULL;
3722 ValaCCodeMemberAccess* _tmp20_;
3723 ValaCCodeBaseModuleEmitContext* _tmp21_;
3724 ValaCCodeBaseModuleEmitContext* _tmp22_;
3725 ValaCCodeBaseModuleEmitContext* _tmp23_;
3726 ValaCCodeBaseModuleEmitContext* _tmp24_;
3728 _tmp13_ = vala_ccode_member_access_new_pointer (_tmp12_, "priv");
3731 _tmp16_ = vala_symbol_get_name (_tmp15_);
3733 _tmp18_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp17_);
3735 _tmp20_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp14_, _tmp19_);
3736 _vala_ccode_node_unref0 (l);
3737 l = (ValaCCodeExpression*) _tmp20_;
3739 _vala_ccode_node_unref0 (_tmp14_);
3740 _tmp21_ = self->instance_init_context;
3741 _tmp22_ = _vala_ccode_base_module_emit_context_ref0 (_tmp21_);
3742 _vala_ccode_base_module_emit_context_unref0 (init_context);
3743 init_context = _tmp22_;
3744 _tmp23_ = self->instance_finalize_context;
3745 _tmp24_ = _vala_ccode_base_module_emit_context_ref0 (_tmp23_);
3746 _vala_ccode_base_module_emit_context_unref0 (finalize_context);
3747 finalize_context = _tmp24_;
3749 ValaSymbol* _tmp25_;
3750 gboolean _tmp26_ = FALSE;
3752 _tmp26_ = vala_symbol_is_class_member (_tmp25_);
3754 ValaSymbol* _tmp27_;
3755 ValaSymbol* _tmp28_;
3756 ValaSymbol* _tmp29_;
3757 ValaTypeSymbol* _tmp30_;
3758 ValaTypeSymbol* parent;
3759 ValaTypeSymbol* _tmp31_;
3760 gchar* _tmp32_ = NULL;
3762 gchar* _tmp34_ = NULL;
3764 ValaCCodeIdentifier* _tmp36_;
3765 ValaCCodeIdentifier* _tmp37_;
3766 ValaCCodeFunctionCall* _tmp38_;
3767 ValaCCodeFunctionCall* _tmp39_;
3768 ValaCCodeFunctionCall* get_class_private_call;
3769 ValaCCodeFunctionCall* _tmp40_;
3770 ValaCCodeIdentifier* _tmp41_;
3771 ValaCCodeIdentifier* _tmp42_;
3772 ValaCCodeFunctionCall* _tmp43_;
3773 ValaSymbol* _tmp44_;
3774 const gchar* _tmp45_;
3775 const gchar* _tmp46_;
3776 gchar* _tmp47_ = NULL;
3778 ValaCCodeMemberAccess* _tmp49_;
3780 _tmp28_ = vala_symbol_get_parent_symbol (_tmp27_);
3782 _tmp30_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
3785 _tmp32_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp31_, NULL);
3787 _tmp34_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp33_);
3789 _tmp36_ = vala_ccode_identifier_new (_tmp35_);
3791 _tmp38_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp37_);
3793 _vala_ccode_node_unref0 (_tmp37_);
3796 get_class_private_call = _tmp39_;
3797 _tmp40_ = get_class_private_call;
3798 _tmp41_ = vala_ccode_identifier_new ("klass");
3800 vala_ccode_function_call_add_argument (_tmp40_, (ValaCCodeExpression*) _tmp42_);
3801 _vala_ccode_node_unref0 (_tmp42_);
3802 _tmp43_ = get_class_private_call;
3804 _tmp45_ = vala_symbol_get_name (_tmp44_);
3806 _tmp47_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp46_);
3808 _tmp49_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp43_, _tmp48_);
3809 _vala_ccode_node_unref0 (l);
3810 l = (ValaCCodeExpression*) _tmp49_;
3812 _vala_ccode_node_unref0 (get_class_private_call);
3813 _vala_code_node_unref0 (parent);
3815 ValaSymbol* _tmp50_;
3816 ValaSymbol* _tmp51_;
3817 ValaSymbol* _tmp52_;
3818 gchar* _tmp53_ = NULL;
3820 ValaSymbol* _tmp55_;
3821 const gchar* _tmp56_;
3822 const gchar* _tmp57_;
3823 gchar* _tmp58_ = NULL;
3825 gchar* _tmp60_ = NULL;
3827 ValaCCodeIdentifier* _tmp62_;
3829 _tmp51_ = vala_symbol_get_parent_symbol (_tmp50_);
3831 _tmp53_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp52_, NULL);
3834 _tmp56_ = vala_symbol_get_name (_tmp55_);
3836 _tmp58_ = g_strdup_printf ("%s_%s", _tmp54_, _tmp57_);
3838 _tmp60_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp59_);
3840 _tmp62_ = vala_ccode_identifier_new (_tmp61_);
3841 _vala_ccode_node_unref0 (l);
3842 l = (ValaCCodeExpression*) _tmp62_;
3848 _tmp63_ = init_context;
3849 vala_ccode_base_module_push_context (self, _tmp63_);
3850 _tmp64_ = self->mutex_type;
3851 _tmp65_ = vala_struct_get_default_construction_method (_tmp64_);
3853 _tmp67_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp66_);
3855 _tmp69_ = vala_ccode_identifier_new (_tmp68_);
3857 _tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_);
3859 _vala_ccode_node_unref0 (_tmp70_);
3864 _tmp75_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp74_);
3866 vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp76_);
3867 _vala_ccode_node_unref0 (_tmp76_);
3868 _tmp77_ = vala_ccode_base_module_get_ccode (self);
3871 vala_ccode_function_add_expression (_tmp78_, (ValaCCodeExpression*) _tmp79_);
3872 vala_ccode_base_module_pop_context (self);
3873 _tmp80_ = finalize_context;
3874 if (_tmp80_ != NULL) {
3875 gchar* mutex_clear = NULL;
3876 ValaCodeContext* _tmp81_;
3877 gboolean _tmp82_ = FALSE;
3878 ValaCCodeBaseModuleEmitContext* _tmp85_;
3879 const gchar* _tmp86_;
3880 ValaCCodeIdentifier* _tmp87_;
3881 ValaCCodeIdentifier* _tmp88_;
3882 ValaCCodeFunctionCall* _tmp89_;
3883 ValaCCodeFunctionCall* _tmp90_;
3884 ValaCCodeFunctionCall* fc;
3885 ValaCCodeFunctionCall* _tmp91_;
3886 ValaCCodeExpression* _tmp92_;
3887 ValaCCodeUnaryExpression* _tmp93_;
3888 ValaCCodeUnaryExpression* _tmp94_;
3889 ValaCCodeFunction* _tmp95_;
3890 ValaCCodeFunction* _tmp96_;
3891 ValaCCodeFunctionCall* _tmp97_;
3892 _tmp81_ = self->priv->_context;
3893 _tmp82_ = vala_code_context_require_glib_version (_tmp81_, 2, 32);
3896 _tmp83_ = g_strdup ("g_rec_mutex_clear");
3897 _g_free0 (mutex_clear);
3898 mutex_clear = _tmp83_;
3901 _tmp84_ = g_strdup ("g_static_rec_mutex_free");
3902 _g_free0 (mutex_clear);
3903 mutex_clear = _tmp84_;
3905 _tmp85_ = finalize_context;
3906 vala_ccode_base_module_push_context (self, _tmp85_);
3907 _tmp86_ = mutex_clear;
3908 _tmp87_ = vala_ccode_identifier_new (_tmp86_);
3910 _tmp89_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp88_);
3912 _vala_ccode_node_unref0 (_tmp88_);
3916 _tmp93_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp92_);
3918 vala_ccode_function_call_add_argument (_tmp91_, (ValaCCodeExpression*) _tmp94_);
3919 _vala_ccode_node_unref0 (_tmp94_);
3920 _tmp95_ = vala_ccode_base_module_get_ccode (self);
3923 vala_ccode_function_add_expression (_tmp96_, (ValaCCodeExpression*) _tmp97_);
3924 vala_ccode_base_module_pop_context (self);
3925 _vala_ccode_node_unref0 (fc);
3926 _g_free0 (mutex_clear);
3928 _vala_ccode_node_unref0 (initf);
3929 _vala_ccode_base_module_emit_context_unref0 (finalize_context);
3930 _vala_ccode_base_module_emit_context_unref0 (init_context);
3931 _vala_ccode_node_unref0 (l);
3936 void vala_ccode_base_module_generate_constant_declaration (ValaCCodeBaseModule* self, ValaConstant* c, ValaCCodeFile* decl_space, gboolean definition) {
3937 ValaConstant* _tmp0_;
3940 ValaCCodeFile* _tmp3_;
3941 ValaConstant* _tmp4_;
3942 ValaConstant* _tmp5_;
3943 gchar* _tmp6_ = NULL;
3945 gboolean _tmp8_ = FALSE;
3947 ValaConstant* _tmp10_;
3950 g_return_if_fail (self != NULL);
3951 g_return_if_fail (c != NULL);
3952 g_return_if_fail (decl_space != NULL);
3954 _tmp1_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp0_);
3956 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_BLOCK)) {
3959 _tmp3_ = decl_space;
3962 _tmp6_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp5_);
3964 _tmp8_ = vala_ccode_base_module_add_symbol_declaration (self, _tmp3_, (ValaSymbol*) _tmp4_, _tmp7_);
3971 _tmp11_ = vala_symbol_get_external ((ValaSymbol*) _tmp10_);
3974 ValaConstant* _tmp13_;
3975 ValaDataType* _tmp14_;
3976 ValaDataType* _tmp15_;
3977 ValaCCodeFile* _tmp16_;
3978 ValaConstant* _tmp17_;
3979 ValaExpression* _tmp18_;
3980 ValaExpression* _tmp19_;
3981 ValaConstant* _tmp20_;
3982 ValaExpression* _tmp21_;
3983 ValaExpression* _tmp22_;
3984 ValaInitializerList* _tmp23_;
3985 ValaInitializerList* initializer_list;
3986 ValaInitializerList* _tmp24_;
3988 _tmp14_ = vala_constant_get_type_reference (_tmp13_);
3990 _tmp16_ = decl_space;
3991 vala_ccode_base_module_generate_type_declaration (self, _tmp15_, _tmp16_);
3993 _tmp18_ = vala_constant_get_value (_tmp17_);
3995 vala_code_node_emit ((ValaCodeNode*) _tmp19_, (ValaCodeGenerator*) self);
3997 _tmp21_ = vala_constant_get_value (_tmp20_);
3999 _tmp23_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp22_, VALA_TYPE_INITIALIZER_LIST) ? ((ValaInitializerList*) _tmp22_) : NULL);
4000 initializer_list = _tmp23_;
4001 _tmp24_ = initializer_list;
4002 if (_tmp24_ != NULL) {
4003 ValaConstant* _tmp25_;
4004 ValaDataType* _tmp26_;
4005 ValaDataType* _tmp27_;
4006 gchar* _tmp28_ = NULL;
4008 ValaCCodeDeclaration* _tmp30_;
4009 ValaCCodeDeclaration* _tmp31_;
4010 ValaCCodeDeclaration* _cdecl_;
4013 ValaConstant* _tmp33_;
4014 ValaDataType* _tmp34_;
4015 ValaDataType* _tmp35_;
4016 ValaConstant* _tmp40_;
4017 ValaExpression* _tmp41_;
4018 ValaExpression* _tmp42_;
4019 ValaCCodeExpression* _tmp43_ = NULL;
4020 ValaCCodeExpression* cinitializer;
4022 ValaCCodeDeclaration* _tmp45_;
4023 ValaConstant* _tmp46_;
4024 gchar* _tmp47_ = NULL;
4026 const gchar* _tmp49_;
4027 gchar* _tmp50_ = NULL;
4029 ValaCCodeExpression* _tmp52_;
4030 ValaCCodeVariableDeclarator* _tmp53_;
4031 ValaCCodeVariableDeclarator* _tmp54_;
4032 ValaConstant* _tmp55_;
4033 gboolean _tmp56_ = FALSE;
4034 ValaCCodeFile* _tmp59_;
4035 ValaCCodeDeclaration* _tmp60_;
4037 _tmp26_ = vala_constant_get_type_reference (_tmp25_);
4039 _tmp28_ = vala_ccode_base_module_get_ccode_const_name ((ValaCodeNode*) _tmp27_);
4041 _tmp30_ = vala_ccode_declaration_new (_tmp29_);
4045 _tmp32_ = g_strdup ("");
4048 _tmp34_ = vala_constant_get_type_reference (_tmp33_);
4050 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_ARRAY_TYPE)) {
4051 ValaInitializerList* _tmp36_;
4054 gchar* _tmp39_ = NULL;
4055 _tmp36_ = initializer_list;
4056 _tmp37_ = vala_initializer_list_get_size (_tmp36_);
4058 _tmp39_ = g_strdup_printf ("[%d]", _tmp38_);
4063 _tmp41_ = vala_constant_get_value (_tmp40_);
4065 _tmp43_ = vala_ccode_base_module_get_cvalue (self, _tmp42_);
4066 cinitializer = _tmp43_;
4067 _tmp44_ = definition;
4069 _vala_ccode_node_unref0 (cinitializer);
4070 cinitializer = NULL;
4074 _tmp47_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp46_);
4077 _tmp50_ = g_strdup_printf ("%s%s", _tmp48_, _tmp49_);
4079 _tmp52_ = cinitializer;
4080 _tmp53_ = vala_ccode_variable_declarator_new (_tmp51_, _tmp52_, NULL);
4082 vala_ccode_declaration_add_declarator (_tmp45_, (ValaCCodeDeclarator*) _tmp54_);
4083 _vala_ccode_node_unref0 (_tmp54_);
4087 _tmp56_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp55_);
4089 ValaCCodeDeclaration* _tmp57_;
4091 vala_ccode_declaration_set_modifiers (_tmp57_, VALA_CCODE_MODIFIERS_STATIC);
4093 ValaCCodeDeclaration* _tmp58_;
4095 vala_ccode_declaration_set_modifiers (_tmp58_, VALA_CCODE_MODIFIERS_EXTERN);
4097 _tmp59_ = decl_space;
4099 vala_ccode_file_add_constant_declaration (_tmp59_, (ValaCCodeNode*) _tmp60_);
4100 _vala_ccode_node_unref0 (cinitializer);
4102 _vala_ccode_node_unref0 (_cdecl_);
4104 ValaConstant* _tmp61_;
4105 gchar* _tmp62_ = NULL;
4107 ValaConstant* _tmp64_;
4108 ValaExpression* _tmp65_;
4109 ValaExpression* _tmp66_;
4110 ValaCCodeExpression* _tmp67_ = NULL;
4111 ValaCCodeExpression* _tmp68_;
4112 ValaCCodeMacroReplacement* _tmp69_;
4113 ValaCCodeMacroReplacement* _tmp70_;
4114 ValaCCodeMacroReplacement* cdefine;
4115 ValaCCodeFile* _tmp71_;
4116 ValaCCodeMacroReplacement* _tmp72_;
4118 _tmp62_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp61_);
4121 _tmp65_ = vala_constant_get_value (_tmp64_);
4123 _tmp67_ = vala_ccode_base_module_get_cvalue (self, _tmp66_);
4125 _tmp69_ = vala_ccode_macro_replacement_new_with_expression (_tmp63_, _tmp68_);
4127 _vala_ccode_node_unref0 (_tmp68_);
4130 _tmp71_ = decl_space;
4132 vala_ccode_file_add_type_member_declaration (_tmp71_, (ValaCCodeNode*) _tmp72_);
4133 _vala_ccode_node_unref0 (cdefine);
4135 _vala_code_node_unref0 (initializer_list);
4140 static void vala_ccode_base_module_real_visit_constant (ValaCodeVisitor* base, ValaConstant* c) {
4141 ValaCCodeBaseModule * self;
4142 ValaConstant* _tmp0_;
4143 ValaSourceReference* _tmp1_;
4144 ValaSourceReference* _tmp2_;
4145 ValaConstant* _tmp3_;
4148 self = (ValaCCodeBaseModule*) base;
4149 g_return_if_fail (c != NULL);
4151 _tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp0_);
4153 vala_ccode_base_module_push_line (self, _tmp2_);
4155 _tmp4_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp3_);
4157 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_BLOCK)) {
4158 ValaConstant* _tmp6_;
4159 ValaDataType* _tmp7_;
4160 ValaDataType* _tmp8_;
4161 ValaCCodeFile* _tmp9_;
4162 ValaConstant* _tmp10_;
4163 ValaExpression* _tmp11_;
4164 ValaExpression* _tmp12_;
4165 ValaConstant* _tmp13_;
4166 ValaDataType* _tmp14_;
4167 ValaDataType* _tmp15_;
4168 gchar* _tmp16_ = NULL;
4172 ValaConstant* _tmp18_;
4173 ValaDataType* _tmp19_;
4174 ValaDataType* _tmp20_;
4175 ValaConstant* _tmp22_;
4176 ValaDataType* _tmp23_;
4177 ValaDataType* _tmp24_;
4178 ValaDataType* _tmp25_;
4179 gboolean _tmp26_ = FALSE;
4180 ValaConstant* _tmp29_;
4181 ValaExpression* _tmp30_;
4182 ValaExpression* _tmp31_;
4183 ValaCCodeExpression* _tmp32_ = NULL;
4184 ValaCCodeExpression* cinitializer;
4185 ValaCCodeFunction* _tmp33_;
4186 ValaCCodeFunction* _tmp34_;
4187 const gchar* _tmp35_;
4188 ValaConstant* _tmp36_;
4189 gchar* _tmp37_ = NULL;
4191 const gchar* _tmp39_;
4192 gchar* _tmp40_ = NULL;
4194 ValaCCodeExpression* _tmp42_;
4195 ValaCCodeVariableDeclarator* _tmp43_;
4196 ValaCCodeVariableDeclarator* _tmp44_;
4198 _tmp7_ = vala_constant_get_type_reference (_tmp6_);
4200 _tmp9_ = self->cfile;
4201 vala_ccode_base_module_generate_type_declaration (self, _tmp8_, _tmp9_);
4203 _tmp11_ = vala_constant_get_value (_tmp10_);
4205 vala_code_node_emit ((ValaCodeNode*) _tmp12_, (ValaCodeGenerator*) self);
4207 _tmp14_ = vala_constant_get_type_reference (_tmp13_);
4209 _tmp16_ = vala_ccode_base_module_get_ccode_const_name ((ValaCodeNode*) _tmp15_);
4210 type_name = _tmp16_;
4211 _tmp17_ = g_strdup ("");
4214 _tmp19_ = vala_constant_get_type_reference (_tmp18_);
4216 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp20_, VALA_TYPE_ARRAY_TYPE)) {
4218 _tmp21_ = g_strdup ("[]");
4223 _tmp23_ = vala_constant_get_type_reference (_tmp22_);
4225 _tmp25_ = self->string_type;
4226 _tmp26_ = vala_data_type_compatible (_tmp24_, _tmp25_);
4230 _tmp27_ = g_strdup ("const char");
4231 _g_free0 (type_name);
4232 type_name = _tmp27_;
4233 _tmp28_ = g_strdup ("[]");
4238 _tmp30_ = vala_constant_get_value (_tmp29_);
4240 _tmp32_ = vala_ccode_base_module_get_cvalue (self, _tmp31_);
4241 cinitializer = _tmp32_;
4242 _tmp33_ = vala_ccode_base_module_get_ccode (self);
4244 _tmp35_ = type_name;
4246 _tmp37_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp36_);
4249 _tmp40_ = g_strdup_printf ("%s%s", _tmp38_, _tmp39_);
4251 _tmp42_ = cinitializer;
4252 _tmp43_ = vala_ccode_variable_declarator_new (_tmp41_, _tmp42_, NULL);
4254 vala_ccode_function_add_declaration (_tmp34_, _tmp35_, (ValaCCodeDeclarator*) _tmp44_, VALA_CCODE_MODIFIERS_STATIC);
4255 _vala_ccode_node_unref0 (_tmp44_);
4258 _vala_ccode_node_unref0 (cinitializer);
4260 _g_free0 (type_name);
4262 ValaConstant* _tmp45_;
4263 ValaCCodeFile* _tmp46_;
4264 ValaConstant* _tmp47_;
4265 gboolean _tmp48_ = FALSE;
4266 ValaConstant* _tmp51_;
4267 gboolean _tmp52_ = FALSE;
4269 _tmp46_ = self->cfile;
4270 vala_ccode_base_module_generate_constant_declaration (self, _tmp45_, _tmp46_, TRUE);
4272 _tmp48_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp47_);
4274 ValaConstant* _tmp49_;
4275 ValaCCodeFile* _tmp50_;
4277 _tmp50_ = self->header_file;
4278 vala_ccode_base_module_generate_constant_declaration (self, _tmp49_, _tmp50_, FALSE);
4281 _tmp52_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp51_);
4283 ValaConstant* _tmp53_;
4284 ValaCCodeFile* _tmp54_;
4286 _tmp54_ = self->internal_header_file;
4287 vala_ccode_base_module_generate_constant_declaration (self, _tmp53_, _tmp54_, FALSE);
4290 vala_ccode_base_module_pop_line (self);
4294 void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* self, ValaField* f, ValaCCodeFile* decl_space) {
4295 ValaCCodeFile* _tmp0_;
4298 gchar* _tmp3_ = NULL;
4300 gboolean _tmp5_ = FALSE;
4303 ValaDataType* _tmp8_;
4304 ValaDataType* _tmp9_;
4305 ValaCCodeFile* _tmp10_;
4307 ValaDataType* _tmp12_;
4308 ValaDataType* _tmp13_;
4309 gchar* _tmp14_ = NULL;
4314 const gchar* _tmp20_;
4315 ValaCCodeDeclaration* _tmp21_;
4316 ValaCCodeDeclaration* _cdecl_;
4317 ValaCCodeDeclaration* _tmp22_;
4319 gchar* _tmp24_ = NULL;
4322 ValaDataType* _tmp27_;
4323 ValaDataType* _tmp28_;
4324 gchar* _tmp29_ = NULL;
4326 ValaCCodeVariableDeclarator* _tmp31_;
4327 ValaCCodeVariableDeclarator* _tmp32_;
4329 gboolean _tmp34_ = FALSE;
4333 ValaCCodeFile* _tmp44_;
4334 ValaCCodeDeclaration* _tmp45_;
4336 gboolean _tmp47_ = FALSE;
4337 gboolean _tmp70_ = FALSE;
4339 ValaDataType* _tmp72_;
4340 ValaDataType* _tmp73_;
4342 g_return_if_fail (self != NULL);
4343 g_return_if_fail (f != NULL);
4344 g_return_if_fail (decl_space != NULL);
4345 _tmp0_ = decl_space;
4348 _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
4350 _tmp5_ = vala_ccode_base_module_add_symbol_declaration (self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_);
4357 _tmp8_ = vala_variable_get_variable_type ((ValaVariable*) _tmp7_);
4359 _tmp10_ = decl_space;
4360 vala_ccode_base_module_generate_type_declaration (self, _tmp9_, _tmp10_);
4362 _tmp12_ = vala_variable_get_variable_type ((ValaVariable*) _tmp11_);
4364 _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_);
4365 field_ctype = _tmp14_;
4367 _tmp16_ = vala_field_get_is_volatile (_tmp15_);
4370 const gchar* _tmp18_;
4372 _tmp18_ = field_ctype;
4373 _tmp19_ = g_strconcat ("volatile ", _tmp18_, NULL);
4374 _g_free0 (field_ctype);
4375 field_ctype = _tmp19_;
4377 _tmp20_ = field_ctype;
4378 _tmp21_ = vala_ccode_declaration_new (_tmp20_);
4382 _tmp24_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp23_);
4385 _tmp27_ = vala_variable_get_variable_type ((ValaVariable*) _tmp26_);
4387 _tmp29_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp28_);
4389 _tmp31_ = vala_ccode_variable_declarator_new (_tmp25_, NULL, _tmp30_);
4391 vala_ccode_declaration_add_declarator (_tmp22_, (ValaCCodeDeclarator*) _tmp32_);
4392 _vala_ccode_node_unref0 (_tmp32_);
4396 _tmp34_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp33_);
4398 ValaCCodeDeclaration* _tmp35_;
4400 vala_ccode_declaration_set_modifiers (_tmp35_, VALA_CCODE_MODIFIERS_STATIC);
4402 ValaCCodeDeclaration* _tmp36_;
4404 vala_ccode_declaration_set_modifiers (_tmp36_, VALA_CCODE_MODIFIERS_EXTERN);
4407 _tmp38_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp37_);
4410 ValaCCodeDeclaration* _tmp40_;
4411 ValaCCodeDeclaration* _tmp41_;
4412 ValaCCodeModifiers _tmp42_;
4413 ValaCCodeModifiers _tmp43_;
4416 _tmp42_ = vala_ccode_declaration_get_modifiers (_tmp41_);
4418 vala_ccode_declaration_set_modifiers (_tmp41_, _tmp43_ | VALA_CCODE_MODIFIERS_DEPRECATED);
4420 _tmp44_ = decl_space;
4422 vala_ccode_file_add_type_member_declaration (_tmp44_, (ValaCCodeNode*) _tmp45_);
4424 _tmp47_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp46_);
4426 ValaStruct* _tmp48_;
4427 gchar* _tmp49_ = NULL;
4429 ValaCCodeDeclaration* _tmp51_;
4430 ValaCCodeDeclaration* _tmp52_;
4431 ValaCCodeDeclaration* flock;
4433 gchar* _tmp54_ = NULL;
4435 gchar* _tmp56_ = NULL;
4437 ValaCCodeConstant* _tmp58_;
4438 ValaCCodeConstant* _tmp59_;
4439 ValaCCodeVariableDeclarator* _tmp60_;
4440 ValaCCodeVariableDeclarator* _tmp61_;
4441 ValaCCodeVariableDeclarator* flock_decl;
4442 ValaCCodeDeclaration* _tmp62_;
4443 ValaCCodeVariableDeclarator* _tmp63_;
4445 gboolean _tmp65_ = FALSE;
4446 ValaCCodeFile* _tmp68_;
4447 ValaCCodeDeclaration* _tmp69_;
4448 _tmp48_ = self->mutex_type;
4449 _tmp49_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp48_);
4451 _tmp51_ = vala_ccode_declaration_new (_tmp50_);
4456 _tmp54_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp53_);
4458 _tmp56_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp55_);
4460 _tmp58_ = vala_ccode_constant_new ("{0}");
4462 _tmp60_ = vala_ccode_variable_declarator_new (_tmp57_, (ValaCCodeExpression*) _tmp59_, NULL);
4464 _vala_ccode_node_unref0 (_tmp59_);
4467 flock_decl = _tmp61_;
4469 _tmp63_ = flock_decl;
4470 vala_ccode_declaration_add_declarator (_tmp62_, (ValaCCodeDeclarator*) _tmp63_);
4472 _tmp65_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp64_);
4474 ValaCCodeDeclaration* _tmp66_;
4476 vala_ccode_declaration_set_modifiers (_tmp66_, VALA_CCODE_MODIFIERS_STATIC);
4478 ValaCCodeDeclaration* _tmp67_;
4480 vala_ccode_declaration_set_modifiers (_tmp67_, VALA_CCODE_MODIFIERS_EXTERN);
4482 _tmp68_ = decl_space;
4484 vala_ccode_file_add_type_member_declaration (_tmp68_, (ValaCCodeNode*) _tmp69_);
4485 _vala_ccode_node_unref0 (flock_decl);
4486 _vala_ccode_node_unref0 (flock);
4489 _tmp72_ = vala_variable_get_variable_type ((ValaVariable*) _tmp71_);
4491 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp73_, VALA_TYPE_ARRAY_TYPE)) {
4493 gboolean _tmp75_ = FALSE;
4495 _tmp75_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp74_);
4503 ValaDataType* _tmp78_;
4504 ValaDataType* _tmp79_;
4505 ValaArrayType* _tmp80_;
4506 ValaArrayType* array_type;
4507 ValaArrayType* _tmp81_;
4511 _tmp78_ = vala_variable_get_variable_type ((ValaVariable*) _tmp77_);
4513 _tmp80_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp79_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
4514 array_type = _tmp80_;
4515 _tmp81_ = array_type;
4516 _tmp82_ = vala_array_type_get_fixed_length (_tmp81_);
4528 ValaArrayType* _tmp88_;
4531 ValaDataType* _tmp91_;
4532 ValaDataType* _tmp92_ = NULL;
4533 ValaDataType* len_type;
4534 ValaDataType* _tmp93_;
4535 gchar* _tmp94_ = NULL;
4537 ValaCCodeDeclaration* _tmp96_;
4538 ValaCCodeDeclaration* _tmp97_;
4540 gchar* _tmp99_ = NULL;
4543 gchar* _tmp102_ = NULL;
4545 ValaCCodeVariableDeclarator* _tmp104_;
4546 ValaCCodeVariableDeclarator* _tmp105_;
4547 ValaField* _tmp106_;
4548 gboolean _tmp107_ = FALSE;
4549 ValaCCodeFile* _tmp110_;
4550 ValaCCodeDeclaration* _tmp111_;
4559 _tmp88_ = array_type;
4560 _tmp89_ = vala_array_type_get_rank (_tmp88_);
4562 if (!(_tmp87_ <= _tmp90_)) {
4565 _tmp91_ = self->int_type;
4566 _tmp92_ = vala_data_type_copy (_tmp91_);
4569 _tmp94_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp93_);
4571 _tmp96_ = vala_ccode_declaration_new (_tmp95_);
4572 _vala_ccode_node_unref0 (_cdecl_);
4577 _tmp99_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp98_);
4580 _tmp102_ = vala_ccode_base_module_get_array_length_cname (self, _tmp100_, _tmp101_);
4581 _tmp103_ = _tmp102_;
4582 _tmp104_ = vala_ccode_variable_declarator_new (_tmp103_, NULL, NULL);
4583 _tmp105_ = _tmp104_;
4584 vala_ccode_declaration_add_declarator (_tmp97_, (ValaCCodeDeclarator*) _tmp105_);
4585 _vala_ccode_node_unref0 (_tmp105_);
4586 _g_free0 (_tmp103_);
4587 _g_free0 (_tmp100_);
4589 _tmp107_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp106_);
4591 ValaCCodeDeclaration* _tmp108_;
4593 vala_ccode_declaration_set_modifiers (_tmp108_, VALA_CCODE_MODIFIERS_STATIC);
4595 ValaCCodeDeclaration* _tmp109_;
4597 vala_ccode_declaration_set_modifiers (_tmp109_, VALA_CCODE_MODIFIERS_EXTERN);
4599 _tmp110_ = decl_space;
4601 vala_ccode_file_add_type_member_declaration (_tmp110_, (ValaCCodeNode*) _tmp111_);
4602 _vala_code_node_unref0 (len_type);
4607 _vala_code_node_unref0 (array_type);
4609 ValaField* _tmp112_;
4610 ValaDataType* _tmp113_;
4611 ValaDataType* _tmp114_;
4613 _tmp113_ = vala_variable_get_variable_type ((ValaVariable*) _tmp112_);
4614 _tmp114_ = _tmp113_;
4615 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp114_, VALA_TYPE_DELEGATE_TYPE)) {
4616 ValaField* _tmp115_;
4617 ValaDataType* _tmp116_;
4618 ValaDataType* _tmp117_;
4619 ValaDelegateType* _tmp118_;
4620 ValaDelegateType* delegate_type;
4621 ValaDelegateType* _tmp119_;
4622 ValaDelegate* _tmp120_;
4623 ValaDelegate* _tmp121_;
4627 _tmp116_ = vala_variable_get_variable_type ((ValaVariable*) _tmp115_);
4628 _tmp117_ = _tmp116_;
4629 _tmp118_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp117_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
4630 delegate_type = _tmp118_;
4631 _tmp119_ = delegate_type;
4632 _tmp120_ = vala_delegate_type_get_delegate_symbol (_tmp119_);
4633 _tmp121_ = _tmp120_;
4634 _tmp122_ = vala_delegate_get_has_target (_tmp121_);
4635 _tmp123_ = _tmp122_;
4637 ValaCCodeDeclaration* _tmp124_;
4638 ValaCCodeDeclaration* _tmp125_;
4639 ValaField* _tmp126_;
4640 gchar* _tmp127_ = NULL;
4642 ValaCCodeVariableDeclarator* _tmp129_;
4643 ValaCCodeVariableDeclarator* _tmp130_;
4644 ValaField* _tmp131_;
4645 gboolean _tmp132_ = FALSE;
4646 ValaCCodeFile* _tmp135_;
4647 ValaCCodeDeclaration* _tmp136_;
4648 ValaDelegateType* _tmp137_;
4651 _tmp124_ = vala_ccode_declaration_new ("gpointer");
4652 _vala_ccode_node_unref0 (_cdecl_);
4656 _tmp127_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp126_);
4657 _tmp128_ = _tmp127_;
4658 _tmp129_ = vala_ccode_variable_declarator_new (_tmp128_, NULL, NULL);
4659 _tmp130_ = _tmp129_;
4660 vala_ccode_declaration_add_declarator (_tmp125_, (ValaCCodeDeclarator*) _tmp130_);
4661 _vala_ccode_node_unref0 (_tmp130_);
4662 _g_free0 (_tmp128_);
4664 _tmp132_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp131_);
4666 ValaCCodeDeclaration* _tmp133_;
4668 vala_ccode_declaration_set_modifiers (_tmp133_, VALA_CCODE_MODIFIERS_STATIC);
4670 ValaCCodeDeclaration* _tmp134_;
4672 vala_ccode_declaration_set_modifiers (_tmp134_, VALA_CCODE_MODIFIERS_EXTERN);
4674 _tmp135_ = decl_space;
4676 vala_ccode_file_add_type_member_declaration (_tmp135_, (ValaCCodeNode*) _tmp136_);
4677 _tmp137_ = delegate_type;
4678 _tmp138_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp137_);
4679 _tmp139_ = _tmp138_;
4681 ValaCCodeDeclaration* _tmp140_;
4682 ValaCCodeDeclaration* _tmp141_;
4683 ValaField* _tmp142_;
4684 gchar* _tmp143_ = NULL;
4686 gchar* _tmp145_ = NULL;
4688 ValaCCodeVariableDeclarator* _tmp147_;
4689 ValaCCodeVariableDeclarator* _tmp148_;
4690 ValaField* _tmp149_;
4691 gboolean _tmp150_ = FALSE;
4692 ValaCCodeFile* _tmp153_;
4693 ValaCCodeDeclaration* _tmp154_;
4694 _tmp140_ = vala_ccode_declaration_new ("GDestroyNotify");
4695 _vala_ccode_node_unref0 (_cdecl_);
4699 _tmp143_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp142_);
4700 _tmp144_ = _tmp143_;
4701 _tmp145_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp144_);
4702 _tmp146_ = _tmp145_;
4703 _tmp147_ = vala_ccode_variable_declarator_new (_tmp146_, NULL, NULL);
4704 _tmp148_ = _tmp147_;
4705 vala_ccode_declaration_add_declarator (_tmp141_, (ValaCCodeDeclarator*) _tmp148_);
4706 _vala_ccode_node_unref0 (_tmp148_);
4707 _g_free0 (_tmp146_);
4708 _g_free0 (_tmp144_);
4710 _tmp150_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp149_);
4712 ValaCCodeDeclaration* _tmp151_;
4714 vala_ccode_declaration_set_modifiers (_tmp151_, VALA_CCODE_MODIFIERS_STATIC);
4716 ValaCCodeDeclaration* _tmp152_;
4718 vala_ccode_declaration_set_modifiers (_tmp152_, VALA_CCODE_MODIFIERS_EXTERN);
4720 _tmp153_ = decl_space;
4722 vala_ccode_file_add_type_member_declaration (_tmp153_, (ValaCCodeNode*) _tmp154_);
4725 _vala_code_node_unref0 (delegate_type);
4728 _vala_ccode_node_unref0 (_cdecl_);
4729 _g_free0 (field_ctype);
4733 static gpointer _vala_target_value_ref0 (gpointer self) {
4734 return self ? vala_target_value_ref (self) : NULL;
4738 static void vala_ccode_base_module_real_visit_field (ValaCodeVisitor* base, ValaField* f) {
4739 ValaCCodeBaseModule * self;
4741 ValaSourceReference* _tmp1_;
4742 ValaSourceReference* _tmp2_;
4745 ValaDataType* _tmp5_;
4746 ValaDataType* _tmp6_;
4752 gboolean _tmp11_ = FALSE;
4755 gboolean is_gtypeinstance;
4756 ValaCCodeExpression* lhs;
4758 ValaDataType* _tmp18_;
4759 ValaDataType* _tmp19_;
4760 gchar* _tmp20_ = NULL;
4766 ValaMemberBinding _tmp27_;
4767 ValaMemberBinding _tmp28_;
4768 self = (ValaCCodeBaseModule*) base;
4769 g_return_if_fail (f != NULL);
4771 _tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp0_);
4773 vala_ccode_base_module_push_line (self, _tmp2_);
4775 vala_ccode_base_module_visit_member (self, (ValaSymbol*) _tmp3_);
4777 _tmp5_ = vala_variable_get_variable_type ((ValaVariable*) _tmp4_);
4779 vala_ccode_base_module_check_type (self, _tmp6_);
4781 _tmp8_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp7_);
4783 _tmp10_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp9_) : NULL);
4786 if (_tmp12_ != NULL) {
4791 _tmp14_ = vala_class_get_is_compact (_tmp13_);
4798 is_gtypeinstance = _tmp16_;
4801 _tmp18_ = vala_variable_get_variable_type ((ValaVariable*) _tmp17_);
4803 _tmp20_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp19_);
4804 field_ctype = _tmp20_;
4806 _tmp22_ = vala_field_get_is_volatile (_tmp21_);
4809 const gchar* _tmp24_;
4811 _tmp24_ = field_ctype;
4812 _tmp25_ = g_strconcat ("volatile ", _tmp24_, NULL);
4813 _g_free0 (field_ctype);
4814 field_ctype = _tmp25_;
4817 _tmp27_ = vala_field_get_binding (_tmp26_);
4819 if (_tmp28_ == VALA_MEMBER_BINDING_INSTANCE) {
4820 gboolean _tmp29_ = FALSE;
4824 ValaExpression* _tmp50_;
4825 ValaExpression* _tmp51_;
4826 gboolean _tmp173_ = FALSE;
4827 ValaField* _tmp174_;
4828 ValaDataType* _tmp175_;
4829 ValaDataType* _tmp176_;
4830 gboolean _tmp177_ = FALSE;
4832 _tmp30_ = is_gtypeinstance;
4835 ValaSymbolAccessibility _tmp32_;
4836 ValaSymbolAccessibility _tmp33_;
4838 _tmp32_ = vala_symbol_get_access ((ValaSymbol*) _tmp31_);
4840 _tmp29_ = _tmp33_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
4846 ValaCCodeIdentifier* _tmp35_;
4847 ValaCCodeIdentifier* _tmp36_;
4848 ValaCCodeMemberAccess* _tmp37_;
4849 ValaCCodeMemberAccess* _tmp38_;
4851 gchar* _tmp40_ = NULL;
4853 ValaCCodeMemberAccess* _tmp42_;
4854 _tmp35_ = vala_ccode_identifier_new ("self");
4856 _tmp37_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp36_, "priv");
4859 _tmp40_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp39_);
4861 _tmp42_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp38_, _tmp41_);
4862 _vala_ccode_node_unref0 (lhs);
4863 lhs = (ValaCCodeExpression*) _tmp42_;
4865 _vala_ccode_node_unref0 (_tmp38_);
4866 _vala_ccode_node_unref0 (_tmp36_);
4868 ValaCCodeIdentifier* _tmp43_;
4869 ValaCCodeIdentifier* _tmp44_;
4871 gchar* _tmp46_ = NULL;
4873 ValaCCodeMemberAccess* _tmp48_;
4874 _tmp43_ = vala_ccode_identifier_new ("self");
4877 _tmp46_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp45_);
4879 _tmp48_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp44_, _tmp47_);
4880 _vala_ccode_node_unref0 (lhs);
4881 lhs = (ValaCCodeExpression*) _tmp48_;
4883 _vala_ccode_node_unref0 (_tmp44_);
4886 _tmp50_ = vala_variable_get_initializer ((ValaVariable*) _tmp49_);
4888 if (_tmp51_ != NULL) {
4889 ValaCCodeBaseModuleEmitContext* _tmp52_;
4891 ValaExpression* _tmp54_;
4892 ValaExpression* _tmp55_;
4894 ValaExpression* _tmp57_;
4895 ValaExpression* _tmp58_;
4896 ValaCCodeExpression* _tmp59_ = NULL;
4897 ValaCCodeExpression* rhs;
4898 ValaCCodeFunction* _tmp60_;
4899 ValaCCodeFunction* _tmp61_;
4900 ValaCCodeExpression* _tmp62_;
4901 ValaCCodeExpression* _tmp63_;
4902 gboolean _tmp64_ = FALSE;
4904 ValaDataType* _tmp66_;
4905 ValaDataType* _tmp67_;
4907 ValaArrayList* _tmp171_;
4908 ValaArrayList* _tmp172_;
4909 _tmp52_ = self->instance_init_context;
4910 vala_ccode_base_module_push_context (self, _tmp52_);
4912 _tmp54_ = vala_variable_get_initializer ((ValaVariable*) _tmp53_);
4914 vala_code_node_emit ((ValaCodeNode*) _tmp55_, (ValaCodeGenerator*) self);
4916 _tmp57_ = vala_variable_get_initializer ((ValaVariable*) _tmp56_);
4918 _tmp59_ = vala_ccode_base_module_get_cvalue (self, _tmp58_);
4920 _tmp60_ = vala_ccode_base_module_get_ccode (self);
4924 vala_ccode_function_add_assignment (_tmp61_, _tmp62_, _tmp63_);
4926 _tmp66_ = vala_variable_get_variable_type ((ValaVariable*) _tmp65_);
4928 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp67_, VALA_TYPE_ARRAY_TYPE)) {
4930 gboolean _tmp69_ = FALSE;
4932 _tmp69_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp68_);
4940 ValaDataType* _tmp72_;
4941 ValaDataType* _tmp73_;
4942 ValaArrayType* _tmp74_;
4943 ValaArrayType* array_type;
4946 ValaSymbol* _tmp77_;
4947 ValaSymbol* _tmp78_;
4948 ValaTargetValue* _tmp79_ = NULL;
4949 ValaTargetValue* _tmp80_;
4950 ValaTargetValue* _tmp81_ = NULL;
4951 ValaTargetValue* _tmp82_;
4952 ValaTargetValue* field_value;
4954 ValaExpression* _tmp84_;
4955 ValaExpression* _tmp85_;
4956 ValaTargetValue* _tmp86_;
4957 ValaTargetValue* _tmp87_;
4958 ValaGLibValue* _tmp88_;
4959 ValaGLibValue* glib_value;
4960 ValaGLibValue* _tmp89_;
4962 gboolean _tmp139_ = FALSE;
4963 ValaArrayType* _tmp140_;
4968 _tmp72_ = vala_variable_get_variable_type ((ValaVariable*) _tmp71_);
4970 _tmp74_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp73_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
4971 array_type = _tmp74_;
4974 _tmp77_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp76_);
4976 _tmp79_ = vala_ccode_base_module_load_this_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp78_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
4978 _tmp81_ = vala_ccode_base_module_get_field_cvalue (self, _tmp75_, _tmp80_);
4980 _vala_target_value_unref0 (_tmp80_);
4981 field_value = _tmp82_;
4983 _tmp84_ = vala_variable_get_initializer ((ValaVariable*) _tmp83_);
4985 _tmp86_ = vala_expression_get_target_value (_tmp85_);
4987 _tmp88_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp87_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
4988 glib_value = _tmp88_;
4989 _tmp89_ = glib_value;
4990 _tmp90_ = _tmp89_->array_length_cvalues;
4991 if (_tmp90_ != NULL) {
5001 ValaArrayType* _tmp95_;
5004 ValaTargetValue* _tmp98_;
5006 ValaCCodeExpression* _tmp100_ = NULL;
5007 ValaCCodeExpression* array_len_lhs;
5008 ValaCCodeFunction* _tmp101_;
5009 ValaCCodeFunction* _tmp102_;
5010 ValaCCodeExpression* _tmp103_;
5011 ValaGLibValue* _tmp104_;
5013 ValaCCodeExpression* _tmp106_ = NULL;
5014 ValaCCodeExpression* _tmp107_;
5023 _tmp95_ = array_type;
5024 _tmp96_ = vala_array_type_get_rank (_tmp95_);
5026 if (!(_tmp94_ <= _tmp97_)) {
5029 _tmp98_ = field_value;
5031 _tmp100_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp98_, _tmp99_);
5032 array_len_lhs = _tmp100_;
5033 _tmp101_ = vala_ccode_base_module_get_ccode (self);
5034 _tmp102_ = _tmp101_;
5035 _tmp103_ = array_len_lhs;
5036 _tmp104_ = glib_value;
5038 _tmp106_ = vala_ccode_base_module_get_array_length_cvalue (self, (ValaTargetValue*) _tmp104_, _tmp105_);
5039 _tmp107_ = _tmp106_;
5040 vala_ccode_function_add_assignment (_tmp102_, _tmp103_, _tmp107_);
5041 _vala_ccode_node_unref0 (_tmp107_);
5042 _vala_ccode_node_unref0 (array_len_lhs);
5047 ValaGLibValue* _tmp108_;
5049 _tmp108_ = glib_value;
5050 _tmp109_ = _tmp108_->array_null_terminated;
5052 ValaCCodeIdentifier* _tmp110_;
5053 ValaCCodeIdentifier* _tmp111_;
5054 ValaCCodeFunctionCall* _tmp112_;
5055 ValaCCodeFunctionCall* _tmp113_;
5056 ValaCCodeFunctionCall* len_call;
5057 ValaCCodeFunctionCall* _tmp114_;
5058 ValaGLibValue* _tmp115_;
5059 ValaCCodeExpression* _tmp116_ = NULL;
5060 ValaCCodeExpression* _tmp117_;
5061 ValaCCodeFunction* _tmp118_;
5062 ValaCCodeFunction* _tmp119_;
5063 ValaTargetValue* _tmp120_;
5064 ValaCCodeExpression* _tmp121_ = NULL;
5065 ValaCCodeExpression* _tmp122_;
5066 ValaCCodeFunctionCall* _tmp123_;
5067 self->requires_array_length = TRUE;
5068 _tmp110_ = vala_ccode_identifier_new ("_vala_array_length");
5069 _tmp111_ = _tmp110_;
5070 _tmp112_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp111_);
5071 _tmp113_ = _tmp112_;
5072 _vala_ccode_node_unref0 (_tmp111_);
5073 len_call = _tmp113_;
5074 _tmp114_ = len_call;
5075 _tmp115_ = glib_value;
5076 _tmp116_ = vala_ccode_base_module_get_cvalue_ (self, (ValaTargetValue*) _tmp115_);
5077 _tmp117_ = _tmp116_;
5078 vala_ccode_function_call_add_argument (_tmp114_, _tmp117_);
5079 _vala_ccode_node_unref0 (_tmp117_);
5080 _tmp118_ = vala_ccode_base_module_get_ccode (self);
5081 _tmp119_ = _tmp118_;
5082 _tmp120_ = field_value;
5083 _tmp121_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp120_, 1);
5084 _tmp122_ = _tmp121_;
5085 _tmp123_ = len_call;
5086 vala_ccode_function_add_assignment (_tmp119_, _tmp122_, (ValaCCodeExpression*) _tmp123_);
5087 _vala_ccode_node_unref0 (_tmp122_);
5088 _vala_ccode_node_unref0 (len_call);
5099 ValaArrayType* _tmp128_;
5102 ValaCCodeFunction* _tmp131_;
5103 ValaCCodeFunction* _tmp132_;
5104 ValaTargetValue* _tmp133_;
5106 ValaCCodeExpression* _tmp135_ = NULL;
5107 ValaCCodeExpression* _tmp136_;
5108 ValaCCodeConstant* _tmp137_;
5109 ValaCCodeConstant* _tmp138_;
5110 _tmp125_ = _tmp124_;
5118 _tmp128_ = array_type;
5119 _tmp129_ = vala_array_type_get_rank (_tmp128_);
5120 _tmp130_ = _tmp129_;
5121 if (!(_tmp127_ <= _tmp130_)) {
5124 _tmp131_ = vala_ccode_base_module_get_ccode (self);
5125 _tmp132_ = _tmp131_;
5126 _tmp133_ = field_value;
5128 _tmp135_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp133_, _tmp134_);
5129 _tmp136_ = _tmp135_;
5130 _tmp137_ = vala_ccode_constant_new ("-1");
5131 _tmp138_ = _tmp137_;
5132 vala_ccode_function_add_assignment (_tmp132_, _tmp136_, (ValaCCodeExpression*) _tmp138_);
5133 _vala_ccode_node_unref0 (_tmp138_);
5134 _vala_ccode_node_unref0 (_tmp136_);
5140 _tmp140_ = array_type;
5141 _tmp141_ = vala_array_type_get_rank (_tmp140_);
5142 _tmp142_ = _tmp141_;
5143 if (_tmp142_ == 1) {
5144 ValaField* _tmp143_;
5145 gboolean _tmp144_ = FALSE;
5147 _tmp144_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp143_);
5148 _tmp139_ = _tmp144_;
5152 _tmp145_ = _tmp139_;
5154 ValaTargetValue* _tmp146_;
5155 ValaCCodeExpression* _tmp147_ = NULL;
5156 ValaCCodeExpression* lhs_array_size;
5157 ValaTargetValue* _tmp148_;
5158 ValaCCodeExpression* _tmp149_ = NULL;
5159 ValaCCodeExpression* rhs_array_len;
5160 ValaCCodeFunction* _tmp150_;
5161 ValaCCodeFunction* _tmp151_;
5162 ValaCCodeExpression* _tmp152_;
5163 ValaCCodeExpression* _tmp153_;
5164 _tmp146_ = field_value;
5165 _tmp147_ = vala_ccode_base_module_get_array_size_cvalue (self, _tmp146_);
5166 lhs_array_size = _tmp147_;
5167 _tmp148_ = field_value;
5168 _tmp149_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp148_, 1);
5169 rhs_array_len = _tmp149_;
5170 _tmp150_ = vala_ccode_base_module_get_ccode (self);
5171 _tmp151_ = _tmp150_;
5172 _tmp152_ = lhs_array_size;
5173 _tmp153_ = rhs_array_len;
5174 vala_ccode_function_add_assignment (_tmp151_, _tmp152_, _tmp153_);
5175 _vala_ccode_node_unref0 (rhs_array_len);
5176 _vala_ccode_node_unref0 (lhs_array_size);
5178 _vala_target_value_unref0 (glib_value);
5179 _vala_target_value_unref0 (field_value);
5180 _vala_code_node_unref0 (array_type);
5183 ValaArrayList* _tmp154_;
5184 ValaArrayList* _tmp155_;
5185 ValaArrayList* _tmp156_;
5186 ValaArrayList* _value_list;
5187 ValaArrayList* _tmp157_;
5192 _tmp154_ = vala_ccode_base_module_get_temp_ref_values (self);
5193 _tmp155_ = _tmp154_;
5194 _tmp156_ = _vala_iterable_ref0 (_tmp155_);
5195 _value_list = _tmp156_;
5196 _tmp157_ = _value_list;
5197 _tmp158_ = vala_collection_get_size ((ValaCollection*) _tmp157_);
5198 _tmp159_ = _tmp158_;
5199 _value_size = _tmp159_;
5205 ValaArrayList* _tmp163_;
5207 gpointer _tmp165_ = NULL;
5208 ValaTargetValue* value;
5209 ValaCCodeFunction* _tmp166_;
5210 ValaCCodeFunction* _tmp167_;
5211 ValaTargetValue* _tmp168_;
5212 ValaCCodeExpression* _tmp169_ = NULL;
5213 ValaCCodeExpression* _tmp170_;
5214 _tmp160_ = _value_index;
5215 _value_index = _tmp160_ + 1;
5216 _tmp161_ = _value_index;
5217 _tmp162_ = _value_size;
5218 if (!(_tmp161_ < _tmp162_)) {
5221 _tmp163_ = _value_list;
5222 _tmp164_ = _value_index;
5223 _tmp165_ = vala_list_get ((ValaList*) _tmp163_, _tmp164_);
5224 value = (ValaTargetValue*) _tmp165_;
5225 _tmp166_ = vala_ccode_base_module_get_ccode (self);
5226 _tmp167_ = _tmp166_;
5228 _tmp169_ = vala_ccode_base_module_destroy_value (self, _tmp168_, FALSE);
5229 _tmp170_ = _tmp169_;
5230 vala_ccode_function_add_expression (_tmp167_, _tmp170_);
5231 _vala_ccode_node_unref0 (_tmp170_);
5232 _vala_target_value_unref0 (value);
5234 _vala_iterable_unref0 (_value_list);
5236 _tmp171_ = vala_ccode_base_module_get_temp_ref_values (self);
5237 _tmp172_ = _tmp171_;
5238 vala_collection_clear ((ValaCollection*) _tmp172_);
5239 vala_ccode_base_module_pop_context (self);
5240 _vala_ccode_node_unref0 (rhs);
5243 _tmp175_ = vala_variable_get_variable_type ((ValaVariable*) _tmp174_);
5244 _tmp176_ = _tmp175_;
5245 _tmp177_ = vala_ccode_base_module_requires_destroy (self, _tmp176_);
5247 ValaCCodeBaseModuleEmitContext* _tmp178_;
5248 _tmp178_ = self->instance_finalize_context;
5249 _tmp173_ = _tmp178_ != NULL;
5253 _tmp179_ = _tmp173_;
5255 ValaCCodeBaseModuleEmitContext* _tmp180_;
5256 ValaCCodeFunction* _tmp181_;
5257 ValaCCodeFunction* _tmp182_;
5258 ValaField* _tmp183_;
5259 ValaField* _tmp184_;
5260 ValaSymbol* _tmp185_;
5261 ValaSymbol* _tmp186_;
5262 ValaTargetValue* _tmp187_ = NULL;
5263 ValaTargetValue* _tmp188_;
5264 ValaCCodeExpression* _tmp189_ = NULL;
5265 ValaCCodeExpression* _tmp190_;
5266 _tmp180_ = self->instance_finalize_context;
5267 vala_ccode_base_module_push_context (self, _tmp180_);
5268 _tmp181_ = vala_ccode_base_module_get_ccode (self);
5269 _tmp182_ = _tmp181_;
5272 _tmp185_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp184_);
5273 _tmp186_ = _tmp185_;
5274 _tmp187_ = vala_ccode_base_module_load_this_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp186_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
5275 _tmp188_ = _tmp187_;
5276 _tmp189_ = vala_ccode_base_module_destroy_field (self, _tmp183_, _tmp188_);
5277 _tmp190_ = _tmp189_;
5278 vala_ccode_function_add_expression (_tmp182_, _tmp190_);
5279 _vala_ccode_node_unref0 (_tmp190_);
5280 _vala_target_value_unref0 (_tmp188_);
5281 vala_ccode_base_module_pop_context (self);
5284 ValaField* _tmp191_;
5285 ValaMemberBinding _tmp192_;
5286 ValaMemberBinding _tmp193_;
5288 _tmp192_ = vala_field_get_binding (_tmp191_);
5289 _tmp193_ = _tmp192_;
5290 if (_tmp193_ == VALA_MEMBER_BINDING_CLASS) {
5292 ValaField* _tmp199_;
5293 ValaSymbolAccessibility _tmp200_;
5294 ValaSymbolAccessibility _tmp201_;
5295 ValaField* _tmp225_;
5296 ValaExpression* _tmp226_;
5297 ValaExpression* _tmp227_;
5298 _tmp194_ = is_gtypeinstance;
5300 ValaField* _tmp195_;
5301 ValaSourceReference* _tmp196_;
5302 ValaSourceReference* _tmp197_;
5303 ValaField* _tmp198_;
5305 _tmp196_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp195_);
5306 _tmp197_ = _tmp196_;
5307 vala_report_error (_tmp197_, "class fields are not supported in compact classes");
5309 vala_code_node_set_error ((ValaCodeNode*) _tmp198_, TRUE);
5310 _g_free0 (field_ctype);
5311 _vala_ccode_node_unref0 (lhs);
5312 _vala_code_node_unref0 (cl);
5316 _tmp200_ = vala_symbol_get_access ((ValaSymbol*) _tmp199_);
5317 _tmp201_ = _tmp200_;
5318 if (_tmp201_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
5319 ValaClass* _tmp202_;
5320 gchar* _tmp203_ = NULL;
5322 gchar* _tmp205_ = NULL;
5324 ValaCCodeIdentifier* _tmp207_;
5325 ValaCCodeIdentifier* _tmp208_;
5326 ValaCCodeFunctionCall* _tmp209_;
5327 ValaCCodeFunctionCall* _tmp210_;
5328 ValaCCodeFunctionCall* ccall;
5329 ValaCCodeFunctionCall* _tmp211_;
5330 ValaCCodeIdentifier* _tmp212_;
5331 ValaCCodeIdentifier* _tmp213_;
5332 ValaCCodeFunctionCall* _tmp214_;
5333 ValaField* _tmp215_;
5334 gchar* _tmp216_ = NULL;
5336 ValaCCodeMemberAccess* _tmp218_;
5338 _tmp203_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp202_, NULL);
5339 _tmp204_ = _tmp203_;
5340 _tmp205_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp204_);
5341 _tmp206_ = _tmp205_;
5342 _tmp207_ = vala_ccode_identifier_new (_tmp206_);
5343 _tmp208_ = _tmp207_;
5344 _tmp209_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp208_);
5345 _tmp210_ = _tmp209_;
5346 _vala_ccode_node_unref0 (_tmp208_);
5347 _g_free0 (_tmp206_);
5348 _g_free0 (_tmp204_);
5351 _tmp212_ = vala_ccode_identifier_new ("klass");
5352 _tmp213_ = _tmp212_;
5353 vala_ccode_function_call_add_argument (_tmp211_, (ValaCCodeExpression*) _tmp213_);
5354 _vala_ccode_node_unref0 (_tmp213_);
5357 _tmp216_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp215_);
5358 _tmp217_ = _tmp216_;
5359 _tmp218_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp214_, _tmp217_, TRUE);
5360 _vala_ccode_node_unref0 (lhs);
5361 lhs = (ValaCCodeExpression*) _tmp218_;
5362 _g_free0 (_tmp217_);
5363 _vala_ccode_node_unref0 (ccall);
5365 ValaCCodeIdentifier* _tmp219_;
5366 ValaCCodeIdentifier* _tmp220_;
5367 ValaField* _tmp221_;
5368 gchar* _tmp222_ = NULL;
5370 ValaCCodeMemberAccess* _tmp224_;
5371 _tmp219_ = vala_ccode_identifier_new ("klass");
5372 _tmp220_ = _tmp219_;
5374 _tmp222_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp221_);
5375 _tmp223_ = _tmp222_;
5376 _tmp224_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp220_, _tmp223_, TRUE);
5377 _vala_ccode_node_unref0 (lhs);
5378 lhs = (ValaCCodeExpression*) _tmp224_;
5379 _g_free0 (_tmp223_);
5380 _vala_ccode_node_unref0 (_tmp220_);
5383 _tmp226_ = vala_variable_get_initializer ((ValaVariable*) _tmp225_);
5384 _tmp227_ = _tmp226_;
5385 if (_tmp227_ != NULL) {
5386 ValaCCodeBaseModuleEmitContext* _tmp228_;
5387 ValaField* _tmp229_;
5388 ValaExpression* _tmp230_;
5389 ValaExpression* _tmp231_;
5390 ValaField* _tmp232_;
5391 ValaExpression* _tmp233_;
5392 ValaExpression* _tmp234_;
5393 ValaCCodeExpression* _tmp235_ = NULL;
5394 ValaCCodeExpression* rhs;
5395 ValaCCodeFunction* _tmp236_;
5396 ValaCCodeFunction* _tmp237_;
5397 ValaCCodeExpression* _tmp238_;
5398 ValaCCodeExpression* _tmp239_;
5399 ValaArrayList* _tmp257_;
5400 ValaArrayList* _tmp258_;
5401 _tmp228_ = self->class_init_context;
5402 vala_ccode_base_module_push_context (self, _tmp228_);
5404 _tmp230_ = vala_variable_get_initializer ((ValaVariable*) _tmp229_);
5405 _tmp231_ = _tmp230_;
5406 vala_code_node_emit ((ValaCodeNode*) _tmp231_, (ValaCodeGenerator*) self);
5408 _tmp233_ = vala_variable_get_initializer ((ValaVariable*) _tmp232_);
5409 _tmp234_ = _tmp233_;
5410 _tmp235_ = vala_ccode_base_module_get_cvalue (self, _tmp234_);
5412 _tmp236_ = vala_ccode_base_module_get_ccode (self);
5413 _tmp237_ = _tmp236_;
5416 vala_ccode_function_add_assignment (_tmp237_, _tmp238_, _tmp239_);
5418 ValaArrayList* _tmp240_;
5419 ValaArrayList* _tmp241_;
5420 ValaArrayList* _tmp242_;
5421 ValaArrayList* _value_list;
5422 ValaArrayList* _tmp243_;
5427 _tmp240_ = vala_ccode_base_module_get_temp_ref_values (self);
5428 _tmp241_ = _tmp240_;
5429 _tmp242_ = _vala_iterable_ref0 (_tmp241_);
5430 _value_list = _tmp242_;
5431 _tmp243_ = _value_list;
5432 _tmp244_ = vala_collection_get_size ((ValaCollection*) _tmp243_);
5433 _tmp245_ = _tmp244_;
5434 _value_size = _tmp245_;
5440 ValaArrayList* _tmp249_;
5442 gpointer _tmp251_ = NULL;
5443 ValaTargetValue* value;
5444 ValaCCodeFunction* _tmp252_;
5445 ValaCCodeFunction* _tmp253_;
5446 ValaTargetValue* _tmp254_;
5447 ValaCCodeExpression* _tmp255_ = NULL;
5448 ValaCCodeExpression* _tmp256_;
5449 _tmp246_ = _value_index;
5450 _value_index = _tmp246_ + 1;
5451 _tmp247_ = _value_index;
5452 _tmp248_ = _value_size;
5453 if (!(_tmp247_ < _tmp248_)) {
5456 _tmp249_ = _value_list;
5457 _tmp250_ = _value_index;
5458 _tmp251_ = vala_list_get ((ValaList*) _tmp249_, _tmp250_);
5459 value = (ValaTargetValue*) _tmp251_;
5460 _tmp252_ = vala_ccode_base_module_get_ccode (self);
5461 _tmp253_ = _tmp252_;
5463 _tmp255_ = vala_ccode_base_module_destroy_value (self, _tmp254_, FALSE);
5464 _tmp256_ = _tmp255_;
5465 vala_ccode_function_add_expression (_tmp253_, _tmp256_);
5466 _vala_ccode_node_unref0 (_tmp256_);
5467 _vala_target_value_unref0 (value);
5469 _vala_iterable_unref0 (_value_list);
5471 _tmp257_ = vala_ccode_base_module_get_temp_ref_values (self);
5472 _tmp258_ = _tmp257_;
5473 vala_collection_clear ((ValaCollection*) _tmp258_);
5474 vala_ccode_base_module_pop_context (self);
5475 _vala_ccode_node_unref0 (rhs);
5478 ValaField* _tmp259_;
5479 ValaCCodeFile* _tmp260_;
5480 ValaField* _tmp261_;
5481 gboolean _tmp262_ = FALSE;
5482 ValaField* _tmp265_;
5483 gboolean _tmp266_ = FALSE;
5484 ValaField* _tmp269_;
5488 _tmp260_ = self->cfile;
5489 vala_ccode_base_module_generate_field_declaration (self, _tmp259_, _tmp260_);
5491 _tmp262_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp261_);
5493 ValaField* _tmp263_;
5494 ValaCCodeFile* _tmp264_;
5496 _tmp264_ = self->header_file;
5497 vala_ccode_base_module_generate_field_declaration (self, _tmp263_, _tmp264_);
5500 _tmp266_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp265_);
5502 ValaField* _tmp267_;
5503 ValaCCodeFile* _tmp268_;
5505 _tmp268_ = self->internal_header_file;
5506 vala_ccode_base_module_generate_field_declaration (self, _tmp267_, _tmp268_);
5509 _tmp270_ = vala_symbol_get_external ((ValaSymbol*) _tmp269_);
5510 _tmp271_ = _tmp270_;
5512 ValaField* _tmp272_;
5513 gchar* _tmp273_ = NULL;
5515 ValaCCodeIdentifier* _tmp275_;
5516 ValaField* _tmp276_;
5517 gchar* _tmp277_ = NULL;
5519 ValaField* _tmp279_;
5520 ValaDataType* _tmp280_;
5521 ValaDataType* _tmp281_;
5522 gchar* _tmp282_ = NULL;
5524 ValaCCodeVariableDeclarator* _tmp284_;
5525 ValaCCodeVariableDeclarator* _tmp285_;
5526 ValaCCodeVariableDeclarator* var_decl;
5527 ValaCCodeVariableDeclarator* _tmp286_;
5528 ValaField* _tmp287_;
5529 ValaDataType* _tmp288_;
5530 ValaDataType* _tmp289_;
5531 ValaCCodeExpression* _tmp290_ = NULL;
5532 ValaCCodeExpression* _tmp291_;
5533 ValaCCodeBaseModuleEmitContext* _tmp292_;
5534 ValaField* _tmp296_;
5535 ValaExpression* _tmp297_;
5536 ValaExpression* _tmp298_;
5537 const gchar* _tmp310_;
5538 ValaCCodeDeclaration* _tmp311_;
5539 ValaCCodeDeclaration* var_def;
5540 ValaCCodeDeclaration* _tmp312_;
5541 ValaCCodeVariableDeclarator* _tmp313_;
5542 ValaField* _tmp314_;
5543 gboolean _tmp315_ = FALSE;
5544 ValaCCodeFile* _tmp318_;
5545 ValaCCodeDeclaration* _tmp319_;
5546 gboolean _tmp320_ = FALSE;
5547 ValaField* _tmp321_;
5548 ValaDataType* _tmp322_;
5549 ValaDataType* _tmp323_;
5551 ValaField* _tmp439_;
5552 ValaExpression* _tmp440_;
5553 ValaExpression* _tmp441_;
5555 _tmp273_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp272_);
5556 _tmp274_ = _tmp273_;
5557 _tmp275_ = vala_ccode_identifier_new (_tmp274_);
5558 _vala_ccode_node_unref0 (lhs);
5559 lhs = (ValaCCodeExpression*) _tmp275_;
5560 _g_free0 (_tmp274_);
5562 _tmp277_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp276_);
5563 _tmp278_ = _tmp277_;
5565 _tmp280_ = vala_variable_get_variable_type ((ValaVariable*) _tmp279_);
5566 _tmp281_ = _tmp280_;
5567 _tmp282_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp281_);
5568 _tmp283_ = _tmp282_;
5569 _tmp284_ = vala_ccode_variable_declarator_new (_tmp278_, NULL, _tmp283_);
5570 _tmp285_ = _tmp284_;
5571 _g_free0 (_tmp283_);
5572 _g_free0 (_tmp278_);
5573 var_decl = _tmp285_;
5574 _tmp286_ = var_decl;
5576 _tmp288_ = vala_variable_get_variable_type ((ValaVariable*) _tmp287_);
5577 _tmp289_ = _tmp288_;
5578 _tmp290_ = vala_ccode_base_module_default_value_for_type (self, _tmp289_, TRUE);
5579 _tmp291_ = _tmp290_;
5580 vala_ccode_variable_declarator_set_initializer (_tmp286_, _tmp291_);
5581 _vala_ccode_node_unref0 (_tmp291_);
5582 _tmp292_ = self->class_init_context;
5583 if (_tmp292_ != NULL) {
5584 ValaCCodeBaseModuleEmitContext* _tmp293_;
5585 _tmp293_ = self->class_init_context;
5586 vala_ccode_base_module_push_context (self, _tmp293_);
5588 ValaCCodeBaseModuleEmitContext* _tmp294_;
5589 ValaCCodeBaseModuleEmitContext* _tmp295_;
5590 _tmp294_ = vala_ccode_base_module_emit_context_new (NULL);
5591 _tmp295_ = _tmp294_;
5592 vala_ccode_base_module_push_context (self, _tmp295_);
5593 _vala_ccode_base_module_emit_context_unref0 (_tmp295_);
5596 _tmp297_ = vala_variable_get_initializer ((ValaVariable*) _tmp296_);
5597 _tmp298_ = _tmp297_;
5598 if (_tmp298_ != NULL) {
5599 ValaField* _tmp299_;
5600 ValaExpression* _tmp300_;
5601 ValaExpression* _tmp301_;
5602 ValaField* _tmp302_;
5603 ValaExpression* _tmp303_;
5604 ValaExpression* _tmp304_;
5605 ValaCCodeExpression* _tmp305_ = NULL;
5606 ValaCCodeExpression* init;
5607 ValaCCodeExpression* _tmp306_;
5608 gboolean _tmp307_ = FALSE;
5610 _tmp300_ = vala_variable_get_initializer ((ValaVariable*) _tmp299_);
5611 _tmp301_ = _tmp300_;
5612 vala_code_node_emit ((ValaCodeNode*) _tmp301_, (ValaCodeGenerator*) self);
5614 _tmp303_ = vala_variable_get_initializer ((ValaVariable*) _tmp302_);
5615 _tmp304_ = _tmp303_;
5616 _tmp305_ = vala_ccode_base_module_get_cvalue (self, _tmp304_);
5619 _tmp307_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp306_);
5621 ValaCCodeVariableDeclarator* _tmp308_;
5622 ValaCCodeExpression* _tmp309_;
5623 _tmp308_ = var_decl;
5625 vala_ccode_variable_declarator_set_initializer (_tmp308_, _tmp309_);
5627 _vala_ccode_node_unref0 (init);
5629 _tmp310_ = field_ctype;
5630 _tmp311_ = vala_ccode_declaration_new (_tmp310_);
5633 _tmp313_ = var_decl;
5634 vala_ccode_declaration_add_declarator (_tmp312_, (ValaCCodeDeclarator*) _tmp313_);
5636 _tmp315_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp314_);
5638 ValaCCodeDeclaration* _tmp316_;
5640 vala_ccode_declaration_set_modifiers (_tmp316_, VALA_CCODE_MODIFIERS_EXTERN);
5642 ValaCCodeDeclaration* _tmp317_;
5644 vala_ccode_declaration_set_modifiers (_tmp317_, VALA_CCODE_MODIFIERS_STATIC);
5646 _tmp318_ = self->cfile;
5648 vala_ccode_file_add_type_member_declaration (_tmp318_, (ValaCCodeNode*) _tmp319_);
5650 _tmp322_ = vala_variable_get_variable_type ((ValaVariable*) _tmp321_);
5651 _tmp323_ = _tmp322_;
5652 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp323_, VALA_TYPE_ARRAY_TYPE)) {
5653 ValaField* _tmp324_;
5654 gboolean _tmp325_ = FALSE;
5656 _tmp325_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp324_);
5657 _tmp320_ = _tmp325_;
5661 _tmp326_ = _tmp320_;
5663 ValaField* _tmp327_;
5664 ValaDataType* _tmp328_;
5665 ValaDataType* _tmp329_;
5666 ValaArrayType* _tmp330_;
5667 ValaArrayType* array_type;
5668 ValaArrayType* _tmp331_;
5672 _tmp328_ = vala_variable_get_variable_type ((ValaVariable*) _tmp327_);
5673 _tmp329_ = _tmp328_;
5674 _tmp330_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp329_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
5675 array_type = _tmp330_;
5676 _tmp331_ = array_type;
5677 _tmp332_ = vala_array_type_get_fixed_length (_tmp331_);
5678 _tmp333_ = _tmp332_;
5680 gboolean _tmp365_ = FALSE;
5681 ValaArrayType* _tmp366_;
5694 ValaArrayType* _tmp338_;
5697 ValaDataType* _tmp341_;
5698 ValaDataType* _tmp342_ = NULL;
5699 ValaDataType* len_type;
5700 ValaDataType* _tmp343_;
5701 gchar* _tmp344_ = NULL;
5703 ValaCCodeDeclaration* _tmp346_;
5704 ValaCCodeDeclaration* _tmp347_;
5705 ValaCCodeDeclaration* len_def;
5706 ValaCCodeDeclaration* _tmp348_;
5707 ValaField* _tmp349_;
5708 gchar* _tmp350_ = NULL;
5711 gchar* _tmp353_ = NULL;
5713 ValaCCodeConstant* _tmp355_;
5714 ValaCCodeConstant* _tmp356_;
5715 ValaCCodeVariableDeclarator* _tmp357_;
5716 ValaCCodeVariableDeclarator* _tmp358_;
5717 ValaField* _tmp359_;
5718 gboolean _tmp360_ = FALSE;
5719 ValaCCodeFile* _tmp363_;
5720 ValaCCodeDeclaration* _tmp364_;
5721 _tmp335_ = _tmp334_;
5729 _tmp338_ = array_type;
5730 _tmp339_ = vala_array_type_get_rank (_tmp338_);
5731 _tmp340_ = _tmp339_;
5732 if (!(_tmp337_ <= _tmp340_)) {
5735 _tmp341_ = self->int_type;
5736 _tmp342_ = vala_data_type_copy (_tmp341_);
5737 len_type = _tmp342_;
5738 _tmp343_ = len_type;
5739 _tmp344_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp343_);
5740 _tmp345_ = _tmp344_;
5741 _tmp346_ = vala_ccode_declaration_new (_tmp345_);
5742 _tmp347_ = _tmp346_;
5743 _g_free0 (_tmp345_);
5747 _tmp350_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp349_);
5748 _tmp351_ = _tmp350_;
5750 _tmp353_ = vala_ccode_base_module_get_array_length_cname (self, _tmp351_, _tmp352_);
5751 _tmp354_ = _tmp353_;
5752 _tmp355_ = vala_ccode_constant_new ("0");
5753 _tmp356_ = _tmp355_;
5754 _tmp357_ = vala_ccode_variable_declarator_new (_tmp354_, (ValaCCodeExpression*) _tmp356_, NULL);
5755 _tmp358_ = _tmp357_;
5756 vala_ccode_declaration_add_declarator (_tmp348_, (ValaCCodeDeclarator*) _tmp358_);
5757 _vala_ccode_node_unref0 (_tmp358_);
5758 _vala_ccode_node_unref0 (_tmp356_);
5759 _g_free0 (_tmp354_);
5760 _g_free0 (_tmp351_);
5762 _tmp360_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp359_);
5764 ValaCCodeDeclaration* _tmp361_;
5766 vala_ccode_declaration_set_modifiers (_tmp361_, VALA_CCODE_MODIFIERS_EXTERN);
5768 ValaCCodeDeclaration* _tmp362_;
5770 vala_ccode_declaration_set_modifiers (_tmp362_, VALA_CCODE_MODIFIERS_STATIC);
5772 _tmp363_ = self->cfile;
5774 vala_ccode_file_add_type_member_declaration (_tmp363_, (ValaCCodeNode*) _tmp364_);
5775 _vala_ccode_node_unref0 (len_def);
5776 _vala_code_node_unref0 (len_type);
5780 _tmp366_ = array_type;
5781 _tmp367_ = vala_array_type_get_rank (_tmp366_);
5782 _tmp368_ = _tmp367_;
5783 if (_tmp368_ == 1) {
5784 ValaField* _tmp369_;
5785 gboolean _tmp370_ = FALSE;
5787 _tmp370_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp369_);
5788 _tmp365_ = _tmp370_;
5792 _tmp371_ = _tmp365_;
5794 ValaDataType* _tmp372_;
5795 ValaDataType* _tmp373_ = NULL;
5796 ValaDataType* len_type;
5797 ValaDataType* _tmp374_;
5798 gchar* _tmp375_ = NULL;
5800 ValaCCodeDeclaration* _tmp377_;
5801 ValaCCodeDeclaration* _tmp378_;
5802 ValaCCodeDeclaration* _cdecl_;
5803 ValaCCodeDeclaration* _tmp379_;
5804 ValaField* _tmp380_;
5805 gchar* _tmp381_ = NULL;
5807 gchar* _tmp383_ = NULL;
5809 ValaCCodeConstant* _tmp385_;
5810 ValaCCodeConstant* _tmp386_;
5811 ValaCCodeVariableDeclarator* _tmp387_;
5812 ValaCCodeVariableDeclarator* _tmp388_;
5813 ValaCCodeDeclaration* _tmp389_;
5814 ValaCCodeFile* _tmp390_;
5815 ValaCCodeDeclaration* _tmp391_;
5816 _tmp372_ = self->int_type;
5817 _tmp373_ = vala_data_type_copy (_tmp372_);
5818 len_type = _tmp373_;
5819 _tmp374_ = len_type;
5820 _tmp375_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp374_);
5821 _tmp376_ = _tmp375_;
5822 _tmp377_ = vala_ccode_declaration_new (_tmp376_);
5823 _tmp378_ = _tmp377_;
5824 _g_free0 (_tmp376_);
5828 _tmp381_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp380_);
5829 _tmp382_ = _tmp381_;
5830 _tmp383_ = vala_ccode_base_module_get_array_size_cname (self, _tmp382_);
5831 _tmp384_ = _tmp383_;
5832 _tmp385_ = vala_ccode_constant_new ("0");
5833 _tmp386_ = _tmp385_;
5834 _tmp387_ = vala_ccode_variable_declarator_new (_tmp384_, (ValaCCodeExpression*) _tmp386_, NULL);
5835 _tmp388_ = _tmp387_;
5836 vala_ccode_declaration_add_declarator (_tmp379_, (ValaCCodeDeclarator*) _tmp388_);
5837 _vala_ccode_node_unref0 (_tmp388_);
5838 _vala_ccode_node_unref0 (_tmp386_);
5839 _g_free0 (_tmp384_);
5840 _g_free0 (_tmp382_);
5842 vala_ccode_declaration_set_modifiers (_tmp389_, VALA_CCODE_MODIFIERS_STATIC);
5843 _tmp390_ = self->cfile;
5845 vala_ccode_file_add_type_member_declaration (_tmp390_, (ValaCCodeNode*) _tmp391_);
5846 _vala_ccode_node_unref0 (_cdecl_);
5847 _vala_code_node_unref0 (len_type);
5850 _vala_code_node_unref0 (array_type);
5852 ValaField* _tmp392_;
5853 ValaDataType* _tmp393_;
5854 ValaDataType* _tmp394_;
5856 _tmp393_ = vala_variable_get_variable_type ((ValaVariable*) _tmp392_);
5857 _tmp394_ = _tmp393_;
5858 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp394_, VALA_TYPE_DELEGATE_TYPE)) {
5859 ValaField* _tmp395_;
5860 ValaDataType* _tmp396_;
5861 ValaDataType* _tmp397_;
5862 ValaDelegateType* _tmp398_;
5863 ValaDelegateType* delegate_type;
5864 ValaDelegateType* _tmp399_;
5865 ValaDelegate* _tmp400_;
5866 ValaDelegate* _tmp401_;
5870 _tmp396_ = vala_variable_get_variable_type ((ValaVariable*) _tmp395_);
5871 _tmp397_ = _tmp396_;
5872 _tmp398_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp397_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
5873 delegate_type = _tmp398_;
5874 _tmp399_ = delegate_type;
5875 _tmp400_ = vala_delegate_type_get_delegate_symbol (_tmp399_);
5876 _tmp401_ = _tmp400_;
5877 _tmp402_ = vala_delegate_get_has_target (_tmp401_);
5878 _tmp403_ = _tmp402_;
5880 ValaCCodeDeclaration* _tmp404_;
5881 ValaCCodeDeclaration* target_def;
5882 ValaCCodeDeclaration* _tmp405_;
5883 ValaField* _tmp406_;
5884 gchar* _tmp407_ = NULL;
5886 ValaCCodeConstant* _tmp409_;
5887 ValaCCodeConstant* _tmp410_;
5888 ValaCCodeVariableDeclarator* _tmp411_;
5889 ValaCCodeVariableDeclarator* _tmp412_;
5890 ValaField* _tmp413_;
5891 gboolean _tmp414_ = FALSE;
5892 ValaCCodeFile* _tmp417_;
5893 ValaCCodeDeclaration* _tmp418_;
5894 ValaDelegateType* _tmp419_;
5897 _tmp404_ = vala_ccode_declaration_new ("gpointer");
5898 target_def = _tmp404_;
5899 _tmp405_ = target_def;
5901 _tmp407_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp406_);
5902 _tmp408_ = _tmp407_;
5903 _tmp409_ = vala_ccode_constant_new ("NULL");
5904 _tmp410_ = _tmp409_;
5905 _tmp411_ = vala_ccode_variable_declarator_new (_tmp408_, (ValaCCodeExpression*) _tmp410_, NULL);
5906 _tmp412_ = _tmp411_;
5907 vala_ccode_declaration_add_declarator (_tmp405_, (ValaCCodeDeclarator*) _tmp412_);
5908 _vala_ccode_node_unref0 (_tmp412_);
5909 _vala_ccode_node_unref0 (_tmp410_);
5910 _g_free0 (_tmp408_);
5912 _tmp414_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp413_);
5914 ValaCCodeDeclaration* _tmp415_;
5915 _tmp415_ = target_def;
5916 vala_ccode_declaration_set_modifiers (_tmp415_, VALA_CCODE_MODIFIERS_EXTERN);
5918 ValaCCodeDeclaration* _tmp416_;
5919 _tmp416_ = target_def;
5920 vala_ccode_declaration_set_modifiers (_tmp416_, VALA_CCODE_MODIFIERS_STATIC);
5922 _tmp417_ = self->cfile;
5923 _tmp418_ = target_def;
5924 vala_ccode_file_add_type_member_declaration (_tmp417_, (ValaCCodeNode*) _tmp418_);
5925 _tmp419_ = delegate_type;
5926 _tmp420_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp419_);
5927 _tmp421_ = _tmp420_;
5929 ValaCCodeDeclaration* _tmp422_;
5930 ValaCCodeDeclaration* target_destroy_notify_def;
5931 ValaCCodeDeclaration* _tmp423_;
5932 ValaField* _tmp424_;
5933 gchar* _tmp425_ = NULL;
5935 gchar* _tmp427_ = NULL;
5937 ValaCCodeConstant* _tmp429_;
5938 ValaCCodeConstant* _tmp430_;
5939 ValaCCodeVariableDeclarator* _tmp431_;
5940 ValaCCodeVariableDeclarator* _tmp432_;
5941 ValaField* _tmp433_;
5942 gboolean _tmp434_ = FALSE;
5943 ValaCCodeFile* _tmp437_;
5944 ValaCCodeDeclaration* _tmp438_;
5945 _tmp422_ = vala_ccode_declaration_new ("GDestroyNotify");
5946 target_destroy_notify_def = _tmp422_;
5947 _tmp423_ = target_destroy_notify_def;
5949 _tmp425_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp424_);
5950 _tmp426_ = _tmp425_;
5951 _tmp427_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp426_);
5952 _tmp428_ = _tmp427_;
5953 _tmp429_ = vala_ccode_constant_new ("NULL");
5954 _tmp430_ = _tmp429_;
5955 _tmp431_ = vala_ccode_variable_declarator_new (_tmp428_, (ValaCCodeExpression*) _tmp430_, NULL);
5956 _tmp432_ = _tmp431_;
5957 vala_ccode_declaration_add_declarator (_tmp423_, (ValaCCodeDeclarator*) _tmp432_);
5958 _vala_ccode_node_unref0 (_tmp432_);
5959 _vala_ccode_node_unref0 (_tmp430_);
5960 _g_free0 (_tmp428_);
5961 _g_free0 (_tmp426_);
5963 _tmp434_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp433_);
5965 ValaCCodeDeclaration* _tmp435_;
5966 _tmp435_ = target_destroy_notify_def;
5967 vala_ccode_declaration_set_modifiers (_tmp435_, VALA_CCODE_MODIFIERS_EXTERN);
5969 ValaCCodeDeclaration* _tmp436_;
5970 _tmp436_ = target_destroy_notify_def;
5971 vala_ccode_declaration_set_modifiers (_tmp436_, VALA_CCODE_MODIFIERS_STATIC);
5973 _tmp437_ = self->cfile;
5974 _tmp438_ = target_destroy_notify_def;
5975 vala_ccode_file_add_type_member_declaration (_tmp437_, (ValaCCodeNode*) _tmp438_);
5976 _vala_ccode_node_unref0 (target_destroy_notify_def);
5978 _vala_ccode_node_unref0 (target_def);
5980 _vala_code_node_unref0 (delegate_type);
5984 _tmp440_ = vala_variable_get_initializer ((ValaVariable*) _tmp439_);
5985 _tmp441_ = _tmp440_;
5986 if (_tmp441_ != NULL) {
5987 ValaField* _tmp442_;
5988 ValaExpression* _tmp443_;
5989 ValaExpression* _tmp444_;
5990 ValaCCodeExpression* _tmp445_ = NULL;
5991 ValaCCodeExpression* rhs;
5992 ValaCCodeExpression* _tmp446_;
5993 gboolean _tmp447_ = FALSE;
5995 _tmp443_ = vala_variable_get_initializer ((ValaVariable*) _tmp442_);
5996 _tmp444_ = _tmp443_;
5997 _tmp445_ = vala_ccode_base_module_get_cvalue (self, _tmp444_);
6000 _tmp447_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp446_);
6003 _tmp448_ = is_gtypeinstance;
6005 ValaField* _tmp449_;
6006 ValaExpression* _tmp450_;
6007 ValaExpression* _tmp451_;
6008 gboolean _tmp488_ = FALSE;
6009 ValaField* _tmp489_;
6010 ValaDataType* _tmp490_;
6011 ValaDataType* _tmp491_;
6014 _tmp450_ = vala_variable_get_initializer ((ValaVariable*) _tmp449_);
6015 _tmp451_ = _tmp450_;
6016 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp451_, VALA_TYPE_INITIALIZER_LIST)) {
6017 ValaCCodeFunction* _tmp452_;
6018 ValaCCodeFunction* _tmp453_;
6019 ValaField* _tmp454_;
6020 ValaDataType* _tmp455_;
6021 ValaDataType* _tmp456_;
6022 ValaLocalVariable* _tmp457_ = NULL;
6023 ValaLocalVariable* temp_decl;
6024 ValaLocalVariable* _tmp458_;
6025 const gchar* _tmp459_;
6026 const gchar* _tmp460_;
6027 ValaCCodeExpression* _tmp461_;
6028 ValaCCodeVariableDeclarator* _tmp462_;
6029 ValaCCodeVariableDeclarator* vardecl;
6030 ValaCCodeFunction* _tmp463_;
6031 ValaCCodeFunction* _tmp464_;
6032 ValaLocalVariable* _tmp465_;
6033 ValaDataType* _tmp466_;
6034 ValaDataType* _tmp467_;
6035 gchar* _tmp468_ = NULL;
6037 ValaCCodeVariableDeclarator* _tmp470_;
6038 ValaLocalVariable* _tmp471_;
6039 const gchar* _tmp472_;
6040 const gchar* _tmp473_;
6041 gchar* _tmp474_ = NULL;
6043 ValaCCodeExpression* _tmp476_ = NULL;
6044 ValaCCodeExpression* _tmp477_;
6045 ValaCCodeExpression* tmp;
6046 ValaCCodeFunction* _tmp478_;
6047 ValaCCodeFunction* _tmp479_;
6048 ValaCCodeExpression* _tmp480_;
6049 ValaCCodeExpression* _tmp481_;
6050 ValaCCodeFunction* _tmp482_;
6051 ValaCCodeFunction* _tmp483_;
6052 _tmp452_ = vala_ccode_base_module_get_ccode (self);
6053 _tmp453_ = _tmp452_;
6054 vala_ccode_function_open_block (_tmp453_);
6056 _tmp455_ = vala_variable_get_variable_type ((ValaVariable*) _tmp454_);
6057 _tmp456_ = _tmp455_;
6058 _tmp457_ = vala_ccode_base_module_get_temp_variable (self, _tmp456_, TRUE, NULL, TRUE);
6059 temp_decl = _tmp457_;
6060 _tmp458_ = temp_decl;
6061 _tmp459_ = vala_symbol_get_name ((ValaSymbol*) _tmp458_);
6062 _tmp460_ = _tmp459_;
6064 _tmp462_ = vala_ccode_variable_declarator_new_zero (_tmp460_, _tmp461_, NULL);
6066 _tmp463_ = vala_ccode_base_module_get_ccode (self);
6067 _tmp464_ = _tmp463_;
6068 _tmp465_ = temp_decl;
6069 _tmp466_ = vala_variable_get_variable_type ((ValaVariable*) _tmp465_);
6070 _tmp467_ = _tmp466_;
6071 _tmp468_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp467_);
6072 _tmp469_ = _tmp468_;
6074 vala_ccode_function_add_declaration (_tmp464_, _tmp469_, (ValaCCodeDeclarator*) _tmp470_, 0);
6075 _g_free0 (_tmp469_);
6076 _tmp471_ = temp_decl;
6077 _tmp472_ = vala_symbol_get_name ((ValaSymbol*) _tmp471_);
6078 _tmp473_ = _tmp472_;
6079 _tmp474_ = vala_ccode_base_module_get_variable_cname (self, _tmp473_);
6080 _tmp475_ = _tmp474_;
6081 _tmp476_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp475_);
6082 _tmp477_ = _tmp476_;
6083 _g_free0 (_tmp475_);
6085 _tmp478_ = vala_ccode_base_module_get_ccode (self);
6086 _tmp479_ = _tmp478_;
6089 vala_ccode_function_add_assignment (_tmp479_, _tmp480_, _tmp481_);
6090 _tmp482_ = vala_ccode_base_module_get_ccode (self);
6091 _tmp483_ = _tmp482_;
6092 vala_ccode_function_close (_tmp483_);
6093 _vala_ccode_node_unref0 (tmp);
6094 _vala_ccode_node_unref0 (vardecl);
6095 _vala_code_node_unref0 (temp_decl);
6097 ValaCCodeFunction* _tmp484_;
6098 ValaCCodeFunction* _tmp485_;
6099 ValaCCodeExpression* _tmp486_;
6100 ValaCCodeExpression* _tmp487_;
6101 _tmp484_ = vala_ccode_base_module_get_ccode (self);
6102 _tmp485_ = _tmp484_;
6105 vala_ccode_function_add_assignment (_tmp485_, _tmp486_, _tmp487_);
6108 _tmp490_ = vala_variable_get_variable_type ((ValaVariable*) _tmp489_);
6109 _tmp491_ = _tmp490_;
6110 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp491_, VALA_TYPE_ARRAY_TYPE)) {
6111 ValaField* _tmp492_;
6112 gboolean _tmp493_ = FALSE;
6114 _tmp493_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp492_);
6115 _tmp488_ = _tmp493_;
6119 _tmp494_ = _tmp488_;
6121 ValaField* _tmp495_;
6122 ValaDataType* _tmp496_;
6123 ValaDataType* _tmp497_;
6124 ValaArrayType* _tmp498_;
6125 ValaArrayType* array_type;
6126 ValaField* _tmp499_;
6127 ValaTargetValue* _tmp500_ = NULL;
6128 ValaTargetValue* field_value;
6129 ValaField* _tmp501_;
6130 ValaExpression* _tmp502_;
6131 ValaExpression* _tmp503_;
6132 ValaTargetValue* _tmp504_;
6133 ValaTargetValue* _tmp505_;
6134 ValaGLibValue* _tmp506_;
6135 ValaGLibValue* glib_value;
6136 ValaGLibValue* _tmp507_;
6139 _tmp496_ = vala_variable_get_variable_type ((ValaVariable*) _tmp495_);
6140 _tmp497_ = _tmp496_;
6141 _tmp498_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp497_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
6142 array_type = _tmp498_;
6144 _tmp500_ = vala_ccode_base_module_get_field_cvalue (self, _tmp499_, NULL);
6145 field_value = _tmp500_;
6147 _tmp502_ = vala_variable_get_initializer ((ValaVariable*) _tmp501_);
6148 _tmp503_ = _tmp502_;
6149 _tmp504_ = vala_expression_get_target_value (_tmp503_);
6150 _tmp505_ = _tmp504_;
6151 _tmp506_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp505_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
6152 glib_value = _tmp506_;
6153 _tmp507_ = glib_value;
6154 _tmp508_ = _tmp507_->array_length_cvalues;
6155 if (_tmp508_ != NULL) {
6165 ValaArrayType* _tmp513_;
6168 ValaTargetValue* _tmp516_;
6170 ValaCCodeExpression* _tmp518_ = NULL;
6171 ValaCCodeExpression* array_len_lhs;
6172 ValaCCodeFunction* _tmp519_;
6173 ValaCCodeFunction* _tmp520_;
6174 ValaCCodeExpression* _tmp521_;
6175 ValaGLibValue* _tmp522_;
6177 ValaCCodeExpression* _tmp524_ = NULL;
6178 ValaCCodeExpression* _tmp525_;
6179 _tmp510_ = _tmp509_;
6187 _tmp513_ = array_type;
6188 _tmp514_ = vala_array_type_get_rank (_tmp513_);
6189 _tmp515_ = _tmp514_;
6190 if (!(_tmp512_ <= _tmp515_)) {
6193 _tmp516_ = field_value;
6195 _tmp518_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp516_, _tmp517_);
6196 array_len_lhs = _tmp518_;
6197 _tmp519_ = vala_ccode_base_module_get_ccode (self);
6198 _tmp520_ = _tmp519_;
6199 _tmp521_ = array_len_lhs;
6200 _tmp522_ = glib_value;
6202 _tmp524_ = vala_ccode_base_module_get_array_length_cvalue (self, (ValaTargetValue*) _tmp522_, _tmp523_);
6203 _tmp525_ = _tmp524_;
6204 vala_ccode_function_add_assignment (_tmp520_, _tmp521_, _tmp525_);
6205 _vala_ccode_node_unref0 (_tmp525_);
6206 _vala_ccode_node_unref0 (array_len_lhs);
6211 ValaGLibValue* _tmp526_;
6213 _tmp526_ = glib_value;
6214 _tmp527_ = _tmp526_->array_null_terminated;
6216 ValaCCodeIdentifier* _tmp528_;
6217 ValaCCodeIdentifier* _tmp529_;
6218 ValaCCodeFunctionCall* _tmp530_;
6219 ValaCCodeFunctionCall* _tmp531_;
6220 ValaCCodeFunctionCall* len_call;
6221 ValaCCodeFunctionCall* _tmp532_;
6222 ValaGLibValue* _tmp533_;
6223 ValaCCodeExpression* _tmp534_ = NULL;
6224 ValaCCodeExpression* _tmp535_;
6225 ValaCCodeFunction* _tmp536_;
6226 ValaCCodeFunction* _tmp537_;
6227 ValaTargetValue* _tmp538_;
6228 ValaCCodeExpression* _tmp539_ = NULL;
6229 ValaCCodeExpression* _tmp540_;
6230 ValaCCodeFunctionCall* _tmp541_;
6231 self->requires_array_length = TRUE;
6232 _tmp528_ = vala_ccode_identifier_new ("_vala_array_length");
6233 _tmp529_ = _tmp528_;
6234 _tmp530_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp529_);
6235 _tmp531_ = _tmp530_;
6236 _vala_ccode_node_unref0 (_tmp529_);
6237 len_call = _tmp531_;
6238 _tmp532_ = len_call;
6239 _tmp533_ = glib_value;
6240 _tmp534_ = vala_ccode_base_module_get_cvalue_ (self, (ValaTargetValue*) _tmp533_);
6241 _tmp535_ = _tmp534_;
6242 vala_ccode_function_call_add_argument (_tmp532_, _tmp535_);
6243 _vala_ccode_node_unref0 (_tmp535_);
6244 _tmp536_ = vala_ccode_base_module_get_ccode (self);
6245 _tmp537_ = _tmp536_;
6246 _tmp538_ = field_value;
6247 _tmp539_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp538_, 1);
6248 _tmp540_ = _tmp539_;
6249 _tmp541_ = len_call;
6250 vala_ccode_function_add_assignment (_tmp537_, _tmp540_, (ValaCCodeExpression*) _tmp541_);
6251 _vala_ccode_node_unref0 (_tmp540_);
6252 _vala_ccode_node_unref0 (len_call);
6263 ValaArrayType* _tmp546_;
6266 ValaCCodeFunction* _tmp549_;
6267 ValaCCodeFunction* _tmp550_;
6268 ValaTargetValue* _tmp551_;
6270 ValaCCodeExpression* _tmp553_ = NULL;
6271 ValaCCodeExpression* _tmp554_;
6272 ValaCCodeConstant* _tmp555_;
6273 ValaCCodeConstant* _tmp556_;
6274 _tmp543_ = _tmp542_;
6282 _tmp546_ = array_type;
6283 _tmp547_ = vala_array_type_get_rank (_tmp546_);
6284 _tmp548_ = _tmp547_;
6285 if (!(_tmp545_ <= _tmp548_)) {
6288 _tmp549_ = vala_ccode_base_module_get_ccode (self);
6289 _tmp550_ = _tmp549_;
6290 _tmp551_ = field_value;
6292 _tmp553_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp551_, _tmp552_);
6293 _tmp554_ = _tmp553_;
6294 _tmp555_ = vala_ccode_constant_new ("-1");
6295 _tmp556_ = _tmp555_;
6296 vala_ccode_function_add_assignment (_tmp550_, _tmp554_, (ValaCCodeExpression*) _tmp556_);
6297 _vala_ccode_node_unref0 (_tmp556_);
6298 _vala_ccode_node_unref0 (_tmp554_);
6304 _vala_target_value_unref0 (glib_value);
6305 _vala_target_value_unref0 (field_value);
6306 _vala_code_node_unref0 (array_type);
6309 ValaField* _tmp557_;
6310 ValaField* _tmp558_;
6311 ValaSourceReference* _tmp559_;
6312 ValaSourceReference* _tmp560_;
6314 vala_code_node_set_error ((ValaCodeNode*) _tmp557_, TRUE);
6316 _tmp559_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp558_);
6317 _tmp560_ = _tmp559_;
6318 vala_report_error (_tmp560_, "Non-constant field initializers not supported in this context");
6319 _vala_ccode_node_unref0 (rhs);
6320 _vala_ccode_node_unref0 (var_def);
6321 _vala_ccode_node_unref0 (var_decl);
6322 _g_free0 (field_ctype);
6323 _vala_ccode_node_unref0 (lhs);
6324 _vala_code_node_unref0 (cl);
6328 _vala_ccode_node_unref0 (rhs);
6330 vala_ccode_base_module_pop_context (self);
6331 _vala_ccode_node_unref0 (var_def);
6332 _vala_ccode_node_unref0 (var_decl);
6336 vala_ccode_base_module_pop_line (self);
6337 _g_free0 (field_ctype);
6338 _vala_ccode_node_unref0 (lhs);
6339 _vala_code_node_unref0 (cl);
6343 gboolean vala_ccode_base_module_is_constant_ccode_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr) {
6344 gboolean result = FALSE;
6345 ValaCCodeExpression* _tmp0_;
6346 ValaCCodeExpression* _tmp21_;
6347 ValaCCodeParenthesizedExpression* _tmp22_;
6348 ValaCCodeParenthesizedExpression* cparenthesized;
6349 gboolean _tmp23_ = FALSE;
6350 ValaCCodeParenthesizedExpression* _tmp24_;
6352 g_return_val_if_fail (self != NULL, FALSE);
6353 g_return_val_if_fail (cexpr != NULL, FALSE);
6355 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CCODE_CONSTANT)) {
6359 ValaCCodeExpression* _tmp1_;
6361 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CCODE_CAST_EXPRESSION)) {
6362 ValaCCodeExpression* _tmp2_;
6363 ValaCCodeCastExpression* _tmp3_;
6364 ValaCCodeCastExpression* ccast;
6365 ValaCCodeCastExpression* _tmp4_;
6366 ValaCCodeExpression* _tmp5_;
6367 ValaCCodeExpression* _tmp6_;
6368 gboolean _tmp7_ = FALSE;
6370 _tmp3_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_CCODE_CAST_EXPRESSION, ValaCCodeCastExpression));
6373 _tmp5_ = vala_ccode_cast_expression_get_inner (_tmp4_);
6375 _tmp7_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp6_);
6377 _vala_ccode_node_unref0 (ccast);
6380 ValaCCodeExpression* _tmp8_;
6382 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_CCODE_BINARY_EXPRESSION)) {
6383 ValaCCodeExpression* _tmp9_;
6384 ValaCCodeBinaryExpression* _tmp10_;
6385 ValaCCodeBinaryExpression* cbinary;
6386 gboolean _tmp11_ = FALSE;
6387 ValaCCodeBinaryExpression* _tmp12_;
6388 ValaCCodeExpression* _tmp13_;
6389 ValaCCodeExpression* _tmp14_;
6390 gboolean _tmp15_ = FALSE;
6393 _tmp10_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, VALA_TYPE_CCODE_BINARY_EXPRESSION, ValaCCodeBinaryExpression));
6396 _tmp13_ = vala_ccode_binary_expression_get_left (_tmp12_);
6398 _tmp15_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp14_);
6400 ValaCCodeBinaryExpression* _tmp16_;
6401 ValaCCodeExpression* _tmp17_;
6402 ValaCCodeExpression* _tmp18_;
6403 gboolean _tmp19_ = FALSE;
6405 _tmp17_ = vala_ccode_binary_expression_get_right (_tmp16_);
6407 _tmp19_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp18_);
6414 _vala_ccode_node_unref0 (cbinary);
6420 _tmp22_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_CCODE_PARENTHESIZED_EXPRESSION) ? ((ValaCCodeParenthesizedExpression*) _tmp21_) : NULL);
6421 cparenthesized = _tmp22_;
6422 _tmp24_ = cparenthesized;
6423 if (NULL != _tmp24_) {
6424 ValaCCodeParenthesizedExpression* _tmp25_;
6425 ValaCCodeExpression* _tmp26_;
6426 ValaCCodeExpression* _tmp27_;
6427 gboolean _tmp28_ = FALSE;
6428 _tmp25_ = cparenthesized;
6429 _tmp26_ = vala_ccode_parenthesized_expression_get_inner (_tmp25_);
6431 _tmp28_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp27_);
6438 _vala_ccode_node_unref0 (cparenthesized);
6444 * Returns whether the passed cexpr is a pure expression, i.e. an
6445 * expression without side-effects.
6447 gboolean vala_ccode_base_module_is_pure_ccode_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr) {
6448 gboolean result = FALSE;
6449 gboolean _tmp0_ = FALSE;
6450 ValaCCodeExpression* _tmp1_;
6452 g_return_val_if_fail (self != NULL, FALSE);
6453 g_return_val_if_fail (cexpr != NULL, FALSE);
6455 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CCODE_CONSTANT)) {
6458 ValaCCodeExpression* _tmp2_;
6460 _tmp0_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_CCODE_IDENTIFIER);
6467 ValaCCodeExpression* _tmp4_;
6469 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_CCODE_BINARY_EXPRESSION)) {
6470 ValaCCodeExpression* _tmp5_;
6471 ValaCCodeBinaryExpression* _tmp6_;
6472 ValaCCodeBinaryExpression* cbinary;
6473 gboolean _tmp7_ = FALSE;
6474 ValaCCodeBinaryExpression* _tmp8_;
6475 ValaCCodeExpression* _tmp9_;
6476 ValaCCodeExpression* _tmp10_;
6477 gboolean _tmp11_ = FALSE;
6480 _tmp6_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, VALA_TYPE_CCODE_BINARY_EXPRESSION, ValaCCodeBinaryExpression));
6483 _tmp9_ = vala_ccode_binary_expression_get_left (_tmp8_);
6485 _tmp11_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp10_);
6487 ValaCCodeBinaryExpression* _tmp12_;
6488 ValaCCodeExpression* _tmp13_;
6489 ValaCCodeExpression* _tmp14_;
6490 gboolean _tmp15_ = FALSE;
6492 _tmp13_ = vala_ccode_binary_expression_get_right (_tmp12_);
6494 _tmp15_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp14_);
6501 _vala_ccode_node_unref0 (cbinary);
6504 ValaCCodeExpression* _tmp17_;
6506 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, VALA_TYPE_CCODE_UNARY_EXPRESSION)) {
6507 ValaCCodeExpression* _tmp18_;
6508 ValaCCodeUnaryExpression* _tmp19_;
6509 ValaCCodeUnaryExpression* cunary;
6510 ValaCCodeUnaryExpression* _tmp20_;
6511 ValaCCodeUnaryOperator _tmp21_;
6512 ValaCCodeUnaryOperator _tmp22_;
6514 _tmp19_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, VALA_TYPE_CCODE_UNARY_EXPRESSION, ValaCCodeUnaryExpression));
6517 _tmp21_ = vala_ccode_unary_expression_get_operator (_tmp20_);
6520 case VALA_CCODE_UNARY_OPERATOR_PREFIX_INCREMENT:
6521 case VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT:
6522 case VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT:
6523 case VALA_CCODE_UNARY_OPERATOR_POSTFIX_DECREMENT:
6526 _vala_ccode_node_unref0 (cunary);
6531 ValaCCodeUnaryExpression* _tmp23_;
6532 ValaCCodeExpression* _tmp24_;
6533 ValaCCodeExpression* _tmp25_;
6534 gboolean _tmp26_ = FALSE;
6536 _tmp24_ = vala_ccode_unary_expression_get_inner (_tmp23_);
6538 _tmp26_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp25_);
6540 _vala_ccode_node_unref0 (cunary);
6544 _vala_ccode_node_unref0 (cunary);
6546 ValaCCodeExpression* _tmp27_;
6548 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp27_, VALA_TYPE_CCODE_MEMBER_ACCESS)) {
6549 ValaCCodeExpression* _tmp28_;
6550 ValaCCodeMemberAccess* _tmp29_;
6551 ValaCCodeMemberAccess* cma;
6552 ValaCCodeMemberAccess* _tmp30_;
6553 ValaCCodeExpression* _tmp31_;
6554 ValaCCodeExpression* _tmp32_;
6555 gboolean _tmp33_ = FALSE;
6557 _tmp29_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp28_, VALA_TYPE_CCODE_MEMBER_ACCESS, ValaCCodeMemberAccess));
6560 _tmp31_ = vala_ccode_member_access_get_inner (_tmp30_);
6562 _tmp33_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp32_);
6564 _vala_ccode_node_unref0 (cma);
6567 ValaCCodeExpression* _tmp34_;
6569 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp34_, VALA_TYPE_CCODE_ELEMENT_ACCESS)) {
6570 ValaCCodeExpression* _tmp35_;
6571 ValaCCodeElementAccess* _tmp36_;
6572 ValaCCodeElementAccess* cea;
6573 gboolean _tmp37_ = FALSE;
6574 ValaCCodeElementAccess* _tmp38_;
6575 ValaCCodeExpression* _tmp39_;
6576 ValaCCodeExpression* _tmp40_;
6577 gboolean _tmp41_ = FALSE;
6580 _tmp36_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, VALA_TYPE_CCODE_ELEMENT_ACCESS, ValaCCodeElementAccess));
6583 _tmp39_ = vala_ccode_element_access_get_container (_tmp38_);
6585 _tmp41_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp40_);
6587 ValaCCodeElementAccess* _tmp42_;
6588 ValaCCodeExpression* _tmp43_;
6589 ValaCCodeExpression* _tmp44_;
6590 gboolean _tmp45_ = FALSE;
6592 _tmp43_ = vala_ccode_element_access_get_index (_tmp42_);
6594 _tmp45_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp44_);
6601 _vala_ccode_node_unref0 (cea);
6604 ValaCCodeExpression* _tmp47_;
6606 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp47_, VALA_TYPE_CCODE_CAST_EXPRESSION)) {
6607 ValaCCodeExpression* _tmp48_;
6608 ValaCCodeCastExpression* _tmp49_;
6609 ValaCCodeCastExpression* ccast;
6610 ValaCCodeCastExpression* _tmp50_;
6611 ValaCCodeExpression* _tmp51_;
6612 ValaCCodeExpression* _tmp52_;
6613 gboolean _tmp53_ = FALSE;
6615 _tmp49_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp48_, VALA_TYPE_CCODE_CAST_EXPRESSION, ValaCCodeCastExpression));
6618 _tmp51_ = vala_ccode_cast_expression_get_inner (_tmp50_);
6620 _tmp53_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp52_);
6622 _vala_ccode_node_unref0 (ccast);
6625 ValaCCodeExpression* _tmp54_;
6627 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp54_, VALA_TYPE_CCODE_PARENTHESIZED_EXPRESSION)) {
6628 ValaCCodeExpression* _tmp55_;
6629 ValaCCodeParenthesizedExpression* _tmp56_;
6630 ValaCCodeParenthesizedExpression* cparenthesized;
6631 ValaCCodeParenthesizedExpression* _tmp57_;
6632 ValaCCodeExpression* _tmp58_;
6633 ValaCCodeExpression* _tmp59_;
6634 gboolean _tmp60_ = FALSE;
6636 _tmp56_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp55_, VALA_TYPE_CCODE_PARENTHESIZED_EXPRESSION, ValaCCodeParenthesizedExpression));
6637 cparenthesized = _tmp56_;
6638 _tmp57_ = cparenthesized;
6639 _tmp58_ = vala_ccode_parenthesized_expression_get_inner (_tmp57_);
6641 _tmp60_ = vala_ccode_base_module_is_pure_ccode_expression (self, _tmp59_);
6643 _vala_ccode_node_unref0 (cparenthesized);
6657 static void vala_ccode_base_module_real_visit_formal_parameter (ValaCodeVisitor* base, ValaParameter* p) {
6658 ValaCCodeBaseModule * self;
6659 ValaParameter* _tmp0_;
6662 self = (ValaCCodeBaseModule*) base;
6663 g_return_if_fail (p != NULL);
6665 _tmp1_ = vala_parameter_get_ellipsis (_tmp0_);
6668 ValaParameter* _tmp3_;
6669 ValaDataType* _tmp4_;
6670 ValaDataType* _tmp5_;
6672 _tmp4_ = vala_variable_get_variable_type ((ValaVariable*) _tmp3_);
6674 vala_ccode_base_module_check_type (self, _tmp5_);
6679 static void vala_ccode_base_module_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop) {
6680 ValaCCodeBaseModule * self;
6681 ValaProperty* _tmp0_;
6682 ValaProperty* _tmp1_;
6683 ValaDataType* _tmp2_;
6684 ValaDataType* _tmp3_;
6685 ValaProperty* _tmp4_;
6686 ValaPropertyAccessor* _tmp5_;
6687 ValaPropertyAccessor* _tmp6_;
6688 ValaProperty* _tmp10_;
6689 ValaPropertyAccessor* _tmp11_;
6690 ValaPropertyAccessor* _tmp12_;
6691 self = (ValaCCodeBaseModule*) base;
6692 g_return_if_fail (prop != NULL);
6694 vala_ccode_base_module_visit_member (self, (ValaSymbol*) _tmp0_);
6696 _tmp2_ = vala_property_get_property_type (_tmp1_);
6698 vala_ccode_base_module_check_type (self, _tmp3_);
6700 _tmp5_ = vala_property_get_get_accessor (_tmp4_);
6702 if (_tmp6_ != NULL) {
6703 ValaProperty* _tmp7_;
6704 ValaPropertyAccessor* _tmp8_;
6705 ValaPropertyAccessor* _tmp9_;
6707 _tmp8_ = vala_property_get_get_accessor (_tmp7_);
6709 vala_code_node_accept ((ValaCodeNode*) _tmp9_, (ValaCodeVisitor*) self);
6712 _tmp11_ = vala_property_get_set_accessor (_tmp10_);
6714 if (_tmp12_ != NULL) {
6715 ValaProperty* _tmp13_;
6716 ValaPropertyAccessor* _tmp14_;
6717 ValaPropertyAccessor* _tmp15_;
6719 _tmp14_ = vala_property_get_set_accessor (_tmp13_);
6721 vala_code_node_accept ((ValaCodeNode*) _tmp15_, (ValaCodeVisitor*) self);
6726 void vala_ccode_base_module_generate_type_declaration (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeFile* decl_space) {
6727 ValaDataType* _tmp0_;
6728 g_return_if_fail (self != NULL);
6729 g_return_if_fail (type != NULL);
6730 g_return_if_fail (decl_space != NULL);
6732 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_OBJECT_TYPE)) {
6733 ValaDataType* _tmp1_;
6734 ValaObjectType* _tmp2_;
6735 ValaObjectType* object_type;
6736 ValaObjectType* _tmp3_;
6737 ValaObjectTypeSymbol* _tmp4_;
6738 ValaObjectTypeSymbol* _tmp5_;
6740 _tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_OBJECT_TYPE, ValaObjectType));
6741 object_type = _tmp2_;
6742 _tmp3_ = object_type;
6743 _tmp4_ = vala_object_type_get_type_symbol (_tmp3_);
6745 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_CLASS)) {
6746 ValaObjectType* _tmp6_;
6747 ValaObjectTypeSymbol* _tmp7_;
6748 ValaObjectTypeSymbol* _tmp8_;
6749 ValaCCodeFile* _tmp9_;
6750 _tmp6_ = object_type;
6751 _tmp7_ = vala_object_type_get_type_symbol (_tmp6_);
6753 _tmp9_ = decl_space;
6754 vala_ccode_base_module_generate_class_declaration (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_CLASS, ValaClass), _tmp9_);
6756 ValaObjectType* _tmp10_;
6757 ValaObjectTypeSymbol* _tmp11_;
6758 ValaObjectTypeSymbol* _tmp12_;
6759 _tmp10_ = object_type;
6760 _tmp11_ = vala_object_type_get_type_symbol (_tmp10_);
6762 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, VALA_TYPE_INTERFACE)) {
6763 ValaObjectType* _tmp13_;
6764 ValaObjectTypeSymbol* _tmp14_;
6765 ValaObjectTypeSymbol* _tmp15_;
6766 ValaCCodeFile* _tmp16_;
6767 _tmp13_ = object_type;
6768 _tmp14_ = vala_object_type_get_type_symbol (_tmp13_);
6770 _tmp16_ = decl_space;
6771 vala_ccode_base_module_generate_interface_declaration (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, VALA_TYPE_INTERFACE, ValaInterface), _tmp16_);
6774 _vala_code_node_unref0 (object_type);
6776 ValaDataType* _tmp17_;
6778 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, VALA_TYPE_DELEGATE_TYPE)) {
6779 ValaDataType* _tmp18_;
6780 ValaDelegateType* _tmp19_;
6781 ValaDelegateType* deleg_type;
6782 ValaDelegateType* _tmp20_;
6783 ValaDelegate* _tmp21_;
6784 ValaDelegate* _tmp22_;
6785 ValaDelegate* _tmp23_;
6787 ValaDelegate* _tmp24_;
6788 ValaCCodeFile* _tmp25_;
6790 _tmp19_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
6791 deleg_type = _tmp19_;
6792 _tmp20_ = deleg_type;
6793 _tmp21_ = vala_delegate_type_get_delegate_symbol (_tmp20_);
6795 _tmp23_ = _vala_code_node_ref0 (_tmp22_);
6798 _tmp25_ = decl_space;
6799 vala_ccode_base_module_generate_delegate_declaration (self, _tmp24_, _tmp25_);
6800 _vala_code_node_unref0 (d);
6801 _vala_code_node_unref0 (deleg_type);
6803 ValaDataType* _tmp26_;
6804 ValaTypeSymbol* _tmp27_;
6805 ValaTypeSymbol* _tmp28_;
6807 _tmp27_ = vala_data_type_get_data_type (_tmp26_);
6809 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp28_, VALA_TYPE_ENUM)) {
6810 ValaDataType* _tmp29_;
6811 ValaTypeSymbol* _tmp30_;
6812 ValaTypeSymbol* _tmp31_;
6816 ValaCCodeFile* _tmp34_;
6818 _tmp30_ = vala_data_type_get_data_type (_tmp29_);
6820 _tmp32_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, VALA_TYPE_ENUM, ValaEnum));
6823 _tmp34_ = decl_space;
6824 vala_ccode_base_module_generate_enum_declaration (self, _tmp33_, _tmp34_);
6825 _vala_code_node_unref0 (en);
6827 ValaDataType* _tmp35_;
6829 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_VALUE_TYPE)) {
6830 ValaDataType* _tmp36_;
6831 ValaValueType* _tmp37_;
6832 ValaValueType* value_type;
6833 ValaValueType* _tmp38_;
6834 ValaTypeSymbol* _tmp39_;
6835 ValaTypeSymbol* _tmp40_;
6836 ValaCCodeFile* _tmp41_;
6838 _tmp37_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, VALA_TYPE_VALUE_TYPE, ValaValueType));
6839 value_type = _tmp37_;
6840 _tmp38_ = value_type;
6841 _tmp39_ = vala_value_type_get_type_symbol (_tmp38_);
6843 _tmp41_ = decl_space;
6844 vala_ccode_base_module_generate_struct_declaration (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, VALA_TYPE_STRUCT, ValaStruct), _tmp41_);
6845 _vala_code_node_unref0 (value_type);
6847 ValaDataType* _tmp42_;
6849 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp42_, VALA_TYPE_ARRAY_TYPE)) {
6850 ValaDataType* _tmp43_;
6851 ValaArrayType* _tmp44_;
6852 ValaArrayType* array_type;
6853 ValaArrayType* _tmp45_;
6854 ValaDataType* _tmp46_;
6855 ValaDataType* _tmp47_;
6856 ValaCCodeFile* _tmp48_;
6858 _tmp44_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp43_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
6859 array_type = _tmp44_;
6860 _tmp45_ = array_type;
6861 _tmp46_ = vala_array_type_get_element_type (_tmp45_);
6863 _tmp48_ = decl_space;
6864 vala_ccode_base_module_generate_type_declaration (self, _tmp47_, _tmp48_);
6865 _vala_code_node_unref0 (array_type);
6867 ValaDataType* _tmp49_;
6869 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp49_, VALA_TYPE_ERROR_TYPE)) {
6870 ValaDataType* _tmp50_;
6871 ValaErrorType* _tmp51_;
6872 ValaErrorType* error_type;
6873 ValaErrorType* _tmp52_;
6874 ValaErrorDomain* _tmp53_;
6875 ValaErrorDomain* _tmp54_;
6877 _tmp51_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, VALA_TYPE_ERROR_TYPE, ValaErrorType));
6878 error_type = _tmp51_;
6879 _tmp52_ = error_type;
6880 _tmp53_ = vala_error_type_get_error_domain (_tmp52_);
6882 if (_tmp54_ != NULL) {
6883 ValaErrorType* _tmp55_;
6884 ValaErrorDomain* _tmp56_;
6885 ValaErrorDomain* _tmp57_;
6886 ValaCCodeFile* _tmp58_;
6887 _tmp55_ = error_type;
6888 _tmp56_ = vala_error_type_get_error_domain (_tmp55_);
6890 _tmp58_ = decl_space;
6891 vala_ccode_base_module_generate_error_domain_declaration (self, _tmp57_, _tmp58_);
6893 _vala_code_node_unref0 (error_type);
6895 ValaDataType* _tmp59_;
6897 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp59_, VALA_TYPE_POINTER_TYPE)) {
6898 ValaDataType* _tmp60_;
6899 ValaPointerType* _tmp61_;
6900 ValaPointerType* pointer_type;
6901 ValaPointerType* _tmp62_;
6902 ValaDataType* _tmp63_;
6903 ValaDataType* _tmp64_;
6904 ValaCCodeFile* _tmp65_;
6906 _tmp61_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp60_, VALA_TYPE_POINTER_TYPE, ValaPointerType));
6907 pointer_type = _tmp61_;
6908 _tmp62_ = pointer_type;
6909 _tmp63_ = vala_pointer_type_get_base_type (_tmp62_);
6911 _tmp65_ = decl_space;
6912 vala_ccode_base_module_generate_type_declaration (self, _tmp64_, _tmp65_);
6913 _vala_code_node_unref0 (pointer_type);
6922 ValaDataType* _tmp66_;
6923 ValaList* _tmp67_ = NULL;
6924 ValaList* _type_arg_list;
6928 gint _type_arg_size;
6929 gint _type_arg_index;
6931 _tmp67_ = vala_data_type_get_type_arguments (_tmp66_);
6932 _type_arg_list = _tmp67_;
6933 _tmp68_ = _type_arg_list;
6934 _tmp69_ = vala_collection_get_size ((ValaCollection*) _tmp68_);
6936 _type_arg_size = _tmp70_;
6937 _type_arg_index = -1;
6944 gpointer _tmp76_ = NULL;
6945 ValaDataType* type_arg;
6946 ValaDataType* _tmp77_;
6947 ValaCCodeFile* _tmp78_;
6948 _tmp71_ = _type_arg_index;
6949 _type_arg_index = _tmp71_ + 1;
6950 _tmp72_ = _type_arg_index;
6951 _tmp73_ = _type_arg_size;
6952 if (!(_tmp72_ < _tmp73_)) {
6955 _tmp74_ = _type_arg_list;
6956 _tmp75_ = _type_arg_index;
6957 _tmp76_ = vala_list_get (_tmp74_, _tmp75_);
6958 type_arg = (ValaDataType*) _tmp76_;
6960 _tmp78_ = decl_space;
6961 vala_ccode_base_module_generate_type_declaration (self, _tmp77_, _tmp78_);
6962 _vala_code_node_unref0 (type_arg);
6964 _vala_iterable_unref0 (_type_arg_list);
6969 static void vala_ccode_base_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space) {
6970 g_return_if_fail (cl != NULL);
6971 g_return_if_fail (decl_space != NULL);
6975 void vala_ccode_base_module_generate_class_struct_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space) {
6976 g_return_if_fail (self != NULL);
6977 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_class_struct_declaration (self, cl, decl_space);
6981 static void vala_ccode_base_module_real_generate_struct_declaration (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space) {
6982 g_return_if_fail (st != NULL);
6983 g_return_if_fail (decl_space != NULL);
6987 void vala_ccode_base_module_generate_struct_declaration (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space) {
6988 g_return_if_fail (self != NULL);
6989 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_struct_declaration (self, st, decl_space);
6993 static void vala_ccode_base_module_real_generate_delegate_declaration (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space) {
6994 g_return_if_fail (d != NULL);
6995 g_return_if_fail (decl_space != NULL);
6999 void vala_ccode_base_module_generate_delegate_declaration (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space) {
7000 g_return_if_fail (self != NULL);
7001 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_delegate_declaration (self, d, decl_space);
7005 static void vala_ccode_base_module_real_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction) {
7006 g_return_if_fail (m != NULL);
7007 g_return_if_fail (decl_space != NULL);
7008 g_return_if_fail (cparam_map != NULL);
7009 g_return_if_fail (func != NULL);
7013 void vala_ccode_base_module_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction) {
7014 g_return_if_fail (self != NULL);
7015 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_cparameters (self, m, decl_space, cparam_map, func, vdeclarator, carg_map, vcall, direction);
7019 void vala_ccode_base_module_generate_property_accessor_declaration (ValaCCodeBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space) {
7020 ValaCCodeFile* _tmp0_;
7021 ValaPropertyAccessor* _tmp1_;
7022 ValaPropertyAccessor* _tmp2_;
7023 gchar* _tmp3_ = NULL;
7025 gboolean _tmp5_ = FALSE;
7027 ValaPropertyAccessor* _tmp7_;
7028 ValaProperty* _tmp8_;
7029 ValaProperty* _tmp9_;
7030 ValaProperty* _tmp10_;
7032 gboolean _tmp11_ = FALSE;
7033 ValaPropertyAccessor* _tmp12_;
7037 gboolean returns_real_struct;
7038 ValaCCodeParameter* cvalueparam = NULL;
7040 ValaPropertyAccessor* _tmp52_;
7041 ValaDataType* _tmp53_;
7042 ValaDataType* _tmp54_;
7043 ValaCCodeFile* _tmp55_;
7044 ValaCCodeFunction* function = NULL;
7045 gboolean _tmp56_ = FALSE;
7046 ValaPropertyAccessor* _tmp57_;
7050 ValaProperty* _tmp75_;
7051 ValaMemberBinding _tmp76_;
7052 ValaMemberBinding _tmp77_;
7053 gboolean _tmp104_ = FALSE;
7054 gboolean _tmp105_ = FALSE;
7055 ValaPropertyAccessor* _tmp106_;
7060 ValaPropertyAccessor* _tmp117_;
7061 ValaDataType* _tmp118_;
7062 ValaDataType* _tmp119_;
7063 gboolean _tmp190_ = FALSE;
7064 gboolean _tmp191_ = FALSE;
7065 ValaProperty* _tmp192_;
7066 gboolean _tmp193_ = FALSE;
7069 ValaCCodeFile* _tmp211_;
7070 ValaCCodeFunction* _tmp212_;
7071 g_return_if_fail (self != NULL);
7072 g_return_if_fail (acc != NULL);
7073 g_return_if_fail (decl_space != NULL);
7074 _tmp0_ = decl_space;
7077 _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
7079 _tmp5_ = vala_ccode_base_module_add_symbol_declaration (self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_);
7086 _tmp8_ = vala_property_accessor_get_prop (_tmp7_);
7088 _tmp10_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, VALA_TYPE_PROPERTY, ValaProperty));
7091 _tmp13_ = vala_property_accessor_get_readable (_tmp12_);
7094 ValaProperty* _tmp15_;
7095 ValaDataType* _tmp16_;
7096 ValaDataType* _tmp17_;
7097 gboolean _tmp18_ = FALSE;
7099 _tmp16_ = vala_property_get_property_type (_tmp15_);
7101 _tmp18_ = vala_data_type_is_real_non_null_struct_type (_tmp17_);
7107 returns_real_struct = _tmp19_;
7108 _tmp20_ = returns_real_struct;
7110 ValaPropertyAccessor* _tmp21_;
7111 ValaDataType* _tmp22_;
7112 ValaDataType* _tmp23_;
7113 gchar* _tmp24_ = NULL;
7117 ValaCCodeParameter* _tmp28_;
7119 _tmp22_ = vala_property_accessor_get_value_type (_tmp21_);
7121 _tmp24_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp23_);
7123 _tmp26_ = g_strconcat (_tmp25_, "*", NULL);
7125 _tmp28_ = vala_ccode_parameter_new ("result", _tmp27_);
7126 _vala_ccode_node_unref0 (cvalueparam);
7127 cvalueparam = _tmp28_;
7131 gboolean _tmp29_ = FALSE;
7132 ValaPropertyAccessor* _tmp30_;
7137 _tmp31_ = vala_property_accessor_get_readable (_tmp30_);
7140 ValaProperty* _tmp33_;
7141 ValaDataType* _tmp34_;
7142 ValaDataType* _tmp35_;
7143 gboolean _tmp36_ = FALSE;
7145 _tmp34_ = vala_property_get_property_type (_tmp33_);
7147 _tmp36_ = vala_data_type_is_real_non_null_struct_type (_tmp35_);
7154 ValaPropertyAccessor* _tmp38_;
7155 ValaDataType* _tmp39_;
7156 ValaDataType* _tmp40_;
7157 gchar* _tmp41_ = NULL;
7161 ValaCCodeParameter* _tmp45_;
7163 _tmp39_ = vala_property_accessor_get_value_type (_tmp38_);
7165 _tmp41_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp40_);
7167 _tmp43_ = g_strconcat (_tmp42_, "*", NULL);
7169 _tmp45_ = vala_ccode_parameter_new ("value", _tmp44_);
7170 _vala_ccode_node_unref0 (cvalueparam);
7171 cvalueparam = _tmp45_;
7175 ValaPropertyAccessor* _tmp46_;
7176 ValaDataType* _tmp47_;
7177 ValaDataType* _tmp48_;
7178 gchar* _tmp49_ = NULL;
7180 ValaCCodeParameter* _tmp51_;
7182 _tmp47_ = vala_property_accessor_get_value_type (_tmp46_);
7184 _tmp49_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp48_);
7186 _tmp51_ = vala_ccode_parameter_new ("value", _tmp50_);
7187 _vala_ccode_node_unref0 (cvalueparam);
7188 cvalueparam = _tmp51_;
7193 _tmp53_ = vala_property_accessor_get_value_type (_tmp52_);
7195 _tmp55_ = decl_space;
7196 vala_ccode_base_module_generate_type_declaration (self, _tmp54_, _tmp55_);
7198 _tmp58_ = vala_property_accessor_get_readable (_tmp57_);
7202 _tmp60_ = returns_real_struct;
7209 ValaPropertyAccessor* _tmp62_;
7210 gchar* _tmp63_ = NULL;
7212 ValaPropertyAccessor* _tmp65_;
7213 ValaDataType* _tmp66_;
7214 ValaDataType* _tmp67_;
7215 gchar* _tmp68_ = NULL;
7217 ValaCCodeFunction* _tmp70_;
7219 _tmp63_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp62_);
7222 _tmp66_ = vala_property_accessor_get_value_type (_tmp65_);
7224 _tmp68_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp67_);
7226 _tmp70_ = vala_ccode_function_new (_tmp64_, _tmp69_);
7227 _vala_ccode_node_unref0 (function);
7232 ValaPropertyAccessor* _tmp71_;
7233 gchar* _tmp72_ = NULL;
7235 ValaCCodeFunction* _tmp74_;
7237 _tmp72_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp71_);
7239 _tmp74_ = vala_ccode_function_new (_tmp73_, "void");
7240 _vala_ccode_node_unref0 (function);
7245 _tmp76_ = vala_property_get_binding (_tmp75_);
7247 if (_tmp77_ == VALA_MEMBER_BINDING_INSTANCE) {
7248 ValaProperty* _tmp78_;
7249 ValaSymbol* _tmp79_;
7250 ValaSymbol* _tmp80_;
7251 ValaTypeSymbol* _tmp81_;
7253 ValaTypeSymbol* _tmp82_;
7254 ValaDataType* _tmp83_ = NULL;
7255 ValaDataType* this_type;
7256 ValaDataType* _tmp84_;
7257 ValaCCodeFile* _tmp85_;
7258 ValaDataType* _tmp86_;
7259 gchar* _tmp87_ = NULL;
7261 ValaCCodeParameter* _tmp89_;
7262 ValaCCodeParameter* _tmp90_;
7263 ValaCCodeParameter* cselfparam;
7264 gboolean _tmp91_ = FALSE;
7265 ValaTypeSymbol* _tmp92_;
7267 ValaCCodeFunction* _tmp102_;
7268 ValaCCodeParameter* _tmp103_;
7270 _tmp79_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp78_);
7272 _tmp81_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp80_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
7275 _tmp83_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp82_);
7276 this_type = _tmp83_;
7277 _tmp84_ = this_type;
7278 _tmp85_ = decl_space;
7279 vala_ccode_base_module_generate_type_declaration (self, _tmp84_, _tmp85_);
7280 _tmp86_ = this_type;
7281 _tmp87_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp86_);
7283 _tmp89_ = vala_ccode_parameter_new ("self", _tmp88_);
7286 cselfparam = _tmp90_;
7288 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp92_, VALA_TYPE_STRUCT)) {
7289 ValaTypeSymbol* _tmp93_;
7290 gboolean _tmp94_ = FALSE;
7292 _tmp94_ = vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp93_, VALA_TYPE_STRUCT, ValaStruct));
7299 ValaCCodeParameter* _tmp96_;
7300 ValaCCodeParameter* _tmp97_;
7301 const gchar* _tmp98_;
7302 const gchar* _tmp99_;
7305 _tmp96_ = cselfparam;
7306 _tmp97_ = cselfparam;
7307 _tmp98_ = vala_ccode_parameter_get_type_name (_tmp97_);
7309 _tmp100_ = g_strconcat (_tmp99_, "*", NULL);
7310 _tmp101_ = _tmp100_;
7311 vala_ccode_parameter_set_type_name (_tmp97_, _tmp101_);
7312 _g_free0 (_tmp101_);
7314 _tmp102_ = function;
7315 _tmp103_ = cselfparam;
7316 vala_ccode_function_add_parameter (_tmp102_, _tmp103_);
7317 _vala_ccode_node_unref0 (cselfparam);
7318 _vala_code_node_unref0 (this_type);
7319 _vala_code_node_unref0 (t);
7322 _tmp107_ = vala_property_accessor_get_writable (_tmp106_);
7323 _tmp108_ = _tmp107_;
7327 ValaPropertyAccessor* _tmp109_;
7331 _tmp110_ = vala_property_accessor_get_construction (_tmp109_);
7332 _tmp111_ = _tmp110_;
7333 _tmp105_ = _tmp111_;
7335 _tmp112_ = _tmp105_;
7340 _tmp113_ = returns_real_struct;
7341 _tmp104_ = _tmp113_;
7343 _tmp114_ = _tmp104_;
7345 ValaCCodeFunction* _tmp115_;
7346 ValaCCodeParameter* _tmp116_;
7347 _tmp115_ = function;
7348 _tmp116_ = cvalueparam;
7349 vala_ccode_function_add_parameter (_tmp115_, _tmp116_);
7352 _tmp118_ = vala_property_accessor_get_value_type (_tmp117_);
7353 _tmp119_ = _tmp118_;
7354 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp119_, VALA_TYPE_ARRAY_TYPE)) {
7355 ValaPropertyAccessor* _tmp120_;
7356 ValaDataType* _tmp121_;
7357 ValaDataType* _tmp122_;
7358 ValaArrayType* _tmp123_;
7359 ValaArrayType* array_type;
7361 gchar* length_ctype;
7362 ValaPropertyAccessor* _tmp125_;
7366 _tmp121_ = vala_property_accessor_get_value_type (_tmp120_);
7367 _tmp122_ = _tmp121_;
7368 _tmp123_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp122_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
7369 array_type = _tmp123_;
7370 _tmp124_ = g_strdup ("int");
7371 length_ctype = _tmp124_;
7373 _tmp126_ = vala_property_accessor_get_readable (_tmp125_);
7374 _tmp127_ = _tmp126_;
7377 _tmp128_ = g_strdup ("int*");
7378 _g_free0 (length_ctype);
7379 length_ctype = _tmp128_;
7390 ValaArrayType* _tmp133_;
7393 const gchar* _tmp136_ = NULL;
7394 ValaPropertyAccessor* _tmp137_;
7397 ValaCCodeFunction* _tmp140_;
7398 const gchar* _tmp141_;
7400 gchar* _tmp143_ = NULL;
7402 const gchar* _tmp145_;
7403 ValaCCodeParameter* _tmp146_;
7404 ValaCCodeParameter* _tmp147_;
7405 _tmp130_ = _tmp129_;
7413 _tmp133_ = array_type;
7414 _tmp134_ = vala_array_type_get_rank (_tmp133_);
7415 _tmp135_ = _tmp134_;
7416 if (!(_tmp132_ <= _tmp135_)) {
7420 _tmp138_ = vala_property_accessor_get_readable (_tmp137_);
7421 _tmp139_ = _tmp138_;
7423 _tmp136_ = "result";
7427 _tmp140_ = function;
7428 _tmp141_ = _tmp136_;
7430 _tmp143_ = vala_ccode_base_module_get_array_length_cname (self, _tmp141_, _tmp142_);
7431 _tmp144_ = _tmp143_;
7432 _tmp145_ = length_ctype;
7433 _tmp146_ = vala_ccode_parameter_new (_tmp144_, _tmp145_);
7434 _tmp147_ = _tmp146_;
7435 vala_ccode_function_add_parameter (_tmp140_, _tmp147_);
7436 _vala_ccode_node_unref0 (_tmp147_);
7437 _g_free0 (_tmp144_);
7441 _g_free0 (length_ctype);
7442 _vala_code_node_unref0 (array_type);
7444 gboolean _tmp148_ = FALSE;
7445 ValaPropertyAccessor* _tmp149_;
7446 ValaDataType* _tmp150_;
7447 ValaDataType* _tmp151_;
7450 _tmp150_ = vala_property_accessor_get_value_type (_tmp149_);
7451 _tmp151_ = _tmp150_;
7452 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp151_, VALA_TYPE_DELEGATE_TYPE)) {
7453 ValaPropertyAccessor* _tmp152_;
7454 ValaDataType* _tmp153_;
7455 ValaDataType* _tmp154_;
7456 ValaDelegate* _tmp155_;
7457 ValaDelegate* _tmp156_;
7461 _tmp153_ = vala_property_accessor_get_value_type (_tmp152_);
7462 _tmp154_ = _tmp153_;
7463 _tmp155_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp154_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
7464 _tmp156_ = _tmp155_;
7465 _tmp157_ = vala_delegate_get_has_target (_tmp156_);
7466 _tmp158_ = _tmp157_;
7467 _tmp148_ = _tmp158_;
7471 _tmp159_ = _tmp148_;
7473 const gchar* _tmp160_ = NULL;
7474 ValaPropertyAccessor* _tmp161_;
7477 const gchar* _tmp164_ = NULL;
7478 ValaPropertyAccessor* _tmp165_;
7481 ValaCCodeFunction* _tmp168_;
7482 const gchar* _tmp169_;
7483 gchar* _tmp170_ = NULL;
7485 const gchar* _tmp172_;
7486 ValaCCodeParameter* _tmp173_;
7487 ValaCCodeParameter* _tmp174_;
7488 gboolean _tmp175_ = FALSE;
7489 ValaPropertyAccessor* _tmp176_;
7494 _tmp162_ = vala_property_accessor_get_readable (_tmp161_);
7495 _tmp163_ = _tmp162_;
7497 _tmp160_ = "result";
7502 _tmp166_ = vala_property_accessor_get_readable (_tmp165_);
7503 _tmp167_ = _tmp166_;
7505 _tmp164_ = "gpointer*";
7507 _tmp164_ = "gpointer";
7509 _tmp168_ = function;
7510 _tmp169_ = _tmp160_;
7511 _tmp170_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp169_);
7512 _tmp171_ = _tmp170_;
7513 _tmp172_ = _tmp164_;
7514 _tmp173_ = vala_ccode_parameter_new (_tmp171_, _tmp172_);
7515 _tmp174_ = _tmp173_;
7516 vala_ccode_function_add_parameter (_tmp168_, _tmp174_);
7517 _vala_ccode_node_unref0 (_tmp174_);
7518 _g_free0 (_tmp171_);
7520 _tmp177_ = vala_property_accessor_get_readable (_tmp176_);
7521 _tmp178_ = _tmp177_;
7523 ValaPropertyAccessor* _tmp179_;
7524 ValaDataType* _tmp180_;
7525 ValaDataType* _tmp181_;
7529 _tmp180_ = vala_property_accessor_get_value_type (_tmp179_);
7530 _tmp181_ = _tmp180_;
7531 _tmp182_ = vala_data_type_get_value_owned (_tmp181_);
7532 _tmp183_ = _tmp182_;
7533 _tmp175_ = _tmp183_;
7537 _tmp184_ = _tmp175_;
7539 ValaCCodeFunction* _tmp185_;
7540 gchar* _tmp186_ = NULL;
7542 ValaCCodeParameter* _tmp188_;
7543 ValaCCodeParameter* _tmp189_;
7544 _tmp185_ = function;
7545 _tmp186_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value");
7546 _tmp187_ = _tmp186_;
7547 _tmp188_ = vala_ccode_parameter_new (_tmp187_, "GDestroyNotify");
7548 _tmp189_ = _tmp188_;
7549 vala_ccode_function_add_parameter (_tmp185_, _tmp189_);
7550 _vala_ccode_node_unref0 (_tmp189_);
7551 _g_free0 (_tmp187_);
7556 _tmp193_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp192_);
7560 gboolean _tmp194_ = FALSE;
7561 ValaPropertyAccessor* _tmp195_;
7566 _tmp196_ = vala_property_accessor_get_readable (_tmp195_);
7567 _tmp197_ = _tmp196_;
7569 ValaPropertyAccessor* _tmp198_;
7573 _tmp199_ = vala_property_accessor_get_writable (_tmp198_);
7574 _tmp200_ = _tmp199_;
7575 _tmp194_ = !_tmp200_;
7579 _tmp201_ = _tmp194_;
7580 _tmp191_ = _tmp201_;
7582 _tmp202_ = _tmp191_;
7586 ValaPropertyAccessor* _tmp203_;
7587 ValaSymbolAccessibility _tmp204_;
7588 ValaSymbolAccessibility _tmp205_;
7590 _tmp204_ = vala_symbol_get_access ((ValaSymbol*) _tmp203_);
7591 _tmp205_ = _tmp204_;
7592 _tmp190_ = _tmp205_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
7594 _tmp206_ = _tmp190_;
7596 ValaCCodeFunction* _tmp207_;
7597 ValaCCodeFunction* _tmp208_;
7598 ValaCCodeModifiers _tmp209_;
7599 ValaCCodeModifiers _tmp210_;
7600 _tmp207_ = function;
7601 _tmp208_ = function;
7602 _tmp209_ = vala_ccode_function_get_modifiers (_tmp208_);
7603 _tmp210_ = _tmp209_;
7604 vala_ccode_function_set_modifiers (_tmp208_, _tmp210_ | VALA_CCODE_MODIFIERS_STATIC);
7606 _tmp211_ = decl_space;
7607 _tmp212_ = function;
7608 vala_ccode_file_add_function_declaration (_tmp211_, _tmp212_);
7609 _vala_ccode_node_unref0 (function);
7610 _vala_ccode_node_unref0 (cvalueparam);
7611 _vala_code_node_unref0 (prop);
7615 static void vala_ccode_base_module_real_visit_property_accessor (ValaCodeVisitor* base, ValaPropertyAccessor* acc) {
7616 ValaCCodeBaseModule * self;
7617 ValaPropertyAccessor* _tmp0_;
7618 ValaCCodeBaseModuleEmitContext* _tmp1_;
7619 ValaCCodeBaseModuleEmitContext* _tmp2_;
7620 ValaPropertyAccessor* _tmp3_;
7621 ValaSourceReference* _tmp4_;
7622 ValaSourceReference* _tmp5_;
7623 ValaPropertyAccessor* _tmp6_;
7624 ValaProperty* _tmp7_;
7625 ValaProperty* _tmp8_;
7626 ValaProperty* _tmp9_;
7628 ValaPropertyAccessor* _tmp10_;
7629 ValaComment* _tmp11_;
7630 ValaComment* _tmp12_;
7631 gboolean _tmp21_ = FALSE;
7632 ValaPropertyAccessor* _tmp22_;
7636 gboolean returns_real_struct;
7637 ValaPropertyAccessor* _tmp30_;
7638 ValaLocalVariable* _tmp31_;
7639 ValaLocalVariable* _tmp32_;
7640 ValaProperty* _tmp36_;
7641 ValaSymbol* _tmp37_;
7642 ValaSymbol* _tmp38_;
7643 ValaTypeSymbol* _tmp39_;
7645 gboolean _tmp40_ = FALSE;
7646 ValaPropertyAccessor* _tmp41_;
7650 gboolean _tmp63_ = FALSE;
7651 gboolean _tmp64_ = FALSE;
7652 ValaProperty* _tmp65_;
7657 ValaPropertyAccessor* _tmp114_;
7658 ValaSourceFileType _tmp115_;
7659 ValaSourceFileType _tmp116_;
7660 ValaTypeSymbol* _tmp117_;
7661 ValaDataType* _tmp118_ = NULL;
7662 ValaDataType* this_type;
7663 ValaDataType* _tmp119_;
7664 gchar* _tmp120_ = NULL;
7666 ValaCCodeParameter* _tmp122_;
7667 ValaCCodeParameter* _tmp123_;
7668 ValaCCodeParameter* cselfparam;
7669 gboolean _tmp124_ = FALSE;
7670 ValaTypeSymbol* _tmp125_;
7672 ValaCCodeParameter* cvalueparam = NULL;
7674 gboolean _tmp167_ = FALSE;
7675 ValaProperty* _tmp168_;
7679 ValaProperty* _tmp484_;
7682 self = (ValaCCodeBaseModule*) base;
7683 g_return_if_fail (acc != NULL);
7685 _tmp1_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp0_);
7687 vala_ccode_base_module_push_context (self, _tmp2_);
7688 _vala_ccode_base_module_emit_context_unref0 (_tmp2_);
7690 _tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_);
7692 vala_ccode_base_module_push_line (self, _tmp5_);
7694 _tmp7_ = vala_property_accessor_get_prop (_tmp6_);
7696 _tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_PROPERTY, ValaProperty));
7699 _tmp11_ = vala_symbol_get_comment ((ValaSymbol*) _tmp10_);
7701 if (_tmp12_ != NULL) {
7702 ValaCCodeFile* _tmp13_;
7703 ValaPropertyAccessor* _tmp14_;
7704 ValaComment* _tmp15_;
7705 ValaComment* _tmp16_;
7706 const gchar* _tmp17_;
7707 const gchar* _tmp18_;
7708 ValaCCodeComment* _tmp19_;
7709 ValaCCodeComment* _tmp20_;
7710 _tmp13_ = self->cfile;
7712 _tmp15_ = vala_symbol_get_comment ((ValaSymbol*) _tmp14_);
7714 _tmp17_ = vala_comment_get_content (_tmp16_);
7716 _tmp19_ = vala_ccode_comment_new (_tmp18_);
7718 vala_ccode_file_add_type_member_definition (_tmp13_, (ValaCCodeNode*) _tmp20_);
7719 _vala_ccode_node_unref0 (_tmp20_);
7722 _tmp23_ = vala_property_accessor_get_readable (_tmp22_);
7725 ValaProperty* _tmp25_;
7726 ValaDataType* _tmp26_;
7727 ValaDataType* _tmp27_;
7728 gboolean _tmp28_ = FALSE;
7730 _tmp26_ = vala_property_get_property_type (_tmp25_);
7732 _tmp28_ = vala_data_type_is_real_non_null_struct_type (_tmp27_);
7738 returns_real_struct = _tmp29_;
7740 _tmp31_ = vala_subroutine_get_result_var ((ValaSubroutine*) _tmp30_);
7742 if (_tmp32_ != NULL) {
7743 ValaPropertyAccessor* _tmp33_;
7744 ValaLocalVariable* _tmp34_;
7745 ValaLocalVariable* _tmp35_;
7747 _tmp34_ = vala_subroutine_get_result_var ((ValaSubroutine*) _tmp33_);
7749 vala_code_node_accept ((ValaCodeNode*) _tmp35_, (ValaCodeVisitor*) self);
7752 _tmp37_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp36_);
7754 _tmp39_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
7757 _tmp42_ = vala_property_accessor_get_construction (_tmp41_);
7760 ValaTypeSymbol* _tmp44_;
7761 ValaTypeSymbol* _tmp45_;
7762 gboolean _tmp46_ = FALSE;
7764 _tmp45_ = self->gobject_type;
7765 _tmp46_ = vala_typesymbol_is_subtype_of (_tmp44_, _tmp45_);
7772 ValaPropertyAccessor* _tmp48_;
7773 ValaSourceReference* _tmp49_;
7774 ValaSourceReference* _tmp50_;
7775 ValaPropertyAccessor* _tmp51_;
7777 _tmp49_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp48_);
7779 vala_report_error (_tmp50_, "construct properties require GLib.Object");
7781 vala_code_node_set_error ((ValaCodeNode*) _tmp51_, TRUE);
7782 _vala_code_node_unref0 (t);
7783 _vala_code_node_unref0 (prop);
7786 gboolean _tmp52_ = FALSE;
7787 ValaPropertyAccessor* _tmp53_;
7792 _tmp54_ = vala_property_accessor_get_construction (_tmp53_);
7795 ValaProperty* _tmp56_;
7796 gboolean _tmp57_ = FALSE;
7798 _tmp57_ = vala_ccode_base_module_is_gobject_property (self, _tmp56_);
7805 ValaPropertyAccessor* _tmp59_;
7806 ValaSourceReference* _tmp60_;
7807 ValaSourceReference* _tmp61_;
7808 ValaPropertyAccessor* _tmp62_;
7810 _tmp60_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp59_);
7812 vala_report_error (_tmp61_, "construct properties not supported for specified property type");
7814 vala_code_node_set_error ((ValaCodeNode*) _tmp62_, TRUE);
7815 _vala_code_node_unref0 (t);
7816 _vala_code_node_unref0 (prop);
7821 _tmp66_ = vala_property_get_is_abstract (_tmp65_);
7826 ValaProperty* _tmp68_;
7830 _tmp69_ = vala_property_get_is_virtual (_tmp68_);
7838 gboolean _tmp72_ = FALSE;
7839 ValaProperty* _tmp73_;
7840 ValaProperty* _tmp74_;
7841 ValaProperty* _tmp75_;
7844 _tmp74_ = vala_property_get_base_property (_tmp73_);
7846 if (_tmp75_ == NULL) {
7847 ValaProperty* _tmp76_;
7848 ValaProperty* _tmp77_;
7849 ValaProperty* _tmp78_;
7851 _tmp77_ = vala_property_get_base_interface_property (_tmp76_);
7853 _tmp72_ = _tmp78_ == NULL;
7862 ValaPropertyAccessor* _tmp81_;
7863 ValaCCodeFile* _tmp82_;
7864 gboolean _tmp83_ = FALSE;
7865 ValaPropertyAccessor* _tmp84_;
7870 _tmp82_ = self->cfile;
7871 vala_ccode_base_module_generate_property_accessor_declaration (self, _tmp81_, _tmp82_);
7873 _tmp85_ = vala_property_accessor_get_readable (_tmp84_);
7878 ValaPropertyAccessor* _tmp87_;
7882 _tmp88_ = vala_property_accessor_get_writable (_tmp87_);
7888 gboolean _tmp91_ = FALSE;
7889 ValaProperty* _tmp92_;
7890 gboolean _tmp93_ = FALSE;
7892 gboolean _tmp105_ = FALSE;
7893 ValaProperty* _tmp106_;
7894 gboolean _tmp107_ = FALSE;
7897 _tmp93_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp92_);
7899 gboolean _tmp94_ = FALSE;
7900 ValaPropertyAccessor* _tmp95_;
7901 ValaSymbolAccessibility _tmp96_;
7902 ValaSymbolAccessibility _tmp97_;
7905 _tmp96_ = vala_symbol_get_access ((ValaSymbol*) _tmp95_);
7907 if (_tmp97_ == VALA_SYMBOL_ACCESSIBILITY_PUBLIC) {
7910 ValaPropertyAccessor* _tmp98_;
7911 ValaSymbolAccessibility _tmp99_;
7912 ValaSymbolAccessibility _tmp100_;
7914 _tmp99_ = vala_symbol_get_access ((ValaSymbol*) _tmp98_);
7916 _tmp94_ = _tmp100_ == VALA_SYMBOL_ACCESSIBILITY_PROTECTED;
7925 ValaPropertyAccessor* _tmp103_;
7926 ValaCCodeFile* _tmp104_;
7928 _tmp104_ = self->header_file;
7929 vala_ccode_base_module_generate_property_accessor_declaration (self, _tmp103_, _tmp104_);
7932 _tmp107_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp106_);
7934 ValaPropertyAccessor* _tmp108_;
7935 ValaSymbolAccessibility _tmp109_;
7936 ValaSymbolAccessibility _tmp110_;
7938 _tmp109_ = vala_symbol_get_access ((ValaSymbol*) _tmp108_);
7939 _tmp110_ = _tmp109_;
7940 _tmp105_ = _tmp110_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
7944 _tmp111_ = _tmp105_;
7946 ValaPropertyAccessor* _tmp112_;
7947 ValaCCodeFile* _tmp113_;
7949 _tmp113_ = self->internal_header_file;
7950 vala_ccode_base_module_generate_property_accessor_declaration (self, _tmp112_, _tmp113_);
7955 _tmp115_ = vala_symbol_get_source_type ((ValaSymbol*) _tmp114_);
7956 _tmp116_ = _tmp115_;
7957 if (_tmp116_ == VALA_SOURCE_FILE_TYPE_FAST) {
7958 vala_ccode_base_module_pop_line (self);
7959 _vala_code_node_unref0 (t);
7960 _vala_code_node_unref0 (prop);
7964 _tmp118_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp117_);
7965 this_type = _tmp118_;
7966 _tmp119_ = this_type;
7967 _tmp120_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp119_);
7968 _tmp121_ = _tmp120_;
7969 _tmp122_ = vala_ccode_parameter_new ("self", _tmp121_);
7970 _tmp123_ = _tmp122_;
7971 _g_free0 (_tmp121_);
7972 cselfparam = _tmp123_;
7974 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp125_, VALA_TYPE_STRUCT)) {
7975 ValaTypeSymbol* _tmp126_;
7976 gboolean _tmp127_ = FALSE;
7978 _tmp127_ = vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp126_, VALA_TYPE_STRUCT, ValaStruct));
7979 _tmp124_ = !_tmp127_;
7983 _tmp128_ = _tmp124_;
7985 ValaCCodeParameter* _tmp129_;
7986 ValaCCodeParameter* _tmp130_;
7987 const gchar* _tmp131_;
7988 const gchar* _tmp132_;
7991 _tmp129_ = cselfparam;
7992 _tmp130_ = cselfparam;
7993 _tmp131_ = vala_ccode_parameter_get_type_name (_tmp130_);
7994 _tmp132_ = _tmp131_;
7995 _tmp133_ = g_strconcat (_tmp132_, "*", NULL);
7996 _tmp134_ = _tmp133_;
7997 vala_ccode_parameter_set_type_name (_tmp130_, _tmp134_);
7998 _g_free0 (_tmp134_);
8000 _tmp135_ = returns_real_struct;
8002 ValaPropertyAccessor* _tmp136_;
8003 ValaDataType* _tmp137_;
8004 ValaDataType* _tmp138_;
8005 gchar* _tmp139_ = NULL;
8009 ValaCCodeParameter* _tmp143_;
8011 _tmp137_ = vala_property_accessor_get_value_type (_tmp136_);
8012 _tmp138_ = _tmp137_;
8013 _tmp139_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp138_);
8014 _tmp140_ = _tmp139_;
8015 _tmp141_ = g_strconcat (_tmp140_, "*", NULL);
8016 _tmp142_ = _tmp141_;
8017 _tmp143_ = vala_ccode_parameter_new ("result", _tmp142_);
8018 _vala_ccode_node_unref0 (cvalueparam);
8019 cvalueparam = _tmp143_;
8020 _g_free0 (_tmp142_);
8021 _g_free0 (_tmp140_);
8023 gboolean _tmp144_ = FALSE;
8024 ValaPropertyAccessor* _tmp145_;
8029 _tmp146_ = vala_property_accessor_get_readable (_tmp145_);
8030 _tmp147_ = _tmp146_;
8032 ValaProperty* _tmp148_;
8033 ValaDataType* _tmp149_;
8034 ValaDataType* _tmp150_;
8035 gboolean _tmp151_ = FALSE;
8037 _tmp149_ = vala_property_get_property_type (_tmp148_);
8038 _tmp150_ = _tmp149_;
8039 _tmp151_ = vala_data_type_is_real_non_null_struct_type (_tmp150_);
8040 _tmp144_ = _tmp151_;
8044 _tmp152_ = _tmp144_;
8046 ValaPropertyAccessor* _tmp153_;
8047 ValaDataType* _tmp154_;
8048 ValaDataType* _tmp155_;
8049 gchar* _tmp156_ = NULL;
8053 ValaCCodeParameter* _tmp160_;
8055 _tmp154_ = vala_property_accessor_get_value_type (_tmp153_);
8056 _tmp155_ = _tmp154_;
8057 _tmp156_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp155_);
8058 _tmp157_ = _tmp156_;
8059 _tmp158_ = g_strconcat (_tmp157_, "*", NULL);
8060 _tmp159_ = _tmp158_;
8061 _tmp160_ = vala_ccode_parameter_new ("value", _tmp159_);
8062 _vala_ccode_node_unref0 (cvalueparam);
8063 cvalueparam = _tmp160_;
8064 _g_free0 (_tmp159_);
8065 _g_free0 (_tmp157_);
8067 ValaPropertyAccessor* _tmp161_;
8068 ValaDataType* _tmp162_;
8069 ValaDataType* _tmp163_;
8070 gchar* _tmp164_ = NULL;
8072 ValaCCodeParameter* _tmp166_;
8074 _tmp162_ = vala_property_accessor_get_value_type (_tmp161_);
8075 _tmp163_ = _tmp162_;
8076 _tmp164_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp163_);
8077 _tmp165_ = _tmp164_;
8078 _tmp166_ = vala_ccode_parameter_new ("value", _tmp165_);
8079 _vala_ccode_node_unref0 (cvalueparam);
8080 cvalueparam = _tmp166_;
8081 _g_free0 (_tmp165_);
8085 _tmp169_ = vala_property_get_is_abstract (_tmp168_);
8086 _tmp170_ = _tmp169_;
8090 ValaProperty* _tmp171_;
8094 _tmp172_ = vala_property_get_is_virtual (_tmp171_);
8095 _tmp173_ = _tmp172_;
8096 _tmp167_ = _tmp173_;
8098 _tmp174_ = _tmp167_;
8100 ValaCCodeFunction* function = NULL;
8101 gboolean _tmp175_ = FALSE;
8102 ValaPropertyAccessor* _tmp176_;
8106 ValaCCodeFunction* _tmp193_;
8107 ValaCCodeParameter* _tmp194_;
8108 gboolean _tmp195_ = FALSE;
8109 gboolean _tmp196_ = FALSE;
8110 ValaPropertyAccessor* _tmp197_;
8115 ValaPropertyAccessor* _tmp208_;
8116 ValaDataType* _tmp209_;
8117 ValaDataType* _tmp210_;
8118 gboolean _tmp281_ = FALSE;
8119 gboolean _tmp282_ = FALSE;
8120 ValaProperty* _tmp283_;
8121 gboolean _tmp284_ = FALSE;
8124 ValaCCodeFunction* _tmp302_;
8125 ValaProperty* _tmp303_;
8126 ValaMemberBinding _tmp304_;
8127 ValaMemberBinding _tmp305_;
8128 ValaCCodeFunctionCall* vcast;
8129 ValaProperty* _tmp316_;
8130 ValaSymbol* _tmp317_;
8131 ValaSymbol* _tmp318_;
8132 ValaCCodeFunctionCall* _tmp343_;
8133 ValaCCodeIdentifier* _tmp344_;
8134 ValaCCodeIdentifier* _tmp345_;
8135 ValaPropertyAccessor* _tmp346_;
8138 ValaCCodeFile* _tmp482_;
8139 ValaCCodeFunction* _tmp483_;
8141 _tmp177_ = vala_property_accessor_get_readable (_tmp176_);
8142 _tmp178_ = _tmp177_;
8145 _tmp179_ = returns_real_struct;
8146 _tmp175_ = !_tmp179_;
8150 _tmp180_ = _tmp175_;
8152 ValaPropertyAccessor* _tmp181_;
8153 gchar* _tmp182_ = NULL;
8155 ValaDataType* _tmp184_;
8156 ValaDataType* _tmp185_;
8157 gchar* _tmp186_ = NULL;
8159 ValaCCodeFunction* _tmp188_;
8161 _tmp182_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp181_);
8162 _tmp183_ = _tmp182_;
8163 _tmp184_ = vala_ccode_base_module_get_current_return_type (self);
8164 _tmp185_ = _tmp184_;
8165 _tmp186_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp185_);
8166 _tmp187_ = _tmp186_;
8167 _tmp188_ = vala_ccode_function_new (_tmp183_, _tmp187_);
8168 _vala_ccode_node_unref0 (function);
8169 function = _tmp188_;
8170 _g_free0 (_tmp187_);
8171 _g_free0 (_tmp183_);
8173 ValaPropertyAccessor* _tmp189_;
8174 gchar* _tmp190_ = NULL;
8176 ValaCCodeFunction* _tmp192_;
8178 _tmp190_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp189_);
8179 _tmp191_ = _tmp190_;
8180 _tmp192_ = vala_ccode_function_new (_tmp191_, "void");
8181 _vala_ccode_node_unref0 (function);
8182 function = _tmp192_;
8183 _g_free0 (_tmp191_);
8185 _tmp193_ = function;
8186 _tmp194_ = cselfparam;
8187 vala_ccode_function_add_parameter (_tmp193_, _tmp194_);
8189 _tmp198_ = vala_property_accessor_get_writable (_tmp197_);
8190 _tmp199_ = _tmp198_;
8194 ValaPropertyAccessor* _tmp200_;
8198 _tmp201_ = vala_property_accessor_get_construction (_tmp200_);
8199 _tmp202_ = _tmp201_;
8200 _tmp196_ = _tmp202_;
8202 _tmp203_ = _tmp196_;
8207 _tmp204_ = returns_real_struct;
8208 _tmp195_ = _tmp204_;
8210 _tmp205_ = _tmp195_;
8212 ValaCCodeFunction* _tmp206_;
8213 ValaCCodeParameter* _tmp207_;
8214 _tmp206_ = function;
8215 _tmp207_ = cvalueparam;
8216 vala_ccode_function_add_parameter (_tmp206_, _tmp207_);
8219 _tmp209_ = vala_property_accessor_get_value_type (_tmp208_);
8220 _tmp210_ = _tmp209_;
8221 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp210_, VALA_TYPE_ARRAY_TYPE)) {
8222 ValaPropertyAccessor* _tmp211_;
8223 ValaDataType* _tmp212_;
8224 ValaDataType* _tmp213_;
8225 ValaArrayType* _tmp214_;
8226 ValaArrayType* array_type;
8228 gchar* length_ctype;
8229 ValaPropertyAccessor* _tmp216_;
8233 _tmp212_ = vala_property_accessor_get_value_type (_tmp211_);
8234 _tmp213_ = _tmp212_;
8235 _tmp214_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp213_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
8236 array_type = _tmp214_;
8237 _tmp215_ = g_strdup ("int");
8238 length_ctype = _tmp215_;
8240 _tmp217_ = vala_property_accessor_get_readable (_tmp216_);
8241 _tmp218_ = _tmp217_;
8244 _tmp219_ = g_strdup ("int*");
8245 _g_free0 (length_ctype);
8246 length_ctype = _tmp219_;
8257 ValaArrayType* _tmp224_;
8260 const gchar* _tmp227_ = NULL;
8261 ValaPropertyAccessor* _tmp228_;
8264 ValaCCodeFunction* _tmp231_;
8265 const gchar* _tmp232_;
8267 gchar* _tmp234_ = NULL;
8269 const gchar* _tmp236_;
8270 ValaCCodeParameter* _tmp237_;
8271 ValaCCodeParameter* _tmp238_;
8272 _tmp221_ = _tmp220_;
8280 _tmp224_ = array_type;
8281 _tmp225_ = vala_array_type_get_rank (_tmp224_);
8282 _tmp226_ = _tmp225_;
8283 if (!(_tmp223_ <= _tmp226_)) {
8287 _tmp229_ = vala_property_accessor_get_readable (_tmp228_);
8288 _tmp230_ = _tmp229_;
8290 _tmp227_ = "result";
8294 _tmp231_ = function;
8295 _tmp232_ = _tmp227_;
8297 _tmp234_ = vala_ccode_base_module_get_array_length_cname (self, _tmp232_, _tmp233_);
8298 _tmp235_ = _tmp234_;
8299 _tmp236_ = length_ctype;
8300 _tmp237_ = vala_ccode_parameter_new (_tmp235_, _tmp236_);
8301 _tmp238_ = _tmp237_;
8302 vala_ccode_function_add_parameter (_tmp231_, _tmp238_);
8303 _vala_ccode_node_unref0 (_tmp238_);
8304 _g_free0 (_tmp235_);
8308 _g_free0 (length_ctype);
8309 _vala_code_node_unref0 (array_type);
8311 gboolean _tmp239_ = FALSE;
8312 ValaPropertyAccessor* _tmp240_;
8313 ValaDataType* _tmp241_;
8314 ValaDataType* _tmp242_;
8317 _tmp241_ = vala_property_accessor_get_value_type (_tmp240_);
8318 _tmp242_ = _tmp241_;
8319 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp242_, VALA_TYPE_DELEGATE_TYPE)) {
8320 ValaPropertyAccessor* _tmp243_;
8321 ValaDataType* _tmp244_;
8322 ValaDataType* _tmp245_;
8323 ValaDelegate* _tmp246_;
8324 ValaDelegate* _tmp247_;
8328 _tmp244_ = vala_property_accessor_get_value_type (_tmp243_);
8329 _tmp245_ = _tmp244_;
8330 _tmp246_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp245_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
8331 _tmp247_ = _tmp246_;
8332 _tmp248_ = vala_delegate_get_has_target (_tmp247_);
8333 _tmp249_ = _tmp248_;
8334 _tmp239_ = _tmp249_;
8338 _tmp250_ = _tmp239_;
8340 const gchar* _tmp251_ = NULL;
8341 ValaPropertyAccessor* _tmp252_;
8344 const gchar* _tmp255_ = NULL;
8345 ValaPropertyAccessor* _tmp256_;
8348 ValaCCodeFunction* _tmp259_;
8349 const gchar* _tmp260_;
8350 gchar* _tmp261_ = NULL;
8352 const gchar* _tmp263_;
8353 ValaCCodeParameter* _tmp264_;
8354 ValaCCodeParameter* _tmp265_;
8355 gboolean _tmp266_ = FALSE;
8356 ValaPropertyAccessor* _tmp267_;
8361 _tmp253_ = vala_property_accessor_get_readable (_tmp252_);
8362 _tmp254_ = _tmp253_;
8364 _tmp251_ = "result";
8369 _tmp257_ = vala_property_accessor_get_readable (_tmp256_);
8370 _tmp258_ = _tmp257_;
8372 _tmp255_ = "gpointer*";
8374 _tmp255_ = "gpointer";
8376 _tmp259_ = function;
8377 _tmp260_ = _tmp251_;
8378 _tmp261_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp260_);
8379 _tmp262_ = _tmp261_;
8380 _tmp263_ = _tmp255_;
8381 _tmp264_ = vala_ccode_parameter_new (_tmp262_, _tmp263_);
8382 _tmp265_ = _tmp264_;
8383 vala_ccode_function_add_parameter (_tmp259_, _tmp265_);
8384 _vala_ccode_node_unref0 (_tmp265_);
8385 _g_free0 (_tmp262_);
8387 _tmp268_ = vala_property_accessor_get_readable (_tmp267_);
8388 _tmp269_ = _tmp268_;
8390 ValaPropertyAccessor* _tmp270_;
8391 ValaDataType* _tmp271_;
8392 ValaDataType* _tmp272_;
8396 _tmp271_ = vala_property_accessor_get_value_type (_tmp270_);
8397 _tmp272_ = _tmp271_;
8398 _tmp273_ = vala_data_type_get_value_owned (_tmp272_);
8399 _tmp274_ = _tmp273_;
8400 _tmp266_ = _tmp274_;
8404 _tmp275_ = _tmp266_;
8406 ValaCCodeFunction* _tmp276_;
8407 gchar* _tmp277_ = NULL;
8409 ValaCCodeParameter* _tmp279_;
8410 ValaCCodeParameter* _tmp280_;
8411 _tmp276_ = function;
8412 _tmp277_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value");
8413 _tmp278_ = _tmp277_;
8414 _tmp279_ = vala_ccode_parameter_new (_tmp278_, "GDestroyNotify");
8415 _tmp280_ = _tmp279_;
8416 vala_ccode_function_add_parameter (_tmp276_, _tmp280_);
8417 _vala_ccode_node_unref0 (_tmp280_);
8418 _g_free0 (_tmp278_);
8423 _tmp284_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp283_);
8427 gboolean _tmp285_ = FALSE;
8428 ValaPropertyAccessor* _tmp286_;
8433 _tmp287_ = vala_property_accessor_get_readable (_tmp286_);
8434 _tmp288_ = _tmp287_;
8438 ValaPropertyAccessor* _tmp289_;
8442 _tmp290_ = vala_property_accessor_get_writable (_tmp289_);
8443 _tmp291_ = _tmp290_;
8444 _tmp285_ = _tmp291_;
8446 _tmp292_ = _tmp285_;
8447 _tmp282_ = !_tmp292_;
8449 _tmp293_ = _tmp282_;
8453 ValaPropertyAccessor* _tmp294_;
8454 ValaSymbolAccessibility _tmp295_;
8455 ValaSymbolAccessibility _tmp296_;
8457 _tmp295_ = vala_symbol_get_access ((ValaSymbol*) _tmp294_);
8458 _tmp296_ = _tmp295_;
8459 _tmp281_ = _tmp296_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
8461 _tmp297_ = _tmp281_;
8463 ValaCCodeFunction* _tmp298_;
8464 ValaCCodeFunction* _tmp299_;
8465 ValaCCodeModifiers _tmp300_;
8466 ValaCCodeModifiers _tmp301_;
8467 _tmp298_ = function;
8468 _tmp299_ = function;
8469 _tmp300_ = vala_ccode_function_get_modifiers (_tmp299_);
8470 _tmp301_ = _tmp300_;
8471 vala_ccode_function_set_modifiers (_tmp299_, _tmp301_ | VALA_CCODE_MODIFIERS_STATIC);
8473 _tmp302_ = function;
8474 vala_ccode_base_module_push_function (self, _tmp302_);
8476 _tmp304_ = vala_property_get_binding (_tmp303_);
8477 _tmp305_ = _tmp304_;
8478 if (_tmp305_ == VALA_MEMBER_BINDING_INSTANCE) {
8479 gboolean _tmp306_ = FALSE;
8480 ValaPropertyAccessor* _tmp307_;
8485 _tmp308_ = vala_property_accessor_get_readable (_tmp307_);
8486 _tmp309_ = _tmp308_;
8491 _tmp310_ = returns_real_struct;
8492 _tmp306_ = _tmp310_;
8494 _tmp311_ = _tmp306_;
8496 ValaProperty* _tmp312_;
8497 ValaTypeSymbol* _tmp313_;
8500 vala_ccode_base_module_create_property_type_check_statement (self, _tmp312_, FALSE, _tmp313_, TRUE, "self");
8502 ValaProperty* _tmp314_;
8503 ValaTypeSymbol* _tmp315_;
8506 vala_ccode_base_module_create_property_type_check_statement (self, _tmp314_, TRUE, _tmp315_, TRUE, "self");
8511 _tmp317_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp316_);
8512 _tmp318_ = _tmp317_;
8513 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp318_, VALA_TYPE_INTERFACE)) {
8514 ValaProperty* _tmp319_;
8515 ValaSymbol* _tmp320_;
8516 ValaSymbol* _tmp321_;
8517 ValaInterface* _tmp322_;
8518 ValaInterface* iface;
8519 ValaInterface* _tmp323_;
8520 gchar* _tmp324_ = NULL;
8522 gchar* _tmp326_ = NULL;
8524 ValaCCodeIdentifier* _tmp328_;
8525 ValaCCodeIdentifier* _tmp329_;
8526 ValaCCodeFunctionCall* _tmp330_;
8528 _tmp320_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp319_);
8529 _tmp321_ = _tmp320_;
8530 _tmp322_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp321_, VALA_TYPE_INTERFACE, ValaInterface));
8533 _tmp324_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp323_, NULL);
8534 _tmp325_ = _tmp324_;
8535 _tmp326_ = g_strdup_printf ("%s_GET_INTERFACE", _tmp325_);
8536 _tmp327_ = _tmp326_;
8537 _tmp328_ = vala_ccode_identifier_new (_tmp327_);
8538 _tmp329_ = _tmp328_;
8539 _tmp330_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp329_);
8540 _vala_ccode_node_unref0 (vcast);
8542 _vala_ccode_node_unref0 (_tmp329_);
8543 _g_free0 (_tmp327_);
8544 _g_free0 (_tmp325_);
8545 _vala_code_node_unref0 (iface);
8547 ValaProperty* _tmp331_;
8548 ValaSymbol* _tmp332_;
8549 ValaSymbol* _tmp333_;
8550 ValaClass* _tmp334_;
8552 ValaClass* _tmp335_;
8553 gchar* _tmp336_ = NULL;
8555 gchar* _tmp338_ = NULL;
8557 ValaCCodeIdentifier* _tmp340_;
8558 ValaCCodeIdentifier* _tmp341_;
8559 ValaCCodeFunctionCall* _tmp342_;
8561 _tmp332_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp331_);
8562 _tmp333_ = _tmp332_;
8563 _tmp334_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp333_, VALA_TYPE_CLASS, ValaClass));
8566 _tmp336_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp335_, NULL);
8567 _tmp337_ = _tmp336_;
8568 _tmp338_ = g_strdup_printf ("%s_GET_CLASS", _tmp337_);
8569 _tmp339_ = _tmp338_;
8570 _tmp340_ = vala_ccode_identifier_new (_tmp339_);
8571 _tmp341_ = _tmp340_;
8572 _tmp342_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp341_);
8573 _vala_ccode_node_unref0 (vcast);
8575 _vala_ccode_node_unref0 (_tmp341_);
8576 _g_free0 (_tmp339_);
8577 _g_free0 (_tmp337_);
8578 _vala_code_node_unref0 (cl);
8581 _tmp344_ = vala_ccode_identifier_new ("self");
8582 _tmp345_ = _tmp344_;
8583 vala_ccode_function_call_add_argument (_tmp343_, (ValaCCodeExpression*) _tmp345_);
8584 _vala_ccode_node_unref0 (_tmp345_);
8586 _tmp347_ = vala_property_accessor_get_readable (_tmp346_);
8587 _tmp348_ = _tmp347_;
8589 ValaCCodeFunctionCall* _tmp349_;
8590 ValaProperty* _tmp350_;
8591 const gchar* _tmp351_;
8592 const gchar* _tmp352_;
8593 gchar* _tmp353_ = NULL;
8595 ValaCCodeMemberAccess* _tmp355_;
8596 ValaCCodeMemberAccess* _tmp356_;
8597 ValaCCodeFunctionCall* _tmp357_;
8598 ValaCCodeFunctionCall* _tmp358_;
8599 ValaCCodeFunctionCall* vcall;
8600 ValaCCodeFunctionCall* _tmp359_;
8601 ValaCCodeIdentifier* _tmp360_;
8602 ValaCCodeIdentifier* _tmp361_;
8606 _tmp351_ = vala_symbol_get_name ((ValaSymbol*) _tmp350_);
8607 _tmp352_ = _tmp351_;
8608 _tmp353_ = g_strdup_printf ("get_%s", _tmp352_);
8609 _tmp354_ = _tmp353_;
8610 _tmp355_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp349_, _tmp354_);
8611 _tmp356_ = _tmp355_;
8612 _tmp357_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp356_);
8613 _tmp358_ = _tmp357_;
8614 _vala_ccode_node_unref0 (_tmp356_);
8615 _g_free0 (_tmp354_);
8618 _tmp360_ = vala_ccode_identifier_new ("self");
8619 _tmp361_ = _tmp360_;
8620 vala_ccode_function_call_add_argument (_tmp359_, (ValaCCodeExpression*) _tmp361_);
8621 _vala_ccode_node_unref0 (_tmp361_);
8622 _tmp362_ = returns_real_struct;
8624 ValaCCodeFunctionCall* _tmp363_;
8625 ValaCCodeIdentifier* _tmp364_;
8626 ValaCCodeIdentifier* _tmp365_;
8627 ValaCCodeFunction* _tmp366_;
8628 ValaCCodeFunction* _tmp367_;
8629 ValaCCodeFunctionCall* _tmp368_;
8631 _tmp364_ = vala_ccode_identifier_new ("result");
8632 _tmp365_ = _tmp364_;
8633 vala_ccode_function_call_add_argument (_tmp363_, (ValaCCodeExpression*) _tmp365_);
8634 _vala_ccode_node_unref0 (_tmp365_);
8635 _tmp366_ = vala_ccode_base_module_get_ccode (self);
8636 _tmp367_ = _tmp366_;
8638 vala_ccode_function_add_expression (_tmp367_, (ValaCCodeExpression*) _tmp368_);
8640 ValaPropertyAccessor* _tmp369_;
8641 ValaDataType* _tmp370_;
8642 ValaDataType* _tmp371_;
8643 ValaCCodeFunction* _tmp407_;
8644 ValaCCodeFunction* _tmp408_;
8645 ValaCCodeFunctionCall* _tmp409_;
8647 _tmp370_ = vala_property_accessor_get_value_type (_tmp369_);
8648 _tmp371_ = _tmp370_;
8649 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp371_, VALA_TYPE_ARRAY_TYPE)) {
8650 ValaPropertyAccessor* _tmp372_;
8651 ValaDataType* _tmp373_;
8652 ValaDataType* _tmp374_;
8653 ValaArrayType* _tmp375_;
8654 ValaArrayType* array_type;
8656 _tmp373_ = vala_property_accessor_get_value_type (_tmp372_);
8657 _tmp374_ = _tmp373_;
8658 _tmp375_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp374_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
8659 array_type = _tmp375_;
8669 ValaArrayType* _tmp380_;
8673 gchar* _tmp384_ = NULL;
8675 ValaCCodeIdentifier* _tmp386_;
8676 ValaCCodeIdentifier* _tmp387_;
8677 ValaCCodeIdentifier* len_expr;
8678 ValaCCodeFunctionCall* _tmp388_;
8679 ValaCCodeIdentifier* _tmp389_;
8680 _tmp377_ = _tmp376_;
8688 _tmp380_ = array_type;
8689 _tmp381_ = vala_array_type_get_rank (_tmp380_);
8690 _tmp382_ = _tmp381_;
8691 if (!(_tmp379_ <= _tmp382_)) {
8695 _tmp384_ = vala_ccode_base_module_get_array_length_cname (self, "result", _tmp383_);
8696 _tmp385_ = _tmp384_;
8697 _tmp386_ = vala_ccode_identifier_new (_tmp385_);
8698 _tmp387_ = _tmp386_;
8699 _g_free0 (_tmp385_);
8700 len_expr = _tmp387_;
8702 _tmp389_ = len_expr;
8703 vala_ccode_function_call_add_argument (_tmp388_, (ValaCCodeExpression*) _tmp389_);
8704 _vala_ccode_node_unref0 (len_expr);
8708 _vala_code_node_unref0 (array_type);
8710 gboolean _tmp390_ = FALSE;
8711 ValaPropertyAccessor* _tmp391_;
8712 ValaDataType* _tmp392_;
8713 ValaDataType* _tmp393_;
8716 _tmp392_ = vala_property_accessor_get_value_type (_tmp391_);
8717 _tmp393_ = _tmp392_;
8718 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp393_, VALA_TYPE_DELEGATE_TYPE)) {
8719 ValaPropertyAccessor* _tmp394_;
8720 ValaDataType* _tmp395_;
8721 ValaDataType* _tmp396_;
8722 ValaDelegate* _tmp397_;
8723 ValaDelegate* _tmp398_;
8727 _tmp395_ = vala_property_accessor_get_value_type (_tmp394_);
8728 _tmp396_ = _tmp395_;
8729 _tmp397_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp396_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
8730 _tmp398_ = _tmp397_;
8731 _tmp399_ = vala_delegate_get_has_target (_tmp398_);
8732 _tmp400_ = _tmp399_;
8733 _tmp390_ = _tmp400_;
8737 _tmp401_ = _tmp390_;
8739 ValaCCodeFunctionCall* _tmp402_;
8740 gchar* _tmp403_ = NULL;
8742 ValaCCodeIdentifier* _tmp405_;
8743 ValaCCodeIdentifier* _tmp406_;
8745 _tmp403_ = vala_ccode_base_module_get_delegate_target_cname (self, "result");
8746 _tmp404_ = _tmp403_;
8747 _tmp405_ = vala_ccode_identifier_new (_tmp404_);
8748 _tmp406_ = _tmp405_;
8749 vala_ccode_function_call_add_argument (_tmp402_, (ValaCCodeExpression*) _tmp406_);
8750 _vala_ccode_node_unref0 (_tmp406_);
8751 _g_free0 (_tmp404_);
8754 _tmp407_ = vala_ccode_base_module_get_ccode (self);
8755 _tmp408_ = _tmp407_;
8757 vala_ccode_function_add_return (_tmp408_, (ValaCCodeExpression*) _tmp409_);
8759 _vala_ccode_node_unref0 (vcall);
8761 ValaCCodeFunctionCall* _tmp410_;
8762 ValaProperty* _tmp411_;
8763 const gchar* _tmp412_;
8764 const gchar* _tmp413_;
8765 gchar* _tmp414_ = NULL;
8767 ValaCCodeMemberAccess* _tmp416_;
8768 ValaCCodeMemberAccess* _tmp417_;
8769 ValaCCodeFunctionCall* _tmp418_;
8770 ValaCCodeFunctionCall* _tmp419_;
8771 ValaCCodeFunctionCall* vcall;
8772 ValaCCodeFunctionCall* _tmp420_;
8773 ValaCCodeIdentifier* _tmp421_;
8774 ValaCCodeIdentifier* _tmp422_;
8775 ValaCCodeFunctionCall* _tmp423_;
8776 ValaCCodeIdentifier* _tmp424_;
8777 ValaCCodeIdentifier* _tmp425_;
8778 ValaPropertyAccessor* _tmp426_;
8779 ValaDataType* _tmp427_;
8780 ValaDataType* _tmp428_;
8781 ValaCCodeFunction* _tmp479_;
8782 ValaCCodeFunction* _tmp480_;
8783 ValaCCodeFunctionCall* _tmp481_;
8786 _tmp412_ = vala_symbol_get_name ((ValaSymbol*) _tmp411_);
8787 _tmp413_ = _tmp412_;
8788 _tmp414_ = g_strdup_printf ("set_%s", _tmp413_);
8789 _tmp415_ = _tmp414_;
8790 _tmp416_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp410_, _tmp415_);
8791 _tmp417_ = _tmp416_;
8792 _tmp418_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp417_);
8793 _tmp419_ = _tmp418_;
8794 _vala_ccode_node_unref0 (_tmp417_);
8795 _g_free0 (_tmp415_);
8798 _tmp421_ = vala_ccode_identifier_new ("self");
8799 _tmp422_ = _tmp421_;
8800 vala_ccode_function_call_add_argument (_tmp420_, (ValaCCodeExpression*) _tmp422_);
8801 _vala_ccode_node_unref0 (_tmp422_);
8803 _tmp424_ = vala_ccode_identifier_new ("value");
8804 _tmp425_ = _tmp424_;
8805 vala_ccode_function_call_add_argument (_tmp423_, (ValaCCodeExpression*) _tmp425_);
8806 _vala_ccode_node_unref0 (_tmp425_);
8808 _tmp427_ = vala_property_accessor_get_value_type (_tmp426_);
8809 _tmp428_ = _tmp427_;
8810 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp428_, VALA_TYPE_ARRAY_TYPE)) {
8811 ValaPropertyAccessor* _tmp429_;
8812 ValaDataType* _tmp430_;
8813 ValaDataType* _tmp431_;
8814 ValaArrayType* _tmp432_;
8815 ValaArrayType* array_type;
8817 _tmp430_ = vala_property_accessor_get_value_type (_tmp429_);
8818 _tmp431_ = _tmp430_;
8819 _tmp432_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp431_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
8820 array_type = _tmp432_;
8830 ValaArrayType* _tmp437_;
8834 gchar* _tmp441_ = NULL;
8836 ValaCCodeIdentifier* _tmp443_;
8837 ValaCCodeIdentifier* _tmp444_;
8838 ValaCCodeIdentifier* len_expr;
8839 ValaCCodeFunctionCall* _tmp445_;
8840 ValaCCodeIdentifier* _tmp446_;
8841 _tmp434_ = _tmp433_;
8849 _tmp437_ = array_type;
8850 _tmp438_ = vala_array_type_get_rank (_tmp437_);
8851 _tmp439_ = _tmp438_;
8852 if (!(_tmp436_ <= _tmp439_)) {
8856 _tmp441_ = vala_ccode_base_module_get_array_length_cname (self, "value", _tmp440_);
8857 _tmp442_ = _tmp441_;
8858 _tmp443_ = vala_ccode_identifier_new (_tmp442_);
8859 _tmp444_ = _tmp443_;
8860 _g_free0 (_tmp442_);
8861 len_expr = _tmp444_;
8863 _tmp446_ = len_expr;
8864 vala_ccode_function_call_add_argument (_tmp445_, (ValaCCodeExpression*) _tmp446_);
8865 _vala_ccode_node_unref0 (len_expr);
8869 _vala_code_node_unref0 (array_type);
8871 gboolean _tmp447_ = FALSE;
8872 ValaPropertyAccessor* _tmp448_;
8873 ValaDataType* _tmp449_;
8874 ValaDataType* _tmp450_;
8877 _tmp449_ = vala_property_accessor_get_value_type (_tmp448_);
8878 _tmp450_ = _tmp449_;
8879 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp450_, VALA_TYPE_DELEGATE_TYPE)) {
8880 ValaPropertyAccessor* _tmp451_;
8881 ValaDataType* _tmp452_;
8882 ValaDataType* _tmp453_;
8883 ValaDelegate* _tmp454_;
8884 ValaDelegate* _tmp455_;
8888 _tmp452_ = vala_property_accessor_get_value_type (_tmp451_);
8889 _tmp453_ = _tmp452_;
8890 _tmp454_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp453_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
8891 _tmp455_ = _tmp454_;
8892 _tmp456_ = vala_delegate_get_has_target (_tmp455_);
8893 _tmp457_ = _tmp456_;
8894 _tmp447_ = _tmp457_;
8898 _tmp458_ = _tmp447_;
8900 ValaCCodeFunctionCall* _tmp459_;
8901 gchar* _tmp460_ = NULL;
8903 ValaCCodeIdentifier* _tmp462_;
8904 ValaCCodeIdentifier* _tmp463_;
8905 gboolean _tmp464_ = FALSE;
8906 ValaPropertyAccessor* _tmp465_;
8911 _tmp460_ = vala_ccode_base_module_get_delegate_target_cname (self, "value");
8912 _tmp461_ = _tmp460_;
8913 _tmp462_ = vala_ccode_identifier_new (_tmp461_);
8914 _tmp463_ = _tmp462_;
8915 vala_ccode_function_call_add_argument (_tmp459_, (ValaCCodeExpression*) _tmp463_);
8916 _vala_ccode_node_unref0 (_tmp463_);
8917 _g_free0 (_tmp461_);
8919 _tmp466_ = vala_property_accessor_get_readable (_tmp465_);
8920 _tmp467_ = _tmp466_;
8922 ValaPropertyAccessor* _tmp468_;
8923 ValaDataType* _tmp469_;
8924 ValaDataType* _tmp470_;
8928 _tmp469_ = vala_property_accessor_get_value_type (_tmp468_);
8929 _tmp470_ = _tmp469_;
8930 _tmp471_ = vala_data_type_get_value_owned (_tmp470_);
8931 _tmp472_ = _tmp471_;
8932 _tmp464_ = _tmp472_;
8936 _tmp473_ = _tmp464_;
8938 ValaCCodeFunctionCall* _tmp474_;
8939 gchar* _tmp475_ = NULL;
8941 ValaCCodeIdentifier* _tmp477_;
8942 ValaCCodeIdentifier* _tmp478_;
8944 _tmp475_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value");
8945 _tmp476_ = _tmp475_;
8946 _tmp477_ = vala_ccode_identifier_new (_tmp476_);
8947 _tmp478_ = _tmp477_;
8948 vala_ccode_function_call_add_argument (_tmp474_, (ValaCCodeExpression*) _tmp478_);
8949 _vala_ccode_node_unref0 (_tmp478_);
8950 _g_free0 (_tmp476_);
8954 _tmp479_ = vala_ccode_base_module_get_ccode (self);
8955 _tmp480_ = _tmp479_;
8957 vala_ccode_function_add_expression (_tmp480_, (ValaCCodeExpression*) _tmp481_);
8958 _vala_ccode_node_unref0 (vcall);
8960 vala_ccode_base_module_pop_function (self);
8961 _tmp482_ = self->cfile;
8962 _tmp483_ = function;
8963 vala_ccode_file_add_function (_tmp482_, _tmp483_);
8964 _vala_ccode_node_unref0 (vcast);
8965 _vala_ccode_node_unref0 (function);
8968 _tmp485_ = vala_property_get_is_abstract (_tmp484_);
8969 _tmp486_ = _tmp485_;
8971 gboolean _tmp487_ = FALSE;
8972 ValaProperty* _tmp488_;
8973 ValaProperty* _tmp489_;
8974 ValaProperty* _tmp490_;
8976 gboolean is_virtual;
8977 ValaPropertyAccessor* _tmp495_;
8978 gchar* _tmp496_ = NULL;
8980 ValaCCodeFunction* function = NULL;
8981 gboolean _tmp497_ = FALSE;
8982 gboolean _tmp498_ = FALSE;
8983 ValaPropertyAccessor* _tmp499_;
8988 ValaObjectType* base_type;
8989 ValaProperty* _tmp517_;
8990 ValaMemberBinding _tmp518_;
8991 ValaMemberBinding _tmp519_;
8992 gboolean _tmp551_ = FALSE;
8993 gboolean _tmp552_ = FALSE;
8994 ValaPropertyAccessor* _tmp553_;
8999 ValaPropertyAccessor* _tmp564_;
9000 ValaDataType* _tmp565_;
9001 ValaDataType* _tmp566_;
9003 ValaCCodeFunction* _tmp659_;
9004 gboolean _tmp660_ = FALSE;
9005 ValaProperty* _tmp661_;
9006 ValaMemberBinding _tmp662_;
9007 ValaMemberBinding _tmp663_;
9009 gboolean _tmp676_ = FALSE;
9010 ValaPropertyAccessor* _tmp677_;
9015 ValaPropertyAccessor* _tmp726_;
9016 ValaBlock* _tmp727_;
9017 ValaBlock* _tmp728_;
9020 gboolean _tmp737_ = FALSE;
9021 gboolean _tmp738_ = FALSE;
9022 ValaProperty* _tmp739_;
9023 gboolean _tmp740_ = FALSE;
9026 ValaCCodeFile* _tmp769_;
9027 ValaCCodeFunction* _tmp770_;
9029 _tmp489_ = vala_property_get_base_property (_tmp488_);
9030 _tmp490_ = _tmp489_;
9031 if (_tmp490_ != NULL) {
9034 ValaProperty* _tmp491_;
9035 ValaProperty* _tmp492_;
9036 ValaProperty* _tmp493_;
9038 _tmp492_ = vala_property_get_base_interface_property (_tmp491_);
9039 _tmp493_ = _tmp492_;
9040 _tmp487_ = _tmp493_ != NULL;
9042 _tmp494_ = _tmp487_;
9043 is_virtual = _tmp494_;
9045 _tmp496_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp495_);
9048 _tmp500_ = vala_property_accessor_get_writable (_tmp499_);
9049 _tmp501_ = _tmp500_;
9053 ValaPropertyAccessor* _tmp502_;
9057 _tmp503_ = vala_property_accessor_get_construction (_tmp502_);
9058 _tmp504_ = _tmp503_;
9059 _tmp498_ = _tmp504_;
9061 _tmp505_ = _tmp498_;
9066 _tmp506_ = returns_real_struct;
9067 _tmp497_ = _tmp506_;
9069 _tmp507_ = _tmp497_;
9071 const gchar* _tmp508_;
9072 ValaCCodeFunction* _tmp509_;
9074 _tmp509_ = vala_ccode_function_new (_tmp508_, "void");
9075 _vala_ccode_node_unref0 (function);
9076 function = _tmp509_;
9078 const gchar* _tmp510_;
9079 ValaPropertyAccessor* _tmp511_;
9080 ValaDataType* _tmp512_;
9081 ValaDataType* _tmp513_;
9082 gchar* _tmp514_ = NULL;
9084 ValaCCodeFunction* _tmp516_;
9087 _tmp512_ = vala_property_accessor_get_value_type (_tmp511_);
9088 _tmp513_ = _tmp512_;
9089 _tmp514_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp513_);
9090 _tmp515_ = _tmp514_;
9091 _tmp516_ = vala_ccode_function_new (_tmp510_, _tmp515_);
9092 _vala_ccode_node_unref0 (function);
9093 function = _tmp516_;
9094 _g_free0 (_tmp515_);
9098 _tmp518_ = vala_property_get_binding (_tmp517_);
9099 _tmp519_ = _tmp518_;
9100 if (_tmp519_ == VALA_MEMBER_BINDING_INSTANCE) {
9102 _tmp520_ = is_virtual;
9104 ValaProperty* _tmp521_;
9105 ValaProperty* _tmp522_;
9106 ValaProperty* _tmp523_;
9107 ValaCCodeFunction* _tmp539_;
9108 ValaCCodeFunction* _tmp540_;
9109 ValaCCodeModifiers _tmp541_;
9110 ValaCCodeModifiers _tmp542_;
9111 ValaCCodeFunction* _tmp543_;
9112 ValaObjectType* _tmp544_;
9113 gchar* _tmp545_ = NULL;
9115 ValaCCodeParameter* _tmp547_;
9116 ValaCCodeParameter* _tmp548_;
9118 _tmp522_ = vala_property_get_base_property (_tmp521_);
9119 _tmp523_ = _tmp522_;
9120 if (_tmp523_ != NULL) {
9121 ValaProperty* _tmp524_;
9122 ValaProperty* _tmp525_;
9123 ValaProperty* _tmp526_;
9124 ValaSymbol* _tmp527_;
9125 ValaSymbol* _tmp528_;
9126 ValaObjectType* _tmp529_;
9128 _tmp525_ = vala_property_get_base_property (_tmp524_);
9129 _tmp526_ = _tmp525_;
9130 _tmp527_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp526_);
9131 _tmp528_ = _tmp527_;
9132 _tmp529_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp528_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
9133 _vala_code_node_unref0 (base_type);
9134 base_type = _tmp529_;
9136 ValaProperty* _tmp530_;
9137 ValaProperty* _tmp531_;
9138 ValaProperty* _tmp532_;
9140 _tmp531_ = vala_property_get_base_interface_property (_tmp530_);
9141 _tmp532_ = _tmp531_;
9142 if (_tmp532_ != NULL) {
9143 ValaProperty* _tmp533_;
9144 ValaProperty* _tmp534_;
9145 ValaProperty* _tmp535_;
9146 ValaSymbol* _tmp536_;
9147 ValaSymbol* _tmp537_;
9148 ValaObjectType* _tmp538_;
9150 _tmp534_ = vala_property_get_base_interface_property (_tmp533_);
9151 _tmp535_ = _tmp534_;
9152 _tmp536_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp535_);
9153 _tmp537_ = _tmp536_;
9154 _tmp538_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp537_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
9155 _vala_code_node_unref0 (base_type);
9156 base_type = _tmp538_;
9159 _tmp539_ = function;
9160 _tmp540_ = function;
9161 _tmp541_ = vala_ccode_function_get_modifiers (_tmp540_);
9162 _tmp542_ = _tmp541_;
9163 vala_ccode_function_set_modifiers (_tmp540_, _tmp542_ | VALA_CCODE_MODIFIERS_STATIC);
9164 _tmp543_ = function;
9165 _tmp544_ = base_type;
9166 _tmp545_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp544_);
9167 _tmp546_ = _tmp545_;
9168 _tmp547_ = vala_ccode_parameter_new ("base", _tmp546_);
9169 _tmp548_ = _tmp547_;
9170 vala_ccode_function_add_parameter (_tmp543_, _tmp548_);
9171 _vala_ccode_node_unref0 (_tmp548_);
9172 _g_free0 (_tmp546_);
9174 ValaCCodeFunction* _tmp549_;
9175 ValaCCodeParameter* _tmp550_;
9176 _tmp549_ = function;
9177 _tmp550_ = cselfparam;
9178 vala_ccode_function_add_parameter (_tmp549_, _tmp550_);
9182 _tmp554_ = vala_property_accessor_get_writable (_tmp553_);
9183 _tmp555_ = _tmp554_;
9187 ValaPropertyAccessor* _tmp556_;
9191 _tmp557_ = vala_property_accessor_get_construction (_tmp556_);
9192 _tmp558_ = _tmp557_;
9193 _tmp552_ = _tmp558_;
9195 _tmp559_ = _tmp552_;
9200 _tmp560_ = returns_real_struct;
9201 _tmp551_ = _tmp560_;
9203 _tmp561_ = _tmp551_;
9205 ValaCCodeFunction* _tmp562_;
9206 ValaCCodeParameter* _tmp563_;
9207 _tmp562_ = function;
9208 _tmp563_ = cvalueparam;
9209 vala_ccode_function_add_parameter (_tmp562_, _tmp563_);
9212 _tmp565_ = vala_property_accessor_get_value_type (_tmp564_);
9213 _tmp566_ = _tmp565_;
9214 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp566_, VALA_TYPE_ARRAY_TYPE)) {
9215 ValaPropertyAccessor* _tmp567_;
9216 ValaDataType* _tmp568_;
9217 ValaDataType* _tmp569_;
9218 ValaArrayType* _tmp570_;
9219 ValaArrayType* array_type;
9221 gchar* length_ctype;
9222 ValaPropertyAccessor* _tmp572_;
9226 _tmp568_ = vala_property_accessor_get_value_type (_tmp567_);
9227 _tmp569_ = _tmp568_;
9228 _tmp570_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp569_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
9229 array_type = _tmp570_;
9230 _tmp571_ = g_strdup ("int");
9231 length_ctype = _tmp571_;
9233 _tmp573_ = vala_property_accessor_get_readable (_tmp572_);
9234 _tmp574_ = _tmp573_;
9237 _tmp575_ = g_strdup ("int*");
9238 _g_free0 (length_ctype);
9239 length_ctype = _tmp575_;
9250 ValaArrayType* _tmp580_;
9253 const gchar* _tmp583_ = NULL;
9254 ValaPropertyAccessor* _tmp584_;
9257 ValaCCodeFunction* _tmp587_;
9258 const gchar* _tmp588_;
9260 gchar* _tmp590_ = NULL;
9262 const gchar* _tmp592_;
9263 ValaCCodeParameter* _tmp593_;
9264 ValaCCodeParameter* _tmp594_;
9265 _tmp577_ = _tmp576_;
9273 _tmp580_ = array_type;
9274 _tmp581_ = vala_array_type_get_rank (_tmp580_);
9275 _tmp582_ = _tmp581_;
9276 if (!(_tmp579_ <= _tmp582_)) {
9280 _tmp585_ = vala_property_accessor_get_readable (_tmp584_);
9281 _tmp586_ = _tmp585_;
9283 _tmp583_ = "result";
9287 _tmp587_ = function;
9288 _tmp588_ = _tmp583_;
9290 _tmp590_ = vala_ccode_base_module_get_array_length_cname (self, _tmp588_, _tmp589_);
9291 _tmp591_ = _tmp590_;
9292 _tmp592_ = length_ctype;
9293 _tmp593_ = vala_ccode_parameter_new (_tmp591_, _tmp592_);
9294 _tmp594_ = _tmp593_;
9295 vala_ccode_function_add_parameter (_tmp587_, _tmp594_);
9296 _vala_ccode_node_unref0 (_tmp594_);
9297 _g_free0 (_tmp591_);
9301 _g_free0 (length_ctype);
9302 _vala_code_node_unref0 (array_type);
9304 gboolean _tmp595_ = FALSE;
9305 ValaPropertyAccessor* _tmp596_;
9306 ValaDataType* _tmp597_;
9307 ValaDataType* _tmp598_;
9310 _tmp597_ = vala_property_accessor_get_value_type (_tmp596_);
9311 _tmp598_ = _tmp597_;
9312 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp598_, VALA_TYPE_DELEGATE_TYPE)) {
9313 ValaPropertyAccessor* _tmp599_;
9314 ValaDataType* _tmp600_;
9315 ValaDataType* _tmp601_;
9316 ValaDelegate* _tmp602_;
9317 ValaDelegate* _tmp603_;
9321 _tmp600_ = vala_property_accessor_get_value_type (_tmp599_);
9322 _tmp601_ = _tmp600_;
9323 _tmp602_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp601_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
9324 _tmp603_ = _tmp602_;
9325 _tmp604_ = vala_delegate_get_has_target (_tmp603_);
9326 _tmp605_ = _tmp604_;
9327 _tmp595_ = _tmp605_;
9331 _tmp606_ = _tmp595_;
9333 const gchar* _tmp607_ = NULL;
9334 ValaPropertyAccessor* _tmp608_;
9337 const gchar* _tmp611_ = NULL;
9338 ValaPropertyAccessor* _tmp612_;
9341 ValaCCodeFunction* _tmp615_;
9342 const gchar* _tmp616_;
9343 gchar* _tmp617_ = NULL;
9345 const gchar* _tmp619_;
9346 ValaCCodeParameter* _tmp620_;
9347 ValaCCodeParameter* _tmp621_;
9348 gboolean _tmp622_ = FALSE;
9349 ValaPropertyAccessor* _tmp623_;
9354 _tmp609_ = vala_property_accessor_get_readable (_tmp608_);
9355 _tmp610_ = _tmp609_;
9357 _tmp607_ = "result";
9362 _tmp613_ = vala_property_accessor_get_readable (_tmp612_);
9363 _tmp614_ = _tmp613_;
9365 _tmp611_ = "gpointer*";
9367 _tmp611_ = "gpointer";
9369 _tmp615_ = function;
9370 _tmp616_ = _tmp607_;
9371 _tmp617_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp616_);
9372 _tmp618_ = _tmp617_;
9373 _tmp619_ = _tmp611_;
9374 _tmp620_ = vala_ccode_parameter_new (_tmp618_, _tmp619_);
9375 _tmp621_ = _tmp620_;
9376 vala_ccode_function_add_parameter (_tmp615_, _tmp621_);
9377 _vala_ccode_node_unref0 (_tmp621_);
9378 _g_free0 (_tmp618_);
9380 _tmp624_ = vala_property_accessor_get_readable (_tmp623_);
9381 _tmp625_ = _tmp624_;
9383 ValaPropertyAccessor* _tmp626_;
9384 ValaDataType* _tmp627_;
9385 ValaDataType* _tmp628_;
9389 _tmp627_ = vala_property_accessor_get_value_type (_tmp626_);
9390 _tmp628_ = _tmp627_;
9391 _tmp629_ = vala_data_type_get_value_owned (_tmp628_);
9392 _tmp630_ = _tmp629_;
9393 _tmp622_ = _tmp630_;
9397 _tmp631_ = _tmp622_;
9399 ValaCCodeFunction* _tmp632_;
9400 gchar* _tmp633_ = NULL;
9402 ValaCCodeParameter* _tmp635_;
9403 ValaCCodeParameter* _tmp636_;
9404 _tmp632_ = function;
9405 _tmp633_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value");
9406 _tmp634_ = _tmp633_;
9407 _tmp635_ = vala_ccode_parameter_new (_tmp634_, "GDestroyNotify");
9408 _tmp636_ = _tmp635_;
9409 vala_ccode_function_add_parameter (_tmp632_, _tmp636_);
9410 _vala_ccode_node_unref0 (_tmp636_);
9411 _g_free0 (_tmp634_);
9415 _tmp637_ = is_virtual;
9417 gboolean _tmp638_ = FALSE;
9418 gboolean _tmp639_ = FALSE;
9419 ValaProperty* _tmp640_;
9420 gboolean _tmp641_ = FALSE;
9424 _tmp641_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp640_);
9428 gboolean _tmp642_ = FALSE;
9429 ValaPropertyAccessor* _tmp643_;
9434 _tmp644_ = vala_property_accessor_get_readable (_tmp643_);
9435 _tmp645_ = _tmp644_;
9439 ValaPropertyAccessor* _tmp646_;
9443 _tmp647_ = vala_property_accessor_get_writable (_tmp646_);
9444 _tmp648_ = _tmp647_;
9445 _tmp642_ = _tmp648_;
9447 _tmp649_ = _tmp642_;
9448 _tmp639_ = !_tmp649_;
9450 _tmp650_ = _tmp639_;
9454 ValaPropertyAccessor* _tmp651_;
9455 ValaSymbolAccessibility _tmp652_;
9456 ValaSymbolAccessibility _tmp653_;
9458 _tmp652_ = vala_symbol_get_access ((ValaSymbol*) _tmp651_);
9459 _tmp653_ = _tmp652_;
9460 _tmp638_ = _tmp653_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
9462 _tmp654_ = _tmp638_;
9464 ValaCCodeFunction* _tmp655_;
9465 ValaCCodeFunction* _tmp656_;
9466 ValaCCodeModifiers _tmp657_;
9467 ValaCCodeModifiers _tmp658_;
9468 _tmp655_ = function;
9469 _tmp656_ = function;
9470 _tmp657_ = vala_ccode_function_get_modifiers (_tmp656_);
9471 _tmp658_ = _tmp657_;
9472 vala_ccode_function_set_modifiers (_tmp656_, _tmp658_ | VALA_CCODE_MODIFIERS_STATIC);
9475 _tmp659_ = function;
9476 vala_ccode_base_module_push_function (self, _tmp659_);
9478 _tmp662_ = vala_property_get_binding (_tmp661_);
9479 _tmp663_ = _tmp662_;
9480 if (_tmp663_ == VALA_MEMBER_BINDING_INSTANCE) {
9482 _tmp664_ = is_virtual;
9483 _tmp660_ = !_tmp664_;
9487 _tmp665_ = _tmp660_;
9489 gboolean _tmp666_ = FALSE;
9490 ValaPropertyAccessor* _tmp667_;
9495 _tmp668_ = vala_property_accessor_get_readable (_tmp667_);
9496 _tmp669_ = _tmp668_;
9501 _tmp670_ = returns_real_struct;
9502 _tmp666_ = _tmp670_;
9504 _tmp671_ = _tmp666_;
9506 ValaProperty* _tmp672_;
9507 ValaTypeSymbol* _tmp673_;
9510 vala_ccode_base_module_create_property_type_check_statement (self, _tmp672_, FALSE, _tmp673_, TRUE, "self");
9512 ValaProperty* _tmp674_;
9513 ValaTypeSymbol* _tmp675_;
9516 vala_ccode_base_module_create_property_type_check_statement (self, _tmp674_, TRUE, _tmp675_, TRUE, "self");
9520 _tmp678_ = vala_property_accessor_get_readable (_tmp677_);
9521 _tmp679_ = _tmp678_;
9524 _tmp680_ = returns_real_struct;
9525 _tmp676_ = !_tmp680_;
9529 _tmp681_ = _tmp676_;
9531 gboolean _tmp682_ = FALSE;
9532 ValaPropertyAccessor* _tmp683_;
9533 ValaBasicBlock* _tmp684_;
9534 ValaBasicBlock* _tmp685_;
9537 _tmp684_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp683_);
9538 _tmp685_ = _tmp684_;
9539 if (_tmp685_ == NULL) {
9542 ValaPropertyAccessor* _tmp686_;
9543 ValaBasicBlock* _tmp687_;
9544 ValaBasicBlock* _tmp688_;
9545 ValaList* _tmp689_ = NULL;
9550 _tmp687_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp686_);
9551 _tmp688_ = _tmp687_;
9552 _tmp689_ = vala_basic_block_get_predecessors (_tmp688_);
9553 _tmp690_ = _tmp689_;
9554 _tmp691_ = vala_collection_get_size ((ValaCollection*) _tmp690_);
9555 _tmp692_ = _tmp691_;
9556 _tmp682_ = _tmp692_ > 0;
9557 _vala_iterable_unref0 (_tmp690_);
9559 _tmp693_ = _tmp682_;
9561 ValaCCodeFunction* _tmp694_;
9562 ValaCCodeFunction* _tmp695_;
9563 ValaPropertyAccessor* _tmp696_;
9564 ValaDataType* _tmp697_;
9565 ValaDataType* _tmp698_;
9566 gchar* _tmp699_ = NULL;
9568 ValaCCodeVariableDeclarator* _tmp701_;
9569 ValaCCodeVariableDeclarator* _tmp702_;
9570 _tmp694_ = vala_ccode_base_module_get_ccode (self);
9571 _tmp695_ = _tmp694_;
9573 _tmp697_ = vala_property_accessor_get_value_type (_tmp696_);
9574 _tmp698_ = _tmp697_;
9575 _tmp699_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp698_);
9576 _tmp700_ = _tmp699_;
9577 _tmp701_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
9578 _tmp702_ = _tmp701_;
9579 vala_ccode_function_add_declaration (_tmp695_, _tmp700_, (ValaCCodeDeclarator*) _tmp702_, 0);
9580 _vala_ccode_node_unref0 (_tmp702_);
9581 _g_free0 (_tmp700_);
9584 _tmp703_ = is_virtual;
9586 ValaCCodeFunction* _tmp704_;
9587 ValaCCodeFunction* _tmp705_;
9588 ValaDataType* _tmp706_;
9589 gchar* _tmp707_ = NULL;
9591 ValaCCodeVariableDeclarator* _tmp709_;
9592 ValaCCodeVariableDeclarator* _tmp710_;
9593 ValaCCodeFunction* _tmp711_;
9594 ValaCCodeFunction* _tmp712_;
9595 ValaCCodeIdentifier* _tmp713_;
9596 ValaCCodeIdentifier* _tmp714_;
9597 ValaObjectType* _tmp715_;
9598 ValaCCodeIdentifier* _tmp716_;
9599 ValaCCodeIdentifier* _tmp717_;
9600 ValaGLibValue* _tmp718_;
9601 ValaGLibValue* _tmp719_;
9602 ValaDataType* _tmp720_;
9603 ValaPropertyAccessor* _tmp721_;
9604 ValaTargetValue* _tmp722_ = NULL;
9605 ValaTargetValue* _tmp723_;
9606 ValaCCodeExpression* _tmp724_ = NULL;
9607 ValaCCodeExpression* _tmp725_;
9608 _tmp704_ = vala_ccode_base_module_get_ccode (self);
9609 _tmp705_ = _tmp704_;
9610 _tmp706_ = this_type;
9611 _tmp707_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp706_);
9612 _tmp708_ = _tmp707_;
9613 _tmp709_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
9614 _tmp710_ = _tmp709_;
9615 vala_ccode_function_add_declaration (_tmp705_, _tmp708_, (ValaCCodeDeclarator*) _tmp710_, 0);
9616 _vala_ccode_node_unref0 (_tmp710_);
9617 _g_free0 (_tmp708_);
9618 _tmp711_ = vala_ccode_base_module_get_ccode (self);
9619 _tmp712_ = _tmp711_;
9620 _tmp713_ = vala_ccode_identifier_new ("self");
9621 _tmp714_ = _tmp713_;
9622 _tmp715_ = base_type;
9623 _tmp716_ = vala_ccode_identifier_new ("base");
9624 _tmp717_ = _tmp716_;
9625 _tmp718_ = vala_glib_value_new ((ValaDataType*) _tmp715_, (ValaCCodeExpression*) _tmp717_, TRUE);
9626 _tmp719_ = _tmp718_;
9627 _tmp720_ = this_type;
9629 _tmp722_ = vala_ccode_base_module_transform_value (self, (ValaTargetValue*) _tmp719_, _tmp720_, (ValaCodeNode*) _tmp721_);
9630 _tmp723_ = _tmp722_;
9631 _tmp724_ = vala_ccode_base_module_get_cvalue_ (self, _tmp723_);
9632 _tmp725_ = _tmp724_;
9633 vala_ccode_function_add_assignment (_tmp712_, (ValaCCodeExpression*) _tmp714_, _tmp725_);
9634 _vala_ccode_node_unref0 (_tmp725_);
9635 _vala_target_value_unref0 (_tmp723_);
9636 _vala_target_value_unref0 (_tmp719_);
9637 _vala_ccode_node_unref0 (_tmp717_);
9638 _vala_ccode_node_unref0 (_tmp714_);
9641 _tmp727_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp726_);
9642 _tmp728_ = _tmp727_;
9643 vala_code_node_emit ((ValaCodeNode*) _tmp728_, (ValaCodeGenerator*) self);
9644 _tmp729_ = vala_ccode_base_module_get_current_method_inner_error (self);
9645 _tmp730_ = _tmp729_;
9647 ValaCCodeFunction* _tmp731_;
9648 ValaCCodeFunction* _tmp732_;
9649 ValaCCodeConstant* _tmp733_;
9650 ValaCCodeConstant* _tmp734_;
9651 ValaCCodeVariableDeclarator* _tmp735_;
9652 ValaCCodeVariableDeclarator* _tmp736_;
9653 _tmp731_ = vala_ccode_base_module_get_ccode (self);
9654 _tmp732_ = _tmp731_;
9655 _tmp733_ = vala_ccode_constant_new ("NULL");
9656 _tmp734_ = _tmp733_;
9657 _tmp735_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp734_, NULL);
9658 _tmp736_ = _tmp735_;
9659 vala_ccode_function_add_declaration (_tmp732_, "GError *", (ValaCCodeDeclarator*) _tmp736_, 0);
9660 _vala_ccode_node_unref0 (_tmp736_);
9661 _vala_ccode_node_unref0 (_tmp734_);
9664 _tmp740_ = vala_ccode_base_module_is_gobject_property (self, _tmp739_);
9666 ValaProperty* _tmp741_;
9667 gboolean _tmp742_ = FALSE;
9669 _tmp742_ = vala_ccode_base_module_get_ccode_notify (_tmp741_);
9670 _tmp738_ = _tmp742_;
9674 _tmp743_ = _tmp738_;
9676 gboolean _tmp744_ = FALSE;
9677 ValaPropertyAccessor* _tmp745_;
9682 _tmp746_ = vala_property_accessor_get_writable (_tmp745_);
9683 _tmp747_ = _tmp746_;
9687 ValaPropertyAccessor* _tmp748_;
9691 _tmp749_ = vala_property_accessor_get_construction (_tmp748_);
9692 _tmp750_ = _tmp749_;
9693 _tmp744_ = _tmp750_;
9695 _tmp751_ = _tmp744_;
9696 _tmp737_ = _tmp751_;
9700 _tmp752_ = _tmp737_;
9702 ValaCCodeIdentifier* _tmp753_;
9703 ValaCCodeIdentifier* _tmp754_;
9704 ValaCCodeFunctionCall* _tmp755_;
9705 ValaCCodeFunctionCall* _tmp756_;
9706 ValaCCodeFunctionCall* notify_call;
9707 ValaCCodeFunctionCall* _tmp757_;
9708 ValaCCodeIdentifier* _tmp758_;
9709 ValaCCodeIdentifier* _tmp759_;
9710 ValaCCodeCastExpression* _tmp760_;
9711 ValaCCodeCastExpression* _tmp761_;
9712 ValaCCodeFunctionCall* _tmp762_;
9713 ValaProperty* _tmp763_;
9714 ValaCCodeConstant* _tmp764_ = NULL;
9715 ValaCCodeConstant* _tmp765_;
9716 ValaCCodeFunction* _tmp766_;
9717 ValaCCodeFunction* _tmp767_;
9718 ValaCCodeFunctionCall* _tmp768_;
9719 _tmp753_ = vala_ccode_identifier_new ("g_object_notify");
9720 _tmp754_ = _tmp753_;
9721 _tmp755_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp754_);
9722 _tmp756_ = _tmp755_;
9723 _vala_ccode_node_unref0 (_tmp754_);
9724 notify_call = _tmp756_;
9725 _tmp757_ = notify_call;
9726 _tmp758_ = vala_ccode_identifier_new ("self");
9727 _tmp759_ = _tmp758_;
9728 _tmp760_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp759_, "GObject *");
9729 _tmp761_ = _tmp760_;
9730 vala_ccode_function_call_add_argument (_tmp757_, (ValaCCodeExpression*) _tmp761_);
9731 _vala_ccode_node_unref0 (_tmp761_);
9732 _vala_ccode_node_unref0 (_tmp759_);
9733 _tmp762_ = notify_call;
9735 _tmp764_ = vala_ccode_base_module_get_property_canonical_cconstant (self, _tmp763_);
9736 _tmp765_ = _tmp764_;
9737 vala_ccode_function_call_add_argument (_tmp762_, (ValaCCodeExpression*) _tmp765_);
9738 _vala_ccode_node_unref0 (_tmp765_);
9739 _tmp766_ = vala_ccode_base_module_get_ccode (self);
9740 _tmp767_ = _tmp766_;
9741 _tmp768_ = notify_call;
9742 vala_ccode_function_add_expression (_tmp767_, (ValaCCodeExpression*) _tmp768_);
9743 _vala_ccode_node_unref0 (notify_call);
9745 _tmp769_ = self->cfile;
9746 _tmp770_ = function;
9747 vala_ccode_file_add_function (_tmp769_, _tmp770_);
9748 _vala_code_node_unref0 (base_type);
9749 _vala_ccode_node_unref0 (function);
9752 vala_ccode_base_module_pop_line (self);
9753 vala_ccode_base_module_pop_context (self);
9754 _vala_ccode_node_unref0 (cvalueparam);
9755 _vala_ccode_node_unref0 (cselfparam);
9756 _vala_code_node_unref0 (this_type);
9757 _vala_code_node_unref0 (t);
9758 _vala_code_node_unref0 (prop);
9762 static void vala_ccode_base_module_real_visit_destructor (ValaCodeVisitor* base, ValaDestructor* d) {
9763 ValaCCodeBaseModule * self;
9764 gboolean _tmp0_ = FALSE;
9765 ValaDestructor* _tmp1_;
9766 ValaMemberBinding _tmp2_;
9767 ValaMemberBinding _tmp3_;
9769 self = (ValaCCodeBaseModule*) base;
9770 g_return_if_fail (d != NULL);
9772 _tmp2_ = vala_destructor_get_binding (_tmp1_);
9774 if (_tmp3_ == VALA_MEMBER_BINDING_STATIC) {
9776 _tmp4_ = self->in_plugin;
9783 ValaDestructor* _tmp6_;
9784 ValaSourceReference* _tmp7_;
9785 ValaSourceReference* _tmp8_;
9786 ValaDestructor* _tmp9_;
9788 _tmp7_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp6_);
9790 vala_report_error (_tmp8_, "static destructors are only supported for dynamic types");
9792 vala_code_node_set_error ((ValaCodeNode*) _tmp9_, TRUE);
9798 gint vala_ccode_base_module_get_block_id (ValaCCodeBaseModule* self, ValaBlock* b) {
9802 gpointer _tmp2_ = NULL;
9805 g_return_val_if_fail (self != NULL, 0);
9806 g_return_val_if_fail (b != NULL, 0);
9807 _tmp0_ = self->priv->block_map;
9809 _tmp2_ = vala_map_get (_tmp0_, _tmp1_);
9810 _result_ = (gint) ((gintptr) _tmp2_);
9818 _tmp4_ = self->priv->next_block_id;
9819 self->priv->next_block_id = _tmp4_ + 1;
9820 _tmp5_ = self->priv->next_block_id;
9822 _tmp6_ = self->priv->block_map;
9825 vala_map_set (_tmp6_, _tmp7_, (gpointer) ((gintptr) _tmp8_));
9832 gboolean vala_ccode_base_module_no_implicit_copy (ValaCCodeBaseModule* self, ValaDataType* type) {
9833 gboolean result = FALSE;
9834 ValaDataType* _tmp0_;
9835 ValaTypeSymbol* _tmp1_;
9836 ValaTypeSymbol* _tmp2_;
9839 gboolean _tmp4_ = FALSE;
9840 gboolean _tmp5_ = FALSE;
9841 ValaDataType* _tmp6_;
9844 g_return_val_if_fail (self != NULL, FALSE);
9845 g_return_val_if_fail (type != NULL, FALSE);
9847 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
9849 _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp2_) : NULL);
9852 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_DELEGATE_TYPE)) {
9855 ValaDataType* _tmp7_;
9856 gboolean _tmp8_ = FALSE;
9858 _tmp8_ = vala_data_type_is_array (_tmp7_);
9865 gboolean _tmp10_ = FALSE;
9866 gboolean _tmp11_ = FALSE;
9867 gboolean _tmp12_ = FALSE;
9873 if (_tmp13_ != NULL) {
9878 _tmp15_ = vala_class_get_is_immutable (_tmp14_);
9887 gboolean _tmp19_ = FALSE;
9889 _tmp19_ = vala_ccode_base_module_is_reference_counting ((ValaTypeSymbol*) _tmp18_);
9897 gboolean _tmp22_ = FALSE;
9899 _tmp22_ = vala_ccode_base_module_get_ccode_is_gboxed ((ValaTypeSymbol*) _tmp21_);
9909 _vala_code_node_unref0 (cl);
9914 static void vala_ccode_base_module_capture_parameter (ValaCCodeBaseModule* self, ValaParameter* param, ValaCCodeStruct* data, gint block_id) {
9915 ValaParameter* _tmp0_;
9916 ValaDataType* _tmp1_;
9917 ValaDataType* _tmp2_;
9918 ValaCCodeFile* _tmp3_;
9919 ValaParameter* _tmp4_;
9920 ValaDataType* _tmp5_;
9921 ValaDataType* _tmp6_;
9922 ValaDataType* _tmp7_ = NULL;
9923 ValaDataType* param_type;
9924 ValaParameter* _tmp8_;
9925 ValaDataType* _tmp9_;
9926 ValaDataType* _tmp10_;
9929 ValaCCodeStruct* _tmp18_;
9930 ValaDataType* _tmp19_;
9931 gchar* _tmp20_ = NULL;
9933 ValaParameter* _tmp22_;
9934 const gchar* _tmp23_;
9935 const gchar* _tmp24_;
9936 gchar* _tmp25_ = NULL;
9938 ValaParameter* _tmp27_;
9939 ValaParameter* _tmp28_;
9940 ValaTargetValue* _tmp29_ = NULL;
9941 ValaTargetValue* value;
9942 ValaParameter* _tmp30_;
9943 ValaDataType* _tmp31_;
9944 ValaDataType* _tmp32_;
9945 ValaArrayType* _tmp33_;
9946 ValaArrayType* array_type;
9947 ValaParameter* _tmp34_;
9948 ValaDataType* _tmp35_;
9949 ValaDataType* _tmp36_;
9950 ValaDelegateType* _tmp37_;
9951 ValaDelegateType* deleg_type;
9952 gboolean _tmp38_ = FALSE;
9953 ValaArrayType* _tmp39_;
9955 ValaParameter* _tmp85_;
9956 ValaParameter* _tmp86_;
9957 ValaTargetValue* _tmp87_;
9958 g_return_if_fail (self != NULL);
9959 g_return_if_fail (param != NULL);
9960 g_return_if_fail (data != NULL);
9962 _tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
9964 _tmp3_ = self->cfile;
9965 vala_ccode_base_module_generate_type_declaration (self, _tmp2_, _tmp3_);
9967 _tmp5_ = vala_variable_get_variable_type ((ValaVariable*) _tmp4_);
9969 _tmp7_ = vala_data_type_copy (_tmp6_);
9970 param_type = _tmp7_;
9972 _tmp9_ = vala_variable_get_variable_type ((ValaVariable*) _tmp8_);
9974 _tmp11_ = vala_data_type_get_value_owned (_tmp10_);
9977 ValaDataType* _tmp13_;
9978 ValaParameter* _tmp14_;
9979 ValaDataType* _tmp15_;
9980 ValaDataType* _tmp16_;
9981 gboolean _tmp17_ = FALSE;
9982 _tmp13_ = param_type;
9984 _tmp15_ = vala_variable_get_variable_type ((ValaVariable*) _tmp14_);
9986 _tmp17_ = vala_ccode_base_module_no_implicit_copy (self, _tmp16_);
9987 vala_data_type_set_value_owned (_tmp13_, !_tmp17_);
9990 _tmp19_ = param_type;
9991 _tmp20_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp19_);
9994 _tmp23_ = vala_symbol_get_name ((ValaSymbol*) _tmp22_);
9996 _tmp25_ = vala_ccode_base_module_get_variable_cname (self, _tmp24_);
9998 vala_ccode_struct_add_field (_tmp18_, _tmp21_, _tmp26_, NULL);
10000 _g_free0 (_tmp21_);
10002 vala_parameter_set_captured (_tmp27_, FALSE);
10004 _tmp29_ = vala_code_generator_load_parameter ((ValaCodeGenerator*) self, _tmp28_);
10007 _tmp31_ = vala_variable_get_variable_type ((ValaVariable*) _tmp30_);
10009 _tmp33_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp32_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp32_) : NULL);
10010 array_type = _tmp33_;
10012 _tmp35_ = vala_variable_get_variable_type ((ValaVariable*) _tmp34_);
10014 _tmp37_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp36_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp36_) : NULL);
10015 deleg_type = _tmp37_;
10016 _tmp39_ = array_type;
10017 if (_tmp39_ != NULL) {
10018 ValaParameter* _tmp40_;
10019 gboolean _tmp41_ = FALSE;
10021 _tmp41_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp40_);
10037 ValaArrayType* _tmp47_;
10040 ValaCCodeStruct* _tmp50_;
10041 ValaParameter* _tmp51_;
10043 gchar* _tmp53_ = NULL;
10053 _tmp47_ = array_type;
10054 _tmp48_ = vala_array_type_get_rank (_tmp47_);
10056 if (!(_tmp46_ <= _tmp49_)) {
10062 _tmp53_ = vala_ccode_base_module_get_parameter_array_length_cname (self, _tmp51_, _tmp52_);
10064 vala_ccode_struct_add_field (_tmp50_, "gint", _tmp54_, NULL);
10065 _g_free0 (_tmp54_);
10070 gboolean _tmp55_ = FALSE;
10071 ValaDelegateType* _tmp56_;
10073 _tmp56_ = deleg_type;
10074 if (_tmp56_ != NULL) {
10075 ValaDelegateType* _tmp57_;
10076 ValaDelegate* _tmp58_;
10077 ValaDelegate* _tmp59_;
10080 _tmp57_ = deleg_type;
10081 _tmp58_ = vala_delegate_type_get_delegate_symbol (_tmp57_);
10083 _tmp60_ = vala_delegate_get_has_target (_tmp59_);
10091 ValaCCodeStruct* _tmp63_;
10092 ValaParameter* _tmp64_;
10093 gchar* _tmp65_ = NULL;
10095 ValaParameter* _tmp67_;
10096 ValaDataType* _tmp68_;
10097 ValaDataType* _tmp69_;
10102 _tmp65_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp64_);
10104 vala_ccode_struct_add_field (_tmp63_, "gpointer", _tmp66_, NULL);
10105 _g_free0 (_tmp66_);
10107 _tmp68_ = vala_variable_get_variable_type ((ValaVariable*) _tmp67_);
10109 _tmp70_ = vala_data_type_get_value_owned (_tmp69_);
10112 ValaCCodeStruct* _tmp72_;
10113 ValaParameter* _tmp73_;
10114 const gchar* _tmp74_;
10115 const gchar* _tmp75_;
10116 gchar* _tmp76_ = NULL;
10118 gchar* _tmp78_ = NULL;
10120 ValaParameter* _tmp80_;
10121 ValaTargetValue* _tmp81_ = NULL;
10122 ValaTargetValue* lvalue;
10123 ValaTargetValue* _tmp82_;
10124 ValaTargetValue* _tmp83_;
10125 ValaCCodeExpression* _tmp84_ = NULL;
10128 _tmp74_ = vala_symbol_get_name ((ValaSymbol*) _tmp73_);
10130 _tmp76_ = vala_ccode_base_module_get_variable_cname (self, _tmp75_);
10132 _tmp78_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp77_);
10134 vala_ccode_struct_add_field (_tmp72_, "GDestroyNotify", _tmp79_, NULL);
10135 _g_free0 (_tmp79_);
10136 _g_free0 (_tmp77_);
10138 _tmp81_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp80_);
10142 _tmp84_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp83_);
10143 _vala_ccode_node_unref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp82_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->delegate_target_destroy_notify_cvalue);
10144 G_TYPE_CHECK_INSTANCE_CAST (_tmp82_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->delegate_target_destroy_notify_cvalue = _tmp84_;
10145 _vala_target_value_unref0 (lvalue);
10150 vala_parameter_set_captured (_tmp85_, TRUE);
10153 vala_code_generator_store_parameter ((ValaCodeGenerator*) self, _tmp86_, _tmp87_, TRUE);
10154 _vala_code_node_unref0 (deleg_type);
10155 _vala_code_node_unref0 (array_type);
10156 _vala_target_value_unref0 (value);
10157 _vala_code_node_unref0 (param_type);
10161 static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, ValaBlock* b) {
10162 ValaCCodeBaseModule * self;
10163 ValaCCodeBaseModuleEmitContext* _tmp0_;
10166 ValaList* _tmp3_ = NULL;
10167 ValaList* local_vars;
10168 gboolean _tmp4_ = FALSE;
10169 gboolean _tmp5_ = FALSE;
10171 ValaCodeNode* _tmp7_;
10172 ValaCodeNode* _tmp8_;
10175 ValaBlock* _tmp19_;
10178 ValaBlock* _tmp904_;
10179 ValaSymbol* _tmp905_;
10180 ValaSymbol* _tmp906_;
10181 ValaBlock* _tmp987_;
10184 gboolean _tmp1017_ = FALSE;
10185 gboolean _tmp1018_ = FALSE;
10186 ValaBlock* _tmp1019_;
10187 ValaCodeNode* _tmp1020_;
10188 ValaCodeNode* _tmp1021_;
10189 gboolean _tmp1025_;
10190 gboolean _tmp1029_;
10191 ValaCCodeBaseModuleEmitContext* _tmp1032_;
10192 self = (ValaCCodeBaseModule*) base;
10193 g_return_if_fail (b != NULL);
10194 _tmp0_ = self->emit_context;
10196 vala_ccode_base_module_emit_context_push_symbol (_tmp0_, (ValaSymbol*) _tmp1_);
10198 _tmp3_ = vala_block_get_local_variables (_tmp2_);
10199 local_vars = _tmp3_;
10201 _tmp7_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp6_);
10203 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_BLOCK)) {
10207 ValaCodeNode* _tmp10_;
10208 ValaCodeNode* _tmp11_;
10210 _tmp10_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp9_);
10212 _tmp5_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp11_, VALA_TYPE_SWITCH_STATEMENT);
10218 ValaBlock* _tmp13_;
10219 ValaCodeNode* _tmp14_;
10220 ValaCodeNode* _tmp15_;
10222 _tmp14_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp13_);
10224 _tmp4_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, VALA_TYPE_TRY_STATEMENT);
10228 ValaCCodeFunction* _tmp17_;
10229 ValaCCodeFunction* _tmp18_;
10230 _tmp17_ = vala_ccode_base_module_get_ccode (self);
10232 vala_ccode_function_open_block (_tmp18_);
10235 _tmp20_ = vala_block_get_captured (_tmp19_);
10238 ValaBlock* _tmp22_;
10239 ValaSymbol* _tmp23_;
10240 ValaSymbol* _tmp24_;
10241 ValaBlock* _tmp25_ = NULL;
10242 ValaBlock* _tmp26_;
10243 ValaBlock* parent_block;
10244 ValaBlock* _tmp27_;
10248 gchar* _tmp30_ = NULL;
10249 gchar* struct_name;
10250 const gchar* _tmp31_;
10253 ValaCCodeStruct* _tmp34_;
10254 ValaCCodeStruct* _tmp35_;
10255 ValaCCodeStruct* data;
10256 ValaCCodeStruct* _tmp36_;
10257 ValaBlock* _tmp37_;
10258 ValaCCodeIdentifier* _tmp176_;
10259 ValaCCodeIdentifier* _tmp177_;
10260 ValaCCodeFunctionCall* _tmp178_;
10261 ValaCCodeFunctionCall* _tmp179_;
10262 ValaCCodeFunctionCall* data_alloc;
10263 ValaCCodeFunctionCall* _tmp180_;
10264 const gchar* _tmp181_;
10265 ValaCCodeIdentifier* _tmp182_;
10266 ValaCCodeIdentifier* _tmp183_;
10267 gboolean _tmp184_ = FALSE;
10268 ValaCCodeFunction* _tmp202_;
10269 ValaCCodeFunction* _tmp203_;
10271 gchar* _tmp205_ = NULL;
10273 ValaCCodeExpression* _tmp207_ = NULL;
10274 ValaCCodeExpression* _tmp208_;
10275 ValaCCodeFunctionCall* _tmp209_;
10276 ValaCCodeFunction* _tmp210_;
10277 ValaCCodeFunction* _tmp211_;
10279 gchar* _tmp213_ = NULL;
10281 ValaCCodeExpression* _tmp215_ = NULL;
10282 ValaCCodeExpression* _tmp216_;
10283 ValaCCodeMemberAccess* _tmp217_;
10284 ValaCCodeMemberAccess* _tmp218_;
10285 ValaCCodeIdentifier* _tmp219_;
10286 ValaCCodeIdentifier* _tmp220_;
10287 ValaBlock* _tmp221_;
10288 ValaBlock* _tmp347_;
10289 ValaSymbol* _tmp348_;
10290 ValaSymbol* _tmp349_;
10291 const gchar* _tmp446_;
10294 const gchar* _tmp449_;
10295 ValaCCodeVariableDeclarator* _tmp450_;
10296 ValaCCodeVariableDeclarator* _tmp451_;
10297 ValaCCodeTypeDefinition* _tmp452_;
10298 ValaCCodeTypeDefinition* _tmp453_;
10299 ValaCCodeTypeDefinition* _typedef_;
10300 ValaCCodeFile* _tmp454_;
10301 ValaCCodeTypeDefinition* _tmp455_;
10302 ValaCCodeFile* _tmp456_;
10303 ValaCCodeStruct* _tmp457_;
10305 gchar* _tmp459_ = NULL;
10307 const gchar* _tmp461_;
10310 ValaCCodeFunction* _tmp464_;
10311 ValaCCodeFunction* _tmp465_;
10312 ValaCCodeFunction* ref_fun;
10313 ValaCCodeFunction* _tmp466_;
10315 gchar* _tmp468_ = NULL;
10317 const gchar* _tmp470_;
10320 ValaCCodeParameter* _tmp473_;
10321 ValaCCodeParameter* _tmp474_;
10322 ValaCCodeFunction* _tmp475_;
10323 ValaCCodeFunction* _tmp476_;
10324 ValaCCodeIdentifier* _tmp477_;
10325 ValaCCodeIdentifier* _tmp478_;
10326 ValaCCodeFunctionCall* _tmp479_;
10327 ValaCCodeFunctionCall* _tmp480_;
10328 ValaCCodeFunctionCall* ccall;
10329 ValaCCodeFunctionCall* _tmp481_;
10331 gchar* _tmp483_ = NULL;
10333 ValaCCodeIdentifier* _tmp485_;
10334 ValaCCodeIdentifier* _tmp486_;
10335 ValaCCodeMemberAccess* _tmp487_;
10336 ValaCCodeMemberAccess* _tmp488_;
10337 ValaCCodeUnaryExpression* _tmp489_;
10338 ValaCCodeUnaryExpression* _tmp490_;
10339 ValaCCodeFunction* _tmp491_;
10340 ValaCCodeFunction* _tmp492_;
10341 ValaCCodeFunctionCall* _tmp493_;
10342 ValaCCodeFunction* _tmp494_;
10343 ValaCCodeFunction* _tmp495_;
10345 gchar* _tmp497_ = NULL;
10347 ValaCCodeIdentifier* _tmp499_;
10348 ValaCCodeIdentifier* _tmp500_;
10349 ValaCCodeFile* _tmp501_;
10350 ValaCCodeFunction* _tmp502_;
10351 ValaCCodeFile* _tmp503_;
10352 ValaCCodeFunction* _tmp504_;
10354 gchar* _tmp506_ = NULL;
10356 ValaCCodeFunction* _tmp508_;
10357 ValaCCodeFunction* _tmp509_;
10358 ValaCCodeFunction* unref_fun;
10359 ValaCCodeFunction* _tmp510_;
10360 ValaCCodeParameter* _tmp511_;
10361 ValaCCodeParameter* _tmp512_;
10362 ValaCCodeFunction* _tmp513_;
10363 ValaCCodeFunction* _tmp514_;
10364 ValaCCodeFunction* _tmp515_;
10365 ValaCCodeFunction* _tmp516_;
10366 const gchar* _tmp517_;
10370 gchar* _tmp521_ = NULL;
10372 ValaCCodeIdentifier* _tmp523_;
10373 ValaCCodeIdentifier* _tmp524_;
10374 const gchar* _tmp525_;
10377 ValaCCodeCastExpression* _tmp528_;
10378 ValaCCodeCastExpression* _tmp529_;
10379 ValaCCodeVariableDeclarator* _tmp530_;
10380 ValaCCodeVariableDeclarator* _tmp531_;
10381 ValaCCodeIdentifier* _tmp532_;
10382 ValaCCodeIdentifier* _tmp533_;
10383 ValaCCodeFunctionCall* _tmp534_;
10384 ValaCCodeFunctionCall* _tmp535_;
10386 gchar* _tmp537_ = NULL;
10388 ValaCCodeIdentifier* _tmp539_;
10389 ValaCCodeIdentifier* _tmp540_;
10390 ValaCCodeMemberAccess* _tmp541_;
10391 ValaCCodeMemberAccess* _tmp542_;
10392 ValaCCodeUnaryExpression* _tmp543_;
10393 ValaCCodeUnaryExpression* _tmp544_;
10394 ValaCCodeFunction* _tmp545_;
10395 ValaCCodeFunction* _tmp546_;
10396 ValaCCodeFunctionCall* _tmp547_;
10398 gchar* _tmp549_ = NULL;
10400 ValaCCodeIdentifier* _tmp551_;
10401 ValaCCodeExpression* _tmp552_;
10402 ValaCCodeExpression* outer_block;
10403 ValaBlock* _tmp553_;
10404 ValaBlock* parent_closure_block;
10405 ValaDataType* _tmp566_ = NULL;
10406 ValaDataType* _tmp567_;
10408 ValaMethod* _tmp586_;
10409 ValaMethod* _tmp587_;
10410 ValaBlock* _tmp693_;
10411 ValaSymbol* _tmp694_;
10412 ValaSymbol* _tmp695_;
10413 ValaBlock* _tmp776_;
10414 ValaCCodeIdentifier* _tmp831_;
10415 ValaCCodeIdentifier* _tmp832_;
10416 ValaCCodeFunctionCall* _tmp833_;
10417 ValaCCodeFunctionCall* _tmp834_;
10418 ValaCCodeFunctionCall* data_free;
10419 ValaCCodeFunctionCall* _tmp835_;
10420 const gchar* _tmp836_;
10421 ValaCCodeIdentifier* _tmp837_;
10422 ValaCCodeIdentifier* _tmp838_;
10423 ValaCCodeFunctionCall* _tmp839_;
10425 gchar* _tmp841_ = NULL;
10427 ValaCCodeIdentifier* _tmp843_;
10428 ValaCCodeIdentifier* _tmp844_;
10429 ValaCCodeFunction* _tmp845_;
10430 ValaCCodeFunction* _tmp846_;
10431 ValaCCodeFunctionCall* _tmp847_;
10432 ValaCCodeFunction* _tmp848_;
10433 ValaCCodeFunction* _tmp849_;
10434 ValaCCodeFile* _tmp850_;
10435 ValaCCodeFunction* _tmp851_;
10436 ValaCCodeFile* _tmp852_;
10437 ValaCCodeFunction* _tmp853_;
10439 _tmp23_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp22_);
10441 _tmp25_ = vala_ccode_base_module_next_closure_block (self, _tmp24_);
10442 _tmp26_ = _vala_code_node_ref0 (_tmp25_);
10443 parent_block = _tmp26_;
10445 _tmp28_ = vala_ccode_base_module_get_block_id (self, _tmp27_);
10446 block_id = _tmp28_;
10447 _tmp29_ = block_id;
10448 _tmp30_ = g_strdup_printf ("Block%dData", _tmp29_);
10449 struct_name = _tmp30_;
10450 _tmp31_ = struct_name;
10451 _tmp32_ = g_strconcat ("_", _tmp31_, NULL);
10453 _tmp34_ = vala_ccode_struct_new (_tmp33_);
10455 _g_free0 (_tmp33_);
10458 vala_ccode_struct_add_field (_tmp36_, "int", "_ref_count_", NULL);
10459 _tmp37_ = parent_block;
10460 if (_tmp37_ != NULL) {
10461 ValaBlock* _tmp38_;
10463 gint parent_block_id;
10464 ValaCCodeStruct* _tmp40_;
10466 gchar* _tmp42_ = NULL;
10469 gchar* _tmp45_ = NULL;
10471 _tmp38_ = parent_block;
10472 _tmp39_ = vala_ccode_base_module_get_block_id (self, _tmp38_);
10473 parent_block_id = _tmp39_;
10475 _tmp41_ = parent_block_id;
10476 _tmp42_ = g_strdup_printf ("Block%dData *", _tmp41_);
10478 _tmp44_ = parent_block_id;
10479 _tmp45_ = g_strdup_printf ("_data%d_", _tmp44_);
10481 vala_ccode_struct_add_field (_tmp40_, _tmp43_, _tmp46_, NULL);
10482 _g_free0 (_tmp46_);
10483 _g_free0 (_tmp43_);
10485 ValaDataType* _tmp47_ = NULL;
10486 ValaDataType* _tmp48_;
10488 ValaMethod* _tmp57_;
10489 ValaMethod* _tmp58_;
10490 _tmp47_ = vala_ccode_base_module_get_this_type (self);
10492 _tmp49_ = _tmp48_ != NULL;
10493 _vala_code_node_unref0 (_tmp48_);
10495 ValaCCodeStruct* _tmp50_;
10496 ValaTypeSymbol* _tmp51_;
10497 ValaTypeSymbol* _tmp52_;
10498 gchar* _tmp53_ = NULL;
10500 gchar* _tmp55_ = NULL;
10503 _tmp51_ = vala_ccode_base_module_get_current_type_symbol (self);
10505 _tmp53_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp52_);
10507 _tmp55_ = g_strdup_printf ("%s *", _tmp54_);
10509 vala_ccode_struct_add_field (_tmp50_, _tmp56_, "self", NULL);
10510 _g_free0 (_tmp56_);
10511 _g_free0 (_tmp54_);
10513 _tmp57_ = vala_ccode_base_module_get_current_method (self);
10515 if (_tmp58_ != NULL) {
10517 ValaMethod* _tmp59_;
10518 ValaMethod* _tmp60_;
10519 ValaList* _tmp61_ = NULL;
10520 ValaList* _type_param_list;
10524 gint _type_param_size;
10525 gint _type_param_index;
10526 _tmp59_ = vala_ccode_base_module_get_current_method (self);
10528 _tmp61_ = vala_method_get_type_parameters (_tmp60_);
10529 _type_param_list = _tmp61_;
10530 _tmp62_ = _type_param_list;
10531 _tmp63_ = vala_collection_get_size ((ValaCollection*) _tmp62_);
10533 _type_param_size = _tmp64_;
10534 _type_param_index = -1;
10541 gpointer _tmp70_ = NULL;
10542 ValaTypeParameter* type_param;
10543 gchar* func_name = NULL;
10544 ValaTypeParameter* _tmp71_;
10545 const gchar* _tmp72_;
10546 const gchar* _tmp73_;
10547 gchar* _tmp74_ = NULL;
10549 gchar* _tmp76_ = NULL;
10550 ValaCCodeStruct* _tmp77_;
10551 const gchar* _tmp78_;
10552 ValaTypeParameter* _tmp79_;
10553 const gchar* _tmp80_;
10554 const gchar* _tmp81_;
10555 gchar* _tmp82_ = NULL;
10557 gchar* _tmp84_ = NULL;
10558 ValaCCodeStruct* _tmp85_;
10559 const gchar* _tmp86_;
10560 ValaTypeParameter* _tmp87_;
10561 const gchar* _tmp88_;
10562 const gchar* _tmp89_;
10563 gchar* _tmp90_ = NULL;
10565 gchar* _tmp92_ = NULL;
10566 ValaCCodeStruct* _tmp93_;
10567 const gchar* _tmp94_;
10568 _tmp65_ = _type_param_index;
10569 _type_param_index = _tmp65_ + 1;
10570 _tmp66_ = _type_param_index;
10571 _tmp67_ = _type_param_size;
10572 if (!(_tmp66_ < _tmp67_)) {
10575 _tmp68_ = _type_param_list;
10576 _tmp69_ = _type_param_index;
10577 _tmp70_ = vala_list_get (_tmp68_, _tmp69_);
10578 type_param = (ValaTypeParameter*) _tmp70_;
10579 _tmp71_ = type_param;
10580 _tmp72_ = vala_symbol_get_name ((ValaSymbol*) _tmp71_);
10582 _tmp74_ = g_utf8_strdown (_tmp73_, (gssize) (-1));
10584 _tmp76_ = g_strdup_printf ("%s_type", _tmp75_);
10585 _g_free0 (func_name);
10586 func_name = _tmp76_;
10587 _g_free0 (_tmp75_);
10589 _tmp78_ = func_name;
10590 vala_ccode_struct_add_field (_tmp77_, "GType", _tmp78_, NULL);
10591 _tmp79_ = type_param;
10592 _tmp80_ = vala_symbol_get_name ((ValaSymbol*) _tmp79_);
10594 _tmp82_ = g_utf8_strdown (_tmp81_, (gssize) (-1));
10596 _tmp84_ = g_strdup_printf ("%s_dup_func", _tmp83_);
10597 _g_free0 (func_name);
10598 func_name = _tmp84_;
10599 _g_free0 (_tmp83_);
10601 _tmp86_ = func_name;
10602 vala_ccode_struct_add_field (_tmp85_, "GBoxedCopyFunc", _tmp86_, NULL);
10603 _tmp87_ = type_param;
10604 _tmp88_ = vala_symbol_get_name ((ValaSymbol*) _tmp87_);
10606 _tmp90_ = g_utf8_strdown (_tmp89_, (gssize) (-1));
10608 _tmp92_ = g_strdup_printf ("%s_destroy_func", _tmp91_);
10609 _g_free0 (func_name);
10610 func_name = _tmp92_;
10611 _g_free0 (_tmp91_);
10613 _tmp94_ = func_name;
10614 vala_ccode_struct_add_field (_tmp93_, "GDestroyNotify", _tmp94_, NULL);
10615 _g_free0 (func_name);
10616 _vala_code_node_unref0 (type_param);
10618 _vala_iterable_unref0 (_type_param_list);
10625 ValaList* _local_list;
10631 _tmp95_ = local_vars;
10632 _tmp96_ = _vala_iterable_ref0 (_tmp95_);
10633 _local_list = _tmp96_;
10634 _tmp97_ = _local_list;
10635 _tmp98_ = vala_collection_get_size ((ValaCollection*) _tmp97_);
10637 _local_size = _tmp99_;
10643 ValaList* _tmp103_;
10645 gpointer _tmp105_ = NULL;
10646 ValaLocalVariable* local;
10647 ValaLocalVariable* _tmp106_;
10650 _tmp100_ = _local_index;
10651 _local_index = _tmp100_ + 1;
10652 _tmp101_ = _local_index;
10653 _tmp102_ = _local_size;
10654 if (!(_tmp101_ < _tmp102_)) {
10657 _tmp103_ = _local_list;
10658 _tmp104_ = _local_index;
10659 _tmp105_ = vala_list_get (_tmp103_, _tmp104_);
10660 local = (ValaLocalVariable*) _tmp105_;
10662 _tmp107_ = vala_local_variable_get_captured (_tmp106_);
10663 _tmp108_ = _tmp107_;
10665 ValaLocalVariable* _tmp109_;
10666 ValaDataType* _tmp110_;
10667 ValaDataType* _tmp111_;
10668 ValaCCodeFile* _tmp112_;
10669 ValaCCodeStruct* _tmp113_;
10670 ValaLocalVariable* _tmp114_;
10671 ValaDataType* _tmp115_;
10672 ValaDataType* _tmp116_;
10673 gchar* _tmp117_ = NULL;
10675 ValaLocalVariable* _tmp119_;
10676 gchar* _tmp120_ = NULL;
10678 ValaLocalVariable* _tmp122_;
10679 ValaDataType* _tmp123_;
10680 ValaDataType* _tmp124_;
10681 gchar* _tmp125_ = NULL;
10685 ValaLocalVariable* _tmp129_;
10686 ValaDataType* _tmp130_;
10687 ValaDataType* _tmp131_;
10689 _tmp110_ = vala_variable_get_variable_type ((ValaVariable*) _tmp109_);
10690 _tmp111_ = _tmp110_;
10691 _tmp112_ = self->cfile;
10692 vala_ccode_base_module_generate_type_declaration (self, _tmp111_, _tmp112_);
10695 _tmp115_ = vala_variable_get_variable_type ((ValaVariable*) _tmp114_);
10696 _tmp116_ = _tmp115_;
10697 _tmp117_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp116_);
10698 _tmp118_ = _tmp117_;
10700 _tmp120_ = vala_ccode_base_module_get_local_cname (self, _tmp119_);
10701 _tmp121_ = _tmp120_;
10703 _tmp123_ = vala_variable_get_variable_type ((ValaVariable*) _tmp122_);
10704 _tmp124_ = _tmp123_;
10705 _tmp125_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp124_);
10706 _tmp126_ = _tmp125_;
10707 _tmp127_ = g_strconcat (_tmp121_, _tmp126_, NULL);
10708 _tmp128_ = _tmp127_;
10709 vala_ccode_struct_add_field (_tmp113_, _tmp118_, _tmp128_, NULL);
10710 _g_free0 (_tmp128_);
10711 _g_free0 (_tmp126_);
10712 _g_free0 (_tmp121_);
10713 _g_free0 (_tmp118_);
10715 _tmp130_ = vala_variable_get_variable_type ((ValaVariable*) _tmp129_);
10716 _tmp131_ = _tmp130_;
10717 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp131_, VALA_TYPE_ARRAY_TYPE)) {
10718 ValaLocalVariable* _tmp132_;
10719 ValaDataType* _tmp133_;
10720 ValaDataType* _tmp134_;
10721 ValaArrayType* _tmp135_;
10722 ValaArrayType* array_type;
10723 ValaCCodeStruct* _tmp150_;
10724 ValaLocalVariable* _tmp151_;
10725 gchar* _tmp152_ = NULL;
10727 gchar* _tmp154_ = NULL;
10730 _tmp133_ = vala_variable_get_variable_type ((ValaVariable*) _tmp132_);
10731 _tmp134_ = _tmp133_;
10732 _tmp135_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp134_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
10733 array_type = _tmp135_;
10743 ValaArrayType* _tmp140_;
10746 ValaCCodeStruct* _tmp143_;
10747 ValaLocalVariable* _tmp144_;
10748 gchar* _tmp145_ = NULL;
10751 gchar* _tmp148_ = NULL;
10753 _tmp137_ = _tmp136_;
10757 dim = _tmp138_ + 1;
10761 _tmp140_ = array_type;
10762 _tmp141_ = vala_array_type_get_rank (_tmp140_);
10763 _tmp142_ = _tmp141_;
10764 if (!(_tmp139_ <= _tmp142_)) {
10769 _tmp145_ = vala_ccode_base_module_get_local_cname (self, _tmp144_);
10770 _tmp146_ = _tmp145_;
10772 _tmp148_ = vala_ccode_base_module_get_array_length_cname (self, _tmp146_, _tmp147_);
10773 _tmp149_ = _tmp148_;
10774 vala_ccode_struct_add_field (_tmp143_, "gint", _tmp149_, NULL);
10775 _g_free0 (_tmp149_);
10776 _g_free0 (_tmp146_);
10782 _tmp152_ = vala_ccode_base_module_get_local_cname (self, _tmp151_);
10783 _tmp153_ = _tmp152_;
10784 _tmp154_ = vala_ccode_base_module_get_array_size_cname (self, _tmp153_);
10785 _tmp155_ = _tmp154_;
10786 vala_ccode_struct_add_field (_tmp150_, "gint", _tmp155_, NULL);
10787 _g_free0 (_tmp155_);
10788 _g_free0 (_tmp153_);
10789 _vala_code_node_unref0 (array_type);
10791 ValaLocalVariable* _tmp156_;
10792 ValaDataType* _tmp157_;
10793 ValaDataType* _tmp158_;
10795 _tmp157_ = vala_variable_get_variable_type ((ValaVariable*) _tmp156_);
10796 _tmp158_ = _tmp157_;
10797 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp158_, VALA_TYPE_DELEGATE_TYPE)) {
10798 ValaCCodeStruct* _tmp159_;
10799 ValaLocalVariable* _tmp160_;
10800 gchar* _tmp161_ = NULL;
10802 gchar* _tmp163_ = NULL;
10804 ValaLocalVariable* _tmp165_;
10805 ValaDataType* _tmp166_;
10806 ValaDataType* _tmp167_;
10811 _tmp161_ = vala_ccode_base_module_get_local_cname (self, _tmp160_);
10812 _tmp162_ = _tmp161_;
10813 _tmp163_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp162_);
10814 _tmp164_ = _tmp163_;
10815 vala_ccode_struct_add_field (_tmp159_, "gpointer", _tmp164_, NULL);
10816 _g_free0 (_tmp164_);
10817 _g_free0 (_tmp162_);
10819 _tmp166_ = vala_variable_get_variable_type ((ValaVariable*) _tmp165_);
10820 _tmp167_ = _tmp166_;
10821 _tmp168_ = vala_data_type_get_value_owned (_tmp167_);
10822 _tmp169_ = _tmp168_;
10824 ValaCCodeStruct* _tmp170_;
10825 ValaLocalVariable* _tmp171_;
10826 gchar* _tmp172_ = NULL;
10828 gchar* _tmp174_ = NULL;
10832 _tmp172_ = vala_ccode_base_module_get_local_cname (self, _tmp171_);
10833 _tmp173_ = _tmp172_;
10834 _tmp174_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp173_);
10835 _tmp175_ = _tmp174_;
10836 vala_ccode_struct_add_field (_tmp170_, "GDestroyNotify", _tmp175_, NULL);
10837 _g_free0 (_tmp175_);
10838 _g_free0 (_tmp173_);
10843 _vala_code_node_unref0 (local);
10845 _vala_iterable_unref0 (_local_list);
10847 _tmp176_ = vala_ccode_identifier_new ("g_slice_new0");
10848 _tmp177_ = _tmp176_;
10849 _tmp178_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp177_);
10850 _tmp179_ = _tmp178_;
10851 _vala_ccode_node_unref0 (_tmp177_);
10852 data_alloc = _tmp179_;
10853 _tmp180_ = data_alloc;
10854 _tmp181_ = struct_name;
10855 _tmp182_ = vala_ccode_identifier_new (_tmp181_);
10856 _tmp183_ = _tmp182_;
10857 vala_ccode_function_call_add_argument (_tmp180_, (ValaCCodeExpression*) _tmp183_);
10858 _vala_ccode_node_unref0 (_tmp183_);
10859 _tmp184_ = vala_ccode_base_module_is_in_coroutine (self);
10861 ValaCCodeStruct* _tmp185_;
10862 const gchar* _tmp186_;
10866 gchar* _tmp190_ = NULL;
10868 _tmp185_ = self->closure_struct;
10869 _tmp186_ = struct_name;
10870 _tmp187_ = g_strconcat (_tmp186_, "*", NULL);
10871 _tmp188_ = _tmp187_;
10872 _tmp189_ = block_id;
10873 _tmp190_ = g_strdup_printf ("_data%d_", _tmp189_);
10874 _tmp191_ = _tmp190_;
10875 vala_ccode_struct_add_field (_tmp185_, _tmp188_, _tmp191_, NULL);
10876 _g_free0 (_tmp191_);
10877 _g_free0 (_tmp188_);
10879 ValaCCodeFunction* _tmp192_;
10880 ValaCCodeFunction* _tmp193_;
10881 const gchar* _tmp194_;
10885 gchar* _tmp198_ = NULL;
10887 ValaCCodeVariableDeclarator* _tmp200_;
10888 ValaCCodeVariableDeclarator* _tmp201_;
10889 _tmp192_ = vala_ccode_base_module_get_ccode (self);
10890 _tmp193_ = _tmp192_;
10891 _tmp194_ = struct_name;
10892 _tmp195_ = g_strconcat (_tmp194_, "*", NULL);
10893 _tmp196_ = _tmp195_;
10894 _tmp197_ = block_id;
10895 _tmp198_ = g_strdup_printf ("_data%d_", _tmp197_);
10896 _tmp199_ = _tmp198_;
10897 _tmp200_ = vala_ccode_variable_declarator_new (_tmp199_, NULL, NULL);
10898 _tmp201_ = _tmp200_;
10899 vala_ccode_function_add_declaration (_tmp193_, _tmp196_, (ValaCCodeDeclarator*) _tmp201_, 0);
10900 _vala_ccode_node_unref0 (_tmp201_);
10901 _g_free0 (_tmp199_);
10902 _g_free0 (_tmp196_);
10904 _tmp202_ = vala_ccode_base_module_get_ccode (self);
10905 _tmp203_ = _tmp202_;
10906 _tmp204_ = block_id;
10907 _tmp205_ = g_strdup_printf ("_data%d_", _tmp204_);
10908 _tmp206_ = _tmp205_;
10909 _tmp207_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp206_);
10910 _tmp208_ = _tmp207_;
10911 _tmp209_ = data_alloc;
10912 vala_ccode_function_add_assignment (_tmp203_, _tmp208_, (ValaCCodeExpression*) _tmp209_);
10913 _vala_ccode_node_unref0 (_tmp208_);
10914 _g_free0 (_tmp206_);
10915 _tmp210_ = vala_ccode_base_module_get_ccode (self);
10916 _tmp211_ = _tmp210_;
10917 _tmp212_ = block_id;
10918 _tmp213_ = g_strdup_printf ("_data%d_", _tmp212_);
10919 _tmp214_ = _tmp213_;
10920 _tmp215_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp214_);
10921 _tmp216_ = _tmp215_;
10922 _tmp217_ = vala_ccode_member_access_new_pointer (_tmp216_, "_ref_count_");
10923 _tmp218_ = _tmp217_;
10924 _tmp219_ = vala_ccode_identifier_new ("1");
10925 _tmp220_ = _tmp219_;
10926 vala_ccode_function_add_assignment (_tmp211_, (ValaCCodeExpression*) _tmp218_, (ValaCCodeExpression*) _tmp220_);
10927 _vala_ccode_node_unref0 (_tmp220_);
10928 _vala_ccode_node_unref0 (_tmp218_);
10929 _vala_ccode_node_unref0 (_tmp216_);
10930 _g_free0 (_tmp214_);
10931 _tmp221_ = parent_block;
10932 if (_tmp221_ != NULL) {
10933 ValaBlock* _tmp222_;
10935 gint parent_block_id;
10937 gchar* _tmp225_ = NULL;
10939 ValaCCodeIdentifier* _tmp227_;
10940 ValaCCodeIdentifier* _tmp228_;
10941 ValaCCodeFunctionCall* _tmp229_;
10942 ValaCCodeFunctionCall* _tmp230_;
10943 ValaCCodeFunctionCall* ref_call;
10944 ValaCCodeFunctionCall* _tmp231_;
10946 gchar* _tmp233_ = NULL;
10948 ValaCCodeExpression* _tmp235_ = NULL;
10949 ValaCCodeExpression* _tmp236_;
10950 ValaCCodeFunction* _tmp237_;
10951 ValaCCodeFunction* _tmp238_;
10953 gchar* _tmp240_ = NULL;
10955 ValaCCodeExpression* _tmp242_ = NULL;
10956 ValaCCodeExpression* _tmp243_;
10958 gchar* _tmp245_ = NULL;
10960 ValaCCodeMemberAccess* _tmp247_;
10961 ValaCCodeMemberAccess* _tmp248_;
10962 ValaCCodeFunctionCall* _tmp249_;
10963 _tmp222_ = parent_block;
10964 _tmp223_ = vala_ccode_base_module_get_block_id (self, _tmp222_);
10965 parent_block_id = _tmp223_;
10966 _tmp224_ = parent_block_id;
10967 _tmp225_ = g_strdup_printf ("block%d_data_ref", _tmp224_);
10968 _tmp226_ = _tmp225_;
10969 _tmp227_ = vala_ccode_identifier_new (_tmp226_);
10970 _tmp228_ = _tmp227_;
10971 _tmp229_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp228_);
10972 _tmp230_ = _tmp229_;
10973 _vala_ccode_node_unref0 (_tmp228_);
10974 _g_free0 (_tmp226_);
10975 ref_call = _tmp230_;
10976 _tmp231_ = ref_call;
10977 _tmp232_ = parent_block_id;
10978 _tmp233_ = g_strdup_printf ("_data%d_", _tmp232_);
10979 _tmp234_ = _tmp233_;
10980 _tmp235_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp234_);
10981 _tmp236_ = _tmp235_;
10982 vala_ccode_function_call_add_argument (_tmp231_, _tmp236_);
10983 _vala_ccode_node_unref0 (_tmp236_);
10984 _g_free0 (_tmp234_);
10985 _tmp237_ = vala_ccode_base_module_get_ccode (self);
10986 _tmp238_ = _tmp237_;
10987 _tmp239_ = block_id;
10988 _tmp240_ = g_strdup_printf ("_data%d_", _tmp239_);
10989 _tmp241_ = _tmp240_;
10990 _tmp242_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp241_);
10991 _tmp243_ = _tmp242_;
10992 _tmp244_ = parent_block_id;
10993 _tmp245_ = g_strdup_printf ("_data%d_", _tmp244_);
10994 _tmp246_ = _tmp245_;
10995 _tmp247_ = vala_ccode_member_access_new_pointer (_tmp243_, _tmp246_);
10996 _tmp248_ = _tmp247_;
10997 _tmp249_ = ref_call;
10998 vala_ccode_function_add_assignment (_tmp238_, (ValaCCodeExpression*) _tmp248_, (ValaCCodeExpression*) _tmp249_);
10999 _vala_ccode_node_unref0 (_tmp248_);
11000 _g_free0 (_tmp246_);
11001 _vala_ccode_node_unref0 (_tmp243_);
11002 _g_free0 (_tmp241_);
11003 _vala_ccode_node_unref0 (ref_call);
11005 gboolean _tmp250_ = FALSE;
11006 gboolean _tmp251_ = FALSE;
11007 ValaMethod* _tmp252_;
11008 ValaMethod* _tmp253_;
11011 gboolean in_creation_method_with_chainup;
11012 gboolean _tmp262_ = FALSE;
11013 ValaDataType* _tmp263_ = NULL;
11014 ValaDataType* _tmp264_;
11017 ValaMethod* _tmp306_;
11018 ValaMethod* _tmp307_;
11019 _tmp252_ = vala_ccode_base_module_get_current_method (self);
11020 _tmp253_ = _tmp252_;
11021 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp253_, VALA_TYPE_CREATION_METHOD)) {
11022 ValaClass* _tmp254_;
11023 ValaClass* _tmp255_;
11024 _tmp254_ = vala_ccode_base_module_get_current_class (self);
11025 _tmp255_ = _tmp254_;
11026 _tmp251_ = _tmp255_ != NULL;
11030 _tmp256_ = _tmp251_;
11032 ValaClass* _tmp257_;
11033 ValaClass* _tmp258_;
11034 ValaClass* _tmp259_;
11035 ValaClass* _tmp260_;
11036 _tmp257_ = vala_ccode_base_module_get_current_class (self);
11037 _tmp258_ = _tmp257_;
11038 _tmp259_ = vala_class_get_base_class (_tmp258_);
11039 _tmp260_ = _tmp259_;
11040 _tmp250_ = _tmp260_ != NULL;
11044 _tmp261_ = _tmp250_;
11045 in_creation_method_with_chainup = _tmp261_;
11046 _tmp263_ = vala_ccode_base_module_get_this_type (self);
11047 _tmp264_ = _tmp263_;
11048 _tmp265_ = _tmp264_ != NULL;
11049 _vala_code_node_unref0 (_tmp264_);
11051 gboolean _tmp266_ = FALSE;
11054 _tmp267_ = in_creation_method_with_chainup;
11058 ValaMethod* _tmp268_;
11059 ValaMethod* _tmp269_;
11060 ValaBlock* _tmp270_;
11061 ValaBlock* _tmp271_;
11062 ValaBlock* _tmp272_;
11063 _tmp268_ = vala_ccode_base_module_get_current_method (self);
11064 _tmp269_ = _tmp268_;
11065 _tmp270_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp269_);
11066 _tmp271_ = _tmp270_;
11068 _tmp266_ = _tmp271_ != _tmp272_;
11070 _tmp273_ = _tmp266_;
11071 _tmp262_ = _tmp273_;
11075 _tmp274_ = _tmp262_;
11077 ValaTypeSymbol* _tmp275_;
11078 ValaTypeSymbol* _tmp276_;
11079 ValaDataType* _tmp277_ = NULL;
11080 ValaDataType* _tmp278_;
11081 ValaBlock* _tmp279_;
11082 ValaSourceReference* _tmp280_;
11083 ValaSourceReference* _tmp281_;
11084 ValaCCodeExpression* _tmp282_ = NULL;
11085 ValaCCodeExpression* _tmp283_;
11086 ValaCCodeFunctionCall* _tmp284_;
11087 ValaCCodeFunctionCall* _tmp285_;
11088 ValaCCodeFunctionCall* ref_call;
11089 ValaCCodeFunctionCall* _tmp286_;
11090 ValaCCodeExpression* _tmp287_ = NULL;
11091 ValaCCodeExpression* _tmp288_;
11092 ValaCCodeExpression* _tmp289_ = NULL;
11093 gboolean _tmp290_ = FALSE;
11094 ValaCCodeExpression* _tmp294_;
11095 ValaCCodeExpression* _tmp295_;
11096 ValaCCodeExpression* instance;
11097 ValaCCodeFunction* _tmp296_;
11098 ValaCCodeFunction* _tmp297_;
11100 gchar* _tmp299_ = NULL;
11102 ValaCCodeExpression* _tmp301_ = NULL;
11103 ValaCCodeExpression* _tmp302_;
11104 ValaCCodeMemberAccess* _tmp303_;
11105 ValaCCodeMemberAccess* _tmp304_;
11106 ValaCCodeExpression* _tmp305_;
11107 _tmp275_ = vala_ccode_base_module_get_current_type_symbol (self);
11108 _tmp276_ = _tmp275_;
11109 _tmp277_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp276_);
11110 _tmp278_ = _tmp277_;
11112 _tmp280_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp279_);
11113 _tmp281_ = _tmp280_;
11114 _tmp282_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp278_, _tmp281_, FALSE);
11115 _tmp283_ = _tmp282_;
11116 _tmp284_ = vala_ccode_function_call_new (_tmp283_);
11117 _tmp285_ = _tmp284_;
11118 _vala_ccode_node_unref0 (_tmp283_);
11119 _vala_code_node_unref0 (_tmp278_);
11120 ref_call = _tmp285_;
11121 _tmp286_ = ref_call;
11122 _tmp287_ = vala_ccode_base_module_get_result_cexpression (self, "self");
11123 _tmp288_ = _tmp287_;
11124 vala_ccode_function_call_add_argument (_tmp286_, _tmp288_);
11125 _vala_ccode_node_unref0 (_tmp288_);
11126 _tmp290_ = vala_ccode_base_module_is_in_destructor (self);
11128 ValaCCodeIdentifier* _tmp291_;
11129 _tmp291_ = vala_ccode_identifier_new ("self");
11130 _vala_ccode_node_unref0 (_tmp289_);
11131 _tmp289_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp291_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11133 ValaCCodeFunctionCall* _tmp292_;
11134 ValaCCodeExpression* _tmp293_;
11135 _tmp292_ = ref_call;
11136 _tmp293_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp292_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression));
11137 _vala_ccode_node_unref0 (_tmp289_);
11138 _tmp289_ = _tmp293_;
11140 _tmp294_ = _tmp289_;
11141 _tmp295_ = _vala_ccode_node_ref0 (_tmp294_);
11142 instance = _tmp295_;
11143 _tmp296_ = vala_ccode_base_module_get_ccode (self);
11144 _tmp297_ = _tmp296_;
11145 _tmp298_ = block_id;
11146 _tmp299_ = g_strdup_printf ("_data%d_", _tmp298_);
11147 _tmp300_ = _tmp299_;
11148 _tmp301_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp300_);
11149 _tmp302_ = _tmp301_;
11150 _tmp303_ = vala_ccode_member_access_new_pointer (_tmp302_, "self");
11151 _tmp304_ = _tmp303_;
11152 _tmp305_ = instance;
11153 vala_ccode_function_add_assignment (_tmp297_, (ValaCCodeExpression*) _tmp304_, _tmp305_);
11154 _vala_ccode_node_unref0 (_tmp304_);
11155 _vala_ccode_node_unref0 (_tmp302_);
11156 _g_free0 (_tmp300_);
11157 _vala_ccode_node_unref0 (instance);
11158 _vala_ccode_node_unref0 (_tmp289_);
11159 _vala_ccode_node_unref0 (ref_call);
11161 _tmp306_ = vala_ccode_base_module_get_current_method (self);
11162 _tmp307_ = _tmp306_;
11163 if (_tmp307_ != NULL) {
11167 gchar** _tmp311_ = NULL;
11169 gint suffices_length1;
11170 gint _suffices_size_;
11171 _tmp308_ = g_strdup ("type");
11172 _tmp309_ = g_strdup ("dup_func");
11173 _tmp310_ = g_strdup ("destroy_func");
11174 _tmp311_ = g_new0 (gchar*, 3 + 1);
11175 _tmp311_[0] = _tmp308_;
11176 _tmp311_[1] = _tmp309_;
11177 _tmp311_[2] = _tmp310_;
11178 suffices = _tmp311_;
11179 suffices_length1 = 3;
11180 _suffices_size_ = suffices_length1;
11182 ValaMethod* _tmp312_;
11183 ValaMethod* _tmp313_;
11184 ValaList* _tmp314_ = NULL;
11185 ValaList* _type_param_list;
11186 ValaList* _tmp315_;
11189 gint _type_param_size;
11190 gint _type_param_index;
11191 _tmp312_ = vala_ccode_base_module_get_current_method (self);
11192 _tmp313_ = _tmp312_;
11193 _tmp314_ = vala_method_get_type_parameters (_tmp313_);
11194 _type_param_list = _tmp314_;
11195 _tmp315_ = _type_param_list;
11196 _tmp316_ = vala_collection_get_size ((ValaCollection*) _tmp315_);
11197 _tmp317_ = _tmp316_;
11198 _type_param_size = _tmp317_;
11199 _type_param_index = -1;
11204 ValaList* _tmp321_;
11206 gpointer _tmp323_ = NULL;
11207 ValaTypeParameter* type_param;
11209 gint _tmp324__length1;
11210 _tmp318_ = _type_param_index;
11211 _type_param_index = _tmp318_ + 1;
11212 _tmp319_ = _type_param_index;
11213 _tmp320_ = _type_param_size;
11214 if (!(_tmp319_ < _tmp320_)) {
11217 _tmp321_ = _type_param_list;
11218 _tmp322_ = _type_param_index;
11219 _tmp323_ = vala_list_get (_tmp321_, _tmp322_);
11220 type_param = (ValaTypeParameter*) _tmp323_;
11221 _tmp324_ = suffices;
11222 _tmp324__length1 = suffices_length1;
11224 gchar** suffix_collection = NULL;
11225 gint suffix_collection_length1 = 0;
11226 gint _suffix_collection_size_ = 0;
11227 gint suffix_it = 0;
11228 suffix_collection = _tmp324_;
11229 suffix_collection_length1 = _tmp324__length1;
11230 for (suffix_it = 0; suffix_it < _tmp324__length1; suffix_it = suffix_it + 1) {
11232 gchar* suffix = NULL;
11233 _tmp325_ = g_strdup (suffix_collection[suffix_it]);
11236 ValaTypeParameter* _tmp326_;
11237 const gchar* _tmp327_;
11238 const gchar* _tmp328_;
11239 gchar* _tmp329_ = NULL;
11241 const gchar* _tmp331_;
11242 gchar* _tmp332_ = NULL;
11245 ValaCCodeFunction* _tmp334_;
11246 ValaCCodeFunction* _tmp335_;
11248 gchar* _tmp337_ = NULL;
11250 ValaCCodeExpression* _tmp339_ = NULL;
11251 ValaCCodeExpression* _tmp340_;
11252 const gchar* _tmp341_;
11253 ValaCCodeMemberAccess* _tmp342_;
11254 ValaCCodeMemberAccess* _tmp343_;
11255 const gchar* _tmp344_;
11256 ValaCCodeExpression* _tmp345_ = NULL;
11257 ValaCCodeExpression* _tmp346_;
11258 _tmp326_ = type_param;
11259 _tmp327_ = vala_symbol_get_name ((ValaSymbol*) _tmp326_);
11260 _tmp328_ = _tmp327_;
11261 _tmp329_ = g_utf8_strdown (_tmp328_, (gssize) (-1));
11262 _tmp330_ = _tmp329_;
11264 _tmp332_ = g_strdup_printf ("%s_%s", _tmp330_, _tmp331_);
11265 _tmp333_ = _tmp332_;
11266 _g_free0 (_tmp330_);
11267 func_name = _tmp333_;
11268 _tmp334_ = vala_ccode_base_module_get_ccode (self);
11269 _tmp335_ = _tmp334_;
11270 _tmp336_ = block_id;
11271 _tmp337_ = g_strdup_printf ("_data%d_", _tmp336_);
11272 _tmp338_ = _tmp337_;
11273 _tmp339_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp338_);
11274 _tmp340_ = _tmp339_;
11275 _tmp341_ = func_name;
11276 _tmp342_ = vala_ccode_member_access_new_pointer (_tmp340_, _tmp341_);
11277 _tmp343_ = _tmp342_;
11278 _tmp344_ = func_name;
11279 _tmp345_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp344_);
11280 _tmp346_ = _tmp345_;
11281 vala_ccode_function_add_assignment (_tmp335_, (ValaCCodeExpression*) _tmp343_, _tmp346_);
11282 _vala_ccode_node_unref0 (_tmp346_);
11283 _vala_ccode_node_unref0 (_tmp343_);
11284 _vala_ccode_node_unref0 (_tmp340_);
11285 _g_free0 (_tmp338_);
11286 _g_free0 (func_name);
11291 _vala_code_node_unref0 (type_param);
11293 _vala_iterable_unref0 (_type_param_list);
11295 suffices = (_vala_array_free (suffices, suffices_length1, (GDestroyNotify) g_free), NULL);
11299 _tmp348_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp347_);
11300 _tmp349_ = _tmp348_;
11301 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp349_, VALA_TYPE_METHOD)) {
11302 ValaBlock* _tmp350_;
11303 ValaSymbol* _tmp351_;
11304 ValaSymbol* _tmp352_;
11305 ValaMethod* _tmp353_;
11307 ValaMethod* _tmp371_;
11311 _tmp351_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp350_);
11312 _tmp352_ = _tmp351_;
11313 _tmp353_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp352_, VALA_TYPE_METHOD, ValaMethod));
11316 ValaMethod* _tmp354_;
11317 ValaList* _tmp355_ = NULL;
11318 ValaList* _param_list;
11319 ValaList* _tmp356_;
11325 _tmp355_ = vala_method_get_parameters (_tmp354_);
11326 _param_list = _tmp355_;
11327 _tmp356_ = _param_list;
11328 _tmp357_ = vala_collection_get_size ((ValaCollection*) _tmp356_);
11329 _tmp358_ = _tmp357_;
11330 _param_size = _tmp358_;
11336 ValaList* _tmp362_;
11338 gpointer _tmp364_ = NULL;
11339 ValaParameter* param;
11340 ValaParameter* _tmp365_;
11343 _tmp359_ = _param_index;
11344 _param_index = _tmp359_ + 1;
11345 _tmp360_ = _param_index;
11346 _tmp361_ = _param_size;
11347 if (!(_tmp360_ < _tmp361_)) {
11350 _tmp362_ = _param_list;
11351 _tmp363_ = _param_index;
11352 _tmp364_ = vala_list_get (_tmp362_, _tmp363_);
11353 param = (ValaParameter*) _tmp364_;
11355 _tmp366_ = vala_parameter_get_captured (_tmp365_);
11356 _tmp367_ = _tmp366_;
11358 ValaParameter* _tmp368_;
11359 ValaCCodeStruct* _tmp369_;
11363 _tmp370_ = block_id;
11364 vala_ccode_base_module_capture_parameter (self, _tmp368_, _tmp369_, _tmp370_);
11366 _vala_code_node_unref0 (param);
11368 _vala_iterable_unref0 (_param_list);
11371 _tmp372_ = vala_method_get_coroutine (_tmp371_);
11372 _tmp373_ = _tmp372_;
11374 ValaCCodeStruct* _tmp374_;
11375 ValaCCodeFunction* _tmp375_;
11376 ValaCCodeFunction* _tmp376_;
11378 gchar* _tmp378_ = NULL;
11380 ValaCCodeExpression* _tmp380_ = NULL;
11381 ValaCCodeExpression* _tmp381_;
11382 ValaCCodeMemberAccess* _tmp382_;
11383 ValaCCodeMemberAccess* _tmp383_;
11384 ValaCCodeIdentifier* _tmp384_;
11385 ValaCCodeIdentifier* _tmp385_;
11387 vala_ccode_struct_add_field (_tmp374_, "gpointer", "_async_data_", NULL);
11388 _tmp375_ = vala_ccode_base_module_get_ccode (self);
11389 _tmp376_ = _tmp375_;
11390 _tmp377_ = block_id;
11391 _tmp378_ = g_strdup_printf ("_data%d_", _tmp377_);
11392 _tmp379_ = _tmp378_;
11393 _tmp380_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp379_);
11394 _tmp381_ = _tmp380_;
11395 _tmp382_ = vala_ccode_member_access_new_pointer (_tmp381_, "_async_data_");
11396 _tmp383_ = _tmp382_;
11397 _tmp384_ = vala_ccode_identifier_new ("_data_");
11398 _tmp385_ = _tmp384_;
11399 vala_ccode_function_add_assignment (_tmp376_, (ValaCCodeExpression*) _tmp383_, (ValaCCodeExpression*) _tmp385_);
11400 _vala_ccode_node_unref0 (_tmp385_);
11401 _vala_ccode_node_unref0 (_tmp383_);
11402 _vala_ccode_node_unref0 (_tmp381_);
11403 _g_free0 (_tmp379_);
11405 _vala_code_node_unref0 (m);
11407 ValaBlock* _tmp386_;
11408 ValaSymbol* _tmp387_;
11409 ValaSymbol* _tmp388_;
11411 _tmp387_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp386_);
11412 _tmp388_ = _tmp387_;
11413 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp388_, VALA_TYPE_PROPERTY_ACCESSOR)) {
11414 ValaBlock* _tmp389_;
11415 ValaSymbol* _tmp390_;
11416 ValaSymbol* _tmp391_;
11417 ValaPropertyAccessor* _tmp392_;
11418 ValaPropertyAccessor* acc;
11419 gboolean _tmp393_ = FALSE;
11420 ValaPropertyAccessor* _tmp394_;
11425 _tmp390_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp389_);
11426 _tmp391_ = _tmp390_;
11427 _tmp392_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp391_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
11430 _tmp395_ = vala_property_accessor_get_readable (_tmp394_);
11431 _tmp396_ = _tmp395_;
11433 ValaPropertyAccessor* _tmp397_;
11434 ValaParameter* _tmp398_;
11435 ValaParameter* _tmp399_;
11439 _tmp398_ = vala_property_accessor_get_value_parameter (_tmp397_);
11440 _tmp399_ = _tmp398_;
11441 _tmp400_ = vala_parameter_get_captured (_tmp399_);
11442 _tmp401_ = _tmp400_;
11443 _tmp393_ = _tmp401_;
11447 _tmp402_ = _tmp393_;
11449 ValaPropertyAccessor* _tmp403_;
11450 ValaParameter* _tmp404_;
11451 ValaParameter* _tmp405_;
11452 ValaCCodeStruct* _tmp406_;
11455 _tmp404_ = vala_property_accessor_get_value_parameter (_tmp403_);
11456 _tmp405_ = _tmp404_;
11458 _tmp407_ = block_id;
11459 vala_ccode_base_module_capture_parameter (self, _tmp405_, _tmp406_, _tmp407_);
11461 _vala_code_node_unref0 (acc);
11463 ValaBlock* _tmp408_;
11464 ValaSymbol* _tmp409_;
11465 ValaSymbol* _tmp410_;
11467 _tmp409_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp408_);
11468 _tmp410_ = _tmp409_;
11469 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp410_, VALA_TYPE_FOREACH_STATEMENT)) {
11470 ValaBlock* _tmp411_;
11471 ValaSymbol* _tmp412_;
11472 ValaSymbol* _tmp413_;
11473 ValaForeachStatement* _tmp414_;
11474 ValaForeachStatement* stmt;
11475 gboolean _tmp415_ = FALSE;
11476 ValaForeachStatement* _tmp416_;
11481 _tmp412_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp411_);
11482 _tmp413_ = _tmp412_;
11483 _tmp414_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp413_, VALA_TYPE_FOREACH_STATEMENT, ValaForeachStatement));
11486 _tmp417_ = vala_foreach_statement_get_use_iterator (_tmp416_);
11487 _tmp418_ = _tmp417_;
11489 ValaForeachStatement* _tmp419_;
11490 ValaLocalVariable* _tmp420_;
11491 ValaLocalVariable* _tmp421_;
11495 _tmp420_ = vala_foreach_statement_get_element_variable (_tmp419_);
11496 _tmp421_ = _tmp420_;
11497 _tmp422_ = vala_local_variable_get_captured (_tmp421_);
11498 _tmp423_ = _tmp422_;
11499 _tmp415_ = _tmp423_;
11503 _tmp424_ = _tmp415_;
11505 ValaCCodeFunction* _tmp425_;
11506 ValaCCodeFunction* _tmp426_;
11508 gchar* _tmp428_ = NULL;
11510 ValaCCodeExpression* _tmp430_ = NULL;
11511 ValaCCodeExpression* _tmp431_;
11512 ValaForeachStatement* _tmp432_;
11513 ValaLocalVariable* _tmp433_;
11514 ValaLocalVariable* _tmp434_;
11515 gchar* _tmp435_ = NULL;
11517 ValaCCodeMemberAccess* _tmp437_;
11518 ValaCCodeMemberAccess* _tmp438_;
11519 ValaForeachStatement* _tmp439_;
11520 ValaLocalVariable* _tmp440_;
11521 ValaLocalVariable* _tmp441_;
11522 gchar* _tmp442_ = NULL;
11524 ValaCCodeExpression* _tmp444_ = NULL;
11525 ValaCCodeExpression* _tmp445_;
11526 _tmp425_ = vala_ccode_base_module_get_ccode (self);
11527 _tmp426_ = _tmp425_;
11528 _tmp427_ = block_id;
11529 _tmp428_ = g_strdup_printf ("_data%d_", _tmp427_);
11530 _tmp429_ = _tmp428_;
11531 _tmp430_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp429_);
11532 _tmp431_ = _tmp430_;
11534 _tmp433_ = vala_foreach_statement_get_element_variable (_tmp432_);
11535 _tmp434_ = _tmp433_;
11536 _tmp435_ = vala_ccode_base_module_get_local_cname (self, _tmp434_);
11537 _tmp436_ = _tmp435_;
11538 _tmp437_ = vala_ccode_member_access_new_pointer (_tmp431_, _tmp436_);
11539 _tmp438_ = _tmp437_;
11541 _tmp440_ = vala_foreach_statement_get_element_variable (_tmp439_);
11542 _tmp441_ = _tmp440_;
11543 _tmp442_ = vala_ccode_base_module_get_local_cname (self, _tmp441_);
11544 _tmp443_ = _tmp442_;
11545 _tmp444_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp443_);
11546 _tmp445_ = _tmp444_;
11547 vala_ccode_function_add_assignment (_tmp426_, (ValaCCodeExpression*) _tmp438_, _tmp445_);
11548 _vala_ccode_node_unref0 (_tmp445_);
11549 _g_free0 (_tmp443_);
11550 _vala_ccode_node_unref0 (_tmp438_);
11551 _g_free0 (_tmp436_);
11552 _vala_ccode_node_unref0 (_tmp431_);
11553 _g_free0 (_tmp429_);
11555 _vala_code_node_unref0 (stmt);
11559 _tmp446_ = struct_name;
11560 _tmp447_ = g_strconcat ("struct _", _tmp446_, NULL);
11561 _tmp448_ = _tmp447_;
11562 _tmp449_ = struct_name;
11563 _tmp450_ = vala_ccode_variable_declarator_new (_tmp449_, NULL, NULL);
11564 _tmp451_ = _tmp450_;
11565 _tmp452_ = vala_ccode_type_definition_new (_tmp448_, (ValaCCodeDeclarator*) _tmp451_);
11566 _tmp453_ = _tmp452_;
11567 _vala_ccode_node_unref0 (_tmp451_);
11568 _g_free0 (_tmp448_);
11569 _typedef_ = _tmp453_;
11570 _tmp454_ = self->cfile;
11571 _tmp455_ = _typedef_;
11572 vala_ccode_file_add_type_declaration (_tmp454_, (ValaCCodeNode*) _tmp455_);
11573 _tmp456_ = self->cfile;
11575 vala_ccode_file_add_type_definition (_tmp456_, (ValaCCodeNode*) _tmp457_);
11576 _tmp458_ = block_id;
11577 _tmp459_ = g_strdup_printf ("block%d_data_ref", _tmp458_);
11578 _tmp460_ = _tmp459_;
11579 _tmp461_ = struct_name;
11580 _tmp462_ = g_strconcat (_tmp461_, "*", NULL);
11581 _tmp463_ = _tmp462_;
11582 _tmp464_ = vala_ccode_function_new (_tmp460_, _tmp463_);
11583 _tmp465_ = _tmp464_;
11584 _g_free0 (_tmp463_);
11585 _g_free0 (_tmp460_);
11586 ref_fun = _tmp465_;
11587 _tmp466_ = ref_fun;
11588 _tmp467_ = block_id;
11589 _tmp468_ = g_strdup_printf ("_data%d_", _tmp467_);
11590 _tmp469_ = _tmp468_;
11591 _tmp470_ = struct_name;
11592 _tmp471_ = g_strconcat (_tmp470_, "*", NULL);
11593 _tmp472_ = _tmp471_;
11594 _tmp473_ = vala_ccode_parameter_new (_tmp469_, _tmp472_);
11595 _tmp474_ = _tmp473_;
11596 vala_ccode_function_add_parameter (_tmp466_, _tmp474_);
11597 _vala_ccode_node_unref0 (_tmp474_);
11598 _g_free0 (_tmp472_);
11599 _g_free0 (_tmp469_);
11600 _tmp475_ = ref_fun;
11601 vala_ccode_function_set_modifiers (_tmp475_, VALA_CCODE_MODIFIERS_STATIC);
11602 _tmp476_ = ref_fun;
11603 vala_ccode_base_module_push_function (self, _tmp476_);
11604 _tmp477_ = vala_ccode_identifier_new ("g_atomic_int_inc");
11605 _tmp478_ = _tmp477_;
11606 _tmp479_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp478_);
11607 _tmp480_ = _tmp479_;
11608 _vala_ccode_node_unref0 (_tmp478_);
11611 _tmp482_ = block_id;
11612 _tmp483_ = g_strdup_printf ("_data%d_", _tmp482_);
11613 _tmp484_ = _tmp483_;
11614 _tmp485_ = vala_ccode_identifier_new (_tmp484_);
11615 _tmp486_ = _tmp485_;
11616 _tmp487_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp486_, "_ref_count_");
11617 _tmp488_ = _tmp487_;
11618 _tmp489_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp488_);
11619 _tmp490_ = _tmp489_;
11620 vala_ccode_function_call_add_argument (_tmp481_, (ValaCCodeExpression*) _tmp490_);
11621 _vala_ccode_node_unref0 (_tmp490_);
11622 _vala_ccode_node_unref0 (_tmp488_);
11623 _vala_ccode_node_unref0 (_tmp486_);
11624 _g_free0 (_tmp484_);
11625 _tmp491_ = vala_ccode_base_module_get_ccode (self);
11626 _tmp492_ = _tmp491_;
11628 vala_ccode_function_add_expression (_tmp492_, (ValaCCodeExpression*) _tmp493_);
11629 _tmp494_ = vala_ccode_base_module_get_ccode (self);
11630 _tmp495_ = _tmp494_;
11631 _tmp496_ = block_id;
11632 _tmp497_ = g_strdup_printf ("_data%d_", _tmp496_);
11633 _tmp498_ = _tmp497_;
11634 _tmp499_ = vala_ccode_identifier_new (_tmp498_);
11635 _tmp500_ = _tmp499_;
11636 vala_ccode_function_add_return (_tmp495_, (ValaCCodeExpression*) _tmp500_);
11637 _vala_ccode_node_unref0 (_tmp500_);
11638 _g_free0 (_tmp498_);
11639 vala_ccode_base_module_pop_function (self);
11640 _tmp501_ = self->cfile;
11641 _tmp502_ = ref_fun;
11642 vala_ccode_file_add_function_declaration (_tmp501_, _tmp502_);
11643 _tmp503_ = self->cfile;
11644 _tmp504_ = ref_fun;
11645 vala_ccode_file_add_function (_tmp503_, _tmp504_);
11646 _tmp505_ = block_id;
11647 _tmp506_ = g_strdup_printf ("block%d_data_unref", _tmp505_);
11648 _tmp507_ = _tmp506_;
11649 _tmp508_ = vala_ccode_function_new (_tmp507_, "void");
11650 _tmp509_ = _tmp508_;
11651 _g_free0 (_tmp507_);
11652 unref_fun = _tmp509_;
11653 _tmp510_ = unref_fun;
11654 _tmp511_ = vala_ccode_parameter_new ("_userdata_", "void *");
11655 _tmp512_ = _tmp511_;
11656 vala_ccode_function_add_parameter (_tmp510_, _tmp512_);
11657 _vala_ccode_node_unref0 (_tmp512_);
11658 _tmp513_ = unref_fun;
11659 vala_ccode_function_set_modifiers (_tmp513_, VALA_CCODE_MODIFIERS_STATIC);
11660 _tmp514_ = unref_fun;
11661 vala_ccode_base_module_push_function (self, _tmp514_);
11662 _tmp515_ = vala_ccode_base_module_get_ccode (self);
11663 _tmp516_ = _tmp515_;
11664 _tmp517_ = struct_name;
11665 _tmp518_ = g_strconcat (_tmp517_, "*", NULL);
11666 _tmp519_ = _tmp518_;
11667 _tmp520_ = block_id;
11668 _tmp521_ = g_strdup_printf ("_data%d_", _tmp520_);
11669 _tmp522_ = _tmp521_;
11670 _tmp523_ = vala_ccode_identifier_new ("_userdata_");
11671 _tmp524_ = _tmp523_;
11672 _tmp525_ = struct_name;
11673 _tmp526_ = g_strconcat (_tmp525_, "*", NULL);
11674 _tmp527_ = _tmp526_;
11675 _tmp528_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp524_, _tmp527_);
11676 _tmp529_ = _tmp528_;
11677 _tmp530_ = vala_ccode_variable_declarator_new (_tmp522_, (ValaCCodeExpression*) _tmp529_, NULL);
11678 _tmp531_ = _tmp530_;
11679 vala_ccode_function_add_declaration (_tmp516_, _tmp519_, (ValaCCodeDeclarator*) _tmp531_, 0);
11680 _vala_ccode_node_unref0 (_tmp531_);
11681 _vala_ccode_node_unref0 (_tmp529_);
11682 _g_free0 (_tmp527_);
11683 _vala_ccode_node_unref0 (_tmp524_);
11684 _g_free0 (_tmp522_);
11685 _g_free0 (_tmp519_);
11686 _tmp532_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test");
11687 _tmp533_ = _tmp532_;
11688 _tmp534_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp533_);
11689 _vala_ccode_node_unref0 (ccall);
11691 _vala_ccode_node_unref0 (_tmp533_);
11693 _tmp536_ = block_id;
11694 _tmp537_ = g_strdup_printf ("_data%d_", _tmp536_);
11695 _tmp538_ = _tmp537_;
11696 _tmp539_ = vala_ccode_identifier_new (_tmp538_);
11697 _tmp540_ = _tmp539_;
11698 _tmp541_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp540_, "_ref_count_");
11699 _tmp542_ = _tmp541_;
11700 _tmp543_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp542_);
11701 _tmp544_ = _tmp543_;
11702 vala_ccode_function_call_add_argument (_tmp535_, (ValaCCodeExpression*) _tmp544_);
11703 _vala_ccode_node_unref0 (_tmp544_);
11704 _vala_ccode_node_unref0 (_tmp542_);
11705 _vala_ccode_node_unref0 (_tmp540_);
11706 _g_free0 (_tmp538_);
11707 _tmp545_ = vala_ccode_base_module_get_ccode (self);
11708 _tmp546_ = _tmp545_;
11710 vala_ccode_function_open_if (_tmp546_, (ValaCCodeExpression*) _tmp547_);
11711 _tmp548_ = block_id;
11712 _tmp549_ = g_strdup_printf ("_data%d_", _tmp548_);
11713 _tmp550_ = _tmp549_;
11714 _tmp551_ = vala_ccode_identifier_new (_tmp550_);
11715 _tmp552_ = (ValaCCodeExpression*) _tmp551_;
11716 _g_free0 (_tmp550_);
11717 outer_block = _tmp552_;
11719 parent_closure_block = _tmp553_;
11721 ValaBlock* _tmp554_;
11722 ValaSymbol* _tmp555_;
11723 ValaSymbol* _tmp556_;
11724 ValaBlock* _tmp557_ = NULL;
11725 ValaBlock* _tmp558_;
11726 ValaBlock* _tmp559_;
11728 gint parent_block_id;
11729 ValaCCodeExpression* _tmp561_;
11731 gchar* _tmp563_ = NULL;
11733 ValaCCodeMemberAccess* _tmp565_;
11734 _tmp554_ = parent_closure_block;
11735 _tmp555_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp554_);
11736 _tmp556_ = _tmp555_;
11737 _tmp557_ = vala_ccode_base_module_next_closure_block (self, _tmp556_);
11738 parent_closure_block = _tmp557_;
11739 _tmp558_ = parent_closure_block;
11740 if (_tmp558_ == NULL) {
11743 _tmp559_ = parent_closure_block;
11744 _tmp560_ = vala_ccode_base_module_get_block_id (self, _tmp559_);
11745 parent_block_id = _tmp560_;
11746 _tmp561_ = outer_block;
11747 _tmp562_ = parent_block_id;
11748 _tmp563_ = g_strdup_printf ("_data%d_", _tmp562_);
11749 _tmp564_ = _tmp563_;
11750 _tmp565_ = vala_ccode_member_access_new_pointer (_tmp561_, _tmp564_);
11751 _vala_ccode_node_unref0 (outer_block);
11752 outer_block = (ValaCCodeExpression*) _tmp565_;
11753 _g_free0 (_tmp564_);
11755 _tmp566_ = vala_ccode_base_module_get_this_type (self);
11756 _tmp567_ = _tmp566_;
11757 _tmp568_ = _tmp567_ != NULL;
11758 _vala_code_node_unref0 (_tmp567_);
11760 ValaCCodeFunction* _tmp569_;
11761 ValaCCodeFunction* _tmp570_;
11762 ValaTypeSymbol* _tmp571_;
11763 ValaTypeSymbol* _tmp572_;
11764 gchar* _tmp573_ = NULL;
11766 gchar* _tmp575_ = NULL;
11768 ValaCCodeVariableDeclarator* _tmp577_;
11769 ValaCCodeVariableDeclarator* _tmp578_;
11770 ValaCCodeFunction* _tmp579_;
11771 ValaCCodeFunction* _tmp580_;
11772 ValaCCodeIdentifier* _tmp581_;
11773 ValaCCodeIdentifier* _tmp582_;
11774 ValaCCodeExpression* _tmp583_;
11775 ValaCCodeMemberAccess* _tmp584_;
11776 ValaCCodeMemberAccess* _tmp585_;
11777 _tmp569_ = vala_ccode_base_module_get_ccode (self);
11778 _tmp570_ = _tmp569_;
11779 _tmp571_ = vala_ccode_base_module_get_current_type_symbol (self);
11780 _tmp572_ = _tmp571_;
11781 _tmp573_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp572_);
11782 _tmp574_ = _tmp573_;
11783 _tmp575_ = g_strdup_printf ("%s *", _tmp574_);
11784 _tmp576_ = _tmp575_;
11785 _tmp577_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
11786 _tmp578_ = _tmp577_;
11787 vala_ccode_function_add_declaration (_tmp570_, _tmp576_, (ValaCCodeDeclarator*) _tmp578_, 0);
11788 _vala_ccode_node_unref0 (_tmp578_);
11789 _g_free0 (_tmp576_);
11790 _g_free0 (_tmp574_);
11791 _tmp579_ = vala_ccode_base_module_get_ccode (self);
11792 _tmp580_ = _tmp579_;
11793 _tmp581_ = vala_ccode_identifier_new ("self");
11794 _tmp582_ = _tmp581_;
11795 _tmp583_ = outer_block;
11796 _tmp584_ = vala_ccode_member_access_new_pointer (_tmp583_, "self");
11797 _tmp585_ = _tmp584_;
11798 vala_ccode_function_add_assignment (_tmp580_, (ValaCCodeExpression*) _tmp582_, (ValaCCodeExpression*) _tmp585_);
11799 _vala_ccode_node_unref0 (_tmp585_);
11800 _vala_ccode_node_unref0 (_tmp582_);
11802 _tmp586_ = vala_ccode_base_module_get_current_method (self);
11803 _tmp587_ = _tmp586_;
11804 if (_tmp587_ != NULL) {
11806 ValaMethod* _tmp588_;
11807 ValaMethod* _tmp589_;
11808 ValaList* _tmp590_ = NULL;
11809 ValaList* _type_param_list;
11810 ValaList* _tmp591_;
11813 gint _type_param_size;
11814 gint _type_param_index;
11815 _tmp588_ = vala_ccode_base_module_get_current_method (self);
11816 _tmp589_ = _tmp588_;
11817 _tmp590_ = vala_method_get_type_parameters (_tmp589_);
11818 _type_param_list = _tmp590_;
11819 _tmp591_ = _type_param_list;
11820 _tmp592_ = vala_collection_get_size ((ValaCollection*) _tmp591_);
11821 _tmp593_ = _tmp592_;
11822 _type_param_size = _tmp593_;
11823 _type_param_index = -1;
11828 ValaList* _tmp597_;
11830 gpointer _tmp599_ = NULL;
11831 ValaTypeParameter* type_param;
11832 gchar* func_name = NULL;
11833 ValaTypeParameter* _tmp600_;
11834 const gchar* _tmp601_;
11835 const gchar* _tmp602_;
11836 gchar* _tmp603_ = NULL;
11838 gchar* _tmp605_ = NULL;
11839 ValaCCodeFunction* _tmp606_;
11840 ValaCCodeFunction* _tmp607_;
11841 const gchar* _tmp608_;
11842 ValaCCodeVariableDeclarator* _tmp609_;
11843 ValaCCodeVariableDeclarator* _tmp610_;
11844 ValaCCodeFunction* _tmp611_;
11845 ValaCCodeFunction* _tmp612_;
11846 const gchar* _tmp613_;
11847 ValaCCodeIdentifier* _tmp614_;
11848 ValaCCodeIdentifier* _tmp615_;
11849 ValaCCodeExpression* _tmp616_;
11850 const gchar* _tmp617_;
11851 ValaCCodeMemberAccess* _tmp618_;
11852 ValaCCodeMemberAccess* _tmp619_;
11853 ValaTypeParameter* _tmp620_;
11854 const gchar* _tmp621_;
11855 const gchar* _tmp622_;
11856 gchar* _tmp623_ = NULL;
11858 gchar* _tmp625_ = NULL;
11859 ValaCCodeFunction* _tmp626_;
11860 ValaCCodeFunction* _tmp627_;
11861 const gchar* _tmp628_;
11862 ValaCCodeVariableDeclarator* _tmp629_;
11863 ValaCCodeVariableDeclarator* _tmp630_;
11864 ValaCCodeFunction* _tmp631_;
11865 ValaCCodeFunction* _tmp632_;
11866 const gchar* _tmp633_;
11867 ValaCCodeIdentifier* _tmp634_;
11868 ValaCCodeIdentifier* _tmp635_;
11869 ValaCCodeExpression* _tmp636_;
11870 const gchar* _tmp637_;
11871 ValaCCodeMemberAccess* _tmp638_;
11872 ValaCCodeMemberAccess* _tmp639_;
11873 ValaTypeParameter* _tmp640_;
11874 const gchar* _tmp641_;
11875 const gchar* _tmp642_;
11876 gchar* _tmp643_ = NULL;
11878 gchar* _tmp645_ = NULL;
11879 ValaCCodeFunction* _tmp646_;
11880 ValaCCodeFunction* _tmp647_;
11881 const gchar* _tmp648_;
11882 ValaCCodeVariableDeclarator* _tmp649_;
11883 ValaCCodeVariableDeclarator* _tmp650_;
11884 ValaCCodeFunction* _tmp651_;
11885 ValaCCodeFunction* _tmp652_;
11886 const gchar* _tmp653_;
11887 ValaCCodeIdentifier* _tmp654_;
11888 ValaCCodeIdentifier* _tmp655_;
11889 ValaCCodeExpression* _tmp656_;
11890 const gchar* _tmp657_;
11891 ValaCCodeMemberAccess* _tmp658_;
11892 ValaCCodeMemberAccess* _tmp659_;
11893 _tmp594_ = _type_param_index;
11894 _type_param_index = _tmp594_ + 1;
11895 _tmp595_ = _type_param_index;
11896 _tmp596_ = _type_param_size;
11897 if (!(_tmp595_ < _tmp596_)) {
11900 _tmp597_ = _type_param_list;
11901 _tmp598_ = _type_param_index;
11902 _tmp599_ = vala_list_get (_tmp597_, _tmp598_);
11903 type_param = (ValaTypeParameter*) _tmp599_;
11904 _tmp600_ = type_param;
11905 _tmp601_ = vala_symbol_get_name ((ValaSymbol*) _tmp600_);
11906 _tmp602_ = _tmp601_;
11907 _tmp603_ = g_utf8_strdown (_tmp602_, (gssize) (-1));
11908 _tmp604_ = _tmp603_;
11909 _tmp605_ = g_strdup_printf ("%s_type", _tmp604_);
11910 _g_free0 (func_name);
11911 func_name = _tmp605_;
11912 _g_free0 (_tmp604_);
11913 _tmp606_ = vala_ccode_base_module_get_ccode (self);
11914 _tmp607_ = _tmp606_;
11915 _tmp608_ = func_name;
11916 _tmp609_ = vala_ccode_variable_declarator_new (_tmp608_, NULL, NULL);
11917 _tmp610_ = _tmp609_;
11918 vala_ccode_function_add_declaration (_tmp607_, "GType", (ValaCCodeDeclarator*) _tmp610_, 0);
11919 _vala_ccode_node_unref0 (_tmp610_);
11920 _tmp611_ = vala_ccode_base_module_get_ccode (self);
11921 _tmp612_ = _tmp611_;
11922 _tmp613_ = func_name;
11923 _tmp614_ = vala_ccode_identifier_new (_tmp613_);
11924 _tmp615_ = _tmp614_;
11925 _tmp616_ = outer_block;
11926 _tmp617_ = func_name;
11927 _tmp618_ = vala_ccode_member_access_new_pointer (_tmp616_, _tmp617_);
11928 _tmp619_ = _tmp618_;
11929 vala_ccode_function_add_assignment (_tmp612_, (ValaCCodeExpression*) _tmp615_, (ValaCCodeExpression*) _tmp619_);
11930 _vala_ccode_node_unref0 (_tmp619_);
11931 _vala_ccode_node_unref0 (_tmp615_);
11932 _tmp620_ = type_param;
11933 _tmp621_ = vala_symbol_get_name ((ValaSymbol*) _tmp620_);
11934 _tmp622_ = _tmp621_;
11935 _tmp623_ = g_utf8_strdown (_tmp622_, (gssize) (-1));
11936 _tmp624_ = _tmp623_;
11937 _tmp625_ = g_strdup_printf ("%s_dup_func", _tmp624_);
11938 _g_free0 (func_name);
11939 func_name = _tmp625_;
11940 _g_free0 (_tmp624_);
11941 _tmp626_ = vala_ccode_base_module_get_ccode (self);
11942 _tmp627_ = _tmp626_;
11943 _tmp628_ = func_name;
11944 _tmp629_ = vala_ccode_variable_declarator_new (_tmp628_, NULL, NULL);
11945 _tmp630_ = _tmp629_;
11946 vala_ccode_function_add_declaration (_tmp627_, "GBoxedCopyFunc", (ValaCCodeDeclarator*) _tmp630_, 0);
11947 _vala_ccode_node_unref0 (_tmp630_);
11948 _tmp631_ = vala_ccode_base_module_get_ccode (self);
11949 _tmp632_ = _tmp631_;
11950 _tmp633_ = func_name;
11951 _tmp634_ = vala_ccode_identifier_new (_tmp633_);
11952 _tmp635_ = _tmp634_;
11953 _tmp636_ = outer_block;
11954 _tmp637_ = func_name;
11955 _tmp638_ = vala_ccode_member_access_new_pointer (_tmp636_, _tmp637_);
11956 _tmp639_ = _tmp638_;
11957 vala_ccode_function_add_assignment (_tmp632_, (ValaCCodeExpression*) _tmp635_, (ValaCCodeExpression*) _tmp639_);
11958 _vala_ccode_node_unref0 (_tmp639_);
11959 _vala_ccode_node_unref0 (_tmp635_);
11960 _tmp640_ = type_param;
11961 _tmp641_ = vala_symbol_get_name ((ValaSymbol*) _tmp640_);
11962 _tmp642_ = _tmp641_;
11963 _tmp643_ = g_utf8_strdown (_tmp642_, (gssize) (-1));
11964 _tmp644_ = _tmp643_;
11965 _tmp645_ = g_strdup_printf ("%s_destroy_func", _tmp644_);
11966 _g_free0 (func_name);
11967 func_name = _tmp645_;
11968 _g_free0 (_tmp644_);
11969 _tmp646_ = vala_ccode_base_module_get_ccode (self);
11970 _tmp647_ = _tmp646_;
11971 _tmp648_ = func_name;
11972 _tmp649_ = vala_ccode_variable_declarator_new (_tmp648_, NULL, NULL);
11973 _tmp650_ = _tmp649_;
11974 vala_ccode_function_add_declaration (_tmp647_, "GDestroyNotify", (ValaCCodeDeclarator*) _tmp650_, 0);
11975 _vala_ccode_node_unref0 (_tmp650_);
11976 _tmp651_ = vala_ccode_base_module_get_ccode (self);
11977 _tmp652_ = _tmp651_;
11978 _tmp653_ = func_name;
11979 _tmp654_ = vala_ccode_identifier_new (_tmp653_);
11980 _tmp655_ = _tmp654_;
11981 _tmp656_ = outer_block;
11982 _tmp657_ = func_name;
11983 _tmp658_ = vala_ccode_member_access_new_pointer (_tmp656_, _tmp657_);
11984 _tmp659_ = _tmp658_;
11985 vala_ccode_function_add_assignment (_tmp652_, (ValaCCodeExpression*) _tmp655_, (ValaCCodeExpression*) _tmp659_);
11986 _vala_ccode_node_unref0 (_tmp659_);
11987 _vala_ccode_node_unref0 (_tmp655_);
11988 _g_free0 (func_name);
11989 _vala_code_node_unref0 (type_param);
11991 _vala_iterable_unref0 (_type_param_list);
11995 ValaList* _tmp660_;
11999 _tmp660_ = local_vars;
12000 _tmp661_ = vala_collection_get_size ((ValaCollection*) _tmp660_);
12001 _tmp662_ = _tmp661_;
12009 ValaList* _tmp667_;
12011 gpointer _tmp669_ = NULL;
12012 ValaLocalVariable* local;
12013 ValaLocalVariable* _tmp670_;
12016 _tmp664_ = _tmp663_;
12024 if (!(_tmp666_ >= 0)) {
12027 _tmp667_ = local_vars;
12029 _tmp669_ = vala_list_get (_tmp667_, _tmp668_);
12030 local = (ValaLocalVariable*) _tmp669_;
12032 _tmp671_ = vala_local_variable_get_captured (_tmp670_);
12033 _tmp672_ = _tmp671_;
12035 ValaLocalVariable* _tmp673_;
12036 ValaDataType* _tmp674_;
12037 ValaDataType* _tmp675_;
12038 gboolean _tmp676_ = FALSE;
12040 _tmp674_ = vala_variable_get_variable_type ((ValaVariable*) _tmp673_);
12041 _tmp675_ = _tmp674_;
12042 _tmp676_ = vala_ccode_base_module_requires_destroy (self, _tmp675_);
12044 gboolean old_coroutine;
12045 ValaMethod* _tmp677_;
12046 ValaMethod* _tmp678_;
12047 ValaCCodeFunction* _tmp685_;
12048 ValaCCodeFunction* _tmp686_;
12049 ValaLocalVariable* _tmp687_;
12050 ValaCCodeExpression* _tmp688_ = NULL;
12051 ValaCCodeExpression* _tmp689_;
12053 old_coroutine = FALSE;
12054 _tmp677_ = vala_ccode_base_module_get_current_method (self);
12055 _tmp678_ = _tmp677_;
12056 if (_tmp678_ != NULL) {
12057 ValaMethod* _tmp679_;
12058 ValaMethod* _tmp680_;
12061 ValaMethod* _tmp683_;
12062 ValaMethod* _tmp684_;
12063 _tmp679_ = vala_ccode_base_module_get_current_method (self);
12064 _tmp680_ = _tmp679_;
12065 _tmp681_ = vala_method_get_coroutine (_tmp680_);
12066 _tmp682_ = _tmp681_;
12067 old_coroutine = _tmp682_;
12068 _tmp683_ = vala_ccode_base_module_get_current_method (self);
12069 _tmp684_ = _tmp683_;
12070 vala_method_set_coroutine (_tmp684_, FALSE);
12072 _tmp685_ = vala_ccode_base_module_get_ccode (self);
12073 _tmp686_ = _tmp685_;
12075 _tmp688_ = vala_ccode_base_module_destroy_local (self, _tmp687_);
12076 _tmp689_ = _tmp688_;
12077 vala_ccode_function_add_expression (_tmp686_, _tmp689_);
12078 _vala_ccode_node_unref0 (_tmp689_);
12079 _tmp690_ = old_coroutine;
12081 ValaMethod* _tmp691_;
12082 ValaMethod* _tmp692_;
12083 _tmp691_ = vala_ccode_base_module_get_current_method (self);
12084 _tmp692_ = _tmp691_;
12085 vala_method_set_coroutine (_tmp692_, TRUE);
12089 _vala_code_node_unref0 (local);
12094 _tmp694_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp693_);
12095 _tmp695_ = _tmp694_;
12096 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp695_, VALA_TYPE_METHOD)) {
12097 ValaBlock* _tmp696_;
12098 ValaSymbol* _tmp697_;
12099 ValaSymbol* _tmp698_;
12100 ValaMethod* _tmp699_;
12103 _tmp697_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp696_);
12104 _tmp698_ = _tmp697_;
12105 _tmp699_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp698_, VALA_TYPE_METHOD, ValaMethod));
12108 ValaMethod* _tmp700_;
12109 ValaList* _tmp701_ = NULL;
12110 ValaList* _param_list;
12111 ValaList* _tmp702_;
12117 _tmp701_ = vala_method_get_parameters (_tmp700_);
12118 _param_list = _tmp701_;
12119 _tmp702_ = _param_list;
12120 _tmp703_ = vala_collection_get_size ((ValaCollection*) _tmp702_);
12121 _tmp704_ = _tmp703_;
12122 _param_size = _tmp704_;
12128 ValaList* _tmp708_;
12130 gpointer _tmp710_ = NULL;
12131 ValaParameter* param;
12132 ValaParameter* _tmp711_;
12135 _tmp705_ = _param_index;
12136 _param_index = _tmp705_ + 1;
12137 _tmp706_ = _param_index;
12138 _tmp707_ = _param_size;
12139 if (!(_tmp706_ < _tmp707_)) {
12142 _tmp708_ = _param_list;
12143 _tmp709_ = _param_index;
12144 _tmp710_ = vala_list_get (_tmp708_, _tmp709_);
12145 param = (ValaParameter*) _tmp710_;
12147 _tmp712_ = vala_parameter_get_captured (_tmp711_);
12148 _tmp713_ = _tmp712_;
12150 ValaParameter* _tmp714_;
12151 ValaDataType* _tmp715_;
12152 ValaDataType* _tmp716_;
12153 ValaDataType* _tmp717_ = NULL;
12154 ValaDataType* param_type;
12155 ValaDataType* _tmp718_;
12158 ValaDataType* _tmp724_;
12159 gboolean _tmp725_ = FALSE;
12161 _tmp715_ = vala_variable_get_variable_type ((ValaVariable*) _tmp714_);
12162 _tmp716_ = _tmp715_;
12163 _tmp717_ = vala_data_type_copy (_tmp716_);
12164 param_type = _tmp717_;
12165 _tmp718_ = param_type;
12166 _tmp719_ = vala_data_type_get_value_owned (_tmp718_);
12167 _tmp720_ = _tmp719_;
12169 ValaDataType* _tmp721_;
12170 ValaDataType* _tmp722_;
12171 gboolean _tmp723_ = FALSE;
12172 _tmp721_ = param_type;
12173 _tmp722_ = param_type;
12174 _tmp723_ = vala_ccode_base_module_no_implicit_copy (self, _tmp722_);
12175 vala_data_type_set_value_owned (_tmp721_, !_tmp723_);
12177 _tmp724_ = param_type;
12178 _tmp725_ = vala_ccode_base_module_requires_destroy (self, _tmp724_);
12180 gboolean old_coroutine;
12181 ValaMethod* _tmp726_;
12182 ValaCCodeFunction* _tmp731_;
12183 ValaCCodeFunction* _tmp732_;
12184 ValaParameter* _tmp733_;
12185 ValaCCodeExpression* _tmp734_ = NULL;
12186 ValaCCodeExpression* _tmp735_;
12188 old_coroutine = FALSE;
12190 if (_tmp726_ != NULL) {
12191 ValaMethod* _tmp727_;
12194 ValaMethod* _tmp730_;
12196 _tmp728_ = vala_method_get_coroutine (_tmp727_);
12197 _tmp729_ = _tmp728_;
12198 old_coroutine = _tmp729_;
12200 vala_method_set_coroutine (_tmp730_, FALSE);
12202 _tmp731_ = vala_ccode_base_module_get_ccode (self);
12203 _tmp732_ = _tmp731_;
12205 _tmp734_ = vala_ccode_base_module_destroy_parameter (self, _tmp733_);
12206 _tmp735_ = _tmp734_;
12207 vala_ccode_function_add_expression (_tmp732_, _tmp735_);
12208 _vala_ccode_node_unref0 (_tmp735_);
12209 _tmp736_ = old_coroutine;
12211 ValaMethod* _tmp737_;
12213 vala_method_set_coroutine (_tmp737_, TRUE);
12216 _vala_code_node_unref0 (param_type);
12218 _vala_code_node_unref0 (param);
12220 _vala_iterable_unref0 (_param_list);
12222 _vala_code_node_unref0 (m);
12224 ValaBlock* _tmp738_;
12225 ValaSymbol* _tmp739_;
12226 ValaSymbol* _tmp740_;
12228 _tmp739_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp738_);
12229 _tmp740_ = _tmp739_;
12230 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp740_, VALA_TYPE_PROPERTY_ACCESSOR)) {
12231 ValaBlock* _tmp741_;
12232 ValaSymbol* _tmp742_;
12233 ValaSymbol* _tmp743_;
12234 ValaPropertyAccessor* _tmp744_;
12235 ValaPropertyAccessor* acc;
12236 gboolean _tmp745_ = FALSE;
12237 ValaPropertyAccessor* _tmp746_;
12242 _tmp742_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp741_);
12243 _tmp743_ = _tmp742_;
12244 _tmp744_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp743_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
12247 _tmp747_ = vala_property_accessor_get_readable (_tmp746_);
12248 _tmp748_ = _tmp747_;
12250 ValaPropertyAccessor* _tmp749_;
12251 ValaParameter* _tmp750_;
12252 ValaParameter* _tmp751_;
12256 _tmp750_ = vala_property_accessor_get_value_parameter (_tmp749_);
12257 _tmp751_ = _tmp750_;
12258 _tmp752_ = vala_parameter_get_captured (_tmp751_);
12259 _tmp753_ = _tmp752_;
12260 _tmp745_ = _tmp753_;
12264 _tmp754_ = _tmp745_;
12266 ValaPropertyAccessor* _tmp755_;
12267 ValaParameter* _tmp756_;
12268 ValaParameter* _tmp757_;
12269 ValaDataType* _tmp758_;
12270 ValaDataType* _tmp759_;
12271 ValaDataType* _tmp760_ = NULL;
12272 ValaDataType* param_type;
12273 ValaDataType* _tmp761_;
12276 ValaDataType* _tmp767_;
12277 gboolean _tmp768_ = FALSE;
12279 _tmp756_ = vala_property_accessor_get_value_parameter (_tmp755_);
12280 _tmp757_ = _tmp756_;
12281 _tmp758_ = vala_variable_get_variable_type ((ValaVariable*) _tmp757_);
12282 _tmp759_ = _tmp758_;
12283 _tmp760_ = vala_data_type_copy (_tmp759_);
12284 param_type = _tmp760_;
12285 _tmp761_ = param_type;
12286 _tmp762_ = vala_data_type_get_value_owned (_tmp761_);
12287 _tmp763_ = _tmp762_;
12289 ValaDataType* _tmp764_;
12290 ValaDataType* _tmp765_;
12291 gboolean _tmp766_ = FALSE;
12292 _tmp764_ = param_type;
12293 _tmp765_ = param_type;
12294 _tmp766_ = vala_ccode_base_module_no_implicit_copy (self, _tmp765_);
12295 vala_data_type_set_value_owned (_tmp764_, !_tmp766_);
12297 _tmp767_ = param_type;
12298 _tmp768_ = vala_ccode_base_module_requires_destroy (self, _tmp767_);
12300 ValaCCodeFunction* _tmp769_;
12301 ValaCCodeFunction* _tmp770_;
12302 ValaPropertyAccessor* _tmp771_;
12303 ValaParameter* _tmp772_;
12304 ValaParameter* _tmp773_;
12305 ValaCCodeExpression* _tmp774_ = NULL;
12306 ValaCCodeExpression* _tmp775_;
12307 _tmp769_ = vala_ccode_base_module_get_ccode (self);
12308 _tmp770_ = _tmp769_;
12310 _tmp772_ = vala_property_accessor_get_value_parameter (_tmp771_);
12311 _tmp773_ = _tmp772_;
12312 _tmp774_ = vala_ccode_base_module_destroy_parameter (self, _tmp773_);
12313 _tmp775_ = _tmp774_;
12314 vala_ccode_function_add_expression (_tmp770_, _tmp775_);
12315 _vala_ccode_node_unref0 (_tmp775_);
12317 _vala_code_node_unref0 (param_type);
12319 _vala_code_node_unref0 (acc);
12322 _tmp776_ = parent_block;
12323 if (_tmp776_ != NULL) {
12324 ValaBlock* _tmp777_;
12326 gint parent_block_id;
12328 gchar* _tmp780_ = NULL;
12330 ValaCCodeIdentifier* _tmp782_;
12331 ValaCCodeIdentifier* _tmp783_;
12332 ValaCCodeFunctionCall* _tmp784_;
12333 ValaCCodeFunctionCall* _tmp785_;
12334 ValaCCodeFunctionCall* unref_call;
12335 ValaCCodeFunctionCall* _tmp786_;
12337 gchar* _tmp788_ = NULL;
12339 ValaCCodeIdentifier* _tmp790_;
12340 ValaCCodeIdentifier* _tmp791_;
12342 gchar* _tmp793_ = NULL;
12344 ValaCCodeMemberAccess* _tmp795_;
12345 ValaCCodeMemberAccess* _tmp796_;
12346 ValaCCodeFunction* _tmp797_;
12347 ValaCCodeFunction* _tmp798_;
12348 ValaCCodeFunctionCall* _tmp799_;
12349 ValaCCodeFunction* _tmp800_;
12350 ValaCCodeFunction* _tmp801_;
12352 gchar* _tmp803_ = NULL;
12354 ValaCCodeIdentifier* _tmp805_;
12355 ValaCCodeIdentifier* _tmp806_;
12357 gchar* _tmp808_ = NULL;
12359 ValaCCodeMemberAccess* _tmp810_;
12360 ValaCCodeMemberAccess* _tmp811_;
12361 ValaCCodeConstant* _tmp812_;
12362 ValaCCodeConstant* _tmp813_;
12363 _tmp777_ = parent_block;
12364 _tmp778_ = vala_ccode_base_module_get_block_id (self, _tmp777_);
12365 parent_block_id = _tmp778_;
12366 _tmp779_ = parent_block_id;
12367 _tmp780_ = g_strdup_printf ("block%d_data_unref", _tmp779_);
12368 _tmp781_ = _tmp780_;
12369 _tmp782_ = vala_ccode_identifier_new (_tmp781_);
12370 _tmp783_ = _tmp782_;
12371 _tmp784_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp783_);
12372 _tmp785_ = _tmp784_;
12373 _vala_ccode_node_unref0 (_tmp783_);
12374 _g_free0 (_tmp781_);
12375 unref_call = _tmp785_;
12376 _tmp786_ = unref_call;
12377 _tmp787_ = block_id;
12378 _tmp788_ = g_strdup_printf ("_data%d_", _tmp787_);
12379 _tmp789_ = _tmp788_;
12380 _tmp790_ = vala_ccode_identifier_new (_tmp789_);
12381 _tmp791_ = _tmp790_;
12382 _tmp792_ = parent_block_id;
12383 _tmp793_ = g_strdup_printf ("_data%d_", _tmp792_);
12384 _tmp794_ = _tmp793_;
12385 _tmp795_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp791_, _tmp794_);
12386 _tmp796_ = _tmp795_;
12387 vala_ccode_function_call_add_argument (_tmp786_, (ValaCCodeExpression*) _tmp796_);
12388 _vala_ccode_node_unref0 (_tmp796_);
12389 _g_free0 (_tmp794_);
12390 _vala_ccode_node_unref0 (_tmp791_);
12391 _g_free0 (_tmp789_);
12392 _tmp797_ = vala_ccode_base_module_get_ccode (self);
12393 _tmp798_ = _tmp797_;
12394 _tmp799_ = unref_call;
12395 vala_ccode_function_add_expression (_tmp798_, (ValaCCodeExpression*) _tmp799_);
12396 _tmp800_ = vala_ccode_base_module_get_ccode (self);
12397 _tmp801_ = _tmp800_;
12398 _tmp802_ = block_id;
12399 _tmp803_ = g_strdup_printf ("_data%d_", _tmp802_);
12400 _tmp804_ = _tmp803_;
12401 _tmp805_ = vala_ccode_identifier_new (_tmp804_);
12402 _tmp806_ = _tmp805_;
12403 _tmp807_ = parent_block_id;
12404 _tmp808_ = g_strdup_printf ("_data%d_", _tmp807_);
12405 _tmp809_ = _tmp808_;
12406 _tmp810_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp806_, _tmp809_);
12407 _tmp811_ = _tmp810_;
12408 _tmp812_ = vala_ccode_constant_new ("NULL");
12409 _tmp813_ = _tmp812_;
12410 vala_ccode_function_add_assignment (_tmp801_, (ValaCCodeExpression*) _tmp811_, (ValaCCodeExpression*) _tmp813_);
12411 _vala_ccode_node_unref0 (_tmp813_);
12412 _vala_ccode_node_unref0 (_tmp811_);
12413 _g_free0 (_tmp809_);
12414 _vala_ccode_node_unref0 (_tmp806_);
12415 _g_free0 (_tmp804_);
12416 _vala_ccode_node_unref0 (unref_call);
12418 ValaDataType* _tmp814_ = NULL;
12419 ValaDataType* _tmp815_;
12421 _tmp814_ = vala_ccode_base_module_get_this_type (self);
12422 _tmp815_ = _tmp814_;
12423 _tmp816_ = _tmp815_ != NULL;
12424 _vala_code_node_unref0 (_tmp815_);
12426 gboolean _tmp817_ = FALSE;
12427 _tmp817_ = vala_ccode_base_module_is_in_destructor (self);
12429 ValaTypeSymbol* _tmp818_;
12430 ValaTypeSymbol* _tmp819_;
12431 ValaDataType* _tmp820_ = NULL;
12432 ValaDataType* _tmp821_;
12433 ValaCCodeIdentifier* _tmp822_;
12434 ValaCCodeIdentifier* _tmp823_;
12435 ValaGLibValue* _tmp824_;
12436 ValaGLibValue* _tmp825_;
12437 ValaGLibValue* this_value;
12438 ValaCCodeFunction* _tmp826_;
12439 ValaCCodeFunction* _tmp827_;
12440 ValaGLibValue* _tmp828_;
12441 ValaCCodeExpression* _tmp829_ = NULL;
12442 ValaCCodeExpression* _tmp830_;
12443 _tmp818_ = vala_ccode_base_module_get_current_type_symbol (self);
12444 _tmp819_ = _tmp818_;
12445 _tmp820_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp819_);
12446 _tmp821_ = _tmp820_;
12447 _tmp822_ = vala_ccode_identifier_new ("self");
12448 _tmp823_ = _tmp822_;
12449 _tmp824_ = vala_glib_value_new (_tmp821_, (ValaCCodeExpression*) _tmp823_, TRUE);
12450 _tmp825_ = _tmp824_;
12451 _vala_ccode_node_unref0 (_tmp823_);
12452 _vala_code_node_unref0 (_tmp821_);
12453 this_value = _tmp825_;
12454 _tmp826_ = vala_ccode_base_module_get_ccode (self);
12455 _tmp827_ = _tmp826_;
12456 _tmp828_ = this_value;
12457 _tmp829_ = vala_ccode_base_module_destroy_value (self, (ValaTargetValue*) _tmp828_, FALSE);
12458 _tmp830_ = _tmp829_;
12459 vala_ccode_function_add_expression (_tmp827_, _tmp830_);
12460 _vala_ccode_node_unref0 (_tmp830_);
12461 _vala_target_value_unref0 (this_value);
12465 _tmp831_ = vala_ccode_identifier_new ("g_slice_free");
12466 _tmp832_ = _tmp831_;
12467 _tmp833_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp832_);
12468 _tmp834_ = _tmp833_;
12469 _vala_ccode_node_unref0 (_tmp832_);
12470 data_free = _tmp834_;
12471 _tmp835_ = data_free;
12472 _tmp836_ = struct_name;
12473 _tmp837_ = vala_ccode_identifier_new (_tmp836_);
12474 _tmp838_ = _tmp837_;
12475 vala_ccode_function_call_add_argument (_tmp835_, (ValaCCodeExpression*) _tmp838_);
12476 _vala_ccode_node_unref0 (_tmp838_);
12477 _tmp839_ = data_free;
12478 _tmp840_ = block_id;
12479 _tmp841_ = g_strdup_printf ("_data%d_", _tmp840_);
12480 _tmp842_ = _tmp841_;
12481 _tmp843_ = vala_ccode_identifier_new (_tmp842_);
12482 _tmp844_ = _tmp843_;
12483 vala_ccode_function_call_add_argument (_tmp839_, (ValaCCodeExpression*) _tmp844_);
12484 _vala_ccode_node_unref0 (_tmp844_);
12485 _g_free0 (_tmp842_);
12486 _tmp845_ = vala_ccode_base_module_get_ccode (self);
12487 _tmp846_ = _tmp845_;
12488 _tmp847_ = data_free;
12489 vala_ccode_function_add_expression (_tmp846_, (ValaCCodeExpression*) _tmp847_);
12490 _tmp848_ = vala_ccode_base_module_get_ccode (self);
12491 _tmp849_ = _tmp848_;
12492 vala_ccode_function_close (_tmp849_);
12493 vala_ccode_base_module_pop_function (self);
12494 _tmp850_ = self->cfile;
12495 _tmp851_ = unref_fun;
12496 vala_ccode_file_add_function_declaration (_tmp850_, _tmp851_);
12497 _tmp852_ = self->cfile;
12498 _tmp853_ = unref_fun;
12499 vala_ccode_file_add_function (_tmp852_, _tmp853_);
12500 _vala_ccode_node_unref0 (data_free);
12501 _vala_ccode_node_unref0 (outer_block);
12502 _vala_ccode_node_unref0 (unref_fun);
12503 _vala_ccode_node_unref0 (ccall);
12504 _vala_ccode_node_unref0 (ref_fun);
12505 _vala_ccode_node_unref0 (_typedef_);
12506 _vala_ccode_node_unref0 (data_alloc);
12507 _vala_ccode_node_unref0 (data);
12508 _g_free0 (struct_name);
12509 _vala_code_node_unref0 (parent_block);
12512 ValaBlock* _tmp854_;
12513 ValaList* _tmp855_ = NULL;
12514 ValaList* _stmt_list;
12515 ValaList* _tmp856_;
12521 _tmp855_ = vala_block_get_statements (_tmp854_);
12522 _stmt_list = _tmp855_;
12523 _tmp856_ = _stmt_list;
12524 _tmp857_ = vala_collection_get_size ((ValaCollection*) _tmp856_);
12525 _tmp858_ = _tmp857_;
12526 _stmt_size = _tmp858_;
12532 ValaList* _tmp862_;
12534 gpointer _tmp864_ = NULL;
12535 ValaStatement* stmt;
12536 ValaStatement* _tmp865_;
12537 ValaSourceReference* _tmp866_;
12538 ValaSourceReference* _tmp867_;
12539 ValaStatement* _tmp868_;
12540 _tmp859_ = _stmt_index;
12541 _stmt_index = _tmp859_ + 1;
12542 _tmp860_ = _stmt_index;
12543 _tmp861_ = _stmt_size;
12544 if (!(_tmp860_ < _tmp861_)) {
12547 _tmp862_ = _stmt_list;
12548 _tmp863_ = _stmt_index;
12549 _tmp864_ = vala_list_get (_tmp862_, _tmp863_);
12550 stmt = (ValaStatement*) _tmp864_;
12552 _tmp866_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp865_);
12553 _tmp867_ = _tmp866_;
12554 vala_ccode_base_module_push_line (self, _tmp867_);
12556 vala_code_node_emit ((ValaCodeNode*) _tmp868_, (ValaCodeGenerator*) self);
12557 vala_ccode_base_module_pop_line (self);
12558 _vala_code_node_unref0 (stmt);
12560 _vala_iterable_unref0 (_stmt_list);
12563 ValaList* _tmp869_;
12567 _tmp869_ = local_vars;
12568 _tmp870_ = vala_collection_get_size ((ValaCollection*) _tmp869_);
12569 _tmp871_ = _tmp870_;
12577 ValaList* _tmp876_;
12579 gpointer _tmp878_ = NULL;
12580 ValaLocalVariable* local;
12581 ValaLocalVariable* _tmp879_;
12582 gboolean _tmp880_ = FALSE;
12583 gboolean _tmp881_ = FALSE;
12584 gboolean _tmp882_ = FALSE;
12585 ValaLocalVariable* _tmp883_;
12591 _tmp873_ = _tmp872_;
12599 if (!(_tmp875_ >= 0)) {
12602 _tmp876_ = local_vars;
12604 _tmp878_ = vala_list_get (_tmp876_, _tmp877_);
12605 local = (ValaLocalVariable*) _tmp878_;
12607 vala_symbol_set_active ((ValaSymbol*) _tmp879_, FALSE);
12609 _tmp884_ = vala_code_node_get_unreachable ((ValaCodeNode*) _tmp883_);
12610 _tmp885_ = _tmp884_;
12612 ValaLocalVariable* _tmp886_;
12616 _tmp887_ = vala_local_variable_get_floating (_tmp886_);
12617 _tmp888_ = _tmp887_;
12618 _tmp882_ = !_tmp888_;
12622 _tmp889_ = _tmp882_;
12624 ValaLocalVariable* _tmp890_;
12628 _tmp891_ = vala_local_variable_get_captured (_tmp890_);
12629 _tmp892_ = _tmp891_;
12630 _tmp881_ = !_tmp892_;
12634 _tmp893_ = _tmp881_;
12636 ValaLocalVariable* _tmp894_;
12637 ValaDataType* _tmp895_;
12638 ValaDataType* _tmp896_;
12639 gboolean _tmp897_ = FALSE;
12641 _tmp895_ = vala_variable_get_variable_type ((ValaVariable*) _tmp894_);
12642 _tmp896_ = _tmp895_;
12643 _tmp897_ = vala_ccode_base_module_requires_destroy (self, _tmp896_);
12644 _tmp880_ = _tmp897_;
12648 _tmp898_ = _tmp880_;
12650 ValaCCodeFunction* _tmp899_;
12651 ValaCCodeFunction* _tmp900_;
12652 ValaLocalVariable* _tmp901_;
12653 ValaCCodeExpression* _tmp902_ = NULL;
12654 ValaCCodeExpression* _tmp903_;
12655 _tmp899_ = vala_ccode_base_module_get_ccode (self);
12656 _tmp900_ = _tmp899_;
12658 _tmp902_ = vala_ccode_base_module_destroy_local (self, _tmp901_);
12659 _tmp903_ = _tmp902_;
12660 vala_ccode_function_add_expression (_tmp900_, _tmp903_);
12661 _vala_ccode_node_unref0 (_tmp903_);
12663 _vala_code_node_unref0 (local);
12668 _tmp905_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp904_);
12669 _tmp906_ = _tmp905_;
12670 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp906_, VALA_TYPE_METHOD)) {
12671 ValaBlock* _tmp907_;
12672 ValaSymbol* _tmp908_;
12673 ValaSymbol* _tmp909_;
12674 ValaMethod* _tmp910_;
12677 _tmp908_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp907_);
12678 _tmp909_ = _tmp908_;
12679 _tmp910_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp909_, VALA_TYPE_METHOD, ValaMethod));
12682 ValaMethod* _tmp911_;
12683 ValaList* _tmp912_ = NULL;
12684 ValaList* _param_list;
12685 ValaList* _tmp913_;
12691 _tmp912_ = vala_method_get_parameters (_tmp911_);
12692 _param_list = _tmp912_;
12693 _tmp913_ = _param_list;
12694 _tmp914_ = vala_collection_get_size ((ValaCollection*) _tmp913_);
12695 _tmp915_ = _tmp914_;
12696 _param_size = _tmp915_;
12702 ValaList* _tmp919_;
12704 gpointer _tmp921_ = NULL;
12705 ValaParameter* param;
12706 gboolean _tmp922_ = FALSE;
12707 gboolean _tmp923_ = FALSE;
12708 gboolean _tmp924_ = FALSE;
12709 ValaParameter* _tmp925_;
12715 _tmp916_ = _param_index;
12716 _param_index = _tmp916_ + 1;
12717 _tmp917_ = _param_index;
12718 _tmp918_ = _param_size;
12719 if (!(_tmp917_ < _tmp918_)) {
12722 _tmp919_ = _param_list;
12723 _tmp920_ = _param_index;
12724 _tmp921_ = vala_list_get (_tmp919_, _tmp920_);
12725 param = (ValaParameter*) _tmp921_;
12727 _tmp926_ = vala_parameter_get_captured (_tmp925_);
12728 _tmp927_ = _tmp926_;
12730 ValaParameter* _tmp928_;
12734 _tmp929_ = vala_parameter_get_ellipsis (_tmp928_);
12735 _tmp930_ = _tmp929_;
12736 _tmp924_ = !_tmp930_;
12740 _tmp931_ = _tmp924_;
12742 ValaParameter* _tmp932_;
12743 ValaDataType* _tmp933_;
12744 ValaDataType* _tmp934_;
12745 gboolean _tmp935_ = FALSE;
12747 _tmp933_ = vala_variable_get_variable_type ((ValaVariable*) _tmp932_);
12748 _tmp934_ = _tmp933_;
12749 _tmp935_ = vala_ccode_base_module_requires_destroy (self, _tmp934_);
12750 _tmp923_ = _tmp935_;
12754 _tmp936_ = _tmp923_;
12756 ValaParameter* _tmp937_;
12757 ValaParameterDirection _tmp938_;
12758 ValaParameterDirection _tmp939_;
12760 _tmp938_ = vala_parameter_get_direction (_tmp937_);
12761 _tmp939_ = _tmp938_;
12762 _tmp922_ = _tmp939_ == VALA_PARAMETER_DIRECTION_IN;
12766 _tmp940_ = _tmp922_;
12768 ValaCCodeFunction* _tmp941_;
12769 ValaCCodeFunction* _tmp942_;
12770 ValaParameter* _tmp943_;
12771 ValaCCodeExpression* _tmp944_ = NULL;
12772 ValaCCodeExpression* _tmp945_;
12773 _tmp941_ = vala_ccode_base_module_get_ccode (self);
12774 _tmp942_ = _tmp941_;
12776 _tmp944_ = vala_ccode_base_module_destroy_parameter (self, _tmp943_);
12777 _tmp945_ = _tmp944_;
12778 vala_ccode_function_add_expression (_tmp942_, _tmp945_);
12779 _vala_ccode_node_unref0 (_tmp945_);
12781 gboolean _tmp946_ = FALSE;
12782 ValaParameter* _tmp947_;
12783 ValaParameterDirection _tmp948_;
12784 ValaParameterDirection _tmp949_;
12787 _tmp948_ = vala_parameter_get_direction (_tmp947_);
12788 _tmp949_ = _tmp948_;
12789 if (_tmp949_ == VALA_PARAMETER_DIRECTION_OUT) {
12790 ValaMethod* _tmp950_;
12794 _tmp951_ = vala_method_get_coroutine (_tmp950_);
12795 _tmp952_ = _tmp951_;
12796 _tmp946_ = !_tmp952_;
12800 _tmp953_ = _tmp946_;
12802 ValaParameter* _tmp954_;
12804 vala_ccode_base_module_return_out_parameter (self, _tmp954_);
12807 _vala_code_node_unref0 (param);
12809 _vala_iterable_unref0 (_param_list);
12811 _vala_code_node_unref0 (m);
12813 ValaBlock* _tmp955_;
12814 ValaSymbol* _tmp956_;
12815 ValaSymbol* _tmp957_;
12817 _tmp956_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp955_);
12818 _tmp957_ = _tmp956_;
12819 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp957_, VALA_TYPE_PROPERTY_ACCESSOR)) {
12820 ValaBlock* _tmp958_;
12821 ValaSymbol* _tmp959_;
12822 ValaSymbol* _tmp960_;
12823 ValaPropertyAccessor* _tmp961_;
12824 ValaPropertyAccessor* acc;
12825 gboolean _tmp962_ = FALSE;
12826 gboolean _tmp963_ = FALSE;
12827 ValaPropertyAccessor* _tmp964_;
12828 ValaParameter* _tmp965_;
12829 ValaParameter* _tmp966_;
12833 _tmp959_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp958_);
12834 _tmp960_ = _tmp959_;
12835 _tmp961_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp960_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
12838 _tmp965_ = vala_property_accessor_get_value_parameter (_tmp964_);
12839 _tmp966_ = _tmp965_;
12840 if (_tmp966_ != NULL) {
12841 ValaPropertyAccessor* _tmp967_;
12842 ValaParameter* _tmp968_;
12843 ValaParameter* _tmp969_;
12847 _tmp968_ = vala_property_accessor_get_value_parameter (_tmp967_);
12848 _tmp969_ = _tmp968_;
12849 _tmp970_ = vala_parameter_get_captured (_tmp969_);
12850 _tmp971_ = _tmp970_;
12851 _tmp963_ = !_tmp971_;
12855 _tmp972_ = _tmp963_;
12857 ValaPropertyAccessor* _tmp973_;
12858 ValaParameter* _tmp974_;
12859 ValaParameter* _tmp975_;
12860 ValaDataType* _tmp976_;
12861 ValaDataType* _tmp977_;
12862 gboolean _tmp978_ = FALSE;
12864 _tmp974_ = vala_property_accessor_get_value_parameter (_tmp973_);
12865 _tmp975_ = _tmp974_;
12866 _tmp976_ = vala_variable_get_variable_type ((ValaVariable*) _tmp975_);
12867 _tmp977_ = _tmp976_;
12868 _tmp978_ = vala_ccode_base_module_requires_destroy (self, _tmp977_);
12869 _tmp962_ = _tmp978_;
12873 _tmp979_ = _tmp962_;
12875 ValaCCodeFunction* _tmp980_;
12876 ValaCCodeFunction* _tmp981_;
12877 ValaPropertyAccessor* _tmp982_;
12878 ValaParameter* _tmp983_;
12879 ValaParameter* _tmp984_;
12880 ValaCCodeExpression* _tmp985_ = NULL;
12881 ValaCCodeExpression* _tmp986_;
12882 _tmp980_ = vala_ccode_base_module_get_ccode (self);
12883 _tmp981_ = _tmp980_;
12885 _tmp983_ = vala_property_accessor_get_value_parameter (_tmp982_);
12886 _tmp984_ = _tmp983_;
12887 _tmp985_ = vala_ccode_base_module_destroy_parameter (self, _tmp984_);
12888 _tmp986_ = _tmp985_;
12889 vala_ccode_function_add_expression (_tmp981_, _tmp986_);
12890 _vala_ccode_node_unref0 (_tmp986_);
12892 _vala_code_node_unref0 (acc);
12896 _tmp988_ = vala_block_get_captured (_tmp987_);
12897 _tmp989_ = _tmp988_;
12899 ValaBlock* _tmp990_;
12903 gchar* _tmp993_ = NULL;
12905 ValaCCodeIdentifier* _tmp995_;
12906 ValaCCodeIdentifier* _tmp996_;
12907 ValaCCodeFunctionCall* _tmp997_;
12908 ValaCCodeFunctionCall* _tmp998_;
12909 ValaCCodeFunctionCall* data_unref;
12910 ValaCCodeFunctionCall* _tmp999_;
12912 gchar* _tmp1001_ = NULL;
12914 ValaCCodeExpression* _tmp1003_ = NULL;
12915 ValaCCodeExpression* _tmp1004_;
12916 ValaCCodeFunction* _tmp1005_;
12917 ValaCCodeFunction* _tmp1006_;
12918 ValaCCodeFunctionCall* _tmp1007_;
12919 ValaCCodeFunction* _tmp1008_;
12920 ValaCCodeFunction* _tmp1009_;
12922 gchar* _tmp1011_ = NULL;
12924 ValaCCodeExpression* _tmp1013_ = NULL;
12925 ValaCCodeExpression* _tmp1014_;
12926 ValaCCodeConstant* _tmp1015_;
12927 ValaCCodeConstant* _tmp1016_;
12929 _tmp991_ = vala_ccode_base_module_get_block_id (self, _tmp990_);
12930 block_id = _tmp991_;
12931 _tmp992_ = block_id;
12932 _tmp993_ = g_strdup_printf ("block%d_data_unref", _tmp992_);
12933 _tmp994_ = _tmp993_;
12934 _tmp995_ = vala_ccode_identifier_new (_tmp994_);
12935 _tmp996_ = _tmp995_;
12936 _tmp997_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp996_);
12937 _tmp998_ = _tmp997_;
12938 _vala_ccode_node_unref0 (_tmp996_);
12939 _g_free0 (_tmp994_);
12940 data_unref = _tmp998_;
12941 _tmp999_ = data_unref;
12942 _tmp1000_ = block_id;
12943 _tmp1001_ = g_strdup_printf ("_data%d_", _tmp1000_);
12944 _tmp1002_ = _tmp1001_;
12945 _tmp1003_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp1002_);
12946 _tmp1004_ = _tmp1003_;
12947 vala_ccode_function_call_add_argument (_tmp999_, _tmp1004_);
12948 _vala_ccode_node_unref0 (_tmp1004_);
12949 _g_free0 (_tmp1002_);
12950 _tmp1005_ = vala_ccode_base_module_get_ccode (self);
12951 _tmp1006_ = _tmp1005_;
12952 _tmp1007_ = data_unref;
12953 vala_ccode_function_add_expression (_tmp1006_, (ValaCCodeExpression*) _tmp1007_);
12954 _tmp1008_ = vala_ccode_base_module_get_ccode (self);
12955 _tmp1009_ = _tmp1008_;
12956 _tmp1010_ = block_id;
12957 _tmp1011_ = g_strdup_printf ("_data%d_", _tmp1010_);
12958 _tmp1012_ = _tmp1011_;
12959 _tmp1013_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp1012_);
12960 _tmp1014_ = _tmp1013_;
12961 _tmp1015_ = vala_ccode_constant_new ("NULL");
12962 _tmp1016_ = _tmp1015_;
12963 vala_ccode_function_add_assignment (_tmp1009_, _tmp1014_, (ValaCCodeExpression*) _tmp1016_);
12964 _vala_ccode_node_unref0 (_tmp1016_);
12965 _vala_ccode_node_unref0 (_tmp1014_);
12966 _g_free0 (_tmp1012_);
12967 _vala_ccode_node_unref0 (data_unref);
12970 _tmp1020_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp1019_);
12971 _tmp1021_ = _tmp1020_;
12972 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1021_, VALA_TYPE_BLOCK)) {
12975 ValaBlock* _tmp1022_;
12976 ValaCodeNode* _tmp1023_;
12977 ValaCodeNode* _tmp1024_;
12979 _tmp1023_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp1022_);
12980 _tmp1024_ = _tmp1023_;
12981 _tmp1018_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1024_, VALA_TYPE_SWITCH_STATEMENT);
12983 _tmp1025_ = _tmp1018_;
12987 ValaBlock* _tmp1026_;
12988 ValaCodeNode* _tmp1027_;
12989 ValaCodeNode* _tmp1028_;
12991 _tmp1027_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp1026_);
12992 _tmp1028_ = _tmp1027_;
12993 _tmp1017_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1028_, VALA_TYPE_TRY_STATEMENT);
12995 _tmp1029_ = _tmp1017_;
12997 ValaCCodeFunction* _tmp1030_;
12998 ValaCCodeFunction* _tmp1031_;
12999 _tmp1030_ = vala_ccode_base_module_get_ccode (self);
13000 _tmp1031_ = _tmp1030_;
13001 vala_ccode_function_close (_tmp1031_);
13003 _tmp1032_ = self->emit_context;
13004 vala_ccode_base_module_emit_context_pop_symbol (_tmp1032_);
13005 _vala_iterable_unref0 (local_vars);
13009 static void vala_ccode_base_module_real_visit_declaration_statement (ValaCodeVisitor* base, ValaDeclarationStatement* stmt) {
13010 ValaCCodeBaseModule * self;
13011 ValaDeclarationStatement* _tmp0_;
13012 ValaSymbol* _tmp1_;
13013 ValaSymbol* _tmp2_;
13014 self = (ValaCCodeBaseModule*) base;
13015 g_return_if_fail (stmt != NULL);
13017 _tmp1_ = vala_declaration_statement_get_declaration (_tmp0_);
13019 vala_code_node_accept ((ValaCodeNode*) _tmp2_, (ValaCodeVisitor*) self);
13023 ValaCCodeExpression* vala_ccode_base_module_get_local_cexpression (ValaCCodeBaseModule* self, ValaLocalVariable* local) {
13024 ValaCCodeExpression* result = NULL;
13025 gboolean _tmp0_ = FALSE;
13026 g_return_val_if_fail (self != NULL, NULL);
13027 g_return_val_if_fail (local != NULL, NULL);
13028 _tmp0_ = vala_ccode_base_module_is_in_coroutine (self);
13030 ValaCCodeIdentifier* _tmp1_;
13031 ValaCCodeIdentifier* _tmp2_;
13032 ValaLocalVariable* _tmp3_;
13033 gchar* _tmp4_ = NULL;
13035 ValaCCodeMemberAccess* _tmp6_;
13036 ValaCCodeExpression* _tmp7_;
13037 _tmp1_ = vala_ccode_identifier_new ("_data_");
13040 _tmp4_ = vala_ccode_base_module_get_local_cname (self, _tmp3_);
13042 _tmp6_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp2_, _tmp5_);
13043 _tmp7_ = (ValaCCodeExpression*) _tmp6_;
13045 _vala_ccode_node_unref0 (_tmp2_);
13049 ValaLocalVariable* _tmp8_;
13050 gchar* _tmp9_ = NULL;
13052 ValaCCodeIdentifier* _tmp11_;
13053 ValaCCodeExpression* _tmp12_;
13055 _tmp9_ = vala_ccode_base_module_get_local_cname (self, _tmp8_);
13057 _tmp11_ = vala_ccode_identifier_new (_tmp10_);
13058 _tmp12_ = (ValaCCodeExpression*) _tmp11_;
13059 _g_free0 (_tmp10_);
13066 ValaCCodeExpression* vala_ccode_base_module_get_variable_cexpression (ValaCCodeBaseModule* self, const gchar* name) {
13067 ValaCCodeExpression* result = NULL;
13068 gboolean _tmp0_ = FALSE;
13069 g_return_val_if_fail (self != NULL, NULL);
13070 g_return_val_if_fail (name != NULL, NULL);
13071 _tmp0_ = vala_ccode_base_module_is_in_coroutine (self);
13073 ValaCCodeIdentifier* _tmp1_;
13074 ValaCCodeIdentifier* _tmp2_;
13075 const gchar* _tmp3_;
13076 gchar* _tmp4_ = NULL;
13078 ValaCCodeMemberAccess* _tmp6_;
13079 ValaCCodeExpression* _tmp7_;
13080 _tmp1_ = vala_ccode_identifier_new ("_data_");
13083 _tmp4_ = vala_ccode_base_module_get_variable_cname (self, _tmp3_);
13085 _tmp6_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp2_, _tmp5_);
13086 _tmp7_ = (ValaCCodeExpression*) _tmp6_;
13088 _vala_ccode_node_unref0 (_tmp2_);
13092 const gchar* _tmp8_;
13093 gchar* _tmp9_ = NULL;
13095 ValaCCodeIdentifier* _tmp11_;
13096 ValaCCodeExpression* _tmp12_;
13098 _tmp9_ = vala_ccode_base_module_get_variable_cname (self, _tmp8_);
13100 _tmp11_ = vala_ccode_identifier_new (_tmp10_);
13101 _tmp12_ = (ValaCCodeExpression*) _tmp11_;
13102 _g_free0 (_tmp10_);
13109 ValaCCodeExpression* vala_ccode_base_module_get_this_cexpression (ValaCCodeBaseModule* self) {
13110 ValaCCodeExpression* result = NULL;
13111 gboolean _tmp0_ = FALSE;
13112 g_return_val_if_fail (self != NULL, NULL);
13113 _tmp0_ = vala_ccode_base_module_is_in_coroutine (self);
13115 ValaCCodeIdentifier* _tmp1_;
13116 ValaCCodeIdentifier* _tmp2_;
13117 ValaCCodeMemberAccess* _tmp3_;
13118 ValaCCodeExpression* _tmp4_;
13119 _tmp1_ = vala_ccode_identifier_new ("_data_");
13121 _tmp3_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp2_, "self");
13122 _tmp4_ = (ValaCCodeExpression*) _tmp3_;
13123 _vala_ccode_node_unref0 (_tmp2_);
13127 ValaCCodeIdentifier* _tmp5_;
13128 _tmp5_ = vala_ccode_identifier_new ("self");
13129 result = (ValaCCodeExpression*) _tmp5_;
13135 gchar* vala_ccode_base_module_get_local_cname (ValaCCodeBaseModule* self, ValaLocalVariable* local) {
13136 gchar* result = NULL;
13137 ValaLocalVariable* _tmp0_;
13138 const gchar* _tmp1_;
13139 const gchar* _tmp2_;
13140 gchar* _tmp3_ = NULL;
13142 gboolean _tmp4_ = FALSE;
13143 g_return_val_if_fail (self != NULL, NULL);
13144 g_return_val_if_fail (local != NULL, NULL);
13146 _tmp1_ = vala_symbol_get_name ((ValaSymbol*) _tmp0_);
13148 _tmp3_ = vala_ccode_base_module_get_variable_cname (self, _tmp2_);
13150 _tmp4_ = vala_ccode_base_module_is_in_coroutine (self);
13152 ValaCCodeBaseModuleEmitContext* _tmp5_;
13154 ValaLocalVariable* _tmp7_;
13155 gpointer _tmp8_ = NULL;
13158 _tmp5_ = self->emit_context;
13159 _tmp6_ = _tmp5_->closure_variable_clash_map;
13161 _tmp8_ = vala_map_get (_tmp6_, _tmp7_);
13162 clash_index = (gint) ((gintptr) _tmp8_);
13163 _tmp9_ = clash_index;
13166 const gchar* _tmp11_;
13167 gchar* _tmp12_ = NULL;
13168 _tmp10_ = clash_index;
13170 _tmp12_ = g_strdup_printf ("_vala%d_%s", _tmp10_, _tmp11_);
13180 static gchar string_get (const gchar* self, glong index) {
13181 gchar result = '\0';
13184 g_return_val_if_fail (self != NULL, '\0');
13186 _tmp1_ = ((gchar*) self)[_tmp0_];
13192 gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, const gchar* name) {
13193 gchar* result = NULL;
13194 const gchar* _tmp0_;
13195 gchar _tmp1_ = '\0';
13196 g_return_val_if_fail (self != NULL, NULL);
13197 g_return_val_if_fail (name != NULL, NULL);
13199 _tmp1_ = string_get (_tmp0_, (glong) 0);
13200 if (_tmp1_ == '.') {
13201 const gchar* _tmp2_;
13204 const gchar* _tmp6_;
13205 gboolean _tmp7_ = FALSE;
13208 const gchar* _tmp19_;
13209 gpointer _tmp20_ = NULL;
13211 if (g_strcmp0 (_tmp2_, ".result") == 0) {
13213 _tmp3_ = g_strdup ("result");
13217 _tmp4_ = vala_ccode_base_module_get_variable_name_map (self);
13220 _tmp7_ = vala_map_contains (_tmp5_, _tmp6_);
13224 const gchar* _tmp10_;
13227 gchar* _tmp13_ = NULL;
13231 _tmp8_ = vala_ccode_base_module_get_variable_name_map (self);
13234 _tmp11_ = vala_ccode_base_module_get_next_temp_var_id (self);
13236 _tmp13_ = g_strdup_printf ("_tmp%d_", _tmp12_);
13238 vala_map_set (_tmp9_, _tmp10_, _tmp14_);
13239 _g_free0 (_tmp14_);
13240 _tmp15_ = vala_ccode_base_module_get_next_temp_var_id (self);
13242 vala_ccode_base_module_set_next_temp_var_id (self, _tmp16_ + 1);
13244 _tmp17_ = vala_ccode_base_module_get_variable_name_map (self);
13247 _tmp20_ = vala_map_get (_tmp18_, _tmp19_);
13248 result = (gchar*) _tmp20_;
13252 const gchar* _tmp22_;
13253 gboolean _tmp23_ = FALSE;
13254 _tmp21_ = self->priv->reserved_identifiers;
13256 _tmp23_ = vala_collection_contains ((ValaCollection*) _tmp21_, _tmp22_);
13258 const gchar* _tmp24_;
13259 gchar* _tmp25_ = NULL;
13261 _tmp25_ = g_strdup_printf ("_%s_", _tmp24_);
13265 const gchar* _tmp26_;
13268 _tmp27_ = g_strdup (_tmp26_);
13276 ValaCCodeExpression* vala_ccode_base_module_get_result_cexpression (ValaCCodeBaseModule* self, const gchar* cname) {
13277 ValaCCodeExpression* result = NULL;
13278 gboolean _tmp0_ = FALSE;
13279 g_return_val_if_fail (self != NULL, NULL);
13280 g_return_val_if_fail (cname != NULL, NULL);
13281 _tmp0_ = vala_ccode_base_module_is_in_coroutine (self);
13283 ValaCCodeIdentifier* _tmp1_;
13284 ValaCCodeIdentifier* _tmp2_;
13285 const gchar* _tmp3_;
13286 ValaCCodeMemberAccess* _tmp4_;
13287 ValaCCodeExpression* _tmp5_;
13288 _tmp1_ = vala_ccode_identifier_new ("_data_");
13291 _tmp4_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp2_, _tmp3_);
13292 _tmp5_ = (ValaCCodeExpression*) _tmp4_;
13293 _vala_ccode_node_unref0 (_tmp2_);
13297 const gchar* _tmp6_;
13298 ValaCCodeIdentifier* _tmp7_;
13300 _tmp7_ = vala_ccode_identifier_new (_tmp6_);
13301 result = (ValaCCodeExpression*) _tmp7_;
13307 gboolean vala_ccode_base_module_is_simple_struct_creation (ValaCCodeBaseModule* self, ValaVariable* variable, ValaExpression* expr) {
13308 gboolean result = FALSE;
13309 ValaVariable* _tmp0_;
13310 ValaDataType* _tmp1_;
13311 ValaDataType* _tmp2_;
13312 ValaTypeSymbol* _tmp3_;
13313 ValaTypeSymbol* _tmp4_;
13314 ValaStruct* _tmp5_;
13316 ValaExpression* _tmp6_;
13317 ValaObjectCreationExpression* _tmp7_;
13318 ValaObjectCreationExpression* creation;
13319 gboolean _tmp8_ = FALSE;
13320 gboolean _tmp9_ = FALSE;
13321 gboolean _tmp10_ = FALSE;
13322 gboolean _tmp11_ = FALSE;
13323 gboolean _tmp12_ = FALSE;
13324 ValaObjectCreationExpression* _tmp13_;
13330 g_return_val_if_fail (self != NULL, FALSE);
13331 g_return_val_if_fail (variable != NULL, FALSE);
13332 g_return_val_if_fail (expr != NULL, FALSE);
13334 _tmp1_ = vala_variable_get_variable_type (_tmp0_);
13336 _tmp3_ = vala_data_type_get_data_type (_tmp2_);
13338 _tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp4_) : NULL);
13341 _tmp7_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_OBJECT_CREATION_EXPRESSION) ? ((ValaObjectCreationExpression*) _tmp6_) : NULL);
13343 _tmp13_ = creation;
13344 if (_tmp13_ != NULL) {
13345 ValaStruct* _tmp14_;
13347 _tmp12_ = _tmp14_ != NULL;
13353 gboolean _tmp16_ = FALSE;
13354 ValaStruct* _tmp17_;
13355 gboolean _tmp18_ = FALSE;
13358 _tmp18_ = vala_struct_is_simple_type (_tmp17_);
13362 ValaStruct* _tmp19_;
13363 gchar* _tmp20_ = NULL;
13366 _tmp20_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp19_);
13368 _tmp16_ = g_strcmp0 (_tmp21_, "va_list") == 0;
13369 _g_free0 (_tmp21_);
13378 ValaVariable* _tmp24_;
13379 ValaDataType* _tmp25_;
13380 ValaDataType* _tmp26_;
13383 _tmp24_ = variable;
13384 _tmp25_ = vala_variable_get_variable_type (_tmp24_);
13386 _tmp27_ = vala_data_type_get_nullable (_tmp26_);
13388 _tmp10_ = !_tmp28_;
13394 ValaVariable* _tmp30_;
13395 ValaDataType* _tmp31_;
13396 ValaDataType* _tmp32_;
13397 ValaTypeSymbol* _tmp33_;
13398 ValaTypeSymbol* _tmp34_;
13399 ValaStruct* _tmp35_;
13400 _tmp30_ = variable;
13401 _tmp31_ = vala_variable_get_variable_type (_tmp30_);
13403 _tmp33_ = vala_data_type_get_data_type (_tmp32_);
13405 _tmp35_ = self->gvalue_type;
13406 _tmp9_ = _tmp34_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
13412 ValaObjectCreationExpression* _tmp37_;
13413 ValaList* _tmp38_ = NULL;
13417 _tmp37_ = creation;
13418 _tmp38_ = vala_object_creation_expression_get_object_initializer (_tmp37_);
13420 _tmp40_ = vala_collection_get_size ((ValaCollection*) _tmp39_);
13422 _tmp8_ = _tmp41_ == 0;
13423 _vala_iterable_unref0 (_tmp39_);
13430 _vala_code_node_unref0 (creation);
13431 _vala_code_node_unref0 (st);
13435 _vala_code_node_unref0 (creation);
13436 _vala_code_node_unref0 (st);
13439 _vala_code_node_unref0 (creation);
13440 _vala_code_node_unref0 (st);
13444 static gboolean vala_ccode_base_module_is_foreach_element_variable (ValaCCodeBaseModule* self, ValaLocalVariable* local) {
13445 gboolean result = FALSE;
13446 ValaLocalVariable* _tmp0_;
13447 ValaSymbol* _tmp1_;
13448 ValaSymbol* _tmp2_;
13449 ValaSymbol* _tmp3_;
13451 ValaSymbol* _tmp4_;
13452 g_return_val_if_fail (self != NULL, FALSE);
13453 g_return_val_if_fail (local != NULL, FALSE);
13455 _tmp1_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp0_);
13457 _tmp3_ = _vala_code_node_ref0 (_tmp2_);
13460 if (_tmp4_ != NULL) {
13461 ValaSymbol* _tmp5_;
13462 ValaSymbol* _tmp6_;
13463 ValaSymbol* _tmp7_;
13464 ValaForeachStatement* _tmp8_;
13465 ValaForeachStatement* stmt;
13466 gboolean _tmp9_ = FALSE;
13467 gboolean _tmp10_ = FALSE;
13468 ValaForeachStatement* _tmp11_;
13472 _tmp6_ = vala_symbol_get_parent_symbol (_tmp5_);
13474 _tmp8_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_FOREACH_STATEMENT) ? ((ValaForeachStatement*) _tmp7_) : NULL);
13477 if (_tmp11_ != NULL) {
13478 ValaForeachStatement* _tmp12_;
13482 _tmp13_ = vala_foreach_statement_get_use_iterator (_tmp12_);
13484 _tmp10_ = !_tmp14_;
13490 ValaForeachStatement* _tmp16_;
13491 ValaLocalVariable* _tmp17_;
13492 ValaLocalVariable* _tmp18_;
13493 ValaLocalVariable* _tmp19_;
13495 _tmp17_ = vala_foreach_statement_get_element_variable (_tmp16_);
13498 _tmp9_ = _tmp18_ == _tmp19_;
13505 _vala_code_node_unref0 (stmt);
13506 _vala_code_node_unref0 (block);
13509 _vala_code_node_unref0 (stmt);
13512 _vala_code_node_unref0 (block);
13517 static void vala_ccode_base_module_real_visit_local_variable (ValaCodeVisitor* base, ValaLocalVariable* local) {
13518 ValaCCodeBaseModule * self;
13519 ValaLocalVariable* _tmp0_;
13520 ValaDataType* _tmp1_;
13521 ValaDataType* _tmp2_;
13522 ValaLocalVariable* _tmp3_;
13523 ValaExpression* _tmp4_;
13524 ValaExpression* _tmp5_;
13525 ValaLocalVariable* _tmp12_;
13526 ValaDataType* _tmp13_;
13527 ValaDataType* _tmp14_;
13528 ValaCCodeFile* _tmp15_;
13529 ValaCCodeExpression* rhs;
13530 gboolean _tmp16_ = FALSE;
13531 ValaLocalVariable* _tmp17_;
13532 ValaExpression* _tmp18_;
13533 ValaExpression* _tmp19_;
13535 gboolean _tmp30_ = FALSE;
13536 ValaLocalVariable* _tmp31_;
13540 ValaCCodeExpression* _tmp201_;
13541 gboolean _tmp213_ = FALSE;
13542 ValaLocalVariable* _tmp214_;
13543 ValaExpression* _tmp215_;
13544 ValaExpression* _tmp216_;
13546 ValaLocalVariable* _tmp226_;
13547 self = (ValaCCodeBaseModule*) base;
13548 g_return_if_fail (local != NULL);
13550 _tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
13552 vala_ccode_base_module_check_type (self, _tmp2_);
13554 _tmp4_ = vala_variable_get_initializer ((ValaVariable*) _tmp3_);
13556 if (_tmp5_ != NULL) {
13557 ValaLocalVariable* _tmp6_;
13558 ValaExpression* _tmp7_;
13559 ValaExpression* _tmp8_;
13560 ValaLocalVariable* _tmp9_;
13561 ValaExpression* _tmp10_;
13562 ValaExpression* _tmp11_;
13564 _tmp7_ = vala_variable_get_initializer ((ValaVariable*) _tmp6_);
13566 vala_code_node_emit ((ValaCodeNode*) _tmp8_, (ValaCodeGenerator*) self);
13568 _tmp10_ = vala_variable_get_initializer ((ValaVariable*) _tmp9_);
13570 vala_code_visitor_visit_end_full_expression ((ValaCodeVisitor*) self, _tmp11_);
13573 _tmp13_ = vala_variable_get_variable_type ((ValaVariable*) _tmp12_);
13575 _tmp15_ = self->cfile;
13576 vala_ccode_base_module_generate_type_declaration (self, _tmp14_, _tmp15_);
13579 _tmp18_ = vala_variable_get_initializer ((ValaVariable*) _tmp17_);
13581 if (_tmp19_ != NULL) {
13582 ValaLocalVariable* _tmp20_;
13583 ValaExpression* _tmp21_;
13584 ValaExpression* _tmp22_;
13585 ValaCCodeExpression* _tmp23_ = NULL;
13586 ValaCCodeExpression* _tmp24_;
13588 _tmp21_ = vala_variable_get_initializer ((ValaVariable*) _tmp20_);
13590 _tmp23_ = vala_ccode_base_module_get_cvalue (self, _tmp22_);
13592 _tmp16_ = _tmp24_ != NULL;
13593 _vala_ccode_node_unref0 (_tmp24_);
13599 ValaLocalVariable* _tmp26_;
13600 ValaExpression* _tmp27_;
13601 ValaExpression* _tmp28_;
13602 ValaCCodeExpression* _tmp29_ = NULL;
13604 _tmp27_ = vala_variable_get_initializer ((ValaVariable*) _tmp26_);
13606 _tmp29_ = vala_ccode_base_module_get_cvalue (self, _tmp28_);
13607 _vala_ccode_node_unref0 (rhs);
13611 _tmp32_ = vala_local_variable_get_captured (_tmp31_);
13616 ValaLocalVariable* _tmp34_;
13617 gboolean _tmp35_ = FALSE;
13619 _tmp35_ = vala_ccode_base_module_is_foreach_element_variable (self, _tmp34_);
13624 gboolean _tmp37_ = FALSE;
13625 ValaLocalVariable* _tmp104_;
13626 ValaDataType* _tmp105_;
13627 ValaDataType* _tmp106_;
13628 _tmp37_ = vala_ccode_base_module_is_in_coroutine (self);
13630 ValaCCodeBaseModuleEmitContext* _tmp38_;
13632 ValaLocalVariable* _tmp40_;
13633 const gchar* _tmp41_;
13634 const gchar* _tmp42_;
13635 gpointer _tmp43_ = NULL;
13638 ValaCCodeBaseModuleEmitContext* _tmp49_;
13640 ValaLocalVariable* _tmp51_;
13641 const gchar* _tmp52_;
13642 const gchar* _tmp53_;
13644 ValaCCodeStruct* _tmp55_;
13645 ValaLocalVariable* _tmp56_;
13646 ValaDataType* _tmp57_;
13647 ValaDataType* _tmp58_;
13648 gchar* _tmp59_ = NULL;
13650 ValaLocalVariable* _tmp61_;
13651 gchar* _tmp62_ = NULL;
13653 ValaLocalVariable* _tmp64_;
13654 ValaDataType* _tmp65_;
13655 ValaDataType* _tmp66_;
13656 gchar* _tmp67_ = NULL;
13660 _tmp38_ = self->emit_context;
13661 _tmp39_ = _tmp38_->closure_variable_count_map;
13663 _tmp41_ = vala_symbol_get_name ((ValaSymbol*) _tmp40_);
13665 _tmp43_ = vala_map_get (_tmp39_, _tmp42_);
13666 count = (gint) ((gintptr) _tmp43_);
13669 ValaCCodeBaseModuleEmitContext* _tmp45_;
13671 ValaLocalVariable* _tmp47_;
13673 _tmp45_ = self->emit_context;
13674 _tmp46_ = _tmp45_->closure_variable_clash_map;
13677 vala_map_set (_tmp46_, _tmp47_, (gpointer) ((gintptr) _tmp48_));
13679 _tmp49_ = self->emit_context;
13680 _tmp50_ = _tmp49_->closure_variable_count_map;
13682 _tmp52_ = vala_symbol_get_name ((ValaSymbol*) _tmp51_);
13685 vala_map_set (_tmp50_, _tmp53_, (gpointer) ((gintptr) (_tmp54_ + 1)));
13686 _tmp55_ = self->closure_struct;
13688 _tmp57_ = vala_variable_get_variable_type ((ValaVariable*) _tmp56_);
13690 _tmp59_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp58_);
13693 _tmp62_ = vala_ccode_base_module_get_local_cname (self, _tmp61_);
13696 _tmp65_ = vala_variable_get_variable_type ((ValaVariable*) _tmp64_);
13698 _tmp67_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp66_);
13700 _tmp69_ = g_strconcat (_tmp63_, _tmp68_, NULL);
13702 vala_ccode_struct_add_field (_tmp55_, _tmp60_, _tmp70_, NULL);
13703 _g_free0 (_tmp70_);
13704 _g_free0 (_tmp68_);
13705 _g_free0 (_tmp63_);
13706 _g_free0 (_tmp60_);
13708 ValaLocalVariable* _tmp71_;
13709 gchar* _tmp72_ = NULL;
13711 ValaLocalVariable* _tmp74_;
13712 ValaDataType* _tmp75_;
13713 ValaDataType* _tmp76_;
13714 gchar* _tmp77_ = NULL;
13716 ValaCCodeVariableDeclarator* _tmp79_;
13717 ValaCCodeVariableDeclarator* _tmp80_;
13718 ValaCCodeVariableDeclarator* cvar;
13719 gboolean _tmp81_ = FALSE;
13720 ValaCCodeExpression* _tmp82_;
13722 ValaCCodeFunction* _tmp96_;
13723 ValaCCodeFunction* _tmp97_;
13724 ValaLocalVariable* _tmp98_;
13725 ValaDataType* _tmp99_;
13726 ValaDataType* _tmp100_;
13727 gchar* _tmp101_ = NULL;
13729 ValaCCodeVariableDeclarator* _tmp103_;
13731 _tmp72_ = vala_ccode_base_module_get_local_cname (self, _tmp71_);
13734 _tmp75_ = vala_variable_get_variable_type ((ValaVariable*) _tmp74_);
13736 _tmp77_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp76_);
13738 _tmp79_ = vala_ccode_variable_declarator_new (_tmp73_, NULL, _tmp78_);
13740 _g_free0 (_tmp78_);
13741 _g_free0 (_tmp73_);
13744 if (_tmp82_ == NULL) {
13747 ValaLocalVariable* _tmp83_;
13748 ValaLocalVariable* _tmp84_;
13749 ValaExpression* _tmp85_;
13750 ValaExpression* _tmp86_;
13751 gboolean _tmp87_ = FALSE;
13754 _tmp85_ = vala_variable_get_initializer ((ValaVariable*) _tmp84_);
13756 _tmp87_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp83_, _tmp86_);
13761 ValaCCodeVariableDeclarator* _tmp89_;
13762 ValaLocalVariable* _tmp90_;
13763 ValaDataType* _tmp91_;
13764 ValaDataType* _tmp92_;
13765 ValaCCodeExpression* _tmp93_ = NULL;
13766 ValaCCodeExpression* _tmp94_;
13767 ValaCCodeVariableDeclarator* _tmp95_;
13770 _tmp91_ = vala_variable_get_variable_type ((ValaVariable*) _tmp90_);
13772 _tmp93_ = vala_ccode_base_module_default_value_for_type (self, _tmp92_, TRUE);
13774 vala_ccode_variable_declarator_set_initializer (_tmp89_, _tmp94_);
13775 _vala_ccode_node_unref0 (_tmp94_);
13777 vala_ccode_variable_declarator_set_init0 (_tmp95_, TRUE);
13779 _tmp96_ = vala_ccode_base_module_get_ccode (self);
13782 _tmp99_ = vala_variable_get_variable_type ((ValaVariable*) _tmp98_);
13783 _tmp100_ = _tmp99_;
13784 _tmp101_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp100_);
13785 _tmp102_ = _tmp101_;
13787 vala_ccode_function_add_declaration (_tmp97_, _tmp102_, (ValaCCodeDeclarator*) _tmp103_, 0);
13788 _g_free0 (_tmp102_);
13789 _vala_ccode_node_unref0 (cvar);
13792 _tmp105_ = vala_variable_get_variable_type ((ValaVariable*) _tmp104_);
13793 _tmp106_ = _tmp105_;
13794 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp106_, VALA_TYPE_ARRAY_TYPE)) {
13795 ValaLocalVariable* _tmp107_;
13796 ValaDataType* _tmp108_;
13797 ValaDataType* _tmp109_;
13798 ValaArrayType* _tmp110_;
13799 ValaArrayType* array_type;
13800 ValaArrayType* _tmp111_;
13804 _tmp108_ = vala_variable_get_variable_type ((ValaVariable*) _tmp107_);
13805 _tmp109_ = _tmp108_;
13806 _tmp110_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp109_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
13807 array_type = _tmp110_;
13808 _tmp111_ = array_type;
13809 _tmp112_ = vala_array_type_get_fixed_length (_tmp111_);
13810 _tmp113_ = _tmp112_;
13812 ValaArrayType* _tmp137_;
13824 ValaArrayType* _tmp118_;
13827 ValaDataType* _tmp121_;
13828 ValaDataType* _tmp122_ = NULL;
13829 ValaDataType* _tmp123_;
13830 ValaLocalVariable* _tmp124_;
13831 gchar* _tmp125_ = NULL;
13834 gchar* _tmp128_ = NULL;
13836 ValaLocalVariable* _tmp130_;
13837 ValaLocalVariable* _tmp131_;
13838 ValaLocalVariable* len_var;
13839 ValaLocalVariable* _tmp132_;
13840 ValaLocalVariable* _tmp133_;
13841 ValaExpression* _tmp134_;
13842 ValaExpression* _tmp135_;
13843 ValaLocalVariable* _tmp136_;
13844 _tmp115_ = _tmp114_;
13848 dim = _tmp116_ + 1;
13852 _tmp118_ = array_type;
13853 _tmp119_ = vala_array_type_get_rank (_tmp118_);
13854 _tmp120_ = _tmp119_;
13855 if (!(_tmp117_ <= _tmp120_)) {
13858 _tmp121_ = self->int_type;
13859 _tmp122_ = vala_data_type_copy (_tmp121_);
13860 _tmp123_ = _tmp122_;
13862 _tmp125_ = vala_ccode_base_module_get_local_cname (self, _tmp124_);
13863 _tmp126_ = _tmp125_;
13865 _tmp128_ = vala_ccode_base_module_get_array_length_cname (self, _tmp126_, _tmp127_);
13866 _tmp129_ = _tmp128_;
13867 _tmp130_ = vala_local_variable_new (_tmp123_, _tmp129_, NULL, NULL);
13868 _tmp131_ = _tmp130_;
13869 _g_free0 (_tmp129_);
13870 _g_free0 (_tmp126_);
13871 _vala_code_node_unref0 (_tmp123_);
13872 len_var = _tmp131_;
13873 _tmp132_ = len_var;
13875 _tmp134_ = vala_variable_get_initializer ((ValaVariable*) _tmp133_);
13876 _tmp135_ = _tmp134_;
13877 vala_local_variable_set_no_init (_tmp132_, _tmp135_ != NULL);
13878 _tmp136_ = len_var;
13879 vala_ccode_base_module_emit_temp_var (self, _tmp136_);
13880 _vala_code_node_unref0 (len_var);
13884 _tmp137_ = array_type;
13885 _tmp138_ = vala_array_type_get_rank (_tmp137_);
13886 _tmp139_ = _tmp138_;
13887 if (_tmp139_ == 1) {
13888 ValaDataType* _tmp140_;
13889 ValaDataType* _tmp141_ = NULL;
13890 ValaDataType* _tmp142_;
13891 ValaLocalVariable* _tmp143_;
13892 gchar* _tmp144_ = NULL;
13894 gchar* _tmp146_ = NULL;
13896 ValaLocalVariable* _tmp148_;
13897 ValaLocalVariable* _tmp149_;
13898 ValaLocalVariable* size_var;
13899 ValaLocalVariable* _tmp150_;
13900 ValaLocalVariable* _tmp151_;
13901 ValaExpression* _tmp152_;
13902 ValaExpression* _tmp153_;
13903 ValaLocalVariable* _tmp154_;
13904 _tmp140_ = self->int_type;
13905 _tmp141_ = vala_data_type_copy (_tmp140_);
13906 _tmp142_ = _tmp141_;
13908 _tmp144_ = vala_ccode_base_module_get_local_cname (self, _tmp143_);
13909 _tmp145_ = _tmp144_;
13910 _tmp146_ = vala_ccode_base_module_get_array_size_cname (self, _tmp145_);
13911 _tmp147_ = _tmp146_;
13912 _tmp148_ = vala_local_variable_new (_tmp142_, _tmp147_, NULL, NULL);
13913 _tmp149_ = _tmp148_;
13914 _g_free0 (_tmp147_);
13915 _g_free0 (_tmp145_);
13916 _vala_code_node_unref0 (_tmp142_);
13917 size_var = _tmp149_;
13918 _tmp150_ = size_var;
13920 _tmp152_ = vala_variable_get_initializer ((ValaVariable*) _tmp151_);
13921 _tmp153_ = _tmp152_;
13922 vala_local_variable_set_no_init (_tmp150_, _tmp153_ != NULL);
13923 _tmp154_ = size_var;
13924 vala_ccode_base_module_emit_temp_var (self, _tmp154_);
13925 _vala_code_node_unref0 (size_var);
13928 _vala_code_node_unref0 (array_type);
13930 ValaLocalVariable* _tmp155_;
13931 ValaDataType* _tmp156_;
13932 ValaDataType* _tmp157_;
13934 _tmp156_ = vala_variable_get_variable_type ((ValaVariable*) _tmp155_);
13935 _tmp157_ = _tmp156_;
13936 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp157_, VALA_TYPE_DELEGATE_TYPE)) {
13937 ValaLocalVariable* _tmp158_;
13938 ValaDataType* _tmp159_;
13939 ValaDataType* _tmp160_;
13940 ValaDelegateType* _tmp161_;
13941 ValaDelegateType* deleg_type;
13942 ValaDelegateType* _tmp162_;
13943 ValaDelegate* _tmp163_;
13944 ValaDelegate* _tmp164_;
13945 ValaDelegate* _tmp165_;
13947 ValaDelegate* _tmp166_;
13951 _tmp159_ = vala_variable_get_variable_type ((ValaVariable*) _tmp158_);
13952 _tmp160_ = _tmp159_;
13953 _tmp161_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp160_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
13954 deleg_type = _tmp161_;
13955 _tmp162_ = deleg_type;
13956 _tmp163_ = vala_delegate_type_get_delegate_symbol (_tmp162_);
13957 _tmp164_ = _tmp163_;
13958 _tmp165_ = _vala_code_node_ref0 (_tmp164_);
13961 _tmp167_ = vala_delegate_get_has_target (_tmp166_);
13962 _tmp168_ = _tmp167_;
13964 ValaVoidType* _tmp169_;
13965 ValaVoidType* _tmp170_;
13966 ValaPointerType* _tmp171_;
13967 ValaPointerType* _tmp172_;
13968 ValaLocalVariable* _tmp173_;
13969 gchar* _tmp174_ = NULL;
13971 gchar* _tmp176_ = NULL;
13973 ValaLocalVariable* _tmp178_;
13974 ValaLocalVariable* _tmp179_;
13975 ValaLocalVariable* target_var;
13976 ValaLocalVariable* _tmp180_;
13977 ValaLocalVariable* _tmp181_;
13978 ValaExpression* _tmp182_;
13979 ValaExpression* _tmp183_;
13980 ValaLocalVariable* _tmp184_;
13981 ValaDelegateType* _tmp185_;
13984 _tmp169_ = vala_void_type_new (NULL);
13985 _tmp170_ = _tmp169_;
13986 _tmp171_ = vala_pointer_type_new ((ValaDataType*) _tmp170_, NULL);
13987 _tmp172_ = _tmp171_;
13989 _tmp174_ = vala_ccode_base_module_get_local_cname (self, _tmp173_);
13990 _tmp175_ = _tmp174_;
13991 _tmp176_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp175_);
13992 _tmp177_ = _tmp176_;
13993 _tmp178_ = vala_local_variable_new ((ValaDataType*) _tmp172_, _tmp177_, NULL, NULL);
13994 _tmp179_ = _tmp178_;
13995 _g_free0 (_tmp177_);
13996 _g_free0 (_tmp175_);
13997 _vala_code_node_unref0 (_tmp172_);
13998 _vala_code_node_unref0 (_tmp170_);
13999 target_var = _tmp179_;
14000 _tmp180_ = target_var;
14002 _tmp182_ = vala_variable_get_initializer ((ValaVariable*) _tmp181_);
14003 _tmp183_ = _tmp182_;
14004 vala_local_variable_set_no_init (_tmp180_, _tmp183_ != NULL);
14005 _tmp184_ = target_var;
14006 vala_ccode_base_module_emit_temp_var (self, _tmp184_);
14007 _tmp185_ = deleg_type;
14008 _tmp186_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp185_);
14009 _tmp187_ = _tmp186_;
14011 ValaDataType* _tmp188_;
14012 ValaLocalVariable* _tmp189_;
14013 gchar* _tmp190_ = NULL;
14015 gchar* _tmp192_ = NULL;
14017 ValaLocalVariable* _tmp194_;
14018 ValaLocalVariable* _tmp195_;
14019 ValaLocalVariable* target_destroy_notify_var;
14020 ValaLocalVariable* _tmp196_;
14021 ValaLocalVariable* _tmp197_;
14022 ValaExpression* _tmp198_;
14023 ValaExpression* _tmp199_;
14024 ValaLocalVariable* _tmp200_;
14025 _tmp188_ = self->gdestroynotify_type;
14027 _tmp190_ = vala_ccode_base_module_get_local_cname (self, _tmp189_);
14028 _tmp191_ = _tmp190_;
14029 _tmp192_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp191_);
14030 _tmp193_ = _tmp192_;
14031 _tmp194_ = vala_local_variable_new (_tmp188_, _tmp193_, NULL, NULL);
14032 _tmp195_ = _tmp194_;
14033 _g_free0 (_tmp193_);
14034 _g_free0 (_tmp191_);
14035 target_destroy_notify_var = _tmp195_;
14036 _tmp196_ = target_destroy_notify_var;
14038 _tmp198_ = vala_variable_get_initializer ((ValaVariable*) _tmp197_);
14039 _tmp199_ = _tmp198_;
14040 vala_local_variable_set_no_init (_tmp196_, _tmp199_ != NULL);
14041 _tmp200_ = target_destroy_notify_var;
14042 vala_ccode_base_module_emit_temp_var (self, _tmp200_);
14043 _vala_code_node_unref0 (target_destroy_notify_var);
14045 _vala_code_node_unref0 (target_var);
14047 _vala_code_node_unref0 (d);
14048 _vala_code_node_unref0 (deleg_type);
14053 if (_tmp201_ != NULL) {
14054 ValaLocalVariable* _tmp202_;
14055 ValaLocalVariable* _tmp203_;
14056 ValaExpression* _tmp204_;
14057 ValaExpression* _tmp205_;
14058 gboolean _tmp206_ = FALSE;
14061 _tmp204_ = vala_variable_get_initializer ((ValaVariable*) _tmp203_);
14062 _tmp205_ = _tmp204_;
14063 _tmp206_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp202_, _tmp205_);
14065 ValaLocalVariable* _tmp207_;
14066 ValaLocalVariable* _tmp208_;
14067 ValaExpression* _tmp209_;
14068 ValaExpression* _tmp210_;
14069 ValaTargetValue* _tmp211_;
14070 ValaTargetValue* _tmp212_;
14073 _tmp209_ = vala_variable_get_initializer ((ValaVariable*) _tmp208_);
14074 _tmp210_ = _tmp209_;
14075 _tmp211_ = vala_expression_get_target_value (_tmp210_);
14076 _tmp212_ = _tmp211_;
14077 vala_code_generator_store_local ((ValaCodeGenerator*) self, _tmp207_, _tmp212_, TRUE);
14081 _tmp215_ = vala_variable_get_initializer ((ValaVariable*) _tmp214_);
14082 _tmp216_ = _tmp215_;
14083 if (_tmp216_ != NULL) {
14084 ValaLocalVariable* _tmp217_;
14085 ValaExpression* _tmp218_;
14086 ValaExpression* _tmp219_;
14090 _tmp218_ = vala_variable_get_initializer ((ValaVariable*) _tmp217_);
14091 _tmp219_ = _tmp218_;
14092 _tmp220_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp219_);
14093 _tmp221_ = _tmp220_;
14094 _tmp213_ = _tmp221_;
14098 _tmp222_ = _tmp213_;
14100 ValaLocalVariable* _tmp223_;
14101 ValaExpression* _tmp224_;
14102 ValaExpression* _tmp225_;
14104 _tmp224_ = vala_variable_get_initializer ((ValaVariable*) _tmp223_);
14105 _tmp225_ = _tmp224_;
14106 vala_ccode_base_module_add_simple_check (self, (ValaCodeNode*) _tmp225_, FALSE);
14109 vala_symbol_set_active ((ValaSymbol*) _tmp226_, TRUE);
14110 _vala_ccode_node_unref0 (rhs);
14115 * Create a temporary variable and return lvalue access to it
14117 ValaTargetValue* vala_ccode_base_module_create_temp_value (ValaCCodeBaseModule* self, ValaDataType* type, gboolean init, ValaCodeNode* node_reference, gboolean* value_owned) {
14118 ValaTargetValue* result = NULL;
14119 ValaDataType* _tmp0_;
14120 ValaDataType* _tmp1_ = NULL;
14121 ValaDataType* _tmp2_;
14124 gchar* _tmp5_ = NULL;
14126 ValaCodeNode* _tmp7_;
14127 ValaSourceReference* _tmp8_;
14128 ValaSourceReference* _tmp9_;
14129 ValaLocalVariable* _tmp10_;
14130 ValaLocalVariable* _tmp11_;
14131 ValaLocalVariable* local;
14132 ValaLocalVariable* _tmp12_;
14135 ValaLocalVariable* _tmp19_;
14136 ValaDataType* _tmp20_;
14137 ValaDataType* _tmp21_;
14138 ValaArrayType* _tmp22_;
14139 ValaArrayType* array_type;
14140 ValaLocalVariable* _tmp23_;
14141 ValaDataType* _tmp24_;
14142 ValaDataType* _tmp25_;
14143 ValaDelegateType* _tmp26_;
14144 ValaDelegateType* deleg_type;
14145 ValaLocalVariable* _tmp27_;
14146 ValaArrayType* _tmp28_;
14147 ValaLocalVariable* _tmp97_;
14148 ValaTargetValue* _tmp98_ = NULL;
14149 ValaTargetValue* value;
14150 g_return_val_if_fail (self != NULL, NULL);
14151 g_return_val_if_fail (type != NULL, NULL);
14152 g_return_val_if_fail (node_reference != NULL, NULL);
14154 _tmp1_ = vala_data_type_copy (_tmp0_);
14156 _tmp3_ = vala_ccode_base_module_get_next_temp_var_id (self);
14158 vala_ccode_base_module_set_next_temp_var_id (self, _tmp4_ + 1);
14159 _tmp5_ = g_strdup_printf ("_tmp%d_", _tmp4_);
14161 _tmp7_ = node_reference;
14162 _tmp8_ = vala_code_node_get_source_reference (_tmp7_);
14164 _tmp10_ = vala_local_variable_new (_tmp2_, _tmp6_, NULL, _tmp9_);
14167 _vala_code_node_unref0 (_tmp2_);
14171 vala_local_variable_set_no_init (_tmp12_, !_tmp13_);
14172 _tmp14_ = value_owned;
14173 if (_tmp14_ != NULL) {
14174 ValaLocalVariable* _tmp15_;
14175 ValaDataType* _tmp16_;
14176 ValaDataType* _tmp17_;
14179 _tmp16_ = vala_variable_get_variable_type ((ValaVariable*) _tmp15_);
14181 _tmp18_ = value_owned;
14182 vala_data_type_set_value_owned (_tmp17_, *_tmp18_);
14185 _tmp20_ = vala_variable_get_variable_type ((ValaVariable*) _tmp19_);
14187 _tmp22_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp21_) : NULL);
14188 array_type = _tmp22_;
14190 _tmp24_ = vala_variable_get_variable_type ((ValaVariable*) _tmp23_);
14192 _tmp26_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp25_) : NULL);
14193 deleg_type = _tmp26_;
14195 vala_ccode_base_module_emit_temp_var (self, _tmp27_);
14196 _tmp28_ = array_type;
14197 if (_tmp28_ != NULL) {
14207 ValaArrayType* _tmp33_;
14210 ValaDataType* _tmp36_;
14211 ValaDataType* _tmp37_ = NULL;
14212 ValaDataType* _tmp38_;
14213 ValaLocalVariable* _tmp39_;
14214 const gchar* _tmp40_;
14215 const gchar* _tmp41_;
14217 gchar* _tmp43_ = NULL;
14219 ValaCodeNode* _tmp45_;
14220 ValaSourceReference* _tmp46_;
14221 ValaSourceReference* _tmp47_;
14222 ValaLocalVariable* _tmp48_;
14223 ValaLocalVariable* _tmp49_;
14224 ValaLocalVariable* len_var;
14225 ValaLocalVariable* _tmp50_;
14227 ValaLocalVariable* _tmp52_;
14236 _tmp33_ = array_type;
14237 _tmp34_ = vala_array_type_get_rank (_tmp33_);
14239 if (!(_tmp32_ <= _tmp35_)) {
14242 _tmp36_ = self->int_type;
14243 _tmp37_ = vala_data_type_copy (_tmp36_);
14246 _tmp40_ = vala_symbol_get_name ((ValaSymbol*) _tmp39_);
14249 _tmp43_ = vala_ccode_base_module_get_array_length_cname (self, _tmp41_, _tmp42_);
14251 _tmp45_ = node_reference;
14252 _tmp46_ = vala_code_node_get_source_reference (_tmp45_);
14254 _tmp48_ = vala_local_variable_new (_tmp38_, _tmp44_, NULL, _tmp47_);
14256 _g_free0 (_tmp44_);
14257 _vala_code_node_unref0 (_tmp38_);
14261 vala_local_variable_set_no_init (_tmp50_, !_tmp51_);
14263 vala_ccode_base_module_emit_temp_var (self, _tmp52_);
14264 _vala_code_node_unref0 (len_var);
14269 gboolean _tmp53_ = FALSE;
14270 ValaDelegateType* _tmp54_;
14272 _tmp54_ = deleg_type;
14273 if (_tmp54_ != NULL) {
14274 ValaDelegateType* _tmp55_;
14275 ValaDelegate* _tmp56_;
14276 ValaDelegate* _tmp57_;
14279 _tmp55_ = deleg_type;
14280 _tmp56_ = vala_delegate_type_get_delegate_symbol (_tmp55_);
14282 _tmp58_ = vala_delegate_get_has_target (_tmp57_);
14290 ValaVoidType* _tmp61_;
14291 ValaVoidType* _tmp62_;
14292 ValaPointerType* _tmp63_;
14293 ValaPointerType* _tmp64_;
14294 ValaLocalVariable* _tmp65_;
14295 const gchar* _tmp66_;
14296 const gchar* _tmp67_;
14297 gchar* _tmp68_ = NULL;
14299 ValaCodeNode* _tmp70_;
14300 ValaSourceReference* _tmp71_;
14301 ValaSourceReference* _tmp72_;
14302 ValaLocalVariable* _tmp73_;
14303 ValaLocalVariable* _tmp74_;
14304 ValaLocalVariable* target_var;
14305 ValaLocalVariable* _tmp75_;
14307 ValaLocalVariable* _tmp77_;
14308 ValaDelegateType* _tmp78_;
14311 _tmp61_ = vala_void_type_new (NULL);
14313 _tmp63_ = vala_pointer_type_new ((ValaDataType*) _tmp62_, NULL);
14316 _tmp66_ = vala_symbol_get_name ((ValaSymbol*) _tmp65_);
14318 _tmp68_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp67_);
14320 _tmp70_ = node_reference;
14321 _tmp71_ = vala_code_node_get_source_reference (_tmp70_);
14323 _tmp73_ = vala_local_variable_new ((ValaDataType*) _tmp64_, _tmp69_, NULL, _tmp72_);
14325 _g_free0 (_tmp69_);
14326 _vala_code_node_unref0 (_tmp64_);
14327 _vala_code_node_unref0 (_tmp62_);
14328 target_var = _tmp74_;
14329 _tmp75_ = target_var;
14331 vala_local_variable_set_no_init (_tmp75_, !_tmp76_);
14332 _tmp77_ = target_var;
14333 vala_ccode_base_module_emit_temp_var (self, _tmp77_);
14334 _tmp78_ = deleg_type;
14335 _tmp79_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp78_);
14338 ValaDataType* _tmp81_;
14339 ValaDataType* _tmp82_ = NULL;
14340 ValaDataType* _tmp83_;
14341 ValaLocalVariable* _tmp84_;
14342 const gchar* _tmp85_;
14343 const gchar* _tmp86_;
14344 gchar* _tmp87_ = NULL;
14346 ValaCodeNode* _tmp89_;
14347 ValaSourceReference* _tmp90_;
14348 ValaSourceReference* _tmp91_;
14349 ValaLocalVariable* _tmp92_;
14350 ValaLocalVariable* _tmp93_;
14351 ValaLocalVariable* target_destroy_notify_var;
14352 ValaLocalVariable* _tmp94_;
14354 ValaLocalVariable* _tmp96_;
14355 _tmp81_ = self->gdestroynotify_type;
14356 _tmp82_ = vala_data_type_copy (_tmp81_);
14359 _tmp85_ = vala_symbol_get_name ((ValaSymbol*) _tmp84_);
14361 _tmp87_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp86_);
14363 _tmp89_ = node_reference;
14364 _tmp90_ = vala_code_node_get_source_reference (_tmp89_);
14366 _tmp92_ = vala_local_variable_new (_tmp83_, _tmp88_, NULL, _tmp91_);
14368 _g_free0 (_tmp88_);
14369 _vala_code_node_unref0 (_tmp83_);
14370 target_destroy_notify_var = _tmp93_;
14371 _tmp94_ = target_destroy_notify_var;
14373 vala_local_variable_set_no_init (_tmp94_, !_tmp95_);
14374 _tmp96_ = target_destroy_notify_var;
14375 vala_ccode_base_module_emit_temp_var (self, _tmp96_);
14376 _vala_code_node_unref0 (target_destroy_notify_var);
14378 _vala_code_node_unref0 (target_var);
14382 _tmp98_ = vala_ccode_base_module_get_local_cvalue (self, _tmp97_);
14384 vala_ccode_base_module_set_array_size_cvalue (self, value, NULL);
14386 _vala_code_node_unref0 (deleg_type);
14387 _vala_code_node_unref0 (array_type);
14388 _vala_code_node_unref0 (local);
14394 * Load a temporary variable returning unowned or owned rvalue access to it, depending on the ownership of the value type.
14396 ValaTargetValue* vala_ccode_base_module_load_temp_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue) {
14397 ValaTargetValue* result = NULL;
14398 ValaTargetValue* _tmp0_;
14399 ValaGLibValue* _tmp1_ = NULL;
14400 ValaGLibValue* value;
14401 ValaGLibValue* _tmp2_;
14402 ValaDataType* _tmp3_;
14403 ValaDataType* _tmp4_;
14404 ValaDelegateType* _tmp5_;
14405 ValaDelegateType* deleg_type;
14406 ValaDelegateType* _tmp6_;
14407 g_return_val_if_fail (self != NULL, NULL);
14408 g_return_val_if_fail (lvalue != NULL, NULL);
14410 _tmp1_ = vala_glib_value_copy (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
14413 _tmp3_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp2_);
14415 _tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp4_) : NULL);
14416 deleg_type = _tmp5_;
14417 _tmp6_ = deleg_type;
14418 if (_tmp6_ != NULL) {
14419 ValaDelegateType* _tmp7_;
14420 ValaDelegate* _tmp8_;
14421 ValaDelegate* _tmp9_;
14424 _tmp7_ = deleg_type;
14425 _tmp8_ = vala_delegate_type_get_delegate_symbol (_tmp7_);
14427 _tmp10_ = vala_delegate_get_has_target (_tmp9_);
14430 ValaGLibValue* _tmp12_;
14431 ValaCCodeConstant* _tmp13_;
14432 ValaGLibValue* _tmp14_;
14434 _tmp13_ = vala_ccode_constant_new ("NULL");
14435 _vala_ccode_node_unref0 (_tmp12_->delegate_target_cvalue);
14436 _tmp12_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp13_;
14438 G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->lvalue = FALSE;
14440 ValaDelegateType* _tmp15_;
14443 _tmp15_ = deleg_type;
14444 _tmp16_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp15_);
14447 ValaGLibValue* _tmp18_;
14448 ValaCCodeConstant* _tmp19_;
14449 ValaGLibValue* _tmp20_;
14451 _tmp19_ = vala_ccode_constant_new ("NULL");
14452 _vala_ccode_node_unref0 (_tmp18_->delegate_target_destroy_notify_cvalue);
14453 _tmp18_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp19_;
14455 G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->lvalue = FALSE;
14459 result = (ValaTargetValue*) value;
14460 _vala_code_node_unref0 (deleg_type);
14466 * Store a value in a temporary variable and return unowned or owned rvalue access to it, depending on the ownership of the given type.
14468 ValaTargetValue* vala_ccode_base_module_store_temp_value (ValaCCodeBaseModule* self, ValaTargetValue* initializer, ValaCodeNode* node_reference, gboolean* value_owned) {
14469 ValaTargetValue* result = NULL;
14470 ValaTargetValue* _tmp0_;
14471 ValaDataType* _tmp1_;
14472 ValaDataType* _tmp2_;
14473 ValaCodeNode* _tmp3_;
14475 ValaTargetValue* _tmp5_ = NULL;
14476 ValaTargetValue* lvalue;
14477 ValaTargetValue* _tmp6_;
14478 ValaTargetValue* _tmp7_ = NULL;
14479 g_return_val_if_fail (self != NULL, NULL);
14480 g_return_val_if_fail (initializer != NULL, NULL);
14481 g_return_val_if_fail (node_reference != NULL, NULL);
14482 _tmp0_ = initializer;
14483 _tmp1_ = vala_target_value_get_value_type (_tmp0_);
14485 _tmp3_ = node_reference;
14486 _tmp4_ = value_owned;
14487 _tmp5_ = vala_ccode_base_module_create_temp_value (self, _tmp2_, FALSE, _tmp3_, _tmp4_);
14489 _tmp6_ = initializer;
14490 vala_ccode_base_module_store_value (self, lvalue, _tmp6_);
14491 _tmp7_ = vala_ccode_base_module_load_temp_value (self, lvalue);
14493 _vala_target_value_unref0 (lvalue);
14498 static void vala_ccode_base_module_real_visit_initializer_list (ValaCodeVisitor* base, ValaInitializerList* list) {
14499 ValaCCodeBaseModule * self;
14500 ValaInitializerList* _tmp0_;
14501 ValaDataType* _tmp1_;
14502 ValaDataType* _tmp2_;
14503 ValaTypeSymbol* _tmp3_;
14504 ValaTypeSymbol* _tmp4_;
14505 self = (ValaCCodeBaseModule*) base;
14506 g_return_if_fail (list != NULL);
14508 _tmp1_ = vala_expression_get_target_type ((ValaExpression*) _tmp0_);
14510 _tmp3_ = vala_data_type_get_data_type (_tmp2_);
14512 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_STRUCT)) {
14513 ValaInitializerList* _tmp5_;
14514 ValaDataType* _tmp6_;
14515 ValaDataType* _tmp7_;
14516 ValaTypeSymbol* _tmp8_;
14517 ValaTypeSymbol* _tmp9_;
14518 ValaStruct* _tmp10_;
14520 gboolean _tmp18_ = FALSE;
14521 gboolean _tmp19_ = FALSE;
14522 ValaInitializerList* _tmp20_;
14523 ValaCodeNode* _tmp21_;
14524 ValaCodeNode* _tmp22_;
14528 _tmp6_ = vala_expression_get_target_type ((ValaExpression*) _tmp5_);
14530 _tmp8_ = vala_data_type_get_data_type (_tmp7_);
14532 _tmp10_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, VALA_TYPE_STRUCT, ValaStruct));
14535 ValaStruct* _tmp11_;
14536 ValaStruct* _tmp12_;
14537 ValaStruct* _tmp13_;
14538 ValaStruct* _tmp14_;
14539 ValaStruct* _tmp15_;
14540 ValaStruct* _tmp16_;
14541 ValaStruct* _tmp17_;
14543 _tmp12_ = vala_struct_get_base_struct (_tmp11_);
14545 if (!(_tmp13_ != NULL)) {
14549 _tmp15_ = vala_struct_get_base_struct (_tmp14_);
14551 _tmp17_ = _vala_code_node_ref0 (_tmp16_);
14552 _vala_code_node_unref0 (st);
14556 _tmp21_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp20_);
14558 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp22_, VALA_TYPE_CONSTANT)) {
14561 ValaInitializerList* _tmp23_;
14562 ValaCodeNode* _tmp24_;
14563 ValaCodeNode* _tmp25_;
14565 _tmp24_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp23_);
14567 _tmp19_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_FIELD);
14573 ValaInitializerList* _tmp27_;
14574 ValaCodeNode* _tmp28_;
14575 ValaCodeNode* _tmp29_;
14577 _tmp28_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp27_);
14579 _tmp18_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_INITIALIZER_LIST);
14583 ValaCCodeInitializerList* _tmp31_;
14584 ValaCCodeInitializerList* clist;
14585 ValaStruct* _tmp32_;
14586 ValaList* _tmp33_ = NULL;
14588 ValaIterator* _tmp35_ = NULL;
14589 ValaIterator* _tmp36_;
14590 ValaIterator* field_it;
14591 ValaInitializerList* _tmp92_;
14592 ValaCCodeInitializerList* _tmp93_;
14593 _tmp31_ = vala_ccode_initializer_list_new ();
14596 _tmp33_ = vala_struct_get_fields (_tmp32_);
14598 _tmp35_ = vala_iterable_iterator ((ValaIterable*) _tmp34_);
14600 _vala_iterable_unref0 (_tmp34_);
14601 field_it = _tmp36_;
14603 ValaInitializerList* _tmp37_;
14604 ValaList* _tmp38_ = NULL;
14605 ValaList* _expr_list;
14612 _tmp38_ = vala_initializer_list_get_initializers (_tmp37_);
14613 _expr_list = _tmp38_;
14614 _tmp39_ = _expr_list;
14615 _tmp40_ = vala_collection_get_size ((ValaCollection*) _tmp39_);
14617 _expr_size = _tmp41_;
14625 gpointer _tmp47_ = NULL;
14626 ValaExpression* expr;
14628 ValaExpression* _tmp55_;
14629 ValaCCodeExpression* _tmp56_ = NULL;
14630 ValaCCodeExpression* cexpr;
14631 ValaField* _tmp57_;
14632 gchar* _tmp58_ = NULL;
14634 const gchar* _tmp59_;
14635 ValaCCodeInitializerList* _tmp63_;
14636 ValaCCodeExpression* _tmp64_;
14637 ValaField* _tmp65_;
14638 ValaDataType* _tmp66_;
14639 ValaDataType* _tmp67_;
14640 ValaArrayType* _tmp68_;
14641 ValaArrayType* array_type;
14642 gboolean _tmp69_ = FALSE;
14643 gboolean _tmp70_ = FALSE;
14644 ValaArrayType* _tmp71_;
14647 _tmp42_ = _expr_index;
14648 _expr_index = _tmp42_ + 1;
14649 _tmp43_ = _expr_index;
14650 _tmp44_ = _expr_size;
14651 if (!(_tmp43_ < _tmp44_)) {
14654 _tmp45_ = _expr_list;
14655 _tmp46_ = _expr_index;
14656 _tmp47_ = vala_list_get (_tmp45_, _tmp46_);
14657 expr = (ValaExpression*) _tmp47_;
14660 ValaField* _tmp48_;
14661 ValaIterator* _tmp49_;
14662 ValaIterator* _tmp50_;
14663 gpointer _tmp51_ = NULL;
14664 ValaField* _tmp52_;
14665 ValaMemberBinding _tmp53_;
14666 ValaMemberBinding _tmp54_;
14668 if (!(_tmp48_ == NULL)) {
14671 _tmp49_ = field_it;
14672 vala_iterator_next (_tmp49_);
14673 _tmp50_ = field_it;
14674 _tmp51_ = vala_iterator_get (_tmp50_);
14675 _vala_code_node_unref0 (field);
14676 field = (ValaField*) _tmp51_;
14678 _tmp53_ = vala_field_get_binding (_tmp52_);
14680 if (_tmp54_ != VALA_MEMBER_BINDING_INSTANCE) {
14681 _vala_code_node_unref0 (field);
14686 _tmp56_ = vala_ccode_base_module_get_cvalue (self, _tmp55_);
14689 _tmp58_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp57_);
14692 if (_tmp59_ != NULL) {
14693 ValaCCodeExpression* _tmp60_;
14694 const gchar* _tmp61_;
14695 ValaCCodeCastExpression* _tmp62_;
14698 _tmp62_ = vala_ccode_cast_expression_new (_tmp60_, _tmp61_);
14699 _vala_ccode_node_unref0 (cexpr);
14700 cexpr = (ValaCCodeExpression*) _tmp62_;
14704 vala_ccode_initializer_list_append (_tmp63_, _tmp64_);
14706 _tmp66_ = vala_variable_get_variable_type ((ValaVariable*) _tmp65_);
14708 _tmp68_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp67_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp67_) : NULL);
14709 array_type = _tmp68_;
14710 _tmp71_ = array_type;
14711 if (_tmp71_ != NULL) {
14712 ValaField* _tmp72_;
14713 gboolean _tmp73_ = FALSE;
14715 _tmp73_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp72_);
14722 ValaField* _tmp75_;
14723 gboolean _tmp76_ = FALSE;
14725 _tmp76_ = vala_ccode_base_module_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp75_);
14726 _tmp69_ = !_tmp76_;
14741 ValaArrayType* _tmp82_;
14744 ValaCCodeInitializerList* _tmp85_;
14745 ValaExpression* _tmp86_;
14746 ValaTargetValue* _tmp87_;
14747 ValaTargetValue* _tmp88_;
14749 ValaCCodeExpression* _tmp90_ = NULL;
14750 ValaCCodeExpression* _tmp91_;
14759 _tmp82_ = array_type;
14760 _tmp83_ = vala_array_type_get_rank (_tmp82_);
14762 if (!(_tmp81_ <= _tmp84_)) {
14767 _tmp87_ = vala_expression_get_target_value (_tmp86_);
14770 _tmp90_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp88_, _tmp89_);
14772 vala_ccode_initializer_list_append (_tmp85_, _tmp91_);
14773 _vala_ccode_node_unref0 (_tmp91_);
14778 _vala_code_node_unref0 (array_type);
14780 _vala_ccode_node_unref0 (cexpr);
14781 _vala_code_node_unref0 (field);
14782 _vala_code_node_unref0 (expr);
14784 _vala_iterable_unref0 (_expr_list);
14788 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp92_, (ValaCCodeExpression*) _tmp93_);
14789 _vala_iterator_unref0 (field_it);
14790 _vala_ccode_node_unref0 (clist);
14792 ValaInitializerList* _tmp94_;
14793 ValaDataType* _tmp95_;
14794 ValaDataType* _tmp96_;
14795 ValaInitializerList* _tmp97_;
14796 ValaTargetValue* _tmp98_ = NULL;
14797 ValaTargetValue* instance;
14798 ValaStruct* _tmp99_;
14799 ValaList* _tmp100_ = NULL;
14800 ValaList* _tmp101_;
14801 ValaIterator* _tmp102_ = NULL;
14802 ValaIterator* _tmp103_;
14803 ValaIterator* field_it;
14804 ValaInitializerList* _tmp127_;
14805 ValaTargetValue* _tmp128_;
14807 _tmp95_ = vala_expression_get_value_type ((ValaExpression*) _tmp94_);
14810 _tmp98_ = vala_ccode_base_module_create_temp_value (self, _tmp96_, TRUE, (ValaCodeNode*) _tmp97_, NULL);
14811 instance = _tmp98_;
14813 _tmp100_ = vala_struct_get_fields (_tmp99_);
14814 _tmp101_ = _tmp100_;
14815 _tmp102_ = vala_iterable_iterator ((ValaIterable*) _tmp101_);
14816 _tmp103_ = _tmp102_;
14817 _vala_iterable_unref0 (_tmp101_);
14818 field_it = _tmp103_;
14820 ValaInitializerList* _tmp104_;
14821 ValaList* _tmp105_ = NULL;
14822 ValaList* _expr_list;
14823 ValaList* _tmp106_;
14829 _tmp105_ = vala_initializer_list_get_initializers (_tmp104_);
14830 _expr_list = _tmp105_;
14831 _tmp106_ = _expr_list;
14832 _tmp107_ = vala_collection_get_size ((ValaCollection*) _tmp106_);
14833 _tmp108_ = _tmp107_;
14834 _expr_size = _tmp108_;
14840 ValaList* _tmp112_;
14842 gpointer _tmp114_ = NULL;
14843 ValaExpression* expr;
14845 ValaField* _tmp122_;
14846 ValaTargetValue* _tmp123_;
14847 ValaExpression* _tmp124_;
14848 ValaTargetValue* _tmp125_;
14849 ValaTargetValue* _tmp126_;
14850 _tmp109_ = _expr_index;
14851 _expr_index = _tmp109_ + 1;
14852 _tmp110_ = _expr_index;
14853 _tmp111_ = _expr_size;
14854 if (!(_tmp110_ < _tmp111_)) {
14857 _tmp112_ = _expr_list;
14858 _tmp113_ = _expr_index;
14859 _tmp114_ = vala_list_get (_tmp112_, _tmp113_);
14860 expr = (ValaExpression*) _tmp114_;
14863 ValaField* _tmp115_;
14864 ValaIterator* _tmp116_;
14865 ValaIterator* _tmp117_;
14866 gpointer _tmp118_ = NULL;
14867 ValaField* _tmp119_;
14868 ValaMemberBinding _tmp120_;
14869 ValaMemberBinding _tmp121_;
14871 if (!(_tmp115_ == NULL)) {
14874 _tmp116_ = field_it;
14875 vala_iterator_next (_tmp116_);
14876 _tmp117_ = field_it;
14877 _tmp118_ = vala_iterator_get (_tmp117_);
14878 _vala_code_node_unref0 (field);
14879 field = (ValaField*) _tmp118_;
14881 _tmp120_ = vala_field_get_binding (_tmp119_);
14882 _tmp121_ = _tmp120_;
14883 if (_tmp121_ != VALA_MEMBER_BINDING_INSTANCE) {
14884 _vala_code_node_unref0 (field);
14889 _tmp123_ = instance;
14891 _tmp125_ = vala_expression_get_target_value (_tmp124_);
14892 _tmp126_ = _tmp125_;
14893 vala_code_generator_store_field ((ValaCodeGenerator*) self, _tmp122_, _tmp123_, _tmp126_);
14894 _vala_code_node_unref0 (field);
14895 _vala_code_node_unref0 (expr);
14897 _vala_iterable_unref0 (_expr_list);
14900 _tmp128_ = instance;
14901 vala_expression_set_target_value ((ValaExpression*) _tmp127_, _tmp128_);
14902 _vala_iterator_unref0 (field_it);
14903 _vala_target_value_unref0 (instance);
14905 _vala_code_node_unref0 (st);
14907 ValaCCodeInitializerList* _tmp129_;
14908 ValaCCodeInitializerList* clist;
14909 ValaInitializerList* _tmp145_;
14910 ValaCCodeInitializerList* _tmp146_;
14911 _tmp129_ = vala_ccode_initializer_list_new ();
14914 ValaInitializerList* _tmp130_;
14915 ValaList* _tmp131_ = NULL;
14916 ValaList* _expr_list;
14917 ValaList* _tmp132_;
14923 _tmp131_ = vala_initializer_list_get_initializers (_tmp130_);
14924 _expr_list = _tmp131_;
14925 _tmp132_ = _expr_list;
14926 _tmp133_ = vala_collection_get_size ((ValaCollection*) _tmp132_);
14927 _tmp134_ = _tmp133_;
14928 _expr_size = _tmp134_;
14934 ValaList* _tmp138_;
14936 gpointer _tmp140_ = NULL;
14937 ValaExpression* expr;
14938 ValaCCodeInitializerList* _tmp141_;
14939 ValaExpression* _tmp142_;
14940 ValaCCodeExpression* _tmp143_ = NULL;
14941 ValaCCodeExpression* _tmp144_;
14942 _tmp135_ = _expr_index;
14943 _expr_index = _tmp135_ + 1;
14944 _tmp136_ = _expr_index;
14945 _tmp137_ = _expr_size;
14946 if (!(_tmp136_ < _tmp137_)) {
14949 _tmp138_ = _expr_list;
14950 _tmp139_ = _expr_index;
14951 _tmp140_ = vala_list_get (_tmp138_, _tmp139_);
14952 expr = (ValaExpression*) _tmp140_;
14955 _tmp143_ = vala_ccode_base_module_get_cvalue (self, _tmp142_);
14956 _tmp144_ = _tmp143_;
14957 vala_ccode_initializer_list_append (_tmp141_, _tmp144_);
14958 _vala_ccode_node_unref0 (_tmp144_);
14959 _vala_code_node_unref0 (expr);
14961 _vala_iterable_unref0 (_expr_list);
14965 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp145_, (ValaCCodeExpression*) _tmp146_);
14966 _vala_ccode_node_unref0 (clist);
14971 static ValaLocalVariable* vala_ccode_base_module_real_create_local (ValaCodeGenerator* base, ValaDataType* type) {
14972 ValaCCodeBaseModule * self;
14973 ValaLocalVariable* result = NULL;
14974 ValaDataType* _tmp0_;
14975 ValaDataType* _tmp1_;
14978 ValaLocalVariable* _tmp4_ = NULL;
14979 ValaLocalVariable* _result_;
14980 self = (ValaCCodeBaseModule*) base;
14981 g_return_val_if_fail (type != NULL, NULL);
14984 _tmp2_ = vala_data_type_get_value_owned (_tmp1_);
14986 _tmp4_ = vala_ccode_base_module_get_temp_variable (self, _tmp0_, _tmp3_, NULL, TRUE);
14988 vala_ccode_base_module_emit_temp_var (self, _result_);
14994 ValaLocalVariable* vala_ccode_base_module_get_temp_variable (ValaCCodeBaseModule* self, ValaDataType* type, gboolean value_owned, ValaCodeNode* node_reference, gboolean init) {
14995 ValaLocalVariable* result = NULL;
14996 ValaDataType* _tmp0_;
14997 ValaDataType* _tmp1_ = NULL;
14998 ValaDataType* var_type;
14999 ValaDataType* _tmp2_;
15001 ValaDataType* _tmp4_;
15004 gchar* _tmp7_ = NULL;
15006 ValaLocalVariable* _tmp9_;
15007 ValaLocalVariable* _tmp10_;
15008 ValaLocalVariable* local;
15009 ValaLocalVariable* _tmp11_;
15011 ValaCodeNode* _tmp13_;
15014 g_return_val_if_fail (self != NULL, NULL);
15015 g_return_val_if_fail (type != NULL, NULL);
15017 _tmp1_ = vala_data_type_copy (_tmp0_);
15020 _tmp3_ = value_owned;
15021 vala_data_type_set_value_owned (_tmp2_, _tmp3_);
15023 _tmp5_ = vala_ccode_base_module_get_next_temp_var_id (self);
15025 _tmp7_ = g_strdup_printf ("_tmp%d_", _tmp6_);
15027 _tmp9_ = vala_local_variable_new (_tmp4_, _tmp8_, NULL, NULL);
15033 vala_local_variable_set_no_init (_tmp11_, !_tmp12_);
15034 _tmp13_ = node_reference;
15035 if (_tmp13_ != NULL) {
15036 ValaLocalVariable* _tmp14_;
15037 ValaCodeNode* _tmp15_;
15038 ValaSourceReference* _tmp16_;
15039 ValaSourceReference* _tmp17_;
15041 _tmp15_ = node_reference;
15042 _tmp16_ = vala_code_node_get_source_reference (_tmp15_);
15044 vala_code_node_set_source_reference ((ValaCodeNode*) _tmp14_, _tmp17_);
15046 _tmp18_ = vala_ccode_base_module_get_next_temp_var_id (self);
15048 vala_ccode_base_module_set_next_temp_var_id (self, _tmp19_ + 1);
15050 _vala_code_node_unref0 (var_type);
15055 static gboolean vala_ccode_base_module_is_in_generic_type (ValaCCodeBaseModule* self, ValaDataType* type) {
15056 gboolean result = FALSE;
15057 gboolean _tmp0_ = FALSE;
15058 gboolean _tmp1_ = FALSE;
15059 ValaSymbol* _tmp2_;
15060 ValaSymbol* _tmp3_;
15063 g_return_val_if_fail (self != NULL, FALSE);
15064 g_return_val_if_fail (type != NULL, FALSE);
15065 _tmp2_ = vala_ccode_base_module_get_current_symbol (self);
15067 if (_tmp3_ != NULL) {
15068 ValaDataType* _tmp4_;
15069 ValaTypeParameter* _tmp5_;
15070 ValaTypeParameter* _tmp6_;
15071 ValaSymbol* _tmp7_;
15072 ValaSymbol* _tmp8_;
15074 _tmp5_ = vala_data_type_get_type_parameter (_tmp4_);
15076 _tmp7_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp6_);
15078 _tmp1_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_TYPESYMBOL);
15084 gboolean _tmp10_ = FALSE;
15085 ValaMethod* _tmp11_;
15086 ValaMethod* _tmp12_;
15088 _tmp11_ = vala_ccode_base_module_get_current_method (self);
15090 if (_tmp12_ == NULL) {
15093 ValaMethod* _tmp13_;
15094 ValaMethod* _tmp14_;
15095 ValaMemberBinding _tmp15_;
15096 ValaMemberBinding _tmp16_;
15097 _tmp13_ = vala_ccode_base_module_get_current_method (self);
15099 _tmp15_ = vala_method_get_binding (_tmp14_);
15101 _tmp10_ = _tmp16_ == VALA_MEMBER_BINDING_INSTANCE;
15119 static void vala_ccode_base_module_require_generic_accessors (ValaCCodeBaseModule* self, ValaInterface* iface) {
15120 ValaInterface* _tmp0_;
15121 ValaAttribute* _tmp1_ = NULL;
15122 ValaAttribute* _tmp2_;
15124 g_return_if_fail (self != NULL);
15125 g_return_if_fail (iface != NULL);
15127 _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp0_, "GenericAccessors");
15129 _tmp3_ = _tmp2_ == NULL;
15130 _vala_code_node_unref0 (_tmp2_);
15132 ValaInterface* _tmp4_;
15133 ValaSourceReference* _tmp5_;
15134 ValaSourceReference* _tmp6_;
15135 ValaInterface* _tmp7_;
15136 gchar* _tmp8_ = NULL;
15138 gchar* _tmp10_ = NULL;
15141 _tmp5_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp4_);
15144 _tmp8_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp7_);
15146 _tmp10_ = g_strdup_printf ("missing generic type for interface `%s', add GenericAccessors attribut" \
15147 "e to interface declaration", _tmp9_);
15149 vala_report_error (_tmp6_, _tmp11_);
15150 _g_free0 (_tmp11_);
15156 ValaCCodeExpression* vala_ccode_base_module_get_type_id_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup) {
15157 ValaCCodeExpression* result = NULL;
15158 ValaDataType* _tmp0_;
15159 g_return_val_if_fail (self != NULL, NULL);
15160 g_return_val_if_fail (type != NULL, NULL);
15162 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_GENERIC_TYPE)) {
15163 ValaDataType* _tmp1_;
15164 ValaTypeParameter* _tmp2_;
15165 ValaTypeParameter* _tmp3_;
15166 const gchar* _tmp4_;
15167 const gchar* _tmp5_;
15168 gchar* _tmp6_ = NULL;
15170 gchar* _tmp8_ = NULL;
15173 ValaDataType* _tmp10_;
15174 ValaTypeParameter* _tmp11_;
15175 ValaTypeParameter* _tmp12_;
15176 ValaSymbol* _tmp13_;
15177 ValaSymbol* _tmp14_;
15178 gboolean _tmp52_ = FALSE;
15179 gboolean _tmp53_ = FALSE;
15180 ValaDataType* _tmp54_;
15181 gboolean _tmp55_ = FALSE;
15185 _tmp2_ = vala_data_type_get_type_parameter (_tmp1_);
15187 _tmp4_ = vala_symbol_get_name ((ValaSymbol*) _tmp3_);
15189 _tmp6_ = g_utf8_strdown (_tmp5_, (gssize) (-1));
15191 _tmp8_ = g_strdup_printf ("%s_type", _tmp7_);
15196 _tmp11_ = vala_data_type_get_type_parameter (_tmp10_);
15198 _tmp13_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp12_);
15200 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, VALA_TYPE_INTERFACE)) {
15201 ValaDataType* _tmp15_;
15202 ValaTypeParameter* _tmp16_;
15203 ValaTypeParameter* _tmp17_;
15204 ValaSymbol* _tmp18_;
15205 ValaSymbol* _tmp19_;
15206 ValaInterface* _tmp20_;
15207 ValaInterface* iface;
15208 ValaInterface* _tmp21_;
15209 ValaDataType* _tmp22_;
15210 ValaTypeParameter* _tmp23_;
15211 ValaTypeParameter* _tmp24_;
15212 const gchar* _tmp25_;
15213 const gchar* _tmp26_;
15214 gchar* _tmp27_ = NULL;
15216 gchar* _tmp29_ = NULL;
15218 gchar* method_name;
15219 ValaInterface* _tmp31_;
15220 gchar* _tmp32_ = NULL;
15222 gchar* _tmp34_ = NULL;
15224 ValaCCodeIdentifier* _tmp36_;
15225 ValaCCodeIdentifier* _tmp37_;
15226 ValaCCodeFunctionCall* _tmp38_;
15227 ValaCCodeFunctionCall* _tmp39_;
15228 ValaCCodeFunctionCall* cast_self;
15229 ValaCCodeFunctionCall* _tmp40_;
15230 ValaCCodeIdentifier* _tmp41_;
15231 ValaCCodeIdentifier* _tmp42_;
15232 ValaCCodeFunctionCall* _tmp43_;
15233 const gchar* _tmp44_;
15234 ValaCCodeMemberAccess* _tmp45_;
15235 ValaCCodeMemberAccess* _tmp46_;
15236 ValaCCodeFunctionCall* _tmp47_;
15237 ValaCCodeFunctionCall* _tmp48_;
15238 ValaCCodeFunctionCall* function_call;
15239 ValaCCodeFunctionCall* _tmp49_;
15240 ValaCCodeIdentifier* _tmp50_;
15241 ValaCCodeIdentifier* _tmp51_;
15243 _tmp16_ = vala_data_type_get_type_parameter (_tmp15_);
15245 _tmp18_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp17_);
15247 _tmp20_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, VALA_TYPE_INTERFACE, ValaInterface));
15250 vala_ccode_base_module_require_generic_accessors (self, _tmp21_);
15252 _tmp23_ = vala_data_type_get_type_parameter (_tmp22_);
15254 _tmp25_ = vala_symbol_get_name ((ValaSymbol*) _tmp24_);
15256 _tmp27_ = g_utf8_strdown (_tmp26_, (gssize) (-1));
15258 _tmp29_ = g_strdup_printf ("get_%s_type", _tmp28_);
15260 _g_free0 (_tmp28_);
15261 method_name = _tmp30_;
15263 _tmp32_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp31_, NULL);
15265 _tmp34_ = g_strdup_printf ("%s_GET_INTERFACE", _tmp33_);
15267 _tmp36_ = vala_ccode_identifier_new (_tmp35_);
15269 _tmp38_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp37_);
15271 _vala_ccode_node_unref0 (_tmp37_);
15272 _g_free0 (_tmp35_);
15273 _g_free0 (_tmp33_);
15274 cast_self = _tmp39_;
15275 _tmp40_ = cast_self;
15276 _tmp41_ = vala_ccode_identifier_new ("self");
15278 vala_ccode_function_call_add_argument (_tmp40_, (ValaCCodeExpression*) _tmp42_);
15279 _vala_ccode_node_unref0 (_tmp42_);
15280 _tmp43_ = cast_self;
15281 _tmp44_ = method_name;
15282 _tmp45_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp43_, _tmp44_);
15284 _tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
15286 _vala_ccode_node_unref0 (_tmp46_);
15287 function_call = _tmp48_;
15288 _tmp49_ = function_call;
15289 _tmp50_ = vala_ccode_identifier_new ("self");
15291 vala_ccode_function_call_add_argument (_tmp49_, (ValaCCodeExpression*) _tmp51_);
15292 _vala_ccode_node_unref0 (_tmp51_);
15293 result = (ValaCCodeExpression*) function_call;
15294 _vala_ccode_node_unref0 (cast_self);
15295 _g_free0 (method_name);
15296 _vala_code_node_unref0 (iface);
15297 _g_free0 (var_name);
15301 _tmp55_ = vala_ccode_base_module_is_in_generic_type (self, _tmp54_);
15304 _tmp56_ = is_chainup;
15305 _tmp53_ = !_tmp56_;
15313 _tmp58_ = vala_ccode_base_module_get_in_creation_method (self);
15315 _tmp52_ = !_tmp59_;
15321 ValaCCodeExpression* _tmp61_ = NULL;
15322 ValaCCodeExpression* _tmp62_;
15323 ValaCCodeMemberAccess* _tmp63_;
15324 ValaCCodeMemberAccess* _tmp64_;
15325 const gchar* _tmp65_;
15326 ValaCCodeMemberAccess* _tmp66_;
15327 ValaCCodeExpression* _tmp67_;
15328 _tmp61_ = vala_ccode_base_module_get_result_cexpression (self, "self");
15330 _tmp63_ = vala_ccode_member_access_new_pointer (_tmp62_, "priv");
15332 _tmp65_ = var_name;
15333 _tmp66_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp64_, _tmp65_);
15334 _tmp67_ = (ValaCCodeExpression*) _tmp66_;
15335 _vala_ccode_node_unref0 (_tmp64_);
15336 _vala_ccode_node_unref0 (_tmp62_);
15338 _g_free0 (var_name);
15341 const gchar* _tmp68_;
15342 ValaCCodeExpression* _tmp69_ = NULL;
15343 _tmp68_ = var_name;
15344 _tmp69_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp68_);
15346 _g_free0 (var_name);
15349 _g_free0 (var_name);
15351 ValaDataType* _tmp70_;
15352 gchar* _tmp71_ = NULL;
15354 const gchar* _tmp72_;
15355 const gchar* _tmp76_;
15356 ValaCCodeIdentifier* _tmp77_;
15358 _tmp71_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp70_);
15361 if (g_strcmp0 (_tmp72_, "") == 0) {
15363 _tmp73_ = g_strdup ("G_TYPE_INVALID");
15364 _g_free0 (type_id);
15367 ValaDataType* _tmp74_;
15368 ValaCCodeFile* _tmp75_;
15370 _tmp75_ = self->cfile;
15371 vala_ccode_base_module_generate_type_declaration (self, _tmp74_, _tmp75_);
15374 _tmp77_ = vala_ccode_identifier_new (_tmp76_);
15375 result = (ValaCCodeExpression*) _tmp77_;
15376 _g_free0 (type_id);
15382 static ValaCCodeExpression* vala_ccode_base_module_real_get_dup_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup) {
15383 ValaCCodeExpression* result = NULL;
15384 ValaDataType* _tmp0_;
15385 g_return_val_if_fail (type != NULL, NULL);
15387 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ERROR_TYPE)) {
15388 ValaCCodeIdentifier* _tmp1_;
15389 _tmp1_ = vala_ccode_identifier_new ("g_error_copy");
15390 result = (ValaCCodeExpression*) _tmp1_;
15393 ValaDataType* _tmp2_;
15394 ValaTypeSymbol* _tmp3_;
15395 ValaTypeSymbol* _tmp4_;
15397 _tmp3_ = vala_data_type_get_data_type (_tmp2_);
15399 if (_tmp4_ != NULL) {
15400 gchar* dup_function = NULL;
15401 ValaDataType* _tmp5_;
15402 ValaTypeSymbol* _tmp6_;
15403 ValaTypeSymbol* _tmp7_;
15406 ValaDataType* _tmp9_;
15407 ValaTypeSymbol* _tmp10_;
15408 ValaTypeSymbol* _tmp11_;
15409 gboolean _tmp12_ = FALSE;
15410 const gchar* _tmp75_;
15411 ValaCCodeIdentifier* _tmp76_;
15413 _tmp6_ = vala_data_type_get_data_type (_tmp5_);
15415 _tmp8_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp7_) : NULL);
15418 _tmp10_ = vala_data_type_get_data_type (_tmp9_);
15420 _tmp12_ = vala_ccode_base_module_is_reference_counting (_tmp11_);
15422 ValaDataType* _tmp13_;
15423 ValaTypeSymbol* _tmp14_;
15424 ValaTypeSymbol* _tmp15_;
15425 gchar* _tmp16_ = NULL;
15426 gboolean _tmp17_ = FALSE;
15427 ValaDataType* _tmp18_;
15428 ValaTypeSymbol* _tmp19_;
15429 ValaTypeSymbol* _tmp20_;
15432 _tmp14_ = vala_data_type_get_data_type (_tmp13_);
15434 _tmp16_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
15435 _g_free0 (dup_function);
15436 dup_function = _tmp16_;
15438 _tmp19_ = vala_data_type_get_data_type (_tmp18_);
15440 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp20_, VALA_TYPE_INTERFACE)) {
15441 const gchar* _tmp21_;
15442 _tmp21_ = dup_function;
15443 _tmp17_ = _tmp21_ == NULL;
15449 ValaSourceReference* _tmp23_;
15450 ValaDataType* _tmp24_;
15451 ValaTypeSymbol* _tmp25_;
15452 ValaTypeSymbol* _tmp26_;
15453 gchar* _tmp27_ = NULL;
15455 gchar* _tmp29_ = NULL;
15457 _tmp23_ = source_reference;
15459 _tmp25_ = vala_data_type_get_data_type (_tmp24_);
15461 _tmp27_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp26_);
15463 _tmp29_ = g_strdup_printf ("missing class prerequisite for interface `%s', add GLib.Object to inte" \
15464 "rface declaration if unsure", _tmp28_);
15466 vala_report_error (_tmp23_, _tmp30_);
15467 _g_free0 (_tmp30_);
15468 _g_free0 (_tmp28_);
15470 _vala_code_node_unref0 (cl);
15471 _g_free0 (dup_function);
15475 gboolean _tmp31_ = FALSE;
15476 ValaClass* _tmp32_;
15479 if (_tmp32_ != NULL) {
15480 ValaClass* _tmp33_;
15484 _tmp34_ = vala_class_get_is_immutable (_tmp33_);
15492 ValaDataType* _tmp37_;
15493 ValaTypeSymbol* _tmp38_;
15494 ValaTypeSymbol* _tmp39_;
15495 gchar* _tmp40_ = NULL;
15496 const gchar* _tmp41_;
15498 _tmp38_ = vala_data_type_get_data_type (_tmp37_);
15500 _tmp40_ = vala_ccode_base_module_get_ccode_dup_function (_tmp39_);
15501 _g_free0 (dup_function);
15502 dup_function = _tmp40_;
15503 _tmp41_ = dup_function;
15504 if (_tmp41_ == NULL) {
15506 _tmp42_ = g_strdup ("");
15507 _g_free0 (dup_function);
15508 dup_function = _tmp42_;
15511 gboolean _tmp43_ = FALSE;
15512 ValaClass* _tmp44_;
15515 if (_tmp44_ != NULL) {
15516 ValaClass* _tmp45_;
15517 gboolean _tmp46_ = FALSE;
15519 _tmp46_ = vala_ccode_base_module_get_ccode_is_gboxed ((ValaTypeSymbol*) _tmp45_);
15526 ValaDataType* _tmp48_;
15527 gchar* _tmp49_ = NULL;
15528 const gchar* _tmp50_;
15530 _tmp49_ = vala_ccode_base_module_generate_dup_func_wrapper (self, _tmp48_);
15531 _g_free0 (dup_function);
15532 dup_function = _tmp49_;
15533 _tmp50_ = dup_function;
15534 if (_tmp50_ == NULL) {
15536 _tmp51_ = g_strdup ("");
15537 _g_free0 (dup_function);
15538 dup_function = _tmp51_;
15541 ValaDataType* _tmp52_;
15543 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp52_, VALA_TYPE_VALUE_TYPE)) {
15544 ValaDataType* _tmp53_;
15545 ValaTypeSymbol* _tmp54_;
15546 ValaTypeSymbol* _tmp55_;
15547 gchar* _tmp56_ = NULL;
15548 gboolean _tmp57_ = FALSE;
15549 const gchar* _tmp58_;
15552 _tmp54_ = vala_data_type_get_data_type (_tmp53_);
15554 _tmp56_ = vala_ccode_base_module_get_ccode_dup_function (_tmp55_);
15555 _g_free0 (dup_function);
15556 dup_function = _tmp56_;
15557 _tmp58_ = dup_function;
15558 if (_tmp58_ == NULL) {
15559 ValaDataType* _tmp59_;
15563 _tmp60_ = vala_data_type_get_nullable (_tmp59_);
15571 ValaDataType* _tmp63_;
15572 gchar* _tmp64_ = NULL;
15574 _tmp64_ = vala_ccode_base_module_generate_struct_dup_wrapper (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp63_, VALA_TYPE_VALUE_TYPE, ValaValueType));
15575 _g_free0 (dup_function);
15576 dup_function = _tmp64_;
15578 const gchar* _tmp65_;
15579 _tmp65_ = dup_function;
15580 if (_tmp65_ == NULL) {
15582 _tmp66_ = g_strdup ("");
15583 _g_free0 (dup_function);
15584 dup_function = _tmp66_;
15588 ValaSourceReference* _tmp67_;
15589 ValaDataType* _tmp68_;
15590 ValaTypeSymbol* _tmp69_;
15591 ValaTypeSymbol* _tmp70_;
15592 const gchar* _tmp71_;
15593 const gchar* _tmp72_;
15594 gchar* _tmp73_ = NULL;
15596 _tmp67_ = source_reference;
15598 _tmp69_ = vala_data_type_get_data_type (_tmp68_);
15600 _tmp71_ = vala_symbol_get_name ((ValaSymbol*) _tmp70_);
15602 _tmp73_ = g_strdup_printf ("duplicating %s instance, use unowned variable or explicitly invoke cop" \
15603 "y method", _tmp72_);
15605 vala_report_error (_tmp67_, _tmp74_);
15606 _g_free0 (_tmp74_);
15608 _vala_code_node_unref0 (cl);
15609 _g_free0 (dup_function);
15615 _tmp75_ = dup_function;
15616 _tmp76_ = vala_ccode_identifier_new (_tmp75_);
15617 result = (ValaCCodeExpression*) _tmp76_;
15618 _vala_code_node_unref0 (cl);
15619 _g_free0 (dup_function);
15622 ValaDataType* _tmp77_;
15623 ValaTypeParameter* _tmp78_;
15624 ValaTypeParameter* _tmp79_;
15626 _tmp78_ = vala_data_type_get_type_parameter (_tmp77_);
15628 if (_tmp79_ != NULL) {
15629 ValaDataType* _tmp80_;
15630 ValaTypeParameter* _tmp81_;
15631 ValaTypeParameter* _tmp82_;
15632 const gchar* _tmp83_;
15633 const gchar* _tmp84_;
15634 gchar* _tmp85_ = NULL;
15636 gchar* _tmp87_ = NULL;
15639 ValaDataType* _tmp89_;
15640 ValaTypeParameter* _tmp90_;
15641 ValaTypeParameter* _tmp91_;
15642 ValaSymbol* _tmp92_;
15643 ValaSymbol* _tmp93_;
15644 gboolean _tmp131_ = FALSE;
15645 gboolean _tmp132_ = FALSE;
15646 ValaDataType* _tmp133_;
15647 gboolean _tmp134_ = FALSE;
15651 _tmp81_ = vala_data_type_get_type_parameter (_tmp80_);
15653 _tmp83_ = vala_symbol_get_name ((ValaSymbol*) _tmp82_);
15655 _tmp85_ = g_utf8_strdown (_tmp84_, (gssize) (-1));
15657 _tmp87_ = g_strdup_printf ("%s_dup_func", _tmp86_);
15659 _g_free0 (_tmp86_);
15660 func_name = _tmp88_;
15662 _tmp90_ = vala_data_type_get_type_parameter (_tmp89_);
15664 _tmp92_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp91_);
15666 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp93_, VALA_TYPE_INTERFACE)) {
15667 ValaDataType* _tmp94_;
15668 ValaTypeParameter* _tmp95_;
15669 ValaTypeParameter* _tmp96_;
15670 ValaSymbol* _tmp97_;
15671 ValaSymbol* _tmp98_;
15672 ValaInterface* _tmp99_;
15673 ValaInterface* iface;
15674 ValaInterface* _tmp100_;
15675 ValaDataType* _tmp101_;
15676 ValaTypeParameter* _tmp102_;
15677 ValaTypeParameter* _tmp103_;
15678 const gchar* _tmp104_;
15679 const gchar* _tmp105_;
15680 gchar* _tmp106_ = NULL;
15682 gchar* _tmp108_ = NULL;
15684 gchar* method_name;
15685 ValaInterface* _tmp110_;
15686 gchar* _tmp111_ = NULL;
15688 gchar* _tmp113_ = NULL;
15690 ValaCCodeIdentifier* _tmp115_;
15691 ValaCCodeIdentifier* _tmp116_;
15692 ValaCCodeFunctionCall* _tmp117_;
15693 ValaCCodeFunctionCall* _tmp118_;
15694 ValaCCodeFunctionCall* cast_self;
15695 ValaCCodeFunctionCall* _tmp119_;
15696 ValaCCodeIdentifier* _tmp120_;
15697 ValaCCodeIdentifier* _tmp121_;
15698 ValaCCodeFunctionCall* _tmp122_;
15699 const gchar* _tmp123_;
15700 ValaCCodeMemberAccess* _tmp124_;
15701 ValaCCodeMemberAccess* _tmp125_;
15702 ValaCCodeFunctionCall* _tmp126_;
15703 ValaCCodeFunctionCall* _tmp127_;
15704 ValaCCodeFunctionCall* function_call;
15705 ValaCCodeFunctionCall* _tmp128_;
15706 ValaCCodeIdentifier* _tmp129_;
15707 ValaCCodeIdentifier* _tmp130_;
15709 _tmp95_ = vala_data_type_get_type_parameter (_tmp94_);
15711 _tmp97_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp96_);
15713 _tmp99_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp98_, VALA_TYPE_INTERFACE, ValaInterface));
15716 vala_ccode_base_module_require_generic_accessors (self, _tmp100_);
15718 _tmp102_ = vala_data_type_get_type_parameter (_tmp101_);
15719 _tmp103_ = _tmp102_;
15720 _tmp104_ = vala_symbol_get_name ((ValaSymbol*) _tmp103_);
15721 _tmp105_ = _tmp104_;
15722 _tmp106_ = g_utf8_strdown (_tmp105_, (gssize) (-1));
15723 _tmp107_ = _tmp106_;
15724 _tmp108_ = g_strdup_printf ("get_%s_dup_func", _tmp107_);
15725 _tmp109_ = _tmp108_;
15726 _g_free0 (_tmp107_);
15727 method_name = _tmp109_;
15729 _tmp111_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp110_, NULL);
15730 _tmp112_ = _tmp111_;
15731 _tmp113_ = g_strdup_printf ("%s_GET_INTERFACE", _tmp112_);
15732 _tmp114_ = _tmp113_;
15733 _tmp115_ = vala_ccode_identifier_new (_tmp114_);
15734 _tmp116_ = _tmp115_;
15735 _tmp117_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp116_);
15736 _tmp118_ = _tmp117_;
15737 _vala_ccode_node_unref0 (_tmp116_);
15738 _g_free0 (_tmp114_);
15739 _g_free0 (_tmp112_);
15740 cast_self = _tmp118_;
15741 _tmp119_ = cast_self;
15742 _tmp120_ = vala_ccode_identifier_new ("self");
15743 _tmp121_ = _tmp120_;
15744 vala_ccode_function_call_add_argument (_tmp119_, (ValaCCodeExpression*) _tmp121_);
15745 _vala_ccode_node_unref0 (_tmp121_);
15746 _tmp122_ = cast_self;
15747 _tmp123_ = method_name;
15748 _tmp124_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp122_, _tmp123_);
15749 _tmp125_ = _tmp124_;
15750 _tmp126_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp125_);
15751 _tmp127_ = _tmp126_;
15752 _vala_ccode_node_unref0 (_tmp125_);
15753 function_call = _tmp127_;
15754 _tmp128_ = function_call;
15755 _tmp129_ = vala_ccode_identifier_new ("self");
15756 _tmp130_ = _tmp129_;
15757 vala_ccode_function_call_add_argument (_tmp128_, (ValaCCodeExpression*) _tmp130_);
15758 _vala_ccode_node_unref0 (_tmp130_);
15759 result = (ValaCCodeExpression*) function_call;
15760 _vala_ccode_node_unref0 (cast_self);
15761 _g_free0 (method_name);
15762 _vala_code_node_unref0 (iface);
15763 _g_free0 (func_name);
15767 _tmp134_ = vala_ccode_base_module_is_in_generic_type (self, _tmp133_);
15770 _tmp135_ = is_chainup;
15771 _tmp132_ = !_tmp135_;
15775 _tmp136_ = _tmp132_;
15779 _tmp137_ = vala_ccode_base_module_get_in_creation_method (self);
15780 _tmp138_ = _tmp137_;
15781 _tmp131_ = !_tmp138_;
15785 _tmp139_ = _tmp131_;
15787 ValaCCodeExpression* _tmp140_ = NULL;
15788 ValaCCodeExpression* _tmp141_;
15789 ValaCCodeMemberAccess* _tmp142_;
15790 ValaCCodeMemberAccess* _tmp143_;
15791 const gchar* _tmp144_;
15792 ValaCCodeMemberAccess* _tmp145_;
15793 ValaCCodeExpression* _tmp146_;
15794 _tmp140_ = vala_ccode_base_module_get_result_cexpression (self, "self");
15795 _tmp141_ = _tmp140_;
15796 _tmp142_ = vala_ccode_member_access_new_pointer (_tmp141_, "priv");
15797 _tmp143_ = _tmp142_;
15798 _tmp144_ = func_name;
15799 _tmp145_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp143_, _tmp144_);
15800 _tmp146_ = (ValaCCodeExpression*) _tmp145_;
15801 _vala_ccode_node_unref0 (_tmp143_);
15802 _vala_ccode_node_unref0 (_tmp141_);
15804 _g_free0 (func_name);
15807 const gchar* _tmp147_;
15808 ValaCCodeExpression* _tmp148_ = NULL;
15809 _tmp147_ = func_name;
15810 _tmp148_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp147_);
15812 _g_free0 (func_name);
15815 _g_free0 (func_name);
15817 ValaDataType* _tmp149_;
15819 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp149_, VALA_TYPE_POINTER_TYPE)) {
15820 ValaDataType* _tmp150_;
15821 ValaPointerType* _tmp151_;
15822 ValaPointerType* pointer_type;
15823 ValaPointerType* _tmp152_;
15824 ValaDataType* _tmp153_;
15825 ValaDataType* _tmp154_;
15826 ValaSourceReference* _tmp155_;
15827 ValaCCodeExpression* _tmp156_ = NULL;
15829 _tmp151_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp150_, VALA_TYPE_POINTER_TYPE, ValaPointerType));
15830 pointer_type = _tmp151_;
15831 _tmp152_ = pointer_type;
15832 _tmp153_ = vala_pointer_type_get_base_type (_tmp152_);
15833 _tmp154_ = _tmp153_;
15834 _tmp155_ = source_reference;
15835 _tmp156_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp154_, _tmp155_, FALSE);
15837 _vala_code_node_unref0 (pointer_type);
15840 ValaCCodeConstant* _tmp157_;
15841 _tmp157_ = vala_ccode_constant_new ("NULL");
15842 result = (ValaCCodeExpression*) _tmp157_;
15851 ValaCCodeExpression* vala_ccode_base_module_get_dup_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup) {
15852 g_return_val_if_fail (self != NULL, NULL);
15853 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dup_func_expression (self, type, source_reference, is_chainup);
15857 static void vala_ccode_base_module_make_comparable_cexpression (ValaCCodeBaseModule* self, ValaDataType** left_type, ValaCCodeExpression** cleft, ValaDataType** right_type, ValaCCodeExpression** cright) {
15858 ValaDataType* _tmp0_;
15859 ValaTypeSymbol* _tmp1_;
15860 ValaTypeSymbol* _tmp2_;
15861 ValaStruct* _tmp3_;
15862 ValaStruct* left_type_as_struct;
15863 ValaDataType* _tmp4_;
15864 ValaTypeSymbol* _tmp5_;
15865 ValaTypeSymbol* _tmp6_;
15866 ValaStruct* _tmp7_;
15867 ValaStruct* right_type_as_struct;
15868 ValaCCodeExpression* _tmp8_;
15869 ValaDataType* _tmp9_;
15870 ValaDataType* _tmp10_;
15871 ValaCCodeExpression* _tmp11_ = NULL;
15872 ValaCCodeExpression* valuecast;
15873 ValaCCodeExpression* _tmp12_;
15874 ValaCCodeExpression* _tmp17_;
15875 ValaDataType* _tmp18_;
15876 ValaDataType* _tmp19_;
15877 ValaCCodeExpression* _tmp20_ = NULL;
15878 ValaCCodeExpression* _tmp21_;
15879 gboolean _tmp26_ = FALSE;
15880 gboolean _tmp27_ = FALSE;
15881 gboolean _tmp28_ = FALSE;
15882 ValaDataType* _tmp29_;
15883 ValaTypeSymbol* _tmp30_;
15884 ValaTypeSymbol* _tmp31_;
15888 g_return_if_fail (self != NULL);
15889 g_return_if_fail (*left_type != NULL);
15890 g_return_if_fail (*cleft != NULL);
15891 g_return_if_fail (*right_type != NULL);
15892 g_return_if_fail (*cright != NULL);
15893 _tmp0_ = *left_type;
15894 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
15896 _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp2_) : NULL);
15897 left_type_as_struct = _tmp3_;
15898 _tmp4_ = *right_type;
15899 _tmp5_ = vala_data_type_get_data_type (_tmp4_);
15901 _tmp7_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp6_) : NULL);
15902 right_type_as_struct = _tmp7_;
15904 _tmp9_ = *left_type;
15905 _tmp10_ = *right_type;
15906 _tmp11_ = vala_ccode_base_module_try_cast_value_to_type (self, _tmp8_, _tmp9_, _tmp10_, NULL);
15907 valuecast = _tmp11_;
15908 _tmp12_ = valuecast;
15909 if (_tmp12_ != NULL) {
15910 ValaCCodeExpression* _tmp13_;
15911 ValaCCodeExpression* _tmp14_;
15912 ValaDataType* _tmp15_;
15913 ValaDataType* _tmp16_;
15914 _tmp13_ = valuecast;
15915 _tmp14_ = _vala_ccode_node_ref0 (_tmp13_);
15916 _vala_ccode_node_unref0 (*cleft);
15918 _tmp15_ = *right_type;
15919 _tmp16_ = _vala_code_node_ref0 (_tmp15_);
15920 _vala_code_node_unref0 (*left_type);
15921 *left_type = _tmp16_;
15922 vala_ccode_base_module_make_comparable_cexpression (self, left_type, cleft, right_type, cright);
15923 _vala_ccode_node_unref0 (valuecast);
15924 _vala_code_node_unref0 (right_type_as_struct);
15925 _vala_code_node_unref0 (left_type_as_struct);
15929 _tmp18_ = *right_type;
15930 _tmp19_ = *left_type;
15931 _tmp20_ = vala_ccode_base_module_try_cast_value_to_type (self, _tmp17_, _tmp18_, _tmp19_, NULL);
15932 _vala_ccode_node_unref0 (valuecast);
15933 valuecast = _tmp20_;
15934 _tmp21_ = valuecast;
15935 if (_tmp21_ != NULL) {
15936 ValaCCodeExpression* _tmp22_;
15937 ValaCCodeExpression* _tmp23_;
15938 ValaDataType* _tmp24_;
15939 ValaDataType* _tmp25_;
15940 _tmp22_ = valuecast;
15941 _tmp23_ = _vala_ccode_node_ref0 (_tmp22_);
15942 _vala_ccode_node_unref0 (*cright);
15944 _tmp24_ = *left_type;
15945 _tmp25_ = _vala_code_node_ref0 (_tmp24_);
15946 _vala_code_node_unref0 (*right_type);
15947 *right_type = _tmp25_;
15948 vala_ccode_base_module_make_comparable_cexpression (self, left_type, cleft, right_type, cright);
15949 _vala_ccode_node_unref0 (valuecast);
15950 _vala_code_node_unref0 (right_type_as_struct);
15951 _vala_code_node_unref0 (left_type_as_struct);
15954 _tmp29_ = *left_type;
15955 _tmp30_ = vala_data_type_get_data_type (_tmp29_);
15957 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp31_, VALA_TYPE_CLASS)) {
15958 ValaDataType* _tmp32_;
15959 ValaTypeSymbol* _tmp33_;
15960 ValaTypeSymbol* _tmp34_;
15963 _tmp32_ = *left_type;
15964 _tmp33_ = vala_data_type_get_data_type (_tmp32_);
15966 _tmp35_ = vala_class_get_is_compact (G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, VALA_TYPE_CLASS, ValaClass));
15968 _tmp28_ = !_tmp36_;
15974 ValaDataType* _tmp38_;
15975 ValaTypeSymbol* _tmp39_;
15976 ValaTypeSymbol* _tmp40_;
15977 _tmp38_ = *right_type;
15978 _tmp39_ = vala_data_type_get_data_type (_tmp38_);
15980 _tmp27_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp40_, VALA_TYPE_CLASS);
15986 ValaDataType* _tmp42_;
15987 ValaTypeSymbol* _tmp43_;
15988 ValaTypeSymbol* _tmp44_;
15991 _tmp42_ = *right_type;
15992 _tmp43_ = vala_data_type_get_data_type (_tmp42_);
15994 _tmp45_ = vala_class_get_is_compact (G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, VALA_TYPE_CLASS, ValaClass));
15996 _tmp26_ = !_tmp46_;
16002 ValaDataType* _tmp48_;
16003 ValaTypeSymbol* _tmp49_;
16004 ValaTypeSymbol* _tmp50_;
16005 ValaClass* _tmp51_;
16006 ValaClass* left_cl;
16007 ValaDataType* _tmp52_;
16008 ValaTypeSymbol* _tmp53_;
16009 ValaTypeSymbol* _tmp54_;
16010 ValaClass* _tmp55_;
16011 ValaClass* right_cl;
16012 ValaClass* _tmp56_;
16013 ValaClass* _tmp57_;
16014 _tmp48_ = *left_type;
16015 _tmp49_ = vala_data_type_get_data_type (_tmp48_);
16017 _tmp51_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, VALA_TYPE_CLASS, ValaClass));
16019 _tmp52_ = *right_type;
16020 _tmp53_ = vala_data_type_get_data_type (_tmp52_);
16022 _tmp55_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp54_, VALA_TYPE_CLASS, ValaClass));
16023 right_cl = _tmp55_;
16025 _tmp57_ = right_cl;
16026 if (_tmp56_ != _tmp57_) {
16027 ValaClass* _tmp58_;
16028 ValaClass* _tmp59_;
16029 gboolean _tmp60_ = FALSE;
16031 _tmp59_ = right_cl;
16032 _tmp60_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp58_, (ValaTypeSymbol*) _tmp59_);
16034 ValaCCodeExpression* _tmp61_;
16035 ValaClass* _tmp62_;
16036 ValaCCodeFunctionCall* _tmp63_ = NULL;
16038 _tmp62_ = right_cl;
16039 _tmp63_ = vala_ccode_base_module_generate_instance_cast (self, _tmp61_, (ValaTypeSymbol*) _tmp62_);
16040 _vala_ccode_node_unref0 (*cleft);
16041 *cleft = (ValaCCodeExpression*) _tmp63_;
16043 ValaClass* _tmp64_;
16044 ValaClass* _tmp65_;
16045 gboolean _tmp66_ = FALSE;
16046 _tmp64_ = right_cl;
16048 _tmp66_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp64_, (ValaTypeSymbol*) _tmp65_);
16050 ValaCCodeExpression* _tmp67_;
16051 ValaClass* _tmp68_;
16052 ValaCCodeFunctionCall* _tmp69_ = NULL;
16055 _tmp69_ = vala_ccode_base_module_generate_instance_cast (self, _tmp67_, (ValaTypeSymbol*) _tmp68_);
16056 _vala_ccode_node_unref0 (*cright);
16057 *cright = (ValaCCodeExpression*) _tmp69_;
16061 _vala_code_node_unref0 (right_cl);
16062 _vala_code_node_unref0 (left_cl);
16064 gboolean _tmp70_ = FALSE;
16065 ValaStruct* _tmp71_;
16067 _tmp71_ = left_type_as_struct;
16068 if (_tmp71_ != NULL) {
16069 ValaStruct* _tmp72_;
16070 _tmp72_ = right_type_as_struct;
16071 _tmp70_ = _tmp72_ != NULL;
16077 ValaDataType* _tmp74_;
16078 _tmp74_ = *left_type;
16079 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp74_, VALA_TYPE_STRUCT_VALUE_TYPE)) {
16080 ValaDataType* _tmp75_;
16083 ValaDataType* _tmp80_;
16086 _tmp75_ = *left_type;
16087 _tmp76_ = vala_data_type_get_nullable (_tmp75_);
16090 ValaCCodeExpression* _tmp78_;
16091 ValaCCodeUnaryExpression* _tmp79_;
16093 _tmp79_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp78_);
16094 _vala_ccode_node_unref0 (*cleft);
16095 *cleft = (ValaCCodeExpression*) _tmp79_;
16097 _tmp80_ = *right_type;
16098 _tmp81_ = vala_data_type_get_nullable (_tmp80_);
16101 ValaCCodeExpression* _tmp83_;
16102 ValaCCodeUnaryExpression* _tmp84_;
16104 _tmp84_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp83_);
16105 _vala_ccode_node_unref0 (*cright);
16106 *cright = (ValaCCodeExpression*) _tmp84_;
16109 gboolean _tmp85_ = FALSE;
16110 ValaDataType* _tmp86_;
16114 _tmp86_ = *left_type;
16115 _tmp87_ = vala_data_type_get_nullable (_tmp86_);
16118 ValaDataType* _tmp89_;
16121 _tmp89_ = *right_type;
16122 _tmp90_ = vala_data_type_get_nullable (_tmp89_);
16131 ValaDataType* _tmp93_;
16134 _tmp93_ = *left_type;
16135 _tmp94_ = vala_data_type_get_nullable (_tmp93_);
16138 ValaCCodeExpression* _tmp96_;
16139 ValaCCodeUnaryExpression* _tmp97_;
16141 _tmp97_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp96_);
16142 _vala_ccode_node_unref0 (*cleft);
16143 *cleft = (ValaCCodeExpression*) _tmp97_;
16145 ValaDataType* _tmp98_;
16148 _tmp98_ = *right_type;
16149 _tmp99_ = vala_data_type_get_nullable (_tmp98_);
16150 _tmp100_ = _tmp99_;
16152 ValaCCodeExpression* _tmp101_;
16153 ValaCCodeUnaryExpression* _tmp102_;
16154 _tmp101_ = *cright;
16155 _tmp102_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp101_);
16156 _vala_ccode_node_unref0 (*cright);
16157 *cright = (ValaCCodeExpression*) _tmp102_;
16164 _vala_ccode_node_unref0 (valuecast);
16165 _vala_code_node_unref0 (right_type_as_struct);
16166 _vala_code_node_unref0 (left_type_as_struct);
16170 static gchar* vala_ccode_base_module_generate_struct_equal_function (ValaCCodeBaseModule* self, ValaStruct* st) {
16171 gchar* result = NULL;
16172 ValaStruct* _tmp0_;
16173 gchar* _tmp1_ = NULL;
16175 gchar* _tmp3_ = NULL;
16178 const gchar* _tmp5_;
16179 gboolean _tmp6_ = FALSE;
16180 ValaStruct* _tmp7_;
16181 ValaStruct* _tmp8_;
16182 ValaStruct* _tmp9_;
16183 const gchar* _tmp14_;
16184 ValaCCodeFunction* _tmp15_;
16185 ValaCCodeFunction* function;
16186 ValaCCodeFunction* _tmp16_;
16187 ValaCCodeFunction* _tmp17_;
16188 ValaStruct* _tmp18_;
16189 gchar* _tmp19_ = NULL;
16195 ValaCCodeParameter* _tmp25_;
16196 ValaCCodeParameter* _tmp26_;
16197 ValaCCodeFunction* _tmp27_;
16198 ValaStruct* _tmp28_;
16199 gchar* _tmp29_ = NULL;
16205 ValaCCodeParameter* _tmp35_;
16206 ValaCCodeParameter* _tmp36_;
16207 ValaCCodeFunction* _tmp37_;
16208 gboolean has_instance_fields;
16210 ValaCCodeFile* _tmp190_;
16211 ValaCCodeFunction* _tmp191_;
16212 ValaCCodeFile* _tmp192_;
16213 ValaCCodeFunction* _tmp193_;
16214 g_return_val_if_fail (self != NULL, NULL);
16215 g_return_val_if_fail (st != NULL, NULL);
16217 _tmp1_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp0_);
16219 _tmp3_ = g_strdup_printf ("_%sequal", _tmp2_);
16222 equal_func = _tmp4_;
16223 _tmp5_ = equal_func;
16224 _tmp6_ = vala_ccode_base_module_add_wrapper (self, _tmp5_);
16226 result = equal_func;
16230 _tmp8_ = vala_struct_get_base_struct (_tmp7_);
16232 if (_tmp9_ != NULL) {
16233 ValaStruct* _tmp10_;
16234 ValaStruct* _tmp11_;
16235 ValaStruct* _tmp12_;
16236 gchar* _tmp13_ = NULL;
16238 _tmp11_ = vala_struct_get_base_struct (_tmp10_);
16240 _tmp13_ = vala_ccode_base_module_generate_struct_equal_function (self, _tmp12_);
16242 _g_free0 (equal_func);
16245 _tmp14_ = equal_func;
16246 _tmp15_ = vala_ccode_function_new (_tmp14_, "gboolean");
16247 function = _tmp15_;
16248 _tmp16_ = function;
16249 vala_ccode_function_set_modifiers (_tmp16_, VALA_CCODE_MODIFIERS_STATIC);
16250 _tmp17_ = function;
16252 _tmp19_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp18_);
16254 _tmp21_ = g_strconcat ("const ", _tmp20_, NULL);
16256 _tmp23_ = g_strconcat (_tmp22_, "*", NULL);
16258 _tmp25_ = vala_ccode_parameter_new ("s1", _tmp24_);
16260 vala_ccode_function_add_parameter (_tmp17_, _tmp26_);
16261 _vala_ccode_node_unref0 (_tmp26_);
16262 _g_free0 (_tmp24_);
16263 _g_free0 (_tmp22_);
16264 _g_free0 (_tmp20_);
16265 _tmp27_ = function;
16267 _tmp29_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp28_);
16269 _tmp31_ = g_strconcat ("const ", _tmp30_, NULL);
16271 _tmp33_ = g_strconcat (_tmp32_, "*", NULL);
16273 _tmp35_ = vala_ccode_parameter_new ("s2", _tmp34_);
16275 vala_ccode_function_add_parameter (_tmp27_, _tmp36_);
16276 _vala_ccode_node_unref0 (_tmp36_);
16277 _g_free0 (_tmp34_);
16278 _g_free0 (_tmp32_);
16279 _g_free0 (_tmp30_);
16280 _tmp37_ = function;
16281 vala_ccode_base_module_push_function (self, _tmp37_);
16283 ValaCCodeIdentifier* _tmp38_;
16284 ValaCCodeIdentifier* _tmp39_;
16285 ValaCCodeIdentifier* _tmp40_;
16286 ValaCCodeIdentifier* _tmp41_;
16287 ValaCCodeBinaryExpression* _tmp42_;
16288 ValaCCodeBinaryExpression* _tmp43_;
16289 ValaCCodeBinaryExpression* cexp;
16290 ValaCCodeFunction* _tmp44_;
16291 ValaCCodeFunction* _tmp45_;
16292 ValaCCodeBinaryExpression* _tmp46_;
16293 ValaCCodeFunction* _tmp47_;
16294 ValaCCodeFunction* _tmp48_;
16295 ValaCCodeConstant* _tmp49_;
16296 ValaCCodeConstant* _tmp50_;
16297 ValaCCodeFunction* _tmp51_;
16298 ValaCCodeFunction* _tmp52_;
16299 _tmp38_ = vala_ccode_identifier_new ("s1");
16301 _tmp40_ = vala_ccode_identifier_new ("s2");
16303 _tmp42_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp39_, (ValaCCodeExpression*) _tmp41_);
16305 _vala_ccode_node_unref0 (_tmp41_);
16306 _vala_ccode_node_unref0 (_tmp39_);
16308 _tmp44_ = vala_ccode_base_module_get_ccode (self);
16311 vala_ccode_function_open_if (_tmp45_, (ValaCCodeExpression*) _tmp46_);
16312 _tmp47_ = vala_ccode_base_module_get_ccode (self);
16314 _tmp49_ = vala_ccode_constant_new ("TRUE");
16316 vala_ccode_function_add_return (_tmp48_, (ValaCCodeExpression*) _tmp50_);
16317 _vala_ccode_node_unref0 (_tmp50_);
16318 _tmp51_ = vala_ccode_base_module_get_ccode (self);
16320 vala_ccode_function_close (_tmp52_);
16321 _vala_ccode_node_unref0 (cexp);
16324 ValaCCodeIdentifier* _tmp53_;
16325 ValaCCodeIdentifier* _tmp54_;
16326 ValaCCodeConstant* _tmp55_;
16327 ValaCCodeConstant* _tmp56_;
16328 ValaCCodeBinaryExpression* _tmp57_;
16329 ValaCCodeBinaryExpression* _tmp58_;
16330 ValaCCodeBinaryExpression* cexp;
16331 ValaCCodeFunction* _tmp59_;
16332 ValaCCodeFunction* _tmp60_;
16333 ValaCCodeBinaryExpression* _tmp61_;
16334 ValaCCodeFunction* _tmp62_;
16335 ValaCCodeFunction* _tmp63_;
16336 ValaCCodeConstant* _tmp64_;
16337 ValaCCodeConstant* _tmp65_;
16338 ValaCCodeFunction* _tmp66_;
16339 ValaCCodeFunction* _tmp67_;
16340 ValaCCodeIdentifier* _tmp68_;
16341 ValaCCodeIdentifier* _tmp69_;
16342 ValaCCodeConstant* _tmp70_;
16343 ValaCCodeConstant* _tmp71_;
16344 ValaCCodeBinaryExpression* _tmp72_;
16345 ValaCCodeFunction* _tmp73_;
16346 ValaCCodeFunction* _tmp74_;
16347 ValaCCodeBinaryExpression* _tmp75_;
16348 ValaCCodeFunction* _tmp76_;
16349 ValaCCodeFunction* _tmp77_;
16350 ValaCCodeConstant* _tmp78_;
16351 ValaCCodeConstant* _tmp79_;
16352 ValaCCodeFunction* _tmp80_;
16353 ValaCCodeFunction* _tmp81_;
16354 _tmp53_ = vala_ccode_identifier_new ("s1");
16356 _tmp55_ = vala_ccode_constant_new ("NULL");
16358 _tmp57_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp54_, (ValaCCodeExpression*) _tmp56_);
16360 _vala_ccode_node_unref0 (_tmp56_);
16361 _vala_ccode_node_unref0 (_tmp54_);
16363 _tmp59_ = vala_ccode_base_module_get_ccode (self);
16366 vala_ccode_function_open_if (_tmp60_, (ValaCCodeExpression*) _tmp61_);
16367 _tmp62_ = vala_ccode_base_module_get_ccode (self);
16369 _tmp64_ = vala_ccode_constant_new ("FALSE");
16371 vala_ccode_function_add_return (_tmp63_, (ValaCCodeExpression*) _tmp65_);
16372 _vala_ccode_node_unref0 (_tmp65_);
16373 _tmp66_ = vala_ccode_base_module_get_ccode (self);
16375 vala_ccode_function_close (_tmp67_);
16376 _tmp68_ = vala_ccode_identifier_new ("s2");
16378 _tmp70_ = vala_ccode_constant_new ("NULL");
16380 _tmp72_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp69_, (ValaCCodeExpression*) _tmp71_);
16381 _vala_ccode_node_unref0 (cexp);
16383 _vala_ccode_node_unref0 (_tmp71_);
16384 _vala_ccode_node_unref0 (_tmp69_);
16385 _tmp73_ = vala_ccode_base_module_get_ccode (self);
16388 vala_ccode_function_open_if (_tmp74_, (ValaCCodeExpression*) _tmp75_);
16389 _tmp76_ = vala_ccode_base_module_get_ccode (self);
16391 _tmp78_ = vala_ccode_constant_new ("FALSE");
16393 vala_ccode_function_add_return (_tmp77_, (ValaCCodeExpression*) _tmp79_);
16394 _vala_ccode_node_unref0 (_tmp79_);
16395 _tmp80_ = vala_ccode_base_module_get_ccode (self);
16397 vala_ccode_function_close (_tmp81_);
16398 _vala_ccode_node_unref0 (cexp);
16400 has_instance_fields = FALSE;
16402 ValaStruct* _tmp82_;
16403 ValaList* _tmp83_ = NULL;
16411 _tmp83_ = vala_struct_get_fields (_tmp82_);
16414 _tmp85_ = vala_collection_get_size ((ValaCollection*) _tmp84_);
16424 gpointer _tmp92_ = NULL;
16426 ValaField* _tmp93_;
16427 ValaMemberBinding _tmp94_;
16428 ValaMemberBinding _tmp95_;
16429 ValaCCodeExpression* cexp = NULL;
16430 ValaCCodeIdentifier* _tmp96_;
16431 ValaCCodeIdentifier* _tmp97_;
16432 ValaField* _tmp98_;
16433 const gchar* _tmp99_;
16434 const gchar* _tmp100_;
16435 ValaCCodeMemberAccess* _tmp101_;
16436 ValaCCodeExpression* _tmp102_;
16437 ValaCCodeExpression* s1;
16438 ValaCCodeIdentifier* _tmp103_;
16439 ValaCCodeIdentifier* _tmp104_;
16440 ValaField* _tmp105_;
16441 const gchar* _tmp106_;
16442 const gchar* _tmp107_;
16443 ValaCCodeMemberAccess* _tmp108_;
16444 ValaCCodeExpression* _tmp109_;
16445 ValaCCodeExpression* s2;
16446 ValaField* _tmp110_;
16447 ValaDataType* _tmp111_;
16448 ValaDataType* _tmp112_;
16449 ValaDataType* _tmp113_ = NULL;
16450 ValaDataType* variable_type;
16451 gboolean _tmp114_ = FALSE;
16452 ValaField* _tmp115_;
16453 ValaDataType* _tmp116_;
16454 ValaDataType* _tmp117_;
16456 ValaCCodeFunction* _tmp157_;
16457 ValaCCodeFunction* _tmp158_;
16458 ValaCCodeExpression* _tmp159_;
16459 ValaCCodeFunction* _tmp160_;
16460 ValaCCodeFunction* _tmp161_;
16461 ValaCCodeConstant* _tmp162_;
16462 ValaCCodeConstant* _tmp163_;
16463 ValaCCodeFunction* _tmp164_;
16464 ValaCCodeFunction* _tmp165_;
16465 _tmp87_ = _f_index;
16466 _f_index = _tmp87_ + 1;
16467 _tmp88_ = _f_index;
16469 if (!(_tmp88_ < _tmp89_)) {
16473 _tmp91_ = _f_index;
16474 _tmp92_ = vala_list_get (_tmp90_, _tmp91_);
16475 f = (ValaField*) _tmp92_;
16477 _tmp94_ = vala_field_get_binding (_tmp93_);
16479 if (_tmp95_ != VALA_MEMBER_BINDING_INSTANCE) {
16480 _vala_code_node_unref0 (f);
16483 has_instance_fields = TRUE;
16484 _tmp96_ = vala_ccode_identifier_new ("s1");
16487 _tmp99_ = vala_symbol_get_name ((ValaSymbol*) _tmp98_);
16488 _tmp100_ = _tmp99_;
16489 _tmp101_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp97_, _tmp100_);
16490 _tmp102_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp101_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
16491 _vala_ccode_node_unref0 (_tmp97_);
16493 _tmp103_ = vala_ccode_identifier_new ("s2");
16494 _tmp104_ = _tmp103_;
16496 _tmp106_ = vala_symbol_get_name ((ValaSymbol*) _tmp105_);
16497 _tmp107_ = _tmp106_;
16498 _tmp108_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp104_, _tmp107_);
16499 _tmp109_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp108_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
16500 _vala_ccode_node_unref0 (_tmp104_);
16503 _tmp111_ = vala_variable_get_variable_type ((ValaVariable*) _tmp110_);
16504 _tmp112_ = _tmp111_;
16505 _tmp113_ = vala_data_type_copy (_tmp112_);
16506 variable_type = _tmp113_;
16507 vala_ccode_base_module_make_comparable_cexpression (self, &variable_type, &s1, &variable_type, &s2);
16509 _tmp116_ = vala_variable_get_variable_type ((ValaVariable*) _tmp115_);
16510 _tmp117_ = _tmp116_;
16511 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp117_, VALA_TYPE_NULL_TYPE)) {
16512 ValaField* _tmp118_;
16513 ValaDataType* _tmp119_;
16514 ValaDataType* _tmp120_;
16515 ValaDataType* _tmp121_;
16516 gboolean _tmp122_ = FALSE;
16518 _tmp119_ = vala_variable_get_variable_type ((ValaVariable*) _tmp118_);
16519 _tmp120_ = _tmp119_;
16520 _tmp121_ = self->string_type;
16521 _tmp122_ = vala_data_type_compatible (_tmp120_, _tmp121_);
16522 _tmp114_ = _tmp122_;
16526 _tmp123_ = _tmp114_;
16528 ValaCCodeIdentifier* _tmp124_;
16529 ValaCCodeIdentifier* _tmp125_;
16530 ValaCCodeFunctionCall* _tmp126_;
16531 ValaCCodeFunctionCall* _tmp127_;
16532 ValaCCodeFunctionCall* ccall;
16533 ValaCCodeFunctionCall* _tmp128_;
16534 ValaCCodeExpression* _tmp129_;
16535 ValaCCodeFunctionCall* _tmp130_;
16536 ValaCCodeExpression* _tmp131_;
16537 ValaCCodeFunctionCall* _tmp132_;
16538 ValaCCodeExpression* _tmp133_;
16539 _tmp124_ = vala_ccode_identifier_new ("g_strcmp0");
16540 _tmp125_ = _tmp124_;
16541 _tmp126_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp125_);
16542 _tmp127_ = _tmp126_;
16543 _vala_ccode_node_unref0 (_tmp125_);
16547 vala_ccode_function_call_add_argument (_tmp128_, _tmp129_);
16550 vala_ccode_function_call_add_argument (_tmp130_, _tmp131_);
16552 _tmp133_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp132_);
16553 _vala_ccode_node_unref0 (cexp);
16555 _vala_ccode_node_unref0 (ccall);
16557 ValaField* _tmp134_;
16558 ValaDataType* _tmp135_;
16559 ValaDataType* _tmp136_;
16561 _tmp135_ = vala_variable_get_variable_type ((ValaVariable*) _tmp134_);
16562 _tmp136_ = _tmp135_;
16563 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp136_, VALA_TYPE_STRUCT_VALUE_TYPE)) {
16564 ValaField* _tmp137_;
16565 ValaDataType* _tmp138_;
16566 ValaDataType* _tmp139_;
16567 ValaTypeSymbol* _tmp140_;
16568 ValaTypeSymbol* _tmp141_;
16569 gchar* _tmp142_ = NULL;
16571 const gchar* _tmp143_;
16572 ValaCCodeIdentifier* _tmp144_;
16573 ValaCCodeIdentifier* _tmp145_;
16574 ValaCCodeFunctionCall* _tmp146_;
16575 ValaCCodeFunctionCall* _tmp147_;
16576 ValaCCodeFunctionCall* ccall;
16577 ValaCCodeFunctionCall* _tmp148_;
16578 ValaCCodeExpression* _tmp149_;
16579 ValaCCodeFunctionCall* _tmp150_;
16580 ValaCCodeExpression* _tmp151_;
16581 ValaCCodeFunctionCall* _tmp152_;
16582 ValaCCodeUnaryExpression* _tmp153_;
16584 _tmp138_ = vala_variable_get_variable_type ((ValaVariable*) _tmp137_);
16585 _tmp139_ = _tmp138_;
16586 _tmp140_ = vala_data_type_get_data_type (_tmp139_);
16587 _tmp141_ = _tmp140_;
16588 _tmp142_ = vala_ccode_base_module_generate_struct_equal_function (self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp141_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp141_) : NULL);
16589 equalfunc = _tmp142_;
16590 _tmp143_ = equalfunc;
16591 _tmp144_ = vala_ccode_identifier_new (_tmp143_);
16592 _tmp145_ = _tmp144_;
16593 _tmp146_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp145_);
16594 _tmp147_ = _tmp146_;
16595 _vala_ccode_node_unref0 (_tmp145_);
16599 vala_ccode_function_call_add_argument (_tmp148_, _tmp149_);
16602 vala_ccode_function_call_add_argument (_tmp150_, _tmp151_);
16604 _tmp153_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp152_);
16605 _vala_ccode_node_unref0 (cexp);
16606 cexp = (ValaCCodeExpression*) _tmp153_;
16607 _vala_ccode_node_unref0 (ccall);
16608 _g_free0 (equalfunc);
16610 ValaCCodeExpression* _tmp154_;
16611 ValaCCodeExpression* _tmp155_;
16612 ValaCCodeBinaryExpression* _tmp156_;
16615 _tmp156_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp154_, _tmp155_);
16616 _vala_ccode_node_unref0 (cexp);
16617 cexp = (ValaCCodeExpression*) _tmp156_;
16620 _tmp157_ = vala_ccode_base_module_get_ccode (self);
16621 _tmp158_ = _tmp157_;
16623 vala_ccode_function_open_if (_tmp158_, _tmp159_);
16624 _tmp160_ = vala_ccode_base_module_get_ccode (self);
16625 _tmp161_ = _tmp160_;
16626 _tmp162_ = vala_ccode_constant_new ("FALSE");
16627 _tmp163_ = _tmp162_;
16628 vala_ccode_function_add_return (_tmp161_, (ValaCCodeExpression*) _tmp163_);
16629 _vala_ccode_node_unref0 (_tmp163_);
16630 _tmp164_ = vala_ccode_base_module_get_ccode (self);
16631 _tmp165_ = _tmp164_;
16632 vala_ccode_function_close (_tmp165_);
16633 _vala_code_node_unref0 (variable_type);
16634 _vala_ccode_node_unref0 (s2);
16635 _vala_ccode_node_unref0 (s1);
16636 _vala_ccode_node_unref0 (cexp);
16637 _vala_code_node_unref0 (f);
16639 _vala_iterable_unref0 (_f_list);
16641 _tmp166_ = has_instance_fields;
16643 ValaStruct* _tmp167_;
16644 gboolean _tmp168_ = FALSE;
16646 _tmp168_ = vala_struct_is_simple_type (_tmp167_);
16648 ValaCCodeIdentifier* _tmp169_;
16649 ValaCCodeIdentifier* _tmp170_;
16650 ValaCCodeUnaryExpression* _tmp171_;
16651 ValaCCodeUnaryExpression* _tmp172_;
16652 ValaCCodeIdentifier* _tmp173_;
16653 ValaCCodeIdentifier* _tmp174_;
16654 ValaCCodeUnaryExpression* _tmp175_;
16655 ValaCCodeUnaryExpression* _tmp176_;
16656 ValaCCodeBinaryExpression* _tmp177_;
16657 ValaCCodeBinaryExpression* _tmp178_;
16658 ValaCCodeBinaryExpression* cexp;
16659 ValaCCodeFunction* _tmp179_;
16660 ValaCCodeFunction* _tmp180_;
16661 ValaCCodeBinaryExpression* _tmp181_;
16662 _tmp169_ = vala_ccode_identifier_new ("s1");
16663 _tmp170_ = _tmp169_;
16664 _tmp171_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp170_);
16665 _tmp172_ = _tmp171_;
16666 _tmp173_ = vala_ccode_identifier_new ("s2");
16667 _tmp174_ = _tmp173_;
16668 _tmp175_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp174_);
16669 _tmp176_ = _tmp175_;
16670 _tmp177_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp172_, (ValaCCodeExpression*) _tmp176_);
16671 _tmp178_ = _tmp177_;
16672 _vala_ccode_node_unref0 (_tmp176_);
16673 _vala_ccode_node_unref0 (_tmp174_);
16674 _vala_ccode_node_unref0 (_tmp172_);
16675 _vala_ccode_node_unref0 (_tmp170_);
16677 _tmp179_ = vala_ccode_base_module_get_ccode (self);
16678 _tmp180_ = _tmp179_;
16680 vala_ccode_function_add_return (_tmp180_, (ValaCCodeExpression*) _tmp181_);
16681 _vala_ccode_node_unref0 (cexp);
16683 ValaCCodeFunction* _tmp182_;
16684 ValaCCodeFunction* _tmp183_;
16685 ValaCCodeConstant* _tmp184_;
16686 ValaCCodeConstant* _tmp185_;
16687 _tmp182_ = vala_ccode_base_module_get_ccode (self);
16688 _tmp183_ = _tmp182_;
16689 _tmp184_ = vala_ccode_constant_new ("FALSE");
16690 _tmp185_ = _tmp184_;
16691 vala_ccode_function_add_return (_tmp183_, (ValaCCodeExpression*) _tmp185_);
16692 _vala_ccode_node_unref0 (_tmp185_);
16695 ValaCCodeFunction* _tmp186_;
16696 ValaCCodeFunction* _tmp187_;
16697 ValaCCodeConstant* _tmp188_;
16698 ValaCCodeConstant* _tmp189_;
16699 _tmp186_ = vala_ccode_base_module_get_ccode (self);
16700 _tmp187_ = _tmp186_;
16701 _tmp188_ = vala_ccode_constant_new ("TRUE");
16702 _tmp189_ = _tmp188_;
16703 vala_ccode_function_add_return (_tmp187_, (ValaCCodeExpression*) _tmp189_);
16704 _vala_ccode_node_unref0 (_tmp189_);
16706 vala_ccode_base_module_pop_function (self);
16707 _tmp190_ = self->cfile;
16708 _tmp191_ = function;
16709 vala_ccode_file_add_function_declaration (_tmp190_, _tmp191_);
16710 _tmp192_ = self->cfile;
16711 _tmp193_ = function;
16712 vala_ccode_file_add_function (_tmp192_, _tmp193_);
16713 result = equal_func;
16714 _vala_ccode_node_unref0 (function);
16719 static gchar* vala_ccode_base_module_generate_numeric_equal_function (ValaCCodeBaseModule* self, ValaTypeSymbol* sym) {
16720 gchar* result = NULL;
16721 ValaTypeSymbol* _tmp0_;
16722 gchar* _tmp1_ = NULL;
16724 gchar* _tmp3_ = NULL;
16727 const gchar* _tmp5_;
16728 gboolean _tmp6_ = FALSE;
16729 const gchar* _tmp7_;
16730 ValaCCodeFunction* _tmp8_;
16731 ValaCCodeFunction* function;
16732 ValaCCodeFunction* _tmp9_;
16733 ValaCCodeFunction* _tmp10_;
16734 ValaTypeSymbol* _tmp11_;
16735 gchar* _tmp12_ = NULL;
16741 ValaCCodeParameter* _tmp18_;
16742 ValaCCodeParameter* _tmp19_;
16743 ValaCCodeFunction* _tmp20_;
16744 ValaTypeSymbol* _tmp21_;
16745 gchar* _tmp22_ = NULL;
16751 ValaCCodeParameter* _tmp28_;
16752 ValaCCodeParameter* _tmp29_;
16753 ValaCCodeFunction* _tmp30_;
16754 ValaCCodeFile* _tmp88_;
16755 ValaCCodeFunction* _tmp89_;
16756 ValaCCodeFile* _tmp90_;
16757 ValaCCodeFunction* _tmp91_;
16758 g_return_val_if_fail (self != NULL, NULL);
16759 g_return_val_if_fail (sym != NULL, NULL);
16761 _tmp1_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp0_);
16763 _tmp3_ = g_strdup_printf ("_%sequal", _tmp2_);
16766 equal_func = _tmp4_;
16767 _tmp5_ = equal_func;
16768 _tmp6_ = vala_ccode_base_module_add_wrapper (self, _tmp5_);
16770 result = equal_func;
16773 _tmp7_ = equal_func;
16774 _tmp8_ = vala_ccode_function_new (_tmp7_, "gboolean");
16777 vala_ccode_function_set_modifiers (_tmp9_, VALA_CCODE_MODIFIERS_STATIC);
16778 _tmp10_ = function;
16780 _tmp12_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp11_);
16782 _tmp14_ = g_strconcat ("const ", _tmp13_, NULL);
16784 _tmp16_ = g_strconcat (_tmp15_, "*", NULL);
16786 _tmp18_ = vala_ccode_parameter_new ("s1", _tmp17_);
16788 vala_ccode_function_add_parameter (_tmp10_, _tmp19_);
16789 _vala_ccode_node_unref0 (_tmp19_);
16790 _g_free0 (_tmp17_);
16791 _g_free0 (_tmp15_);
16792 _g_free0 (_tmp13_);
16793 _tmp20_ = function;
16795 _tmp22_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp21_);
16797 _tmp24_ = g_strconcat ("const ", _tmp23_, NULL);
16799 _tmp26_ = g_strconcat (_tmp25_, "*", NULL);
16801 _tmp28_ = vala_ccode_parameter_new ("s2", _tmp27_);
16803 vala_ccode_function_add_parameter (_tmp20_, _tmp29_);
16804 _vala_ccode_node_unref0 (_tmp29_);
16805 _g_free0 (_tmp27_);
16806 _g_free0 (_tmp25_);
16807 _g_free0 (_tmp23_);
16808 _tmp30_ = function;
16809 vala_ccode_base_module_push_function (self, _tmp30_);
16811 ValaCCodeIdentifier* _tmp31_;
16812 ValaCCodeIdentifier* _tmp32_;
16813 ValaCCodeIdentifier* _tmp33_;
16814 ValaCCodeIdentifier* _tmp34_;
16815 ValaCCodeBinaryExpression* _tmp35_;
16816 ValaCCodeBinaryExpression* _tmp36_;
16817 ValaCCodeBinaryExpression* cexp;
16818 ValaCCodeFunction* _tmp37_;
16819 ValaCCodeFunction* _tmp38_;
16820 ValaCCodeBinaryExpression* _tmp39_;
16821 ValaCCodeFunction* _tmp40_;
16822 ValaCCodeFunction* _tmp41_;
16823 ValaCCodeConstant* _tmp42_;
16824 ValaCCodeConstant* _tmp43_;
16825 ValaCCodeFunction* _tmp44_;
16826 ValaCCodeFunction* _tmp45_;
16827 _tmp31_ = vala_ccode_identifier_new ("s1");
16829 _tmp33_ = vala_ccode_identifier_new ("s2");
16831 _tmp35_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp32_, (ValaCCodeExpression*) _tmp34_);
16833 _vala_ccode_node_unref0 (_tmp34_);
16834 _vala_ccode_node_unref0 (_tmp32_);
16836 _tmp37_ = vala_ccode_base_module_get_ccode (self);
16839 vala_ccode_function_open_if (_tmp38_, (ValaCCodeExpression*) _tmp39_);
16840 _tmp40_ = vala_ccode_base_module_get_ccode (self);
16842 _tmp42_ = vala_ccode_constant_new ("TRUE");
16844 vala_ccode_function_add_return (_tmp41_, (ValaCCodeExpression*) _tmp43_);
16845 _vala_ccode_node_unref0 (_tmp43_);
16846 _tmp44_ = vala_ccode_base_module_get_ccode (self);
16848 vala_ccode_function_close (_tmp45_);
16849 _vala_ccode_node_unref0 (cexp);
16852 ValaCCodeIdentifier* _tmp46_;
16853 ValaCCodeIdentifier* _tmp47_;
16854 ValaCCodeConstant* _tmp48_;
16855 ValaCCodeConstant* _tmp49_;
16856 ValaCCodeBinaryExpression* _tmp50_;
16857 ValaCCodeBinaryExpression* _tmp51_;
16858 ValaCCodeBinaryExpression* cexp;
16859 ValaCCodeFunction* _tmp52_;
16860 ValaCCodeFunction* _tmp53_;
16861 ValaCCodeBinaryExpression* _tmp54_;
16862 ValaCCodeFunction* _tmp55_;
16863 ValaCCodeFunction* _tmp56_;
16864 ValaCCodeConstant* _tmp57_;
16865 ValaCCodeConstant* _tmp58_;
16866 ValaCCodeFunction* _tmp59_;
16867 ValaCCodeFunction* _tmp60_;
16868 ValaCCodeIdentifier* _tmp61_;
16869 ValaCCodeIdentifier* _tmp62_;
16870 ValaCCodeConstant* _tmp63_;
16871 ValaCCodeConstant* _tmp64_;
16872 ValaCCodeBinaryExpression* _tmp65_;
16873 ValaCCodeFunction* _tmp66_;
16874 ValaCCodeFunction* _tmp67_;
16875 ValaCCodeBinaryExpression* _tmp68_;
16876 ValaCCodeFunction* _tmp69_;
16877 ValaCCodeFunction* _tmp70_;
16878 ValaCCodeConstant* _tmp71_;
16879 ValaCCodeConstant* _tmp72_;
16880 ValaCCodeFunction* _tmp73_;
16881 ValaCCodeFunction* _tmp74_;
16882 _tmp46_ = vala_ccode_identifier_new ("s1");
16884 _tmp48_ = vala_ccode_constant_new ("NULL");
16886 _tmp50_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp47_, (ValaCCodeExpression*) _tmp49_);
16888 _vala_ccode_node_unref0 (_tmp49_);
16889 _vala_ccode_node_unref0 (_tmp47_);
16891 _tmp52_ = vala_ccode_base_module_get_ccode (self);
16894 vala_ccode_function_open_if (_tmp53_, (ValaCCodeExpression*) _tmp54_);
16895 _tmp55_ = vala_ccode_base_module_get_ccode (self);
16897 _tmp57_ = vala_ccode_constant_new ("FALSE");
16899 vala_ccode_function_add_return (_tmp56_, (ValaCCodeExpression*) _tmp58_);
16900 _vala_ccode_node_unref0 (_tmp58_);
16901 _tmp59_ = vala_ccode_base_module_get_ccode (self);
16903 vala_ccode_function_close (_tmp60_);
16904 _tmp61_ = vala_ccode_identifier_new ("s2");
16906 _tmp63_ = vala_ccode_constant_new ("NULL");
16908 _tmp65_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp62_, (ValaCCodeExpression*) _tmp64_);
16909 _vala_ccode_node_unref0 (cexp);
16911 _vala_ccode_node_unref0 (_tmp64_);
16912 _vala_ccode_node_unref0 (_tmp62_);
16913 _tmp66_ = vala_ccode_base_module_get_ccode (self);
16916 vala_ccode_function_open_if (_tmp67_, (ValaCCodeExpression*) _tmp68_);
16917 _tmp69_ = vala_ccode_base_module_get_ccode (self);
16919 _tmp71_ = vala_ccode_constant_new ("FALSE");
16921 vala_ccode_function_add_return (_tmp70_, (ValaCCodeExpression*) _tmp72_);
16922 _vala_ccode_node_unref0 (_tmp72_);
16923 _tmp73_ = vala_ccode_base_module_get_ccode (self);
16925 vala_ccode_function_close (_tmp74_);
16926 _vala_ccode_node_unref0 (cexp);
16929 ValaCCodeIdentifier* _tmp75_;
16930 ValaCCodeIdentifier* _tmp76_;
16931 ValaCCodeUnaryExpression* _tmp77_;
16932 ValaCCodeUnaryExpression* _tmp78_;
16933 ValaCCodeIdentifier* _tmp79_;
16934 ValaCCodeIdentifier* _tmp80_;
16935 ValaCCodeUnaryExpression* _tmp81_;
16936 ValaCCodeUnaryExpression* _tmp82_;
16937 ValaCCodeBinaryExpression* _tmp83_;
16938 ValaCCodeBinaryExpression* _tmp84_;
16939 ValaCCodeBinaryExpression* cexp;
16940 ValaCCodeFunction* _tmp85_;
16941 ValaCCodeFunction* _tmp86_;
16942 ValaCCodeBinaryExpression* _tmp87_;
16943 _tmp75_ = vala_ccode_identifier_new ("s1");
16945 _tmp77_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp76_);
16947 _tmp79_ = vala_ccode_identifier_new ("s2");
16949 _tmp81_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp80_);
16951 _tmp83_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp78_, (ValaCCodeExpression*) _tmp82_);
16953 _vala_ccode_node_unref0 (_tmp82_);
16954 _vala_ccode_node_unref0 (_tmp80_);
16955 _vala_ccode_node_unref0 (_tmp78_);
16956 _vala_ccode_node_unref0 (_tmp76_);
16958 _tmp85_ = vala_ccode_base_module_get_ccode (self);
16961 vala_ccode_function_add_return (_tmp86_, (ValaCCodeExpression*) _tmp87_);
16962 _vala_ccode_node_unref0 (cexp);
16964 vala_ccode_base_module_pop_function (self);
16965 _tmp88_ = self->cfile;
16966 _tmp89_ = function;
16967 vala_ccode_file_add_function_declaration (_tmp88_, _tmp89_);
16968 _tmp90_ = self->cfile;
16969 _tmp91_ = function;
16970 vala_ccode_file_add_function (_tmp90_, _tmp91_);
16971 result = equal_func;
16972 _vala_ccode_node_unref0 (function);
16977 static gchar* vala_ccode_base_module_generate_struct_dup_wrapper (ValaCCodeBaseModule* self, ValaValueType* value_type) {
16978 gchar* result = NULL;
16979 ValaValueType* _tmp0_;
16980 ValaTypeSymbol* _tmp1_;
16981 ValaTypeSymbol* _tmp2_;
16982 gchar* _tmp3_ = NULL;
16984 gchar* _tmp5_ = NULL;
16987 const gchar* _tmp7_;
16988 gboolean _tmp8_ = FALSE;
16989 const gchar* _tmp9_;
16990 ValaValueType* _tmp10_;
16991 gchar* _tmp11_ = NULL;
16993 ValaCCodeFunction* _tmp13_;
16994 ValaCCodeFunction* _tmp14_;
16995 ValaCCodeFunction* function;
16996 ValaCCodeFunction* _tmp15_;
16997 ValaCCodeFunction* _tmp16_;
16998 ValaValueType* _tmp17_;
16999 gchar* _tmp18_ = NULL;
17001 ValaCCodeParameter* _tmp20_;
17002 ValaCCodeParameter* _tmp21_;
17003 ValaCCodeFunction* _tmp22_;
17004 ValaValueType* _tmp23_;
17005 ValaTypeSymbol* _tmp24_;
17006 ValaTypeSymbol* _tmp25_;
17007 ValaStruct* _tmp26_;
17008 ValaCCodeFile* _tmp127_;
17009 ValaCCodeFunction* _tmp128_;
17010 ValaCCodeFile* _tmp129_;
17011 ValaCCodeFunction* _tmp130_;
17012 g_return_val_if_fail (self != NULL, NULL);
17013 g_return_val_if_fail (value_type != NULL, NULL);
17014 _tmp0_ = value_type;
17015 _tmp1_ = vala_value_type_get_type_symbol (_tmp0_);
17017 _tmp3_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp2_);
17019 _tmp5_ = g_strdup_printf ("_%sdup", _tmp4_);
17024 _tmp8_ = vala_ccode_base_module_add_wrapper (self, _tmp7_);
17030 _tmp10_ = value_type;
17031 _tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_);
17033 _tmp13_ = vala_ccode_function_new (_tmp9_, _tmp12_);
17035 _g_free0 (_tmp12_);
17036 function = _tmp14_;
17037 _tmp15_ = function;
17038 vala_ccode_function_set_modifiers (_tmp15_, VALA_CCODE_MODIFIERS_STATIC);
17039 _tmp16_ = function;
17040 _tmp17_ = value_type;
17041 _tmp18_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp17_);
17043 _tmp20_ = vala_ccode_parameter_new ("self", _tmp19_);
17045 vala_ccode_function_add_parameter (_tmp16_, _tmp21_);
17046 _vala_ccode_node_unref0 (_tmp21_);
17047 _g_free0 (_tmp19_);
17048 _tmp22_ = function;
17049 vala_ccode_base_module_push_function (self, _tmp22_);
17050 _tmp23_ = value_type;
17051 _tmp24_ = vala_value_type_get_type_symbol (_tmp23_);
17053 _tmp26_ = self->gvalue_type;
17054 if (_tmp25_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
17055 ValaCCodeIdentifier* _tmp27_;
17056 ValaCCodeIdentifier* _tmp28_;
17057 ValaCCodeFunctionCall* _tmp29_;
17058 ValaCCodeFunctionCall* _tmp30_;
17059 ValaCCodeFunctionCall* dup_call;
17060 ValaCCodeFunctionCall* _tmp31_;
17061 ValaCCodeIdentifier* _tmp32_;
17062 ValaCCodeIdentifier* _tmp33_;
17063 ValaCCodeFunctionCall* _tmp34_;
17064 ValaCCodeIdentifier* _tmp35_;
17065 ValaCCodeIdentifier* _tmp36_;
17066 ValaCCodeFunction* _tmp37_;
17067 ValaCCodeFunction* _tmp38_;
17068 ValaCCodeFunctionCall* _tmp39_;
17069 _tmp27_ = vala_ccode_identifier_new ("g_boxed_copy");
17071 _tmp29_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp28_);
17073 _vala_ccode_node_unref0 (_tmp28_);
17074 dup_call = _tmp30_;
17075 _tmp31_ = dup_call;
17076 _tmp32_ = vala_ccode_identifier_new ("G_TYPE_VALUE");
17078 vala_ccode_function_call_add_argument (_tmp31_, (ValaCCodeExpression*) _tmp33_);
17079 _vala_ccode_node_unref0 (_tmp33_);
17080 _tmp34_ = dup_call;
17081 _tmp35_ = vala_ccode_identifier_new ("self");
17083 vala_ccode_function_call_add_argument (_tmp34_, (ValaCCodeExpression*) _tmp36_);
17084 _vala_ccode_node_unref0 (_tmp36_);
17085 _tmp37_ = vala_ccode_base_module_get_ccode (self);
17087 _tmp39_ = dup_call;
17088 vala_ccode_function_add_return (_tmp38_, (ValaCCodeExpression*) _tmp39_);
17089 _vala_ccode_node_unref0 (dup_call);
17091 ValaCCodeFunction* _tmp40_;
17092 ValaCCodeFunction* _tmp41_;
17093 ValaValueType* _tmp42_;
17094 gchar* _tmp43_ = NULL;
17096 ValaCCodeVariableDeclarator* _tmp45_;
17097 ValaCCodeVariableDeclarator* _tmp46_;
17098 ValaCCodeIdentifier* _tmp47_;
17099 ValaCCodeIdentifier* _tmp48_;
17100 ValaCCodeFunctionCall* _tmp49_;
17101 ValaCCodeFunctionCall* _tmp50_;
17102 ValaCCodeFunctionCall* creation_call;
17103 ValaCCodeFunctionCall* _tmp51_;
17104 ValaValueType* _tmp52_;
17105 ValaTypeSymbol* _tmp53_;
17106 ValaTypeSymbol* _tmp54_;
17107 gchar* _tmp55_ = NULL;
17109 ValaCCodeConstant* _tmp57_;
17110 ValaCCodeConstant* _tmp58_;
17111 ValaCCodeFunctionCall* _tmp59_;
17112 ValaCCodeConstant* _tmp60_;
17113 ValaCCodeConstant* _tmp61_;
17114 ValaCCodeFunction* _tmp62_;
17115 ValaCCodeFunction* _tmp63_;
17116 ValaCCodeIdentifier* _tmp64_;
17117 ValaCCodeIdentifier* _tmp65_;
17118 ValaCCodeFunctionCall* _tmp66_;
17119 ValaValueType* _tmp67_;
17120 ValaTypeSymbol* _tmp68_;
17121 ValaTypeSymbol* _tmp69_;
17122 ValaStruct* _tmp70_;
17124 gboolean _tmp71_ = FALSE;
17125 ValaStruct* _tmp72_;
17127 ValaCCodeFunction* _tmp123_;
17128 ValaCCodeFunction* _tmp124_;
17129 ValaCCodeIdentifier* _tmp125_;
17130 ValaCCodeIdentifier* _tmp126_;
17131 _tmp40_ = vala_ccode_base_module_get_ccode (self);
17133 _tmp42_ = value_type;
17134 _tmp43_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp42_);
17136 _tmp45_ = vala_ccode_variable_declarator_new ("dup", NULL, NULL);
17138 vala_ccode_function_add_declaration (_tmp41_, _tmp44_, (ValaCCodeDeclarator*) _tmp46_, 0);
17139 _vala_ccode_node_unref0 (_tmp46_);
17140 _g_free0 (_tmp44_);
17141 _tmp47_ = vala_ccode_identifier_new ("g_new0");
17143 _tmp49_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp48_);
17145 _vala_ccode_node_unref0 (_tmp48_);
17146 creation_call = _tmp50_;
17147 _tmp51_ = creation_call;
17148 _tmp52_ = value_type;
17149 _tmp53_ = vala_data_type_get_data_type ((ValaDataType*) _tmp52_);
17151 _tmp55_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp54_);
17153 _tmp57_ = vala_ccode_constant_new (_tmp56_);
17155 vala_ccode_function_call_add_argument (_tmp51_, (ValaCCodeExpression*) _tmp58_);
17156 _vala_ccode_node_unref0 (_tmp58_);
17157 _g_free0 (_tmp56_);
17158 _tmp59_ = creation_call;
17159 _tmp60_ = vala_ccode_constant_new ("1");
17161 vala_ccode_function_call_add_argument (_tmp59_, (ValaCCodeExpression*) _tmp61_);
17162 _vala_ccode_node_unref0 (_tmp61_);
17163 _tmp62_ = vala_ccode_base_module_get_ccode (self);
17165 _tmp64_ = vala_ccode_identifier_new ("dup");
17167 _tmp66_ = creation_call;
17168 vala_ccode_function_add_assignment (_tmp63_, (ValaCCodeExpression*) _tmp65_, (ValaCCodeExpression*) _tmp66_);
17169 _vala_ccode_node_unref0 (_tmp65_);
17170 _tmp67_ = value_type;
17171 _tmp68_ = vala_data_type_get_data_type ((ValaDataType*) _tmp67_);
17173 _tmp70_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp69_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp69_) : NULL);
17176 if (_tmp72_ != NULL) {
17177 ValaStruct* _tmp73_;
17178 gboolean _tmp74_ = FALSE;
17180 _tmp74_ = vala_struct_is_disposable (_tmp73_);
17187 ValaStruct* _tmp76_;
17188 gboolean _tmp77_ = FALSE;
17189 ValaStruct* _tmp79_;
17190 gchar* _tmp80_ = NULL;
17192 ValaCCodeIdentifier* _tmp82_;
17193 ValaCCodeIdentifier* _tmp83_;
17194 ValaCCodeFunctionCall* _tmp84_;
17195 ValaCCodeFunctionCall* _tmp85_;
17196 ValaCCodeFunctionCall* copy_call;
17197 ValaCCodeFunctionCall* _tmp86_;
17198 ValaCCodeIdentifier* _tmp87_;
17199 ValaCCodeIdentifier* _tmp88_;
17200 ValaCCodeFunctionCall* _tmp89_;
17201 ValaCCodeIdentifier* _tmp90_;
17202 ValaCCodeIdentifier* _tmp91_;
17203 ValaCCodeFunction* _tmp92_;
17204 ValaCCodeFunction* _tmp93_;
17205 ValaCCodeFunctionCall* _tmp94_;
17207 _tmp77_ = vala_ccode_base_module_get_ccode_has_copy_function (_tmp76_);
17209 ValaStruct* _tmp78_;
17211 vala_ccode_base_module_generate_struct_copy_function (self, _tmp78_);
17214 _tmp80_ = vala_ccode_base_module_get_ccode_copy_function ((ValaTypeSymbol*) _tmp79_);
17216 _tmp82_ = vala_ccode_identifier_new (_tmp81_);
17218 _tmp84_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp83_);
17220 _vala_ccode_node_unref0 (_tmp83_);
17221 _g_free0 (_tmp81_);
17222 copy_call = _tmp85_;
17223 _tmp86_ = copy_call;
17224 _tmp87_ = vala_ccode_identifier_new ("self");
17226 vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp88_);
17227 _vala_ccode_node_unref0 (_tmp88_);
17228 _tmp89_ = copy_call;
17229 _tmp90_ = vala_ccode_identifier_new ("dup");
17231 vala_ccode_function_call_add_argument (_tmp89_, (ValaCCodeExpression*) _tmp91_);
17232 _vala_ccode_node_unref0 (_tmp91_);
17233 _tmp92_ = vala_ccode_base_module_get_ccode (self);
17235 _tmp94_ = copy_call;
17236 vala_ccode_function_add_expression (_tmp93_, (ValaCCodeExpression*) _tmp94_);
17237 _vala_ccode_node_unref0 (copy_call);
17239 ValaCCodeFile* _tmp95_;
17240 ValaCCodeIdentifier* _tmp96_;
17241 ValaCCodeIdentifier* _tmp97_;
17242 ValaCCodeFunctionCall* _tmp98_;
17243 ValaCCodeFunctionCall* _tmp99_;
17244 ValaCCodeFunctionCall* sizeof_call;
17245 ValaCCodeFunctionCall* _tmp100_;
17246 ValaValueType* _tmp101_;
17247 ValaTypeSymbol* _tmp102_;
17248 ValaTypeSymbol* _tmp103_;
17249 gchar* _tmp104_ = NULL;
17251 ValaCCodeConstant* _tmp106_;
17252 ValaCCodeConstant* _tmp107_;
17253 ValaCCodeIdentifier* _tmp108_;
17254 ValaCCodeIdentifier* _tmp109_;
17255 ValaCCodeFunctionCall* _tmp110_;
17256 ValaCCodeFunctionCall* _tmp111_;
17257 ValaCCodeFunctionCall* copy_call;
17258 ValaCCodeFunctionCall* _tmp112_;
17259 ValaCCodeIdentifier* _tmp113_;
17260 ValaCCodeIdentifier* _tmp114_;
17261 ValaCCodeFunctionCall* _tmp115_;
17262 ValaCCodeIdentifier* _tmp116_;
17263 ValaCCodeIdentifier* _tmp117_;
17264 ValaCCodeFunctionCall* _tmp118_;
17265 ValaCCodeFunctionCall* _tmp119_;
17266 ValaCCodeFunction* _tmp120_;
17267 ValaCCodeFunction* _tmp121_;
17268 ValaCCodeFunctionCall* _tmp122_;
17269 _tmp95_ = self->cfile;
17270 vala_ccode_file_add_include (_tmp95_, "string.h", FALSE);
17271 _tmp96_ = vala_ccode_identifier_new ("sizeof");
17273 _tmp98_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp97_);
17275 _vala_ccode_node_unref0 (_tmp97_);
17276 sizeof_call = _tmp99_;
17277 _tmp100_ = sizeof_call;
17278 _tmp101_ = value_type;
17279 _tmp102_ = vala_data_type_get_data_type ((ValaDataType*) _tmp101_);
17280 _tmp103_ = _tmp102_;
17281 _tmp104_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp103_);
17282 _tmp105_ = _tmp104_;
17283 _tmp106_ = vala_ccode_constant_new (_tmp105_);
17284 _tmp107_ = _tmp106_;
17285 vala_ccode_function_call_add_argument (_tmp100_, (ValaCCodeExpression*) _tmp107_);
17286 _vala_ccode_node_unref0 (_tmp107_);
17287 _g_free0 (_tmp105_);
17288 _tmp108_ = vala_ccode_identifier_new ("memcpy");
17289 _tmp109_ = _tmp108_;
17290 _tmp110_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp109_);
17291 _tmp111_ = _tmp110_;
17292 _vala_ccode_node_unref0 (_tmp109_);
17293 copy_call = _tmp111_;
17294 _tmp112_ = copy_call;
17295 _tmp113_ = vala_ccode_identifier_new ("dup");
17296 _tmp114_ = _tmp113_;
17297 vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) _tmp114_);
17298 _vala_ccode_node_unref0 (_tmp114_);
17299 _tmp115_ = copy_call;
17300 _tmp116_ = vala_ccode_identifier_new ("self");
17301 _tmp117_ = _tmp116_;
17302 vala_ccode_function_call_add_argument (_tmp115_, (ValaCCodeExpression*) _tmp117_);
17303 _vala_ccode_node_unref0 (_tmp117_);
17304 _tmp118_ = copy_call;
17305 _tmp119_ = sizeof_call;
17306 vala_ccode_function_call_add_argument (_tmp118_, (ValaCCodeExpression*) _tmp119_);
17307 _tmp120_ = vala_ccode_base_module_get_ccode (self);
17308 _tmp121_ = _tmp120_;
17309 _tmp122_ = copy_call;
17310 vala_ccode_function_add_expression (_tmp121_, (ValaCCodeExpression*) _tmp122_);
17311 _vala_ccode_node_unref0 (copy_call);
17312 _vala_ccode_node_unref0 (sizeof_call);
17314 _tmp123_ = vala_ccode_base_module_get_ccode (self);
17315 _tmp124_ = _tmp123_;
17316 _tmp125_ = vala_ccode_identifier_new ("dup");
17317 _tmp126_ = _tmp125_;
17318 vala_ccode_function_add_return (_tmp124_, (ValaCCodeExpression*) _tmp126_);
17319 _vala_ccode_node_unref0 (_tmp126_);
17320 _vala_code_node_unref0 (st);
17321 _vala_ccode_node_unref0 (creation_call);
17323 vala_ccode_base_module_pop_function (self);
17324 _tmp127_ = self->cfile;
17325 _tmp128_ = function;
17326 vala_ccode_file_add_function_declaration (_tmp127_, _tmp128_);
17327 _tmp129_ = self->cfile;
17328 _tmp130_ = function;
17329 vala_ccode_file_add_function (_tmp129_, _tmp130_);
17331 _vala_ccode_node_unref0 (function);
17336 gchar* vala_ccode_base_module_generate_dup_func_wrapper (ValaCCodeBaseModule* self, ValaDataType* type) {
17337 gchar* result = NULL;
17338 ValaDataType* _tmp0_;
17339 ValaTypeSymbol* _tmp1_;
17340 ValaTypeSymbol* _tmp2_;
17341 gchar* _tmp3_ = NULL;
17343 gchar* _tmp5_ = NULL;
17345 gchar* destroy_func;
17346 const gchar* _tmp7_;
17347 gboolean _tmp8_ = FALSE;
17348 const gchar* _tmp9_;
17349 ValaDataType* _tmp10_;
17350 gchar* _tmp11_ = NULL;
17352 ValaCCodeFunction* _tmp13_;
17353 ValaCCodeFunction* _tmp14_;
17354 ValaCCodeFunction* function;
17355 ValaCCodeFunction* _tmp15_;
17356 ValaCCodeFunction* _tmp16_;
17357 ValaDataType* _tmp17_;
17358 gchar* _tmp18_ = NULL;
17360 ValaCCodeParameter* _tmp20_;
17361 ValaCCodeParameter* _tmp21_;
17362 ValaCCodeFunction* _tmp22_;
17363 ValaDataType* _tmp23_;
17364 ValaTypeSymbol* _tmp24_;
17365 ValaTypeSymbol* _tmp25_;
17366 ValaClass* _tmp26_;
17368 gboolean _tmp27_ = FALSE;
17369 ValaClass* _tmp28_;
17371 ValaCCodeIdentifier* _tmp32_;
17372 ValaCCodeIdentifier* _tmp33_;
17373 ValaCCodeFunctionCall* _tmp34_;
17374 ValaCCodeFunctionCall* _tmp35_;
17375 ValaCCodeFunctionCall* free_call;
17376 ValaCCodeFunctionCall* _tmp36_;
17377 ValaClass* _tmp37_;
17378 gchar* _tmp38_ = NULL;
17380 ValaCCodeIdentifier* _tmp40_;
17381 ValaCCodeIdentifier* _tmp41_;
17382 ValaCCodeFunctionCall* _tmp42_;
17383 ValaCCodeIdentifier* _tmp43_;
17384 ValaCCodeIdentifier* _tmp44_;
17385 ValaCCodeFunction* _tmp45_;
17386 ValaCCodeFunction* _tmp46_;
17387 ValaCCodeFunctionCall* _tmp47_;
17388 ValaCCodeFile* _tmp48_;
17389 ValaCCodeFunction* _tmp49_;
17390 ValaCCodeFile* _tmp50_;
17391 ValaCCodeFunction* _tmp51_;
17392 g_return_val_if_fail (self != NULL, NULL);
17393 g_return_val_if_fail (type != NULL, NULL);
17395 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
17397 _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
17399 _tmp5_ = g_strdup_printf ("_vala_%s_copy", _tmp4_);
17402 destroy_func = _tmp6_;
17403 _tmp7_ = destroy_func;
17404 _tmp8_ = vala_ccode_base_module_add_wrapper (self, _tmp7_);
17406 result = destroy_func;
17409 _tmp9_ = destroy_func;
17411 _tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_);
17413 _tmp13_ = vala_ccode_function_new (_tmp9_, _tmp12_);
17415 _g_free0 (_tmp12_);
17416 function = _tmp14_;
17417 _tmp15_ = function;
17418 vala_ccode_function_set_modifiers (_tmp15_, VALA_CCODE_MODIFIERS_STATIC);
17419 _tmp16_ = function;
17421 _tmp18_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp17_);
17423 _tmp20_ = vala_ccode_parameter_new ("self", _tmp19_);
17425 vala_ccode_function_add_parameter (_tmp16_, _tmp21_);
17426 _vala_ccode_node_unref0 (_tmp21_);
17427 _g_free0 (_tmp19_);
17428 _tmp22_ = function;
17429 vala_ccode_base_module_push_function (self, _tmp22_);
17431 _tmp24_ = vala_data_type_get_data_type (_tmp23_);
17433 _tmp26_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp25_) : NULL);
17436 if (_tmp28_ != NULL) {
17437 ValaClass* _tmp29_;
17438 gboolean _tmp30_ = FALSE;
17440 _tmp30_ = vala_ccode_base_module_get_ccode_is_gboxed ((ValaTypeSymbol*) _tmp29_);
17446 _vala_assert (_tmp31_, "cl != null && get_ccode_is_gboxed (cl)");
17447 _tmp32_ = vala_ccode_identifier_new ("g_boxed_copy");
17449 _tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_);
17451 _vala_ccode_node_unref0 (_tmp33_);
17452 free_call = _tmp35_;
17453 _tmp36_ = free_call;
17455 _tmp38_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp37_);
17457 _tmp40_ = vala_ccode_identifier_new (_tmp39_);
17459 vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp41_);
17460 _vala_ccode_node_unref0 (_tmp41_);
17461 _g_free0 (_tmp39_);
17462 _tmp42_ = free_call;
17463 _tmp43_ = vala_ccode_identifier_new ("self");
17465 vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp44_);
17466 _vala_ccode_node_unref0 (_tmp44_);
17467 _tmp45_ = vala_ccode_base_module_get_ccode (self);
17469 _tmp47_ = free_call;
17470 vala_ccode_function_add_return (_tmp46_, (ValaCCodeExpression*) _tmp47_);
17471 vala_ccode_base_module_pop_function (self);
17472 _tmp48_ = self->cfile;
17473 _tmp49_ = function;
17474 vala_ccode_file_add_function_declaration (_tmp48_, _tmp49_);
17475 _tmp50_ = self->cfile;
17476 _tmp51_ = function;
17477 vala_ccode_file_add_function (_tmp50_, _tmp51_);
17478 result = destroy_func;
17479 _vala_ccode_node_unref0 (free_call);
17480 _vala_code_node_unref0 (cl);
17481 _vala_ccode_node_unref0 (function);
17486 gchar* vala_ccode_base_module_generate_free_function_address_of_wrapper (ValaCCodeBaseModule* self, ValaDataType* type) {
17487 gchar* result = NULL;
17488 ValaDataType* _tmp0_;
17489 ValaTypeSymbol* _tmp1_;
17490 ValaTypeSymbol* _tmp2_;
17491 gchar* _tmp3_ = NULL;
17493 gchar* _tmp5_ = NULL;
17495 gchar* destroy_func;
17496 const gchar* _tmp7_;
17497 gboolean _tmp8_ = FALSE;
17498 const gchar* _tmp9_;
17499 ValaCCodeFunction* _tmp10_;
17500 ValaCCodeFunction* function;
17501 ValaCCodeFunction* _tmp11_;
17502 ValaCCodeFunction* _tmp12_;
17503 ValaDataType* _tmp13_;
17504 gchar* _tmp14_ = NULL;
17506 ValaCCodeParameter* _tmp16_;
17507 ValaCCodeParameter* _tmp17_;
17508 ValaCCodeFunction* _tmp18_;
17509 ValaDataType* _tmp19_;
17510 ValaTypeSymbol* _tmp20_;
17511 ValaTypeSymbol* _tmp21_;
17512 ValaClass* _tmp22_;
17514 ValaClass* _tmp23_;
17515 gchar* _tmp24_ = NULL;
17517 ValaCCodeIdentifier* _tmp26_;
17518 ValaCCodeIdentifier* _tmp27_;
17519 ValaCCodeFunctionCall* _tmp28_;
17520 ValaCCodeFunctionCall* _tmp29_;
17521 ValaCCodeFunctionCall* free_call;
17522 ValaCCodeFunctionCall* _tmp30_;
17523 ValaCCodeIdentifier* _tmp31_;
17524 ValaCCodeIdentifier* _tmp32_;
17525 ValaCCodeUnaryExpression* _tmp33_;
17526 ValaCCodeUnaryExpression* _tmp34_;
17527 ValaCCodeFunction* _tmp35_;
17528 ValaCCodeFunction* _tmp36_;
17529 ValaCCodeFunctionCall* _tmp37_;
17530 ValaCCodeFile* _tmp38_;
17531 ValaCCodeFunction* _tmp39_;
17532 ValaCCodeFile* _tmp40_;
17533 ValaCCodeFunction* _tmp41_;
17534 g_return_val_if_fail (self != NULL, NULL);
17535 g_return_val_if_fail (type != NULL, NULL);
17537 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
17539 _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
17541 _tmp5_ = g_strdup_printf ("_vala_%s_free_function_address_of", _tmp4_);
17544 destroy_func = _tmp6_;
17545 _tmp7_ = destroy_func;
17546 _tmp8_ = vala_ccode_base_module_add_wrapper (self, _tmp7_);
17548 result = destroy_func;
17551 _tmp9_ = destroy_func;
17552 _tmp10_ = vala_ccode_function_new (_tmp9_, "void");
17553 function = _tmp10_;
17554 _tmp11_ = function;
17555 vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC);
17556 _tmp12_ = function;
17558 _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_);
17560 _tmp16_ = vala_ccode_parameter_new ("self", _tmp15_);
17562 vala_ccode_function_add_parameter (_tmp12_, _tmp17_);
17563 _vala_ccode_node_unref0 (_tmp17_);
17564 _g_free0 (_tmp15_);
17565 _tmp18_ = function;
17566 vala_ccode_base_module_push_function (self, _tmp18_);
17568 _tmp20_ = vala_data_type_get_data_type (_tmp19_);
17570 _tmp22_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp21_) : NULL);
17573 _tmp24_ = vala_ccode_base_module_get_ccode_free_function ((ValaTypeSymbol*) _tmp23_);
17575 _tmp26_ = vala_ccode_identifier_new (_tmp25_);
17577 _tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_);
17579 _vala_ccode_node_unref0 (_tmp27_);
17580 _g_free0 (_tmp25_);
17581 free_call = _tmp29_;
17582 _tmp30_ = free_call;
17583 _tmp31_ = vala_ccode_identifier_new ("self");
17585 _tmp33_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp32_);
17587 vala_ccode_function_call_add_argument (_tmp30_, (ValaCCodeExpression*) _tmp34_);
17588 _vala_ccode_node_unref0 (_tmp34_);
17589 _vala_ccode_node_unref0 (_tmp32_);
17590 _tmp35_ = vala_ccode_base_module_get_ccode (self);
17592 _tmp37_ = free_call;
17593 vala_ccode_function_add_expression (_tmp36_, (ValaCCodeExpression*) _tmp37_);
17594 vala_ccode_base_module_pop_function (self);
17595 _tmp38_ = self->cfile;
17596 _tmp39_ = function;
17597 vala_ccode_file_add_function_declaration (_tmp38_, _tmp39_);
17598 _tmp40_ = self->cfile;
17599 _tmp41_ = function;
17600 vala_ccode_file_add_function (_tmp40_, _tmp41_);
17601 result = destroy_func;
17602 _vala_ccode_node_unref0 (free_call);
17603 _vala_code_node_unref0 (cl);
17604 _vala_ccode_node_unref0 (function);
17609 gchar* vala_ccode_base_module_generate_free_func_wrapper (ValaCCodeBaseModule* self, ValaDataType* type) {
17610 gchar* result = NULL;
17611 ValaDataType* _tmp0_;
17612 ValaTypeSymbol* _tmp1_;
17613 ValaTypeSymbol* _tmp2_;
17614 gchar* _tmp3_ = NULL;
17616 gchar* _tmp5_ = NULL;
17618 gchar* destroy_func;
17619 const gchar* _tmp7_;
17620 gboolean _tmp8_ = FALSE;
17621 const gchar* _tmp9_;
17622 ValaCCodeFunction* _tmp10_;
17623 ValaCCodeFunction* function;
17624 ValaCCodeFunction* _tmp11_;
17625 ValaCCodeFunction* _tmp12_;
17626 ValaDataType* _tmp13_;
17627 gchar* _tmp14_ = NULL;
17629 ValaCCodeParameter* _tmp16_;
17630 ValaCCodeParameter* _tmp17_;
17631 ValaCCodeFunction* _tmp18_;
17632 ValaDataType* _tmp19_;
17633 ValaTypeSymbol* _tmp20_;
17634 ValaTypeSymbol* _tmp21_;
17635 ValaClass* _tmp22_;
17637 gboolean _tmp23_ = FALSE;
17638 ValaClass* _tmp24_;
17640 ValaCCodeFile* _tmp79_;
17641 ValaCCodeFunction* _tmp80_;
17642 ValaCCodeFile* _tmp81_;
17643 ValaCCodeFunction* _tmp82_;
17644 g_return_val_if_fail (self != NULL, NULL);
17645 g_return_val_if_fail (type != NULL, NULL);
17647 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
17649 _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
17651 _tmp5_ = g_strdup_printf ("_vala_%s_free", _tmp4_);
17654 destroy_func = _tmp6_;
17655 _tmp7_ = destroy_func;
17656 _tmp8_ = vala_ccode_base_module_add_wrapper (self, _tmp7_);
17658 result = destroy_func;
17661 _tmp9_ = destroy_func;
17662 _tmp10_ = vala_ccode_function_new (_tmp9_, "void");
17663 function = _tmp10_;
17664 _tmp11_ = function;
17665 vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC);
17666 _tmp12_ = function;
17668 _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_);
17670 _tmp16_ = vala_ccode_parameter_new ("self", _tmp15_);
17672 vala_ccode_function_add_parameter (_tmp12_, _tmp17_);
17673 _vala_ccode_node_unref0 (_tmp17_);
17674 _g_free0 (_tmp15_);
17675 _tmp18_ = function;
17676 vala_ccode_base_module_push_function (self, _tmp18_);
17678 _tmp20_ = vala_data_type_get_data_type (_tmp19_);
17680 _tmp22_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp21_) : NULL);
17683 if (_tmp24_ != NULL) {
17684 ValaClass* _tmp25_;
17685 gboolean _tmp26_ = FALSE;
17687 _tmp26_ = vala_ccode_base_module_get_ccode_is_gboxed ((ValaTypeSymbol*) _tmp25_);
17694 ValaCCodeIdentifier* _tmp28_;
17695 ValaCCodeIdentifier* _tmp29_;
17696 ValaCCodeFunctionCall* _tmp30_;
17697 ValaCCodeFunctionCall* _tmp31_;
17698 ValaCCodeFunctionCall* free_call;
17699 ValaCCodeFunctionCall* _tmp32_;
17700 ValaClass* _tmp33_;
17701 gchar* _tmp34_ = NULL;
17703 ValaCCodeIdentifier* _tmp36_;
17704 ValaCCodeIdentifier* _tmp37_;
17705 ValaCCodeFunctionCall* _tmp38_;
17706 ValaCCodeIdentifier* _tmp39_;
17707 ValaCCodeIdentifier* _tmp40_;
17708 ValaCCodeFunction* _tmp41_;
17709 ValaCCodeFunction* _tmp42_;
17710 ValaCCodeFunctionCall* _tmp43_;
17711 _tmp28_ = vala_ccode_identifier_new ("g_boxed_free");
17713 _tmp30_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp29_);
17715 _vala_ccode_node_unref0 (_tmp29_);
17716 free_call = _tmp31_;
17717 _tmp32_ = free_call;
17719 _tmp34_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp33_);
17721 _tmp36_ = vala_ccode_identifier_new (_tmp35_);
17723 vala_ccode_function_call_add_argument (_tmp32_, (ValaCCodeExpression*) _tmp37_);
17724 _vala_ccode_node_unref0 (_tmp37_);
17725 _g_free0 (_tmp35_);
17726 _tmp38_ = free_call;
17727 _tmp39_ = vala_ccode_identifier_new ("self");
17729 vala_ccode_function_call_add_argument (_tmp38_, (ValaCCodeExpression*) _tmp40_);
17730 _vala_ccode_node_unref0 (_tmp40_);
17731 _tmp41_ = vala_ccode_base_module_get_ccode (self);
17733 _tmp43_ = free_call;
17734 vala_ccode_function_add_expression (_tmp42_, (ValaCCodeExpression*) _tmp43_);
17735 _vala_ccode_node_unref0 (free_call);
17737 ValaDataType* _tmp44_;
17738 ValaTypeSymbol* _tmp45_;
17739 ValaTypeSymbol* _tmp46_;
17740 ValaStruct* _tmp47_;
17742 gboolean _tmp48_ = FALSE;
17743 ValaStruct* _tmp49_;
17745 ValaCCodeIdentifier* _tmp69_;
17746 ValaCCodeIdentifier* _tmp70_;
17747 ValaCCodeFunctionCall* _tmp71_;
17748 ValaCCodeFunctionCall* _tmp72_;
17749 ValaCCodeFunctionCall* free_call;
17750 ValaCCodeFunctionCall* _tmp73_;
17751 ValaCCodeIdentifier* _tmp74_;
17752 ValaCCodeIdentifier* _tmp75_;
17753 ValaCCodeFunction* _tmp76_;
17754 ValaCCodeFunction* _tmp77_;
17755 ValaCCodeFunctionCall* _tmp78_;
17757 _tmp45_ = vala_data_type_get_data_type (_tmp44_);
17759 _tmp47_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp46_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp46_) : NULL);
17762 if (_tmp49_ != NULL) {
17763 ValaStruct* _tmp50_;
17764 gboolean _tmp51_ = FALSE;
17766 _tmp51_ = vala_struct_is_disposable (_tmp50_);
17773 ValaStruct* _tmp53_;
17774 gboolean _tmp54_ = FALSE;
17775 ValaStruct* _tmp56_;
17776 gchar* _tmp57_ = NULL;
17778 ValaCCodeIdentifier* _tmp59_;
17779 ValaCCodeIdentifier* _tmp60_;
17780 ValaCCodeFunctionCall* _tmp61_;
17781 ValaCCodeFunctionCall* _tmp62_;
17782 ValaCCodeFunctionCall* destroy_call;
17783 ValaCCodeFunctionCall* _tmp63_;
17784 ValaCCodeIdentifier* _tmp64_;
17785 ValaCCodeIdentifier* _tmp65_;
17786 ValaCCodeFunction* _tmp66_;
17787 ValaCCodeFunction* _tmp67_;
17788 ValaCCodeFunctionCall* _tmp68_;
17790 _tmp54_ = vala_ccode_base_module_get_ccode_has_destroy_function (_tmp53_);
17792 ValaStruct* _tmp55_;
17794 vala_ccode_base_module_generate_struct_destroy_function (self, _tmp55_);
17797 _tmp57_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp56_);
17799 _tmp59_ = vala_ccode_identifier_new (_tmp58_);
17801 _tmp61_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp60_);
17803 _vala_ccode_node_unref0 (_tmp60_);
17804 _g_free0 (_tmp58_);
17805 destroy_call = _tmp62_;
17806 _tmp63_ = destroy_call;
17807 _tmp64_ = vala_ccode_identifier_new ("self");
17809 vala_ccode_function_call_add_argument (_tmp63_, (ValaCCodeExpression*) _tmp65_);
17810 _vala_ccode_node_unref0 (_tmp65_);
17811 _tmp66_ = vala_ccode_base_module_get_ccode (self);
17813 _tmp68_ = destroy_call;
17814 vala_ccode_function_add_expression (_tmp67_, (ValaCCodeExpression*) _tmp68_);
17815 _vala_ccode_node_unref0 (destroy_call);
17817 _tmp69_ = vala_ccode_identifier_new ("g_free");
17819 _tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_);
17821 _vala_ccode_node_unref0 (_tmp70_);
17822 free_call = _tmp72_;
17823 _tmp73_ = free_call;
17824 _tmp74_ = vala_ccode_identifier_new ("self");
17826 vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp75_);
17827 _vala_ccode_node_unref0 (_tmp75_);
17828 _tmp76_ = vala_ccode_base_module_get_ccode (self);
17830 _tmp78_ = free_call;
17831 vala_ccode_function_add_expression (_tmp77_, (ValaCCodeExpression*) _tmp78_);
17832 _vala_ccode_node_unref0 (free_call);
17833 _vala_code_node_unref0 (st);
17835 vala_ccode_base_module_pop_function (self);
17836 _tmp79_ = self->cfile;
17837 _tmp80_ = function;
17838 vala_ccode_file_add_function_declaration (_tmp79_, _tmp80_);
17839 _tmp81_ = self->cfile;
17840 _tmp82_ = function;
17841 vala_ccode_file_add_function (_tmp81_, _tmp82_);
17842 result = destroy_func;
17843 _vala_code_node_unref0 (cl);
17844 _vala_ccode_node_unref0 (function);
17849 ValaCCodeExpression* vala_ccode_base_module_get_destroy0_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup) {
17850 ValaCCodeExpression* result = NULL;
17851 ValaDataType* _tmp0_;
17853 ValaCCodeExpression* _tmp2_ = NULL;
17854 ValaCCodeExpression* element_destroy_func_expression;
17855 ValaCCodeExpression* _tmp3_;
17856 g_return_val_if_fail (self != NULL, NULL);
17857 g_return_val_if_fail (type != NULL, NULL);
17859 _tmp1_ = is_chainup;
17860 _tmp2_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp0_, _tmp1_);
17861 element_destroy_func_expression = _tmp2_;
17862 _tmp3_ = element_destroy_func_expression;
17863 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_CCODE_IDENTIFIER)) {
17864 ValaCCodeExpression* _tmp4_;
17865 ValaCCodeIdentifier* _tmp5_;
17866 ValaCCodeIdentifier* freeid;
17867 ValaCCodeIdentifier* _tmp6_;
17868 const gchar* _tmp7_;
17869 const gchar* _tmp8_;
17870 gchar* _tmp9_ = NULL;
17872 const gchar* _tmp10_;
17873 gboolean _tmp11_ = FALSE;
17874 const gchar* _tmp32_;
17875 ValaCCodeIdentifier* _tmp33_;
17876 _tmp4_ = element_destroy_func_expression;
17877 _tmp5_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, VALA_TYPE_CCODE_IDENTIFIER, ValaCCodeIdentifier));
17880 _tmp7_ = vala_ccode_identifier_get_name (_tmp6_);
17882 _tmp9_ = g_strdup_printf ("_%s0_", _tmp8_);
17883 free0_func = _tmp9_;
17884 _tmp10_ = free0_func;
17885 _tmp11_ = vala_ccode_base_module_add_wrapper (self, _tmp10_);
17887 const gchar* _tmp12_;
17888 ValaCCodeFunction* _tmp13_;
17889 ValaCCodeFunction* function;
17890 ValaCCodeFunction* _tmp14_;
17891 ValaCCodeFunction* _tmp15_;
17892 ValaCCodeParameter* _tmp16_;
17893 ValaCCodeParameter* _tmp17_;
17894 ValaCCodeFunction* _tmp18_;
17895 ValaCCodeFunction* _tmp19_;
17896 ValaCCodeFunction* _tmp20_;
17897 ValaDataType* _tmp21_;
17898 ValaCCodeIdentifier* _tmp22_;
17899 ValaCCodeIdentifier* _tmp23_;
17900 ValaGLibValue* _tmp24_;
17901 ValaGLibValue* _tmp25_;
17902 ValaCCodeExpression* _tmp26_ = NULL;
17903 ValaCCodeExpression* _tmp27_;
17904 ValaCCodeFile* _tmp28_;
17905 ValaCCodeFunction* _tmp29_;
17906 ValaCCodeFile* _tmp30_;
17907 ValaCCodeFunction* _tmp31_;
17908 _tmp12_ = free0_func;
17909 _tmp13_ = vala_ccode_function_new (_tmp12_, "void");
17910 function = _tmp13_;
17911 _tmp14_ = function;
17912 vala_ccode_function_set_modifiers (_tmp14_, VALA_CCODE_MODIFIERS_STATIC);
17913 _tmp15_ = function;
17914 _tmp16_ = vala_ccode_parameter_new ("var", "gpointer");
17916 vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
17917 _vala_ccode_node_unref0 (_tmp17_);
17918 _tmp18_ = function;
17919 vala_ccode_base_module_push_function (self, _tmp18_);
17920 _tmp19_ = vala_ccode_base_module_get_ccode (self);
17923 _tmp22_ = vala_ccode_identifier_new ("var");
17925 _tmp24_ = vala_glib_value_new (_tmp21_, (ValaCCodeExpression*) _tmp23_, TRUE);
17927 _tmp26_ = vala_ccode_base_module_destroy_value (self, (ValaTargetValue*) _tmp25_, TRUE);
17929 vala_ccode_function_add_expression (_tmp20_, _tmp27_);
17930 _vala_ccode_node_unref0 (_tmp27_);
17931 _vala_target_value_unref0 (_tmp25_);
17932 _vala_ccode_node_unref0 (_tmp23_);
17933 vala_ccode_base_module_pop_function (self);
17934 _tmp28_ = self->cfile;
17935 _tmp29_ = function;
17936 vala_ccode_file_add_function_declaration (_tmp28_, _tmp29_);
17937 _tmp30_ = self->cfile;
17938 _tmp31_ = function;
17939 vala_ccode_file_add_function (_tmp30_, _tmp31_);
17940 _vala_ccode_node_unref0 (function);
17942 _tmp32_ = free0_func;
17943 _tmp33_ = vala_ccode_identifier_new (_tmp32_);
17944 _vala_ccode_node_unref0 (element_destroy_func_expression);
17945 element_destroy_func_expression = (ValaCCodeExpression*) _tmp33_;
17946 _g_free0 (free0_func);
17947 _vala_ccode_node_unref0 (freeid);
17949 result = element_destroy_func_expression;
17954 ValaCCodeExpression* vala_ccode_base_module_get_destroy_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup) {
17955 ValaCCodeExpression* result = NULL;
17956 gboolean _tmp0_ = FALSE;
17957 gboolean _tmp1_ = FALSE;
17958 gboolean _tmp2_ = FALSE;
17959 ValaDataType* _tmp3_;
17960 ValaTypeSymbol* _tmp4_;
17961 ValaTypeSymbol* _tmp5_;
17966 g_return_val_if_fail (self != NULL, NULL);
17967 g_return_val_if_fail (type != NULL, NULL);
17969 _tmp4_ = vala_data_type_get_data_type (_tmp3_);
17971 _tmp6_ = self->glist_type;
17972 if (_tmp5_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
17975 ValaDataType* _tmp7_;
17976 ValaTypeSymbol* _tmp8_;
17977 ValaTypeSymbol* _tmp9_;
17978 ValaClass* _tmp10_;
17980 _tmp8_ = vala_data_type_get_data_type (_tmp7_);
17982 _tmp10_ = self->gslist_type;
17983 _tmp2_ = _tmp9_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
17989 ValaDataType* _tmp12_;
17990 ValaTypeSymbol* _tmp13_;
17991 ValaTypeSymbol* _tmp14_;
17992 ValaClass* _tmp15_;
17994 _tmp13_ = vala_data_type_get_data_type (_tmp12_);
17996 _tmp15_ = self->gnode_type;
17997 _tmp1_ = _tmp14_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
18003 ValaDataType* _tmp17_;
18004 ValaTypeSymbol* _tmp18_;
18005 ValaTypeSymbol* _tmp19_;
18006 ValaClass* _tmp20_;
18008 _tmp18_ = vala_data_type_get_data_type (_tmp17_);
18010 _tmp20_ = self->gqueue_type;
18011 _tmp0_ = _tmp19_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
18015 gboolean elements_require_free;
18016 ValaCCodeExpression* element_destroy_func_expression;
18017 gboolean _tmp38_ = FALSE;
18020 elements_require_free = FALSE;
18021 element_destroy_func_expression = NULL;
18023 ValaDataType* _tmp22_;
18024 ValaList* _tmp23_ = NULL;
18025 ValaList* _type_arg_list;
18029 gint _type_arg_size;
18030 gint _type_arg_index;
18032 _tmp23_ = vala_data_type_get_type_arguments (_tmp22_);
18033 _type_arg_list = _tmp23_;
18034 _tmp24_ = _type_arg_list;
18035 _tmp25_ = vala_collection_get_size ((ValaCollection*) _tmp24_);
18037 _type_arg_size = _tmp26_;
18038 _type_arg_index = -1;
18045 gpointer _tmp32_ = NULL;
18046 ValaDataType* type_arg;
18047 ValaDataType* _tmp33_;
18048 gboolean _tmp34_ = FALSE;
18050 _tmp27_ = _type_arg_index;
18051 _type_arg_index = _tmp27_ + 1;
18052 _tmp28_ = _type_arg_index;
18053 _tmp29_ = _type_arg_size;
18054 if (!(_tmp28_ < _tmp29_)) {
18057 _tmp30_ = _type_arg_list;
18058 _tmp31_ = _type_arg_index;
18059 _tmp32_ = vala_list_get (_tmp30_, _tmp31_);
18060 type_arg = (ValaDataType*) _tmp32_;
18061 _tmp33_ = type_arg;
18062 _tmp34_ = vala_ccode_base_module_requires_destroy (self, _tmp33_);
18063 elements_require_free = _tmp34_;
18064 _tmp35_ = elements_require_free;
18066 ValaDataType* _tmp36_;
18067 ValaCCodeExpression* _tmp37_ = NULL;
18068 _tmp36_ = type_arg;
18069 _tmp37_ = vala_ccode_base_module_get_destroy0_func_expression (self, _tmp36_, FALSE);
18070 _vala_ccode_node_unref0 (element_destroy_func_expression);
18071 element_destroy_func_expression = _tmp37_;
18073 _vala_code_node_unref0 (type_arg);
18075 _vala_iterable_unref0 (_type_arg_list);
18077 _tmp39_ = elements_require_free;
18079 ValaCCodeExpression* _tmp40_;
18080 _tmp40_ = element_destroy_func_expression;
18081 _tmp38_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp40_, VALA_TYPE_CCODE_IDENTIFIER);
18087 ValaDataType* _tmp42_;
18088 ValaCCodeExpression* _tmp43_;
18089 gchar* _tmp44_ = NULL;
18091 ValaCCodeIdentifier* _tmp46_;
18092 ValaCCodeExpression* _tmp47_;
18094 _tmp43_ = element_destroy_func_expression;
18095 _tmp44_ = vala_ccode_base_module_generate_collection_free_wrapper (self, _tmp42_, G_TYPE_CHECK_INSTANCE_CAST (_tmp43_, VALA_TYPE_CCODE_IDENTIFIER, ValaCCodeIdentifier));
18097 _tmp46_ = vala_ccode_identifier_new (_tmp45_);
18098 _tmp47_ = (ValaCCodeExpression*) _tmp46_;
18099 _g_free0 (_tmp45_);
18101 _vala_ccode_node_unref0 (element_destroy_func_expression);
18104 ValaDataType* _tmp48_;
18105 ValaTypeSymbol* _tmp49_;
18106 ValaTypeSymbol* _tmp50_;
18107 gchar* _tmp51_ = NULL;
18109 ValaCCodeIdentifier* _tmp53_;
18110 ValaCCodeExpression* _tmp54_;
18112 _tmp49_ = vala_data_type_get_data_type (_tmp48_);
18114 _tmp51_ = vala_ccode_base_module_get_ccode_free_function (_tmp50_);
18116 _tmp53_ = vala_ccode_identifier_new (_tmp52_);
18117 _tmp54_ = (ValaCCodeExpression*) _tmp53_;
18118 _g_free0 (_tmp52_);
18120 _vala_ccode_node_unref0 (element_destroy_func_expression);
18123 _vala_ccode_node_unref0 (element_destroy_func_expression);
18125 ValaDataType* _tmp55_;
18127 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp55_, VALA_TYPE_ERROR_TYPE)) {
18128 ValaCCodeIdentifier* _tmp56_;
18129 _tmp56_ = vala_ccode_identifier_new ("g_error_free");
18130 result = (ValaCCodeExpression*) _tmp56_;
18133 ValaDataType* _tmp57_;
18134 ValaTypeSymbol* _tmp58_;
18135 ValaTypeSymbol* _tmp59_;
18137 _tmp58_ = vala_data_type_get_data_type (_tmp57_);
18139 if (_tmp59_ != NULL) {
18140 gchar* unref_function = NULL;
18141 ValaDataType* _tmp60_;
18142 const gchar* _tmp133_;
18143 const gchar* _tmp135_;
18144 ValaCCodeIdentifier* _tmp136_;
18146 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp60_, VALA_TYPE_REFERENCE_TYPE)) {
18147 ValaDataType* _tmp61_;
18148 ValaTypeSymbol* _tmp62_;
18149 ValaTypeSymbol* _tmp63_;
18150 gboolean _tmp64_ = FALSE;
18152 _tmp62_ = vala_data_type_get_data_type (_tmp61_);
18154 _tmp64_ = vala_ccode_base_module_is_reference_counting (_tmp63_);
18156 ValaDataType* _tmp65_;
18157 ValaTypeSymbol* _tmp66_;
18158 ValaTypeSymbol* _tmp67_;
18159 gchar* _tmp68_ = NULL;
18160 gboolean _tmp69_ = FALSE;
18161 ValaDataType* _tmp70_;
18162 ValaTypeSymbol* _tmp71_;
18163 ValaTypeSymbol* _tmp72_;
18166 _tmp66_ = vala_data_type_get_data_type (_tmp65_);
18168 _tmp68_ = vala_ccode_base_module_get_ccode_unref_function (G_TYPE_CHECK_INSTANCE_CAST (_tmp67_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
18169 _g_free0 (unref_function);
18170 unref_function = _tmp68_;
18172 _tmp71_ = vala_data_type_get_data_type (_tmp70_);
18174 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp72_, VALA_TYPE_INTERFACE)) {
18175 const gchar* _tmp73_;
18176 _tmp73_ = unref_function;
18177 _tmp69_ = _tmp73_ == NULL;
18183 ValaDataType* _tmp75_;
18184 ValaSourceReference* _tmp76_;
18185 ValaSourceReference* _tmp77_;
18186 ValaDataType* _tmp78_;
18187 ValaTypeSymbol* _tmp79_;
18188 ValaTypeSymbol* _tmp80_;
18189 gchar* _tmp81_ = NULL;
18191 gchar* _tmp83_ = NULL;
18194 _tmp76_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp75_);
18197 _tmp79_ = vala_data_type_get_data_type (_tmp78_);
18199 _tmp81_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp80_);
18201 _tmp83_ = g_strdup_printf ("missing class prerequisite for interface `%s', add GLib.Object to inte" \
18202 "rface declaration if unsure", _tmp82_);
18204 vala_report_error (_tmp77_, _tmp84_);
18205 _g_free0 (_tmp84_);
18206 _g_free0 (_tmp82_);
18208 _g_free0 (unref_function);
18212 ValaDataType* _tmp85_;
18213 ValaTypeSymbol* _tmp86_;
18214 ValaTypeSymbol* _tmp87_;
18215 ValaClass* _tmp88_;
18217 gboolean _tmp89_ = FALSE;
18218 ValaClass* _tmp90_;
18221 _tmp86_ = vala_data_type_get_data_type (_tmp85_);
18223 _tmp88_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp87_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp87_) : NULL);
18226 if (_tmp90_ != NULL) {
18227 ValaClass* _tmp91_;
18228 gboolean _tmp92_ = FALSE;
18230 _tmp92_ = vala_ccode_base_module_get_ccode_is_gboxed ((ValaTypeSymbol*) _tmp91_);
18237 ValaDataType* _tmp94_;
18238 gchar* _tmp95_ = NULL;
18240 _tmp95_ = vala_ccode_base_module_generate_free_func_wrapper (self, _tmp94_);
18241 _g_free0 (unref_function);
18242 unref_function = _tmp95_;
18244 ValaDataType* _tmp96_;
18245 gboolean _tmp97_ = FALSE;
18247 _tmp97_ = vala_ccode_base_module_is_free_function_address_of (self, _tmp96_);
18249 ValaDataType* _tmp98_;
18250 gchar* _tmp99_ = NULL;
18252 _tmp99_ = vala_ccode_base_module_generate_free_function_address_of_wrapper (self, _tmp98_);
18253 _g_free0 (unref_function);
18254 unref_function = _tmp99_;
18256 ValaDataType* _tmp100_;
18257 ValaTypeSymbol* _tmp101_;
18258 ValaTypeSymbol* _tmp102_;
18259 gchar* _tmp103_ = NULL;
18261 _tmp101_ = vala_data_type_get_data_type (_tmp100_);
18262 _tmp102_ = _tmp101_;
18263 _tmp103_ = vala_ccode_base_module_get_ccode_free_function (_tmp102_);
18264 _g_free0 (unref_function);
18265 unref_function = _tmp103_;
18268 _vala_code_node_unref0 (cl);
18271 ValaDataType* _tmp104_;
18275 _tmp105_ = vala_data_type_get_nullable (_tmp104_);
18276 _tmp106_ = _tmp105_;
18278 ValaDataType* _tmp107_;
18279 ValaTypeSymbol* _tmp108_;
18280 ValaTypeSymbol* _tmp109_;
18281 gchar* _tmp110_ = NULL;
18282 const gchar* _tmp111_;
18284 _tmp108_ = vala_data_type_get_data_type (_tmp107_);
18285 _tmp109_ = _tmp108_;
18286 _tmp110_ = vala_ccode_base_module_get_ccode_free_function (_tmp109_);
18287 _g_free0 (unref_function);
18288 unref_function = _tmp110_;
18289 _tmp111_ = unref_function;
18290 if (_tmp111_ == NULL) {
18291 gboolean _tmp112_ = FALSE;
18292 ValaDataType* _tmp113_;
18293 ValaTypeSymbol* _tmp114_;
18294 ValaTypeSymbol* _tmp115_;
18297 _tmp114_ = vala_data_type_get_data_type (_tmp113_);
18298 _tmp115_ = _tmp114_;
18299 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp115_, VALA_TYPE_STRUCT)) {
18300 ValaDataType* _tmp116_;
18301 ValaTypeSymbol* _tmp117_;
18302 ValaTypeSymbol* _tmp118_;
18303 gboolean _tmp119_ = FALSE;
18305 _tmp117_ = vala_data_type_get_data_type (_tmp116_);
18306 _tmp118_ = _tmp117_;
18307 _tmp119_ = vala_struct_is_disposable (G_TYPE_CHECK_INSTANCE_CAST (_tmp118_, VALA_TYPE_STRUCT, ValaStruct));
18308 _tmp112_ = _tmp119_;
18312 _tmp120_ = _tmp112_;
18314 ValaDataType* _tmp121_;
18315 gchar* _tmp122_ = NULL;
18317 _tmp122_ = vala_ccode_base_module_generate_free_func_wrapper (self, _tmp121_);
18318 _g_free0 (unref_function);
18319 unref_function = _tmp122_;
18322 _tmp123_ = g_strdup ("g_free");
18323 _g_free0 (unref_function);
18324 unref_function = _tmp123_;
18328 ValaDataType* _tmp124_;
18329 ValaTypeSymbol* _tmp125_;
18330 ValaTypeSymbol* _tmp126_;
18331 ValaStruct* _tmp127_;
18333 ValaStruct* _tmp128_;
18334 gboolean _tmp129_ = FALSE;
18335 ValaStruct* _tmp131_;
18336 gchar* _tmp132_ = NULL;
18338 _tmp125_ = vala_data_type_get_data_type (_tmp124_);
18339 _tmp126_ = _tmp125_;
18340 _tmp127_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp126_, VALA_TYPE_STRUCT, ValaStruct));
18343 _tmp129_ = vala_ccode_base_module_get_ccode_has_destroy_function (_tmp128_);
18345 ValaStruct* _tmp130_;
18347 vala_ccode_base_module_generate_struct_destroy_function (self, _tmp130_);
18350 _tmp132_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp131_);
18351 _g_free0 (unref_function);
18352 unref_function = _tmp132_;
18353 _vala_code_node_unref0 (st);
18356 _tmp133_ = unref_function;
18357 if (_tmp133_ == NULL) {
18358 ValaCCodeConstant* _tmp134_;
18359 _tmp134_ = vala_ccode_constant_new ("NULL");
18360 result = (ValaCCodeExpression*) _tmp134_;
18361 _g_free0 (unref_function);
18364 _tmp135_ = unref_function;
18365 _tmp136_ = vala_ccode_identifier_new (_tmp135_);
18366 result = (ValaCCodeExpression*) _tmp136_;
18367 _g_free0 (unref_function);
18370 ValaDataType* _tmp137_;
18371 ValaTypeParameter* _tmp138_;
18372 ValaTypeParameter* _tmp139_;
18374 _tmp138_ = vala_data_type_get_type_parameter (_tmp137_);
18375 _tmp139_ = _tmp138_;
18376 if (_tmp139_ != NULL) {
18377 ValaDataType* _tmp140_;
18378 ValaTypeParameter* _tmp141_;
18379 ValaTypeParameter* _tmp142_;
18380 const gchar* _tmp143_;
18381 const gchar* _tmp144_;
18382 gchar* _tmp145_ = NULL;
18384 gchar* _tmp147_ = NULL;
18387 ValaDataType* _tmp149_;
18388 ValaTypeParameter* _tmp150_;
18389 ValaTypeParameter* _tmp151_;
18390 ValaSymbol* _tmp152_;
18391 ValaSymbol* _tmp153_;
18392 gboolean _tmp191_ = FALSE;
18393 gboolean _tmp192_ = FALSE;
18394 ValaDataType* _tmp193_;
18395 gboolean _tmp194_ = FALSE;
18399 _tmp141_ = vala_data_type_get_type_parameter (_tmp140_);
18400 _tmp142_ = _tmp141_;
18401 _tmp143_ = vala_symbol_get_name ((ValaSymbol*) _tmp142_);
18402 _tmp144_ = _tmp143_;
18403 _tmp145_ = g_utf8_strdown (_tmp144_, (gssize) (-1));
18404 _tmp146_ = _tmp145_;
18405 _tmp147_ = g_strdup_printf ("%s_destroy_func", _tmp146_);
18406 _tmp148_ = _tmp147_;
18407 _g_free0 (_tmp146_);
18408 func_name = _tmp148_;
18410 _tmp150_ = vala_data_type_get_type_parameter (_tmp149_);
18411 _tmp151_ = _tmp150_;
18412 _tmp152_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp151_);
18413 _tmp153_ = _tmp152_;
18414 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp153_, VALA_TYPE_INTERFACE)) {
18415 ValaDataType* _tmp154_;
18416 ValaTypeParameter* _tmp155_;
18417 ValaTypeParameter* _tmp156_;
18418 ValaSymbol* _tmp157_;
18419 ValaSymbol* _tmp158_;
18420 ValaInterface* _tmp159_;
18421 ValaInterface* iface;
18422 ValaInterface* _tmp160_;
18423 ValaDataType* _tmp161_;
18424 ValaTypeParameter* _tmp162_;
18425 ValaTypeParameter* _tmp163_;
18426 const gchar* _tmp164_;
18427 const gchar* _tmp165_;
18428 gchar* _tmp166_ = NULL;
18430 gchar* _tmp168_ = NULL;
18432 gchar* method_name;
18433 ValaInterface* _tmp170_;
18434 gchar* _tmp171_ = NULL;
18436 gchar* _tmp173_ = NULL;
18438 ValaCCodeIdentifier* _tmp175_;
18439 ValaCCodeIdentifier* _tmp176_;
18440 ValaCCodeFunctionCall* _tmp177_;
18441 ValaCCodeFunctionCall* _tmp178_;
18442 ValaCCodeFunctionCall* cast_self;
18443 ValaCCodeFunctionCall* _tmp179_;
18444 ValaCCodeIdentifier* _tmp180_;
18445 ValaCCodeIdentifier* _tmp181_;
18446 ValaCCodeFunctionCall* _tmp182_;
18447 const gchar* _tmp183_;
18448 ValaCCodeMemberAccess* _tmp184_;
18449 ValaCCodeMemberAccess* _tmp185_;
18450 ValaCCodeFunctionCall* _tmp186_;
18451 ValaCCodeFunctionCall* _tmp187_;
18452 ValaCCodeFunctionCall* function_call;
18453 ValaCCodeFunctionCall* _tmp188_;
18454 ValaCCodeIdentifier* _tmp189_;
18455 ValaCCodeIdentifier* _tmp190_;
18457 _tmp155_ = vala_data_type_get_type_parameter (_tmp154_);
18458 _tmp156_ = _tmp155_;
18459 _tmp157_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp156_);
18460 _tmp158_ = _tmp157_;
18461 _tmp159_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp158_, VALA_TYPE_INTERFACE, ValaInterface));
18464 vala_ccode_base_module_require_generic_accessors (self, _tmp160_);
18466 _tmp162_ = vala_data_type_get_type_parameter (_tmp161_);
18467 _tmp163_ = _tmp162_;
18468 _tmp164_ = vala_symbol_get_name ((ValaSymbol*) _tmp163_);
18469 _tmp165_ = _tmp164_;
18470 _tmp166_ = g_utf8_strdown (_tmp165_, (gssize) (-1));
18471 _tmp167_ = _tmp166_;
18472 _tmp168_ = g_strdup_printf ("get_%s_destroy_func", _tmp167_);
18473 _tmp169_ = _tmp168_;
18474 _g_free0 (_tmp167_);
18475 method_name = _tmp169_;
18477 _tmp171_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp170_, NULL);
18478 _tmp172_ = _tmp171_;
18479 _tmp173_ = g_strdup_printf ("%s_GET_INTERFACE", _tmp172_);
18480 _tmp174_ = _tmp173_;
18481 _tmp175_ = vala_ccode_identifier_new (_tmp174_);
18482 _tmp176_ = _tmp175_;
18483 _tmp177_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp176_);
18484 _tmp178_ = _tmp177_;
18485 _vala_ccode_node_unref0 (_tmp176_);
18486 _g_free0 (_tmp174_);
18487 _g_free0 (_tmp172_);
18488 cast_self = _tmp178_;
18489 _tmp179_ = cast_self;
18490 _tmp180_ = vala_ccode_identifier_new ("self");
18491 _tmp181_ = _tmp180_;
18492 vala_ccode_function_call_add_argument (_tmp179_, (ValaCCodeExpression*) _tmp181_);
18493 _vala_ccode_node_unref0 (_tmp181_);
18494 _tmp182_ = cast_self;
18495 _tmp183_ = method_name;
18496 _tmp184_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp182_, _tmp183_);
18497 _tmp185_ = _tmp184_;
18498 _tmp186_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp185_);
18499 _tmp187_ = _tmp186_;
18500 _vala_ccode_node_unref0 (_tmp185_);
18501 function_call = _tmp187_;
18502 _tmp188_ = function_call;
18503 _tmp189_ = vala_ccode_identifier_new ("self");
18504 _tmp190_ = _tmp189_;
18505 vala_ccode_function_call_add_argument (_tmp188_, (ValaCCodeExpression*) _tmp190_);
18506 _vala_ccode_node_unref0 (_tmp190_);
18507 result = (ValaCCodeExpression*) function_call;
18508 _vala_ccode_node_unref0 (cast_self);
18509 _g_free0 (method_name);
18510 _vala_code_node_unref0 (iface);
18511 _g_free0 (func_name);
18515 _tmp194_ = vala_ccode_base_module_is_in_generic_type (self, _tmp193_);
18518 _tmp195_ = is_chainup;
18519 _tmp192_ = !_tmp195_;
18523 _tmp196_ = _tmp192_;
18527 _tmp197_ = vala_ccode_base_module_get_in_creation_method (self);
18528 _tmp198_ = _tmp197_;
18529 _tmp191_ = !_tmp198_;
18533 _tmp199_ = _tmp191_;
18535 ValaCCodeExpression* _tmp200_ = NULL;
18536 ValaCCodeExpression* _tmp201_;
18537 ValaCCodeMemberAccess* _tmp202_;
18538 ValaCCodeMemberAccess* _tmp203_;
18539 const gchar* _tmp204_;
18540 ValaCCodeMemberAccess* _tmp205_;
18541 ValaCCodeExpression* _tmp206_;
18542 _tmp200_ = vala_ccode_base_module_get_result_cexpression (self, "self");
18543 _tmp201_ = _tmp200_;
18544 _tmp202_ = vala_ccode_member_access_new_pointer (_tmp201_, "priv");
18545 _tmp203_ = _tmp202_;
18546 _tmp204_ = func_name;
18547 _tmp205_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp203_, _tmp204_);
18548 _tmp206_ = (ValaCCodeExpression*) _tmp205_;
18549 _vala_ccode_node_unref0 (_tmp203_);
18550 _vala_ccode_node_unref0 (_tmp201_);
18552 _g_free0 (func_name);
18555 const gchar* _tmp207_;
18556 ValaCCodeExpression* _tmp208_ = NULL;
18557 _tmp207_ = func_name;
18558 _tmp208_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp207_);
18560 _g_free0 (func_name);
18563 _g_free0 (func_name);
18565 ValaDataType* _tmp209_;
18567 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp209_, VALA_TYPE_ARRAY_TYPE)) {
18568 ValaCCodeIdentifier* _tmp210_;
18569 _tmp210_ = vala_ccode_identifier_new ("g_free");
18570 result = (ValaCCodeExpression*) _tmp210_;
18573 ValaDataType* _tmp211_;
18575 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp211_, VALA_TYPE_POINTER_TYPE)) {
18576 ValaCCodeIdentifier* _tmp212_;
18577 _tmp212_ = vala_ccode_identifier_new ("g_free");
18578 result = (ValaCCodeExpression*) _tmp212_;
18581 ValaCCodeConstant* _tmp213_;
18582 _tmp213_ = vala_ccode_constant_new ("NULL");
18583 result = (ValaCCodeExpression*) _tmp213_;
18594 static gchar* vala_ccode_base_module_generate_collection_free_wrapper (ValaCCodeBaseModule* self, ValaDataType* collection_type, ValaCCodeIdentifier* element_destroy_func_expression) {
18595 gchar* result = NULL;
18596 ValaDataType* _tmp0_;
18597 ValaTypeSymbol* _tmp1_;
18598 ValaTypeSymbol* _tmp2_;
18599 gchar* _tmp3_ = NULL;
18601 ValaCCodeIdentifier* _tmp5_;
18602 const gchar* _tmp6_;
18603 const gchar* _tmp7_;
18604 gchar* _tmp8_ = NULL;
18606 gchar* destroy_func;
18607 const gchar* _tmp10_;
18608 gboolean _tmp11_ = FALSE;
18609 const gchar* _tmp12_;
18610 ValaCCodeFunction* _tmp13_;
18611 ValaCCodeFunction* function;
18612 ValaCCodeFunction* _tmp14_;
18613 ValaCCodeFunction* _tmp15_;
18614 ValaDataType* _tmp16_;
18615 gchar* _tmp17_ = NULL;
18617 ValaCCodeParameter* _tmp19_;
18618 ValaCCodeParameter* _tmp20_;
18619 ValaCCodeFunction* _tmp21_;
18620 ValaCCodeFunctionCall* element_free_call = NULL;
18621 ValaDataType* _tmp22_;
18622 ValaTypeSymbol* _tmp23_;
18623 ValaTypeSymbol* _tmp24_;
18624 ValaClass* _tmp25_;
18625 ValaCCodeFunction* _tmp108_;
18626 ValaCCodeFunction* _tmp109_;
18627 ValaCCodeFunctionCall* _tmp110_;
18628 ValaDataType* _tmp111_;
18629 ValaTypeSymbol* _tmp112_;
18630 ValaTypeSymbol* _tmp113_;
18631 gchar* _tmp114_ = NULL;
18633 ValaCCodeIdentifier* _tmp116_;
18634 ValaCCodeIdentifier* _tmp117_;
18635 ValaCCodeFunctionCall* _tmp118_;
18636 ValaCCodeFunctionCall* _tmp119_;
18637 ValaCCodeFunctionCall* cfreecall;
18638 ValaCCodeFunctionCall* _tmp120_;
18639 ValaCCodeIdentifier* _tmp121_;
18640 ValaCCodeIdentifier* _tmp122_;
18641 ValaCCodeFunction* _tmp123_;
18642 ValaCCodeFunction* _tmp124_;
18643 ValaCCodeFunctionCall* _tmp125_;
18644 ValaCCodeFile* _tmp126_;
18645 ValaCCodeFunction* _tmp127_;
18646 ValaCCodeFile* _tmp128_;
18647 ValaCCodeFunction* _tmp129_;
18648 g_return_val_if_fail (self != NULL, NULL);
18649 g_return_val_if_fail (collection_type != NULL, NULL);
18650 g_return_val_if_fail (element_destroy_func_expression != NULL, NULL);
18651 _tmp0_ = collection_type;
18652 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
18654 _tmp3_ = vala_ccode_base_module_get_ccode_free_function (_tmp2_);
18656 _tmp5_ = element_destroy_func_expression;
18657 _tmp6_ = vala_ccode_identifier_get_name (_tmp5_);
18659 _tmp8_ = g_strdup_printf ("_%s_%s", _tmp4_, _tmp7_);
18662 destroy_func = _tmp9_;
18663 _tmp10_ = destroy_func;
18664 _tmp11_ = vala_ccode_base_module_add_wrapper (self, _tmp10_);
18666 result = destroy_func;
18669 _tmp12_ = destroy_func;
18670 _tmp13_ = vala_ccode_function_new (_tmp12_, "void");
18671 function = _tmp13_;
18672 _tmp14_ = function;
18673 vala_ccode_function_set_modifiers (_tmp14_, VALA_CCODE_MODIFIERS_STATIC);
18674 _tmp15_ = function;
18675 _tmp16_ = collection_type;
18676 _tmp17_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp16_);
18678 _tmp19_ = vala_ccode_parameter_new ("self", _tmp18_);
18680 vala_ccode_function_add_parameter (_tmp15_, _tmp20_);
18681 _vala_ccode_node_unref0 (_tmp20_);
18682 _g_free0 (_tmp18_);
18683 _tmp21_ = function;
18684 vala_ccode_base_module_push_function (self, _tmp21_);
18685 _tmp22_ = collection_type;
18686 _tmp23_ = vala_data_type_get_data_type (_tmp22_);
18688 _tmp25_ = self->gnode_type;
18689 if (_tmp24_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
18690 const gchar* _tmp26_;
18691 gchar* _tmp27_ = NULL;
18692 gchar* destroy_node_func;
18693 const gchar* _tmp28_;
18694 ValaCCodeFunction* _tmp29_;
18695 ValaCCodeFunction* wrapper;
18696 ValaCCodeFunction* _tmp30_;
18697 ValaCCodeFunction* _tmp31_;
18698 ValaDataType* _tmp32_;
18699 gchar* _tmp33_ = NULL;
18701 ValaCCodeParameter* _tmp35_;
18702 ValaCCodeParameter* _tmp36_;
18703 ValaCCodeFunction* _tmp37_;
18704 ValaCCodeParameter* _tmp38_;
18705 ValaCCodeParameter* _tmp39_;
18706 ValaCCodeFunction* _tmp40_;
18707 ValaCCodeIdentifier* _tmp41_;
18708 ValaCCodeFunctionCall* _tmp42_;
18709 ValaCCodeFunctionCall* free_call;
18710 ValaCCodeFunctionCall* _tmp43_;
18711 ValaCCodeIdentifier* _tmp44_;
18712 ValaCCodeIdentifier* _tmp45_;
18713 ValaCCodeMemberAccess* _tmp46_;
18714 ValaCCodeMemberAccess* _tmp47_;
18715 ValaCCodeFunction* _tmp48_;
18716 ValaCCodeFunction* _tmp49_;
18717 ValaCCodeFunctionCall* _tmp50_;
18718 ValaCCodeFunction* _tmp51_;
18719 ValaCCodeFunction* _tmp52_;
18720 ValaCCodeConstant* _tmp53_;
18721 ValaCCodeConstant* _tmp54_;
18722 ValaCCodeFile* _tmp55_;
18723 ValaCCodeFunction* _tmp56_;
18724 ValaCCodeFile* _tmp57_;
18725 ValaCCodeFunction* _tmp58_;
18726 ValaCCodeIdentifier* _tmp59_;
18727 ValaCCodeIdentifier* _tmp60_;
18728 ValaCCodeFunctionCall* _tmp61_;
18729 ValaCCodeFunctionCall* _tmp62_;
18730 ValaCCodeIdentifier* _tmp63_;
18731 ValaCCodeIdentifier* _tmp64_;
18732 ValaCCodeFunctionCall* _tmp65_;
18733 ValaCCodeConstant* _tmp66_;
18734 ValaCCodeConstant* _tmp67_;
18735 ValaCCodeFunctionCall* _tmp68_;
18736 ValaCCodeConstant* _tmp69_;
18737 ValaCCodeConstant* _tmp70_;
18738 ValaCCodeFunctionCall* _tmp71_;
18739 ValaCCodeConstant* _tmp72_;
18740 ValaCCodeConstant* _tmp73_;
18741 ValaCCodeFunctionCall* _tmp74_;
18742 const gchar* _tmp75_;
18743 ValaCCodeIdentifier* _tmp76_;
18744 ValaCCodeIdentifier* _tmp77_;
18745 ValaCCodeFunctionCall* _tmp78_;
18746 ValaCCodeConstant* _tmp79_;
18747 ValaCCodeConstant* _tmp80_;
18748 _tmp26_ = destroy_func;
18749 _tmp27_ = g_strdup_printf ("%s_node", _tmp26_);
18750 destroy_node_func = _tmp27_;
18751 _tmp28_ = destroy_node_func;
18752 _tmp29_ = vala_ccode_function_new (_tmp28_, "gboolean");
18755 vala_ccode_function_set_modifiers (_tmp30_, VALA_CCODE_MODIFIERS_STATIC);
18757 _tmp32_ = collection_type;
18758 _tmp33_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp32_);
18760 _tmp35_ = vala_ccode_parameter_new ("node", _tmp34_);
18762 vala_ccode_function_add_parameter (_tmp31_, _tmp36_);
18763 _vala_ccode_node_unref0 (_tmp36_);
18764 _g_free0 (_tmp34_);
18766 _tmp38_ = vala_ccode_parameter_new ("unused", "gpointer");
18768 vala_ccode_function_add_parameter (_tmp37_, _tmp39_);
18769 _vala_ccode_node_unref0 (_tmp39_);
18771 vala_ccode_base_module_push_function (self, _tmp40_);
18772 _tmp41_ = element_destroy_func_expression;
18773 _tmp42_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp41_);
18774 free_call = _tmp42_;
18775 _tmp43_ = free_call;
18776 _tmp44_ = vala_ccode_identifier_new ("node");
18778 _tmp46_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp45_, "data");
18780 vala_ccode_function_call_add_argument (_tmp43_, (ValaCCodeExpression*) _tmp47_);
18781 _vala_ccode_node_unref0 (_tmp47_);
18782 _vala_ccode_node_unref0 (_tmp45_);
18783 _tmp48_ = vala_ccode_base_module_get_ccode (self);
18785 _tmp50_ = free_call;
18786 vala_ccode_function_add_expression (_tmp49_, (ValaCCodeExpression*) _tmp50_);
18787 _tmp51_ = vala_ccode_base_module_get_ccode (self);
18789 _tmp53_ = vala_ccode_constant_new ("FALSE");
18791 vala_ccode_function_add_return (_tmp52_, (ValaCCodeExpression*) _tmp54_);
18792 _vala_ccode_node_unref0 (_tmp54_);
18793 vala_ccode_base_module_pop_function (self);
18794 _tmp55_ = self->cfile;
18795 _tmp56_ = function;
18796 vala_ccode_file_add_function_declaration (_tmp55_, _tmp56_);
18797 _tmp57_ = self->cfile;
18799 vala_ccode_file_add_function (_tmp57_, _tmp58_);
18800 _tmp59_ = vala_ccode_identifier_new ("g_node_traverse");
18802 _tmp61_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp60_);
18803 _vala_ccode_node_unref0 (element_free_call);
18804 element_free_call = _tmp61_;
18805 _vala_ccode_node_unref0 (_tmp60_);
18806 _tmp62_ = element_free_call;
18807 _tmp63_ = vala_ccode_identifier_new ("self");
18809 vala_ccode_function_call_add_argument (_tmp62_, (ValaCCodeExpression*) _tmp64_);
18810 _vala_ccode_node_unref0 (_tmp64_);
18811 _tmp65_ = element_free_call;
18812 _tmp66_ = vala_ccode_constant_new ("G_POST_ORDER");
18814 vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp67_);
18815 _vala_ccode_node_unref0 (_tmp67_);
18816 _tmp68_ = element_free_call;
18817 _tmp69_ = vala_ccode_constant_new ("G_TRAVERSE_ALL");
18819 vala_ccode_function_call_add_argument (_tmp68_, (ValaCCodeExpression*) _tmp70_);
18820 _vala_ccode_node_unref0 (_tmp70_);
18821 _tmp71_ = element_free_call;
18822 _tmp72_ = vala_ccode_constant_new ("-1");
18824 vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
18825 _vala_ccode_node_unref0 (_tmp73_);
18826 _tmp74_ = element_free_call;
18827 _tmp75_ = destroy_node_func;
18828 _tmp76_ = vala_ccode_identifier_new (_tmp75_);
18830 vala_ccode_function_call_add_argument (_tmp74_, (ValaCCodeExpression*) _tmp77_);
18831 _vala_ccode_node_unref0 (_tmp77_);
18832 _tmp78_ = element_free_call;
18833 _tmp79_ = vala_ccode_constant_new ("NULL");
18835 vala_ccode_function_call_add_argument (_tmp78_, (ValaCCodeExpression*) _tmp80_);
18836 _vala_ccode_node_unref0 (_tmp80_);
18837 _vala_ccode_node_unref0 (free_call);
18838 _vala_ccode_node_unref0 (wrapper);
18839 _g_free0 (destroy_node_func);
18841 ValaDataType* _tmp81_;
18842 ValaTypeSymbol* _tmp82_;
18843 ValaTypeSymbol* _tmp83_;
18844 ValaClass* _tmp84_;
18845 ValaCCodeFunctionCall* _tmp98_;
18846 ValaCCodeIdentifier* _tmp99_;
18847 ValaCCodeIdentifier* _tmp100_;
18848 ValaCCodeFunctionCall* _tmp101_;
18849 ValaCCodeIdentifier* _tmp102_;
18850 ValaCCodeCastExpression* _tmp103_;
18851 ValaCCodeCastExpression* _tmp104_;
18852 ValaCCodeFunctionCall* _tmp105_;
18853 ValaCCodeConstant* _tmp106_;
18854 ValaCCodeConstant* _tmp107_;
18855 _tmp81_ = collection_type;
18856 _tmp82_ = vala_data_type_get_data_type (_tmp81_);
18858 _tmp84_ = self->glist_type;
18859 if (_tmp83_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp84_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
18860 ValaCCodeIdentifier* _tmp85_;
18861 ValaCCodeIdentifier* _tmp86_;
18862 ValaCCodeFunctionCall* _tmp87_;
18863 _tmp85_ = vala_ccode_identifier_new ("g_list_foreach");
18865 _tmp87_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp86_);
18866 _vala_ccode_node_unref0 (element_free_call);
18867 element_free_call = _tmp87_;
18868 _vala_ccode_node_unref0 (_tmp86_);
18870 ValaDataType* _tmp88_;
18871 ValaTypeSymbol* _tmp89_;
18872 ValaTypeSymbol* _tmp90_;
18873 ValaClass* _tmp91_;
18874 _tmp88_ = collection_type;
18875 _tmp89_ = vala_data_type_get_data_type (_tmp88_);
18877 _tmp91_ = self->gslist_type;
18878 if (_tmp90_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp91_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
18879 ValaCCodeIdentifier* _tmp92_;
18880 ValaCCodeIdentifier* _tmp93_;
18881 ValaCCodeFunctionCall* _tmp94_;
18882 _tmp92_ = vala_ccode_identifier_new ("g_slist_foreach");
18884 _tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_);
18885 _vala_ccode_node_unref0 (element_free_call);
18886 element_free_call = _tmp94_;
18887 _vala_ccode_node_unref0 (_tmp93_);
18889 ValaCCodeIdentifier* _tmp95_;
18890 ValaCCodeIdentifier* _tmp96_;
18891 ValaCCodeFunctionCall* _tmp97_;
18892 _tmp95_ = vala_ccode_identifier_new ("g_queue_foreach");
18894 _tmp97_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp96_);
18895 _vala_ccode_node_unref0 (element_free_call);
18896 element_free_call = _tmp97_;
18897 _vala_ccode_node_unref0 (_tmp96_);
18900 _tmp98_ = element_free_call;
18901 _tmp99_ = vala_ccode_identifier_new ("self");
18902 _tmp100_ = _tmp99_;
18903 vala_ccode_function_call_add_argument (_tmp98_, (ValaCCodeExpression*) _tmp100_);
18904 _vala_ccode_node_unref0 (_tmp100_);
18905 _tmp101_ = element_free_call;
18906 _tmp102_ = element_destroy_func_expression;
18907 _tmp103_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp102_, "GFunc");
18908 _tmp104_ = _tmp103_;
18909 vala_ccode_function_call_add_argument (_tmp101_, (ValaCCodeExpression*) _tmp104_);
18910 _vala_ccode_node_unref0 (_tmp104_);
18911 _tmp105_ = element_free_call;
18912 _tmp106_ = vala_ccode_constant_new ("NULL");
18913 _tmp107_ = _tmp106_;
18914 vala_ccode_function_call_add_argument (_tmp105_, (ValaCCodeExpression*) _tmp107_);
18915 _vala_ccode_node_unref0 (_tmp107_);
18917 _tmp108_ = vala_ccode_base_module_get_ccode (self);
18918 _tmp109_ = _tmp108_;
18919 _tmp110_ = element_free_call;
18920 vala_ccode_function_add_expression (_tmp109_, (ValaCCodeExpression*) _tmp110_);
18921 _tmp111_ = collection_type;
18922 _tmp112_ = vala_data_type_get_data_type (_tmp111_);
18923 _tmp113_ = _tmp112_;
18924 _tmp114_ = vala_ccode_base_module_get_ccode_free_function (_tmp113_);
18925 _tmp115_ = _tmp114_;
18926 _tmp116_ = vala_ccode_identifier_new (_tmp115_);
18927 _tmp117_ = _tmp116_;
18928 _tmp118_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp117_);
18929 _tmp119_ = _tmp118_;
18930 _vala_ccode_node_unref0 (_tmp117_);
18931 _g_free0 (_tmp115_);
18932 cfreecall = _tmp119_;
18933 _tmp120_ = cfreecall;
18934 _tmp121_ = vala_ccode_identifier_new ("self");
18935 _tmp122_ = _tmp121_;
18936 vala_ccode_function_call_add_argument (_tmp120_, (ValaCCodeExpression*) _tmp122_);
18937 _vala_ccode_node_unref0 (_tmp122_);
18938 _tmp123_ = vala_ccode_base_module_get_ccode (self);
18939 _tmp124_ = _tmp123_;
18940 _tmp125_ = cfreecall;
18941 vala_ccode_function_add_expression (_tmp124_, (ValaCCodeExpression*) _tmp125_);
18942 vala_ccode_base_module_pop_function (self);
18943 _tmp126_ = self->cfile;
18944 _tmp127_ = function;
18945 vala_ccode_file_add_function_declaration (_tmp126_, _tmp127_);
18946 _tmp128_ = self->cfile;
18947 _tmp129_ = function;
18948 vala_ccode_file_add_function (_tmp128_, _tmp129_);
18949 result = destroy_func;
18950 _vala_ccode_node_unref0 (cfreecall);
18951 _vala_ccode_node_unref0 (element_free_call);
18952 _vala_ccode_node_unref0 (function);
18957 static gchar* vala_ccode_base_module_real_append_struct_array_free (ValaCCodeBaseModule* self, ValaStruct* st) {
18958 gchar* result = NULL;
18959 g_return_val_if_fail (st != NULL, NULL);
18965 gchar* vala_ccode_base_module_append_struct_array_free (ValaCCodeBaseModule* self, ValaStruct* st) {
18966 g_return_val_if_fail (self != NULL, NULL);
18967 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->append_struct_array_free (self, st);
18971 ValaCCodeExpression* vala_ccode_base_module_destroy_local (ValaCCodeBaseModule* self, ValaLocalVariable* local) {
18972 ValaCCodeExpression* result = NULL;
18973 ValaLocalVariable* _tmp0_;
18974 ValaTargetValue* _tmp1_ = NULL;
18975 ValaTargetValue* _tmp2_;
18976 ValaCCodeExpression* _tmp3_ = NULL;
18977 ValaCCodeExpression* _tmp4_;
18978 g_return_val_if_fail (self != NULL, NULL);
18979 g_return_val_if_fail (local != NULL, NULL);
18981 _tmp1_ = vala_ccode_base_module_get_local_cvalue (self, _tmp0_);
18983 _tmp3_ = vala_ccode_base_module_destroy_value (self, _tmp2_, FALSE);
18985 _vala_target_value_unref0 (_tmp2_);
18991 ValaCCodeExpression* vala_ccode_base_module_destroy_parameter (ValaCCodeBaseModule* self, ValaParameter* param) {
18992 ValaCCodeExpression* result = NULL;
18993 ValaParameter* _tmp0_;
18994 ValaTargetValue* _tmp1_ = NULL;
18995 ValaTargetValue* _tmp2_;
18996 ValaCCodeExpression* _tmp3_ = NULL;
18997 ValaCCodeExpression* _tmp4_;
18998 g_return_val_if_fail (self != NULL, NULL);
18999 g_return_val_if_fail (param != NULL, NULL);
19001 _tmp1_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp0_);
19003 _tmp3_ = vala_ccode_base_module_destroy_value (self, _tmp2_, FALSE);
19005 _vala_target_value_unref0 (_tmp2_);
19011 ValaCCodeExpression* vala_ccode_base_module_destroy_field (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance) {
19012 ValaCCodeExpression* result = NULL;
19014 ValaTargetValue* _tmp1_;
19015 ValaTargetValue* _tmp2_ = NULL;
19016 ValaTargetValue* _tmp3_;
19017 ValaCCodeExpression* _tmp4_ = NULL;
19018 ValaCCodeExpression* _tmp5_;
19019 g_return_val_if_fail (self != NULL, NULL);
19020 g_return_val_if_fail (field != NULL, NULL);
19023 _tmp2_ = vala_ccode_base_module_get_field_cvalue (self, _tmp0_, _tmp1_);
19025 _tmp4_ = vala_ccode_base_module_destroy_value (self, _tmp3_, FALSE);
19027 _vala_target_value_unref0 (_tmp3_);
19033 static ValaCCodeExpression* vala_ccode_base_module_real_destroy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition) {
19034 ValaCCodeExpression* result = NULL;
19035 ValaTargetValue* _tmp0_;
19036 ValaDataType* _tmp1_;
19037 ValaDataType* _tmp2_;
19038 ValaDataType* _tmp3_;
19039 ValaDataType* type;
19040 ValaTargetValue* _tmp4_;
19041 ValaDataType* _tmp5_;
19042 ValaDataType* _tmp6_;
19043 ValaTargetValue* _tmp11_;
19044 ValaCCodeExpression* _tmp12_ = NULL;
19045 ValaCCodeExpression* cvar;
19046 ValaDataType* _tmp13_;
19047 ValaDataType* _tmp59_;
19048 ValaCCodeExpression* _tmp60_ = NULL;
19049 ValaCCodeExpression* _tmp61_;
19050 ValaCCodeFunctionCall* _tmp62_;
19051 ValaCCodeFunctionCall* _tmp63_;
19052 ValaCCodeFunctionCall* ccall;
19053 gboolean _tmp64_ = FALSE;
19054 ValaDataType* _tmp65_;
19056 gboolean _tmp148_ = FALSE;
19057 gboolean _tmp149_ = FALSE;
19058 ValaCCodeFunctionCall* _tmp150_;
19059 ValaCCodeExpression* _tmp151_;
19060 ValaCCodeExpression* _tmp152_;
19063 ValaCCodeExpression* _tmp187_;
19064 ValaCCodeConstant* _tmp188_;
19065 ValaCCodeConstant* _tmp189_;
19066 ValaCCodeBinaryExpression* _tmp190_;
19067 ValaCCodeBinaryExpression* _tmp191_;
19068 ValaCCodeBinaryExpression* cisnull;
19069 ValaDataType* _tmp192_;
19070 ValaTypeParameter* _tmp193_;
19071 ValaTypeParameter* _tmp194_;
19072 ValaCCodeFunctionCall* _tmp226_;
19073 ValaCCodeExpression* _tmp227_;
19074 ValaCCodeCommaExpression* _tmp228_;
19075 ValaCCodeCommaExpression* ccomma;
19076 gboolean _tmp229_ = FALSE;
19077 gboolean _tmp230_ = FALSE;
19078 ValaDataType* _tmp231_;
19079 ValaTypeSymbol* _tmp232_;
19080 ValaTypeSymbol* _tmp233_;
19083 ValaCCodeCommaExpression* _tmp338_;
19084 ValaCCodeFunctionCall* _tmp339_;
19085 ValaCCodeCommaExpression* _tmp340_;
19086 ValaCCodeConstant* _tmp341_;
19087 ValaCCodeConstant* _tmp342_;
19088 ValaCCodeExpression* _tmp343_;
19089 ValaCCodeCommaExpression* _tmp344_;
19090 ValaCCodeAssignment* _tmp345_;
19091 ValaCCodeAssignment* cassign;
19092 gboolean _tmp346_ = FALSE;
19093 gboolean _tmp347_ = FALSE;
19094 ValaDataType* _tmp348_;
19095 ValaTypeSymbol* _tmp349_;
19096 ValaTypeSymbol* _tmp350_;
19099 gboolean uses_gfree;
19100 gboolean _tmp362_ = FALSE;
19104 ValaCCodeBinaryExpression* _tmp367_;
19105 ValaCCodeConstant* _tmp368_;
19106 ValaCCodeConstant* _tmp369_;
19107 ValaCCodeAssignment* _tmp370_;
19108 ValaCCodeConditionalExpression* _tmp371_;
19109 ValaCCodeExpression* _tmp372_;
19110 g_return_val_if_fail (value != NULL, NULL);
19112 _tmp1_ = vala_target_value_get_value_type (_tmp0_);
19114 _tmp3_ = _vala_code_node_ref0 (_tmp2_);
19117 _tmp5_ = vala_target_value_get_actual_value_type (_tmp4_);
19119 if (_tmp6_ != NULL) {
19120 ValaTargetValue* _tmp7_;
19121 ValaDataType* _tmp8_;
19122 ValaDataType* _tmp9_;
19123 ValaDataType* _tmp10_;
19125 _tmp8_ = vala_target_value_get_actual_value_type (_tmp7_);
19127 _tmp10_ = _vala_code_node_ref0 (_tmp9_);
19128 _vala_code_node_unref0 (type);
19132 _tmp12_ = vala_ccode_base_module_get_cvalue_ (self, _tmp11_);
19135 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, VALA_TYPE_DELEGATE_TYPE)) {
19136 ValaTargetValue* _tmp14_;
19137 ValaCCodeExpression* _tmp15_ = NULL;
19138 ValaCCodeExpression* delegate_target;
19139 ValaTargetValue* _tmp16_;
19140 ValaCCodeExpression* _tmp17_ = NULL;
19141 ValaCCodeExpression* delegate_target_destroy_notify;
19142 ValaCCodeExpression* _tmp18_;
19143 ValaCCodeFunctionCall* _tmp19_;
19144 ValaCCodeFunctionCall* ccall;
19145 ValaCCodeFunctionCall* _tmp20_;
19146 ValaCCodeExpression* _tmp21_;
19147 ValaCCodeCommaExpression* _tmp22_;
19148 ValaCCodeCommaExpression* destroy_call;
19149 ValaCCodeCommaExpression* _tmp23_;
19150 ValaCCodeFunctionCall* _tmp24_;
19151 ValaCCodeCommaExpression* _tmp25_;
19152 ValaCCodeConstant* _tmp26_;
19153 ValaCCodeConstant* _tmp27_;
19154 ValaCCodeExpression* _tmp28_;
19155 ValaCCodeConstant* _tmp29_;
19156 ValaCCodeConstant* _tmp30_;
19157 ValaCCodeBinaryExpression* _tmp31_;
19158 ValaCCodeBinaryExpression* _tmp32_;
19159 ValaCCodeBinaryExpression* cisnull;
19160 ValaCCodeCommaExpression* _tmp33_;
19161 ValaCCodeCommaExpression* ccomma;
19162 ValaCCodeCommaExpression* _tmp34_;
19163 ValaCCodeBinaryExpression* _tmp35_;
19164 ValaCCodeConstant* _tmp36_;
19165 ValaCCodeConstant* _tmp37_;
19166 ValaCCodeCommaExpression* _tmp38_;
19167 ValaCCodeConditionalExpression* _tmp39_;
19168 ValaCCodeConditionalExpression* _tmp40_;
19169 ValaCCodeCommaExpression* _tmp41_;
19170 ValaCCodeExpression* _tmp42_;
19171 ValaCCodeConstant* _tmp43_;
19172 ValaCCodeConstant* _tmp44_;
19173 ValaCCodeAssignment* _tmp45_;
19174 ValaCCodeAssignment* _tmp46_;
19175 ValaCCodeCommaExpression* _tmp47_;
19176 ValaCCodeExpression* _tmp48_;
19177 ValaCCodeConstant* _tmp49_;
19178 ValaCCodeConstant* _tmp50_;
19179 ValaCCodeAssignment* _tmp51_;
19180 ValaCCodeAssignment* _tmp52_;
19181 ValaCCodeCommaExpression* _tmp53_;
19182 ValaCCodeExpression* _tmp54_;
19183 ValaCCodeConstant* _tmp55_;
19184 ValaCCodeConstant* _tmp56_;
19185 ValaCCodeAssignment* _tmp57_;
19186 ValaCCodeAssignment* _tmp58_;
19188 _tmp15_ = vala_ccode_base_module_get_delegate_target_cvalue (self, _tmp14_);
19189 delegate_target = _tmp15_;
19191 _tmp17_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp16_);
19192 delegate_target_destroy_notify = _tmp17_;
19193 _tmp18_ = delegate_target_destroy_notify;
19194 _tmp19_ = vala_ccode_function_call_new (_tmp18_);
19197 _tmp21_ = delegate_target;
19198 vala_ccode_function_call_add_argument (_tmp20_, _tmp21_);
19199 _tmp22_ = vala_ccode_comma_expression_new ();
19200 destroy_call = _tmp22_;
19201 _tmp23_ = destroy_call;
19203 vala_ccode_comma_expression_append_expression (_tmp23_, (ValaCCodeExpression*) _tmp24_);
19204 _tmp25_ = destroy_call;
19205 _tmp26_ = vala_ccode_constant_new ("NULL");
19207 vala_ccode_comma_expression_append_expression (_tmp25_, (ValaCCodeExpression*) _tmp27_);
19208 _vala_ccode_node_unref0 (_tmp27_);
19209 _tmp28_ = delegate_target_destroy_notify;
19210 _tmp29_ = vala_ccode_constant_new ("NULL");
19212 _tmp31_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, _tmp28_, (ValaCCodeExpression*) _tmp30_);
19214 _vala_ccode_node_unref0 (_tmp30_);
19216 _tmp33_ = vala_ccode_comma_expression_new ();
19220 _tmp36_ = vala_ccode_constant_new ("NULL");
19222 _tmp38_ = destroy_call;
19223 _tmp39_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp35_, (ValaCCodeExpression*) _tmp37_, (ValaCCodeExpression*) _tmp38_);
19225 vala_ccode_comma_expression_append_expression (_tmp34_, (ValaCCodeExpression*) _tmp40_);
19226 _vala_ccode_node_unref0 (_tmp40_);
19227 _vala_ccode_node_unref0 (_tmp37_);
19230 _tmp43_ = vala_ccode_constant_new ("NULL");
19232 _tmp45_ = vala_ccode_assignment_new (_tmp42_, (ValaCCodeExpression*) _tmp44_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
19234 vala_ccode_comma_expression_append_expression (_tmp41_, (ValaCCodeExpression*) _tmp46_);
19235 _vala_ccode_node_unref0 (_tmp46_);
19236 _vala_ccode_node_unref0 (_tmp44_);
19238 _tmp48_ = delegate_target;
19239 _tmp49_ = vala_ccode_constant_new ("NULL");
19241 _tmp51_ = vala_ccode_assignment_new (_tmp48_, (ValaCCodeExpression*) _tmp50_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
19243 vala_ccode_comma_expression_append_expression (_tmp47_, (ValaCCodeExpression*) _tmp52_);
19244 _vala_ccode_node_unref0 (_tmp52_);
19245 _vala_ccode_node_unref0 (_tmp50_);
19247 _tmp54_ = delegate_target_destroy_notify;
19248 _tmp55_ = vala_ccode_constant_new ("NULL");
19250 _tmp57_ = vala_ccode_assignment_new (_tmp54_, (ValaCCodeExpression*) _tmp56_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
19252 vala_ccode_comma_expression_append_expression (_tmp53_, (ValaCCodeExpression*) _tmp58_);
19253 _vala_ccode_node_unref0 (_tmp58_);
19254 _vala_ccode_node_unref0 (_tmp56_);
19255 result = (ValaCCodeExpression*) ccomma;
19256 _vala_ccode_node_unref0 (cisnull);
19257 _vala_ccode_node_unref0 (destroy_call);
19258 _vala_ccode_node_unref0 (ccall);
19259 _vala_ccode_node_unref0 (delegate_target_destroy_notify);
19260 _vala_ccode_node_unref0 (delegate_target);
19261 _vala_ccode_node_unref0 (cvar);
19262 _vala_code_node_unref0 (type);
19266 _tmp60_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp59_, FALSE);
19268 _tmp62_ = vala_ccode_function_call_new (_tmp61_);
19270 _vala_ccode_node_unref0 (_tmp61_);
19273 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp65_, VALA_TYPE_VALUE_TYPE)) {
19274 ValaDataType* _tmp66_;
19278 _tmp67_ = vala_data_type_get_nullable (_tmp66_);
19280 _tmp64_ = !_tmp68_;
19286 ValaDataType* _tmp70_;
19287 ValaTypeSymbol* _tmp71_;
19288 ValaTypeSymbol* _tmp72_;
19289 ValaStruct* _tmp73_;
19291 gboolean _tmp74_ = FALSE;
19292 ValaStruct* _tmp75_;
19294 gboolean _tmp85_ = FALSE;
19295 ValaStruct* _tmp86_;
19298 _tmp71_ = vala_data_type_get_data_type (_tmp70_);
19300 _tmp73_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp72_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp72_) : NULL);
19303 if (_tmp75_ != NULL) {
19304 ValaStruct* _tmp76_;
19305 gboolean _tmp77_ = FALSE;
19307 _tmp77_ = vala_struct_is_simple_type (_tmp76_);
19314 ValaCCodeFunctionCall* _tmp79_;
19315 ValaCCodeExpression* _tmp80_;
19318 vala_ccode_function_call_add_argument (_tmp79_, _tmp80_);
19320 ValaCCodeFunctionCall* _tmp81_;
19321 ValaCCodeExpression* _tmp82_;
19322 ValaCCodeUnaryExpression* _tmp83_;
19323 ValaCCodeUnaryExpression* _tmp84_;
19326 _tmp83_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp82_);
19328 vala_ccode_function_call_add_argument (_tmp81_, (ValaCCodeExpression*) _tmp84_);
19329 _vala_ccode_node_unref0 (_tmp84_);
19331 _tmp86_ = self->gvalue_type;
19332 if (_tmp86_ != NULL) {
19333 ValaDataType* _tmp87_;
19334 ValaTypeSymbol* _tmp88_;
19335 ValaTypeSymbol* _tmp89_;
19336 ValaStruct* _tmp90_;
19338 _tmp88_ = vala_data_type_get_data_type (_tmp87_);
19340 _tmp90_ = self->gvalue_type;
19341 _tmp85_ = _tmp89_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp90_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
19347 ValaCCodeIdentifier* _tmp92_;
19348 ValaCCodeIdentifier* _tmp93_;
19349 ValaCCodeFunctionCall* _tmp94_;
19350 ValaCCodeFunctionCall* _tmp95_;
19351 ValaCCodeFunctionCall* cisvalid;
19352 ValaCCodeFunctionCall* _tmp96_;
19353 ValaCCodeExpression* _tmp97_;
19354 ValaCCodeUnaryExpression* _tmp98_;
19355 ValaCCodeUnaryExpression* _tmp99_;
19356 ValaCCodeCommaExpression* _tmp100_;
19357 ValaCCodeCommaExpression* ccomma;
19358 ValaCCodeCommaExpression* _tmp101_;
19359 ValaCCodeFunctionCall* _tmp102_;
19360 ValaCCodeCommaExpression* _tmp103_;
19361 ValaCCodeConstant* _tmp104_;
19362 ValaCCodeConstant* _tmp105_;
19363 ValaCCodeFunctionCall* _tmp106_;
19364 ValaCCodeCommaExpression* _tmp107_;
19365 ValaCCodeConstant* _tmp108_;
19366 ValaCCodeConstant* _tmp109_;
19367 ValaCCodeConditionalExpression* _tmp110_;
19368 ValaCCodeExpression* _tmp111_;
19369 _tmp92_ = vala_ccode_identifier_new ("G_IS_VALUE");
19371 _tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_);
19373 _vala_ccode_node_unref0 (_tmp93_);
19374 cisvalid = _tmp95_;
19375 _tmp96_ = cisvalid;
19377 _tmp98_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp97_);
19379 vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp99_);
19380 _vala_ccode_node_unref0 (_tmp99_);
19381 _tmp100_ = vala_ccode_comma_expression_new ();
19385 vala_ccode_comma_expression_append_expression (_tmp101_, (ValaCCodeExpression*) _tmp102_);
19387 _tmp104_ = vala_ccode_constant_new ("NULL");
19388 _tmp105_ = _tmp104_;
19389 vala_ccode_comma_expression_append_expression (_tmp103_, (ValaCCodeExpression*) _tmp105_);
19390 _vala_ccode_node_unref0 (_tmp105_);
19391 _tmp106_ = cisvalid;
19393 _tmp108_ = vala_ccode_constant_new ("NULL");
19394 _tmp109_ = _tmp108_;
19395 _tmp110_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp106_, (ValaCCodeExpression*) _tmp107_, (ValaCCodeExpression*) _tmp109_);
19396 _tmp111_ = (ValaCCodeExpression*) _tmp110_;
19397 _vala_ccode_node_unref0 (_tmp109_);
19399 _vala_ccode_node_unref0 (ccomma);
19400 _vala_ccode_node_unref0 (cisvalid);
19401 _vala_code_node_unref0 (st);
19402 _vala_ccode_node_unref0 (ccall);
19403 _vala_ccode_node_unref0 (cvar);
19404 _vala_code_node_unref0 (type);
19407 gboolean _tmp112_ = FALSE;
19408 ValaCodeContext* _tmp113_;
19409 gboolean _tmp114_ = FALSE;
19411 _tmp113_ = self->priv->_context;
19412 _tmp114_ = vala_code_context_require_glib_version (_tmp113_, 2, 32);
19414 gboolean _tmp115_ = FALSE;
19415 gboolean _tmp116_ = FALSE;
19416 gboolean _tmp117_ = FALSE;
19417 ValaDataType* _tmp118_;
19418 ValaTypeSymbol* _tmp119_;
19419 ValaTypeSymbol* _tmp120_;
19420 ValaStruct* _tmp121_;
19425 _tmp119_ = vala_data_type_get_data_type (_tmp118_);
19426 _tmp120_ = _tmp119_;
19427 _tmp121_ = self->gmutex_type;
19428 if (_tmp120_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp121_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
19431 ValaDataType* _tmp122_;
19432 ValaTypeSymbol* _tmp123_;
19433 ValaTypeSymbol* _tmp124_;
19434 ValaStruct* _tmp125_;
19436 _tmp123_ = vala_data_type_get_data_type (_tmp122_);
19437 _tmp124_ = _tmp123_;
19438 _tmp125_ = self->grecmutex_type;
19439 _tmp117_ = _tmp124_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp125_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
19441 _tmp126_ = _tmp117_;
19445 ValaDataType* _tmp127_;
19446 ValaTypeSymbol* _tmp128_;
19447 ValaTypeSymbol* _tmp129_;
19448 ValaStruct* _tmp130_;
19450 _tmp128_ = vala_data_type_get_data_type (_tmp127_);
19451 _tmp129_ = _tmp128_;
19452 _tmp130_ = self->grwlock_type;
19453 _tmp116_ = _tmp129_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp130_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
19455 _tmp131_ = _tmp116_;
19459 ValaDataType* _tmp132_;
19460 ValaTypeSymbol* _tmp133_;
19461 ValaTypeSymbol* _tmp134_;
19462 ValaStruct* _tmp135_;
19464 _tmp133_ = vala_data_type_get_data_type (_tmp132_);
19465 _tmp134_ = _tmp133_;
19466 _tmp135_ = self->gcond_type;
19467 _tmp115_ = _tmp134_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp135_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
19469 _tmp136_ = _tmp115_;
19470 _tmp112_ = _tmp136_;
19474 _tmp137_ = _tmp112_;
19476 ValaCCodeFunctionCall* _tmp138_;
19477 ValaDataType* _tmp139_;
19478 ValaTypeSymbol* _tmp140_;
19479 ValaTypeSymbol* _tmp141_;
19480 gchar* _tmp142_ = NULL;
19484 ValaCCodeIdentifier* _tmp146_;
19485 ValaCCodeIdentifier* _tmp147_;
19486 self->requires_clear_mutex = TRUE;
19489 _tmp140_ = vala_data_type_get_data_type (_tmp139_);
19490 _tmp141_ = _tmp140_;
19491 _tmp142_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp141_);
19492 _tmp143_ = _tmp142_;
19493 _tmp144_ = g_strconcat ("_vala_clear_", _tmp143_, NULL);
19494 _tmp145_ = _tmp144_;
19495 _tmp146_ = vala_ccode_identifier_new (_tmp145_);
19496 _tmp147_ = _tmp146_;
19497 vala_ccode_function_call_set_call (_tmp138_, (ValaCCodeExpression*) _tmp147_);
19498 _vala_ccode_node_unref0 (_tmp147_);
19499 _g_free0 (_tmp145_);
19500 _g_free0 (_tmp143_);
19501 result = (ValaCCodeExpression*) ccall;
19502 _vala_code_node_unref0 (st);
19503 _vala_ccode_node_unref0 (cvar);
19504 _vala_code_node_unref0 (type);
19507 result = (ValaCCodeExpression*) ccall;
19508 _vala_code_node_unref0 (st);
19509 _vala_ccode_node_unref0 (cvar);
19510 _vala_code_node_unref0 (type);
19514 _vala_code_node_unref0 (st);
19517 _tmp151_ = vala_ccode_function_call_get_call (_tmp150_);
19518 _tmp152_ = _tmp151_;
19519 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp152_, VALA_TYPE_CCODE_IDENTIFIER)) {
19520 ValaDataType* _tmp153_;
19522 _tmp149_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp153_, VALA_TYPE_ARRAY_TYPE);
19526 _tmp154_ = _tmp149_;
19529 _tmp155_ = is_macro_definition;
19530 _tmp148_ = !_tmp155_;
19534 _tmp156_ = _tmp148_;
19536 ValaCCodeFunctionCall* _tmp157_;
19537 ValaCCodeExpression* _tmp158_;
19538 ValaCCodeExpression* _tmp159_;
19539 ValaCCodeIdentifier* _tmp160_;
19540 ValaCCodeIdentifier* freeid;
19541 ValaCCodeIdentifier* _tmp161_;
19542 const gchar* _tmp162_;
19543 const gchar* _tmp163_;
19544 gchar* _tmp164_ = NULL;
19546 const gchar* _tmp165_;
19547 gboolean _tmp166_ = FALSE;
19548 const gchar* _tmp181_;
19549 ValaCCodeIdentifier* _tmp182_;
19550 ValaCCodeIdentifier* _tmp183_;
19551 ValaCCodeFunctionCall* _tmp184_;
19552 ValaCCodeFunctionCall* _tmp185_;
19553 ValaCCodeExpression* _tmp186_;
19555 _tmp158_ = vala_ccode_function_call_get_call (_tmp157_);
19556 _tmp159_ = _tmp158_;
19557 _tmp160_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp159_, VALA_TYPE_CCODE_IDENTIFIER, ValaCCodeIdentifier));
19560 _tmp162_ = vala_ccode_identifier_get_name (_tmp161_);
19561 _tmp163_ = _tmp162_;
19562 _tmp164_ = g_strdup_printf ("_%s0", _tmp163_);
19563 free0_func = _tmp164_;
19564 _tmp165_ = free0_func;
19565 _tmp166_ = vala_ccode_base_module_add_wrapper (self, _tmp165_);
19567 ValaDataType* _tmp167_;
19568 ValaCCodeIdentifier* _tmp168_;
19569 ValaCCodeIdentifier* _tmp169_;
19570 ValaGLibValue* _tmp170_;
19571 ValaGLibValue* _tmp171_;
19572 ValaCCodeExpression* _tmp172_ = NULL;
19573 ValaCCodeExpression* _tmp173_;
19574 ValaCCodeExpression* macro;
19575 ValaCCodeFile* _tmp174_;
19576 const gchar* _tmp175_;
19577 gchar* _tmp176_ = NULL;
19579 ValaCCodeExpression* _tmp178_;
19580 ValaCCodeMacroReplacement* _tmp179_;
19581 ValaCCodeMacroReplacement* _tmp180_;
19583 _tmp168_ = vala_ccode_identifier_new ("var");
19584 _tmp169_ = _tmp168_;
19585 _tmp170_ = vala_glib_value_new (_tmp167_, (ValaCCodeExpression*) _tmp169_, TRUE);
19586 _tmp171_ = _tmp170_;
19587 _tmp172_ = vala_ccode_base_module_destroy_value (self, (ValaTargetValue*) _tmp171_, TRUE);
19588 _tmp173_ = _tmp172_;
19589 _vala_target_value_unref0 (_tmp171_);
19590 _vala_ccode_node_unref0 (_tmp169_);
19592 _tmp174_ = self->cfile;
19593 _tmp175_ = free0_func;
19594 _tmp176_ = g_strdup_printf ("%s(var)", _tmp175_);
19595 _tmp177_ = _tmp176_;
19597 _tmp179_ = vala_ccode_macro_replacement_new_with_expression (_tmp177_, _tmp178_);
19598 _tmp180_ = _tmp179_;
19599 vala_ccode_file_add_type_declaration (_tmp174_, (ValaCCodeNode*) _tmp180_);
19600 _vala_ccode_node_unref0 (_tmp180_);
19601 _g_free0 (_tmp177_);
19602 _vala_ccode_node_unref0 (macro);
19604 _tmp181_ = free0_func;
19605 _tmp182_ = vala_ccode_identifier_new (_tmp181_);
19606 _tmp183_ = _tmp182_;
19607 _tmp184_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp183_);
19608 _vala_ccode_node_unref0 (ccall);
19610 _vala_ccode_node_unref0 (_tmp183_);
19613 vala_ccode_function_call_add_argument (_tmp185_, _tmp186_);
19614 result = (ValaCCodeExpression*) ccall;
19615 _g_free0 (free0_func);
19616 _vala_ccode_node_unref0 (freeid);
19617 _vala_ccode_node_unref0 (cvar);
19618 _vala_code_node_unref0 (type);
19622 _tmp188_ = vala_ccode_constant_new ("NULL");
19623 _tmp189_ = _tmp188_;
19624 _tmp190_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, _tmp187_, (ValaCCodeExpression*) _tmp189_);
19625 _tmp191_ = _tmp190_;
19626 _vala_ccode_node_unref0 (_tmp189_);
19627 cisnull = _tmp191_;
19629 _tmp193_ = vala_data_type_get_type_parameter (_tmp192_);
19630 _tmp194_ = _tmp193_;
19631 if (_tmp194_ != NULL) {
19632 ValaDataType* _tmp195_;
19633 ValaTypeParameter* _tmp196_;
19634 ValaTypeParameter* _tmp197_;
19635 ValaSymbol* _tmp198_;
19636 ValaSymbol* _tmp199_;
19637 ValaSymbol* _tmp200_;
19638 ValaSymbol* parent;
19639 ValaSymbol* _tmp201_;
19640 ValaClass* _tmp202_;
19642 gboolean _tmp203_ = FALSE;
19643 gboolean _tmp204_ = FALSE;
19644 ValaSymbol* _tmp205_;
19647 ValaDataType* _tmp216_;
19648 ValaCCodeExpression* _tmp217_ = NULL;
19649 ValaCCodeExpression* _tmp218_;
19650 ValaCCodeConstant* _tmp219_;
19651 ValaCCodeConstant* _tmp220_;
19652 ValaCCodeBinaryExpression* _tmp221_;
19653 ValaCCodeBinaryExpression* _tmp222_;
19654 ValaCCodeBinaryExpression* cunrefisnull;
19655 ValaCCodeBinaryExpression* _tmp223_;
19656 ValaCCodeBinaryExpression* _tmp224_;
19657 ValaCCodeBinaryExpression* _tmp225_;
19659 _tmp196_ = vala_data_type_get_type_parameter (_tmp195_);
19660 _tmp197_ = _tmp196_;
19661 _tmp198_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp197_);
19662 _tmp199_ = _tmp198_;
19663 _tmp200_ = _vala_code_node_ref0 (_tmp199_);
19666 _tmp202_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp201_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp201_) : NULL);
19669 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp205_, VALA_TYPE_METHOD)) {
19670 ValaSymbol* _tmp206_;
19672 _tmp204_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp206_, VALA_TYPE_OBJECT_TYPE_SYMBOL);
19676 _tmp207_ = _tmp204_;
19680 gboolean _tmp208_ = FALSE;
19681 ValaClass* _tmp209_;
19684 if (_tmp209_ != NULL) {
19685 ValaClass* _tmp210_;
19689 _tmp211_ = vala_class_get_is_compact (_tmp210_);
19690 _tmp212_ = _tmp211_;
19691 _tmp208_ = _tmp212_;
19695 _tmp213_ = _tmp208_;
19696 _tmp203_ = _tmp213_;
19698 _tmp214_ = _tmp203_;
19700 ValaCCodeConstant* _tmp215_;
19701 _tmp215_ = vala_ccode_constant_new ("NULL");
19702 result = (ValaCCodeExpression*) _tmp215_;
19703 _vala_code_node_unref0 (cl);
19704 _vala_code_node_unref0 (parent);
19705 _vala_ccode_node_unref0 (cisnull);
19706 _vala_ccode_node_unref0 (ccall);
19707 _vala_ccode_node_unref0 (cvar);
19708 _vala_code_node_unref0 (type);
19712 _tmp217_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp216_, FALSE);
19713 _tmp218_ = _tmp217_;
19714 _tmp219_ = vala_ccode_constant_new ("NULL");
19715 _tmp220_ = _tmp219_;
19716 _tmp221_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, _tmp218_, (ValaCCodeExpression*) _tmp220_);
19717 _tmp222_ = _tmp221_;
19718 _vala_ccode_node_unref0 (_tmp220_);
19719 _vala_ccode_node_unref0 (_tmp218_);
19720 cunrefisnull = _tmp222_;
19721 _tmp223_ = cisnull;
19722 _tmp224_ = cunrefisnull;
19723 _tmp225_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_OR, (ValaCCodeExpression*) _tmp223_, (ValaCCodeExpression*) _tmp224_);
19724 _vala_ccode_node_unref0 (cisnull);
19725 cisnull = _tmp225_;
19726 _vala_ccode_node_unref0 (cunrefisnull);
19727 _vala_code_node_unref0 (cl);
19728 _vala_code_node_unref0 (parent);
19732 vala_ccode_function_call_add_argument (_tmp226_, _tmp227_);
19733 _tmp228_ = vala_ccode_comma_expression_new ();
19736 _tmp232_ = vala_data_type_get_data_type (_tmp231_);
19737 _tmp233_ = _tmp232_;
19738 if (_tmp233_ != NULL) {
19739 ValaDataType* _tmp234_;
19740 ValaTypeSymbol* _tmp235_;
19741 ValaTypeSymbol* _tmp236_;
19742 gboolean _tmp237_ = FALSE;
19744 _tmp235_ = vala_data_type_get_data_type (_tmp234_);
19745 _tmp236_ = _tmp235_;
19746 _tmp237_ = vala_ccode_base_module_is_reference_counting (_tmp236_);
19747 _tmp230_ = !_tmp237_;
19751 _tmp238_ = _tmp230_;
19753 gboolean _tmp239_ = FALSE;
19754 gboolean _tmp240_ = FALSE;
19755 gboolean _tmp241_ = FALSE;
19756 ValaDataType* _tmp242_;
19757 ValaTypeSymbol* _tmp243_;
19758 ValaTypeSymbol* _tmp244_;
19759 ValaTypeSymbol* _tmp245_;
19760 gboolean _tmp246_ = FALSE;
19765 _tmp243_ = vala_data_type_get_data_type (_tmp242_);
19766 _tmp244_ = _tmp243_;
19767 _tmp245_ = self->gstringbuilder_type;
19768 _tmp246_ = vala_typesymbol_is_subtype_of (_tmp244_, _tmp245_);
19772 ValaDataType* _tmp247_;
19773 ValaTypeSymbol* _tmp248_;
19774 ValaTypeSymbol* _tmp249_;
19775 ValaTypeSymbol* _tmp250_;
19776 gboolean _tmp251_ = FALSE;
19778 _tmp248_ = vala_data_type_get_data_type (_tmp247_);
19779 _tmp249_ = _tmp248_;
19780 _tmp250_ = self->garray_type;
19781 _tmp251_ = vala_typesymbol_is_subtype_of (_tmp249_, _tmp250_);
19782 _tmp241_ = _tmp251_;
19784 _tmp252_ = _tmp241_;
19788 ValaDataType* _tmp253_;
19789 ValaTypeSymbol* _tmp254_;
19790 ValaTypeSymbol* _tmp255_;
19791 ValaTypeSymbol* _tmp256_;
19792 gboolean _tmp257_ = FALSE;
19794 _tmp254_ = vala_data_type_get_data_type (_tmp253_);
19795 _tmp255_ = _tmp254_;
19796 _tmp256_ = self->gbytearray_type;
19797 _tmp257_ = vala_typesymbol_is_subtype_of (_tmp255_, _tmp256_);
19798 _tmp240_ = _tmp257_;
19800 _tmp258_ = _tmp240_;
19804 ValaDataType* _tmp259_;
19805 ValaTypeSymbol* _tmp260_;
19806 ValaTypeSymbol* _tmp261_;
19807 ValaTypeSymbol* _tmp262_;
19808 gboolean _tmp263_ = FALSE;
19810 _tmp260_ = vala_data_type_get_data_type (_tmp259_);
19811 _tmp261_ = _tmp260_;
19812 _tmp262_ = self->gptrarray_type;
19813 _tmp263_ = vala_typesymbol_is_subtype_of (_tmp261_, _tmp262_);
19814 _tmp239_ = _tmp263_;
19816 _tmp264_ = _tmp239_;
19817 _tmp229_ = _tmp264_;
19821 _tmp265_ = _tmp229_;
19823 ValaCCodeFunctionCall* _tmp266_;
19824 ValaCCodeConstant* _tmp267_;
19825 ValaCCodeConstant* _tmp268_;
19827 _tmp267_ = vala_ccode_constant_new ("TRUE");
19828 _tmp268_ = _tmp267_;
19829 vala_ccode_function_call_add_argument (_tmp266_, (ValaCCodeExpression*) _tmp268_);
19830 _vala_ccode_node_unref0 (_tmp268_);
19832 ValaDataType* _tmp269_;
19833 ValaTypeSymbol* _tmp270_;
19834 ValaTypeSymbol* _tmp271_;
19835 ValaTypeSymbol* _tmp272_;
19837 _tmp270_ = vala_data_type_get_data_type (_tmp269_);
19838 _tmp271_ = _tmp270_;
19839 _tmp272_ = self->gthreadpool_type;
19840 if (_tmp271_ == _tmp272_) {
19841 ValaCCodeFunctionCall* _tmp273_;
19842 ValaCCodeConstant* _tmp274_;
19843 ValaCCodeConstant* _tmp275_;
19844 ValaCCodeFunctionCall* _tmp276_;
19845 ValaCCodeConstant* _tmp277_;
19846 ValaCCodeConstant* _tmp278_;
19848 _tmp274_ = vala_ccode_constant_new ("FALSE");
19849 _tmp275_ = _tmp274_;
19850 vala_ccode_function_call_add_argument (_tmp273_, (ValaCCodeExpression*) _tmp275_);
19851 _vala_ccode_node_unref0 (_tmp275_);
19853 _tmp277_ = vala_ccode_constant_new ("TRUE");
19854 _tmp278_ = _tmp277_;
19855 vala_ccode_function_call_add_argument (_tmp276_, (ValaCCodeExpression*) _tmp278_);
19856 _vala_ccode_node_unref0 (_tmp278_);
19858 ValaDataType* _tmp279_;
19860 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp279_, VALA_TYPE_ARRAY_TYPE)) {
19861 ValaDataType* _tmp280_;
19862 ValaArrayType* _tmp281_;
19863 ValaArrayType* array_type;
19864 ValaArrayType* _tmp282_;
19865 ValaDataType* _tmp283_;
19866 ValaDataType* _tmp284_;
19867 gboolean _tmp285_ = FALSE;
19869 _tmp281_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp280_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
19870 array_type = _tmp281_;
19871 _tmp282_ = array_type;
19872 _tmp283_ = vala_array_type_get_element_type (_tmp282_);
19873 _tmp284_ = _tmp283_;
19874 _tmp285_ = vala_ccode_base_module_requires_destroy (self, _tmp284_);
19876 ValaCCodeExpression* csizeexpr;
19877 ValaTargetValue* _tmp286_;
19878 ValaList* _tmp287_;
19879 ValaCCodeExpression* _tmp302_;
19882 _tmp287_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp286_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->array_length_cvalues;
19883 if (_tmp287_ != NULL) {
19884 ValaTargetValue* _tmp288_;
19885 ValaCCodeExpression* _tmp289_ = NULL;
19887 _tmp289_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp288_, -1);
19888 _vala_ccode_node_unref0 (csizeexpr);
19889 csizeexpr = _tmp289_;
19891 ValaTargetValue* _tmp290_;
19892 gboolean _tmp291_ = FALSE;
19894 _tmp291_ = vala_ccode_base_module_get_array_null_terminated (self, _tmp290_);
19896 ValaCCodeIdentifier* _tmp292_;
19897 ValaCCodeIdentifier* _tmp293_;
19898 ValaCCodeFunctionCall* _tmp294_;
19899 ValaCCodeFunctionCall* _tmp295_;
19900 ValaCCodeFunctionCall* len_call;
19901 ValaCCodeFunctionCall* _tmp296_;
19902 ValaCCodeExpression* _tmp297_;
19903 ValaCCodeFunctionCall* _tmp298_;
19904 ValaCCodeExpression* _tmp299_;
19905 self->requires_array_length = TRUE;
19906 _tmp292_ = vala_ccode_identifier_new ("_vala_array_length");
19907 _tmp293_ = _tmp292_;
19908 _tmp294_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp293_);
19909 _tmp295_ = _tmp294_;
19910 _vala_ccode_node_unref0 (_tmp293_);
19911 len_call = _tmp295_;
19912 _tmp296_ = len_call;
19914 vala_ccode_function_call_add_argument (_tmp296_, _tmp297_);
19915 _tmp298_ = len_call;
19916 _tmp299_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp298_);
19917 _vala_ccode_node_unref0 (csizeexpr);
19918 csizeexpr = _tmp299_;
19919 _vala_ccode_node_unref0 (len_call);
19921 ValaTargetValue* _tmp300_;
19922 ValaCCodeExpression* _tmp301_ = NULL;
19924 _tmp301_ = vala_ccode_base_module_get_array_length_cexpr (self, _tmp300_);
19925 _vala_ccode_node_unref0 (csizeexpr);
19926 csizeexpr = _tmp301_;
19929 _tmp302_ = csizeexpr;
19930 if (_tmp302_ != NULL) {
19931 ValaArrayType* _tmp303_;
19932 ValaDataType* _tmp304_;
19933 ValaDataType* _tmp305_;
19934 ValaTypeSymbol* _tmp306_;
19935 ValaTypeSymbol* _tmp307_;
19936 ValaStruct* _tmp308_;
19938 gboolean _tmp309_ = FALSE;
19939 ValaStruct* _tmp310_;
19941 _tmp303_ = array_type;
19942 _tmp304_ = vala_array_type_get_element_type (_tmp303_);
19943 _tmp305_ = _tmp304_;
19944 _tmp306_ = vala_data_type_get_data_type (_tmp305_);
19945 _tmp307_ = _tmp306_;
19946 _tmp308_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp307_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp307_) : NULL);
19949 if (_tmp310_ != NULL) {
19950 ValaArrayType* _tmp311_;
19951 ValaDataType* _tmp312_;
19952 ValaDataType* _tmp313_;
19955 _tmp311_ = array_type;
19956 _tmp312_ = vala_array_type_get_element_type (_tmp311_);
19957 _tmp313_ = _tmp312_;
19958 _tmp314_ = vala_data_type_get_nullable (_tmp313_);
19959 _tmp315_ = _tmp314_;
19960 _tmp309_ = !_tmp315_;
19964 _tmp316_ = _tmp309_;
19966 ValaCCodeFunctionCall* _tmp317_;
19967 ValaStruct* _tmp318_;
19968 gchar* _tmp319_ = NULL;
19970 ValaCCodeIdentifier* _tmp321_;
19971 ValaCCodeIdentifier* _tmp322_;
19972 ValaCCodeFunctionCall* _tmp323_;
19973 ValaCCodeExpression* _tmp324_;
19976 _tmp319_ = vala_ccode_base_module_append_struct_array_free (self, _tmp318_);
19977 _tmp320_ = _tmp319_;
19978 _tmp321_ = vala_ccode_identifier_new (_tmp320_);
19979 _tmp322_ = _tmp321_;
19980 vala_ccode_function_call_set_call (_tmp317_, (ValaCCodeExpression*) _tmp322_);
19981 _vala_ccode_node_unref0 (_tmp322_);
19982 _g_free0 (_tmp320_);
19984 _tmp324_ = csizeexpr;
19985 vala_ccode_function_call_add_argument (_tmp323_, _tmp324_);
19987 ValaCCodeFunctionCall* _tmp325_;
19988 ValaCCodeIdentifier* _tmp326_;
19989 ValaCCodeIdentifier* _tmp327_;
19990 ValaCCodeFunctionCall* _tmp328_;
19991 ValaCCodeExpression* _tmp329_;
19992 ValaCCodeFunctionCall* _tmp330_;
19993 ValaArrayType* _tmp331_;
19994 ValaDataType* _tmp332_;
19995 ValaDataType* _tmp333_;
19996 ValaCCodeExpression* _tmp334_ = NULL;
19997 ValaCCodeExpression* _tmp335_;
19998 ValaCCodeCastExpression* _tmp336_;
19999 ValaCCodeCastExpression* _tmp337_;
20000 self->requires_array_free = TRUE;
20002 _tmp326_ = vala_ccode_identifier_new ("_vala_array_free");
20003 _tmp327_ = _tmp326_;
20004 vala_ccode_function_call_set_call (_tmp325_, (ValaCCodeExpression*) _tmp327_);
20005 _vala_ccode_node_unref0 (_tmp327_);
20007 _tmp329_ = csizeexpr;
20008 vala_ccode_function_call_add_argument (_tmp328_, _tmp329_);
20010 _tmp331_ = array_type;
20011 _tmp332_ = vala_array_type_get_element_type (_tmp331_);
20012 _tmp333_ = _tmp332_;
20013 _tmp334_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp333_, FALSE);
20014 _tmp335_ = _tmp334_;
20015 _tmp336_ = vala_ccode_cast_expression_new (_tmp335_, "GDestroyNotify");
20016 _tmp337_ = _tmp336_;
20017 vala_ccode_function_call_add_argument (_tmp330_, (ValaCCodeExpression*) _tmp337_);
20018 _vala_ccode_node_unref0 (_tmp337_);
20019 _vala_ccode_node_unref0 (_tmp335_);
20021 _vala_code_node_unref0 (st);
20023 _vala_ccode_node_unref0 (csizeexpr);
20025 _vala_code_node_unref0 (array_type);
20031 vala_ccode_comma_expression_append_expression (_tmp338_, (ValaCCodeExpression*) _tmp339_);
20033 _tmp341_ = vala_ccode_constant_new ("NULL");
20034 _tmp342_ = _tmp341_;
20035 vala_ccode_comma_expression_append_expression (_tmp340_, (ValaCCodeExpression*) _tmp342_);
20036 _vala_ccode_node_unref0 (_tmp342_);
20039 _tmp345_ = vala_ccode_assignment_new (_tmp343_, (ValaCCodeExpression*) _tmp344_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
20040 cassign = _tmp345_;
20042 _tmp349_ = vala_data_type_get_data_type (_tmp348_);
20043 _tmp350_ = _tmp349_;
20044 if (_tmp350_ != NULL) {
20045 ValaDataType* _tmp351_;
20046 ValaTypeSymbol* _tmp352_;
20047 ValaTypeSymbol* _tmp353_;
20048 gboolean _tmp354_ = FALSE;
20050 _tmp352_ = vala_data_type_get_data_type (_tmp351_);
20051 _tmp353_ = _tmp352_;
20052 _tmp354_ = vala_ccode_base_module_is_reference_counting (_tmp353_);
20053 _tmp347_ = !_tmp354_;
20057 _tmp355_ = _tmp347_;
20059 ValaDataType* _tmp356_;
20060 ValaTypeSymbol* _tmp357_;
20061 ValaTypeSymbol* _tmp358_;
20062 gchar* _tmp359_ = NULL;
20065 _tmp357_ = vala_data_type_get_data_type (_tmp356_);
20066 _tmp358_ = _tmp357_;
20067 _tmp359_ = vala_ccode_base_module_get_ccode_free_function (_tmp358_);
20068 _tmp360_ = _tmp359_;
20069 _tmp346_ = g_strcmp0 (_tmp360_, "g_free") == 0;
20070 _g_free0 (_tmp360_);
20074 _tmp361_ = _tmp346_;
20075 uses_gfree = _tmp361_;
20076 _tmp363_ = uses_gfree;
20080 ValaDataType* _tmp364_;
20082 _tmp362_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp364_, VALA_TYPE_ARRAY_TYPE);
20084 _tmp365_ = _tmp362_;
20085 uses_gfree = _tmp365_;
20086 _tmp366_ = uses_gfree;
20088 result = (ValaCCodeExpression*) cassign;
20089 _vala_ccode_node_unref0 (ccomma);
20090 _vala_ccode_node_unref0 (cisnull);
20091 _vala_ccode_node_unref0 (ccall);
20092 _vala_ccode_node_unref0 (cvar);
20093 _vala_code_node_unref0 (type);
20096 _tmp367_ = cisnull;
20097 _tmp368_ = vala_ccode_constant_new ("NULL");
20098 _tmp369_ = _tmp368_;
20099 _tmp370_ = cassign;
20100 _tmp371_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp367_, (ValaCCodeExpression*) _tmp369_, (ValaCCodeExpression*) _tmp370_);
20101 _tmp372_ = (ValaCCodeExpression*) _tmp371_;
20102 _vala_ccode_node_unref0 (_tmp369_);
20104 _vala_ccode_node_unref0 (cassign);
20105 _vala_ccode_node_unref0 (ccomma);
20106 _vala_ccode_node_unref0 (cisnull);
20107 _vala_ccode_node_unref0 (ccall);
20108 _vala_ccode_node_unref0 (cvar);
20109 _vala_code_node_unref0 (type);
20114 ValaCCodeExpression* vala_ccode_base_module_destroy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition) {
20115 g_return_val_if_fail (self != NULL, NULL);
20116 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->destroy_value (self, value, is_macro_definition);
20120 static void vala_ccode_base_module_real_visit_end_full_expression (ValaCodeVisitor* base, ValaExpression* expr) {
20121 ValaCCodeBaseModule * self;
20122 ValaArrayList* _tmp0_;
20123 ValaArrayList* _tmp1_;
20126 ValaExpression* _tmp4_;
20127 ValaCodeNode* _tmp5_;
20128 ValaCodeNode* _tmp6_;
20129 ValaLocalVariable* _tmp7_;
20130 ValaLocalVariable* local_decl;
20131 gboolean _tmp8_ = FALSE;
20132 ValaLocalVariable* _tmp9_;
20134 ValaArrayList* _tmp40_;
20135 ValaArrayList* _tmp41_;
20136 self = (ValaCCodeBaseModule*) base;
20137 g_return_if_fail (expr != NULL);
20138 _tmp0_ = vala_ccode_base_module_get_temp_ref_values (self);
20140 _tmp2_ = vala_collection_get_size ((ValaCollection*) _tmp1_);
20146 _tmp5_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp4_);
20148 _tmp7_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp6_) : NULL);
20149 local_decl = _tmp7_;
20150 _tmp9_ = local_decl;
20151 if (_tmp9_ != NULL) {
20152 ValaLocalVariable* _tmp10_;
20153 ValaLocalVariable* _tmp11_;
20154 ValaExpression* _tmp12_;
20155 ValaExpression* _tmp13_;
20156 gboolean _tmp14_ = FALSE;
20157 _tmp10_ = local_decl;
20158 _tmp11_ = local_decl;
20159 _tmp12_ = vala_variable_get_initializer ((ValaVariable*) _tmp11_);
20161 _tmp14_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp10_, _tmp13_);
20168 ValaExpression* _tmp16_;
20169 ValaExpression* _tmp17_;
20170 ValaTargetValue* _tmp18_;
20171 ValaTargetValue* _tmp19_;
20172 ValaExpression* _tmp20_;
20173 ValaTargetValue* _tmp21_ = NULL;
20174 ValaTargetValue* _tmp22_;
20177 _tmp18_ = vala_expression_get_target_value (_tmp17_);
20180 _tmp21_ = vala_ccode_base_module_store_temp_value (self, _tmp19_, (ValaCodeNode*) _tmp20_, NULL);
20182 vala_expression_set_target_value (_tmp16_, _tmp22_);
20183 _vala_target_value_unref0 (_tmp22_);
20186 ValaArrayList* _tmp23_;
20187 ValaArrayList* _tmp24_;
20188 ValaArrayList* _tmp25_;
20189 ValaArrayList* _value_list;
20190 ValaArrayList* _tmp26_;
20195 _tmp23_ = vala_ccode_base_module_get_temp_ref_values (self);
20197 _tmp25_ = _vala_iterable_ref0 (_tmp24_);
20198 _value_list = _tmp25_;
20199 _tmp26_ = _value_list;
20200 _tmp27_ = vala_collection_get_size ((ValaCollection*) _tmp26_);
20202 _value_size = _tmp28_;
20208 ValaArrayList* _tmp32_;
20210 gpointer _tmp34_ = NULL;
20211 ValaTargetValue* value;
20212 ValaCCodeFunction* _tmp35_;
20213 ValaCCodeFunction* _tmp36_;
20214 ValaTargetValue* _tmp37_;
20215 ValaCCodeExpression* _tmp38_ = NULL;
20216 ValaCCodeExpression* _tmp39_;
20217 _tmp29_ = _value_index;
20218 _value_index = _tmp29_ + 1;
20219 _tmp30_ = _value_index;
20220 _tmp31_ = _value_size;
20221 if (!(_tmp30_ < _tmp31_)) {
20224 _tmp32_ = _value_list;
20225 _tmp33_ = _value_index;
20226 _tmp34_ = vala_list_get ((ValaList*) _tmp32_, _tmp33_);
20227 value = (ValaTargetValue*) _tmp34_;
20228 _tmp35_ = vala_ccode_base_module_get_ccode (self);
20231 _tmp38_ = vala_ccode_base_module_destroy_value (self, _tmp37_, FALSE);
20233 vala_ccode_function_add_expression (_tmp36_, _tmp39_);
20234 _vala_ccode_node_unref0 (_tmp39_);
20235 _vala_target_value_unref0 (value);
20237 _vala_iterable_unref0 (_value_list);
20239 _tmp40_ = vala_ccode_base_module_get_temp_ref_values (self);
20241 vala_collection_clear ((ValaCollection*) _tmp41_);
20242 _vala_code_node_unref0 (local_decl);
20246 void vala_ccode_base_module_emit_temp_var (ValaCCodeBaseModule* self, ValaLocalVariable* local) {
20247 gboolean _tmp0_ = FALSE;
20248 ValaLocalVariable* _tmp1_;
20249 const gchar* _tmp2_;
20250 const gchar* _tmp3_;
20251 gboolean _tmp4_ = FALSE;
20254 gboolean _tmp9_ = FALSE;
20255 g_return_if_fail (self != NULL);
20256 g_return_if_fail (local != NULL);
20258 _tmp2_ = vala_symbol_get_name ((ValaSymbol*) _tmp1_);
20260 _tmp4_ = g_str_has_prefix (_tmp3_, "*");
20264 ValaLocalVariable* _tmp5_;
20268 _tmp6_ = vala_local_variable_get_no_init (_tmp5_);
20274 _tmp9_ = vala_ccode_base_module_is_in_coroutine (self);
20276 ValaCCodeStruct* _tmp10_;
20277 ValaLocalVariable* _tmp11_;
20278 ValaDataType* _tmp12_;
20279 ValaDataType* _tmp13_;
20280 gchar* _tmp14_ = NULL;
20282 ValaLocalVariable* _tmp16_;
20283 const gchar* _tmp17_;
20284 const gchar* _tmp18_;
20286 _tmp10_ = self->closure_struct;
20288 _tmp12_ = vala_variable_get_variable_type ((ValaVariable*) _tmp11_);
20290 _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_);
20293 _tmp17_ = vala_symbol_get_name ((ValaSymbol*) _tmp16_);
20295 vala_ccode_struct_add_field (_tmp10_, _tmp15_, _tmp18_, NULL);
20296 _g_free0 (_tmp15_);
20299 ValaLocalVariable* _tmp20_;
20300 ValaDataType* _tmp21_;
20301 ValaDataType* _tmp22_;
20302 ValaCCodeExpression* _tmp23_ = NULL;
20303 ValaCCodeExpression* initializer;
20304 ValaCCodeExpression* _tmp24_;
20306 _tmp21_ = vala_variable_get_variable_type ((ValaVariable*) _tmp20_);
20308 _tmp23_ = vala_ccode_base_module_default_value_for_type (self, _tmp22_, FALSE);
20309 initializer = _tmp23_;
20310 _tmp24_ = initializer;
20311 if (_tmp24_ == NULL) {
20312 ValaCCodeFile* _tmp25_;
20313 ValaCCodeIdentifier* _tmp26_;
20314 ValaCCodeIdentifier* _tmp27_;
20315 ValaCCodeFunctionCall* _tmp28_;
20316 ValaCCodeFunctionCall* _tmp29_;
20317 ValaCCodeFunctionCall* memset_call;
20318 ValaCCodeFunctionCall* _tmp30_;
20319 ValaLocalVariable* _tmp31_;
20320 const gchar* _tmp32_;
20321 const gchar* _tmp33_;
20322 ValaCCodeExpression* _tmp34_ = NULL;
20323 ValaCCodeExpression* _tmp35_;
20324 ValaCCodeUnaryExpression* _tmp36_;
20325 ValaCCodeUnaryExpression* _tmp37_;
20326 ValaCCodeFunctionCall* _tmp38_;
20327 ValaCCodeConstant* _tmp39_;
20328 ValaCCodeConstant* _tmp40_;
20329 ValaCCodeFunctionCall* _tmp41_;
20330 ValaLocalVariable* _tmp42_;
20331 ValaDataType* _tmp43_;
20332 ValaDataType* _tmp44_;
20333 gchar* _tmp45_ = NULL;
20335 gchar* _tmp47_ = NULL;
20337 ValaCCodeIdentifier* _tmp49_;
20338 ValaCCodeIdentifier* _tmp50_;
20339 ValaCCodeFunction* _tmp51_;
20340 ValaCCodeFunction* _tmp52_;
20341 ValaCCodeFunctionCall* _tmp53_;
20342 _tmp25_ = self->cfile;
20343 vala_ccode_file_add_include (_tmp25_, "string.h", FALSE);
20344 _tmp26_ = vala_ccode_identifier_new ("memset");
20346 _tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_);
20348 _vala_ccode_node_unref0 (_tmp27_);
20349 memset_call = _tmp29_;
20350 _tmp30_ = memset_call;
20352 _tmp32_ = vala_symbol_get_name ((ValaSymbol*) _tmp31_);
20354 _tmp34_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp33_);
20356 _tmp36_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp35_);
20358 vala_ccode_function_call_add_argument (_tmp30_, (ValaCCodeExpression*) _tmp37_);
20359 _vala_ccode_node_unref0 (_tmp37_);
20360 _vala_ccode_node_unref0 (_tmp35_);
20361 _tmp38_ = memset_call;
20362 _tmp39_ = vala_ccode_constant_new ("0");
20364 vala_ccode_function_call_add_argument (_tmp38_, (ValaCCodeExpression*) _tmp40_);
20365 _vala_ccode_node_unref0 (_tmp40_);
20366 _tmp41_ = memset_call;
20368 _tmp43_ = vala_variable_get_variable_type ((ValaVariable*) _tmp42_);
20370 _tmp45_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp44_);
20372 _tmp47_ = g_strdup_printf ("sizeof (%s)", _tmp46_);
20374 _tmp49_ = vala_ccode_identifier_new (_tmp48_);
20376 vala_ccode_function_call_add_argument (_tmp41_, (ValaCCodeExpression*) _tmp50_);
20377 _vala_ccode_node_unref0 (_tmp50_);
20378 _g_free0 (_tmp48_);
20379 _g_free0 (_tmp46_);
20380 _tmp51_ = vala_ccode_base_module_get_ccode (self);
20382 _tmp53_ = memset_call;
20383 vala_ccode_function_add_expression (_tmp52_, (ValaCCodeExpression*) _tmp53_);
20384 _vala_ccode_node_unref0 (memset_call);
20386 ValaCCodeFunction* _tmp54_;
20387 ValaCCodeFunction* _tmp55_;
20388 ValaLocalVariable* _tmp56_;
20389 const gchar* _tmp57_;
20390 const gchar* _tmp58_;
20391 ValaCCodeExpression* _tmp59_ = NULL;
20392 ValaCCodeExpression* _tmp60_;
20393 ValaCCodeExpression* _tmp61_;
20394 _tmp54_ = vala_ccode_base_module_get_ccode (self);
20397 _tmp57_ = vala_symbol_get_name ((ValaSymbol*) _tmp56_);
20399 _tmp59_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp58_);
20401 _tmp61_ = initializer;
20402 vala_ccode_function_add_assignment (_tmp55_, _tmp60_, _tmp61_);
20403 _vala_ccode_node_unref0 (_tmp60_);
20405 _vala_ccode_node_unref0 (initializer);
20408 ValaLocalVariable* _tmp62_;
20409 const gchar* _tmp63_;
20410 const gchar* _tmp64_;
20411 ValaLocalVariable* _tmp65_;
20412 ValaDataType* _tmp66_;
20413 ValaDataType* _tmp67_;
20414 gchar* _tmp68_ = NULL;
20416 ValaCCodeVariableDeclarator* _tmp70_;
20417 ValaCCodeVariableDeclarator* _tmp71_;
20418 ValaCCodeVariableDeclarator* cvar;
20420 ValaCCodeFunction* _tmp80_;
20421 ValaCCodeFunction* _tmp81_;
20422 ValaLocalVariable* _tmp82_;
20423 ValaDataType* _tmp83_;
20424 ValaDataType* _tmp84_;
20425 gchar* _tmp85_ = NULL;
20427 ValaCCodeVariableDeclarator* _tmp87_;
20429 _tmp63_ = vala_symbol_get_name ((ValaSymbol*) _tmp62_);
20432 _tmp66_ = vala_variable_get_variable_type ((ValaVariable*) _tmp65_);
20434 _tmp68_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp67_);
20436 _tmp70_ = vala_ccode_variable_declarator_new (_tmp64_, NULL, _tmp69_);
20438 _g_free0 (_tmp69_);
20442 ValaCCodeVariableDeclarator* _tmp73_;
20443 ValaLocalVariable* _tmp74_;
20444 ValaDataType* _tmp75_;
20445 ValaDataType* _tmp76_;
20446 ValaCCodeExpression* _tmp77_ = NULL;
20447 ValaCCodeExpression* _tmp78_;
20448 ValaCCodeVariableDeclarator* _tmp79_;
20451 _tmp75_ = vala_variable_get_variable_type ((ValaVariable*) _tmp74_);
20453 _tmp77_ = vala_ccode_base_module_default_value_for_type (self, _tmp76_, TRUE);
20455 vala_ccode_variable_declarator_set_initializer (_tmp73_, _tmp78_);
20456 _vala_ccode_node_unref0 (_tmp78_);
20458 vala_ccode_variable_declarator_set_init0 (_tmp79_, TRUE);
20460 _tmp80_ = vala_ccode_base_module_get_ccode (self);
20463 _tmp83_ = vala_variable_get_variable_type ((ValaVariable*) _tmp82_);
20465 _tmp85_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp84_);
20468 vala_ccode_function_add_declaration (_tmp81_, _tmp86_, (ValaCCodeDeclarator*) _tmp87_, 0);
20469 _g_free0 (_tmp86_);
20470 _vala_ccode_node_unref0 (cvar);
20475 static void vala_ccode_base_module_real_visit_expression_statement (ValaCodeVisitor* base, ValaExpressionStatement* stmt) {
20476 ValaCCodeBaseModule * self;
20477 ValaExpressionStatement* _tmp0_;
20478 ValaExpression* _tmp1_;
20479 ValaExpression* _tmp2_;
20482 gboolean _tmp23_ = FALSE;
20483 ValaExpressionStatement* _tmp24_;
20487 ValaArrayList* _tmp36_;
20488 ValaArrayList* _tmp37_;
20489 self = (ValaCCodeBaseModule*) base;
20490 g_return_if_fail (stmt != NULL);
20492 _tmp1_ = vala_expression_statement_get_expression (_tmp0_);
20494 _tmp3_ = vala_code_node_get_error ((ValaCodeNode*) _tmp2_);
20497 ValaExpressionStatement* _tmp5_;
20499 vala_code_node_set_error ((ValaCodeNode*) _tmp5_, TRUE);
20503 ValaArrayList* _tmp6_;
20504 ValaArrayList* _tmp7_;
20505 ValaArrayList* _tmp8_;
20506 ValaArrayList* _value_list;
20507 ValaArrayList* _tmp9_;
20512 _tmp6_ = vala_ccode_base_module_get_temp_ref_values (self);
20514 _tmp8_ = _vala_iterable_ref0 (_tmp7_);
20515 _value_list = _tmp8_;
20516 _tmp9_ = _value_list;
20517 _tmp10_ = vala_collection_get_size ((ValaCollection*) _tmp9_);
20519 _value_size = _tmp11_;
20525 ValaArrayList* _tmp15_;
20527 gpointer _tmp17_ = NULL;
20528 ValaTargetValue* value;
20529 ValaCCodeFunction* _tmp18_;
20530 ValaCCodeFunction* _tmp19_;
20531 ValaTargetValue* _tmp20_;
20532 ValaCCodeExpression* _tmp21_ = NULL;
20533 ValaCCodeExpression* _tmp22_;
20534 _tmp12_ = _value_index;
20535 _value_index = _tmp12_ + 1;
20536 _tmp13_ = _value_index;
20537 _tmp14_ = _value_size;
20538 if (!(_tmp13_ < _tmp14_)) {
20541 _tmp15_ = _value_list;
20542 _tmp16_ = _value_index;
20543 _tmp17_ = vala_list_get ((ValaList*) _tmp15_, _tmp16_);
20544 value = (ValaTargetValue*) _tmp17_;
20545 _tmp18_ = vala_ccode_base_module_get_ccode (self);
20548 _tmp21_ = vala_ccode_base_module_destroy_value (self, _tmp20_, FALSE);
20550 vala_ccode_function_add_expression (_tmp19_, _tmp22_);
20551 _vala_ccode_node_unref0 (_tmp22_);
20552 _vala_target_value_unref0 (value);
20554 _vala_iterable_unref0 (_value_list);
20557 _tmp25_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp24_);
20560 ValaExpressionStatement* _tmp27_;
20561 ValaExpression* _tmp28_;
20562 ValaExpression* _tmp29_;
20566 _tmp28_ = vala_expression_statement_get_expression (_tmp27_);
20568 _tmp30_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp29_);
20576 ValaExpressionStatement* _tmp33_;
20577 ValaExpression* _tmp34_;
20578 ValaExpression* _tmp35_;
20580 _tmp34_ = vala_expression_statement_get_expression (_tmp33_);
20582 vala_ccode_base_module_add_simple_check (self, (ValaCodeNode*) _tmp35_, FALSE);
20584 _tmp36_ = vala_ccode_base_module_get_temp_ref_values (self);
20586 vala_collection_clear ((ValaCollection*) _tmp37_);
20590 static void vala_ccode_base_module_real_append_scope_free (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at) {
20591 ValaSymbol* _tmp0_;
20595 ValaList* _tmp3_ = NULL;
20596 ValaList* local_vars;
20597 ValaBlock* _tmp43_;
20600 g_return_if_fail (sym != NULL);
20602 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_BLOCK, ValaBlock));
20605 _tmp3_ = vala_block_get_local_variables (_tmp2_);
20606 local_vars = _tmp3_;
20612 _tmp4_ = local_vars;
20613 _tmp5_ = vala_collection_get_size ((ValaCollection*) _tmp4_);
20624 gpointer _tmp13_ = NULL;
20625 ValaLocalVariable* local;
20626 gboolean _tmp14_ = FALSE;
20627 gboolean _tmp15_ = FALSE;
20628 gboolean _tmp16_ = FALSE;
20629 gboolean _tmp17_ = FALSE;
20630 ValaLocalVariable* _tmp18_;
20645 if (!(_tmp10_ >= 0)) {
20648 _tmp11_ = local_vars;
20650 _tmp13_ = vala_list_get (_tmp11_, _tmp12_);
20651 local = (ValaLocalVariable*) _tmp13_;
20653 _tmp19_ = vala_code_node_get_unreachable ((ValaCodeNode*) _tmp18_);
20656 ValaLocalVariable* _tmp21_;
20660 _tmp22_ = vala_symbol_get_active ((ValaSymbol*) _tmp21_);
20668 ValaLocalVariable* _tmp25_;
20672 _tmp26_ = vala_local_variable_get_floating (_tmp25_);
20674 _tmp16_ = !_tmp27_;
20680 ValaLocalVariable* _tmp29_;
20684 _tmp30_ = vala_local_variable_get_captured (_tmp29_);
20686 _tmp15_ = !_tmp31_;
20692 ValaLocalVariable* _tmp33_;
20693 ValaDataType* _tmp34_;
20694 ValaDataType* _tmp35_;
20695 gboolean _tmp36_ = FALSE;
20697 _tmp34_ = vala_variable_get_variable_type ((ValaVariable*) _tmp33_);
20699 _tmp36_ = vala_ccode_base_module_requires_destroy (self, _tmp35_);
20706 ValaCCodeFunction* _tmp38_;
20707 ValaCCodeFunction* _tmp39_;
20708 ValaLocalVariable* _tmp40_;
20709 ValaCCodeExpression* _tmp41_ = NULL;
20710 ValaCCodeExpression* _tmp42_;
20711 _tmp38_ = vala_ccode_base_module_get_ccode (self);
20714 _tmp41_ = vala_ccode_base_module_destroy_local (self, _tmp40_);
20716 vala_ccode_function_add_expression (_tmp39_, _tmp42_);
20717 _vala_ccode_node_unref0 (_tmp42_);
20719 _vala_code_node_unref0 (local);
20724 _tmp44_ = vala_block_get_captured (_tmp43_);
20727 ValaBlock* _tmp46_;
20731 gchar* _tmp49_ = NULL;
20733 ValaCCodeIdentifier* _tmp51_;
20734 ValaCCodeIdentifier* _tmp52_;
20735 ValaCCodeFunctionCall* _tmp53_;
20736 ValaCCodeFunctionCall* _tmp54_;
20737 ValaCCodeFunctionCall* data_unref;
20738 ValaCCodeFunctionCall* _tmp55_;
20740 gchar* _tmp57_ = NULL;
20742 ValaCCodeExpression* _tmp59_ = NULL;
20743 ValaCCodeExpression* _tmp60_;
20744 ValaCCodeFunction* _tmp61_;
20745 ValaCCodeFunction* _tmp62_;
20746 ValaCCodeFunctionCall* _tmp63_;
20747 ValaCCodeFunction* _tmp64_;
20748 ValaCCodeFunction* _tmp65_;
20750 gchar* _tmp67_ = NULL;
20752 ValaCCodeExpression* _tmp69_ = NULL;
20753 ValaCCodeExpression* _tmp70_;
20754 ValaCCodeConstant* _tmp71_;
20755 ValaCCodeConstant* _tmp72_;
20757 _tmp47_ = vala_ccode_base_module_get_block_id (self, _tmp46_);
20758 block_id = _tmp47_;
20759 _tmp48_ = block_id;
20760 _tmp49_ = g_strdup_printf ("block%d_data_unref", _tmp48_);
20762 _tmp51_ = vala_ccode_identifier_new (_tmp50_);
20764 _tmp53_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp52_);
20766 _vala_ccode_node_unref0 (_tmp52_);
20767 _g_free0 (_tmp50_);
20768 data_unref = _tmp54_;
20769 _tmp55_ = data_unref;
20770 _tmp56_ = block_id;
20771 _tmp57_ = g_strdup_printf ("_data%d_", _tmp56_);
20773 _tmp59_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp58_);
20775 vala_ccode_function_call_add_argument (_tmp55_, _tmp60_);
20776 _vala_ccode_node_unref0 (_tmp60_);
20777 _g_free0 (_tmp58_);
20778 _tmp61_ = vala_ccode_base_module_get_ccode (self);
20780 _tmp63_ = data_unref;
20781 vala_ccode_function_add_expression (_tmp62_, (ValaCCodeExpression*) _tmp63_);
20782 _tmp64_ = vala_ccode_base_module_get_ccode (self);
20784 _tmp66_ = block_id;
20785 _tmp67_ = g_strdup_printf ("_data%d_", _tmp66_);
20787 _tmp69_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp68_);
20789 _tmp71_ = vala_ccode_constant_new ("NULL");
20791 vala_ccode_function_add_assignment (_tmp65_, _tmp70_, (ValaCCodeExpression*) _tmp72_);
20792 _vala_ccode_node_unref0 (_tmp72_);
20793 _vala_ccode_node_unref0 (_tmp70_);
20794 _g_free0 (_tmp68_);
20795 _vala_ccode_node_unref0 (data_unref);
20797 _vala_iterable_unref0 (local_vars);
20798 _vala_code_node_unref0 (b);
20802 void vala_ccode_base_module_append_scope_free (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at) {
20803 g_return_if_fail (self != NULL);
20804 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->append_scope_free (self, sym, stop_at);
20808 void vala_ccode_base_module_append_local_free (ValaCCodeBaseModule* self, ValaSymbol* sym, gboolean stop_at_loop, ValaCodeNode* stop_at) {
20809 ValaSymbol* _tmp0_;
20812 ValaSymbol* _tmp2_;
20813 ValaCodeNode* _tmp3_;
20815 gboolean _tmp18_ = FALSE;
20816 ValaCodeNode* _tmp19_;
20818 ValaSymbol* _tmp25_;
20819 ValaSymbol* _tmp26_;
20820 ValaSymbol* _tmp27_;
20821 g_return_if_fail (self != NULL);
20822 g_return_if_fail (sym != NULL);
20824 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_BLOCK, ValaBlock));
20828 vala_ccode_base_module_append_scope_free (self, _tmp2_, _tmp3_);
20829 _tmp4_ = stop_at_loop;
20831 gboolean _tmp5_ = FALSE;
20832 gboolean _tmp6_ = FALSE;
20834 ValaCodeNode* _tmp8_;
20835 ValaCodeNode* _tmp9_;
20839 _tmp8_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp7_);
20841 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_LOOP)) {
20844 ValaBlock* _tmp10_;
20845 ValaCodeNode* _tmp11_;
20846 ValaCodeNode* _tmp12_;
20848 _tmp11_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp10_);
20850 _tmp6_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, VALA_TYPE_FOREACH_STATEMENT);
20856 ValaBlock* _tmp14_;
20857 ValaCodeNode* _tmp15_;
20858 ValaCodeNode* _tmp16_;
20860 _tmp15_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp14_);
20862 _tmp5_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, VALA_TYPE_SWITCH_STATEMENT);
20866 _vala_code_node_unref0 (b);
20871 if (_tmp19_ != NULL) {
20872 ValaBlock* _tmp20_;
20873 ValaCodeNode* _tmp21_;
20874 ValaCodeNode* _tmp22_;
20875 ValaCodeNode* _tmp23_;
20877 _tmp21_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp20_);
20880 _tmp18_ = _tmp22_ == _tmp23_;
20886 _vala_code_node_unref0 (b);
20890 _tmp26_ = vala_symbol_get_parent_symbol (_tmp25_);
20892 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp27_, VALA_TYPE_BLOCK)) {
20893 ValaSymbol* _tmp28_;
20894 ValaSymbol* _tmp29_;
20895 ValaSymbol* _tmp30_;
20897 ValaCodeNode* _tmp32_;
20899 _tmp29_ = vala_symbol_get_parent_symbol (_tmp28_);
20901 _tmp31_ = stop_at_loop;
20903 vala_ccode_base_module_append_local_free (self, _tmp30_, _tmp31_, _tmp32_);
20905 ValaSymbol* _tmp33_;
20906 ValaSymbol* _tmp34_;
20907 ValaSymbol* _tmp35_;
20909 _tmp34_ = vala_symbol_get_parent_symbol (_tmp33_);
20911 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_METHOD)) {
20912 ValaSymbol* _tmp36_;
20913 ValaSymbol* _tmp37_;
20914 ValaSymbol* _tmp38_;
20916 _tmp37_ = vala_symbol_get_parent_symbol (_tmp36_);
20918 vala_ccode_base_module_append_param_free (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, VALA_TYPE_METHOD, ValaMethod));
20920 ValaSymbol* _tmp39_;
20921 ValaSymbol* _tmp40_;
20922 ValaSymbol* _tmp41_;
20924 _tmp40_ = vala_symbol_get_parent_symbol (_tmp39_);
20926 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp41_, VALA_TYPE_PROPERTY_ACCESSOR)) {
20927 ValaSymbol* _tmp42_;
20928 ValaSymbol* _tmp43_;
20929 ValaSymbol* _tmp44_;
20930 ValaPropertyAccessor* _tmp45_;
20931 ValaPropertyAccessor* acc;
20932 gboolean _tmp46_ = FALSE;
20933 ValaPropertyAccessor* _tmp47_;
20934 ValaParameter* _tmp48_;
20935 ValaParameter* _tmp49_;
20938 _tmp43_ = vala_symbol_get_parent_symbol (_tmp42_);
20940 _tmp45_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
20943 _tmp48_ = vala_property_accessor_get_value_parameter (_tmp47_);
20945 if (_tmp49_ != NULL) {
20946 ValaPropertyAccessor* _tmp50_;
20947 ValaParameter* _tmp51_;
20948 ValaParameter* _tmp52_;
20949 ValaDataType* _tmp53_;
20950 ValaDataType* _tmp54_;
20951 gboolean _tmp55_ = FALSE;
20953 _tmp51_ = vala_property_accessor_get_value_parameter (_tmp50_);
20955 _tmp53_ = vala_variable_get_variable_type ((ValaVariable*) _tmp52_);
20957 _tmp55_ = vala_ccode_base_module_requires_destroy (self, _tmp54_);
20964 ValaCCodeFunction* _tmp57_;
20965 ValaCCodeFunction* _tmp58_;
20966 ValaPropertyAccessor* _tmp59_;
20967 ValaParameter* _tmp60_;
20968 ValaParameter* _tmp61_;
20969 ValaCCodeExpression* _tmp62_ = NULL;
20970 ValaCCodeExpression* _tmp63_;
20971 _tmp57_ = vala_ccode_base_module_get_ccode (self);
20974 _tmp60_ = vala_property_accessor_get_value_parameter (_tmp59_);
20976 _tmp62_ = vala_ccode_base_module_destroy_parameter (self, _tmp61_);
20978 vala_ccode_function_add_expression (_tmp58_, _tmp63_);
20979 _vala_ccode_node_unref0 (_tmp63_);
20981 _vala_code_node_unref0 (acc);
20985 _vala_code_node_unref0 (b);
20989 static void vala_ccode_base_module_append_param_free (ValaCCodeBaseModule* self, ValaMethod* m) {
20990 g_return_if_fail (self != NULL);
20991 g_return_if_fail (m != NULL);
20993 ValaMethod* _tmp0_;
20994 ValaList* _tmp1_ = NULL;
20995 ValaList* _param_list;
21002 _tmp1_ = vala_method_get_parameters (_tmp0_);
21003 _param_list = _tmp1_;
21004 _tmp2_ = _param_list;
21005 _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
21007 _param_size = _tmp4_;
21015 gpointer _tmp10_ = NULL;
21016 ValaParameter* param;
21017 gboolean _tmp11_ = FALSE;
21018 gboolean _tmp12_ = FALSE;
21019 gboolean _tmp13_ = FALSE;
21020 ValaParameter* _tmp14_;
21026 _tmp5_ = _param_index;
21027 _param_index = _tmp5_ + 1;
21028 _tmp6_ = _param_index;
21029 _tmp7_ = _param_size;
21030 if (!(_tmp6_ < _tmp7_)) {
21033 _tmp8_ = _param_list;
21034 _tmp9_ = _param_index;
21035 _tmp10_ = vala_list_get (_tmp8_, _tmp9_);
21036 param = (ValaParameter*) _tmp10_;
21038 _tmp15_ = vala_parameter_get_captured (_tmp14_);
21041 ValaParameter* _tmp17_;
21045 _tmp18_ = vala_parameter_get_ellipsis (_tmp17_);
21047 _tmp13_ = !_tmp19_;
21053 ValaParameter* _tmp21_;
21054 ValaDataType* _tmp22_;
21055 ValaDataType* _tmp23_;
21056 gboolean _tmp24_ = FALSE;
21058 _tmp22_ = vala_variable_get_variable_type ((ValaVariable*) _tmp21_);
21060 _tmp24_ = vala_ccode_base_module_requires_destroy (self, _tmp23_);
21067 ValaParameter* _tmp26_;
21068 ValaParameterDirection _tmp27_;
21069 ValaParameterDirection _tmp28_;
21071 _tmp27_ = vala_parameter_get_direction (_tmp26_);
21073 _tmp11_ = _tmp28_ == VALA_PARAMETER_DIRECTION_IN;
21079 ValaCCodeFunction* _tmp30_;
21080 ValaCCodeFunction* _tmp31_;
21081 ValaParameter* _tmp32_;
21082 ValaCCodeExpression* _tmp33_ = NULL;
21083 ValaCCodeExpression* _tmp34_;
21084 _tmp30_ = vala_ccode_base_module_get_ccode (self);
21087 _tmp33_ = vala_ccode_base_module_destroy_parameter (self, _tmp32_);
21089 vala_ccode_function_add_expression (_tmp31_, _tmp34_);
21090 _vala_ccode_node_unref0 (_tmp34_);
21092 _vala_code_node_unref0 (param);
21094 _vala_iterable_unref0 (_param_list);
21099 gboolean vala_ccode_base_module_variable_accessible_in_finally (ValaCCodeBaseModule* self, ValaLocalVariable* local) {
21100 gboolean result = FALSE;
21101 ValaTryStatement* _tmp0_;
21102 ValaTryStatement* _tmp1_;
21103 ValaSymbol* _tmp2_;
21104 ValaSymbol* _tmp3_;
21105 ValaSymbol* _tmp4_;
21107 g_return_val_if_fail (self != NULL, FALSE);
21108 g_return_val_if_fail (local != NULL, FALSE);
21109 _tmp0_ = vala_ccode_base_module_get_current_try (self);
21111 if (_tmp1_ == NULL) {
21115 _tmp2_ = vala_ccode_base_module_get_current_symbol (self);
21117 _tmp4_ = _vala_code_node_ref0 (_tmp3_);
21120 gboolean _tmp5_ = FALSE;
21121 gboolean _tmp6_ = FALSE;
21122 ValaSymbol* _tmp7_;
21125 gboolean _tmp19_ = FALSE;
21126 gboolean _tmp20_ = FALSE;
21127 ValaSymbol* _tmp21_;
21128 ValaCodeNode* _tmp22_;
21129 ValaCodeNode* _tmp23_;
21132 ValaSymbol* _tmp43_;
21133 ValaSymbol* _tmp44_;
21134 ValaSymbol* _tmp45_;
21135 ValaSymbol* _tmp46_;
21137 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_METHOD)) {
21140 ValaSymbol* _tmp8_;
21142 _tmp6_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_PROPERTY_ACCESSOR);
21146 ValaSymbol* _tmp10_;
21147 ValaScope* _tmp11_;
21148 ValaScope* _tmp12_;
21149 ValaLocalVariable* _tmp13_;
21150 const gchar* _tmp14_;
21151 const gchar* _tmp15_;
21152 ValaSymbol* _tmp16_ = NULL;
21153 ValaSymbol* _tmp17_;
21155 _tmp11_ = vala_symbol_get_scope (_tmp10_);
21158 _tmp14_ = vala_symbol_get_name ((ValaSymbol*) _tmp13_);
21160 _tmp16_ = vala_scope_lookup (_tmp12_, _tmp15_);
21162 _tmp5_ = _tmp17_ == NULL;
21163 _vala_code_node_unref0 (_tmp17_);
21172 _tmp22_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp21_);
21174 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, VALA_TYPE_TRY_STATEMENT)) {
21175 ValaSymbol* _tmp24_;
21176 ValaCodeNode* _tmp25_;
21177 ValaCodeNode* _tmp26_;
21178 ValaBlock* _tmp27_;
21179 ValaBlock* _tmp28_;
21181 _tmp25_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp24_);
21183 _tmp27_ = vala_try_statement_get_finally_body (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_TRY_STATEMENT, ValaTryStatement));
21185 _tmp20_ = _tmp28_ != NULL;
21193 gboolean _tmp30_ = FALSE;
21194 ValaSymbol* _tmp31_;
21195 ValaCodeNode* _tmp32_;
21196 ValaCodeNode* _tmp33_;
21199 _tmp32_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp31_);
21201 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, VALA_TYPE_CATCH_CLAUSE)) {
21202 ValaSymbol* _tmp34_;
21203 ValaCodeNode* _tmp35_;
21204 ValaCodeNode* _tmp36_;
21205 ValaCodeNode* _tmp37_;
21206 ValaCodeNode* _tmp38_;
21207 ValaBlock* _tmp39_;
21208 ValaBlock* _tmp40_;
21210 _tmp35_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp34_);
21212 _tmp37_ = vala_code_node_get_parent_node (_tmp36_);
21214 _tmp39_ = vala_try_statement_get_finally_body (G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, VALA_TYPE_TRY_STATEMENT, ValaTryStatement));
21216 _tmp30_ = _tmp40_ != NULL;
21226 _vala_code_node_unref0 (sym);
21230 _tmp44_ = vala_symbol_get_parent_symbol (_tmp43_);
21232 _tmp46_ = _vala_code_node_ref0 (_tmp45_);
21233 _vala_code_node_unref0 (sym);
21237 _vala_code_node_unref0 (sym);
21242 void vala_ccode_base_module_return_out_parameter (ValaCCodeBaseModule* self, ValaParameter* param) {
21243 ValaParameter* _tmp0_;
21244 ValaDataType* _tmp1_;
21245 ValaDataType* _tmp2_;
21246 ValaDelegateType* _tmp3_;
21247 ValaDelegateType* delegate_type;
21248 ValaParameter* _tmp4_;
21249 ValaTargetValue* _tmp5_ = NULL;
21250 ValaTargetValue* value;
21251 gboolean _tmp6_ = FALSE;
21252 gboolean old_coroutine;
21253 ValaMethod* _tmp7_;
21254 ValaMethod* _tmp8_;
21255 ValaCCodeFunction* _tmp9_;
21256 ValaCCodeFunction* _tmp10_;
21257 ValaParameter* _tmp11_;
21258 const gchar* _tmp12_;
21259 const gchar* _tmp13_;
21260 ValaCCodeExpression* _tmp14_ = NULL;
21261 ValaCCodeExpression* _tmp15_;
21262 ValaCCodeFunction* _tmp16_;
21263 ValaCCodeFunction* _tmp17_;
21264 ValaParameter* _tmp18_;
21265 const gchar* _tmp19_;
21266 const gchar* _tmp20_;
21267 ValaCCodeExpression* _tmp21_ = NULL;
21268 ValaCCodeExpression* _tmp22_;
21269 ValaCCodeUnaryExpression* _tmp23_;
21270 ValaCCodeUnaryExpression* _tmp24_;
21271 ValaTargetValue* _tmp25_;
21272 ValaCCodeExpression* _tmp26_ = NULL;
21273 ValaCCodeExpression* _tmp27_;
21274 gboolean _tmp28_ = FALSE;
21275 ValaDelegateType* _tmp29_;
21277 ValaParameter* _tmp67_;
21278 ValaDataType* _tmp68_;
21279 ValaDataType* _tmp69_;
21280 gboolean _tmp70_ = FALSE;
21281 ValaCCodeFunction* _tmp83_;
21282 ValaCCodeFunction* _tmp84_;
21283 ValaParameter* _tmp85_;
21284 ValaDataType* _tmp86_;
21285 ValaDataType* _tmp87_;
21286 ValaArrayType* _tmp88_;
21287 ValaArrayType* array_type;
21288 gboolean _tmp89_ = FALSE;
21289 gboolean _tmp90_ = FALSE;
21290 ValaArrayType* _tmp91_;
21293 ValaMethod* _tmp130_;
21294 ValaMethod* _tmp131_;
21296 g_return_if_fail (self != NULL);
21297 g_return_if_fail (param != NULL);
21299 _tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
21301 _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp2_) : NULL);
21302 delegate_type = _tmp3_;
21304 _tmp5_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp4_);
21306 _tmp6_ = vala_ccode_base_module_is_in_coroutine (self);
21307 old_coroutine = _tmp6_;
21308 _tmp7_ = vala_ccode_base_module_get_current_method (self);
21310 vala_method_set_coroutine (_tmp8_, FALSE);
21311 _tmp9_ = vala_ccode_base_module_get_ccode (self);
21314 _tmp12_ = vala_symbol_get_name ((ValaSymbol*) _tmp11_);
21316 _tmp14_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp13_);
21318 vala_ccode_function_open_if (_tmp10_, _tmp15_);
21319 _vala_ccode_node_unref0 (_tmp15_);
21320 _tmp16_ = vala_ccode_base_module_get_ccode (self);
21323 _tmp19_ = vala_symbol_get_name ((ValaSymbol*) _tmp18_);
21325 _tmp21_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp20_);
21327 _tmp23_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp22_);
21330 _tmp26_ = vala_ccode_base_module_get_cvalue_ (self, _tmp25_);
21332 vala_ccode_function_add_assignment (_tmp17_, (ValaCCodeExpression*) _tmp24_, _tmp27_);
21333 _vala_ccode_node_unref0 (_tmp27_);
21334 _vala_ccode_node_unref0 (_tmp24_);
21335 _vala_ccode_node_unref0 (_tmp22_);
21336 _tmp29_ = delegate_type;
21337 if (_tmp29_ != NULL) {
21338 ValaDelegateType* _tmp30_;
21339 ValaDelegate* _tmp31_;
21340 ValaDelegate* _tmp32_;
21343 _tmp30_ = delegate_type;
21344 _tmp31_ = vala_delegate_type_get_delegate_symbol (_tmp30_);
21346 _tmp33_ = vala_delegate_get_has_target (_tmp32_);
21354 ValaCCodeFunction* _tmp36_;
21355 ValaCCodeFunction* _tmp37_;
21356 ValaParameter* _tmp38_;
21357 gchar* _tmp39_ = NULL;
21359 ValaCCodeExpression* _tmp41_ = NULL;
21360 ValaCCodeExpression* _tmp42_;
21361 ValaCCodeUnaryExpression* _tmp43_;
21362 ValaCCodeUnaryExpression* _tmp44_;
21363 ValaTargetValue* _tmp45_;
21364 ValaCCodeExpression* _tmp46_ = NULL;
21365 ValaCCodeExpression* _tmp47_;
21366 ValaDelegateType* _tmp48_;
21369 _tmp36_ = vala_ccode_base_module_get_ccode (self);
21372 _tmp39_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp38_);
21374 _tmp41_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp40_);
21376 _tmp43_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp42_);
21379 _tmp46_ = vala_ccode_base_module_get_delegate_target_cvalue (self, _tmp45_);
21381 vala_ccode_function_add_assignment (_tmp37_, (ValaCCodeExpression*) _tmp44_, _tmp47_);
21382 _vala_ccode_node_unref0 (_tmp47_);
21383 _vala_ccode_node_unref0 (_tmp44_);
21384 _vala_ccode_node_unref0 (_tmp42_);
21385 _g_free0 (_tmp40_);
21386 _tmp48_ = delegate_type;
21387 _tmp49_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp48_);
21390 ValaCCodeFunction* _tmp51_;
21391 ValaCCodeFunction* _tmp52_;
21392 ValaParameter* _tmp53_;
21393 const gchar* _tmp54_;
21394 const gchar* _tmp55_;
21395 gchar* _tmp56_ = NULL;
21397 ValaCCodeExpression* _tmp58_ = NULL;
21398 ValaCCodeExpression* _tmp59_;
21399 ValaCCodeUnaryExpression* _tmp60_;
21400 ValaCCodeUnaryExpression* _tmp61_;
21401 ValaParameter* _tmp62_;
21402 ValaTargetValue* _tmp63_ = NULL;
21403 ValaTargetValue* _tmp64_;
21404 ValaCCodeExpression* _tmp65_ = NULL;
21405 ValaCCodeExpression* _tmp66_;
21406 _tmp51_ = vala_ccode_base_module_get_ccode (self);
21409 _tmp54_ = vala_symbol_get_name ((ValaSymbol*) _tmp53_);
21411 _tmp56_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp55_);
21413 _tmp58_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp57_);
21415 _tmp60_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp59_);
21418 _tmp63_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp62_);
21420 _tmp65_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp64_);
21422 vala_ccode_function_add_assignment (_tmp52_, (ValaCCodeExpression*) _tmp61_, _tmp66_);
21423 _vala_ccode_node_unref0 (_tmp66_);
21424 _vala_target_value_unref0 (_tmp64_);
21425 _vala_ccode_node_unref0 (_tmp61_);
21426 _vala_ccode_node_unref0 (_tmp59_);
21427 _g_free0 (_tmp57_);
21431 _tmp68_ = vala_variable_get_variable_type ((ValaVariable*) _tmp67_);
21433 _tmp70_ = vala_data_type_is_disposable (_tmp69_);
21435 ValaCCodeFunction* _tmp71_;
21436 ValaCCodeFunction* _tmp72_;
21437 ValaMethod* _tmp73_;
21438 ValaMethod* _tmp74_;
21440 ValaCCodeFunction* _tmp76_;
21441 ValaCCodeFunction* _tmp77_;
21442 ValaParameter* _tmp78_;
21443 ValaCCodeExpression* _tmp79_ = NULL;
21444 ValaCCodeExpression* _tmp80_;
21445 ValaMethod* _tmp81_;
21446 ValaMethod* _tmp82_;
21447 _tmp71_ = vala_ccode_base_module_get_ccode (self);
21449 vala_ccode_function_add_else (_tmp72_);
21450 _tmp73_ = vala_ccode_base_module_get_current_method (self);
21452 _tmp75_ = old_coroutine;
21453 vala_method_set_coroutine (_tmp74_, _tmp75_);
21454 _tmp76_ = vala_ccode_base_module_get_ccode (self);
21457 _tmp79_ = vala_ccode_base_module_destroy_parameter (self, _tmp78_);
21459 vala_ccode_function_add_expression (_tmp77_, _tmp80_);
21460 _vala_ccode_node_unref0 (_tmp80_);
21461 _tmp81_ = vala_ccode_base_module_get_current_method (self);
21463 vala_method_set_coroutine (_tmp82_, FALSE);
21465 _tmp83_ = vala_ccode_base_module_get_ccode (self);
21467 vala_ccode_function_close (_tmp84_);
21469 _tmp86_ = vala_variable_get_variable_type ((ValaVariable*) _tmp85_);
21471 _tmp88_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp87_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp87_) : NULL);
21472 array_type = _tmp88_;
21473 _tmp91_ = array_type;
21474 if (_tmp91_ != NULL) {
21475 ValaArrayType* _tmp92_;
21478 _tmp92_ = array_type;
21479 _tmp93_ = vala_array_type_get_fixed_length (_tmp92_);
21481 _tmp90_ = !_tmp94_;
21487 ValaParameter* _tmp96_;
21488 gboolean _tmp97_ = FALSE;
21490 _tmp97_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp96_);
21506 ValaArrayType* _tmp103_;
21509 ValaCCodeFunction* _tmp106_;
21510 ValaCCodeFunction* _tmp107_;
21511 ValaParameter* _tmp108_;
21513 gchar* _tmp110_ = NULL;
21515 ValaCCodeExpression* _tmp112_ = NULL;
21516 ValaCCodeExpression* _tmp113_;
21517 ValaCCodeFunction* _tmp114_;
21518 ValaCCodeFunction* _tmp115_;
21519 ValaParameter* _tmp116_;
21521 gchar* _tmp118_ = NULL;
21523 ValaCCodeExpression* _tmp120_ = NULL;
21524 ValaCCodeExpression* _tmp121_;
21525 ValaCCodeUnaryExpression* _tmp122_;
21526 ValaCCodeUnaryExpression* _tmp123_;
21527 ValaTargetValue* _tmp124_;
21529 ValaCCodeExpression* _tmp126_ = NULL;
21530 ValaCCodeExpression* _tmp127_;
21531 ValaCCodeFunction* _tmp128_;
21532 ValaCCodeFunction* _tmp129_;
21533 _tmp100_ = _tmp99_;
21537 dim = _tmp101_ + 1;
21541 _tmp103_ = array_type;
21542 _tmp104_ = vala_array_type_get_rank (_tmp103_);
21543 _tmp105_ = _tmp104_;
21544 if (!(_tmp102_ <= _tmp105_)) {
21547 _tmp106_ = vala_ccode_base_module_get_ccode (self);
21548 _tmp107_ = _tmp106_;
21551 _tmp110_ = vala_ccode_base_module_get_parameter_array_length_cname (self, _tmp108_, _tmp109_);
21552 _tmp111_ = _tmp110_;
21553 _tmp112_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp111_);
21554 _tmp113_ = _tmp112_;
21555 vala_ccode_function_open_if (_tmp107_, _tmp113_);
21556 _vala_ccode_node_unref0 (_tmp113_);
21557 _g_free0 (_tmp111_);
21558 _tmp114_ = vala_ccode_base_module_get_ccode (self);
21559 _tmp115_ = _tmp114_;
21562 _tmp118_ = vala_ccode_base_module_get_parameter_array_length_cname (self, _tmp116_, _tmp117_);
21563 _tmp119_ = _tmp118_;
21564 _tmp120_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp119_);
21565 _tmp121_ = _tmp120_;
21566 _tmp122_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp121_);
21567 _tmp123_ = _tmp122_;
21570 _tmp126_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp124_, _tmp125_);
21571 _tmp127_ = _tmp126_;
21572 vala_ccode_function_add_assignment (_tmp115_, (ValaCCodeExpression*) _tmp123_, _tmp127_);
21573 _vala_ccode_node_unref0 (_tmp127_);
21574 _vala_ccode_node_unref0 (_tmp123_);
21575 _vala_ccode_node_unref0 (_tmp121_);
21576 _g_free0 (_tmp119_);
21577 _tmp128_ = vala_ccode_base_module_get_ccode (self);
21578 _tmp129_ = _tmp128_;
21579 vala_ccode_function_close (_tmp129_);
21584 _tmp130_ = vala_ccode_base_module_get_current_method (self);
21585 _tmp131_ = _tmp130_;
21586 _tmp132_ = old_coroutine;
21587 vala_method_set_coroutine (_tmp131_, _tmp132_);
21588 _vala_code_node_unref0 (array_type);
21589 _vala_target_value_unref0 (value);
21590 _vala_code_node_unref0 (delegate_type);
21594 static void vala_ccode_base_module_real_visit_return_statement (ValaCodeVisitor* base, ValaReturnStatement* stmt) {
21595 ValaCCodeBaseModule * self;
21596 ValaSymbol* return_expression_symbol;
21597 ValaReturnStatement* _tmp0_;
21598 ValaExpression* _tmp1_;
21599 ValaExpression* _tmp2_;
21600 gboolean _tmp17_ = FALSE;
21601 gboolean _tmp18_ = FALSE;
21602 gboolean _tmp19_ = FALSE;
21603 ValaMethod* _tmp20_;
21604 ValaMethod* _tmp21_;
21608 ValaReturnStatement* _tmp135_;
21609 ValaExpression* _tmp136_;
21610 ValaExpression* _tmp137_;
21611 ValaSymbol* _tmp155_;
21612 ValaSymbol* _tmp156_;
21613 ValaMethod* _tmp157_;
21614 ValaMethod* _tmp158_;
21615 gboolean _tmp172_ = FALSE;
21616 ValaMethod* _tmp173_;
21617 ValaMethod* _tmp174_;
21619 gboolean _tmp196_ = FALSE;
21620 ValaMethod* _tmp197_;
21621 ValaMethod* _tmp198_;
21623 gboolean _tmp224_ = FALSE;
21624 ValaSymbol* _tmp252_;
21625 self = (ValaCCodeBaseModule*) base;
21626 g_return_if_fail (stmt != NULL);
21627 return_expression_symbol = NULL;
21629 _tmp1_ = vala_return_statement_get_return_expression (_tmp0_);
21631 if (_tmp2_ != NULL) {
21632 ValaReturnStatement* _tmp3_;
21633 ValaExpression* _tmp4_;
21634 ValaExpression* _tmp5_;
21635 ValaSymbol* _tmp6_;
21636 ValaSymbol* _tmp7_;
21637 ValaLocalVariable* _tmp8_;
21638 ValaLocalVariable* local;
21639 gboolean _tmp9_ = FALSE;
21640 ValaLocalVariable* _tmp10_;
21643 _tmp4_ = vala_return_statement_get_return_expression (_tmp3_);
21645 _tmp6_ = vala_expression_get_symbol_reference (_tmp5_);
21647 _tmp8_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp7_) : NULL);
21650 if (_tmp10_ != NULL) {
21651 ValaLocalVariable* _tmp11_;
21655 _tmp12_ = vala_symbol_get_active ((ValaSymbol*) _tmp11_);
21663 ValaLocalVariable* _tmp15_;
21664 ValaSymbol* _tmp16_;
21666 _tmp16_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp15_);
21667 _vala_code_node_unref0 (return_expression_symbol);
21668 return_expression_symbol = _tmp16_;
21670 _vala_code_node_unref0 (local);
21672 _tmp20_ = vala_ccode_base_module_get_current_method (self);
21674 if (_tmp21_ != NULL) {
21675 ValaMethod* _tmp22_;
21676 ValaMethod* _tmp23_;
21677 gboolean _tmp24_ = FALSE;
21678 _tmp22_ = vala_ccode_base_module_get_current_method (self);
21680 _tmp24_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp23_);
21689 ValaPropertyAccessor* _tmp26_;
21690 ValaPropertyAccessor* _tmp27_;
21691 _tmp26_ = vala_ccode_base_module_get_current_property_accessor (self);
21693 _tmp18_ = _tmp27_ != NULL;
21697 ValaDataType* _tmp29_;
21698 ValaDataType* _tmp30_;
21699 _tmp29_ = vala_ccode_base_module_get_current_return_type (self);
21701 _tmp17_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp30_, VALA_TYPE_ARRAY_TYPE);
21707 ValaReturnStatement* _tmp32_;
21708 ValaExpression* _tmp33_;
21709 ValaExpression* _tmp34_;
21710 ValaTargetValue* _tmp35_;
21711 ValaTargetValue* _tmp36_;
21712 ValaReturnStatement* _tmp37_;
21713 ValaTargetValue* _tmp38_ = NULL;
21714 ValaTargetValue* temp_value;
21715 ValaDataType* _tmp39_;
21716 ValaDataType* _tmp40_;
21717 ValaArrayType* _tmp41_;
21718 ValaArrayType* array_type;
21719 ValaReturnStatement* _tmp73_;
21720 ValaExpression* _tmp74_;
21721 ValaExpression* _tmp75_;
21722 ValaTargetValue* _tmp76_;
21724 _tmp33_ = vala_return_statement_get_return_expression (_tmp32_);
21726 _tmp35_ = vala_expression_get_target_value (_tmp34_);
21729 _tmp38_ = vala_ccode_base_module_store_temp_value (self, _tmp36_, (ValaCodeNode*) _tmp37_, NULL);
21730 temp_value = _tmp38_;
21731 _tmp39_ = vala_ccode_base_module_get_current_return_type (self);
21733 _tmp41_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
21734 array_type = _tmp41_;
21744 ValaArrayType* _tmp46_;
21748 gchar* _tmp50_ = NULL;
21750 ValaCCodeExpression* _tmp52_ = NULL;
21751 ValaCCodeExpression* _tmp53_;
21752 ValaCCodeExpression* len_l;
21753 ValaTargetValue* _tmp54_;
21755 ValaCCodeExpression* _tmp56_ = NULL;
21756 ValaCCodeExpression* len_r;
21757 gboolean _tmp57_ = FALSE;
21766 _tmp46_ = array_type;
21767 _tmp47_ = vala_array_type_get_rank (_tmp46_);
21769 if (!(_tmp45_ <= _tmp48_)) {
21773 _tmp50_ = vala_ccode_base_module_get_array_length_cname (self, "result", _tmp49_);
21775 _tmp52_ = vala_ccode_base_module_get_result_cexpression (self, _tmp51_);
21777 _g_free0 (_tmp51_);
21779 _tmp54_ = temp_value;
21781 _tmp56_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp54_, _tmp55_);
21783 _tmp57_ = vala_ccode_base_module_is_in_coroutine (self);
21785 ValaCCodeFunction* _tmp58_;
21786 ValaCCodeFunction* _tmp59_;
21787 ValaCCodeExpression* _tmp60_;
21788 ValaCCodeExpression* _tmp61_;
21789 ValaCCodeUnaryExpression* _tmp62_;
21790 ValaCCodeFunction* _tmp63_;
21791 ValaCCodeFunction* _tmp64_;
21792 ValaCCodeExpression* _tmp65_;
21793 ValaCCodeExpression* _tmp66_;
21794 ValaCCodeFunction* _tmp67_;
21795 ValaCCodeFunction* _tmp68_;
21796 _tmp58_ = vala_ccode_base_module_get_ccode (self);
21799 vala_ccode_function_open_if (_tmp59_, _tmp60_);
21801 _tmp62_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp61_);
21802 _vala_ccode_node_unref0 (len_l);
21803 len_l = (ValaCCodeExpression*) _tmp62_;
21804 _tmp63_ = vala_ccode_base_module_get_ccode (self);
21808 vala_ccode_function_add_assignment (_tmp64_, _tmp65_, _tmp66_);
21809 _tmp67_ = vala_ccode_base_module_get_ccode (self);
21811 vala_ccode_function_close (_tmp68_);
21813 ValaCCodeFunction* _tmp69_;
21814 ValaCCodeFunction* _tmp70_;
21815 ValaCCodeExpression* _tmp71_;
21816 ValaCCodeExpression* _tmp72_;
21817 _tmp69_ = vala_ccode_base_module_get_ccode (self);
21821 vala_ccode_function_add_assignment (_tmp70_, _tmp71_, _tmp72_);
21823 _vala_ccode_node_unref0 (len_r);
21824 _vala_ccode_node_unref0 (len_l);
21829 _tmp74_ = vala_return_statement_get_return_expression (_tmp73_);
21831 _tmp76_ = temp_value;
21832 vala_expression_set_target_value (_tmp75_, _tmp76_);
21833 _vala_code_node_unref0 (array_type);
21834 _vala_target_value_unref0 (temp_value);
21836 gboolean _tmp77_ = FALSE;
21837 gboolean _tmp78_ = FALSE;
21838 ValaMethod* _tmp79_;
21839 ValaMethod* _tmp80_;
21842 _tmp79_ = vala_ccode_base_module_get_current_method (self);
21844 if (_tmp80_ != NULL) {
21847 ValaPropertyAccessor* _tmp81_;
21848 ValaPropertyAccessor* _tmp82_;
21849 _tmp81_ = vala_ccode_base_module_get_current_property_accessor (self);
21851 _tmp78_ = _tmp82_ != NULL;
21855 ValaDataType* _tmp84_;
21856 ValaDataType* _tmp85_;
21857 _tmp84_ = vala_ccode_base_module_get_current_return_type (self);
21859 _tmp77_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp85_, VALA_TYPE_DELEGATE_TYPE);
21865 ValaDataType* _tmp87_;
21866 ValaDataType* _tmp88_;
21867 ValaDelegateType* _tmp89_;
21868 ValaDelegateType* delegate_type;
21869 ValaDelegateType* _tmp90_;
21870 ValaDelegate* _tmp91_;
21871 ValaDelegate* _tmp92_;
21874 _tmp87_ = vala_ccode_base_module_get_current_return_type (self);
21876 _tmp89_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp88_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
21877 delegate_type = _tmp89_;
21878 _tmp90_ = delegate_type;
21879 _tmp91_ = vala_delegate_type_get_delegate_symbol (_tmp90_);
21881 _tmp93_ = vala_delegate_get_has_target (_tmp92_);
21884 ValaReturnStatement* _tmp95_;
21885 ValaExpression* _tmp96_;
21886 ValaExpression* _tmp97_;
21887 ValaTargetValue* _tmp98_;
21888 ValaTargetValue* _tmp99_;
21889 ValaReturnStatement* _tmp100_;
21890 ValaTargetValue* _tmp101_ = NULL;
21891 ValaTargetValue* temp_value;
21892 gchar* _tmp102_ = NULL;
21894 ValaCCodeExpression* _tmp104_ = NULL;
21895 ValaCCodeExpression* _tmp105_;
21896 ValaCCodeExpression* target_l;
21897 gboolean _tmp106_ = FALSE;
21898 ValaTargetValue* _tmp109_;
21899 ValaCCodeExpression* _tmp110_ = NULL;
21900 ValaCCodeExpression* target_r;
21901 ValaCCodeFunction* _tmp111_;
21902 ValaCCodeFunction* _tmp112_;
21903 ValaCCodeExpression* _tmp113_;
21904 ValaCCodeExpression* _tmp114_;
21905 ValaDelegateType* _tmp115_;
21908 ValaReturnStatement* _tmp131_;
21909 ValaExpression* _tmp132_;
21910 ValaExpression* _tmp133_;
21911 ValaTargetValue* _tmp134_;
21913 _tmp96_ = vala_return_statement_get_return_expression (_tmp95_);
21915 _tmp98_ = vala_expression_get_target_value (_tmp97_);
21918 _tmp101_ = vala_ccode_base_module_store_temp_value (self, _tmp99_, (ValaCodeNode*) _tmp100_, NULL);
21919 temp_value = _tmp101_;
21920 _tmp102_ = vala_ccode_base_module_get_delegate_target_cname (self, "result");
21921 _tmp103_ = _tmp102_;
21922 _tmp104_ = vala_ccode_base_module_get_result_cexpression (self, _tmp103_);
21923 _tmp105_ = _tmp104_;
21924 _g_free0 (_tmp103_);
21925 target_l = _tmp105_;
21926 _tmp106_ = vala_ccode_base_module_is_in_coroutine (self);
21928 ValaCCodeExpression* _tmp107_;
21929 ValaCCodeUnaryExpression* _tmp108_;
21930 _tmp107_ = target_l;
21931 _tmp108_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp107_);
21932 _vala_ccode_node_unref0 (target_l);
21933 target_l = (ValaCCodeExpression*) _tmp108_;
21935 _tmp109_ = temp_value;
21936 _tmp110_ = vala_ccode_base_module_get_delegate_target_cvalue (self, _tmp109_);
21937 target_r = _tmp110_;
21938 _tmp111_ = vala_ccode_base_module_get_ccode (self);
21939 _tmp112_ = _tmp111_;
21940 _tmp113_ = target_l;
21941 _tmp114_ = target_r;
21942 vala_ccode_function_add_assignment (_tmp112_, _tmp113_, _tmp114_);
21943 _tmp115_ = delegate_type;
21944 _tmp116_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp115_);
21945 _tmp117_ = _tmp116_;
21947 gchar* _tmp118_ = NULL;
21949 ValaCCodeExpression* _tmp120_ = NULL;
21950 ValaCCodeExpression* _tmp121_;
21951 ValaCCodeExpression* target_l_destroy_notify;
21952 gboolean _tmp122_ = FALSE;
21953 ValaTargetValue* _tmp125_;
21954 ValaCCodeExpression* _tmp126_ = NULL;
21955 ValaCCodeExpression* target_r_destroy_notify;
21956 ValaCCodeFunction* _tmp127_;
21957 ValaCCodeFunction* _tmp128_;
21958 ValaCCodeExpression* _tmp129_;
21959 ValaCCodeExpression* _tmp130_;
21960 _tmp118_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "result");
21961 _tmp119_ = _tmp118_;
21962 _tmp120_ = vala_ccode_base_module_get_result_cexpression (self, _tmp119_);
21963 _tmp121_ = _tmp120_;
21964 _g_free0 (_tmp119_);
21965 target_l_destroy_notify = _tmp121_;
21966 _tmp122_ = vala_ccode_base_module_is_in_coroutine (self);
21968 ValaCCodeExpression* _tmp123_;
21969 ValaCCodeUnaryExpression* _tmp124_;
21970 _tmp123_ = target_l_destroy_notify;
21971 _tmp124_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp123_);
21972 _vala_ccode_node_unref0 (target_l_destroy_notify);
21973 target_l_destroy_notify = (ValaCCodeExpression*) _tmp124_;
21975 _tmp125_ = temp_value;
21976 _tmp126_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp125_);
21977 target_r_destroy_notify = _tmp126_;
21978 _tmp127_ = vala_ccode_base_module_get_ccode (self);
21979 _tmp128_ = _tmp127_;
21980 _tmp129_ = target_l_destroy_notify;
21981 _tmp130_ = target_r_destroy_notify;
21982 vala_ccode_function_add_assignment (_tmp128_, _tmp129_, _tmp130_);
21983 _vala_ccode_node_unref0 (target_r_destroy_notify);
21984 _vala_ccode_node_unref0 (target_l_destroy_notify);
21987 _tmp132_ = vala_return_statement_get_return_expression (_tmp131_);
21988 _tmp133_ = _tmp132_;
21989 _tmp134_ = temp_value;
21990 vala_expression_set_target_value (_tmp133_, _tmp134_);
21991 _vala_ccode_node_unref0 (target_r);
21992 _vala_ccode_node_unref0 (target_l);
21993 _vala_target_value_unref0 (temp_value);
21995 _vala_code_node_unref0 (delegate_type);
21999 _tmp136_ = vala_return_statement_get_return_expression (_tmp135_);
22000 _tmp137_ = _tmp136_;
22001 if (_tmp137_ != NULL) {
22002 ValaCCodeExpression* _tmp138_ = NULL;
22003 ValaCCodeExpression* result_lhs;
22004 gboolean _tmp139_ = FALSE;
22005 ValaDataType* _tmp140_;
22006 ValaDataType* _tmp141_;
22007 gboolean _tmp142_ = FALSE;
22009 ValaCCodeFunction* _tmp147_;
22010 ValaCCodeFunction* _tmp148_;
22011 ValaCCodeExpression* _tmp149_;
22012 ValaReturnStatement* _tmp150_;
22013 ValaExpression* _tmp151_;
22014 ValaExpression* _tmp152_;
22015 ValaCCodeExpression* _tmp153_ = NULL;
22016 ValaCCodeExpression* _tmp154_;
22017 _tmp138_ = vala_ccode_base_module_get_result_cexpression (self, "result");
22018 result_lhs = _tmp138_;
22019 _tmp140_ = vala_ccode_base_module_get_current_return_type (self);
22020 _tmp141_ = _tmp140_;
22021 _tmp142_ = vala_data_type_is_real_non_null_struct_type (_tmp141_);
22023 gboolean _tmp143_ = FALSE;
22024 _tmp143_ = vala_ccode_base_module_is_in_coroutine (self);
22025 _tmp139_ = !_tmp143_;
22029 _tmp144_ = _tmp139_;
22031 ValaCCodeExpression* _tmp145_;
22032 ValaCCodeUnaryExpression* _tmp146_;
22033 _tmp145_ = result_lhs;
22034 _tmp146_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp145_);
22035 _vala_ccode_node_unref0 (result_lhs);
22036 result_lhs = (ValaCCodeExpression*) _tmp146_;
22038 _tmp147_ = vala_ccode_base_module_get_ccode (self);
22039 _tmp148_ = _tmp147_;
22040 _tmp149_ = result_lhs;
22042 _tmp151_ = vala_return_statement_get_return_expression (_tmp150_);
22043 _tmp152_ = _tmp151_;
22044 _tmp153_ = vala_ccode_base_module_get_cvalue (self, _tmp152_);
22045 _tmp154_ = _tmp153_;
22046 vala_ccode_function_add_assignment (_tmp148_, _tmp149_, _tmp154_);
22047 _vala_ccode_node_unref0 (_tmp154_);
22048 _vala_ccode_node_unref0 (result_lhs);
22050 _tmp155_ = vala_ccode_base_module_get_current_symbol (self);
22051 _tmp156_ = _tmp155_;
22052 vala_ccode_base_module_append_local_free (self, _tmp156_, FALSE, NULL);
22053 _tmp157_ = vala_ccode_base_module_get_current_method (self);
22054 _tmp158_ = _tmp157_;
22055 if (_tmp158_ != NULL) {
22057 ValaMethod* _tmp159_;
22058 ValaMethod* _tmp160_;
22059 ValaList* _tmp161_ = NULL;
22060 ValaList* _postcondition_list;
22061 ValaList* _tmp162_;
22064 gint _postcondition_size;
22065 gint _postcondition_index;
22066 _tmp159_ = vala_ccode_base_module_get_current_method (self);
22067 _tmp160_ = _tmp159_;
22068 _tmp161_ = vala_method_get_postconditions (_tmp160_);
22069 _postcondition_list = _tmp161_;
22070 _tmp162_ = _postcondition_list;
22071 _tmp163_ = vala_collection_get_size ((ValaCollection*) _tmp162_);
22072 _tmp164_ = _tmp163_;
22073 _postcondition_size = _tmp164_;
22074 _postcondition_index = -1;
22079 ValaList* _tmp168_;
22081 gpointer _tmp170_ = NULL;
22082 ValaExpression* postcondition;
22083 ValaExpression* _tmp171_;
22084 _tmp165_ = _postcondition_index;
22085 _postcondition_index = _tmp165_ + 1;
22086 _tmp166_ = _postcondition_index;
22087 _tmp167_ = _postcondition_size;
22088 if (!(_tmp166_ < _tmp167_)) {
22091 _tmp168_ = _postcondition_list;
22092 _tmp169_ = _postcondition_index;
22093 _tmp170_ = vala_list_get (_tmp168_, _tmp169_);
22094 postcondition = (ValaExpression*) _tmp170_;
22095 _tmp171_ = postcondition;
22096 vala_ccode_base_module_create_postcondition_statement (self, _tmp171_);
22097 _vala_code_node_unref0 (postcondition);
22099 _vala_iterable_unref0 (_postcondition_list);
22102 _tmp173_ = vala_ccode_base_module_get_current_method (self);
22103 _tmp174_ = _tmp173_;
22104 if (_tmp174_ != NULL) {
22105 ValaMethod* _tmp175_;
22106 ValaMethod* _tmp176_;
22109 _tmp175_ = vala_ccode_base_module_get_current_method (self);
22110 _tmp176_ = _tmp175_;
22111 _tmp177_ = vala_method_get_coroutine (_tmp176_);
22112 _tmp178_ = _tmp177_;
22113 _tmp172_ = !_tmp178_;
22117 _tmp179_ = _tmp172_;
22120 ValaMethod* _tmp180_;
22121 ValaMethod* _tmp181_;
22122 ValaList* _tmp182_ = NULL;
22123 ValaList* _param_list;
22124 ValaList* _tmp183_;
22129 _tmp180_ = vala_ccode_base_module_get_current_method (self);
22130 _tmp181_ = _tmp180_;
22131 _tmp182_ = vala_method_get_parameters (_tmp181_);
22132 _param_list = _tmp182_;
22133 _tmp183_ = _param_list;
22134 _tmp184_ = vala_collection_get_size ((ValaCollection*) _tmp183_);
22135 _tmp185_ = _tmp184_;
22136 _param_size = _tmp185_;
22142 ValaList* _tmp189_;
22144 gpointer _tmp191_ = NULL;
22145 ValaParameter* param;
22146 ValaParameter* _tmp192_;
22147 ValaParameterDirection _tmp193_;
22148 ValaParameterDirection _tmp194_;
22149 ValaParameter* _tmp195_;
22150 _tmp186_ = _param_index;
22151 _param_index = _tmp186_ + 1;
22152 _tmp187_ = _param_index;
22153 _tmp188_ = _param_size;
22154 if (!(_tmp187_ < _tmp188_)) {
22157 _tmp189_ = _param_list;
22158 _tmp190_ = _param_index;
22159 _tmp191_ = vala_list_get (_tmp189_, _tmp190_);
22160 param = (ValaParameter*) _tmp191_;
22162 _tmp193_ = vala_parameter_get_direction (_tmp192_);
22163 _tmp194_ = _tmp193_;
22164 if (_tmp194_ != VALA_PARAMETER_DIRECTION_OUT) {
22165 _vala_code_node_unref0 (param);
22169 vala_ccode_base_module_return_out_parameter (self, _tmp195_);
22170 _vala_code_node_unref0 (param);
22172 _vala_iterable_unref0 (_param_list);
22175 _tmp197_ = vala_ccode_base_module_get_current_method (self);
22176 _tmp198_ = _tmp197_;
22177 if (_tmp198_ != NULL) {
22178 ValaMethod* _tmp199_;
22179 ValaMethod* _tmp200_;
22180 ValaAttribute* _tmp201_ = NULL;
22181 ValaAttribute* _tmp202_;
22182 _tmp199_ = vala_ccode_base_module_get_current_method (self);
22183 _tmp200_ = _tmp199_;
22184 _tmp201_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp200_, "Profile");
22185 _tmp202_ = _tmp201_;
22186 _tmp196_ = _tmp202_ != NULL;
22187 _vala_code_node_unref0 (_tmp202_);
22191 _tmp203_ = _tmp196_;
22193 ValaMethod* _tmp204_;
22194 ValaMethod* _tmp205_;
22195 gchar* _tmp206_ = NULL;
22197 gchar* _tmp208_ = NULL;
22200 const gchar* _tmp210_;
22203 ValaCCodeIdentifier* _tmp213_;
22204 ValaCCodeIdentifier* _tmp214_;
22205 ValaCCodeIdentifier* timer;
22206 ValaCCodeIdentifier* _tmp215_;
22207 ValaCCodeIdentifier* _tmp216_;
22208 ValaCCodeFunctionCall* _tmp217_;
22209 ValaCCodeFunctionCall* _tmp218_;
22210 ValaCCodeFunctionCall* stop_call;
22211 ValaCCodeFunctionCall* _tmp219_;
22212 ValaCCodeIdentifier* _tmp220_;
22213 ValaCCodeFunction* _tmp221_;
22214 ValaCCodeFunction* _tmp222_;
22215 ValaCCodeFunctionCall* _tmp223_;
22216 _tmp204_ = vala_ccode_base_module_get_current_method (self);
22217 _tmp205_ = _tmp204_;
22218 _tmp206_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp205_);
22219 _tmp207_ = _tmp206_;
22220 _tmp208_ = g_strdup_printf ("_vala_prof_%s", _tmp207_);
22221 _tmp209_ = _tmp208_;
22222 _g_free0 (_tmp207_);
22225 _tmp211_ = g_strconcat (_tmp210_, "_timer", NULL);
22226 _tmp212_ = _tmp211_;
22227 _tmp213_ = vala_ccode_identifier_new (_tmp212_);
22228 _tmp214_ = _tmp213_;
22229 _g_free0 (_tmp212_);
22231 _tmp215_ = vala_ccode_identifier_new ("g_timer_stop");
22232 _tmp216_ = _tmp215_;
22233 _tmp217_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp216_);
22234 _tmp218_ = _tmp217_;
22235 _vala_ccode_node_unref0 (_tmp216_);
22236 stop_call = _tmp218_;
22237 _tmp219_ = stop_call;
22239 vala_ccode_function_call_add_argument (_tmp219_, (ValaCCodeExpression*) _tmp220_);
22240 _tmp221_ = vala_ccode_base_module_get_ccode (self);
22241 _tmp222_ = _tmp221_;
22242 _tmp223_ = stop_call;
22243 vala_ccode_function_add_expression (_tmp222_, (ValaCCodeExpression*) _tmp223_);
22244 _vala_ccode_node_unref0 (stop_call);
22245 _vala_ccode_node_unref0 (timer);
22248 _tmp224_ = vala_ccode_base_module_is_in_constructor (self);
22250 ValaCCodeFunction* _tmp225_;
22251 ValaCCodeFunction* _tmp226_;
22252 ValaCCodeIdentifier* _tmp227_;
22253 ValaCCodeIdentifier* _tmp228_;
22254 _tmp225_ = vala_ccode_base_module_get_ccode (self);
22255 _tmp226_ = _tmp225_;
22256 _tmp227_ = vala_ccode_identifier_new ("obj");
22257 _tmp228_ = _tmp227_;
22258 vala_ccode_function_add_return (_tmp226_, (ValaCCodeExpression*) _tmp228_);
22259 _vala_ccode_node_unref0 (_tmp228_);
22261 gboolean _tmp229_ = FALSE;
22262 _tmp229_ = vala_ccode_base_module_is_in_destructor (self);
22264 ValaCCodeFunction* _tmp230_;
22265 ValaCCodeFunction* _tmp231_;
22266 _tmp230_ = vala_ccode_base_module_get_ccode (self);
22267 _tmp231_ = _tmp230_;
22268 vala_ccode_function_add_goto (_tmp231_, "_return");
22270 gboolean _tmp232_ = FALSE;
22271 _tmp232_ = vala_ccode_base_module_is_in_coroutine (self);
22274 ValaMethod* _tmp233_;
22275 ValaMethod* _tmp234_;
22276 _tmp233_ = vala_ccode_base_module_get_current_method (self);
22277 _tmp234_ = _tmp233_;
22278 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp234_, VALA_TYPE_CREATION_METHOD)) {
22279 ValaCCodeFunction* _tmp235_;
22280 ValaCCodeFunction* _tmp236_;
22281 ValaCCodeIdentifier* _tmp237_;
22282 ValaCCodeIdentifier* _tmp238_;
22283 _tmp235_ = vala_ccode_base_module_get_ccode (self);
22284 _tmp236_ = _tmp235_;
22285 _tmp237_ = vala_ccode_identifier_new ("self");
22286 _tmp238_ = _tmp237_;
22287 vala_ccode_function_add_return (_tmp236_, (ValaCCodeExpression*) _tmp238_);
22288 _vala_ccode_node_unref0 (_tmp238_);
22290 gboolean _tmp239_ = FALSE;
22291 ValaDataType* _tmp240_;
22292 ValaDataType* _tmp241_;
22294 _tmp240_ = vala_ccode_base_module_get_current_return_type (self);
22295 _tmp241_ = _tmp240_;
22296 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp241_, VALA_TYPE_VOID_TYPE)) {
22299 ValaDataType* _tmp242_;
22300 ValaDataType* _tmp243_;
22301 gboolean _tmp244_ = FALSE;
22302 _tmp242_ = vala_ccode_base_module_get_current_return_type (self);
22303 _tmp243_ = _tmp242_;
22304 _tmp244_ = vala_data_type_is_real_non_null_struct_type (_tmp243_);
22305 _tmp239_ = _tmp244_;
22307 _tmp245_ = _tmp239_;
22309 ValaCCodeFunction* _tmp246_;
22310 ValaCCodeFunction* _tmp247_;
22311 _tmp246_ = vala_ccode_base_module_get_ccode (self);
22312 _tmp247_ = _tmp246_;
22313 vala_ccode_function_add_return (_tmp247_, NULL);
22315 ValaCCodeFunction* _tmp248_;
22316 ValaCCodeFunction* _tmp249_;
22317 ValaCCodeIdentifier* _tmp250_;
22318 ValaCCodeIdentifier* _tmp251_;
22319 _tmp248_ = vala_ccode_base_module_get_ccode (self);
22320 _tmp249_ = _tmp248_;
22321 _tmp250_ = vala_ccode_identifier_new ("result");
22322 _tmp251_ = _tmp250_;
22323 vala_ccode_function_add_return (_tmp249_, (ValaCCodeExpression*) _tmp251_);
22324 _vala_ccode_node_unref0 (_tmp251_);
22330 _tmp252_ = return_expression_symbol;
22331 if (_tmp252_ != NULL) {
22332 ValaSymbol* _tmp253_;
22333 _tmp253_ = return_expression_symbol;
22334 vala_symbol_set_active (_tmp253_, TRUE);
22336 vala_ccode_base_module_set_current_method_return (self, TRUE);
22337 _vala_code_node_unref0 (return_expression_symbol);
22341 gchar* vala_ccode_base_module_get_symbol_lock_name (ValaCCodeBaseModule* self, const gchar* symname) {
22342 gchar* result = NULL;
22343 const gchar* _tmp0_;
22344 gchar* _tmp1_ = NULL;
22345 g_return_val_if_fail (self != NULL, NULL);
22346 g_return_val_if_fail (symname != NULL, NULL);
22348 _tmp1_ = g_strdup_printf ("__lock_%s", _tmp0_);
22354 static ValaCCodeExpression* vala_ccode_base_module_get_lock_expression (ValaCCodeBaseModule* self, ValaStatement* stmt, ValaExpression* resource) {
22355 ValaCCodeExpression* result = NULL;
22356 ValaCCodeExpression* l;
22357 ValaExpression* _tmp0_;
22358 ValaExpression* _tmp1_;
22359 ValaExpression* _tmp2_;
22360 ValaExpression* _tmp3_;
22361 ValaExpression* inner_node;
22362 ValaExpression* _tmp4_;
22363 ValaSymbol* _tmp5_;
22364 ValaSymbol* _tmp6_;
22365 ValaSymbol* _tmp7_;
22366 ValaSymbol* member;
22367 ValaExpression* _tmp8_;
22368 ValaSymbol* _tmp9_;
22369 ValaSymbol* _tmp10_;
22370 ValaSymbol* _tmp11_;
22371 ValaSymbol* _tmp12_;
22372 ValaTypeSymbol* _tmp13_;
22373 ValaTypeSymbol* parent;
22374 ValaSymbol* _tmp14_;
22375 gboolean _tmp15_ = FALSE;
22376 g_return_val_if_fail (self != NULL, NULL);
22377 g_return_val_if_fail (stmt != NULL, NULL);
22378 g_return_val_if_fail (resource != NULL, NULL);
22381 _tmp1_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
22383 _tmp3_ = _vala_code_node_ref0 (_tmp2_);
22384 inner_node = _tmp3_;
22386 _tmp5_ = vala_expression_get_symbol_reference (_tmp4_);
22388 _tmp7_ = _vala_code_node_ref0 (_tmp6_);
22391 _tmp9_ = vala_expression_get_symbol_reference (_tmp8_);
22393 _tmp11_ = vala_symbol_get_parent_symbol (_tmp10_);
22395 _tmp13_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
22398 _tmp15_ = vala_symbol_is_instance_member (_tmp14_);
22400 ValaExpression* _tmp16_;
22401 ValaCCodeExpression* _tmp32_;
22402 ValaCCodeMemberAccess* _tmp33_;
22403 ValaCCodeMemberAccess* _tmp34_;
22404 ValaExpression* _tmp35_;
22405 ValaSymbol* _tmp36_;
22406 ValaSymbol* _tmp37_;
22407 const gchar* _tmp38_;
22408 const gchar* _tmp39_;
22409 gchar* _tmp40_ = NULL;
22411 ValaCCodeMemberAccess* _tmp42_;
22412 _tmp16_ = inner_node;
22413 if (_tmp16_ == NULL) {
22414 ValaCCodeIdentifier* _tmp17_;
22415 _tmp17_ = vala_ccode_identifier_new ("self");
22416 _vala_ccode_node_unref0 (l);
22417 l = (ValaCCodeExpression*) _tmp17_;
22419 ValaExpression* _tmp18_;
22420 ValaSymbol* _tmp19_;
22421 ValaSymbol* _tmp20_;
22422 ValaSymbol* _tmp21_;
22423 ValaSymbol* _tmp22_;
22424 ValaTypeSymbol* _tmp23_;
22425 ValaTypeSymbol* _tmp24_;
22426 _tmp18_ = resource;
22427 _tmp19_ = vala_expression_get_symbol_reference (_tmp18_);
22429 _tmp21_ = vala_symbol_get_parent_symbol (_tmp20_);
22431 _tmp23_ = vala_ccode_base_module_get_current_type_symbol (self);
22433 if (_tmp22_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, VALA_TYPE_SYMBOL, ValaSymbol)) {
22434 ValaExpression* _tmp25_;
22435 ValaCCodeExpression* _tmp26_ = NULL;
22436 ValaCCodeExpression* _tmp27_;
22437 ValaTypeSymbol* _tmp28_;
22438 ValaCCodeFunctionCall* _tmp29_ = NULL;
22439 _tmp25_ = inner_node;
22440 _tmp26_ = vala_ccode_base_module_get_cvalue (self, _tmp25_);
22443 _tmp29_ = vala_ccode_base_module_generate_instance_cast (self, _tmp27_, _tmp28_);
22444 _vala_ccode_node_unref0 (l);
22445 l = (ValaCCodeExpression*) _tmp29_;
22446 _vala_ccode_node_unref0 (_tmp27_);
22448 ValaExpression* _tmp30_;
22449 ValaCCodeExpression* _tmp31_ = NULL;
22450 _tmp30_ = inner_node;
22451 _tmp31_ = vala_ccode_base_module_get_cvalue (self, _tmp30_);
22452 _vala_ccode_node_unref0 (l);
22457 _tmp33_ = vala_ccode_member_access_new_pointer (_tmp32_, "priv");
22459 _tmp35_ = resource;
22460 _tmp36_ = vala_expression_get_symbol_reference (_tmp35_);
22462 _tmp38_ = vala_symbol_get_name (_tmp37_);
22464 _tmp40_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp39_);
22466 _tmp42_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp34_, _tmp41_);
22467 _vala_ccode_node_unref0 (l);
22468 l = (ValaCCodeExpression*) _tmp42_;
22469 _g_free0 (_tmp41_);
22470 _vala_ccode_node_unref0 (_tmp34_);
22472 ValaSymbol* _tmp43_;
22473 gboolean _tmp44_ = FALSE;
22475 _tmp44_ = vala_symbol_is_class_member (_tmp43_);
22477 ValaCCodeExpression* klass = NULL;
22478 ValaDataType* _tmp45_ = NULL;
22479 ValaDataType* _tmp46_;
22481 ValaTypeSymbol* _tmp58_;
22482 gchar* _tmp59_ = NULL;
22484 gchar* _tmp61_ = NULL;
22486 ValaCCodeIdentifier* _tmp63_;
22487 ValaCCodeIdentifier* _tmp64_;
22488 ValaCCodeFunctionCall* _tmp65_;
22489 ValaCCodeFunctionCall* _tmp66_;
22490 ValaCCodeFunctionCall* get_class_private_call;
22491 ValaCCodeFunctionCall* _tmp67_;
22492 ValaCCodeExpression* _tmp68_;
22493 ValaCCodeFunctionCall* _tmp69_;
22494 ValaExpression* _tmp70_;
22495 ValaSymbol* _tmp71_;
22496 ValaSymbol* _tmp72_;
22497 const gchar* _tmp73_;
22498 const gchar* _tmp74_;
22499 gchar* _tmp75_ = NULL;
22501 ValaCCodeMemberAccess* _tmp77_;
22502 _tmp45_ = vala_ccode_base_module_get_this_type (self);
22504 _tmp47_ = _tmp46_ != NULL;
22505 _vala_code_node_unref0 (_tmp46_);
22507 ValaCCodeIdentifier* _tmp48_;
22508 ValaCCodeIdentifier* _tmp49_;
22509 ValaCCodeFunctionCall* _tmp50_;
22510 ValaCCodeFunctionCall* _tmp51_;
22511 ValaCCodeFunctionCall* k;
22512 ValaCCodeFunctionCall* _tmp52_;
22513 ValaCCodeIdentifier* _tmp53_;
22514 ValaCCodeIdentifier* _tmp54_;
22515 ValaCCodeFunctionCall* _tmp55_;
22516 ValaCCodeExpression* _tmp56_;
22517 _tmp48_ = vala_ccode_identifier_new ("G_OBJECT_GET_CLASS");
22519 _tmp50_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp49_);
22521 _vala_ccode_node_unref0 (_tmp49_);
22524 _tmp53_ = vala_ccode_identifier_new ("self");
22526 vala_ccode_function_call_add_argument (_tmp52_, (ValaCCodeExpression*) _tmp54_);
22527 _vala_ccode_node_unref0 (_tmp54_);
22529 _tmp56_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp55_);
22530 _vala_ccode_node_unref0 (klass);
22532 _vala_ccode_node_unref0 (k);
22534 ValaCCodeIdentifier* _tmp57_;
22535 _tmp57_ = vala_ccode_identifier_new ("klass");
22536 _vala_ccode_node_unref0 (klass);
22537 klass = (ValaCCodeExpression*) _tmp57_;
22540 _tmp59_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp58_, NULL);
22542 _tmp61_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp60_);
22544 _tmp63_ = vala_ccode_identifier_new (_tmp62_);
22546 _tmp65_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp64_);
22548 _vala_ccode_node_unref0 (_tmp64_);
22549 _g_free0 (_tmp62_);
22550 _g_free0 (_tmp60_);
22551 get_class_private_call = _tmp66_;
22552 _tmp67_ = get_class_private_call;
22554 vala_ccode_function_call_add_argument (_tmp67_, _tmp68_);
22555 _tmp69_ = get_class_private_call;
22556 _tmp70_ = resource;
22557 _tmp71_ = vala_expression_get_symbol_reference (_tmp70_);
22559 _tmp73_ = vala_symbol_get_name (_tmp72_);
22561 _tmp75_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp74_);
22563 _tmp77_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp69_, _tmp76_);
22564 _vala_ccode_node_unref0 (l);
22565 l = (ValaCCodeExpression*) _tmp77_;
22566 _g_free0 (_tmp76_);
22567 _vala_ccode_node_unref0 (get_class_private_call);
22568 _vala_ccode_node_unref0 (klass);
22570 ValaTypeSymbol* _tmp78_;
22571 gchar* _tmp79_ = NULL;
22573 ValaExpression* _tmp81_;
22574 ValaSymbol* _tmp82_;
22575 ValaSymbol* _tmp83_;
22576 const gchar* _tmp84_;
22577 const gchar* _tmp85_;
22578 gchar* _tmp86_ = NULL;
22581 const gchar* _tmp88_;
22582 gchar* _tmp89_ = NULL;
22584 ValaCCodeIdentifier* _tmp91_;
22586 _tmp79_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp78_, NULL);
22588 _tmp81_ = resource;
22589 _tmp82_ = vala_expression_get_symbol_reference (_tmp81_);
22591 _tmp84_ = vala_symbol_get_name (_tmp83_);
22593 _tmp86_ = g_strdup_printf ("%s_%s", _tmp80_, _tmp85_);
22595 _g_free0 (_tmp80_);
22596 lock_name = _tmp87_;
22597 _tmp88_ = lock_name;
22598 _tmp89_ = vala_ccode_base_module_get_symbol_lock_name (self, _tmp88_);
22600 _tmp91_ = vala_ccode_identifier_new (_tmp90_);
22601 _vala_ccode_node_unref0 (l);
22602 l = (ValaCCodeExpression*) _tmp91_;
22603 _g_free0 (_tmp90_);
22604 _g_free0 (lock_name);
22608 _vala_code_node_unref0 (parent);
22609 _vala_code_node_unref0 (member);
22610 _vala_code_node_unref0 (inner_node);
22615 static void vala_ccode_base_module_real_visit_lock_statement (ValaCodeVisitor* base, ValaLockStatement* stmt) {
22616 ValaCCodeBaseModule * self;
22617 ValaLockStatement* _tmp0_;
22618 ValaLockStatement* _tmp1_;
22619 ValaExpression* _tmp2_;
22620 ValaExpression* _tmp3_;
22621 ValaCCodeExpression* _tmp4_ = NULL;
22622 ValaCCodeExpression* l;
22623 ValaStruct* _tmp5_;
22626 ValaSymbol* _tmp8_ = NULL;
22627 ValaSymbol* _tmp9_;
22628 gchar* _tmp10_ = NULL;
22630 ValaCCodeIdentifier* _tmp12_;
22631 ValaCCodeIdentifier* _tmp13_;
22632 ValaCCodeFunctionCall* _tmp14_;
22633 ValaCCodeFunctionCall* _tmp15_;
22634 ValaCCodeFunctionCall* fc;
22635 ValaCCodeUnaryExpression* _tmp16_;
22636 ValaCCodeUnaryExpression* _tmp17_;
22637 ValaCCodeFunction* _tmp18_;
22638 ValaCCodeFunction* _tmp19_;
22639 self = (ValaCCodeBaseModule*) base;
22640 g_return_if_fail (stmt != NULL);
22643 _tmp2_ = vala_lock_statement_get_resource (_tmp1_);
22645 _tmp4_ = vala_ccode_base_module_get_lock_expression (self, (ValaStatement*) _tmp0_, _tmp3_);
22647 _tmp5_ = self->mutex_type;
22648 _tmp6_ = vala_symbol_get_scope ((ValaSymbol*) _tmp5_);
22650 _tmp8_ = vala_scope_lookup (_tmp7_, "lock");
22652 _tmp10_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp9_);
22654 _tmp12_ = vala_ccode_identifier_new (_tmp11_);
22656 _tmp14_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp13_);
22658 _vala_ccode_node_unref0 (_tmp13_);
22659 _g_free0 (_tmp11_);
22660 _vala_code_node_unref0 (_tmp9_);
22662 _tmp16_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, l);
22664 vala_ccode_function_call_add_argument (fc, (ValaCCodeExpression*) _tmp17_);
22665 _vala_ccode_node_unref0 (_tmp17_);
22666 _tmp18_ = vala_ccode_base_module_get_ccode (self);
22668 vala_ccode_function_add_expression (_tmp19_, (ValaCCodeExpression*) fc);
22669 _vala_ccode_node_unref0 (fc);
22670 _vala_ccode_node_unref0 (l);
22674 static void vala_ccode_base_module_real_visit_unlock_statement (ValaCodeVisitor* base, ValaUnlockStatement* stmt) {
22675 ValaCCodeBaseModule * self;
22676 ValaUnlockStatement* _tmp0_;
22677 ValaUnlockStatement* _tmp1_;
22678 ValaExpression* _tmp2_;
22679 ValaExpression* _tmp3_;
22680 ValaCCodeExpression* _tmp4_ = NULL;
22681 ValaCCodeExpression* l;
22682 ValaStruct* _tmp5_;
22685 ValaSymbol* _tmp8_ = NULL;
22686 ValaSymbol* _tmp9_;
22687 gchar* _tmp10_ = NULL;
22689 ValaCCodeIdentifier* _tmp12_;
22690 ValaCCodeIdentifier* _tmp13_;
22691 ValaCCodeFunctionCall* _tmp14_;
22692 ValaCCodeFunctionCall* _tmp15_;
22693 ValaCCodeFunctionCall* fc;
22694 ValaCCodeUnaryExpression* _tmp16_;
22695 ValaCCodeUnaryExpression* _tmp17_;
22696 ValaCCodeFunction* _tmp18_;
22697 ValaCCodeFunction* _tmp19_;
22698 self = (ValaCCodeBaseModule*) base;
22699 g_return_if_fail (stmt != NULL);
22702 _tmp2_ = vala_unlock_statement_get_resource (_tmp1_);
22704 _tmp4_ = vala_ccode_base_module_get_lock_expression (self, (ValaStatement*) _tmp0_, _tmp3_);
22706 _tmp5_ = self->mutex_type;
22707 _tmp6_ = vala_symbol_get_scope ((ValaSymbol*) _tmp5_);
22709 _tmp8_ = vala_scope_lookup (_tmp7_, "unlock");
22711 _tmp10_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp9_);
22713 _tmp12_ = vala_ccode_identifier_new (_tmp11_);
22715 _tmp14_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp13_);
22717 _vala_ccode_node_unref0 (_tmp13_);
22718 _g_free0 (_tmp11_);
22719 _vala_code_node_unref0 (_tmp9_);
22721 _tmp16_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, l);
22723 vala_ccode_function_call_add_argument (fc, (ValaCCodeExpression*) _tmp17_);
22724 _vala_ccode_node_unref0 (_tmp17_);
22725 _tmp18_ = vala_ccode_base_module_get_ccode (self);
22727 vala_ccode_function_add_expression (_tmp19_, (ValaCCodeExpression*) fc);
22728 _vala_ccode_node_unref0 (fc);
22729 _vala_ccode_node_unref0 (l);
22733 static void vala_ccode_base_module_real_visit_delete_statement (ValaCodeVisitor* base, ValaDeleteStatement* stmt) {
22734 ValaCCodeBaseModule * self;
22735 ValaDeleteStatement* _tmp0_;
22736 ValaExpression* _tmp1_;
22737 ValaExpression* _tmp2_;
22738 ValaDataType* _tmp3_;
22739 ValaDataType* _tmp4_;
22740 ValaPointerType* _tmp5_;
22741 ValaPointerType* pointer_type;
22742 ValaPointerType* _tmp6_;
22743 ValaDataType* _tmp7_;
22744 ValaDataType* type;
22745 gboolean _tmp8_ = FALSE;
22746 ValaPointerType* _tmp9_;
22747 ValaDataType* _tmp10_;
22748 ValaDataType* _tmp11_;
22749 ValaTypeSymbol* _tmp12_;
22750 ValaTypeSymbol* _tmp13_;
22752 ValaDataType* _tmp25_;
22753 ValaCCodeExpression* _tmp26_ = NULL;
22754 ValaCCodeExpression* _tmp27_;
22755 ValaCCodeFunctionCall* _tmp28_;
22756 ValaCCodeFunctionCall* _tmp29_;
22757 ValaCCodeFunctionCall* ccall;
22758 ValaDeleteStatement* _tmp30_;
22759 ValaExpression* _tmp31_;
22760 ValaExpression* _tmp32_;
22761 ValaCCodeExpression* _tmp33_ = NULL;
22762 ValaCCodeExpression* _tmp34_;
22763 ValaCCodeFunction* _tmp35_;
22764 ValaCCodeFunction* _tmp36_;
22765 self = (ValaCCodeBaseModule*) base;
22766 g_return_if_fail (stmt != NULL);
22768 _tmp1_ = vala_delete_statement_get_expression (_tmp0_);
22770 _tmp3_ = vala_expression_get_value_type (_tmp2_);
22772 _tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, VALA_TYPE_POINTER_TYPE, ValaPointerType));
22773 pointer_type = _tmp5_;
22774 _tmp6_ = pointer_type;
22775 _tmp7_ = _vala_code_node_ref0 ((ValaDataType*) _tmp6_);
22777 _tmp9_ = pointer_type;
22778 _tmp10_ = vala_pointer_type_get_base_type (_tmp9_);
22780 _tmp12_ = vala_data_type_get_data_type (_tmp11_);
22782 if (_tmp13_ != NULL) {
22783 ValaPointerType* _tmp14_;
22784 ValaDataType* _tmp15_;
22785 ValaDataType* _tmp16_;
22786 ValaTypeSymbol* _tmp17_;
22787 ValaTypeSymbol* _tmp18_;
22788 gboolean _tmp19_ = FALSE;
22789 _tmp14_ = pointer_type;
22790 _tmp15_ = vala_pointer_type_get_base_type (_tmp14_);
22792 _tmp17_ = vala_data_type_get_data_type (_tmp16_);
22794 _tmp19_ = vala_typesymbol_is_reference_type (_tmp18_);
22801 ValaPointerType* _tmp21_;
22802 ValaDataType* _tmp22_;
22803 ValaDataType* _tmp23_;
22804 ValaDataType* _tmp24_;
22805 _tmp21_ = pointer_type;
22806 _tmp22_ = vala_pointer_type_get_base_type (_tmp21_);
22808 _tmp24_ = _vala_code_node_ref0 (_tmp23_);
22809 _vala_code_node_unref0 (type);
22813 _tmp26_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp25_, FALSE);
22815 _tmp28_ = vala_ccode_function_call_new (_tmp27_);
22817 _vala_ccode_node_unref0 (_tmp27_);
22820 _tmp31_ = vala_delete_statement_get_expression (_tmp30_);
22822 _tmp33_ = vala_ccode_base_module_get_cvalue (self, _tmp32_);
22824 vala_ccode_function_call_add_argument (ccall, _tmp34_);
22825 _vala_ccode_node_unref0 (_tmp34_);
22826 _tmp35_ = vala_ccode_base_module_get_ccode (self);
22828 vala_ccode_function_add_expression (_tmp36_, (ValaCCodeExpression*) ccall);
22829 _vala_ccode_node_unref0 (ccall);
22830 _vala_code_node_unref0 (type);
22831 _vala_code_node_unref0 (pointer_type);
22835 static void vala_ccode_base_module_real_visit_expression (ValaCodeVisitor* base, ValaExpression* expr) {
22836 ValaCCodeBaseModule * self;
22837 gboolean _tmp0_ = FALSE;
22838 ValaExpression* _tmp1_;
22839 ValaCCodeExpression* _tmp2_ = NULL;
22840 ValaCCodeExpression* _tmp3_;
22843 self = (ValaCCodeBaseModule*) base;
22844 g_return_if_fail (expr != NULL);
22846 _tmp2_ = vala_ccode_base_module_get_cvalue (self, _tmp1_);
22848 _tmp4_ = _tmp3_ != NULL;
22849 _vala_ccode_node_unref0 (_tmp3_);
22851 ValaExpression* _tmp5_;
22855 _tmp6_ = vala_expression_get_lvalue (_tmp5_);
22863 gboolean _tmp9_ = FALSE;
22864 ValaExpression* _tmp10_;
22865 ValaDataType* _tmp11_;
22866 ValaDataType* _tmp12_;
22868 ValaExpression* _tmp52_;
22869 ValaDataType* _tmp53_;
22870 ValaDataType* _tmp54_;
22871 ValaExpression* _tmp71_;
22872 ValaTargetValue* _tmp72_;
22873 ValaTargetValue* _tmp73_;
22874 gboolean _tmp74_ = FALSE;
22875 ValaExpression* _tmp75_;
22876 ValaDataType* _tmp76_;
22877 ValaDataType* _tmp77_;
22879 gboolean _tmp99_ = FALSE;
22880 ValaExpression* _tmp100_;
22881 ValaDataType* _tmp101_;
22882 ValaDataType* _tmp102_;
22885 _tmp11_ = vala_expression_get_formal_value_type (_tmp10_);
22887 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, VALA_TYPE_GENERIC_TYPE)) {
22888 ValaExpression* _tmp13_;
22889 ValaDataType* _tmp14_;
22890 ValaDataType* _tmp15_;
22892 _tmp14_ = vala_expression_get_value_type (_tmp13_);
22894 _tmp9_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, VALA_TYPE_GENERIC_TYPE);
22900 ValaExpression* _tmp17_;
22901 ValaDataType* _tmp18_;
22902 ValaDataType* _tmp19_;
22903 ValaTypeParameter* _tmp20_;
22904 ValaTypeParameter* _tmp21_;
22905 ValaSymbol* _tmp22_;
22906 ValaSymbol* _tmp23_;
22907 ValaSymbol* _tmp24_;
22908 ValaSymbol* _tmp25_;
22909 ValaStruct* _tmp26_;
22911 gboolean _tmp27_ = FALSE;
22912 ValaExpression* _tmp28_;
22913 ValaDataType* _tmp29_;
22914 ValaDataType* _tmp30_;
22915 ValaTypeParameter* _tmp31_;
22916 ValaTypeParameter* _tmp32_;
22917 ValaSymbol* _tmp33_;
22918 ValaSymbol* _tmp34_;
22919 ValaTypeSymbol* _tmp35_;
22922 _tmp18_ = vala_expression_get_formal_value_type (_tmp17_);
22924 _tmp20_ = vala_data_type_get_type_parameter (_tmp19_);
22926 _tmp22_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp21_);
22928 _tmp24_ = vala_symbol_get_parent_symbol (_tmp23_);
22930 _tmp26_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp25_) : NULL);
22933 _tmp29_ = vala_expression_get_formal_value_type (_tmp28_);
22935 _tmp31_ = vala_data_type_get_type_parameter (_tmp30_);
22937 _tmp33_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp32_);
22939 _tmp35_ = self->garray_type;
22940 if (_tmp34_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, VALA_TYPE_SYMBOL, ValaSymbol)) {
22941 gboolean _tmp36_ = FALSE;
22942 ValaStruct* _tmp37_;
22945 if (_tmp37_ == NULL) {
22948 ValaStruct* _tmp38_;
22949 gchar* _tmp39_ = NULL;
22952 _tmp39_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp38_);
22954 _tmp36_ = g_strcmp0 (_tmp40_, "va_list") != 0;
22955 _g_free0 (_tmp40_);
22964 ValaExpression* _tmp43_;
22965 ValaExpression* _tmp44_;
22966 ValaCCodeExpression* _tmp45_ = NULL;
22967 ValaCCodeExpression* _tmp46_;
22968 ValaExpression* _tmp47_;
22969 ValaDataType* _tmp48_;
22970 ValaDataType* _tmp49_;
22971 ValaCCodeExpression* _tmp50_ = NULL;
22972 ValaCCodeExpression* _tmp51_;
22975 _tmp45_ = vala_ccode_base_module_get_cvalue (self, _tmp44_);
22978 _tmp48_ = vala_expression_get_value_type (_tmp47_);
22980 _tmp50_ = vala_ccode_base_module_convert_from_generic_pointer (self, _tmp46_, _tmp49_);
22982 vala_ccode_base_module_set_cvalue (self, _tmp43_, _tmp51_);
22983 _vala_ccode_node_unref0 (_tmp51_);
22984 _vala_ccode_node_unref0 (_tmp46_);
22986 _vala_code_node_unref0 (st);
22989 _tmp53_ = vala_expression_get_value_type (_tmp52_);
22991 if (_tmp54_ != NULL) {
22992 ValaExpression* _tmp55_;
22993 ValaTargetValue* _tmp56_;
22994 ValaTargetValue* _tmp57_;
22995 ValaExpression* _tmp58_;
22996 ValaDataType* _tmp59_;
22997 ValaDataType* _tmp60_;
22998 ValaExpression* _tmp61_;
22999 ValaExpression* _tmp62_;
23000 ValaTargetValue* _tmp63_;
23001 ValaTargetValue* _tmp64_;
23002 ValaExpression* _tmp65_;
23003 ValaDataType* _tmp66_;
23004 ValaDataType* _tmp67_;
23005 ValaExpression* _tmp68_;
23006 ValaTargetValue* _tmp69_ = NULL;
23007 ValaTargetValue* _tmp70_;
23009 _tmp56_ = vala_expression_get_target_value (_tmp55_);
23012 _tmp59_ = vala_expression_get_value_type (_tmp58_);
23014 vala_target_value_set_value_type (_tmp57_, _tmp60_);
23017 _tmp63_ = vala_expression_get_target_value (_tmp62_);
23020 _tmp66_ = vala_expression_get_target_type (_tmp65_);
23023 _tmp69_ = vala_ccode_base_module_transform_value (self, _tmp64_, _tmp67_, (ValaCodeNode*) _tmp68_);
23025 vala_expression_set_target_value (_tmp61_, _tmp70_);
23026 _vala_target_value_unref0 (_tmp70_);
23029 _tmp72_ = vala_expression_get_target_value (_tmp71_);
23031 if (_tmp73_ == NULL) {
23035 _tmp76_ = vala_expression_get_formal_target_type (_tmp75_);
23037 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp77_, VALA_TYPE_GENERIC_TYPE)) {
23038 ValaExpression* _tmp78_;
23039 ValaDataType* _tmp79_;
23040 ValaDataType* _tmp80_;
23042 _tmp79_ = vala_expression_get_target_type (_tmp78_);
23044 _tmp74_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp80_, VALA_TYPE_GENERIC_TYPE);
23050 ValaExpression* _tmp82_;
23051 ValaDataType* _tmp83_;
23052 ValaDataType* _tmp84_;
23053 ValaTypeParameter* _tmp85_;
23054 ValaTypeParameter* _tmp86_;
23055 ValaSymbol* _tmp87_;
23056 ValaSymbol* _tmp88_;
23057 ValaTypeSymbol* _tmp89_;
23059 _tmp83_ = vala_expression_get_formal_target_type (_tmp82_);
23061 _tmp85_ = vala_data_type_get_type_parameter (_tmp84_);
23063 _tmp87_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp86_);
23065 _tmp89_ = self->garray_type;
23066 if (_tmp88_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp89_, VALA_TYPE_SYMBOL, ValaSymbol)) {
23067 ValaExpression* _tmp90_;
23068 ValaExpression* _tmp91_;
23069 ValaCCodeExpression* _tmp92_ = NULL;
23070 ValaCCodeExpression* _tmp93_;
23071 ValaExpression* _tmp94_;
23072 ValaDataType* _tmp95_;
23073 ValaDataType* _tmp96_;
23074 ValaCCodeExpression* _tmp97_ = NULL;
23075 ValaCCodeExpression* _tmp98_;
23078 _tmp92_ = vala_ccode_base_module_get_cvalue (self, _tmp91_);
23081 _tmp95_ = vala_expression_get_target_type (_tmp94_);
23083 _tmp97_ = vala_ccode_base_module_convert_to_generic_pointer (self, _tmp93_, _tmp96_);
23085 vala_ccode_base_module_set_cvalue (self, _tmp90_, _tmp98_);
23086 _vala_ccode_node_unref0 (_tmp98_);
23087 _vala_ccode_node_unref0 (_tmp93_);
23091 _tmp101_ = vala_expression_get_value_type (_tmp100_);
23092 _tmp102_ = _tmp101_;
23093 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp102_, VALA_TYPE_VALUE_TYPE)) {
23094 ValaExpression* _tmp103_;
23095 ValaDataType* _tmp104_;
23096 ValaDataType* _tmp105_;
23100 _tmp104_ = vala_expression_get_value_type (_tmp103_);
23101 _tmp105_ = _tmp104_;
23102 _tmp106_ = vala_data_type_get_nullable (_tmp105_);
23103 _tmp107_ = _tmp106_;
23104 _tmp99_ = !_tmp107_;
23108 _tmp108_ = _tmp99_;
23110 ValaExpression* _tmp109_;
23111 ValaTargetValue* _tmp110_;
23112 ValaTargetValue* _tmp111_;
23113 ValaExpression* _tmp112_;
23114 gboolean _tmp113_ = FALSE;
23116 _tmp110_ = vala_expression_get_target_value (_tmp109_);
23117 _tmp111_ = _tmp110_;
23119 _tmp113_ = vala_expression_is_non_null (_tmp112_);
23120 G_TYPE_CHECK_INSTANCE_CAST (_tmp111_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->non_null = _tmp113_;
23126 static void vala_ccode_base_module_real_visit_boolean_literal (ValaCodeVisitor* base, ValaBooleanLiteral* expr) {
23127 ValaCCodeBaseModule * self;
23128 const gchar* _tmp0_ = NULL;
23129 ValaBooleanLiteral* _tmp1_;
23132 ValaBooleanLiteral* _tmp4_;
23133 const gchar* _tmp5_;
23134 ValaCCodeConstant* _tmp6_;
23135 ValaCCodeConstant* _tmp7_;
23136 self = (ValaCCodeBaseModule*) base;
23137 g_return_if_fail (expr != NULL);
23139 _tmp2_ = vala_boolean_literal_get_value (_tmp1_);
23148 _tmp6_ = vala_ccode_constant_new (_tmp5_);
23150 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp4_, (ValaCCodeExpression*) _tmp7_);
23151 _vala_ccode_node_unref0 (_tmp7_);
23155 static void vala_ccode_base_module_real_visit_character_literal (ValaCodeVisitor* base, ValaCharacterLiteral* expr) {
23156 ValaCCodeBaseModule * self;
23157 gboolean _tmp0_ = FALSE;
23158 ValaCharacterLiteral* _tmp1_;
23159 gunichar _tmp2_ = 0U;
23161 self = (ValaCCodeBaseModule*) base;
23162 g_return_if_fail (expr != NULL);
23164 _tmp2_ = vala_character_literal_get_char (_tmp1_);
23165 if (_tmp2_ >= ((gunichar) 0x20)) {
23166 ValaCharacterLiteral* _tmp3_;
23167 gunichar _tmp4_ = 0U;
23169 _tmp4_ = vala_character_literal_get_char (_tmp3_);
23170 _tmp0_ = _tmp4_ < ((gunichar) 0x80);
23176 ValaCharacterLiteral* _tmp6_;
23177 ValaCharacterLiteral* _tmp7_;
23178 const gchar* _tmp8_;
23179 const gchar* _tmp9_;
23180 ValaCCodeConstant* _tmp10_;
23181 ValaCCodeConstant* _tmp11_;
23184 _tmp8_ = vala_character_literal_get_value (_tmp7_);
23186 _tmp10_ = vala_ccode_constant_new (_tmp9_);
23188 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp6_, (ValaCCodeExpression*) _tmp11_);
23189 _vala_ccode_node_unref0 (_tmp11_);
23191 ValaCharacterLiteral* _tmp12_;
23192 ValaCharacterLiteral* _tmp13_;
23193 gunichar _tmp14_ = 0U;
23194 gchar* _tmp15_ = NULL;
23196 ValaCCodeConstant* _tmp17_;
23197 ValaCCodeConstant* _tmp18_;
23200 _tmp14_ = vala_character_literal_get_char (_tmp13_);
23201 _tmp15_ = g_strdup_printf ("%uU", (guint) _tmp14_);
23203 _tmp17_ = vala_ccode_constant_new (_tmp16_);
23205 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp12_, (ValaCCodeExpression*) _tmp18_);
23206 _vala_ccode_node_unref0 (_tmp18_);
23207 _g_free0 (_tmp16_);
23212 static void vala_ccode_base_module_real_visit_integer_literal (ValaCodeVisitor* base, ValaIntegerLiteral* expr) {
23213 ValaCCodeBaseModule * self;
23214 ValaIntegerLiteral* _tmp0_;
23215 ValaIntegerLiteral* _tmp1_;
23216 const gchar* _tmp2_;
23217 const gchar* _tmp3_;
23218 ValaIntegerLiteral* _tmp4_;
23219 const gchar* _tmp5_;
23220 const gchar* _tmp6_;
23223 ValaCCodeConstant* _tmp9_;
23224 ValaCCodeConstant* _tmp10_;
23225 self = (ValaCCodeBaseModule*) base;
23226 g_return_if_fail (expr != NULL);
23229 _tmp2_ = vala_integer_literal_get_value (_tmp1_);
23232 _tmp5_ = vala_integer_literal_get_type_suffix (_tmp4_);
23234 _tmp7_ = g_strconcat (_tmp3_, _tmp6_, NULL);
23236 _tmp9_ = vala_ccode_constant_new (_tmp8_);
23238 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, (ValaCCodeExpression*) _tmp10_);
23239 _vala_ccode_node_unref0 (_tmp10_);
23244 static glong string_strnlen (gchar* str, glong maxlen) {
23248 gchar* _tmp2_ = NULL;
23253 _tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_);
23256 if (_tmp3_ == NULL) {
23266 result = (glong) (_tmp5_ - _tmp6_);
23272 static gchar* string_substring (const gchar* self, glong offset, glong len) {
23273 gchar* result = NULL;
23274 glong string_length = 0L;
23275 gboolean _tmp0_ = FALSE;
23285 gchar* _tmp23_ = NULL;
23286 g_return_val_if_fail (self != NULL, NULL);
23288 if (_tmp1_ >= ((glong) 0)) {
23291 _tmp0_ = _tmp2_ >= ((glong) 0);
23302 _tmp6_ = string_strnlen ((gchar*) self, _tmp4_ + _tmp5_);
23303 string_length = _tmp6_;
23307 _tmp7_ = strlen (self);
23309 string_length = (glong) _tmp8_;
23312 if (_tmp9_ < ((glong) 0)) {
23316 _tmp10_ = string_length;
23318 offset = _tmp10_ + _tmp11_;
23320 g_return_val_if_fail (_tmp12_ >= ((glong) 0), NULL);
23325 _tmp14_ = string_length;
23326 g_return_val_if_fail (_tmp13_ <= _tmp14_, NULL);
23329 if (_tmp15_ < ((glong) 0)) {
23332 _tmp16_ = string_length;
23334 len = _tmp16_ - _tmp17_;
23338 _tmp20_ = string_length;
23339 g_return_val_if_fail ((_tmp18_ + _tmp19_) <= _tmp20_, NULL);
23342 _tmp23_ = g_strndup (((gchar*) self) + _tmp21_, (gsize) _tmp22_);
23348 static gboolean string_contains (const gchar* self, const gchar* needle) {
23349 gboolean result = FALSE;
23350 const gchar* _tmp0_;
23351 gchar* _tmp1_ = NULL;
23352 g_return_val_if_fail (self != NULL, FALSE);
23353 g_return_val_if_fail (needle != NULL, FALSE);
23355 _tmp1_ = strstr ((gchar*) self, (gchar*) _tmp0_);
23356 result = _tmp1_ != NULL;
23361 static void vala_ccode_base_module_real_visit_real_literal (ValaCodeVisitor* base, ValaRealLiteral* expr) {
23362 ValaCCodeBaseModule * self;
23363 ValaRealLiteral* _tmp0_;
23364 const gchar* _tmp1_;
23365 const gchar* _tmp2_;
23368 gboolean _tmp4_ = FALSE;
23369 const gchar* _tmp5_;
23370 gboolean _tmp6_ = FALSE;
23372 gboolean _tmp15_ = FALSE;
23373 gboolean _tmp16_ = FALSE;
23374 const gchar* _tmp17_;
23375 gboolean _tmp18_ = FALSE;
23378 ValaRealLiteral* _tmp40_;
23379 const gchar* _tmp41_;
23380 ValaCCodeConstant* _tmp42_;
23381 ValaCCodeConstant* _tmp43_;
23382 self = (ValaCCodeBaseModule*) base;
23383 g_return_if_fail (expr != NULL);
23385 _tmp1_ = vala_real_literal_get_value (_tmp0_);
23387 _tmp3_ = g_strdup (_tmp2_);
23388 c_literal = _tmp3_;
23389 _tmp5_ = c_literal;
23390 _tmp6_ = g_str_has_suffix (_tmp5_, "d");
23394 const gchar* _tmp7_;
23395 gboolean _tmp8_ = FALSE;
23396 _tmp7_ = c_literal;
23397 _tmp8_ = g_str_has_suffix (_tmp7_, "D");
23402 const gchar* _tmp10_;
23403 const gchar* _tmp11_;
23406 gchar* _tmp14_ = NULL;
23407 _tmp10_ = c_literal;
23408 _tmp11_ = c_literal;
23409 _tmp12_ = strlen (_tmp11_);
23411 _tmp14_ = string_substring (_tmp10_, (glong) 0, (glong) (_tmp13_ - 1));
23412 _g_free0 (c_literal);
23413 c_literal = _tmp14_;
23415 _tmp17_ = c_literal;
23416 _tmp18_ = string_contains (_tmp17_, ".");
23420 const gchar* _tmp19_;
23421 gboolean _tmp20_ = FALSE;
23422 _tmp19_ = c_literal;
23423 _tmp20_ = string_contains (_tmp19_, "e");
23430 const gchar* _tmp22_;
23431 gboolean _tmp23_ = FALSE;
23432 _tmp22_ = c_literal;
23433 _tmp23_ = string_contains (_tmp22_, "E");
23438 gboolean _tmp25_ = FALSE;
23439 const gchar* _tmp26_;
23440 gboolean _tmp27_ = FALSE;
23442 _tmp26_ = c_literal;
23443 _tmp27_ = string_contains (_tmp26_, "f");
23447 const gchar* _tmp28_;
23448 gboolean _tmp29_ = FALSE;
23449 _tmp28_ = c_literal;
23450 _tmp29_ = string_contains (_tmp28_, "F");
23455 const gchar* _tmp31_;
23456 const gchar* _tmp32_;
23459 gchar* _tmp35_ = NULL;
23462 _tmp31_ = c_literal;
23463 _tmp32_ = c_literal;
23464 _tmp33_ = strlen (_tmp32_);
23466 _tmp35_ = string_substring (_tmp31_, (glong) 0, (glong) (_tmp34_ - 1));
23468 _tmp37_ = g_strconcat (_tmp36_, ".f", NULL);
23469 _g_free0 (c_literal);
23470 c_literal = _tmp37_;
23471 _g_free0 (_tmp36_);
23473 const gchar* _tmp38_;
23475 _tmp38_ = c_literal;
23476 _tmp39_ = g_strconcat (_tmp38_, ".", NULL);
23477 _g_free0 (c_literal);
23478 c_literal = _tmp39_;
23482 _tmp41_ = c_literal;
23483 _tmp42_ = vala_ccode_constant_new (_tmp41_);
23485 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp40_, (ValaCCodeExpression*) _tmp43_);
23486 _vala_ccode_node_unref0 (_tmp43_);
23487 _g_free0 (c_literal);
23491 static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) {
23492 gchar* result = NULL;
23493 GError * _inner_error_ = NULL;
23494 g_return_val_if_fail (self != NULL, NULL);
23495 g_return_val_if_fail (old != NULL, NULL);
23496 g_return_val_if_fail (replacement != NULL, NULL);
23498 const gchar* _tmp0_;
23499 gchar* _tmp1_ = NULL;
23505 const gchar* _tmp6_;
23506 gchar* _tmp7_ = NULL;
23509 _tmp1_ = g_regex_escape_string (_tmp0_, -1);
23511 _tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_);
23515 if (_inner_error_ != NULL) {
23516 if (_inner_error_->domain == G_REGEX_ERROR) {
23517 goto __catch0_g_regex_error;
23519 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
23520 g_clear_error (&_inner_error_);
23524 _tmp6_ = replacement;
23525 _tmp7_ = g_regex_replace_literal (_tmp5_, self, (gssize) (-1), 0, _tmp6_, 0, &_inner_error_);
23527 if (_inner_error_ != NULL) {
23528 _g_regex_unref0 (regex);
23529 if (_inner_error_->domain == G_REGEX_ERROR) {
23530 goto __catch0_g_regex_error;
23532 _g_regex_unref0 (regex);
23533 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
23534 g_clear_error (&_inner_error_);
23538 _g_regex_unref0 (regex);
23542 __catch0_g_regex_error:
23546 _inner_error_ = NULL;
23547 g_assert_not_reached ();
23548 _g_error_free0 (e);
23551 if (_inner_error_ != NULL) {
23552 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
23553 g_clear_error (&_inner_error_);
23559 static void vala_ccode_base_module_real_visit_string_literal (ValaCodeVisitor* base, ValaStringLiteral* expr) {
23560 ValaCCodeBaseModule * self;
23561 ValaStringLiteral* _tmp0_;
23562 ValaStringLiteral* _tmp1_;
23563 const gchar* _tmp2_;
23564 const gchar* _tmp3_;
23565 gchar* _tmp4_ = NULL;
23567 ValaCCodeConstant* _tmp6_;
23568 ValaCCodeConstant* _tmp7_;
23569 ValaStringLiteral* _tmp8_;
23572 self = (ValaCCodeBaseModule*) base;
23573 g_return_if_fail (expr != NULL);
23576 _tmp2_ = vala_string_literal_get_value (_tmp1_);
23578 _tmp4_ = string_replace (_tmp3_, "\n", "\\n");
23580 _tmp6_ = vala_ccode_constant_new_string (_tmp5_);
23582 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, (ValaCCodeExpression*) _tmp7_);
23583 _vala_ccode_node_unref0 (_tmp7_);
23586 _tmp9_ = vala_string_literal_get_translate (_tmp8_);
23589 ValaSymbol* _tmp11_;
23590 ValaScope* _tmp12_;
23591 ValaScope* _tmp13_;
23592 ValaSymbol* _tmp14_ = NULL;
23593 ValaSymbol* _tmp15_;
23594 ValaScope* _tmp16_;
23595 ValaScope* _tmp17_;
23596 ValaSymbol* _tmp18_ = NULL;
23597 ValaMethod* _tmp19_;
23599 ValaCCodeFile* _tmp20_;
23600 ValaMethod* _tmp21_;
23601 ValaMethod* _tmp22_;
23602 gchar* _tmp23_ = NULL;
23604 ValaCCodeIdentifier* _tmp25_;
23605 ValaCCodeIdentifier* _tmp26_;
23606 ValaCCodeFunctionCall* _tmp27_;
23607 ValaCCodeFunctionCall* _tmp28_;
23608 ValaCCodeFunctionCall* translate;
23609 ValaCCodeFunctionCall* _tmp29_;
23610 ValaStringLiteral* _tmp30_;
23611 ValaCCodeExpression* _tmp31_ = NULL;
23612 ValaCCodeExpression* _tmp32_;
23613 ValaStringLiteral* _tmp33_;
23614 ValaCCodeFunctionCall* _tmp34_;
23615 _tmp11_ = self->root_symbol;
23616 _tmp12_ = vala_symbol_get_scope (_tmp11_);
23618 _tmp14_ = vala_scope_lookup (_tmp13_, "GLib");
23620 _tmp16_ = vala_symbol_get_scope (_tmp15_);
23622 _tmp18_ = vala_scope_lookup (_tmp17_, "_");
23623 _tmp19_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, VALA_TYPE_METHOD, ValaMethod);
23624 _vala_code_node_unref0 (_tmp15_);
23626 _tmp20_ = self->cfile;
23629 _tmp23_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp22_);
23631 vala_ccode_base_module_add_symbol_declaration (self, _tmp20_, (ValaSymbol*) _tmp21_, _tmp24_);
23632 _g_free0 (_tmp24_);
23633 _tmp25_ = vala_ccode_identifier_new ("_");
23635 _tmp27_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp26_);
23637 _vala_ccode_node_unref0 (_tmp26_);
23638 translate = _tmp28_;
23639 _tmp29_ = translate;
23641 _tmp31_ = vala_ccode_base_module_get_cvalue (self, (ValaExpression*) _tmp30_);
23643 vala_ccode_function_call_add_argument (_tmp29_, _tmp32_);
23644 _vala_ccode_node_unref0 (_tmp32_);
23646 _tmp34_ = translate;
23647 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp33_, (ValaCCodeExpression*) _tmp34_);
23648 _vala_ccode_node_unref0 (translate);
23649 _vala_code_node_unref0 (m);
23654 static void vala_ccode_base_module_real_visit_regex_literal (ValaCodeVisitor* base, ValaRegexLiteral* expr) {
23655 ValaCCodeBaseModule * self;
23656 ValaRegexLiteral* _tmp0_;
23657 const gchar* _tmp1_;
23658 const gchar* _tmp2_;
23660 gchar** _tmp4_ = NULL;
23662 gint parts_length1;
23665 gint _tmp5__length1;
23666 const gchar* _tmp6_;
23667 gchar* _tmp7_ = NULL;
23672 gint _tmp9__length1;
23673 const gchar* _tmp10_;
23674 gboolean _tmp11_ = FALSE;
23676 gint _tmp14__length1;
23677 const gchar* _tmp15_;
23678 gboolean _tmp16_ = FALSE;
23680 gint _tmp19__length1;
23681 const gchar* _tmp20_;
23682 gboolean _tmp21_ = FALSE;
23684 gint _tmp24__length1;
23685 const gchar* _tmp25_;
23686 gboolean _tmp26_ = FALSE;
23687 ValaCCodeDeclaration* _tmp29_;
23688 ValaCCodeDeclaration* _cdecl_;
23690 gchar* _tmp31_ = NULL;
23694 ValaCCodeDeclaration* _tmp98_;
23695 const gchar* _tmp99_;
23698 ValaCCodeVariableDeclarator* _tmp102_;
23699 ValaCCodeVariableDeclarator* _tmp103_;
23700 ValaCCodeDeclaration* _tmp104_;
23701 const gchar* _tmp105_;
23702 const gchar* _tmp106_;
23703 const gchar* _tmp107_;
23704 gchar* _tmp108_ = NULL;
23706 ValaCCodeConstant* _tmp110_;
23707 ValaCCodeConstant* _tmp111_;
23708 ValaCCodeConstant* regex_const;
23709 ValaCCodeFile* _tmp112_;
23710 ValaCCodeDeclaration* _tmp113_;
23711 ValaRegexLiteral* _tmp114_;
23712 self = (ValaCCodeBaseModule*) base;
23713 g_return_if_fail (expr != NULL);
23715 _tmp1_ = vala_regex_literal_get_value (_tmp0_);
23717 _tmp4_ = _tmp3_ = g_strsplit (_tmp2_, "/", 3);
23719 parts_length1 = _vala_array_length (_tmp3_);
23720 _parts_size_ = parts_length1;
23722 _tmp5__length1 = parts_length1;
23723 _tmp6_ = _tmp5_[2];
23724 _tmp7_ = g_strescape (_tmp6_, "");
23726 _tmp8_ = g_strdup ("0");
23729 _tmp9__length1 = parts_length1;
23730 _tmp10_ = _tmp9_[1];
23731 _tmp11_ = string_contains (_tmp10_, "i");
23733 const gchar* _tmp12_;
23736 _tmp13_ = g_strconcat (_tmp12_, " | G_REGEX_CASELESS", NULL);
23741 _tmp14__length1 = parts_length1;
23742 _tmp15_ = _tmp14_[1];
23743 _tmp16_ = string_contains (_tmp15_, "m");
23745 const gchar* _tmp17_;
23748 _tmp18_ = g_strconcat (_tmp17_, " | G_REGEX_MULTILINE", NULL);
23753 _tmp19__length1 = parts_length1;
23754 _tmp20_ = _tmp19_[1];
23755 _tmp21_ = string_contains (_tmp20_, "s");
23757 const gchar* _tmp22_;
23760 _tmp23_ = g_strconcat (_tmp22_, " | G_REGEX_DOTALL", NULL);
23765 _tmp24__length1 = parts_length1;
23766 _tmp25_ = _tmp24_[1];
23767 _tmp26_ = string_contains (_tmp25_, "x");
23769 const gchar* _tmp27_;
23772 _tmp28_ = g_strconcat (_tmp27_, " | G_REGEX_EXTENDED", NULL);
23776 _tmp29_ = vala_ccode_declaration_new ("GRegex*");
23778 _tmp30_ = self->next_regex_id;
23779 _tmp31_ = g_strdup_printf ("_tmp_regex_%d", _tmp30_);
23781 _tmp32_ = self->next_regex_id;
23782 if (_tmp32_ == 0) {
23783 ValaCCodeFunction* _tmp33_;
23784 ValaCCodeFunction* fun;
23785 ValaCCodeFunction* _tmp34_;
23786 ValaCCodeFunction* _tmp35_;
23787 ValaCCodeParameter* _tmp36_;
23788 ValaCCodeParameter* _tmp37_;
23789 ValaCCodeFunction* _tmp38_;
23790 ValaCCodeParameter* _tmp39_;
23791 ValaCCodeParameter* _tmp40_;
23792 ValaCCodeFunction* _tmp41_;
23793 ValaCCodeParameter* _tmp42_;
23794 ValaCCodeParameter* _tmp43_;
23795 ValaCCodeFunction* _tmp44_;
23796 ValaCCodeIdentifier* _tmp45_;
23797 ValaCCodeIdentifier* _tmp46_;
23798 ValaCCodeFunctionCall* _tmp47_;
23799 ValaCCodeFunctionCall* _tmp48_;
23800 ValaCCodeFunctionCall* once_enter_call;
23801 ValaCCodeFunctionCall* _tmp49_;
23802 ValaCCodeConstant* _tmp50_;
23803 ValaCCodeConstant* _tmp51_;
23804 ValaCCodeFunction* _tmp52_;
23805 ValaCCodeFunction* _tmp53_;
23806 ValaCCodeFunctionCall* _tmp54_;
23807 ValaCCodeIdentifier* _tmp55_;
23808 ValaCCodeIdentifier* _tmp56_;
23809 ValaCCodeFunctionCall* _tmp57_;
23810 ValaCCodeFunctionCall* _tmp58_;
23811 ValaCCodeFunctionCall* regex_new_call;
23812 ValaCCodeFunctionCall* _tmp59_;
23813 ValaCCodeConstant* _tmp60_;
23814 ValaCCodeConstant* _tmp61_;
23815 ValaCCodeFunctionCall* _tmp62_;
23816 ValaCCodeConstant* _tmp63_;
23817 ValaCCodeConstant* _tmp64_;
23818 ValaCCodeFunctionCall* _tmp65_;
23819 ValaCCodeConstant* _tmp66_;
23820 ValaCCodeConstant* _tmp67_;
23821 ValaCCodeFunctionCall* _tmp68_;
23822 ValaCCodeConstant* _tmp69_;
23823 ValaCCodeConstant* _tmp70_;
23824 ValaCCodeFunction* _tmp71_;
23825 ValaCCodeFunction* _tmp72_;
23826 ValaCCodeIdentifier* _tmp73_;
23827 ValaCCodeIdentifier* _tmp74_;
23828 ValaCCodeFunctionCall* _tmp75_;
23829 ValaCCodeIdentifier* _tmp76_;
23830 ValaCCodeIdentifier* _tmp77_;
23831 ValaCCodeFunctionCall* _tmp78_;
23832 ValaCCodeFunctionCall* _tmp79_;
23833 ValaCCodeFunctionCall* once_leave_call;
23834 ValaCCodeFunctionCall* _tmp80_;
23835 ValaCCodeConstant* _tmp81_;
23836 ValaCCodeConstant* _tmp82_;
23837 ValaCCodeFunctionCall* _tmp83_;
23838 ValaCCodeConstant* _tmp84_;
23839 ValaCCodeConstant* _tmp85_;
23840 ValaCCodeFunction* _tmp86_;
23841 ValaCCodeFunction* _tmp87_;
23842 ValaCCodeFunctionCall* _tmp88_;
23843 ValaCCodeFunction* _tmp89_;
23844 ValaCCodeFunction* _tmp90_;
23845 ValaCCodeFunction* _tmp91_;
23846 ValaCCodeFunction* _tmp92_;
23847 ValaCCodeIdentifier* _tmp93_;
23848 ValaCCodeIdentifier* _tmp94_;
23849 ValaCCodeFile* _tmp95_;
23850 ValaCCodeFunction* _tmp96_;
23851 _tmp33_ = vala_ccode_function_new ("_thread_safe_regex_init", "GRegex*");
23854 vala_ccode_function_set_modifiers (_tmp34_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_INLINE);
23856 _tmp36_ = vala_ccode_parameter_new ("re", "GRegex**");
23858 vala_ccode_function_add_parameter (_tmp35_, _tmp37_);
23859 _vala_ccode_node_unref0 (_tmp37_);
23861 _tmp39_ = vala_ccode_parameter_new ("pattern", "const gchar *");
23863 vala_ccode_function_add_parameter (_tmp38_, _tmp40_);
23864 _vala_ccode_node_unref0 (_tmp40_);
23866 _tmp42_ = vala_ccode_parameter_new ("match_options", "GRegexMatchFlags");
23868 vala_ccode_function_add_parameter (_tmp41_, _tmp43_);
23869 _vala_ccode_node_unref0 (_tmp43_);
23871 vala_ccode_base_module_push_function (self, _tmp44_);
23872 _tmp45_ = vala_ccode_identifier_new ("g_once_init_enter");
23874 _tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
23876 _vala_ccode_node_unref0 (_tmp46_);
23877 once_enter_call = _tmp48_;
23878 _tmp49_ = once_enter_call;
23879 _tmp50_ = vala_ccode_constant_new ("(volatile gsize*) re");
23881 vala_ccode_function_call_add_argument (_tmp49_, (ValaCCodeExpression*) _tmp51_);
23882 _vala_ccode_node_unref0 (_tmp51_);
23883 _tmp52_ = vala_ccode_base_module_get_ccode (self);
23885 _tmp54_ = once_enter_call;
23886 vala_ccode_function_open_if (_tmp53_, (ValaCCodeExpression*) _tmp54_);
23887 _tmp55_ = vala_ccode_identifier_new ("g_regex_new");
23889 _tmp57_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp56_);
23891 _vala_ccode_node_unref0 (_tmp56_);
23892 regex_new_call = _tmp58_;
23893 _tmp59_ = regex_new_call;
23894 _tmp60_ = vala_ccode_constant_new ("pattern");
23896 vala_ccode_function_call_add_argument (_tmp59_, (ValaCCodeExpression*) _tmp61_);
23897 _vala_ccode_node_unref0 (_tmp61_);
23898 _tmp62_ = regex_new_call;
23899 _tmp63_ = vala_ccode_constant_new ("match_options");
23901 vala_ccode_function_call_add_argument (_tmp62_, (ValaCCodeExpression*) _tmp64_);
23902 _vala_ccode_node_unref0 (_tmp64_);
23903 _tmp65_ = regex_new_call;
23904 _tmp66_ = vala_ccode_constant_new ("0");
23906 vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp67_);
23907 _vala_ccode_node_unref0 (_tmp67_);
23908 _tmp68_ = regex_new_call;
23909 _tmp69_ = vala_ccode_constant_new ("NULL");
23911 vala_ccode_function_call_add_argument (_tmp68_, (ValaCCodeExpression*) _tmp70_);
23912 _vala_ccode_node_unref0 (_tmp70_);
23913 _tmp71_ = vala_ccode_base_module_get_ccode (self);
23915 _tmp73_ = vala_ccode_identifier_new ("GRegex* val");
23917 _tmp75_ = regex_new_call;
23918 vala_ccode_function_add_assignment (_tmp72_, (ValaCCodeExpression*) _tmp74_, (ValaCCodeExpression*) _tmp75_);
23919 _vala_ccode_node_unref0 (_tmp74_);
23920 _tmp76_ = vala_ccode_identifier_new ("g_once_init_leave");
23922 _tmp78_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp77_);
23924 _vala_ccode_node_unref0 (_tmp77_);
23925 once_leave_call = _tmp79_;
23926 _tmp80_ = once_leave_call;
23927 _tmp81_ = vala_ccode_constant_new ("(volatile gsize*) re");
23929 vala_ccode_function_call_add_argument (_tmp80_, (ValaCCodeExpression*) _tmp82_);
23930 _vala_ccode_node_unref0 (_tmp82_);
23931 _tmp83_ = once_leave_call;
23932 _tmp84_ = vala_ccode_constant_new ("(gsize) val");
23934 vala_ccode_function_call_add_argument (_tmp83_, (ValaCCodeExpression*) _tmp85_);
23935 _vala_ccode_node_unref0 (_tmp85_);
23936 _tmp86_ = vala_ccode_base_module_get_ccode (self);
23938 _tmp88_ = once_leave_call;
23939 vala_ccode_function_add_expression (_tmp87_, (ValaCCodeExpression*) _tmp88_);
23940 _tmp89_ = vala_ccode_base_module_get_ccode (self);
23942 vala_ccode_function_close (_tmp90_);
23943 _tmp91_ = vala_ccode_base_module_get_ccode (self);
23945 _tmp93_ = vala_ccode_identifier_new ("*re");
23947 vala_ccode_function_add_return (_tmp92_, (ValaCCodeExpression*) _tmp94_);
23948 _vala_ccode_node_unref0 (_tmp94_);
23949 vala_ccode_base_module_pop_function (self);
23950 _tmp95_ = self->cfile;
23952 vala_ccode_file_add_function (_tmp95_, _tmp96_);
23953 _vala_ccode_node_unref0 (once_leave_call);
23954 _vala_ccode_node_unref0 (regex_new_call);
23955 _vala_ccode_node_unref0 (once_enter_call);
23956 _vala_ccode_node_unref0 (fun);
23958 _tmp97_ = self->next_regex_id;
23959 self->next_regex_id = _tmp97_ + 1;
23962 _tmp100_ = g_strconcat (_tmp99_, " = NULL", NULL);
23963 _tmp101_ = _tmp100_;
23964 _tmp102_ = vala_ccode_variable_declarator_new (_tmp101_, NULL, NULL);
23965 _tmp103_ = _tmp102_;
23966 vala_ccode_declaration_add_declarator (_tmp98_, (ValaCCodeDeclarator*) _tmp103_);
23967 _vala_ccode_node_unref0 (_tmp103_);
23968 _g_free0 (_tmp101_);
23969 _tmp104_ = _cdecl_;
23970 vala_ccode_declaration_set_modifiers (_tmp104_, VALA_CCODE_MODIFIERS_STATIC);
23974 _tmp108_ = g_strdup_printf ("_thread_safe_regex_init (&%s, \"%s\", %s)", _tmp105_, _tmp106_, _tmp107_);
23975 _tmp109_ = _tmp108_;
23976 _tmp110_ = vala_ccode_constant_new (_tmp109_);
23977 _tmp111_ = _tmp110_;
23978 _g_free0 (_tmp109_);
23979 regex_const = _tmp111_;
23980 _tmp112_ = self->cfile;
23981 _tmp113_ = _cdecl_;
23982 vala_ccode_file_add_constant_declaration (_tmp112_, (ValaCCodeNode*) _tmp113_);
23984 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp114_, (ValaCCodeExpression*) regex_const);
23985 _vala_ccode_node_unref0 (regex_const);
23987 _vala_ccode_node_unref0 (_cdecl_);
23990 parts = (_vala_array_free (parts, parts_length1, (GDestroyNotify) g_free), NULL);
23994 static void vala_ccode_base_module_real_visit_null_literal (ValaCodeVisitor* base, ValaNullLiteral* expr) {
23995 ValaCCodeBaseModule * self;
23996 ValaNullLiteral* _tmp0_;
23997 ValaCCodeConstant* _tmp1_;
23998 ValaCCodeConstant* _tmp2_;
23999 ValaNullLiteral* _tmp3_;
24000 ValaDataType* _tmp4_;
24001 ValaDataType* _tmp5_;
24002 ValaArrayType* _tmp6_;
24003 ValaArrayType* array_type;
24004 ValaNullLiteral* _tmp7_;
24005 ValaDataType* _tmp8_;
24006 ValaDataType* _tmp9_;
24007 ValaDelegateType* _tmp10_;
24008 ValaDelegateType* delegate_type;
24009 ValaArrayType* _tmp11_;
24010 self = (ValaCCodeBaseModule*) base;
24011 g_return_if_fail (expr != NULL);
24013 _tmp1_ = vala_ccode_constant_new ("NULL");
24015 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, (ValaCCodeExpression*) _tmp2_);
24016 _vala_ccode_node_unref0 (_tmp2_);
24018 _tmp4_ = vala_expression_get_target_type ((ValaExpression*) _tmp3_);
24020 _tmp6_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp5_) : NULL);
24021 array_type = _tmp6_;
24023 _tmp8_ = vala_expression_get_target_type ((ValaExpression*) _tmp7_);
24025 _tmp10_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp9_) : NULL);
24026 delegate_type = _tmp10_;
24027 _tmp11_ = array_type;
24028 if (_tmp11_ != NULL) {
24038 ValaArrayType* _tmp16_;
24041 ValaNullLiteral* _tmp19_;
24042 ValaCCodeConstant* _tmp20_;
24043 ValaCCodeConstant* _tmp21_;
24052 _tmp16_ = array_type;
24053 _tmp17_ = vala_array_type_get_rank (_tmp16_);
24055 if (!(_tmp15_ <= _tmp18_)) {
24059 _tmp20_ = vala_ccode_constant_new ("0");
24061 vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp19_, (ValaCCodeExpression*) _tmp21_);
24062 _vala_ccode_node_unref0 (_tmp21_);
24067 gboolean _tmp22_ = FALSE;
24068 ValaDelegateType* _tmp23_;
24070 _tmp23_ = delegate_type;
24071 if (_tmp23_ != NULL) {
24072 ValaDelegateType* _tmp24_;
24073 ValaDelegate* _tmp25_;
24074 ValaDelegate* _tmp26_;
24077 _tmp24_ = delegate_type;
24078 _tmp25_ = vala_delegate_type_get_delegate_symbol (_tmp24_);
24080 _tmp27_ = vala_delegate_get_has_target (_tmp26_);
24088 ValaNullLiteral* _tmp30_;
24089 ValaCCodeConstant* _tmp31_;
24090 ValaCCodeConstant* _tmp32_;
24091 ValaNullLiteral* _tmp33_;
24092 ValaCCodeConstant* _tmp34_;
24093 ValaCCodeConstant* _tmp35_;
24095 _tmp31_ = vala_ccode_constant_new ("NULL");
24097 vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp30_, (ValaCCodeExpression*) _tmp32_);
24098 _vala_ccode_node_unref0 (_tmp32_);
24100 _tmp34_ = vala_ccode_constant_new ("NULL");
24102 vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp33_, (ValaCCodeExpression*) _tmp35_);
24103 _vala_ccode_node_unref0 (_tmp35_);
24106 _vala_code_node_unref0 (delegate_type);
24107 _vala_code_node_unref0 (array_type);
24111 static ValaTargetValue* vala_ccode_base_module_real_get_local_cvalue (ValaCCodeBaseModule* self, ValaLocalVariable* local) {
24112 g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_get_local_cvalue'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
24117 ValaTargetValue* vala_ccode_base_module_get_local_cvalue (ValaCCodeBaseModule* self, ValaLocalVariable* local) {
24118 g_return_val_if_fail (self != NULL, NULL);
24119 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_local_cvalue (self, local);
24123 static ValaTargetValue* vala_ccode_base_module_real_get_parameter_cvalue (ValaCCodeBaseModule* self, ValaParameter* param) {
24124 g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_get_parameter_cvalue'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
24129 ValaTargetValue* vala_ccode_base_module_get_parameter_cvalue (ValaCCodeBaseModule* self, ValaParameter* param) {
24130 g_return_val_if_fail (self != NULL, NULL);
24131 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_parameter_cvalue (self, param);
24135 static ValaTargetValue* vala_ccode_base_module_real_get_field_cvalue (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance) {
24136 g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_get_field_cvalue'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
24141 ValaTargetValue* vala_ccode_base_module_get_field_cvalue (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance) {
24142 g_return_val_if_fail (self != NULL, NULL);
24143 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_field_cvalue (self, field, instance);
24147 static ValaTargetValue* vala_ccode_base_module_real_load_variable (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value) {
24148 g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_load_variable'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
24153 ValaTargetValue* vala_ccode_base_module_load_variable (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value) {
24154 g_return_val_if_fail (self != NULL, NULL);
24155 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->load_variable (self, variable, value);
24159 static ValaTargetValue* vala_ccode_base_module_real_load_this_parameter (ValaCCodeBaseModule* self, ValaTypeSymbol* sym) {
24160 g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_load_this_parameter'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
24165 ValaTargetValue* vala_ccode_base_module_load_this_parameter (ValaCCodeBaseModule* self, ValaTypeSymbol* sym) {
24166 g_return_val_if_fail (self != NULL, NULL);
24167 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->load_this_parameter (self, sym);
24171 static void vala_ccode_base_module_real_store_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value) {
24172 g_critical ("Type `%s' does not implement abstract method `vala_ccode_base_module_store_value'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
24177 void vala_ccode_base_module_store_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value) {
24178 g_return_if_fail (self != NULL);
24179 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->store_value (self, lvalue, value);
24183 static gchar* vala_ccode_base_module_real_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname) {
24184 gchar* result = NULL;
24185 g_return_val_if_fail (delegate_cname != NULL, NULL);
24186 g_assert_not_reached ();
24191 gchar* vala_ccode_base_module_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname) {
24192 g_return_val_if_fail (self != NULL, NULL);
24193 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_delegate_target_cname (self, delegate_cname);
24197 static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_cexpression (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify) {
24198 ValaCCodeExpression* _vala_delegate_target_destroy_notify = NULL;
24199 ValaCCodeExpression* result = NULL;
24200 g_return_val_if_fail (delegate_expr != NULL, NULL);
24201 g_assert_not_reached ();
24202 if (delegate_target_destroy_notify) {
24203 *delegate_target_destroy_notify = _vala_delegate_target_destroy_notify;
24205 _vala_ccode_node_unref0 (_vala_delegate_target_destroy_notify);
24211 ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cexpression (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify) {
24212 g_return_val_if_fail (self != NULL, NULL);
24213 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_delegate_target_cexpression (self, delegate_expr, delegate_target_destroy_notify);
24217 static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) {
24218 ValaCCodeExpression* result = NULL;
24219 ValaCCodeInvalidExpression* _tmp0_;
24220 g_return_val_if_fail (value != NULL, NULL);
24221 _tmp0_ = vala_ccode_invalid_expression_new ();
24222 result = (ValaCCodeExpression*) _tmp0_;
24227 ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) {
24228 g_return_val_if_fail (self != NULL, NULL);
24229 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_delegate_target_cvalue (self, value);
24233 static ValaCCodeExpression* vala_ccode_base_module_real_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) {
24234 ValaCCodeExpression* result = NULL;
24235 ValaCCodeInvalidExpression* _tmp0_;
24236 g_return_val_if_fail (value != NULL, NULL);
24237 _tmp0_ = vala_ccode_invalid_expression_new ();
24238 result = (ValaCCodeExpression*) _tmp0_;
24243 ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) {
24244 g_return_val_if_fail (self != NULL, NULL);
24245 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_delegate_target_destroy_notify_cvalue (self, value);
24249 static gchar* vala_ccode_base_module_real_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname) {
24250 gchar* result = NULL;
24251 g_return_val_if_fail (delegate_cname != NULL, NULL);
24252 g_assert_not_reached ();
24257 gchar* vala_ccode_base_module_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname) {
24258 g_return_val_if_fail (self != NULL, NULL);
24259 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_delegate_target_destroy_notify_cname (self, delegate_cname);
24263 static void vala_ccode_base_module_real_visit_base_access (ValaCodeVisitor* base, ValaBaseAccess* expr) {
24264 ValaCCodeBaseModule * self;
24265 ValaCCodeExpression* this_access = NULL;
24266 gboolean _tmp0_ = FALSE;
24267 ValaBaseAccess* _tmp5_;
24268 ValaCCodeExpression* _tmp6_;
24269 ValaBaseAccess* _tmp7_;
24270 ValaDataType* _tmp8_;
24271 ValaDataType* _tmp9_;
24272 ValaTypeSymbol* _tmp10_;
24273 ValaTypeSymbol* _tmp11_;
24274 ValaCCodeFunctionCall* _tmp12_ = NULL;
24275 ValaCCodeFunctionCall* _tmp13_;
24276 self = (ValaCCodeBaseModule*) base;
24277 g_return_if_fail (expr != NULL);
24278 _tmp0_ = vala_ccode_base_module_is_in_coroutine (self);
24280 ValaCCodeIdentifier* _tmp1_;
24281 ValaCCodeIdentifier* _tmp2_;
24282 ValaCCodeMemberAccess* _tmp3_;
24283 _tmp1_ = vala_ccode_identifier_new ("_data_");
24285 _tmp3_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp2_, "self");
24286 _vala_ccode_node_unref0 (this_access);
24287 this_access = (ValaCCodeExpression*) _tmp3_;
24288 _vala_ccode_node_unref0 (_tmp2_);
24290 ValaCCodeIdentifier* _tmp4_;
24291 _tmp4_ = vala_ccode_identifier_new ("self");
24292 _vala_ccode_node_unref0 (this_access);
24293 this_access = (ValaCCodeExpression*) _tmp4_;
24296 _tmp6_ = this_access;
24298 _tmp8_ = vala_expression_get_value_type ((ValaExpression*) _tmp7_);
24300 _tmp10_ = vala_data_type_get_data_type (_tmp9_);
24302 _tmp12_ = vala_ccode_base_module_generate_instance_cast (self, _tmp6_, _tmp11_);
24304 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp5_, (ValaCCodeExpression*) _tmp13_);
24305 _vala_ccode_node_unref0 (_tmp13_);
24306 _vala_ccode_node_unref0 (this_access);
24310 static void vala_ccode_base_module_real_visit_postfix_expression (ValaCodeVisitor* base, ValaPostfixExpression* expr) {
24311 ValaCCodeBaseModule * self;
24312 ValaPostfixExpression* _tmp0_;
24313 ValaExpression* _tmp1_;
24314 ValaExpression* _tmp2_;
24315 ValaMemberAccess* _tmp3_ = NULL;
24316 ValaMemberAccess* ma;
24317 ValaMemberAccess* _tmp4_;
24318 ValaPostfixExpression* _tmp40_;
24319 ValaExpression* _tmp41_;
24320 ValaExpression* _tmp42_;
24321 ValaTargetValue* _tmp43_;
24322 ValaTargetValue* _tmp44_;
24323 ValaPostfixExpression* _tmp45_;
24324 ValaTargetValue* _tmp46_ = NULL;
24325 ValaTargetValue* temp_value;
24326 ValaCCodeBinaryOperator _tmp47_ = 0;
24327 ValaPostfixExpression* _tmp48_;
24330 ValaCCodeBinaryOperator _tmp51_;
24331 ValaCCodeBinaryOperator op;
24332 ValaCCodeBinaryOperator _tmp52_;
24333 ValaTargetValue* _tmp53_;
24334 ValaCCodeExpression* _tmp54_ = NULL;
24335 ValaCCodeExpression* _tmp55_;
24336 ValaCCodeConstant* _tmp56_;
24337 ValaCCodeConstant* _tmp57_;
24338 ValaCCodeBinaryExpression* _tmp58_;
24339 ValaCCodeBinaryExpression* _tmp59_;
24340 ValaCCodeBinaryExpression* cexpr;
24341 ValaCCodeFunction* _tmp60_;
24342 ValaCCodeFunction* _tmp61_;
24343 ValaPostfixExpression* _tmp62_;
24344 ValaExpression* _tmp63_;
24345 ValaExpression* _tmp64_;
24346 ValaCCodeExpression* _tmp65_ = NULL;
24347 ValaCCodeExpression* _tmp66_;
24348 ValaCCodeBinaryExpression* _tmp67_;
24349 ValaPostfixExpression* _tmp68_;
24350 ValaTargetValue* _tmp69_;
24351 self = (ValaCCodeBaseModule*) base;
24352 g_return_if_fail (expr != NULL);
24354 _tmp1_ = vala_postfix_expression_get_inner (_tmp0_);
24356 _tmp3_ = vala_ccode_base_module_find_property_access (self, _tmp2_);
24359 if (_tmp4_ != NULL) {
24360 ValaMemberAccess* _tmp5_;
24361 ValaSymbol* _tmp6_;
24362 ValaSymbol* _tmp7_;
24363 ValaProperty* _tmp8_;
24364 ValaProperty* prop;
24365 ValaCCodeBinaryOperator _tmp9_ = 0;
24366 ValaPostfixExpression* _tmp10_;
24369 ValaCCodeBinaryOperator _tmp13_;
24370 ValaCCodeBinaryOperator op;
24371 ValaCCodeBinaryOperator _tmp14_;
24372 ValaPostfixExpression* _tmp15_;
24373 ValaExpression* _tmp16_;
24374 ValaExpression* _tmp17_;
24375 ValaCCodeExpression* _tmp18_ = NULL;
24376 ValaCCodeExpression* _tmp19_;
24377 ValaCCodeConstant* _tmp20_;
24378 ValaCCodeConstant* _tmp21_;
24379 ValaCCodeBinaryExpression* _tmp22_;
24380 ValaCCodeBinaryExpression* _tmp23_;
24381 ValaCCodeBinaryExpression* cexpr;
24382 ValaProperty* _tmp24_;
24383 ValaMemberAccess* _tmp25_;
24384 ValaExpression* _tmp26_;
24385 ValaExpression* _tmp27_;
24386 ValaPostfixExpression* _tmp28_;
24387 ValaDataType* _tmp29_;
24388 ValaDataType* _tmp30_;
24389 ValaCCodeBinaryExpression* _tmp31_;
24390 ValaGLibValue* _tmp32_;
24391 ValaGLibValue* _tmp33_;
24392 ValaPostfixExpression* _tmp34_;
24393 ValaPostfixExpression* _tmp35_;
24394 ValaExpression* _tmp36_;
24395 ValaExpression* _tmp37_;
24396 ValaTargetValue* _tmp38_;
24397 ValaTargetValue* _tmp39_;
24399 _tmp6_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp5_);
24401 _tmp8_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, VALA_TYPE_PROPERTY, ValaProperty));
24404 _tmp11_ = vala_postfix_expression_get_increment (_tmp10_);
24407 _tmp9_ = VALA_CCODE_BINARY_OPERATOR_PLUS;
24409 _tmp9_ = VALA_CCODE_BINARY_OPERATOR_MINUS;
24415 _tmp16_ = vala_postfix_expression_get_inner (_tmp15_);
24417 _tmp18_ = vala_ccode_base_module_get_cvalue (self, _tmp17_);
24419 _tmp20_ = vala_ccode_constant_new ("1");
24421 _tmp22_ = vala_ccode_binary_expression_new (_tmp14_, _tmp19_, (ValaCCodeExpression*) _tmp21_);
24423 _vala_ccode_node_unref0 (_tmp21_);
24424 _vala_ccode_node_unref0 (_tmp19_);
24428 _tmp26_ = vala_member_access_get_inner (_tmp25_);
24431 _tmp29_ = vala_expression_get_value_type ((ValaExpression*) _tmp28_);
24434 _tmp32_ = vala_glib_value_new (_tmp30_, (ValaCCodeExpression*) _tmp31_, FALSE);
24436 vala_ccode_base_module_store_property (self, _tmp24_, _tmp27_, (ValaTargetValue*) _tmp33_);
24437 _vala_target_value_unref0 (_tmp33_);
24440 _tmp36_ = vala_postfix_expression_get_inner (_tmp35_);
24442 _tmp38_ = vala_expression_get_target_value (_tmp37_);
24444 vala_expression_set_target_value ((ValaExpression*) _tmp34_, _tmp39_);
24445 _vala_ccode_node_unref0 (cexpr);
24446 _vala_code_node_unref0 (prop);
24447 _vala_code_node_unref0 (ma);
24451 _tmp41_ = vala_postfix_expression_get_inner (_tmp40_);
24453 _tmp43_ = vala_expression_get_target_value (_tmp42_);
24456 _tmp46_ = vala_ccode_base_module_store_temp_value (self, _tmp44_, (ValaCodeNode*) _tmp45_, NULL);
24457 temp_value = _tmp46_;
24459 _tmp49_ = vala_postfix_expression_get_increment (_tmp48_);
24462 _tmp47_ = VALA_CCODE_BINARY_OPERATOR_PLUS;
24464 _tmp47_ = VALA_CCODE_BINARY_OPERATOR_MINUS;
24469 _tmp53_ = temp_value;
24470 _tmp54_ = vala_ccode_base_module_get_cvalue_ (self, _tmp53_);
24472 _tmp56_ = vala_ccode_constant_new ("1");
24474 _tmp58_ = vala_ccode_binary_expression_new (_tmp52_, _tmp55_, (ValaCCodeExpression*) _tmp57_);
24476 _vala_ccode_node_unref0 (_tmp57_);
24477 _vala_ccode_node_unref0 (_tmp55_);
24479 _tmp60_ = vala_ccode_base_module_get_ccode (self);
24482 _tmp63_ = vala_postfix_expression_get_inner (_tmp62_);
24484 _tmp65_ = vala_ccode_base_module_get_cvalue (self, _tmp64_);
24487 vala_ccode_function_add_assignment (_tmp61_, _tmp66_, (ValaCCodeExpression*) _tmp67_);
24488 _vala_ccode_node_unref0 (_tmp66_);
24490 _tmp69_ = temp_value;
24491 vala_expression_set_target_value ((ValaExpression*) _tmp68_, _tmp69_);
24492 _vala_ccode_node_unref0 (cexpr);
24493 _vala_target_value_unref0 (temp_value);
24494 _vala_code_node_unref0 (ma);
24498 static ValaMemberAccess* vala_ccode_base_module_find_property_access (ValaCCodeBaseModule* self, ValaExpression* expr) {
24499 ValaMemberAccess* result = NULL;
24500 ValaExpression* _tmp0_;
24501 ValaExpression* _tmp1_;
24502 ValaMemberAccess* _tmp2_;
24503 ValaMemberAccess* ma;
24504 ValaMemberAccess* _tmp3_;
24505 ValaSymbol* _tmp4_;
24506 ValaSymbol* _tmp5_;
24507 g_return_val_if_fail (self != NULL, NULL);
24508 g_return_val_if_fail (expr != NULL, NULL);
24510 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_MEMBER_ACCESS)) {
24515 _tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
24518 _tmp4_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp3_);
24520 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_PROPERTY)) {
24525 _vala_code_node_unref0 (ma);
24530 static gboolean vala_ccode_base_module_is_limited_generic_type (ValaCCodeBaseModule* self, ValaDataType* type) {
24531 gboolean result = FALSE;
24532 ValaDataType* _tmp0_;
24533 ValaTypeParameter* _tmp1_;
24534 ValaTypeParameter* _tmp2_;
24535 ValaSymbol* _tmp3_;
24536 ValaSymbol* _tmp4_;
24539 ValaDataType* _tmp6_;
24540 ValaTypeParameter* _tmp7_;
24541 ValaTypeParameter* _tmp8_;
24542 ValaSymbol* _tmp9_;
24543 ValaSymbol* _tmp10_;
24544 ValaStruct* _tmp11_;
24546 gboolean _tmp12_ = FALSE;
24547 gboolean _tmp13_ = FALSE;
24548 ValaClass* _tmp14_;
24551 g_return_val_if_fail (self != NULL, FALSE);
24552 g_return_val_if_fail (type != NULL, FALSE);
24554 _tmp1_ = vala_data_type_get_type_parameter (_tmp0_);
24556 _tmp3_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp2_);
24558 _tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp4_) : NULL);
24561 _tmp7_ = vala_data_type_get_type_parameter (_tmp6_);
24563 _tmp9_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp8_);
24565 _tmp11_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp10_) : NULL);
24568 if (_tmp14_ != NULL) {
24569 ValaClass* _tmp15_;
24573 _tmp16_ = vala_class_get_is_compact (_tmp15_);
24583 ValaStruct* _tmp19_;
24585 _tmp12_ = _tmp19_ != NULL;
24590 _vala_code_node_unref0 (st);
24591 _vala_code_node_unref0 (cl);
24595 _vala_code_node_unref0 (st);
24596 _vala_code_node_unref0 (cl);
24601 gboolean vala_ccode_base_module_requires_copy (ValaCCodeBaseModule* self, ValaDataType* type) {
24602 gboolean result = FALSE;
24603 ValaDataType* _tmp0_;
24604 gboolean _tmp1_ = FALSE;
24605 ValaDataType* _tmp2_;
24606 ValaTypeSymbol* _tmp3_;
24607 ValaTypeSymbol* _tmp4_;
24610 gboolean _tmp6_ = FALSE;
24611 gboolean _tmp7_ = FALSE;
24615 ValaDataType* _tmp16_;
24616 ValaTypeParameter* _tmp17_;
24617 ValaTypeParameter* _tmp18_;
24618 g_return_val_if_fail (self != NULL, FALSE);
24619 g_return_val_if_fail (type != NULL, FALSE);
24621 _tmp1_ = vala_data_type_is_disposable (_tmp0_);
24627 _tmp3_ = vala_data_type_get_data_type (_tmp2_);
24629 _tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp4_) : NULL);
24632 if (_tmp8_ != NULL) {
24634 gboolean _tmp10_ = FALSE;
24636 _tmp10_ = vala_ccode_base_module_is_reference_counting ((ValaTypeSymbol*) _tmp9_);
24643 ValaClass* _tmp12_;
24644 gchar* _tmp13_ = NULL;
24647 _tmp13_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) _tmp12_);
24649 _tmp6_ = g_strcmp0 (_tmp14_, "") == 0;
24650 _g_free0 (_tmp14_);
24657 _vala_code_node_unref0 (cl);
24661 _tmp17_ = vala_data_type_get_type_parameter (_tmp16_);
24663 if (_tmp18_ != NULL) {
24664 ValaDataType* _tmp19_;
24665 gboolean _tmp20_ = FALSE;
24667 _tmp20_ = vala_ccode_base_module_is_limited_generic_type (self, _tmp19_);
24670 _vala_code_node_unref0 (cl);
24675 _vala_code_node_unref0 (cl);
24680 gboolean vala_ccode_base_module_requires_destroy (ValaCCodeBaseModule* self, ValaDataType* type) {
24681 gboolean result = FALSE;
24682 ValaDataType* _tmp0_;
24683 gboolean _tmp1_ = FALSE;
24684 ValaDataType* _tmp2_;
24685 ValaArrayType* _tmp3_;
24686 ValaArrayType* array_type;
24687 gboolean _tmp4_ = FALSE;
24688 ValaArrayType* _tmp5_;
24690 ValaDataType* _tmp14_;
24691 ValaTypeSymbol* _tmp15_;
24692 ValaTypeSymbol* _tmp16_;
24693 ValaClass* _tmp17_;
24695 gboolean _tmp18_ = FALSE;
24696 gboolean _tmp19_ = FALSE;
24697 ValaClass* _tmp20_;
24700 ValaDataType* _tmp28_;
24701 ValaTypeParameter* _tmp29_;
24702 ValaTypeParameter* _tmp30_;
24703 g_return_val_if_fail (self != NULL, FALSE);
24704 g_return_val_if_fail (type != NULL, FALSE);
24706 _tmp1_ = vala_data_type_is_disposable (_tmp0_);
24712 _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp2_) : NULL);
24713 array_type = _tmp3_;
24714 _tmp5_ = array_type;
24715 if (_tmp5_ != NULL) {
24716 ValaArrayType* _tmp6_;
24719 _tmp6_ = array_type;
24720 _tmp7_ = vala_array_type_get_fixed_length (_tmp6_);
24728 ValaArrayType* _tmp10_;
24729 ValaDataType* _tmp11_;
24730 ValaDataType* _tmp12_;
24731 gboolean _tmp13_ = FALSE;
24732 _tmp10_ = array_type;
24733 _tmp11_ = vala_array_type_get_element_type (_tmp10_);
24735 _tmp13_ = vala_ccode_base_module_requires_destroy (self, _tmp12_);
24737 _vala_code_node_unref0 (array_type);
24741 _tmp15_ = vala_data_type_get_data_type (_tmp14_);
24743 _tmp17_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp16_) : NULL);
24746 if (_tmp20_ != NULL) {
24747 ValaClass* _tmp21_;
24748 gboolean _tmp22_ = FALSE;
24750 _tmp22_ = vala_ccode_base_module_is_reference_counting ((ValaTypeSymbol*) _tmp21_);
24757 ValaClass* _tmp24_;
24758 gchar* _tmp25_ = NULL;
24761 _tmp25_ = vala_ccode_base_module_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp24_);
24763 _tmp18_ = g_strcmp0 (_tmp26_, "") == 0;
24764 _g_free0 (_tmp26_);
24771 _vala_code_node_unref0 (cl);
24772 _vala_code_node_unref0 (array_type);
24776 _tmp29_ = vala_data_type_get_type_parameter (_tmp28_);
24778 if (_tmp30_ != NULL) {
24779 ValaDataType* _tmp31_;
24780 gboolean _tmp32_ = FALSE;
24782 _tmp32_ = vala_ccode_base_module_is_limited_generic_type (self, _tmp31_);
24785 _vala_code_node_unref0 (cl);
24786 _vala_code_node_unref0 (array_type);
24791 _vala_code_node_unref0 (cl);
24792 _vala_code_node_unref0 (array_type);
24797 static gboolean vala_ccode_base_module_is_ref_function_void (ValaCCodeBaseModule* self, ValaDataType* type) {
24798 gboolean result = FALSE;
24799 ValaDataType* _tmp0_;
24800 ValaTypeSymbol* _tmp1_;
24801 ValaTypeSymbol* _tmp2_;
24805 g_return_val_if_fail (self != NULL, FALSE);
24806 g_return_val_if_fail (type != NULL, FALSE);
24808 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
24810 _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp2_) : NULL);
24813 if (_tmp4_ != NULL) {
24815 gboolean _tmp6_ = FALSE;
24817 _tmp6_ = vala_ccode_base_module_get_ccode_ref_function_void (_tmp5_);
24819 _vala_code_node_unref0 (cl);
24823 _vala_code_node_unref0 (cl);
24826 _vala_code_node_unref0 (cl);
24830 static gboolean vala_ccode_base_module_is_free_function_address_of (ValaCCodeBaseModule* self, ValaDataType* type) {
24831 gboolean result = FALSE;
24832 ValaDataType* _tmp0_;
24833 ValaTypeSymbol* _tmp1_;
24834 ValaTypeSymbol* _tmp2_;
24838 g_return_val_if_fail (self != NULL, FALSE);
24839 g_return_val_if_fail (type != NULL, FALSE);
24841 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
24843 _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp2_) : NULL);
24846 if (_tmp4_ != NULL) {
24848 gboolean _tmp6_ = FALSE;
24850 _tmp6_ = vala_ccode_base_module_get_ccode_free_function_address_of (_tmp5_);
24852 _vala_code_node_unref0 (cl);
24856 _vala_code_node_unref0 (cl);
24859 _vala_code_node_unref0 (cl);
24863 static ValaTargetValue* vala_ccode_base_module_real_copy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node) {
24864 ValaTargetValue* result = NULL;
24865 ValaTargetValue* _tmp0_;
24866 ValaDataType* _tmp1_;
24867 ValaDataType* _tmp2_;
24868 ValaDataType* _tmp3_;
24869 ValaDataType* type;
24870 ValaTargetValue* _tmp4_;
24871 ValaCCodeExpression* _tmp5_ = NULL;
24872 ValaCCodeExpression* cexpr;
24873 ValaTargetValue* _tmp6_;
24874 ValaGLibValue* _tmp7_ = NULL;
24875 ValaGLibValue* _result_;
24876 ValaDataType* _tmp8_;
24877 gboolean _tmp26_ = FALSE;
24878 ValaDataType* _tmp27_;
24880 ValaDataType* _tmp113_;
24881 ValaCodeNode* _tmp114_;
24882 ValaSourceReference* _tmp115_;
24883 ValaSourceReference* _tmp116_;
24884 ValaCCodeExpression* _tmp117_ = NULL;
24885 ValaCCodeExpression* dupexpr;
24886 ValaCCodeExpression* _tmp118_;
24887 gboolean _tmp120_ = FALSE;
24888 gboolean _tmp121_ = FALSE;
24889 gboolean _tmp122_ = FALSE;
24890 ValaCCodeExpression* _tmp123_;
24894 ValaCCodeExpression* _tmp188_;
24895 ValaCCodeFunctionCall* _tmp189_;
24896 ValaCCodeFunctionCall* ccall;
24897 gboolean _tmp190_ = FALSE;
24898 gboolean _tmp191_ = FALSE;
24899 ValaDataType* _tmp192_;
24902 g_return_val_if_fail (value != NULL, NULL);
24903 g_return_val_if_fail (node != NULL, NULL);
24905 _tmp1_ = vala_target_value_get_value_type (_tmp0_);
24907 _tmp3_ = _vala_code_node_ref0 (_tmp2_);
24910 _tmp5_ = vala_ccode_base_module_get_cvalue_ (self, _tmp4_);
24913 _tmp7_ = vala_glib_value_copy (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
24916 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_DELEGATE_TYPE)) {
24917 ValaDataType* _tmp9_;
24918 ValaDelegateType* _tmp10_;
24919 ValaDelegateType* delegate_type;
24920 gboolean _tmp11_ = FALSE;
24921 ValaDelegateType* _tmp12_;
24922 ValaDelegate* _tmp13_;
24923 ValaDelegate* _tmp14_;
24927 ValaGLibValue* _tmp24_;
24928 ValaCCodeConstant* _tmp25_;
24930 _tmp10_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
24931 delegate_type = _tmp10_;
24932 _tmp12_ = delegate_type;
24933 _tmp13_ = vala_delegate_type_get_delegate_symbol (_tmp12_);
24935 _tmp15_ = vala_delegate_get_has_target (_tmp14_);
24938 ValaCodeContext* _tmp17_;
24941 _tmp17_ = self->priv->_context;
24942 _tmp18_ = vala_code_context_get_deprecated (_tmp17_);
24944 _tmp11_ = !_tmp19_;
24950 ValaCodeNode* _tmp21_;
24951 ValaSourceReference* _tmp22_;
24952 ValaSourceReference* _tmp23_;
24954 _tmp22_ = vala_code_node_get_source_reference (_tmp21_);
24956 vala_report_deprecated (_tmp23_, "copying delegates is discouraged");
24958 _tmp24_ = _result_;
24959 _tmp25_ = vala_ccode_constant_new ("NULL");
24960 _vala_ccode_node_unref0 (_tmp24_->delegate_target_destroy_notify_cvalue);
24961 _tmp24_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp25_;
24962 result = (ValaTargetValue*) _result_;
24963 _vala_code_node_unref0 (delegate_type);
24964 _vala_ccode_node_unref0 (cexpr);
24965 _vala_code_node_unref0 (type);
24969 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp27_, VALA_TYPE_VALUE_TYPE)) {
24970 ValaDataType* _tmp28_;
24974 _tmp29_ = vala_data_type_get_nullable (_tmp28_);
24976 _tmp26_ = !_tmp30_;
24982 ValaDataType* _tmp32_;
24983 ValaCodeNode* _tmp33_;
24985 ValaTargetValue* _tmp35_ = NULL;
24986 ValaTargetValue* temp_value;
24987 ValaTargetValue* _tmp36_;
24988 ValaCCodeExpression* _tmp37_ = NULL;
24989 ValaCCodeExpression* ctemp;
24990 ValaDataType* _tmp38_;
24991 ValaValueType* _tmp39_;
24993 ValaValueType* _tmp40_;
24994 ValaTypeSymbol* _tmp41_;
24995 ValaTypeSymbol* _tmp42_;
24996 ValaStruct* _tmp43_;
24998 ValaStruct* _tmp44_;
24999 gchar* _tmp45_ = NULL;
25001 ValaCCodeIdentifier* _tmp47_;
25002 ValaCCodeIdentifier* _tmp48_;
25003 ValaCCodeFunctionCall* _tmp49_;
25004 ValaCCodeFunctionCall* _tmp50_;
25005 ValaCCodeFunctionCall* copy_call;
25006 ValaCCodeFunctionCall* _tmp51_;
25007 ValaCCodeExpression* _tmp52_;
25008 ValaCCodeUnaryExpression* _tmp53_;
25009 ValaCCodeUnaryExpression* _tmp54_;
25010 ValaCCodeFunctionCall* _tmp55_;
25011 ValaCCodeExpression* _tmp56_;
25012 ValaCCodeUnaryExpression* _tmp57_;
25013 ValaCCodeUnaryExpression* _tmp58_;
25014 ValaStruct* _tmp59_;
25015 gboolean _tmp60_ = FALSE;
25016 gboolean _tmp62_ = FALSE;
25017 ValaStruct* _tmp63_;
25022 _tmp35_ = vala_ccode_base_module_create_temp_value (self, _tmp32_, TRUE, _tmp33_, &_tmp34_);
25023 temp_value = _tmp35_;
25024 _tmp36_ = temp_value;
25025 _tmp37_ = vala_ccode_base_module_get_cvalue_ (self, _tmp36_);
25028 _tmp39_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, VALA_TYPE_VALUE_TYPE, ValaValueType));
25031 _tmp41_ = vala_value_type_get_type_symbol (_tmp40_);
25033 _tmp43_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp42_, VALA_TYPE_STRUCT, ValaStruct));
25036 _tmp45_ = vala_ccode_base_module_get_ccode_copy_function ((ValaTypeSymbol*) _tmp44_);
25038 _tmp47_ = vala_ccode_identifier_new (_tmp46_);
25040 _tmp49_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp48_);
25042 _vala_ccode_node_unref0 (_tmp48_);
25043 _g_free0 (_tmp46_);
25044 copy_call = _tmp50_;
25045 _tmp51_ = copy_call;
25047 _tmp53_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp52_);
25049 vala_ccode_function_call_add_argument (_tmp51_, (ValaCCodeExpression*) _tmp54_);
25050 _vala_ccode_node_unref0 (_tmp54_);
25051 _tmp55_ = copy_call;
25053 _tmp57_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp56_);
25055 vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp58_);
25056 _vala_ccode_node_unref0 (_tmp58_);
25058 _tmp60_ = vala_ccode_base_module_get_ccode_has_copy_function (_tmp59_);
25060 ValaStruct* _tmp61_;
25062 vala_ccode_base_module_generate_struct_copy_function (self, _tmp61_);
25064 _tmp63_ = self->gvalue_type;
25065 if (_tmp63_ != NULL) {
25066 ValaDataType* _tmp64_;
25067 ValaTypeSymbol* _tmp65_;
25068 ValaTypeSymbol* _tmp66_;
25069 ValaStruct* _tmp67_;
25071 _tmp65_ = vala_data_type_get_data_type (_tmp64_);
25073 _tmp67_ = self->gvalue_type;
25074 _tmp62_ = _tmp66_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp67_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
25080 ValaCCodeIdentifier* _tmp69_;
25081 ValaCCodeIdentifier* _tmp70_;
25082 ValaCCodeFunctionCall* _tmp71_;
25083 ValaCCodeFunctionCall* _tmp72_;
25084 ValaCCodeFunctionCall* cisvalid;
25085 ValaCCodeFunctionCall* _tmp73_;
25086 ValaCCodeExpression* _tmp74_;
25087 ValaCCodeUnaryExpression* _tmp75_;
25088 ValaCCodeUnaryExpression* _tmp76_;
25089 ValaCCodeFunction* _tmp77_;
25090 ValaCCodeFunction* _tmp78_;
25091 ValaCCodeFunctionCall* _tmp79_;
25092 ValaCCodeIdentifier* _tmp80_;
25093 ValaCCodeIdentifier* _tmp81_;
25094 ValaCCodeFunctionCall* _tmp82_;
25095 ValaCCodeFunctionCall* _tmp83_;
25096 ValaCCodeFunctionCall* value_type_call;
25097 ValaCCodeFunctionCall* _tmp84_;
25098 ValaCCodeExpression* _tmp85_;
25099 ValaCCodeUnaryExpression* _tmp86_;
25100 ValaCCodeUnaryExpression* _tmp87_;
25101 ValaCCodeIdentifier* _tmp88_;
25102 ValaCCodeIdentifier* _tmp89_;
25103 ValaCCodeFunctionCall* _tmp90_;
25104 ValaCCodeFunctionCall* _tmp91_;
25105 ValaCCodeFunctionCall* init_call;
25106 ValaCCodeFunctionCall* _tmp92_;
25107 ValaCCodeExpression* _tmp93_;
25108 ValaCCodeUnaryExpression* _tmp94_;
25109 ValaCCodeUnaryExpression* _tmp95_;
25110 ValaCCodeFunctionCall* _tmp96_;
25111 ValaCCodeFunctionCall* _tmp97_;
25112 ValaCCodeFunction* _tmp98_;
25113 ValaCCodeFunction* _tmp99_;
25114 ValaCCodeFunctionCall* _tmp100_;
25115 ValaCCodeFunction* _tmp101_;
25116 ValaCCodeFunction* _tmp102_;
25117 ValaCCodeFunctionCall* _tmp103_;
25118 ValaCCodeFunction* _tmp104_;
25119 ValaCCodeFunction* _tmp105_;
25120 ValaTargetValue* _tmp106_;
25121 ValaTargetValue* _tmp107_;
25122 ValaCCodeFunction* _tmp108_;
25123 ValaCCodeFunction* _tmp109_;
25124 _tmp69_ = vala_ccode_identifier_new ("G_IS_VALUE");
25126 _tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_);
25128 _vala_ccode_node_unref0 (_tmp70_);
25129 cisvalid = _tmp72_;
25130 _tmp73_ = cisvalid;
25132 _tmp75_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp74_);
25134 vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp76_);
25135 _vala_ccode_node_unref0 (_tmp76_);
25136 _tmp77_ = vala_ccode_base_module_get_ccode (self);
25138 _tmp79_ = cisvalid;
25139 vala_ccode_function_open_if (_tmp78_, (ValaCCodeExpression*) _tmp79_);
25140 _tmp80_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
25142 _tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
25144 _vala_ccode_node_unref0 (_tmp81_);
25145 value_type_call = _tmp83_;
25146 _tmp84_ = value_type_call;
25148 _tmp86_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp85_);
25150 vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp87_);
25151 _vala_ccode_node_unref0 (_tmp87_);
25152 _tmp88_ = vala_ccode_identifier_new ("g_value_init");
25154 _tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
25156 _vala_ccode_node_unref0 (_tmp89_);
25157 init_call = _tmp91_;
25158 _tmp92_ = init_call;
25160 _tmp94_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp93_);
25162 vala_ccode_function_call_add_argument (_tmp92_, (ValaCCodeExpression*) _tmp95_);
25163 _vala_ccode_node_unref0 (_tmp95_);
25164 _tmp96_ = init_call;
25165 _tmp97_ = value_type_call;
25166 vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp97_);
25167 _tmp98_ = vala_ccode_base_module_get_ccode (self);
25169 _tmp100_ = init_call;
25170 vala_ccode_function_add_expression (_tmp99_, (ValaCCodeExpression*) _tmp100_);
25171 _tmp101_ = vala_ccode_base_module_get_ccode (self);
25172 _tmp102_ = _tmp101_;
25173 _tmp103_ = copy_call;
25174 vala_ccode_function_add_expression (_tmp102_, (ValaCCodeExpression*) _tmp103_);
25175 _tmp104_ = vala_ccode_base_module_get_ccode (self);
25176 _tmp105_ = _tmp104_;
25177 vala_ccode_function_add_else (_tmp105_);
25178 _tmp106_ = temp_value;
25180 vala_ccode_base_module_store_value (self, _tmp106_, _tmp107_);
25181 _tmp108_ = vala_ccode_base_module_get_ccode (self);
25182 _tmp109_ = _tmp108_;
25183 vala_ccode_function_close (_tmp109_);
25184 _vala_ccode_node_unref0 (init_call);
25185 _vala_ccode_node_unref0 (value_type_call);
25186 _vala_ccode_node_unref0 (cisvalid);
25188 ValaCCodeFunction* _tmp110_;
25189 ValaCCodeFunction* _tmp111_;
25190 ValaCCodeFunctionCall* _tmp112_;
25191 _tmp110_ = vala_ccode_base_module_get_ccode (self);
25192 _tmp111_ = _tmp110_;
25193 _tmp112_ = copy_call;
25194 vala_ccode_function_add_expression (_tmp111_, (ValaCCodeExpression*) _tmp112_);
25196 result = temp_value;
25197 _vala_ccode_node_unref0 (copy_call);
25198 _vala_code_node_unref0 (st);
25199 _vala_code_node_unref0 (vt);
25200 _vala_ccode_node_unref0 (ctemp);
25201 _vala_target_value_unref0 (_result_);
25202 _vala_ccode_node_unref0 (cexpr);
25203 _vala_code_node_unref0 (type);
25208 _tmp115_ = vala_code_node_get_source_reference (_tmp114_);
25209 _tmp116_ = _tmp115_;
25210 _tmp117_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp113_, _tmp116_, FALSE);
25211 dupexpr = _tmp117_;
25212 _tmp118_ = dupexpr;
25213 if (_tmp118_ == NULL) {
25214 ValaCodeNode* _tmp119_;
25216 vala_code_node_set_error (_tmp119_, TRUE);
25218 _vala_ccode_node_unref0 (dupexpr);
25219 _vala_target_value_unref0 (_result_);
25220 _vala_ccode_node_unref0 (cexpr);
25221 _vala_code_node_unref0 (type);
25224 _tmp123_ = dupexpr;
25225 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp123_, VALA_TYPE_CCODE_IDENTIFIER)) {
25226 ValaDataType* _tmp124_;
25228 _tmp122_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp124_, VALA_TYPE_ARRAY_TYPE);
25232 _tmp125_ = _tmp122_;
25234 ValaDataType* _tmp126_;
25236 _tmp121_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp126_, VALA_TYPE_GENERIC_TYPE);
25240 _tmp127_ = _tmp121_;
25242 ValaDataType* _tmp128_;
25243 gboolean _tmp129_ = FALSE;
25245 _tmp129_ = vala_ccode_base_module_is_ref_function_void (self, _tmp128_);
25246 _tmp120_ = !_tmp129_;
25250 _tmp130_ = _tmp120_;
25252 ValaCCodeExpression* _tmp131_;
25253 ValaCCodeIdentifier* _tmp132_;
25254 ValaCCodeIdentifier* dupid;
25255 ValaCCodeIdentifier* _tmp133_;
25256 const gchar* _tmp134_;
25257 const gchar* _tmp135_;
25258 gchar* _tmp136_ = NULL;
25260 ValaCCodeIdentifier* _tmp137_;
25261 const gchar* _tmp138_;
25262 const gchar* _tmp139_;
25263 const gchar* _tmp172_;
25264 ValaCCodeIdentifier* _tmp173_;
25265 ValaCCodeIdentifier* _tmp174_;
25266 ValaCCodeFunctionCall* _tmp175_;
25267 ValaCCodeFunctionCall* _tmp176_;
25268 ValaCCodeFunctionCall* ccall;
25269 ValaCCodeFunctionCall* _tmp177_;
25270 ValaCCodeExpression* _tmp178_;
25271 ValaGLibValue* _tmp179_;
25272 ValaCCodeFunctionCall* _tmp180_;
25273 ValaCCodeExpression* _tmp181_;
25274 ValaGLibValue* _tmp182_;
25275 ValaDataType* _tmp183_;
25276 ValaDataType* _tmp184_;
25277 ValaGLibValue* _tmp185_;
25278 ValaCodeNode* _tmp186_;
25279 ValaTargetValue* _tmp187_ = NULL;
25280 _tmp131_ = dupexpr;
25281 _tmp132_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp131_, VALA_TYPE_CCODE_IDENTIFIER, ValaCCodeIdentifier));
25284 _tmp134_ = vala_ccode_identifier_get_name (_tmp133_);
25285 _tmp135_ = _tmp134_;
25286 _tmp136_ = g_strdup_printf ("_%s0", _tmp135_);
25287 dup0_func = _tmp136_;
25289 _tmp138_ = vala_ccode_identifier_get_name (_tmp137_);
25290 _tmp139_ = _tmp138_;
25291 if (g_strcmp0 (_tmp139_, "g_strdup") == 0) {
25292 ValaCCodeIdentifier* _tmp140_;
25293 const gchar* _tmp141_;
25294 const gchar* _tmp142_;
25297 _tmp141_ = vala_ccode_identifier_get_name (_tmp140_);
25298 _tmp142_ = _tmp141_;
25299 _tmp143_ = g_strdup (_tmp142_);
25300 _g_free0 (dup0_func);
25301 dup0_func = _tmp143_;
25303 const gchar* _tmp144_;
25304 gboolean _tmp145_ = FALSE;
25305 _tmp144_ = dup0_func;
25306 _tmp145_ = vala_ccode_base_module_add_wrapper (self, _tmp144_);
25309 gchar* pointer_cname;
25310 const gchar* _tmp147_;
25311 const gchar* _tmp148_;
25312 ValaCCodeFunction* _tmp149_;
25313 ValaCCodeFunction* dup0_fun;
25314 ValaCCodeFunction* _tmp150_;
25315 const gchar* _tmp151_;
25316 ValaCCodeParameter* _tmp152_;
25317 ValaCCodeParameter* _tmp153_;
25318 ValaCCodeFunction* _tmp154_;
25319 ValaCCodeFunction* _tmp155_;
25320 ValaCCodeExpression* _tmp156_;
25321 ValaCCodeFunctionCall* _tmp157_;
25322 ValaCCodeFunctionCall* dup_call;
25323 ValaCCodeFunctionCall* _tmp158_;
25324 ValaCCodeIdentifier* _tmp159_;
25325 ValaCCodeIdentifier* _tmp160_;
25326 ValaCCodeFunction* _tmp161_;
25327 ValaCCodeFunction* _tmp162_;
25328 ValaCCodeIdentifier* _tmp163_;
25329 ValaCCodeIdentifier* _tmp164_;
25330 ValaCCodeFunctionCall* _tmp165_;
25331 ValaCCodeConstant* _tmp166_;
25332 ValaCCodeConstant* _tmp167_;
25333 ValaCCodeConditionalExpression* _tmp168_;
25334 ValaCCodeConditionalExpression* _tmp169_;
25335 ValaCCodeFile* _tmp170_;
25336 ValaCCodeFunction* _tmp171_;
25337 _tmp146_ = g_strdup ("gpointer");
25338 pointer_cname = _tmp146_;
25339 _tmp147_ = dup0_func;
25340 _tmp148_ = pointer_cname;
25341 _tmp149_ = vala_ccode_function_new (_tmp147_, _tmp148_);
25342 dup0_fun = _tmp149_;
25343 _tmp150_ = dup0_fun;
25344 _tmp151_ = pointer_cname;
25345 _tmp152_ = vala_ccode_parameter_new ("self", _tmp151_);
25346 _tmp153_ = _tmp152_;
25347 vala_ccode_function_add_parameter (_tmp150_, _tmp153_);
25348 _vala_ccode_node_unref0 (_tmp153_);
25349 _tmp154_ = dup0_fun;
25350 vala_ccode_function_set_modifiers (_tmp154_, VALA_CCODE_MODIFIERS_STATIC);
25351 _tmp155_ = dup0_fun;
25352 vala_ccode_base_module_push_function (self, _tmp155_);
25353 _tmp156_ = dupexpr;
25354 _tmp157_ = vala_ccode_function_call_new (_tmp156_);
25355 dup_call = _tmp157_;
25356 _tmp158_ = dup_call;
25357 _tmp159_ = vala_ccode_identifier_new ("self");
25358 _tmp160_ = _tmp159_;
25359 vala_ccode_function_call_add_argument (_tmp158_, (ValaCCodeExpression*) _tmp160_);
25360 _vala_ccode_node_unref0 (_tmp160_);
25361 _tmp161_ = vala_ccode_base_module_get_ccode (self);
25362 _tmp162_ = _tmp161_;
25363 _tmp163_ = vala_ccode_identifier_new ("self");
25364 _tmp164_ = _tmp163_;
25365 _tmp165_ = dup_call;
25366 _tmp166_ = vala_ccode_constant_new ("NULL");
25367 _tmp167_ = _tmp166_;
25368 _tmp168_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp164_, (ValaCCodeExpression*) _tmp165_, (ValaCCodeExpression*) _tmp167_);
25369 _tmp169_ = _tmp168_;
25370 vala_ccode_function_add_return (_tmp162_, (ValaCCodeExpression*) _tmp169_);
25371 _vala_ccode_node_unref0 (_tmp169_);
25372 _vala_ccode_node_unref0 (_tmp167_);
25373 _vala_ccode_node_unref0 (_tmp164_);
25374 vala_ccode_base_module_pop_function (self);
25375 _tmp170_ = self->cfile;
25376 _tmp171_ = dup0_fun;
25377 vala_ccode_file_add_function (_tmp170_, _tmp171_);
25378 _vala_ccode_node_unref0 (dup_call);
25379 _vala_ccode_node_unref0 (dup0_fun);
25380 _g_free0 (pointer_cname);
25383 _tmp172_ = dup0_func;
25384 _tmp173_ = vala_ccode_identifier_new (_tmp172_);
25385 _tmp174_ = _tmp173_;
25386 _tmp175_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp174_);
25387 _tmp176_ = _tmp175_;
25388 _vala_ccode_node_unref0 (_tmp174_);
25392 vala_ccode_function_call_add_argument (_tmp177_, _tmp178_);
25393 _tmp179_ = _result_;
25395 _tmp181_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp180_);
25396 _vala_ccode_node_unref0 (_tmp179_->cvalue);
25397 _tmp179_->cvalue = _tmp181_;
25398 _tmp182_ = _result_;
25399 _tmp183_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp182_);
25400 _tmp184_ = _tmp183_;
25401 vala_data_type_set_value_owned (_tmp184_, TRUE);
25402 _tmp185_ = _result_;
25404 _tmp187_ = vala_ccode_base_module_store_temp_value (self, (ValaTargetValue*) _tmp185_, _tmp186_, NULL);
25406 _vala_ccode_node_unref0 (ccall);
25407 _g_free0 (dup0_func);
25408 _vala_ccode_node_unref0 (dupid);
25409 _vala_ccode_node_unref0 (dupexpr);
25410 _vala_target_value_unref0 (_result_);
25411 _vala_ccode_node_unref0 (cexpr);
25412 _vala_code_node_unref0 (type);
25415 _tmp188_ = dupexpr;
25416 _tmp189_ = vala_ccode_function_call_new (_tmp188_);
25419 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp192_, VALA_TYPE_ARRAY_TYPE)) {
25420 ValaTargetValue* _tmp193_;
25421 gboolean _tmp194_ = FALSE;
25423 _tmp194_ = vala_ccode_base_module_get_non_null (self, _tmp193_);
25424 _tmp191_ = _tmp194_;
25428 _tmp195_ = _tmp191_;
25430 ValaDataType* _tmp196_;
25431 gboolean _tmp197_ = FALSE;
25433 _tmp197_ = vala_ccode_base_module_is_ref_function_void (self, _tmp196_);
25434 _tmp190_ = !_tmp197_;
25438 _tmp198_ = _tmp190_;
25440 ValaCCodeFunctionCall* _tmp199_;
25441 ValaCCodeExpression* _tmp200_;
25442 ValaDataType* _tmp201_;
25443 ValaCCodeFunctionCall* _tmp202_;
25444 ValaGLibValue* _tmp203_;
25445 ValaGLibValue* _tmp204_;
25446 ValaCodeNode* _tmp205_;
25447 ValaTargetValue* _tmp206_ = NULL;
25448 ValaTargetValue* _tmp207_;
25451 vala_ccode_function_call_add_argument (_tmp199_, _tmp200_);
25454 _tmp203_ = vala_glib_value_new (_tmp201_, (ValaCCodeExpression*) _tmp202_, FALSE);
25455 _tmp204_ = _tmp203_;
25457 _tmp206_ = vala_ccode_base_module_store_temp_value (self, (ValaTargetValue*) _tmp204_, _tmp205_, NULL);
25458 _tmp207_ = _tmp206_;
25459 _vala_target_value_unref0 (_tmp204_);
25461 _vala_ccode_node_unref0 (ccall);
25462 _vala_ccode_node_unref0 (dupexpr);
25463 _vala_target_value_unref0 (_result_);
25464 _vala_ccode_node_unref0 (cexpr);
25465 _vala_code_node_unref0 (type);
25468 ValaCCodeExpression* _tmp208_;
25469 ValaCCodeConstant* _tmp209_;
25470 ValaCCodeConstant* _tmp210_;
25471 ValaCCodeBinaryExpression* _tmp211_;
25472 ValaCCodeBinaryExpression* _tmp212_;
25473 ValaCCodeBinaryExpression* cnotnull;
25474 ValaDataType* _tmp213_;
25475 ValaTypeParameter* _tmp214_;
25476 ValaTypeParameter* _tmp215_;
25477 ValaDataType* _tmp229_;
25478 ValaTypeParameter* _tmp230_;
25479 ValaTypeParameter* _tmp231_;
25480 ValaDataType* _tmp238_;
25481 ValaCCodeExpression* cifnull = NULL;
25482 ValaDataType* _tmp259_;
25483 ValaTypeSymbol* _tmp260_;
25484 ValaTypeSymbol* _tmp261_;
25485 ValaDataType* _tmp265_;
25486 gboolean _tmp266_ = FALSE;
25488 _tmp209_ = vala_ccode_constant_new ("NULL");
25489 _tmp210_ = _tmp209_;
25490 _tmp211_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp208_, (ValaCCodeExpression*) _tmp210_);
25491 _tmp212_ = _tmp211_;
25492 _vala_ccode_node_unref0 (_tmp210_);
25493 cnotnull = _tmp212_;
25495 _tmp214_ = vala_data_type_get_type_parameter (_tmp213_);
25496 _tmp215_ = _tmp214_;
25497 if (_tmp215_ != NULL) {
25498 ValaDataType* _tmp216_;
25499 ValaCodeNode* _tmp217_;
25500 ValaSourceReference* _tmp218_;
25501 ValaSourceReference* _tmp219_;
25502 ValaCCodeExpression* _tmp220_ = NULL;
25503 ValaCCodeExpression* _tmp221_;
25504 ValaCCodeConstant* _tmp222_;
25505 ValaCCodeConstant* _tmp223_;
25506 ValaCCodeBinaryExpression* _tmp224_;
25507 ValaCCodeBinaryExpression* _tmp225_;
25508 ValaCCodeBinaryExpression* cdupnotnull;
25509 ValaCCodeBinaryExpression* _tmp226_;
25510 ValaCCodeBinaryExpression* _tmp227_;
25511 ValaCCodeBinaryExpression* _tmp228_;
25514 _tmp218_ = vala_code_node_get_source_reference (_tmp217_);
25515 _tmp219_ = _tmp218_;
25516 _tmp220_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp216_, _tmp219_, FALSE);
25517 _tmp221_ = _tmp220_;
25518 _tmp222_ = vala_ccode_constant_new ("NULL");
25519 _tmp223_ = _tmp222_;
25520 _tmp224_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp221_, (ValaCCodeExpression*) _tmp223_);
25521 _tmp225_ = _tmp224_;
25522 _vala_ccode_node_unref0 (_tmp223_);
25523 _vala_ccode_node_unref0 (_tmp221_);
25524 cdupnotnull = _tmp225_;
25525 _tmp226_ = cnotnull;
25526 _tmp227_ = cdupnotnull;
25527 _tmp228_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_AND, (ValaCCodeExpression*) _tmp226_, (ValaCCodeExpression*) _tmp227_);
25528 _vala_ccode_node_unref0 (cnotnull);
25529 cnotnull = _tmp228_;
25530 _vala_ccode_node_unref0 (cdupnotnull);
25533 _tmp230_ = vala_data_type_get_type_parameter (_tmp229_);
25534 _tmp231_ = _tmp230_;
25535 if (_tmp231_ != NULL) {
25536 ValaCCodeFunctionCall* _tmp232_;
25537 ValaCCodeExpression* _tmp233_;
25538 ValaCCodeCastExpression* _tmp234_;
25539 ValaCCodeCastExpression* _tmp235_;
25542 _tmp234_ = vala_ccode_cast_expression_new (_tmp233_, "gpointer");
25543 _tmp235_ = _tmp234_;
25544 vala_ccode_function_call_add_argument (_tmp232_, (ValaCCodeExpression*) _tmp235_);
25545 _vala_ccode_node_unref0 (_tmp235_);
25547 ValaCCodeFunctionCall* _tmp236_;
25548 ValaCCodeExpression* _tmp237_;
25551 vala_ccode_function_call_add_argument (_tmp236_, _tmp237_);
25554 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp238_, VALA_TYPE_ARRAY_TYPE)) {
25555 ValaDataType* _tmp239_;
25556 ValaArrayType* _tmp240_;
25557 ValaArrayType* array_type;
25558 ValaCCodeFunctionCall* _tmp241_;
25559 ValaTargetValue* _tmp242_;
25560 ValaCCodeExpression* _tmp243_ = NULL;
25561 ValaCCodeExpression* _tmp244_;
25562 ValaArrayType* _tmp245_;
25563 ValaDataType* _tmp246_;
25564 ValaDataType* _tmp247_;
25566 _tmp240_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp239_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
25567 array_type = _tmp240_;
25570 _tmp243_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp242_, -1);
25571 _tmp244_ = _tmp243_;
25572 vala_ccode_function_call_add_argument (_tmp241_, _tmp244_);
25573 _vala_ccode_node_unref0 (_tmp244_);
25574 _tmp245_ = array_type;
25575 _tmp246_ = vala_array_type_get_element_type (_tmp245_);
25576 _tmp247_ = _tmp246_;
25577 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp247_, VALA_TYPE_GENERIC_TYPE)) {
25578 ValaArrayType* _tmp248_;
25579 ValaDataType* _tmp249_;
25580 ValaDataType* _tmp250_;
25581 ValaCodeNode* _tmp251_;
25582 ValaSourceReference* _tmp252_;
25583 ValaSourceReference* _tmp253_;
25584 ValaCCodeExpression* _tmp254_ = NULL;
25585 ValaCCodeExpression* elem_dupexpr;
25586 ValaCCodeExpression* _tmp255_;
25587 ValaCCodeFunctionCall* _tmp257_;
25588 ValaCCodeExpression* _tmp258_;
25589 _tmp248_ = array_type;
25590 _tmp249_ = vala_array_type_get_element_type (_tmp248_);
25591 _tmp250_ = _tmp249_;
25593 _tmp252_ = vala_code_node_get_source_reference (_tmp251_);
25594 _tmp253_ = _tmp252_;
25595 _tmp254_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp250_, _tmp253_, FALSE);
25596 elem_dupexpr = _tmp254_;
25597 _tmp255_ = elem_dupexpr;
25598 if (_tmp255_ == NULL) {
25599 ValaCCodeConstant* _tmp256_;
25600 _tmp256_ = vala_ccode_constant_new ("NULL");
25601 _vala_ccode_node_unref0 (elem_dupexpr);
25602 elem_dupexpr = (ValaCCodeExpression*) _tmp256_;
25605 _tmp258_ = elem_dupexpr;
25606 vala_ccode_function_call_add_argument (_tmp257_, _tmp258_);
25607 _vala_ccode_node_unref0 (elem_dupexpr);
25609 _vala_code_node_unref0 (array_type);
25612 _tmp260_ = vala_data_type_get_data_type (_tmp259_);
25613 _tmp261_ = _tmp260_;
25614 if (_tmp261_ != NULL) {
25615 ValaCCodeConstant* _tmp262_;
25616 _tmp262_ = vala_ccode_constant_new ("NULL");
25617 _vala_ccode_node_unref0 (cifnull);
25618 cifnull = (ValaCCodeExpression*) _tmp262_;
25620 ValaCCodeExpression* _tmp263_;
25621 ValaCCodeCastExpression* _tmp264_;
25623 _tmp264_ = vala_ccode_cast_expression_new (_tmp263_, "gpointer");
25624 _vala_ccode_node_unref0 (cifnull);
25625 cifnull = (ValaCCodeExpression*) _tmp264_;
25628 _tmp266_ = vala_ccode_base_module_is_ref_function_void (self, _tmp265_);
25630 ValaCCodeFunction* _tmp267_;
25631 ValaCCodeFunction* _tmp268_;
25632 ValaCCodeBinaryExpression* _tmp269_;
25633 ValaCCodeFunction* _tmp270_;
25634 ValaCCodeFunction* _tmp271_;
25635 ValaCCodeFunctionCall* _tmp272_;
25636 ValaCCodeFunction* _tmp273_;
25637 ValaCCodeFunction* _tmp274_;
25638 _tmp267_ = vala_ccode_base_module_get_ccode (self);
25639 _tmp268_ = _tmp267_;
25640 _tmp269_ = cnotnull;
25641 vala_ccode_function_open_if (_tmp268_, (ValaCCodeExpression*) _tmp269_);
25642 _tmp270_ = vala_ccode_base_module_get_ccode (self);
25643 _tmp271_ = _tmp270_;
25645 vala_ccode_function_add_expression (_tmp271_, (ValaCCodeExpression*) _tmp272_);
25646 _tmp273_ = vala_ccode_base_module_get_ccode (self);
25647 _tmp274_ = _tmp273_;
25648 vala_ccode_function_close (_tmp274_);
25650 ValaCCodeBinaryExpression* _tmp275_;
25651 ValaCCodeFunctionCall* _tmp276_;
25652 ValaCCodeExpression* _tmp277_;
25653 ValaCCodeConditionalExpression* _tmp278_;
25654 ValaCCodeConditionalExpression* ccond;
25655 ValaGLibValue* _tmp279_;
25656 ValaCCodeConditionalExpression* _tmp280_;
25657 ValaCCodeExpression* _tmp281_;
25658 ValaGLibValue* _tmp282_;
25659 ValaCodeNode* _tmp283_;
25661 ValaTargetValue* _tmp285_ = NULL;
25662 _tmp275_ = cnotnull;
25664 _tmp277_ = cifnull;
25665 _tmp278_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp275_, (ValaCCodeExpression*) _tmp276_, _tmp277_);
25667 _tmp279_ = _result_;
25669 _tmp281_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp280_);
25670 _vala_ccode_node_unref0 (_tmp279_->cvalue);
25671 _tmp279_->cvalue = _tmp281_;
25672 _tmp282_ = _result_;
25675 _tmp285_ = vala_ccode_base_module_store_temp_value (self, (ValaTargetValue*) _tmp282_, _tmp283_, &_tmp284_);
25676 _vala_target_value_unref0 (_result_);
25677 _result_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp285_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
25678 _vala_ccode_node_unref0 (ccond);
25680 result = (ValaTargetValue*) _result_;
25681 _vala_ccode_node_unref0 (cifnull);
25682 _vala_ccode_node_unref0 (cnotnull);
25683 _vala_ccode_node_unref0 (ccall);
25684 _vala_ccode_node_unref0 (dupexpr);
25685 _vala_ccode_node_unref0 (cexpr);
25686 _vala_code_node_unref0 (type);
25689 _vala_ccode_node_unref0 (ccall);
25690 _vala_ccode_node_unref0 (dupexpr);
25691 _vala_target_value_unref0 (_result_);
25692 _vala_ccode_node_unref0 (cexpr);
25693 _vala_code_node_unref0 (type);
25697 ValaTargetValue* vala_ccode_base_module_copy_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node) {
25698 g_return_val_if_fail (self != NULL, NULL);
25699 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->copy_value (self, value, node);
25703 static gboolean vala_ccode_base_module_is_reference_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg) {
25704 gboolean result = FALSE;
25705 gboolean _tmp0_ = FALSE;
25706 ValaDataType* _tmp1_;
25708 g_return_val_if_fail (self != NULL, FALSE);
25709 g_return_val_if_fail (type_arg != NULL, FALSE);
25711 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_ERROR_TYPE)) {
25714 gboolean _tmp2_ = FALSE;
25715 ValaDataType* _tmp3_;
25716 ValaTypeSymbol* _tmp4_;
25717 ValaTypeSymbol* _tmp5_;
25720 _tmp4_ = vala_data_type_get_data_type (_tmp3_);
25722 if (_tmp5_ != NULL) {
25723 ValaDataType* _tmp6_;
25724 ValaTypeSymbol* _tmp7_;
25725 ValaTypeSymbol* _tmp8_;
25726 gboolean _tmp9_ = FALSE;
25728 _tmp7_ = vala_data_type_get_data_type (_tmp6_);
25730 _tmp9_ = vala_typesymbol_is_reference_type (_tmp8_);
25749 static gboolean vala_ccode_base_module_is_nullable_value_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg) {
25750 gboolean result = FALSE;
25751 gboolean _tmp0_ = FALSE;
25752 ValaDataType* _tmp1_;
25754 g_return_val_if_fail (self != NULL, FALSE);
25755 g_return_val_if_fail (type_arg != NULL, FALSE);
25757 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_VALUE_TYPE)) {
25758 ValaDataType* _tmp2_;
25762 _tmp3_ = vala_data_type_get_nullable (_tmp2_);
25779 static gboolean vala_ccode_base_module_is_signed_integer_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg) {
25780 gboolean result = FALSE;
25781 ValaDataType* _tmp0_;
25782 ValaTypeSymbol* _tmp1_;
25783 ValaTypeSymbol* _tmp2_;
25784 ValaStruct* _tmp3_;
25786 ValaDataType* _tmp4_;
25787 g_return_val_if_fail (self != NULL, FALSE);
25788 g_return_val_if_fail (type_arg != NULL, FALSE);
25790 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
25792 _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp2_) : NULL);
25795 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_ENUM_VALUE_TYPE)) {
25797 _vala_code_node_unref0 (st);
25800 ValaDataType* _tmp5_;
25804 _tmp6_ = vala_data_type_get_nullable (_tmp5_);
25808 _vala_code_node_unref0 (st);
25811 ValaStruct* _tmp8_;
25813 if (_tmp8_ == NULL) {
25815 _vala_code_node_unref0 (st);
25818 ValaStruct* _tmp9_;
25819 ValaDataType* _tmp10_;
25820 ValaTypeSymbol* _tmp11_;
25821 ValaTypeSymbol* _tmp12_;
25822 gboolean _tmp13_ = FALSE;
25824 _tmp10_ = self->bool_type;
25825 _tmp11_ = vala_data_type_get_data_type (_tmp10_);
25827 _tmp13_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp9_, _tmp12_);
25830 _vala_code_node_unref0 (st);
25833 ValaStruct* _tmp14_;
25834 ValaDataType* _tmp15_;
25835 ValaTypeSymbol* _tmp16_;
25836 ValaTypeSymbol* _tmp17_;
25837 gboolean _tmp18_ = FALSE;
25839 _tmp15_ = self->char_type;
25840 _tmp16_ = vala_data_type_get_data_type (_tmp15_);
25842 _tmp18_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp14_, _tmp17_);
25845 _vala_code_node_unref0 (st);
25848 gboolean _tmp19_ = FALSE;
25849 ValaDataType* _tmp20_;
25851 _tmp20_ = self->unichar_type;
25852 if (_tmp20_ != NULL) {
25853 ValaStruct* _tmp21_;
25854 ValaDataType* _tmp22_;
25855 ValaTypeSymbol* _tmp23_;
25856 ValaTypeSymbol* _tmp24_;
25857 gboolean _tmp25_ = FALSE;
25859 _tmp22_ = self->unichar_type;
25860 _tmp23_ = vala_data_type_get_data_type (_tmp22_);
25862 _tmp25_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp21_, _tmp24_);
25870 _vala_code_node_unref0 (st);
25873 ValaStruct* _tmp27_;
25874 ValaDataType* _tmp28_;
25875 ValaTypeSymbol* _tmp29_;
25876 ValaTypeSymbol* _tmp30_;
25877 gboolean _tmp31_ = FALSE;
25879 _tmp28_ = self->short_type;
25880 _tmp29_ = vala_data_type_get_data_type (_tmp28_);
25882 _tmp31_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp27_, _tmp30_);
25885 _vala_code_node_unref0 (st);
25888 ValaStruct* _tmp32_;
25889 ValaDataType* _tmp33_;
25890 ValaTypeSymbol* _tmp34_;
25891 ValaTypeSymbol* _tmp35_;
25892 gboolean _tmp36_ = FALSE;
25894 _tmp33_ = self->int_type;
25895 _tmp34_ = vala_data_type_get_data_type (_tmp33_);
25897 _tmp36_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp32_, _tmp35_);
25900 _vala_code_node_unref0 (st);
25903 ValaStruct* _tmp37_;
25904 ValaDataType* _tmp38_;
25905 ValaTypeSymbol* _tmp39_;
25906 ValaTypeSymbol* _tmp40_;
25907 gboolean _tmp41_ = FALSE;
25909 _tmp38_ = self->long_type;
25910 _tmp39_ = vala_data_type_get_data_type (_tmp38_);
25912 _tmp41_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp37_, _tmp40_);
25915 _vala_code_node_unref0 (st);
25918 ValaStruct* _tmp42_;
25919 ValaDataType* _tmp43_;
25920 ValaTypeSymbol* _tmp44_;
25921 ValaTypeSymbol* _tmp45_;
25922 gboolean _tmp46_ = FALSE;
25924 _tmp43_ = self->int8_type;
25925 _tmp44_ = vala_data_type_get_data_type (_tmp43_);
25927 _tmp46_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp42_, _tmp45_);
25930 _vala_code_node_unref0 (st);
25933 ValaStruct* _tmp47_;
25934 ValaDataType* _tmp48_;
25935 ValaTypeSymbol* _tmp49_;
25936 ValaTypeSymbol* _tmp50_;
25937 gboolean _tmp51_ = FALSE;
25939 _tmp48_ = self->int16_type;
25940 _tmp49_ = vala_data_type_get_data_type (_tmp48_);
25942 _tmp51_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp47_, _tmp50_);
25945 _vala_code_node_unref0 (st);
25948 ValaStruct* _tmp52_;
25949 ValaDataType* _tmp53_;
25950 ValaTypeSymbol* _tmp54_;
25951 ValaTypeSymbol* _tmp55_;
25952 gboolean _tmp56_ = FALSE;
25954 _tmp53_ = self->int32_type;
25955 _tmp54_ = vala_data_type_get_data_type (_tmp53_);
25957 _tmp56_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp52_, _tmp55_);
25960 _vala_code_node_unref0 (st);
25963 ValaStruct* _tmp57_;
25964 ValaTypeSymbol* _tmp58_;
25965 gboolean _tmp59_ = FALSE;
25967 _tmp58_ = self->gtype_type;
25968 _tmp59_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp57_, _tmp58_);
25971 _vala_code_node_unref0 (st);
25975 _vala_code_node_unref0 (st);
25990 _vala_code_node_unref0 (st);
25994 static gboolean vala_ccode_base_module_is_unsigned_integer_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg) {
25995 gboolean result = FALSE;
25996 ValaDataType* _tmp0_;
25997 ValaTypeSymbol* _tmp1_;
25998 ValaTypeSymbol* _tmp2_;
25999 ValaStruct* _tmp3_;
26001 ValaStruct* _tmp4_;
26002 g_return_val_if_fail (self != NULL, FALSE);
26003 g_return_val_if_fail (type_arg != NULL, FALSE);
26005 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
26007 _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp2_) : NULL);
26010 if (_tmp4_ == NULL) {
26012 _vala_code_node_unref0 (st);
26015 ValaDataType* _tmp5_;
26019 _tmp6_ = vala_data_type_get_nullable (_tmp5_);
26023 _vala_code_node_unref0 (st);
26026 ValaStruct* _tmp8_;
26027 ValaDataType* _tmp9_;
26028 ValaTypeSymbol* _tmp10_;
26029 ValaTypeSymbol* _tmp11_;
26030 gboolean _tmp12_ = FALSE;
26032 _tmp9_ = self->uchar_type;
26033 _tmp10_ = vala_data_type_get_data_type (_tmp9_);
26035 _tmp12_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp8_, _tmp11_);
26038 _vala_code_node_unref0 (st);
26041 ValaStruct* _tmp13_;
26042 ValaDataType* _tmp14_;
26043 ValaTypeSymbol* _tmp15_;
26044 ValaTypeSymbol* _tmp16_;
26045 gboolean _tmp17_ = FALSE;
26047 _tmp14_ = self->ushort_type;
26048 _tmp15_ = vala_data_type_get_data_type (_tmp14_);
26050 _tmp17_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp13_, _tmp16_);
26053 _vala_code_node_unref0 (st);
26056 ValaStruct* _tmp18_;
26057 ValaDataType* _tmp19_;
26058 ValaTypeSymbol* _tmp20_;
26059 ValaTypeSymbol* _tmp21_;
26060 gboolean _tmp22_ = FALSE;
26062 _tmp19_ = self->uint_type;
26063 _tmp20_ = vala_data_type_get_data_type (_tmp19_);
26065 _tmp22_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp18_, _tmp21_);
26068 _vala_code_node_unref0 (st);
26071 ValaStruct* _tmp23_;
26072 ValaDataType* _tmp24_;
26073 ValaTypeSymbol* _tmp25_;
26074 ValaTypeSymbol* _tmp26_;
26075 gboolean _tmp27_ = FALSE;
26077 _tmp24_ = self->ulong_type;
26078 _tmp25_ = vala_data_type_get_data_type (_tmp24_);
26080 _tmp27_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp23_, _tmp26_);
26083 _vala_code_node_unref0 (st);
26086 ValaStruct* _tmp28_;
26087 ValaDataType* _tmp29_;
26088 ValaTypeSymbol* _tmp30_;
26089 ValaTypeSymbol* _tmp31_;
26090 gboolean _tmp32_ = FALSE;
26092 _tmp29_ = self->uint8_type;
26093 _tmp30_ = vala_data_type_get_data_type (_tmp29_);
26095 _tmp32_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp28_, _tmp31_);
26098 _vala_code_node_unref0 (st);
26101 ValaStruct* _tmp33_;
26102 ValaDataType* _tmp34_;
26103 ValaTypeSymbol* _tmp35_;
26104 ValaTypeSymbol* _tmp36_;
26105 gboolean _tmp37_ = FALSE;
26107 _tmp34_ = self->uint16_type;
26108 _tmp35_ = vala_data_type_get_data_type (_tmp34_);
26110 _tmp37_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp33_, _tmp36_);
26113 _vala_code_node_unref0 (st);
26116 ValaStruct* _tmp38_;
26117 ValaDataType* _tmp39_;
26118 ValaTypeSymbol* _tmp40_;
26119 ValaTypeSymbol* _tmp41_;
26120 gboolean _tmp42_ = FALSE;
26122 _tmp39_ = self->uint32_type;
26123 _tmp40_ = vala_data_type_get_data_type (_tmp39_);
26125 _tmp42_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp38_, _tmp41_);
26128 _vala_code_node_unref0 (st);
26132 _vala_code_node_unref0 (st);
26143 _vala_code_node_unref0 (st);
26147 void vala_ccode_base_module_check_type (ValaCCodeBaseModule* self, ValaDataType* type) {
26148 ValaDataType* _tmp0_;
26149 ValaArrayType* _tmp1_;
26150 ValaArrayType* array_type;
26151 ValaArrayType* _tmp2_;
26152 g_return_if_fail (self != NULL);
26153 g_return_if_fail (type != NULL);
26155 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp0_) : NULL);
26156 array_type = _tmp1_;
26157 _tmp2_ = array_type;
26158 if (_tmp2_ != NULL) {
26159 ValaArrayType* _tmp3_;
26160 ValaDataType* _tmp4_;
26161 ValaDataType* _tmp5_;
26162 ValaArrayType* _tmp6_;
26163 ValaDataType* _tmp7_;
26164 ValaDataType* _tmp8_;
26165 _tmp3_ = array_type;
26166 _tmp4_ = vala_array_type_get_element_type (_tmp3_);
26168 vala_ccode_base_module_check_type (self, _tmp5_);
26169 _tmp6_ = array_type;
26170 _tmp7_ = vala_array_type_get_element_type (_tmp6_);
26172 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_ARRAY_TYPE)) {
26173 ValaDataType* _tmp9_;
26174 ValaSourceReference* _tmp10_;
26175 ValaSourceReference* _tmp11_;
26177 _tmp10_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp9_);
26179 vala_report_error (_tmp11_, "Stacked arrays are not supported");
26181 ValaArrayType* _tmp12_;
26182 ValaDataType* _tmp13_;
26183 ValaDataType* _tmp14_;
26184 _tmp12_ = array_type;
26185 _tmp13_ = vala_array_type_get_element_type (_tmp12_);
26187 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, VALA_TYPE_DELEGATE_TYPE)) {
26188 ValaArrayType* _tmp15_;
26189 ValaDataType* _tmp16_;
26190 ValaDataType* _tmp17_;
26191 ValaDelegateType* _tmp18_;
26192 ValaDelegateType* delegate_type;
26193 ValaDelegateType* _tmp19_;
26194 ValaDelegate* _tmp20_;
26195 ValaDelegate* _tmp21_;
26198 _tmp15_ = array_type;
26199 _tmp16_ = vala_array_type_get_element_type (_tmp15_);
26201 _tmp18_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
26202 delegate_type = _tmp18_;
26203 _tmp19_ = delegate_type;
26204 _tmp20_ = vala_delegate_type_get_delegate_symbol (_tmp19_);
26206 _tmp22_ = vala_delegate_get_has_target (_tmp21_);
26209 ValaDataType* _tmp24_;
26210 ValaSourceReference* _tmp25_;
26211 ValaSourceReference* _tmp26_;
26213 _tmp25_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp24_);
26215 vala_report_error (_tmp26_, "Delegates with target are not supported as array element type");
26217 _vala_code_node_unref0 (delegate_type);
26222 ValaDataType* _tmp27_;
26223 ValaList* _tmp28_ = NULL;
26224 ValaList* _type_arg_list;
26228 gint _type_arg_size;
26229 gint _type_arg_index;
26231 _tmp28_ = vala_data_type_get_type_arguments (_tmp27_);
26232 _type_arg_list = _tmp28_;
26233 _tmp29_ = _type_arg_list;
26234 _tmp30_ = vala_collection_get_size ((ValaCollection*) _tmp29_);
26236 _type_arg_size = _tmp31_;
26237 _type_arg_index = -1;
26244 gpointer _tmp37_ = NULL;
26245 ValaDataType* type_arg;
26246 ValaDataType* _tmp38_;
26247 ValaDataType* _tmp39_;
26248 _tmp32_ = _type_arg_index;
26249 _type_arg_index = _tmp32_ + 1;
26250 _tmp33_ = _type_arg_index;
26251 _tmp34_ = _type_arg_size;
26252 if (!(_tmp33_ < _tmp34_)) {
26255 _tmp35_ = _type_arg_list;
26256 _tmp36_ = _type_arg_index;
26257 _tmp37_ = vala_list_get (_tmp35_, _tmp36_);
26258 type_arg = (ValaDataType*) _tmp37_;
26259 _tmp38_ = type_arg;
26260 vala_ccode_base_module_check_type (self, _tmp38_);
26261 _tmp39_ = type_arg;
26262 vala_ccode_base_module_check_type_argument (self, _tmp39_);
26263 _vala_code_node_unref0 (type_arg);
26265 _vala_iterable_unref0 (_type_arg_list);
26267 _vala_code_node_unref0 (array_type);
26271 static void vala_ccode_base_module_check_type_argument (ValaCCodeBaseModule* self, ValaDataType* type_arg) {
26272 gboolean _tmp0_ = FALSE;
26273 gboolean _tmp1_ = FALSE;
26274 gboolean _tmp2_ = FALSE;
26275 gboolean _tmp3_ = FALSE;
26276 gboolean _tmp4_ = FALSE;
26277 ValaDataType* _tmp5_;
26283 g_return_if_fail (self != NULL);
26284 g_return_if_fail (type_arg != NULL);
26286 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_GENERIC_TYPE)) {
26289 ValaDataType* _tmp6_;
26291 _tmp4_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_POINTER_TYPE);
26297 ValaDataType* _tmp8_;
26298 gboolean _tmp9_ = FALSE;
26300 _tmp9_ = vala_ccode_base_module_is_reference_type_argument (self, _tmp8_);
26307 ValaDataType* _tmp11_;
26308 gboolean _tmp12_ = FALSE;
26309 _tmp11_ = type_arg;
26310 _tmp12_ = vala_ccode_base_module_is_nullable_value_type_argument (self, _tmp11_);
26317 ValaDataType* _tmp14_;
26318 gboolean _tmp15_ = FALSE;
26319 _tmp14_ = type_arg;
26320 _tmp15_ = vala_ccode_base_module_is_signed_integer_type_argument (self, _tmp14_);
26327 ValaDataType* _tmp17_;
26328 gboolean _tmp18_ = FALSE;
26329 _tmp17_ = type_arg;
26330 _tmp18_ = vala_ccode_base_module_is_unsigned_integer_type_argument (self, _tmp17_);
26336 ValaDataType* _tmp20_;
26337 _tmp20_ = type_arg;
26338 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp20_, VALA_TYPE_DELEGATE_TYPE)) {
26339 ValaDataType* _tmp21_;
26340 ValaDelegateType* _tmp22_;
26341 ValaDelegateType* delegate_type;
26342 ValaDelegateType* _tmp23_;
26343 ValaDelegate* _tmp24_;
26344 ValaDelegate* _tmp25_;
26347 _tmp21_ = type_arg;
26348 _tmp22_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
26349 delegate_type = _tmp22_;
26350 _tmp23_ = delegate_type;
26351 _tmp24_ = vala_delegate_type_get_delegate_symbol (_tmp23_);
26353 _tmp26_ = vala_delegate_get_has_target (_tmp25_);
26356 ValaDataType* _tmp28_;
26357 ValaSourceReference* _tmp29_;
26358 ValaSourceReference* _tmp30_;
26359 _tmp28_ = type_arg;
26360 _tmp29_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp28_);
26362 vala_report_error (_tmp30_, "Delegates with target are not supported as generic type arguments");
26364 _vala_code_node_unref0 (delegate_type);
26366 ValaDataType* _tmp31_;
26367 ValaSourceReference* _tmp32_;
26368 ValaSourceReference* _tmp33_;
26369 ValaDataType* _tmp34_;
26370 gchar* _tmp35_ = NULL;
26372 gchar* _tmp37_ = NULL;
26374 _tmp31_ = type_arg;
26375 _tmp32_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp31_);
26377 _tmp34_ = type_arg;
26378 _tmp35_ = vala_code_node_to_string ((ValaCodeNode*) _tmp34_);
26380 _tmp37_ = g_strdup_printf ("`%s' is not a supported generic type argument, use `?' to box value ty" \
26383 vala_report_error (_tmp33_, _tmp38_);
26384 _g_free0 (_tmp38_);
26385 _g_free0 (_tmp36_);
26391 static void vala_ccode_base_module_real_generate_class_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space) {
26392 ValaCCodeFile* _tmp0_;
26395 gchar* _tmp3_ = NULL;
26397 gboolean _tmp5_ = FALSE;
26399 g_return_if_fail (cl != NULL);
26400 g_return_if_fail (decl_space != NULL);
26401 _tmp0_ = decl_space;
26404 _tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
26406 _tmp5_ = vala_ccode_base_module_add_symbol_declaration (self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_);
26415 void vala_ccode_base_module_generate_class_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space) {
26416 g_return_if_fail (self != NULL);
26417 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_class_declaration (self, cl, decl_space);
26421 static void vala_ccode_base_module_real_generate_interface_declaration (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space) {
26422 g_return_if_fail (iface != NULL);
26423 g_return_if_fail (decl_space != NULL);
26427 void vala_ccode_base_module_generate_interface_declaration (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space) {
26428 g_return_if_fail (self != NULL);
26429 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_interface_declaration (self, iface, decl_space);
26433 static void vala_ccode_base_module_real_generate_method_declaration (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space) {
26434 g_return_if_fail (m != NULL);
26435 g_return_if_fail (decl_space != NULL);
26439 void vala_ccode_base_module_generate_method_declaration (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space) {
26440 g_return_if_fail (self != NULL);
26441 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_method_declaration (self, m, decl_space);
26445 static void vala_ccode_base_module_real_generate_error_domain_declaration (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space) {
26446 g_return_if_fail (edomain != NULL);
26447 g_return_if_fail (decl_space != NULL);
26451 void vala_ccode_base_module_generate_error_domain_declaration (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space) {
26452 g_return_if_fail (self != NULL);
26453 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_error_domain_declaration (self, edomain, decl_space);
26457 void vala_ccode_base_module_add_generic_type_arguments (ValaCCodeBaseModule* self, ValaMap* arg_map, ValaList* type_args, ValaCodeNode* expr, gboolean is_chainup, ValaList* type_parameters) {
26458 gint type_param_index;
26459 g_return_if_fail (self != NULL);
26460 g_return_if_fail (arg_map != NULL);
26461 g_return_if_fail (type_args != NULL);
26462 g_return_if_fail (expr != NULL);
26463 type_param_index = 0;
26467 ValaList* _type_arg_list;
26471 gint _type_arg_size;
26472 gint _type_arg_index;
26473 _tmp0_ = type_args;
26474 _tmp1_ = _vala_iterable_ref0 (_tmp0_);
26475 _type_arg_list = _tmp1_;
26476 _tmp2_ = _type_arg_list;
26477 _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
26479 _type_arg_size = _tmp4_;
26480 _type_arg_index = -1;
26487 gpointer _tmp10_ = NULL;
26488 ValaDataType* type_arg;
26493 ValaDataType* _tmp47_;
26495 ValaCCodeExpression* _tmp49_ = NULL;
26496 ValaCCodeExpression* _tmp50_;
26497 ValaDataType* _tmp51_;
26498 gboolean _tmp52_ = FALSE;
26500 _tmp5_ = _type_arg_index;
26501 _type_arg_index = _tmp5_ + 1;
26502 _tmp6_ = _type_arg_index;
26503 _tmp7_ = _type_arg_size;
26504 if (!(_tmp6_ < _tmp7_)) {
26507 _tmp8_ = _type_arg_list;
26508 _tmp9_ = _type_arg_index;
26509 _tmp10_ = vala_list_get (_tmp8_, _tmp9_);
26510 type_arg = (ValaDataType*) _tmp10_;
26511 _tmp11_ = type_parameters;
26512 if (_tmp11_ != NULL) {
26515 gpointer _tmp14_ = NULL;
26516 ValaTypeParameter* _tmp15_;
26517 const gchar* _tmp16_;
26518 const gchar* _tmp17_;
26519 gchar* _tmp18_ = NULL;
26521 gchar* type_param_name;
26525 const gchar* _tmp23_;
26526 gchar* _tmp24_ = NULL;
26528 ValaCCodeConstant* _tmp26_;
26529 ValaCCodeConstant* _tmp27_;
26533 const gchar* _tmp31_;
26534 gchar* _tmp32_ = NULL;
26536 ValaCCodeConstant* _tmp34_;
26537 ValaCCodeConstant* _tmp35_;
26541 const gchar* _tmp39_;
26542 gchar* _tmp40_ = NULL;
26544 ValaCCodeConstant* _tmp42_;
26545 ValaCCodeConstant* _tmp43_;
26546 _tmp12_ = type_parameters;
26547 _tmp13_ = type_param_index;
26548 _tmp14_ = vala_list_get (_tmp12_, _tmp13_);
26549 _tmp15_ = (ValaTypeParameter*) _tmp14_;
26550 _tmp16_ = vala_symbol_get_name ((ValaSymbol*) _tmp15_);
26552 _tmp18_ = g_utf8_strdown (_tmp17_, (gssize) (-1));
26554 _vala_code_node_unref0 (_tmp15_);
26555 type_param_name = _tmp19_;
26557 _tmp21_ = type_param_index;
26558 _tmp22_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp21_) + 0.01, FALSE);
26559 _tmp23_ = type_param_name;
26560 _tmp24_ = g_strdup_printf ("\"%s_type\"", _tmp23_);
26562 _tmp26_ = vala_ccode_constant_new (_tmp25_);
26564 vala_map_set (_tmp20_, (gpointer) ((gintptr) _tmp22_), (ValaCCodeExpression*) _tmp27_);
26565 _vala_ccode_node_unref0 (_tmp27_);
26566 _g_free0 (_tmp25_);
26568 _tmp29_ = type_param_index;
26569 _tmp30_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp29_) + 0.03, FALSE);
26570 _tmp31_ = type_param_name;
26571 _tmp32_ = g_strdup_printf ("\"%s_dup_func\"", _tmp31_);
26573 _tmp34_ = vala_ccode_constant_new (_tmp33_);
26575 vala_map_set (_tmp28_, (gpointer) ((gintptr) _tmp30_), (ValaCCodeExpression*) _tmp35_);
26576 _vala_ccode_node_unref0 (_tmp35_);
26577 _g_free0 (_tmp33_);
26579 _tmp37_ = type_param_index;
26580 _tmp38_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp37_) + 0.05, FALSE);
26581 _tmp39_ = type_param_name;
26582 _tmp40_ = g_strdup_printf ("\"%s_destroy_func\"", _tmp39_);
26584 _tmp42_ = vala_ccode_constant_new (_tmp41_);
26586 vala_map_set (_tmp36_, (gpointer) ((gintptr) _tmp38_), (ValaCCodeExpression*) _tmp43_);
26587 _vala_ccode_node_unref0 (_tmp43_);
26588 _g_free0 (_tmp41_);
26589 _g_free0 (type_param_name);
26592 _tmp45_ = type_param_index;
26593 _tmp46_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp45_) + 0.02, FALSE);
26594 _tmp47_ = type_arg;
26595 _tmp48_ = is_chainup;
26596 _tmp49_ = vala_ccode_base_module_get_type_id_expression (self, _tmp47_, _tmp48_);
26598 vala_map_set (_tmp44_, (gpointer) ((gintptr) _tmp46_), _tmp50_);
26599 _vala_ccode_node_unref0 (_tmp50_);
26600 _tmp51_ = type_arg;
26601 _tmp52_ = vala_ccode_base_module_requires_copy (self, _tmp51_);
26603 ValaDataType* _tmp53_;
26604 ValaDataType* _tmp54_;
26605 ValaSourceReference* _tmp55_;
26606 ValaSourceReference* _tmp56_;
26608 ValaCCodeExpression* _tmp58_ = NULL;
26609 ValaCCodeExpression* dup_func;
26610 ValaCCodeExpression* _tmp59_;
26614 ValaCCodeExpression* _tmp64_;
26615 ValaCCodeCastExpression* _tmp65_;
26616 ValaCCodeCastExpression* _tmp66_;
26620 ValaDataType* _tmp70_;
26622 ValaCCodeExpression* _tmp72_ = NULL;
26623 ValaCCodeExpression* _tmp73_;
26624 _tmp53_ = type_arg;
26625 _tmp54_ = type_arg;
26626 _tmp55_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp54_);
26628 _tmp57_ = is_chainup;
26629 _tmp58_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp53_, _tmp56_, _tmp57_);
26630 dup_func = _tmp58_;
26631 _tmp59_ = dup_func;
26632 if (_tmp59_ == NULL) {
26633 ValaCodeNode* _tmp60_;
26635 vala_code_node_set_error (_tmp60_, TRUE);
26636 _vala_ccode_node_unref0 (dup_func);
26637 _vala_code_node_unref0 (type_arg);
26638 _vala_iterable_unref0 (_type_arg_list);
26642 _tmp62_ = type_param_index;
26643 _tmp63_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp62_) + 0.04, FALSE);
26644 _tmp64_ = dup_func;
26645 _tmp65_ = vala_ccode_cast_expression_new (_tmp64_, "GBoxedCopyFunc");
26647 vala_map_set (_tmp61_, (gpointer) ((gintptr) _tmp63_), (ValaCCodeExpression*) _tmp66_);
26648 _vala_ccode_node_unref0 (_tmp66_);
26650 _tmp68_ = type_param_index;
26651 _tmp69_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp68_) + 0.06, FALSE);
26652 _tmp70_ = type_arg;
26653 _tmp71_ = is_chainup;
26654 _tmp72_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp70_, _tmp71_);
26656 vala_map_set (_tmp67_, (gpointer) ((gintptr) _tmp69_), _tmp73_);
26657 _vala_ccode_node_unref0 (_tmp73_);
26658 _vala_ccode_node_unref0 (dup_func);
26663 ValaCCodeConstant* _tmp77_;
26664 ValaCCodeConstant* _tmp78_;
26668 ValaCCodeConstant* _tmp82_;
26669 ValaCCodeConstant* _tmp83_;
26671 _tmp75_ = type_param_index;
26672 _tmp76_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp75_) + 0.04, FALSE);
26673 _tmp77_ = vala_ccode_constant_new ("NULL");
26675 vala_map_set (_tmp74_, (gpointer) ((gintptr) _tmp76_), (ValaCCodeExpression*) _tmp78_);
26676 _vala_ccode_node_unref0 (_tmp78_);
26678 _tmp80_ = type_param_index;
26679 _tmp81_ = vala_ccode_base_module_get_param_pos (self, (0.1 * _tmp80_) + 0.06, FALSE);
26680 _tmp82_ = vala_ccode_constant_new ("NULL");
26682 vala_map_set (_tmp79_, (gpointer) ((gintptr) _tmp81_), (ValaCCodeExpression*) _tmp83_);
26683 _vala_ccode_node_unref0 (_tmp83_);
26685 _tmp84_ = type_param_index;
26686 type_param_index = _tmp84_ + 1;
26687 _vala_code_node_unref0 (type_arg);
26689 _vala_iterable_unref0 (_type_arg_list);
26694 static gpointer _vala_map_ref0 (gpointer self) {
26695 return self ? vala_map_ref (self) : NULL;
26699 static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCodeVisitor* base, ValaObjectCreationExpression* expr) {
26700 ValaCCodeBaseModule * self;
26701 ValaCCodeExpression* instance;
26702 ValaCCodeExpression* creation_expr;
26703 ValaObjectCreationExpression* _tmp0_;
26704 ValaDataType* _tmp1_;
26705 ValaDataType* _tmp2_;
26706 ValaObjectCreationExpression* _tmp3_;
26707 ValaDataType* _tmp4_;
26708 ValaDataType* _tmp5_;
26709 ValaTypeSymbol* _tmp6_;
26710 ValaTypeSymbol* _tmp7_;
26711 ValaStruct* _tmp8_;
26713 gboolean _tmp9_ = FALSE;
26714 gboolean _tmp10_ = FALSE;
26715 ValaStruct* _tmp11_;
26718 ValaObjectCreationExpression* _tmp132_;
26719 ValaSymbol* _tmp133_;
26720 ValaSymbol* _tmp134_;
26721 ValaObjectCreationExpression* _tmp758_;
26722 ValaCodeNode* _tmp759_;
26723 ValaCodeNode* _tmp760_;
26724 ValaLocalVariable* _tmp761_;
26725 ValaLocalVariable* local;
26726 gboolean _tmp762_ = FALSE;
26727 ValaLocalVariable* _tmp763_;
26729 ValaObjectCreationExpression* _tmp928_;
26730 ValaTargetValue* _tmp929_;
26731 ValaTargetValue* _tmp930_;
26732 self = (ValaCCodeBaseModule*) base;
26733 g_return_if_fail (expr != NULL);
26735 creation_expr = NULL;
26737 _tmp1_ = vala_object_creation_expression_get_type_reference (_tmp0_);
26739 vala_ccode_base_module_check_type (self, _tmp2_);
26741 _tmp4_ = vala_object_creation_expression_get_type_reference (_tmp3_);
26743 _tmp6_ = vala_data_type_get_data_type (_tmp5_);
26745 _tmp8_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp7_) : NULL);
26748 if (_tmp11_ != NULL) {
26749 gboolean _tmp12_ = FALSE;
26750 ValaStruct* _tmp13_;
26751 gboolean _tmp14_ = FALSE;
26754 _tmp14_ = vala_struct_is_simple_type (_tmp13_);
26758 ValaStruct* _tmp15_;
26759 gchar* _tmp16_ = NULL;
26762 _tmp16_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp15_);
26764 _tmp12_ = g_strcmp0 (_tmp17_, "va_list") == 0;
26765 _g_free0 (_tmp17_);
26776 ValaObjectCreationExpression* _tmp20_;
26777 ValaList* _tmp21_ = NULL;
26782 _tmp21_ = vala_object_creation_expression_get_object_initializer (_tmp20_);
26784 _tmp23_ = vala_collection_get_size ((ValaCollection*) _tmp22_);
26786 _tmp9_ = _tmp24_ > 0;
26787 _vala_iterable_unref0 (_tmp22_);
26791 ValaObjectCreationExpression* _tmp26_;
26792 ValaCodeNode* _tmp27_;
26793 ValaCodeNode* _tmp28_;
26794 ValaLocalVariable* _tmp29_;
26795 ValaLocalVariable* local;
26796 ValaObjectCreationExpression* _tmp30_;
26797 ValaCodeNode* _tmp31_;
26798 ValaCodeNode* _tmp32_;
26799 ValaAssignment* _tmp33_;
26801 gboolean _tmp34_ = FALSE;
26802 ValaLocalVariable* _tmp35_;
26805 _tmp27_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp26_);
26807 _tmp29_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp28_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp28_) : NULL);
26810 _tmp31_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp30_);
26812 _tmp33_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp32_, VALA_TYPE_ASSIGNMENT) ? ((ValaAssignment*) _tmp32_) : NULL);
26815 if (_tmp35_ != NULL) {
26816 ValaLocalVariable* _tmp36_;
26817 ValaLocalVariable* _tmp37_;
26818 ValaExpression* _tmp38_;
26819 ValaExpression* _tmp39_;
26820 gboolean _tmp40_ = FALSE;
26823 _tmp38_ = vala_variable_get_initializer ((ValaVariable*) _tmp37_);
26825 _tmp40_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp36_, _tmp39_);
26832 ValaLocalVariable* _tmp42_;
26833 ValaTargetValue* _tmp43_ = NULL;
26834 ValaTargetValue* _tmp44_;
26835 ValaCCodeExpression* _tmp45_ = NULL;
26837 _tmp43_ = vala_ccode_base_module_get_local_cvalue (self, _tmp42_);
26839 _tmp45_ = vala_ccode_base_module_get_cvalue_ (self, _tmp44_);
26840 _vala_ccode_node_unref0 (instance);
26841 instance = _tmp45_;
26842 _vala_target_value_unref0 (_tmp44_);
26844 gboolean _tmp46_ = FALSE;
26845 gboolean _tmp47_ = FALSE;
26846 ValaAssignment* _tmp48_;
26850 if (_tmp48_ != NULL) {
26851 ValaAssignment* _tmp49_;
26852 ValaExpression* _tmp50_;
26853 ValaExpression* _tmp51_;
26854 ValaSymbol* _tmp52_;
26855 ValaSymbol* _tmp53_;
26857 _tmp50_ = vala_assignment_get_left (_tmp49_);
26859 _tmp52_ = vala_expression_get_symbol_reference (_tmp51_);
26861 _tmp47_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp53_, VALA_TYPE_VARIABLE);
26867 ValaAssignment* _tmp55_;
26868 ValaExpression* _tmp56_;
26869 ValaExpression* _tmp57_;
26870 ValaSymbol* _tmp58_;
26871 ValaSymbol* _tmp59_;
26872 ValaAssignment* _tmp60_;
26873 ValaExpression* _tmp61_;
26874 ValaExpression* _tmp62_;
26875 gboolean _tmp63_ = FALSE;
26877 _tmp56_ = vala_assignment_get_left (_tmp55_);
26879 _tmp58_ = vala_expression_get_symbol_reference (_tmp57_);
26882 _tmp61_ = vala_assignment_get_right (_tmp60_);
26884 _tmp63_ = vala_ccode_base_module_is_simple_struct_creation (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, VALA_TYPE_VARIABLE, ValaVariable), _tmp62_);
26891 ValaAssignment* _tmp65_;
26892 ValaExpression* _tmp66_;
26893 ValaExpression* _tmp67_;
26894 ValaDataType* _tmp68_;
26895 ValaDataType* _tmp69_;
26896 gboolean _tmp70_ = FALSE;
26897 ValaAssignment* _tmp80_;
26898 ValaExpression* _tmp81_;
26899 ValaExpression* _tmp82_;
26900 ValaSymbol* _tmp83_;
26901 ValaSymbol* _tmp84_;
26902 ValaLocalVariable* _tmp85_;
26903 ValaAssignment* _tmp86_;
26904 ValaExpression* _tmp87_;
26905 ValaExpression* _tmp88_;
26906 ValaSymbol* _tmp89_;
26907 ValaSymbol* _tmp90_;
26908 ValaField* _tmp91_;
26910 ValaAssignment* _tmp92_;
26911 ValaExpression* _tmp93_;
26912 ValaExpression* _tmp94_;
26913 ValaSymbol* _tmp95_;
26914 ValaSymbol* _tmp96_;
26915 ValaParameter* _tmp97_;
26916 ValaParameter* param;
26917 ValaLocalVariable* _tmp98_;
26919 _tmp66_ = vala_assignment_get_left (_tmp65_);
26921 _tmp68_ = vala_expression_get_value_type (_tmp67_);
26923 _tmp70_ = vala_ccode_base_module_requires_destroy (self, _tmp69_);
26925 ValaCCodeFunction* _tmp71_;
26926 ValaCCodeFunction* _tmp72_;
26927 ValaAssignment* _tmp73_;
26928 ValaExpression* _tmp74_;
26929 ValaExpression* _tmp75_;
26930 ValaTargetValue* _tmp76_;
26931 ValaTargetValue* _tmp77_;
26932 ValaCCodeExpression* _tmp78_ = NULL;
26933 ValaCCodeExpression* _tmp79_;
26934 _tmp71_ = vala_ccode_base_module_get_ccode (self);
26937 _tmp74_ = vala_assignment_get_left (_tmp73_);
26939 _tmp76_ = vala_expression_get_target_value (_tmp75_);
26941 _tmp78_ = vala_ccode_base_module_destroy_value (self, _tmp77_, FALSE);
26943 vala_ccode_function_add_expression (_tmp72_, _tmp79_);
26944 _vala_ccode_node_unref0 (_tmp79_);
26947 _tmp81_ = vala_assignment_get_left (_tmp80_);
26949 _tmp83_ = vala_expression_get_symbol_reference (_tmp82_);
26951 _tmp85_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp84_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp84_) : NULL);
26952 _vala_code_node_unref0 (local);
26955 _tmp87_ = vala_assignment_get_left (_tmp86_);
26957 _tmp89_ = vala_expression_get_symbol_reference (_tmp88_);
26959 _tmp91_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp90_, VALA_TYPE_FIELD) ? ((ValaField*) _tmp90_) : NULL);
26962 _tmp93_ = vala_assignment_get_left (_tmp92_);
26964 _tmp95_ = vala_expression_get_symbol_reference (_tmp94_);
26966 _tmp97_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp96_, VALA_TYPE_PARAMETER) ? ((ValaParameter*) _tmp96_) : NULL);
26969 if (_tmp98_ != NULL) {
26970 ValaLocalVariable* _tmp99_;
26971 ValaTargetValue* _tmp100_ = NULL;
26972 ValaTargetValue* _tmp101_;
26973 ValaCCodeExpression* _tmp102_ = NULL;
26975 _tmp100_ = vala_ccode_base_module_get_local_cvalue (self, _tmp99_);
26976 _tmp101_ = _tmp100_;
26977 _tmp102_ = vala_ccode_base_module_get_cvalue_ (self, _tmp101_);
26978 _vala_ccode_node_unref0 (instance);
26979 instance = _tmp102_;
26980 _vala_target_value_unref0 (_tmp101_);
26982 ValaField* _tmp103_;
26984 if (_tmp103_ != NULL) {
26985 ValaAssignment* _tmp104_;
26986 ValaExpression* _tmp105_;
26987 ValaExpression* _tmp106_;
26988 ValaExpression* _tmp107_;
26989 ValaExpression* _tmp108_;
26990 ValaExpression* _tmp109_;
26991 ValaExpression* inner;
26992 ValaTargetValue* _tmp110_ = NULL;
26993 ValaExpression* _tmp111_;
26994 ValaField* _tmp115_;
26995 ValaTargetValue* _tmp116_;
26996 ValaTargetValue* _tmp117_ = NULL;
26997 ValaTargetValue* _tmp118_;
26998 ValaCCodeExpression* _tmp119_ = NULL;
27000 _tmp105_ = vala_assignment_get_left (_tmp104_);
27001 _tmp106_ = _tmp105_;
27002 _tmp107_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp106_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
27003 _tmp108_ = _tmp107_;
27004 _tmp109_ = _vala_code_node_ref0 (_tmp108_);
27007 if (_tmp111_ != NULL) {
27008 ValaExpression* _tmp112_;
27009 ValaTargetValue* _tmp113_;
27010 ValaTargetValue* _tmp114_;
27012 _tmp113_ = vala_expression_get_target_value (_tmp112_);
27013 _tmp114_ = _tmp113_;
27014 _tmp110_ = _tmp114_;
27019 _tmp116_ = _tmp110_;
27020 _tmp117_ = vala_ccode_base_module_get_field_cvalue (self, _tmp115_, _tmp116_);
27021 _tmp118_ = _tmp117_;
27022 _tmp119_ = vala_ccode_base_module_get_cvalue_ (self, _tmp118_);
27023 _vala_ccode_node_unref0 (instance);
27024 instance = _tmp119_;
27025 _vala_target_value_unref0 (_tmp118_);
27026 _vala_code_node_unref0 (inner);
27028 ValaParameter* _tmp120_;
27030 if (_tmp120_ != NULL) {
27031 ValaParameter* _tmp121_;
27032 ValaTargetValue* _tmp122_ = NULL;
27033 ValaTargetValue* _tmp123_;
27034 ValaCCodeExpression* _tmp124_ = NULL;
27036 _tmp122_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp121_);
27037 _tmp123_ = _tmp122_;
27038 _tmp124_ = vala_ccode_base_module_get_cvalue_ (self, _tmp123_);
27039 _vala_ccode_node_unref0 (instance);
27040 instance = _tmp124_;
27041 _vala_target_value_unref0 (_tmp123_);
27045 _vala_code_node_unref0 (param);
27046 _vala_code_node_unref0 (field);
27048 ValaObjectCreationExpression* _tmp125_;
27049 ValaDataType* _tmp126_;
27050 ValaDataType* _tmp127_;
27051 ValaObjectCreationExpression* _tmp128_;
27052 ValaTargetValue* _tmp129_ = NULL;
27053 ValaTargetValue* temp_value;
27054 ValaTargetValue* _tmp130_;
27055 ValaCCodeExpression* _tmp131_ = NULL;
27057 _tmp126_ = vala_object_creation_expression_get_type_reference (_tmp125_);
27058 _tmp127_ = _tmp126_;
27060 _tmp129_ = vala_ccode_base_module_create_temp_value (self, _tmp127_, TRUE, (ValaCodeNode*) _tmp128_, NULL);
27061 temp_value = _tmp129_;
27062 _tmp130_ = temp_value;
27063 _tmp131_ = vala_ccode_base_module_get_cvalue_ (self, _tmp130_);
27064 _vala_ccode_node_unref0 (instance);
27065 instance = _tmp131_;
27066 _vala_target_value_unref0 (temp_value);
27069 _vala_code_node_unref0 (a);
27070 _vala_code_node_unref0 (local);
27073 _tmp133_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp132_);
27074 _tmp134_ = _tmp133_;
27075 if (_tmp134_ == NULL) {
27076 ValaObjectCreationExpression* _tmp135_;
27077 ValaDataType* _tmp136_;
27078 ValaDataType* _tmp137_;
27079 ValaTypeSymbol* _tmp138_;
27080 ValaTypeSymbol* _tmp139_;
27082 _tmp136_ = vala_object_creation_expression_get_type_reference (_tmp135_);
27083 _tmp137_ = _tmp136_;
27084 _tmp138_ = vala_data_type_get_data_type (_tmp137_);
27085 _tmp139_ = _tmp138_;
27086 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp139_, VALA_TYPE_STRUCT)) {
27087 ValaCCodeFile* _tmp140_;
27088 ValaCCodeIdentifier* _tmp141_;
27089 ValaCCodeIdentifier* _tmp142_;
27090 ValaCCodeFunctionCall* _tmp143_;
27091 ValaCCodeFunctionCall* _tmp144_;
27092 ValaCCodeFunctionCall* creation_call;
27093 ValaCCodeFunctionCall* _tmp145_;
27094 ValaCCodeExpression* _tmp146_;
27095 ValaCCodeUnaryExpression* _tmp147_;
27096 ValaCCodeUnaryExpression* _tmp148_;
27097 ValaCCodeFunctionCall* _tmp149_;
27098 ValaCCodeConstant* _tmp150_;
27099 ValaCCodeConstant* _tmp151_;
27100 ValaCCodeFunctionCall* _tmp152_;
27101 ValaObjectCreationExpression* _tmp153_;
27102 ValaDataType* _tmp154_;
27103 ValaDataType* _tmp155_;
27104 gchar* _tmp156_ = NULL;
27106 gchar* _tmp158_ = NULL;
27108 ValaCCodeIdentifier* _tmp160_;
27109 ValaCCodeIdentifier* _tmp161_;
27110 ValaCCodeFunctionCall* _tmp162_;
27111 ValaCCodeExpression* _tmp163_;
27112 _tmp140_ = self->cfile;
27113 vala_ccode_file_add_include (_tmp140_, "string.h", FALSE);
27114 _tmp141_ = vala_ccode_identifier_new ("memset");
27115 _tmp142_ = _tmp141_;
27116 _tmp143_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp142_);
27117 _tmp144_ = _tmp143_;
27118 _vala_ccode_node_unref0 (_tmp142_);
27119 creation_call = _tmp144_;
27120 _tmp145_ = creation_call;
27121 _tmp146_ = instance;
27122 _tmp147_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp146_);
27123 _tmp148_ = _tmp147_;
27124 vala_ccode_function_call_add_argument (_tmp145_, (ValaCCodeExpression*) _tmp148_);
27125 _vala_ccode_node_unref0 (_tmp148_);
27126 _tmp149_ = creation_call;
27127 _tmp150_ = vala_ccode_constant_new ("0");
27128 _tmp151_ = _tmp150_;
27129 vala_ccode_function_call_add_argument (_tmp149_, (ValaCCodeExpression*) _tmp151_);
27130 _vala_ccode_node_unref0 (_tmp151_);
27131 _tmp152_ = creation_call;
27133 _tmp154_ = vala_object_creation_expression_get_type_reference (_tmp153_);
27134 _tmp155_ = _tmp154_;
27135 _tmp156_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp155_);
27136 _tmp157_ = _tmp156_;
27137 _tmp158_ = g_strdup_printf ("sizeof (%s)", _tmp157_);
27138 _tmp159_ = _tmp158_;
27139 _tmp160_ = vala_ccode_identifier_new (_tmp159_);
27140 _tmp161_ = _tmp160_;
27141 vala_ccode_function_call_add_argument (_tmp152_, (ValaCCodeExpression*) _tmp161_);
27142 _vala_ccode_node_unref0 (_tmp161_);
27143 _g_free0 (_tmp159_);
27144 _g_free0 (_tmp157_);
27145 _tmp162_ = creation_call;
27146 _tmp163_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp162_);
27147 _vala_ccode_node_unref0 (creation_expr);
27148 creation_expr = _tmp163_;
27149 _vala_ccode_node_unref0 (creation_call);
27152 gboolean _tmp164_ = FALSE;
27153 ValaObjectCreationExpression* _tmp165_;
27154 ValaDataType* _tmp166_;
27155 ValaDataType* _tmp167_;
27156 ValaTypeSymbol* _tmp168_;
27157 ValaTypeSymbol* _tmp169_;
27158 ValaClass* _tmp170_;
27161 _tmp166_ = vala_object_creation_expression_get_type_reference (_tmp165_);
27162 _tmp167_ = _tmp166_;
27163 _tmp168_ = vala_data_type_get_data_type (_tmp167_);
27164 _tmp169_ = _tmp168_;
27165 _tmp170_ = self->glist_type;
27166 if (_tmp169_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp170_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
27169 ValaObjectCreationExpression* _tmp171_;
27170 ValaDataType* _tmp172_;
27171 ValaDataType* _tmp173_;
27172 ValaTypeSymbol* _tmp174_;
27173 ValaTypeSymbol* _tmp175_;
27174 ValaClass* _tmp176_;
27176 _tmp172_ = vala_object_creation_expression_get_type_reference (_tmp171_);
27177 _tmp173_ = _tmp172_;
27178 _tmp174_ = vala_data_type_get_data_type (_tmp173_);
27179 _tmp175_ = _tmp174_;
27180 _tmp176_ = self->gslist_type;
27181 _tmp164_ = _tmp175_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp176_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
27183 _tmp177_ = _tmp164_;
27185 ValaObjectCreationExpression* _tmp178_;
27186 ValaCCodeConstant* _tmp179_;
27187 ValaCCodeConstant* _tmp180_;
27189 _tmp179_ = vala_ccode_constant_new ("NULL");
27190 _tmp180_ = _tmp179_;
27191 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp178_, (ValaCCodeExpression*) _tmp180_);
27192 _vala_ccode_node_unref0 (_tmp180_);
27194 ValaObjectCreationExpression* _tmp181_;
27195 ValaSymbol* _tmp182_;
27196 ValaSymbol* _tmp183_;
27198 _tmp182_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp181_);
27199 _tmp183_ = _tmp182_;
27200 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp183_, VALA_TYPE_METHOD)) {
27201 ValaObjectCreationExpression* _tmp184_;
27202 ValaSymbol* _tmp185_;
27203 ValaSymbol* _tmp186_;
27204 ValaMethod* _tmp187_;
27206 ValaMethod* _tmp188_;
27207 ValaList* _tmp189_ = NULL;
27209 ValaCCodeFunctionCall* creation_call = NULL;
27210 ValaCCodeFunctionCall* async_call;
27211 ValaCCodeFunctionCall* finish_call;
27212 ValaMethod* _tmp190_;
27213 ValaCCodeFile* _tmp191_;
27214 ValaObjectCreationExpression* _tmp192_;
27215 ValaDataType* _tmp193_;
27216 ValaDataType* _tmp194_;
27217 ValaTypeSymbol* _tmp195_;
27218 ValaTypeSymbol* _tmp196_;
27219 ValaClass* _tmp197_;
27221 ValaMethod* _tmp198_;
27222 gboolean _tmp199_ = FALSE;
27223 gboolean _tmp218_ = FALSE;
27224 gboolean _tmp219_ = FALSE;
27225 ValaStruct* _tmp220_;
27228 ValaObjectCreationExpression* _tmp300_;
27229 ValaDataType* _tmp301_;
27230 ValaDataType* _tmp302_;
27231 ValaCCodeFile* _tmp303_;
27232 GHashFunc _tmp304_;
27233 GEqualFunc _tmp305_;
27234 GEqualFunc _tmp306_;
27235 ValaHashMap* _tmp307_;
27236 ValaHashMap* in_arg_map;
27237 ValaHashMap* _tmp308_;
27238 ValaHashMap* _tmp309_;
27239 ValaHashMap* out_arg_map;
27240 gboolean _tmp310_ = FALSE;
27241 ValaMethod* _tmp311_;
27243 gboolean _tmp340_ = FALSE;
27244 ValaClass* _tmp341_;
27249 ValaList* _tmp385_;
27250 ValaIterator* _tmp386_ = NULL;
27251 ValaIterator* params_it;
27252 ValaIterator* _tmp527_;
27253 gboolean _tmp528_ = FALSE;
27254 ValaObjectCreationExpression* _tmp539_;
27258 gboolean _tmp574_ = FALSE;
27259 gboolean _tmp575_ = FALSE;
27260 ValaStruct* _tmp576_;
27263 gboolean _tmp588_ = FALSE;
27264 ValaMethod* _tmp589_;
27268 ValaCCodeFunctionCall* _tmp609_;
27269 ValaCCodeFunctionCall* _tmp610_;
27270 ValaCCodeFunctionCall* _tmp637_;
27271 ValaObjectCreationExpression* _tmp664_;
27274 ValaCCodeFunctionCall* _tmp691_;
27275 ValaCCodeExpression* _tmp692_;
27276 ValaMethod* _tmp693_;
27277 gchar* _tmp694_ = NULL;
27281 _tmp185_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp184_);
27282 _tmp186_ = _tmp185_;
27283 _tmp187_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp186_, VALA_TYPE_METHOD, ValaMethod));
27286 _tmp189_ = vala_method_get_parameters (_tmp188_);
27289 finish_call = NULL;
27291 _tmp191_ = self->cfile;
27292 vala_ccode_base_module_generate_method_declaration (self, _tmp190_, _tmp191_);
27294 _tmp193_ = vala_object_creation_expression_get_type_reference (_tmp192_);
27295 _tmp194_ = _tmp193_;
27296 _tmp195_ = vala_data_type_get_data_type (_tmp194_);
27297 _tmp196_ = _tmp195_;
27298 _tmp197_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp196_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp196_) : NULL);
27301 _tmp199_ = vala_ccode_base_module_get_ccode_has_new_function (_tmp198_);
27303 ValaMethod* _tmp200_;
27304 gchar* _tmp201_ = NULL;
27306 ValaCCodeIdentifier* _tmp203_;
27307 ValaCCodeIdentifier* _tmp204_;
27308 ValaCCodeFunctionCall* _tmp205_;
27309 ValaCCodeFunctionCall* _tmp206_;
27310 ValaClass* _tmp207_;
27311 gchar* _tmp208_ = NULL;
27313 ValaCCodeIdentifier* _tmp210_;
27314 ValaCCodeIdentifier* _tmp211_;
27316 _tmp201_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp200_);
27317 _tmp202_ = _tmp201_;
27318 _tmp203_ = vala_ccode_identifier_new (_tmp202_);
27319 _tmp204_ = _tmp203_;
27320 _tmp205_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp204_);
27321 _vala_ccode_node_unref0 (creation_call);
27322 creation_call = _tmp205_;
27323 _vala_ccode_node_unref0 (_tmp204_);
27324 _g_free0 (_tmp202_);
27325 _tmp206_ = creation_call;
27327 _tmp208_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp207_);
27328 _tmp209_ = _tmp208_;
27329 _tmp210_ = vala_ccode_identifier_new (_tmp209_);
27330 _tmp211_ = _tmp210_;
27331 vala_ccode_function_call_add_argument (_tmp206_, (ValaCCodeExpression*) _tmp211_);
27332 _vala_ccode_node_unref0 (_tmp211_);
27333 _g_free0 (_tmp209_);
27335 ValaMethod* _tmp212_;
27336 gchar* _tmp213_ = NULL;
27338 ValaCCodeIdentifier* _tmp215_;
27339 ValaCCodeIdentifier* _tmp216_;
27340 ValaCCodeFunctionCall* _tmp217_;
27342 _tmp213_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp212_);
27343 _tmp214_ = _tmp213_;
27344 _tmp215_ = vala_ccode_identifier_new (_tmp214_);
27345 _tmp216_ = _tmp215_;
27346 _tmp217_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp216_);
27347 _vala_ccode_node_unref0 (creation_call);
27348 creation_call = _tmp217_;
27349 _vala_ccode_node_unref0 (_tmp216_);
27350 _g_free0 (_tmp214_);
27353 if (_tmp220_ != NULL) {
27354 ValaStruct* _tmp221_;
27355 gboolean _tmp222_ = FALSE;
27357 _tmp222_ = vala_struct_is_simple_type (_tmp221_);
27358 _tmp219_ = !_tmp222_;
27362 _tmp223_ = _tmp219_;
27364 ValaMethod* _tmp224_;
27365 gdouble _tmp225_ = 0.0;
27367 _tmp225_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp224_);
27368 _tmp218_ = !(_tmp225_ < ((gdouble) 0));
27372 _tmp226_ = _tmp218_;
27374 ValaCCodeFunctionCall* _tmp227_;
27375 ValaCCodeExpression* _tmp228_;
27376 ValaCCodeUnaryExpression* _tmp229_;
27377 ValaCCodeUnaryExpression* _tmp230_;
27378 _tmp227_ = creation_call;
27379 _tmp228_ = instance;
27380 _tmp229_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp228_);
27381 _tmp230_ = _tmp229_;
27382 vala_ccode_function_call_add_argument (_tmp227_, (ValaCCodeExpression*) _tmp230_);
27383 _vala_ccode_node_unref0 (_tmp230_);
27385 gboolean _tmp231_ = FALSE;
27386 ValaStruct* _tmp232_;
27389 if (_tmp232_ != NULL) {
27390 ValaStruct* _tmp233_;
27391 gchar* _tmp234_ = NULL;
27394 _tmp234_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp233_);
27395 _tmp235_ = _tmp234_;
27396 _tmp231_ = g_strcmp0 (_tmp235_, "va_list") == 0;
27397 _g_free0 (_tmp235_);
27401 _tmp236_ = _tmp231_;
27403 ValaCCodeFunctionCall* _tmp237_;
27404 ValaCCodeExpression* _tmp238_;
27405 ValaMethod* _tmp239_;
27406 gchar* _tmp240_ = NULL;
27409 _tmp237_ = creation_call;
27410 _tmp238_ = instance;
27411 vala_ccode_function_call_add_argument (_tmp237_, _tmp238_);
27413 _tmp240_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp239_);
27414 _tmp241_ = _tmp240_;
27415 _tmp242_ = g_strcmp0 (_tmp241_, "va_start") == 0;
27416 _g_free0 (_tmp241_);
27420 _tmp243_ = vala_ccode_base_module_get_in_creation_method (self);
27421 _tmp244_ = _tmp243_;
27423 ValaCCodeIdentifier* _tmp245_;
27424 ValaCCodeIdentifier* _tmp246_;
27425 ValaCCodeFunctionCall* _tmp247_;
27426 ValaCCodeFunctionCall* _tmp248_;
27427 ValaCCodeExpression* _tmp249_;
27428 ValaCCodeFunctionCall* _tmp250_;
27429 ValaCCodeIdentifier* _tmp251_;
27430 ValaCCodeIdentifier* _tmp252_;
27431 _tmp245_ = vala_ccode_identifier_new ("va_copy");
27432 _tmp246_ = _tmp245_;
27433 _tmp247_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp246_);
27434 _vala_ccode_node_unref0 (creation_call);
27435 creation_call = _tmp247_;
27436 _vala_ccode_node_unref0 (_tmp246_);
27437 _tmp248_ = creation_call;
27438 _tmp249_ = instance;
27439 vala_ccode_function_call_add_argument (_tmp248_, _tmp249_);
27440 _tmp250_ = creation_call;
27441 _tmp251_ = vala_ccode_identifier_new ("_vala_va_list");
27442 _tmp252_ = _tmp251_;
27443 vala_ccode_function_call_add_argument (_tmp250_, (ValaCCodeExpression*) _tmp252_);
27444 _vala_ccode_node_unref0 (_tmp252_);
27446 ValaParameter* last_param;
27447 ValaCCodeFunction* _tmp270_;
27448 ValaCCodeFunction* _tmp271_;
27451 gboolean _tmp273_ = FALSE;
27456 ValaMethod* _tmp253_;
27457 ValaMethod* _tmp254_;
27458 ValaList* _tmp255_ = NULL;
27459 ValaList* _param_list;
27460 ValaList* _tmp256_;
27465 _tmp253_ = vala_ccode_base_module_get_current_method (self);
27466 _tmp254_ = _tmp253_;
27467 _tmp255_ = vala_method_get_parameters (_tmp254_);
27468 _param_list = _tmp255_;
27469 _tmp256_ = _param_list;
27470 _tmp257_ = vala_collection_get_size ((ValaCollection*) _tmp256_);
27471 _tmp258_ = _tmp257_;
27472 _param_size = _tmp258_;
27478 ValaList* _tmp262_;
27480 gpointer _tmp264_ = NULL;
27481 ValaParameter* param;
27482 ValaParameter* _tmp265_;
27485 ValaParameter* _tmp268_;
27486 ValaParameter* _tmp269_;
27487 _tmp259_ = _param_index;
27488 _param_index = _tmp259_ + 1;
27489 _tmp260_ = _param_index;
27490 _tmp261_ = _param_size;
27491 if (!(_tmp260_ < _tmp261_)) {
27494 _tmp262_ = _param_list;
27495 _tmp263_ = _param_index;
27496 _tmp264_ = vala_list_get (_tmp262_, _tmp263_);
27497 param = (ValaParameter*) _tmp264_;
27499 _tmp266_ = vala_parameter_get_ellipsis (_tmp265_);
27500 _tmp267_ = _tmp266_;
27502 _vala_code_node_unref0 (param);
27506 _tmp269_ = _vala_code_node_ref0 (_tmp268_);
27507 _vala_code_node_unref0 (last_param);
27508 last_param = _tmp269_;
27509 _vala_code_node_unref0 (param);
27511 _vala_iterable_unref0 (_param_list);
27513 _tmp270_ = vala_ccode_base_module_get_ccode (self);
27514 _tmp271_ = _tmp270_;
27515 _tmp272_ = vala_ccode_function_get_parameter_count (_tmp271_);
27516 nParams = _tmp272_;
27517 _tmp274_ = nParams;
27518 if (_tmp274_ == 0) {
27521 ValaCCodeFunction* _tmp275_;
27522 ValaCCodeFunction* _tmp276_;
27524 ValaCCodeParameter* _tmp278_ = NULL;
27525 ValaCCodeParameter* _tmp279_;
27528 _tmp275_ = vala_ccode_base_module_get_ccode (self);
27529 _tmp276_ = _tmp275_;
27530 _tmp277_ = nParams;
27531 _tmp278_ = vala_ccode_function_get_parameter (_tmp276_, _tmp277_ - 1);
27532 _tmp279_ = _tmp278_;
27533 _tmp280_ = vala_ccode_parameter_get_ellipsis (_tmp279_);
27534 _tmp281_ = _tmp280_;
27535 _tmp273_ = !_tmp281_;
27536 _vala_ccode_node_unref0 (_tmp279_);
27538 _tmp282_ = _tmp273_;
27540 ValaObjectCreationExpression* _tmp283_;
27541 ValaSourceReference* _tmp284_;
27542 ValaSourceReference* _tmp285_;
27544 _tmp284_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp283_);
27545 _tmp285_ = _tmp284_;
27546 vala_report_error (_tmp285_, "`va_list' used in method with fixed args");
27549 _tmp286_ = nParams;
27550 if (_tmp286_ == 1) {
27551 ValaObjectCreationExpression* _tmp287_;
27552 ValaSourceReference* _tmp288_;
27553 ValaSourceReference* _tmp289_;
27555 _tmp288_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp287_);
27556 _tmp289_ = _tmp288_;
27557 vala_report_error (_tmp289_, "`va_list' used in method without parameter");
27559 ValaCCodeFunctionCall* _tmp290_;
27560 ValaCCodeFunction* _tmp291_;
27561 ValaCCodeFunction* _tmp292_;
27563 ValaCCodeParameter* _tmp294_ = NULL;
27564 ValaCCodeParameter* _tmp295_;
27565 const gchar* _tmp296_;
27566 const gchar* _tmp297_;
27567 ValaCCodeIdentifier* _tmp298_;
27568 ValaCCodeIdentifier* _tmp299_;
27569 _tmp290_ = creation_call;
27570 _tmp291_ = vala_ccode_base_module_get_ccode (self);
27571 _tmp292_ = _tmp291_;
27572 _tmp293_ = nParams;
27573 _tmp294_ = vala_ccode_function_get_parameter (_tmp292_, _tmp293_ - 2);
27574 _tmp295_ = _tmp294_;
27575 _tmp296_ = vala_ccode_parameter_get_name (_tmp295_);
27576 _tmp297_ = _tmp296_;
27577 _tmp298_ = vala_ccode_identifier_new (_tmp297_);
27578 _tmp299_ = _tmp298_;
27579 vala_ccode_function_call_add_argument (_tmp290_, (ValaCCodeExpression*) _tmp299_);
27580 _vala_ccode_node_unref0 (_tmp299_);
27581 _vala_ccode_node_unref0 (_tmp295_);
27584 _vala_code_node_unref0 (last_param);
27590 _tmp301_ = vala_object_creation_expression_get_type_reference (_tmp300_);
27591 _tmp302_ = _tmp301_;
27592 _tmp303_ = self->cfile;
27593 vala_ccode_base_module_generate_type_declaration (self, _tmp302_, _tmp303_);
27594 _tmp304_ = g_direct_hash;
27595 _tmp305_ = g_direct_equal;
27596 _tmp306_ = g_direct_equal;
27597 _tmp307_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp304_, _tmp305_, _tmp306_);
27598 in_arg_map = _tmp307_;
27599 _tmp308_ = in_arg_map;
27600 _tmp309_ = _vala_map_ref0 (_tmp308_);
27601 out_arg_map = _tmp309_;
27603 if (_tmp311_ != NULL) {
27604 ValaMethod* _tmp312_;
27608 _tmp313_ = vala_method_get_coroutine (_tmp312_);
27609 _tmp314_ = _tmp313_;
27610 _tmp310_ = _tmp314_;
27614 _tmp315_ = _tmp310_;
27616 ValaMethod* _tmp316_;
27617 gchar* _tmp317_ = NULL;
27619 ValaCCodeIdentifier* _tmp319_;
27620 ValaCCodeIdentifier* _tmp320_;
27621 ValaCCodeFunctionCall* _tmp321_;
27622 ValaMethod* _tmp322_;
27623 gchar* _tmp323_ = NULL;
27625 ValaCCodeIdentifier* _tmp325_;
27626 ValaCCodeIdentifier* _tmp326_;
27627 ValaCCodeFunctionCall* _tmp327_;
27628 ValaCCodeFunctionCall* _tmp328_;
27629 ValaCCodeFunctionCall* _tmp329_;
27630 GHashFunc _tmp330_;
27631 GEqualFunc _tmp331_;
27632 GEqualFunc _tmp332_;
27633 ValaHashMap* _tmp333_;
27634 ValaHashMap* _tmp334_;
27636 ValaCCodeIdentifier* _tmp336_;
27637 ValaCCodeIdentifier* _tmp337_;
27638 ValaCCodeMemberAccess* _tmp338_;
27639 ValaCCodeMemberAccess* _tmp339_;
27641 _tmp317_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp316_);
27642 _tmp318_ = _tmp317_;
27643 _tmp319_ = vala_ccode_identifier_new (_tmp318_);
27644 _tmp320_ = _tmp319_;
27645 _tmp321_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp320_);
27646 _vala_ccode_node_unref0 (async_call);
27647 async_call = _tmp321_;
27648 _vala_ccode_node_unref0 (_tmp320_);
27649 _g_free0 (_tmp318_);
27651 _tmp323_ = vala_ccode_base_module_get_ccode_finish_name (_tmp322_);
27652 _tmp324_ = _tmp323_;
27653 _tmp325_ = vala_ccode_identifier_new (_tmp324_);
27654 _tmp326_ = _tmp325_;
27655 _tmp327_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp326_);
27656 _vala_ccode_node_unref0 (finish_call);
27657 finish_call = _tmp327_;
27658 _vala_ccode_node_unref0 (_tmp326_);
27659 _g_free0 (_tmp324_);
27660 _tmp328_ = finish_call;
27661 _tmp329_ = _vala_ccode_node_ref0 (_tmp328_);
27662 _vala_ccode_node_unref0 (creation_call);
27663 creation_call = _tmp329_;
27664 _tmp330_ = g_direct_hash;
27665 _tmp331_ = g_direct_equal;
27666 _tmp332_ = g_direct_equal;
27667 _tmp333_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp330_, _tmp331_, _tmp332_);
27668 _vala_map_unref0 (out_arg_map);
27669 out_arg_map = _tmp333_;
27670 _tmp334_ = out_arg_map;
27671 _tmp335_ = vala_ccode_base_module_get_param_pos (self, 0.1, FALSE);
27672 _tmp336_ = vala_ccode_identifier_new ("_data_");
27673 _tmp337_ = _tmp336_;
27674 _tmp338_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp337_, "_res_");
27675 _tmp339_ = _tmp338_;
27676 vala_map_set ((ValaMap*) _tmp334_, (gpointer) ((gintptr) _tmp335_), (ValaCCodeExpression*) _tmp339_);
27677 _vala_ccode_node_unref0 (_tmp339_);
27678 _vala_ccode_node_unref0 (_tmp337_);
27681 if (_tmp341_ != NULL) {
27682 ValaClass* _tmp342_;
27686 _tmp343_ = vala_class_get_is_compact (_tmp342_);
27687 _tmp344_ = _tmp343_;
27688 _tmp340_ = !_tmp344_;
27692 _tmp345_ = _tmp340_;
27694 ValaHashMap* _tmp346_;
27695 ValaObjectCreationExpression* _tmp347_;
27696 ValaDataType* _tmp348_;
27697 ValaDataType* _tmp349_;
27698 ValaList* _tmp350_ = NULL;
27699 ValaList* _tmp351_;
27700 ValaObjectCreationExpression* _tmp352_;
27701 _tmp346_ = in_arg_map;
27703 _tmp348_ = vala_object_creation_expression_get_type_reference (_tmp347_);
27704 _tmp349_ = _tmp348_;
27705 _tmp350_ = vala_data_type_get_type_arguments (_tmp349_);
27706 _tmp351_ = _tmp350_;
27708 vala_ccode_base_module_add_generic_type_arguments (self, (ValaMap*) _tmp346_, _tmp351_, (ValaCodeNode*) _tmp352_, FALSE, NULL);
27709 _vala_iterable_unref0 (_tmp351_);
27711 gboolean _tmp353_ = FALSE;
27712 ValaClass* _tmp354_;
27715 if (_tmp354_ != NULL) {
27716 ValaMethod* _tmp355_;
27717 gboolean _tmp356_ = FALSE;
27719 _tmp356_ = vala_ccode_base_module_get_ccode_simple_generics (_tmp355_);
27720 _tmp353_ = _tmp356_;
27724 _tmp357_ = _tmp353_;
27726 gint type_param_index;
27727 type_param_index = 0;
27729 ValaObjectCreationExpression* _tmp358_;
27730 ValaDataType* _tmp359_;
27731 ValaDataType* _tmp360_;
27732 ValaList* _tmp361_ = NULL;
27733 ValaList* _type_arg_list;
27734 ValaList* _tmp362_;
27737 gint _type_arg_size;
27738 gint _type_arg_index;
27740 _tmp359_ = vala_object_creation_expression_get_type_reference (_tmp358_);
27741 _tmp360_ = _tmp359_;
27742 _tmp361_ = vala_data_type_get_type_arguments (_tmp360_);
27743 _type_arg_list = _tmp361_;
27744 _tmp362_ = _type_arg_list;
27745 _tmp363_ = vala_collection_get_size ((ValaCollection*) _tmp362_);
27746 _tmp364_ = _tmp363_;
27747 _type_arg_size = _tmp364_;
27748 _type_arg_index = -1;
27753 ValaList* _tmp368_;
27755 gpointer _tmp370_ = NULL;
27756 ValaDataType* type_arg;
27757 ValaDataType* _tmp371_;
27758 gboolean _tmp372_ = FALSE;
27760 _tmp365_ = _type_arg_index;
27761 _type_arg_index = _tmp365_ + 1;
27762 _tmp366_ = _type_arg_index;
27763 _tmp367_ = _type_arg_size;
27764 if (!(_tmp366_ < _tmp367_)) {
27767 _tmp368_ = _type_arg_list;
27768 _tmp369_ = _type_arg_index;
27769 _tmp370_ = vala_list_get (_tmp368_, _tmp369_);
27770 type_arg = (ValaDataType*) _tmp370_;
27771 _tmp371_ = type_arg;
27772 _tmp372_ = vala_ccode_base_module_requires_copy (self, _tmp371_);
27774 ValaHashMap* _tmp373_;
27777 ValaDataType* _tmp376_;
27778 ValaCCodeExpression* _tmp377_ = NULL;
27779 ValaCCodeExpression* _tmp378_;
27780 _tmp373_ = in_arg_map;
27781 _tmp374_ = type_param_index;
27782 _tmp375_ = vala_ccode_base_module_get_param_pos (self, ((-1) + (0.1 * _tmp374_)) + 0.03, FALSE);
27783 _tmp376_ = type_arg;
27784 _tmp377_ = vala_ccode_base_module_get_destroy0_func_expression (self, _tmp376_, FALSE);
27785 _tmp378_ = _tmp377_;
27786 vala_map_set ((ValaMap*) _tmp373_, (gpointer) ((gintptr) _tmp375_), _tmp378_);
27787 _vala_ccode_node_unref0 (_tmp378_);
27789 ValaHashMap* _tmp379_;
27792 ValaCCodeConstant* _tmp382_;
27793 ValaCCodeConstant* _tmp383_;
27794 _tmp379_ = in_arg_map;
27795 _tmp380_ = type_param_index;
27796 _tmp381_ = vala_ccode_base_module_get_param_pos (self, ((-1) + (0.1 * _tmp380_)) + 0.03, FALSE);
27797 _tmp382_ = vala_ccode_constant_new ("NULL");
27798 _tmp383_ = _tmp382_;
27799 vala_map_set ((ValaMap*) _tmp379_, (gpointer) ((gintptr) _tmp381_), (ValaCCodeExpression*) _tmp383_);
27800 _vala_ccode_node_unref0 (_tmp383_);
27802 _tmp384_ = type_param_index;
27803 type_param_index = _tmp384_ + 1;
27804 _vala_code_node_unref0 (type_arg);
27806 _vala_iterable_unref0 (_type_arg_list);
27813 _tmp386_ = vala_iterable_iterator ((ValaIterable*) _tmp385_);
27814 params_it = _tmp386_;
27816 ValaObjectCreationExpression* _tmp387_;
27817 ValaList* _tmp388_ = NULL;
27818 ValaList* _arg_list;
27819 ValaList* _tmp389_;
27825 _tmp388_ = vala_object_creation_expression_get_argument_list (_tmp387_);
27826 _arg_list = _tmp388_;
27827 _tmp389_ = _arg_list;
27828 _tmp390_ = vala_collection_get_size ((ValaCollection*) _tmp389_);
27829 _tmp391_ = _tmp390_;
27830 _arg_size = _tmp391_;
27836 ValaList* _tmp395_;
27838 gpointer _tmp397_ = NULL;
27839 ValaExpression* arg;
27840 ValaExpression* _tmp398_;
27841 ValaCCodeExpression* _tmp399_ = NULL;
27842 ValaCCodeExpression* cexpr;
27843 ValaHashMap* _tmp400_;
27844 ValaHashMap* _tmp401_;
27845 ValaHashMap* carg_map;
27846 ValaParameter* param;
27847 ValaIterator* _tmp402_;
27848 gboolean _tmp403_ = FALSE;
27849 ValaHashMap* _tmp523_;
27851 ValaCCodeExpression* _tmp525_;
27853 _tmp392_ = _arg_index;
27854 _arg_index = _tmp392_ + 1;
27855 _tmp393_ = _arg_index;
27856 _tmp394_ = _arg_size;
27857 if (!(_tmp393_ < _tmp394_)) {
27860 _tmp395_ = _arg_list;
27861 _tmp396_ = _arg_index;
27862 _tmp397_ = vala_list_get (_tmp395_, _tmp396_);
27863 arg = (ValaExpression*) _tmp397_;
27865 _tmp399_ = vala_ccode_base_module_get_cvalue (self, _tmp398_);
27867 _tmp400_ = in_arg_map;
27868 _tmp401_ = _vala_map_ref0 (_tmp400_);
27869 carg_map = _tmp401_;
27871 _tmp402_ = params_it;
27872 _tmp403_ = vala_iterator_next (_tmp402_);
27874 ValaIterator* _tmp404_;
27875 gpointer _tmp405_ = NULL;
27876 ValaParameter* _tmp406_;
27880 ValaParameter* _tmp513_;
27881 gdouble _tmp514_ = 0.0;
27884 _tmp404_ = params_it;
27885 _tmp405_ = vala_iterator_get (_tmp404_);
27886 _vala_code_node_unref0 (param);
27887 param = (ValaParameter*) _tmp405_;
27889 _tmp407_ = vala_parameter_get_ellipsis (_tmp406_);
27890 _tmp408_ = _tmp407_;
27891 ellipsis = _tmp408_;
27892 _tmp409_ = ellipsis;
27894 ValaParameter* _tmp410_;
27895 ValaParameterDirection _tmp411_;
27896 ValaParameterDirection _tmp412_;
27897 gboolean _tmp415_ = FALSE;
27898 ValaClass* _tmp416_;
27899 ValaTypeSymbol* _tmp417_;
27901 gboolean _tmp440_ = FALSE;
27902 ValaParameter* _tmp441_;
27903 gboolean _tmp442_ = FALSE;
27905 ValaParameter* _tmp497_;
27906 ValaExpression* _tmp498_;
27907 ValaCCodeExpression* _tmp499_;
27908 ValaCCodeExpression* _tmp500_ = NULL;
27909 ValaParameter* _tmp501_;
27910 gchar* _tmp502_ = NULL;
27914 _tmp411_ = vala_parameter_get_direction (_tmp410_);
27915 _tmp412_ = _tmp411_;
27916 if (_tmp412_ == VALA_PARAMETER_DIRECTION_OUT) {
27917 ValaHashMap* _tmp413_;
27918 ValaHashMap* _tmp414_;
27919 _tmp413_ = out_arg_map;
27920 _tmp414_ = _vala_map_ref0 (_tmp413_);
27921 _vala_map_unref0 (carg_map);
27922 carg_map = _tmp414_;
27925 _tmp417_ = self->garray_type;
27926 if (G_TYPE_CHECK_INSTANCE_CAST (_tmp416_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol) == _tmp417_) {
27927 ValaParameter* _tmp418_;
27928 const gchar* _tmp419_;
27929 const gchar* _tmp420_;
27931 _tmp419_ = vala_symbol_get_name ((ValaSymbol*) _tmp418_);
27932 _tmp420_ = _tmp419_;
27933 _tmp415_ = g_strcmp0 (_tmp420_, "element_size") == 0;
27937 _tmp421_ = _tmp415_;
27939 ValaCCodeIdentifier* _tmp422_;
27940 ValaCCodeIdentifier* _tmp423_;
27941 ValaCCodeFunctionCall* _tmp424_;
27942 ValaCCodeFunctionCall* _tmp425_;
27943 ValaCCodeFunctionCall* csizeof;
27944 ValaCCodeFunctionCall* _tmp426_;
27945 ValaObjectCreationExpression* _tmp427_;
27946 ValaDataType* _tmp428_;
27947 ValaDataType* _tmp429_;
27948 ValaList* _tmp430_ = NULL;
27949 ValaList* _tmp431_;
27950 gpointer _tmp432_ = NULL;
27951 ValaDataType* _tmp433_;
27952 gchar* _tmp434_ = NULL;
27954 ValaCCodeIdentifier* _tmp436_;
27955 ValaCCodeIdentifier* _tmp437_;
27956 ValaCCodeFunctionCall* _tmp438_;
27957 ValaCCodeExpression* _tmp439_;
27958 _tmp422_ = vala_ccode_identifier_new ("sizeof");
27959 _tmp423_ = _tmp422_;
27960 _tmp424_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp423_);
27961 _tmp425_ = _tmp424_;
27962 _vala_ccode_node_unref0 (_tmp423_);
27963 csizeof = _tmp425_;
27964 _tmp426_ = csizeof;
27966 _tmp428_ = vala_object_creation_expression_get_type_reference (_tmp427_);
27967 _tmp429_ = _tmp428_;
27968 _tmp430_ = vala_data_type_get_type_arguments (_tmp429_);
27969 _tmp431_ = _tmp430_;
27970 _tmp432_ = vala_list_get (_tmp431_, 0);
27971 _tmp433_ = (ValaDataType*) _tmp432_;
27972 _tmp434_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp433_);
27973 _tmp435_ = _tmp434_;
27974 _tmp436_ = vala_ccode_identifier_new (_tmp435_);
27975 _tmp437_ = _tmp436_;
27976 vala_ccode_function_call_add_argument (_tmp426_, (ValaCCodeExpression*) _tmp437_);
27977 _vala_ccode_node_unref0 (_tmp437_);
27978 _g_free0 (_tmp435_);
27979 _vala_code_node_unref0 (_tmp433_);
27980 _vala_iterable_unref0 (_tmp431_);
27981 _tmp438_ = csizeof;
27982 _tmp439_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp438_);
27983 _vala_ccode_node_unref0 (cexpr);
27985 _vala_ccode_node_unref0 (csizeof);
27988 _tmp442_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp441_);
27990 ValaParameter* _tmp443_;
27991 ValaDataType* _tmp444_;
27992 ValaDataType* _tmp445_;
27994 _tmp444_ = vala_variable_get_variable_type ((ValaVariable*) _tmp443_);
27995 _tmp445_ = _tmp444_;
27996 _tmp440_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp445_, VALA_TYPE_ARRAY_TYPE);
28000 _tmp446_ = _tmp440_;
28002 ValaParameter* _tmp447_;
28003 ValaDataType* _tmp448_;
28004 ValaDataType* _tmp449_;
28005 ValaArrayType* _tmp450_;
28006 ValaArrayType* array_type;
28008 _tmp448_ = vala_variable_get_variable_type ((ValaVariable*) _tmp447_);
28009 _tmp449_ = _tmp448_;
28010 _tmp450_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp449_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
28011 array_type = _tmp450_;
28021 ValaArrayType* _tmp455_;
28024 ValaHashMap* _tmp458_;
28025 ValaParameter* _tmp459_;
28026 gdouble _tmp460_ = 0.0;
28029 ValaExpression* _tmp463_;
28031 ValaCCodeExpression* _tmp465_ = NULL;
28032 ValaCCodeExpression* _tmp466_;
28033 _tmp452_ = _tmp451_;
28037 dim = _tmp453_ + 1;
28041 _tmp455_ = array_type;
28042 _tmp456_ = vala_array_type_get_rank (_tmp455_);
28043 _tmp457_ = _tmp456_;
28044 if (!(_tmp454_ <= _tmp457_)) {
28047 _tmp458_ = carg_map;
28049 _tmp460_ = vala_ccode_base_module_get_ccode_array_length_pos ((ValaCodeNode*) _tmp459_);
28051 _tmp462_ = vala_ccode_base_module_get_param_pos (self, _tmp460_ + (0.01 * _tmp461_), FALSE);
28054 _tmp465_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp463_, _tmp464_);
28055 _tmp466_ = _tmp465_;
28056 vala_map_set ((ValaMap*) _tmp458_, (gpointer) ((gintptr) _tmp462_), _tmp466_);
28057 _vala_ccode_node_unref0 (_tmp466_);
28061 _vala_code_node_unref0 (array_type);
28063 ValaParameter* _tmp467_;
28064 ValaDataType* _tmp468_;
28065 ValaDataType* _tmp469_;
28067 _tmp468_ = vala_variable_get_variable_type ((ValaVariable*) _tmp467_);
28068 _tmp469_ = _tmp468_;
28069 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp469_, VALA_TYPE_DELEGATE_TYPE)) {
28070 ValaParameter* _tmp470_;
28071 ValaDataType* _tmp471_;
28072 ValaDataType* _tmp472_;
28073 ValaDelegateType* _tmp473_;
28074 ValaDelegateType* deleg_type;
28075 ValaDelegateType* _tmp474_;
28076 ValaDelegate* _tmp475_;
28077 ValaDelegate* _tmp476_;
28078 ValaDelegate* _tmp477_;
28080 ValaDelegate* _tmp478_;
28084 _tmp471_ = vala_variable_get_variable_type ((ValaVariable*) _tmp470_);
28085 _tmp472_ = _tmp471_;
28086 _tmp473_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp472_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
28087 deleg_type = _tmp473_;
28088 _tmp474_ = deleg_type;
28089 _tmp475_ = vala_delegate_type_get_delegate_symbol (_tmp474_);
28090 _tmp476_ = _tmp475_;
28091 _tmp477_ = _vala_code_node_ref0 (_tmp476_);
28094 _tmp479_ = vala_delegate_get_has_target (_tmp478_);
28095 _tmp480_ = _tmp479_;
28097 ValaCCodeExpression* delegate_target_destroy_notify = NULL;
28098 ValaExpression* _tmp481_;
28099 ValaCCodeExpression* _tmp482_ = NULL;
28100 ValaCCodeExpression* _tmp483_ = NULL;
28101 ValaCCodeExpression* delegate_target;
28102 ValaHashMap* _tmp484_;
28103 ValaParameter* _tmp485_;
28104 gdouble _tmp486_ = 0.0;
28106 ValaCCodeExpression* _tmp488_;
28107 ValaDelegateType* _tmp489_;
28111 _tmp483_ = vala_ccode_base_module_get_delegate_target_cexpression (self, _tmp481_, &_tmp482_);
28112 _vala_ccode_node_unref0 (delegate_target_destroy_notify);
28113 delegate_target_destroy_notify = _tmp482_;
28114 delegate_target = _tmp483_;
28115 _tmp484_ = carg_map;
28117 _tmp486_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp485_);
28118 _tmp487_ = vala_ccode_base_module_get_param_pos (self, _tmp486_, FALSE);
28119 _tmp488_ = delegate_target;
28120 vala_map_set ((ValaMap*) _tmp484_, (gpointer) ((gintptr) _tmp487_), _tmp488_);
28121 _tmp489_ = deleg_type;
28122 _tmp490_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp489_);
28123 _tmp491_ = _tmp490_;
28125 ValaHashMap* _tmp492_;
28126 ValaParameter* _tmp493_;
28127 gdouble _tmp494_ = 0.0;
28129 ValaCCodeExpression* _tmp496_;
28130 _tmp492_ = carg_map;
28132 _tmp494_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp493_);
28133 _tmp495_ = vala_ccode_base_module_get_param_pos (self, _tmp494_ + 0.01, FALSE);
28134 _tmp496_ = delegate_target_destroy_notify;
28135 vala_map_set ((ValaMap*) _tmp492_, (gpointer) ((gintptr) _tmp495_), _tmp496_);
28137 _vala_ccode_node_unref0 (delegate_target);
28138 _vala_ccode_node_unref0 (delegate_target_destroy_notify);
28140 _vala_code_node_unref0 (d);
28141 _vala_code_node_unref0 (deleg_type);
28147 _tmp500_ = vala_ccode_base_module_handle_struct_argument (self, _tmp497_, _tmp498_, _tmp499_);
28148 _vala_ccode_node_unref0 (cexpr);
28151 _tmp502_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp501_);
28152 _tmp503_ = _tmp502_;
28153 _tmp504_ = _tmp503_ != NULL;
28154 _g_free0 (_tmp503_);
28156 ValaCCodeExpression* _tmp505_;
28157 ValaParameter* _tmp506_;
28158 gchar* _tmp507_ = NULL;
28160 ValaCCodeCastExpression* _tmp509_;
28163 _tmp507_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp506_);
28164 _tmp508_ = _tmp507_;
28165 _tmp509_ = vala_ccode_cast_expression_new (_tmp505_, _tmp508_);
28166 _vala_ccode_node_unref0 (cexpr);
28167 cexpr = (ValaCCodeExpression*) _tmp509_;
28168 _g_free0 (_tmp508_);
28171 ValaExpression* _tmp510_;
28172 ValaCCodeExpression* _tmp511_;
28173 ValaCCodeExpression* _tmp512_ = NULL;
28176 _tmp512_ = vala_ccode_base_module_handle_struct_argument (self, NULL, _tmp510_, _tmp511_);
28177 _vala_ccode_node_unref0 (cexpr);
28181 _tmp514_ = vala_ccode_base_module_get_ccode_pos (_tmp513_);
28182 _tmp515_ = ellipsis;
28183 _tmp516_ = vala_ccode_base_module_get_param_pos (self, _tmp514_, _tmp515_);
28184 arg_pos = _tmp516_;
28186 ValaExpression* _tmp517_;
28187 ValaCCodeExpression* _tmp518_;
28188 ValaCCodeExpression* _tmp519_ = NULL;
28194 _tmp519_ = vala_ccode_base_module_handle_struct_argument (self, NULL, _tmp517_, _tmp518_);
28195 _vala_ccode_node_unref0 (cexpr);
28198 _tmp521_ = ellipsis;
28199 _tmp522_ = vala_ccode_base_module_get_param_pos (self, (gdouble) _tmp520_, _tmp521_);
28200 arg_pos = _tmp522_;
28202 _tmp523_ = carg_map;
28203 _tmp524_ = arg_pos;
28205 vala_map_set ((ValaMap*) _tmp523_, (gpointer) ((gintptr) _tmp524_), _tmp525_);
28208 _vala_code_node_unref0 (param);
28209 _vala_map_unref0 (carg_map);
28210 _vala_ccode_node_unref0 (cexpr);
28211 _vala_code_node_unref0 (arg);
28213 _vala_iterable_unref0 (_arg_list);
28215 _tmp527_ = params_it;
28216 _tmp528_ = vala_iterator_next (_tmp527_);
28218 ValaIterator* _tmp529_;
28219 gpointer _tmp530_ = NULL;
28220 ValaParameter* param;
28221 gboolean _tmp531_ = FALSE;
28222 ValaParameter* _tmp532_;
28226 _tmp529_ = params_it;
28227 _tmp530_ = vala_iterator_get (_tmp529_);
28228 param = (ValaParameter*) _tmp530_;
28230 _tmp533_ = vala_parameter_get_params_array (_tmp532_);
28231 _tmp534_ = _tmp533_;
28235 ValaParameter* _tmp535_;
28239 _tmp536_ = vala_parameter_get_ellipsis (_tmp535_);
28240 _tmp537_ = _tmp536_;
28241 _tmp531_ = _tmp537_;
28243 _tmp538_ = _tmp531_;
28244 _vala_assert (_tmp538_, "param.params_array || param.ellipsis");
28246 _vala_code_node_unref0 (param);
28249 _tmp540_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp539_);
28250 _tmp541_ = _tmp540_;
28252 ValaHashMap* _tmp542_;
28254 ValaCCodeExpression* _tmp544_ = NULL;
28255 ValaCCodeExpression* _tmp545_;
28256 ValaCCodeUnaryExpression* _tmp546_;
28257 ValaCCodeUnaryExpression* _tmp547_;
28258 vala_ccode_base_module_set_current_method_inner_error (self, TRUE);
28259 _tmp542_ = out_arg_map;
28260 _tmp543_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), FALSE);
28261 _tmp544_ = vala_ccode_base_module_get_variable_cexpression (self, "_inner_error_");
28262 _tmp545_ = _tmp544_;
28263 _tmp546_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp545_);
28264 _tmp547_ = _tmp546_;
28265 vala_map_set ((ValaMap*) _tmp542_, (gpointer) ((gintptr) _tmp543_), (ValaCCodeExpression*) _tmp547_);
28266 _vala_ccode_node_unref0 (_tmp547_);
28267 _vala_ccode_node_unref0 (_tmp545_);
28269 _tmp548_ = ellipsis;
28271 ValaMethod* _tmp549_;
28273 if (_tmp549_ == NULL) {
28274 ValaHashMap* _tmp550_;
28276 ValaCCodeConstant* _tmp552_;
28277 ValaCCodeConstant* _tmp553_;
28278 _tmp550_ = in_arg_map;
28279 _tmp551_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), TRUE);
28280 _tmp552_ = vala_ccode_constant_new ("NULL");
28281 _tmp553_ = _tmp552_;
28282 vala_map_set ((ValaMap*) _tmp550_, (gpointer) ((gintptr) _tmp551_), (ValaCCodeExpression*) _tmp553_);
28283 _vala_ccode_node_unref0 (_tmp553_);
28285 gboolean _tmp554_ = FALSE;
28286 gboolean _tmp555_ = FALSE;
28287 ValaMethod* _tmp556_;
28293 _tmp557_ = vala_method_get_printf_format (_tmp556_);
28294 _tmp558_ = _tmp557_;
28296 ValaMethod* _tmp559_;
28300 _tmp560_ = vala_method_get_scanf_format (_tmp559_);
28301 _tmp561_ = _tmp560_;
28302 _tmp555_ = !_tmp561_;
28306 _tmp562_ = _tmp555_;
28308 ValaMethod* _tmp563_;
28309 gchar* _tmp564_ = NULL;
28312 _tmp564_ = vala_ccode_base_module_get_ccode_sentinel (_tmp563_);
28313 _tmp565_ = _tmp564_;
28314 _tmp554_ = g_strcmp0 (_tmp565_, "") != 0;
28315 _g_free0 (_tmp565_);
28319 _tmp566_ = _tmp554_;
28321 ValaHashMap* _tmp567_;
28323 ValaMethod* _tmp569_;
28324 gchar* _tmp570_ = NULL;
28326 ValaCCodeConstant* _tmp572_;
28327 ValaCCodeConstant* _tmp573_;
28328 _tmp567_ = in_arg_map;
28329 _tmp568_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), TRUE);
28331 _tmp570_ = vala_ccode_base_module_get_ccode_sentinel (_tmp569_);
28332 _tmp571_ = _tmp570_;
28333 _tmp572_ = vala_ccode_constant_new (_tmp571_);
28334 _tmp573_ = _tmp572_;
28335 vala_map_set ((ValaMap*) _tmp567_, (gpointer) ((gintptr) _tmp568_), (ValaCCodeExpression*) _tmp573_);
28336 _vala_ccode_node_unref0 (_tmp573_);
28337 _g_free0 (_tmp571_);
28342 if (_tmp576_ != NULL) {
28343 ValaStruct* _tmp577_;
28344 gboolean _tmp578_ = FALSE;
28346 _tmp578_ = vala_struct_is_simple_type (_tmp577_);
28347 _tmp575_ = !_tmp578_;
28351 _tmp579_ = _tmp575_;
28353 ValaMethod* _tmp580_;
28354 gdouble _tmp581_ = 0.0;
28356 _tmp581_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp580_);
28357 _tmp574_ = _tmp581_ < ((gdouble) 0);
28361 _tmp582_ = _tmp574_;
28363 ValaHashMap* _tmp583_;
28365 ValaCCodeExpression* _tmp585_;
28366 ValaCCodeUnaryExpression* _tmp586_;
28367 ValaCCodeUnaryExpression* _tmp587_;
28368 _tmp583_ = out_arg_map;
28369 _tmp584_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-3), FALSE);
28370 _tmp585_ = instance;
28371 _tmp586_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp585_);
28372 _tmp587_ = _tmp586_;
28373 vala_map_set ((ValaMap*) _tmp583_, (gpointer) ((gintptr) _tmp584_), (ValaCCodeExpression*) _tmp587_);
28374 _vala_ccode_node_unref0 (_tmp587_);
28377 if (_tmp589_ != NULL) {
28378 ValaMethod* _tmp590_;
28382 _tmp591_ = vala_method_get_coroutine (_tmp590_);
28383 _tmp592_ = _tmp591_;
28384 _tmp588_ = _tmp592_;
28388 _tmp593_ = _tmp588_;
28390 ValaObjectCreationExpression* _tmp594_;
28394 _tmp595_ = vala_object_creation_expression_get_is_yield_expression (_tmp594_);
28395 _tmp596_ = _tmp595_;
28397 ValaHashMap* _tmp597_;
28399 ValaMethod* _tmp599_;
28400 ValaMethod* _tmp600_;
28401 gchar* _tmp601_ = NULL;
28403 ValaCCodeIdentifier* _tmp603_;
28404 ValaCCodeIdentifier* _tmp604_;
28405 ValaHashMap* _tmp605_;
28407 ValaCCodeIdentifier* _tmp607_;
28408 ValaCCodeIdentifier* _tmp608_;
28409 _tmp597_ = in_arg_map;
28410 _tmp598_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), FALSE);
28411 _tmp599_ = vala_ccode_base_module_get_current_method (self);
28412 _tmp600_ = _tmp599_;
28413 _tmp601_ = vala_ccode_base_module_generate_ready_function (self, _tmp600_);
28414 _tmp602_ = _tmp601_;
28415 _tmp603_ = vala_ccode_identifier_new (_tmp602_);
28416 _tmp604_ = _tmp603_;
28417 vala_map_set ((ValaMap*) _tmp597_, (gpointer) ((gintptr) _tmp598_), (ValaCCodeExpression*) _tmp604_);
28418 _vala_ccode_node_unref0 (_tmp604_);
28419 _g_free0 (_tmp602_);
28420 _tmp605_ = in_arg_map;
28421 _tmp606_ = vala_ccode_base_module_get_param_pos (self, -0.9, FALSE);
28422 _tmp607_ = vala_ccode_identifier_new ("_data_");
28423 _tmp608_ = _tmp607_;
28424 vala_map_set ((ValaMap*) _tmp605_, (gpointer) ((gintptr) _tmp606_), (ValaCCodeExpression*) _tmp608_);
28425 _vala_ccode_node_unref0 (_tmp608_);
28428 _tmp609_ = async_call;
28429 _tmp610_ = creation_call;
28430 if (_tmp609_ != _tmp610_) {
28434 ValaCCodeFunctionCall* _tmp631_;
28435 ValaHashMap* _tmp632_;
28437 gpointer _tmp634_ = NULL;
28438 ValaCCodeExpression* _tmp635_;
28442 ValaHashMap* _tmp611_;
28443 ValaSet* _tmp612_ = NULL;
28445 ValaIterator* _tmp614_ = NULL;
28446 ValaIterator* _tmp615_;
28447 ValaIterator* _pos_it;
28448 _tmp611_ = out_arg_map;
28449 _tmp612_ = vala_map_get_keys ((ValaMap*) _tmp611_);
28450 _tmp613_ = _tmp612_;
28451 _tmp614_ = vala_iterable_iterator ((ValaIterable*) _tmp613_);
28452 _tmp615_ = _tmp614_;
28453 _vala_iterable_unref0 (_tmp613_);
28454 _pos_it = _tmp615_;
28456 ValaIterator* _tmp616_;
28457 gboolean _tmp617_ = FALSE;
28458 ValaIterator* _tmp618_;
28459 gpointer _tmp619_ = NULL;
28461 gboolean _tmp620_ = FALSE;
28465 _tmp616_ = _pos_it;
28466 _tmp617_ = vala_iterator_next (_tmp616_);
28470 _tmp618_ = _pos_it;
28471 _tmp619_ = vala_iterator_get (_tmp618_);
28472 pos = (gint) ((gintptr) _tmp619_);
28474 _tmp622_ = last_pos;
28475 if (_tmp621_ > _tmp622_) {
28476 gboolean _tmp623_ = FALSE;
28479 _tmp624_ = min_pos;
28480 if (_tmp624_ == (-1)) {
28486 _tmp626_ = min_pos;
28487 _tmp623_ = _tmp625_ < _tmp626_;
28489 _tmp627_ = _tmp623_;
28490 _tmp620_ = _tmp627_;
28494 _tmp628_ = _tmp620_;
28498 min_pos = _tmp629_;
28501 _vala_iterator_unref0 (_pos_it);
28503 _tmp630_ = min_pos;
28504 if (_tmp630_ == (-1)) {
28507 _tmp631_ = creation_call;
28508 _tmp632_ = out_arg_map;
28509 _tmp633_ = min_pos;
28510 _tmp634_ = vala_map_get ((ValaMap*) _tmp632_, (gpointer) ((gintptr) _tmp633_));
28511 _tmp635_ = (ValaCCodeExpression*) _tmp634_;
28512 vala_ccode_function_call_add_argument (_tmp631_, _tmp635_);
28513 _vala_ccode_node_unref0 (_tmp635_);
28514 _tmp636_ = min_pos;
28515 last_pos = _tmp636_;
28518 _tmp637_ = async_call;
28519 if (_tmp637_ != NULL) {
28523 ValaCCodeFunctionCall* _tmp658_;
28524 ValaHashMap* _tmp659_;
28526 gpointer _tmp661_ = NULL;
28527 ValaCCodeExpression* _tmp662_;
28531 ValaHashMap* _tmp638_;
28532 ValaSet* _tmp639_ = NULL;
28534 ValaIterator* _tmp641_ = NULL;
28535 ValaIterator* _tmp642_;
28536 ValaIterator* _pos_it;
28537 _tmp638_ = in_arg_map;
28538 _tmp639_ = vala_map_get_keys ((ValaMap*) _tmp638_);
28539 _tmp640_ = _tmp639_;
28540 _tmp641_ = vala_iterable_iterator ((ValaIterable*) _tmp640_);
28541 _tmp642_ = _tmp641_;
28542 _vala_iterable_unref0 (_tmp640_);
28543 _pos_it = _tmp642_;
28545 ValaIterator* _tmp643_;
28546 gboolean _tmp644_ = FALSE;
28547 ValaIterator* _tmp645_;
28548 gpointer _tmp646_ = NULL;
28550 gboolean _tmp647_ = FALSE;
28554 _tmp643_ = _pos_it;
28555 _tmp644_ = vala_iterator_next (_tmp643_);
28559 _tmp645_ = _pos_it;
28560 _tmp646_ = vala_iterator_get (_tmp645_);
28561 pos = (gint) ((gintptr) _tmp646_);
28563 _tmp649_ = last_pos;
28564 if (_tmp648_ > _tmp649_) {
28565 gboolean _tmp650_ = FALSE;
28568 _tmp651_ = min_pos;
28569 if (_tmp651_ == (-1)) {
28575 _tmp653_ = min_pos;
28576 _tmp650_ = _tmp652_ < _tmp653_;
28578 _tmp654_ = _tmp650_;
28579 _tmp647_ = _tmp654_;
28583 _tmp655_ = _tmp647_;
28587 min_pos = _tmp656_;
28590 _vala_iterator_unref0 (_pos_it);
28592 _tmp657_ = min_pos;
28593 if (_tmp657_ == (-1)) {
28596 _tmp658_ = async_call;
28597 _tmp659_ = in_arg_map;
28598 _tmp660_ = min_pos;
28599 _tmp661_ = vala_map_get ((ValaMap*) _tmp659_, (gpointer) ((gintptr) _tmp660_));
28600 _tmp662_ = (ValaCCodeExpression*) _tmp661_;
28601 vala_ccode_function_call_add_argument (_tmp658_, _tmp662_);
28602 _vala_ccode_node_unref0 (_tmp662_);
28603 _tmp663_ = min_pos;
28604 last_pos = _tmp663_;
28608 _tmp665_ = vala_object_creation_expression_get_is_yield_expression (_tmp664_);
28609 _tmp666_ = _tmp665_;
28613 ValaCCodeFunction* _tmp668_;
28614 ValaCCodeFunction* _tmp669_;
28615 ValaCCodeIdentifier* _tmp670_;
28616 ValaCCodeIdentifier* _tmp671_;
28617 ValaCCodeMemberAccess* _tmp672_;
28618 ValaCCodeMemberAccess* _tmp673_;
28620 gchar* _tmp675_ = NULL;
28622 ValaCCodeConstant* _tmp677_;
28623 ValaCCodeConstant* _tmp678_;
28624 ValaCCodeFunction* _tmp679_;
28625 ValaCCodeFunction* _tmp680_;
28626 ValaCCodeFunctionCall* _tmp681_;
28627 ValaCCodeFunction* _tmp682_;
28628 ValaCCodeFunction* _tmp683_;
28629 ValaCCodeConstant* _tmp684_;
28630 ValaCCodeConstant* _tmp685_;
28631 ValaCCodeFunction* _tmp686_;
28632 ValaCCodeFunction* _tmp687_;
28634 gchar* _tmp689_ = NULL;
28636 _tmp667_ = self->next_coroutine_state;
28637 self->next_coroutine_state = _tmp667_ + 1;
28639 _tmp668_ = vala_ccode_base_module_get_ccode (self);
28640 _tmp669_ = _tmp668_;
28641 _tmp670_ = vala_ccode_identifier_new ("_data_");
28642 _tmp671_ = _tmp670_;
28643 _tmp672_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp671_, "_state_");
28644 _tmp673_ = _tmp672_;
28646 _tmp675_ = g_strdup_printf ("%i", _tmp674_);
28647 _tmp676_ = _tmp675_;
28648 _tmp677_ = vala_ccode_constant_new (_tmp676_);
28649 _tmp678_ = _tmp677_;
28650 vala_ccode_function_add_assignment (_tmp669_, (ValaCCodeExpression*) _tmp673_, (ValaCCodeExpression*) _tmp678_);
28651 _vala_ccode_node_unref0 (_tmp678_);
28652 _g_free0 (_tmp676_);
28653 _vala_ccode_node_unref0 (_tmp673_);
28654 _vala_ccode_node_unref0 (_tmp671_);
28655 _tmp679_ = vala_ccode_base_module_get_ccode (self);
28656 _tmp680_ = _tmp679_;
28657 _tmp681_ = async_call;
28658 vala_ccode_function_add_expression (_tmp680_, (ValaCCodeExpression*) _tmp681_);
28659 _tmp682_ = vala_ccode_base_module_get_ccode (self);
28660 _tmp683_ = _tmp682_;
28661 _tmp684_ = vala_ccode_constant_new ("FALSE");
28662 _tmp685_ = _tmp684_;
28663 vala_ccode_function_add_return (_tmp683_, (ValaCCodeExpression*) _tmp685_);
28664 _vala_ccode_node_unref0 (_tmp685_);
28665 _tmp686_ = vala_ccode_base_module_get_ccode (self);
28666 _tmp687_ = _tmp686_;
28668 _tmp689_ = g_strdup_printf ("_state_%d", _tmp688_);
28669 _tmp690_ = _tmp689_;
28670 vala_ccode_function_add_label (_tmp687_, _tmp690_);
28671 _g_free0 (_tmp690_);
28673 _tmp691_ = creation_call;
28674 _tmp692_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp691_);
28675 _vala_ccode_node_unref0 (creation_expr);
28676 creation_expr = _tmp692_;
28678 _tmp694_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp693_);
28679 _tmp695_ = _tmp694_;
28680 _tmp696_ = _tmp695_ != NULL;
28681 _g_free0 (_tmp695_);
28683 ValaCCodeExpression* _tmp697_;
28684 ValaObjectCreationExpression* _tmp698_;
28685 ValaDataType* _tmp699_;
28686 ValaDataType* _tmp700_;
28687 gchar* _tmp701_ = NULL;
28689 ValaCCodeCastExpression* _tmp703_;
28690 _tmp697_ = creation_expr;
28692 _tmp699_ = vala_object_creation_expression_get_type_reference (_tmp698_);
28693 _tmp700_ = _tmp699_;
28694 _tmp701_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp700_);
28695 _tmp702_ = _tmp701_;
28696 _tmp703_ = vala_ccode_cast_expression_new (_tmp697_, _tmp702_);
28697 _vala_ccode_node_unref0 (creation_expr);
28698 creation_expr = (ValaCCodeExpression*) _tmp703_;
28699 _g_free0 (_tmp702_);
28701 _vala_iterator_unref0 (params_it);
28702 _vala_map_unref0 (out_arg_map);
28703 _vala_map_unref0 (in_arg_map);
28704 _vala_code_node_unref0 (cl);
28705 _vala_ccode_node_unref0 (finish_call);
28706 _vala_ccode_node_unref0 (async_call);
28707 _vala_ccode_node_unref0 (creation_call);
28708 _vala_iterable_unref0 (params);
28709 _vala_code_node_unref0 (m);
28711 ValaObjectCreationExpression* _tmp704_;
28712 ValaSymbol* _tmp705_;
28713 ValaSymbol* _tmp706_;
28715 _tmp705_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp704_);
28716 _tmp706_ = _tmp705_;
28717 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp706_, VALA_TYPE_ERROR_CODE)) {
28718 ValaObjectCreationExpression* _tmp707_;
28719 ValaSymbol* _tmp708_;
28720 ValaSymbol* _tmp709_;
28721 ValaErrorCode* _tmp710_;
28722 ValaErrorCode* ecode;
28723 ValaErrorCode* _tmp711_;
28724 ValaSymbol* _tmp712_;
28725 ValaSymbol* _tmp713_;
28726 ValaErrorDomain* _tmp714_;
28727 ValaErrorDomain* edomain;
28728 ValaCCodeFunctionCall* creation_call = NULL;
28729 ValaErrorDomain* _tmp715_;
28730 ValaCCodeFile* _tmp716_;
28731 ValaObjectCreationExpression* _tmp717_;
28732 ValaList* _tmp718_ = NULL;
28733 ValaList* _tmp719_;
28737 ValaCCodeFunctionCall* _tmp729_;
28738 ValaErrorDomain* _tmp730_;
28739 gchar* _tmp731_ = NULL;
28741 ValaCCodeIdentifier* _tmp733_;
28742 ValaCCodeIdentifier* _tmp734_;
28743 ValaCCodeFunctionCall* _tmp735_;
28744 ValaErrorCode* _tmp736_;
28745 gchar* _tmp737_ = NULL;
28747 ValaCCodeIdentifier* _tmp739_;
28748 ValaCCodeIdentifier* _tmp740_;
28749 ValaCCodeFunctionCall* _tmp756_;
28750 ValaCCodeExpression* _tmp757_;
28752 _tmp708_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp707_);
28753 _tmp709_ = _tmp708_;
28754 _tmp710_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp709_, VALA_TYPE_ERROR_CODE, ValaErrorCode));
28757 _tmp712_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp711_);
28758 _tmp713_ = _tmp712_;
28759 _tmp714_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp713_, VALA_TYPE_ERROR_DOMAIN, ValaErrorDomain));
28760 edomain = _tmp714_;
28761 _tmp715_ = edomain;
28762 _tmp716_ = self->cfile;
28763 vala_ccode_base_module_generate_error_domain_declaration (self, _tmp715_, _tmp716_);
28765 _tmp718_ = vala_object_creation_expression_get_argument_list (_tmp717_);
28766 _tmp719_ = _tmp718_;
28767 _tmp720_ = vala_collection_get_size ((ValaCollection*) _tmp719_);
28768 _tmp721_ = _tmp720_;
28769 _tmp722_ = _tmp721_ == 1;
28770 _vala_iterable_unref0 (_tmp719_);
28772 ValaCCodeIdentifier* _tmp723_;
28773 ValaCCodeIdentifier* _tmp724_;
28774 ValaCCodeFunctionCall* _tmp725_;
28775 _tmp723_ = vala_ccode_identifier_new ("g_error_new_literal");
28776 _tmp724_ = _tmp723_;
28777 _tmp725_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp724_);
28778 _vala_ccode_node_unref0 (creation_call);
28779 creation_call = _tmp725_;
28780 _vala_ccode_node_unref0 (_tmp724_);
28782 ValaCCodeIdentifier* _tmp726_;
28783 ValaCCodeIdentifier* _tmp727_;
28784 ValaCCodeFunctionCall* _tmp728_;
28785 _tmp726_ = vala_ccode_identifier_new ("g_error_new");
28786 _tmp727_ = _tmp726_;
28787 _tmp728_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp727_);
28788 _vala_ccode_node_unref0 (creation_call);
28789 creation_call = _tmp728_;
28790 _vala_ccode_node_unref0 (_tmp727_);
28792 _tmp729_ = creation_call;
28793 _tmp730_ = edomain;
28794 _tmp731_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp730_, NULL);
28795 _tmp732_ = _tmp731_;
28796 _tmp733_ = vala_ccode_identifier_new (_tmp732_);
28797 _tmp734_ = _tmp733_;
28798 vala_ccode_function_call_add_argument (_tmp729_, (ValaCCodeExpression*) _tmp734_);
28799 _vala_ccode_node_unref0 (_tmp734_);
28800 _g_free0 (_tmp732_);
28801 _tmp735_ = creation_call;
28803 _tmp737_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp736_);
28804 _tmp738_ = _tmp737_;
28805 _tmp739_ = vala_ccode_identifier_new (_tmp738_);
28806 _tmp740_ = _tmp739_;
28807 vala_ccode_function_call_add_argument (_tmp735_, (ValaCCodeExpression*) _tmp740_);
28808 _vala_ccode_node_unref0 (_tmp740_);
28809 _g_free0 (_tmp738_);
28811 ValaObjectCreationExpression* _tmp741_;
28812 ValaList* _tmp742_ = NULL;
28813 ValaList* _arg_list;
28814 ValaList* _tmp743_;
28820 _tmp742_ = vala_object_creation_expression_get_argument_list (_tmp741_);
28821 _arg_list = _tmp742_;
28822 _tmp743_ = _arg_list;
28823 _tmp744_ = vala_collection_get_size ((ValaCollection*) _tmp743_);
28824 _tmp745_ = _tmp744_;
28825 _arg_size = _tmp745_;
28831 ValaList* _tmp749_;
28833 gpointer _tmp751_ = NULL;
28834 ValaExpression* arg;
28835 ValaCCodeFunctionCall* _tmp752_;
28836 ValaExpression* _tmp753_;
28837 ValaCCodeExpression* _tmp754_ = NULL;
28838 ValaCCodeExpression* _tmp755_;
28839 _tmp746_ = _arg_index;
28840 _arg_index = _tmp746_ + 1;
28841 _tmp747_ = _arg_index;
28842 _tmp748_ = _arg_size;
28843 if (!(_tmp747_ < _tmp748_)) {
28846 _tmp749_ = _arg_list;
28847 _tmp750_ = _arg_index;
28848 _tmp751_ = vala_list_get (_tmp749_, _tmp750_);
28849 arg = (ValaExpression*) _tmp751_;
28850 _tmp752_ = creation_call;
28852 _tmp754_ = vala_ccode_base_module_get_cvalue (self, _tmp753_);
28853 _tmp755_ = _tmp754_;
28854 vala_ccode_function_call_add_argument (_tmp752_, _tmp755_);
28855 _vala_ccode_node_unref0 (_tmp755_);
28856 _vala_code_node_unref0 (arg);
28858 _vala_iterable_unref0 (_arg_list);
28860 _tmp756_ = creation_call;
28861 _tmp757_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp756_);
28862 _vala_ccode_node_unref0 (creation_expr);
28863 creation_expr = _tmp757_;
28864 _vala_ccode_node_unref0 (creation_call);
28865 _vala_code_node_unref0 (edomain);
28866 _vala_code_node_unref0 (ecode);
28868 _vala_assert (FALSE, "false");
28874 _tmp759_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp758_);
28875 _tmp760_ = _tmp759_;
28876 _tmp761_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp760_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp760_) : NULL);
28879 if (_tmp763_ != NULL) {
28880 ValaLocalVariable* _tmp764_;
28881 ValaLocalVariable* _tmp765_;
28882 ValaExpression* _tmp766_;
28883 ValaExpression* _tmp767_;
28884 gboolean _tmp768_ = FALSE;
28887 _tmp766_ = vala_variable_get_initializer ((ValaVariable*) _tmp765_);
28888 _tmp767_ = _tmp766_;
28889 _tmp768_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp764_, _tmp767_);
28890 _tmp762_ = _tmp768_;
28894 _tmp769_ = _tmp762_;
28896 ValaCCodeFunction* _tmp770_;
28897 ValaCCodeFunction* _tmp771_;
28898 ValaCCodeExpression* _tmp772_;
28899 ValaObjectCreationExpression* _tmp773_;
28900 ValaCCodeExpression* _tmp774_;
28901 _tmp770_ = vala_ccode_base_module_get_ccode (self);
28902 _tmp771_ = _tmp770_;
28903 _tmp772_ = creation_expr;
28904 vala_ccode_function_add_expression (_tmp771_, _tmp772_);
28906 _tmp774_ = instance;
28907 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp773_, _tmp774_);
28909 ValaCCodeExpression* _tmp775_;
28910 _tmp775_ = instance;
28911 if (_tmp775_ != NULL) {
28912 ValaObjectCreationExpression* _tmp776_;
28913 ValaDataType* _tmp777_;
28914 ValaDataType* _tmp778_;
28915 ValaTypeSymbol* _tmp779_;
28916 ValaTypeSymbol* _tmp780_;
28917 ValaObjectCreationExpression* _tmp853_;
28918 ValaCCodeExpression* _tmp854_;
28920 _tmp777_ = vala_object_creation_expression_get_type_reference (_tmp776_);
28921 _tmp778_ = _tmp777_;
28922 _tmp779_ = vala_data_type_get_data_type (_tmp778_);
28923 _tmp780_ = _tmp779_;
28924 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp780_, VALA_TYPE_STRUCT)) {
28925 ValaCCodeFunction* _tmp781_;
28926 ValaCCodeFunction* _tmp782_;
28927 ValaCCodeExpression* _tmp783_;
28928 _tmp781_ = vala_ccode_base_module_get_ccode (self);
28929 _tmp782_ = _tmp781_;
28930 _tmp783_ = creation_expr;
28931 vala_ccode_function_add_expression (_tmp782_, _tmp783_);
28933 ValaCCodeFunction* _tmp784_;
28934 ValaCCodeFunction* _tmp785_;
28935 ValaCCodeExpression* _tmp786_;
28936 ValaCCodeExpression* _tmp787_;
28937 _tmp784_ = vala_ccode_base_module_get_ccode (self);
28938 _tmp785_ = _tmp784_;
28939 _tmp786_ = instance;
28940 _tmp787_ = creation_expr;
28941 vala_ccode_function_add_assignment (_tmp785_, _tmp786_, _tmp787_);
28944 ValaObjectCreationExpression* _tmp788_;
28945 ValaList* _tmp789_ = NULL;
28946 ValaList* _init_list;
28947 ValaList* _tmp790_;
28953 _tmp789_ = vala_object_creation_expression_get_object_initializer (_tmp788_);
28954 _init_list = _tmp789_;
28955 _tmp790_ = _init_list;
28956 _tmp791_ = vala_collection_get_size ((ValaCollection*) _tmp790_);
28957 _tmp792_ = _tmp791_;
28958 _init_size = _tmp792_;
28964 ValaList* _tmp796_;
28966 gpointer _tmp798_ = NULL;
28967 ValaMemberInitializer* init;
28968 ValaMemberInitializer* _tmp799_;
28969 ValaSymbol* _tmp800_;
28970 ValaSymbol* _tmp801_;
28971 _tmp793_ = _init_index;
28972 _init_index = _tmp793_ + 1;
28973 _tmp794_ = _init_index;
28974 _tmp795_ = _init_size;
28975 if (!(_tmp794_ < _tmp795_)) {
28978 _tmp796_ = _init_list;
28979 _tmp797_ = _init_index;
28980 _tmp798_ = vala_list_get (_tmp796_, _tmp797_);
28981 init = (ValaMemberInitializer*) _tmp798_;
28983 _tmp800_ = vala_member_initializer_get_symbol_reference (_tmp799_);
28984 _tmp801_ = _tmp800_;
28985 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp801_, VALA_TYPE_FIELD)) {
28986 ValaMemberInitializer* _tmp802_;
28987 ValaSymbol* _tmp803_;
28988 ValaSymbol* _tmp804_;
28989 ValaField* _tmp805_;
28991 ValaField* _tmp806_;
28992 ValaSymbol* _tmp807_;
28993 ValaSymbol* _tmp808_;
28994 ValaDataType* _tmp809_ = NULL;
28995 ValaDataType* instance_target_type;
28996 ValaObjectCreationExpression* _tmp810_;
28997 ValaDataType* _tmp811_;
28998 ValaDataType* _tmp812_;
28999 ValaCCodeExpression* _tmp813_;
29000 ValaGLibValue* _tmp814_;
29001 ValaGLibValue* _tmp815_;
29002 ValaDataType* _tmp816_;
29003 ValaMemberInitializer* _tmp817_;
29004 ValaTargetValue* _tmp818_ = NULL;
29005 ValaTargetValue* _tmp819_;
29006 ValaTargetValue* typed_inst;
29007 ValaField* _tmp820_;
29008 ValaTargetValue* _tmp821_;
29009 ValaMemberInitializer* _tmp822_;
29010 ValaExpression* _tmp823_;
29011 ValaExpression* _tmp824_;
29012 ValaTargetValue* _tmp825_;
29013 ValaTargetValue* _tmp826_;
29014 ValaField* _tmp827_;
29015 ValaSymbol* _tmp828_;
29016 ValaSymbol* _tmp829_;
29017 ValaClass* _tmp830_;
29019 ValaClass* _tmp831_;
29021 _tmp803_ = vala_member_initializer_get_symbol_reference (_tmp802_);
29022 _tmp804_ = _tmp803_;
29023 _tmp805_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp804_, VALA_TYPE_FIELD, ValaField));
29026 _tmp807_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp806_);
29027 _tmp808_ = _tmp807_;
29028 _tmp809_ = vala_ccode_base_module_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp808_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
29029 instance_target_type = _tmp809_;
29031 _tmp811_ = vala_object_creation_expression_get_type_reference (_tmp810_);
29032 _tmp812_ = _tmp811_;
29033 _tmp813_ = instance;
29034 _tmp814_ = vala_glib_value_new (_tmp812_, _tmp813_, TRUE);
29035 _tmp815_ = _tmp814_;
29036 _tmp816_ = instance_target_type;
29038 _tmp818_ = vala_ccode_base_module_transform_value (self, (ValaTargetValue*) _tmp815_, _tmp816_, (ValaCodeNode*) _tmp817_);
29039 _tmp819_ = _tmp818_;
29040 _vala_target_value_unref0 (_tmp815_);
29041 typed_inst = _tmp819_;
29043 _tmp821_ = typed_inst;
29045 _tmp823_ = vala_member_initializer_get_initializer (_tmp822_);
29046 _tmp824_ = _tmp823_;
29047 _tmp825_ = vala_expression_get_target_value (_tmp824_);
29048 _tmp826_ = _tmp825_;
29049 vala_code_generator_store_field ((ValaCodeGenerator*) self, _tmp820_, _tmp821_, _tmp826_);
29051 _tmp828_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp827_);
29052 _tmp829_ = _tmp828_;
29053 _tmp830_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp829_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp829_) : NULL);
29056 if (_tmp831_ != NULL) {
29057 ValaClass* _tmp832_;
29058 ValaCCodeFile* _tmp833_;
29060 _tmp833_ = self->cfile;
29061 vala_ccode_base_module_generate_class_struct_declaration (self, _tmp832_, _tmp833_);
29063 _vala_code_node_unref0 (cl);
29064 _vala_target_value_unref0 (typed_inst);
29065 _vala_code_node_unref0 (instance_target_type);
29066 _vala_code_node_unref0 (f);
29068 ValaMemberInitializer* _tmp834_;
29069 ValaSymbol* _tmp835_;
29070 ValaSymbol* _tmp836_;
29072 _tmp835_ = vala_member_initializer_get_symbol_reference (_tmp834_);
29073 _tmp836_ = _tmp835_;
29074 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp836_, VALA_TYPE_PROPERTY)) {
29075 ValaMemberAccess* _tmp837_;
29076 ValaMemberAccess* inst_ma;
29077 ValaMemberAccess* _tmp838_;
29078 ValaObjectCreationExpression* _tmp839_;
29079 ValaDataType* _tmp840_;
29080 ValaDataType* _tmp841_;
29081 ValaMemberAccess* _tmp842_;
29082 ValaCCodeExpression* _tmp843_;
29083 ValaMemberInitializer* _tmp844_;
29084 ValaSymbol* _tmp845_;
29085 ValaSymbol* _tmp846_;
29086 ValaMemberAccess* _tmp847_;
29087 ValaMemberInitializer* _tmp848_;
29088 ValaExpression* _tmp849_;
29089 ValaExpression* _tmp850_;
29090 ValaTargetValue* _tmp851_;
29091 ValaTargetValue* _tmp852_;
29092 _tmp837_ = vala_member_access_new_simple ("new", NULL);
29093 inst_ma = _tmp837_;
29094 _tmp838_ = inst_ma;
29096 _tmp840_ = vala_object_creation_expression_get_type_reference (_tmp839_);
29097 _tmp841_ = _tmp840_;
29098 vala_expression_set_value_type ((ValaExpression*) _tmp838_, _tmp841_);
29099 _tmp842_ = inst_ma;
29100 _tmp843_ = instance;
29101 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp842_, _tmp843_);
29103 _tmp845_ = vala_member_initializer_get_symbol_reference (_tmp844_);
29104 _tmp846_ = _tmp845_;
29105 _tmp847_ = inst_ma;
29107 _tmp849_ = vala_member_initializer_get_initializer (_tmp848_);
29108 _tmp850_ = _tmp849_;
29109 _tmp851_ = vala_expression_get_target_value (_tmp850_);
29110 _tmp852_ = _tmp851_;
29111 vala_ccode_base_module_store_property (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp846_, VALA_TYPE_PROPERTY, ValaProperty), (ValaExpression*) _tmp847_, _tmp852_);
29112 _vala_code_node_unref0 (inst_ma);
29115 _vala_code_node_unref0 (init);
29117 _vala_iterable_unref0 (_init_list);
29120 _tmp854_ = instance;
29121 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp853_, _tmp854_);
29123 ValaCCodeExpression* _tmp855_;
29124 _tmp855_ = creation_expr;
29125 if (_tmp855_ != NULL) {
29126 ValaObjectCreationExpression* _tmp856_;
29127 ValaDataType* _tmp857_;
29128 ValaDataType* _tmp858_;
29129 ValaObjectCreationExpression* _tmp859_;
29130 ValaTargetValue* _tmp860_ = NULL;
29131 ValaTargetValue* temp_value;
29132 ValaCCodeFunction* _tmp861_;
29133 ValaCCodeFunction* _tmp862_;
29134 ValaTargetValue* _tmp863_;
29135 ValaCCodeExpression* _tmp864_ = NULL;
29136 ValaCCodeExpression* _tmp865_;
29137 ValaCCodeExpression* _tmp866_;
29138 ValaObjectCreationExpression* _tmp867_;
29139 ValaTargetValue* _tmp868_;
29140 ValaCodeContext* _tmp869_;
29144 _tmp857_ = vala_expression_get_value_type ((ValaExpression*) _tmp856_);
29145 _tmp858_ = _tmp857_;
29147 _tmp860_ = vala_ccode_base_module_create_temp_value (self, _tmp858_, FALSE, (ValaCodeNode*) _tmp859_, NULL);
29148 temp_value = _tmp860_;
29149 _tmp861_ = vala_ccode_base_module_get_ccode (self);
29150 _tmp862_ = _tmp861_;
29151 _tmp863_ = temp_value;
29152 _tmp864_ = vala_ccode_base_module_get_cvalue_ (self, _tmp863_);
29153 _tmp865_ = _tmp864_;
29154 _tmp866_ = creation_expr;
29155 vala_ccode_function_add_assignment (_tmp862_, _tmp865_, _tmp866_);
29156 _vala_ccode_node_unref0 (_tmp865_);
29158 _tmp868_ = temp_value;
29159 vala_expression_set_target_value ((ValaExpression*) _tmp867_, _tmp868_);
29160 _tmp869_ = self->priv->_context;
29161 _tmp870_ = vala_code_context_get_gobject_tracing (_tmp869_);
29162 _tmp871_ = _tmp870_;
29164 ValaObjectCreationExpression* _tmp872_;
29165 ValaDataType* _tmp873_;
29166 ValaDataType* _tmp874_;
29167 ValaTypeSymbol* _tmp875_;
29168 ValaTypeSymbol* _tmp876_;
29169 ValaClass* _tmp877_;
29171 gboolean _tmp878_ = FALSE;
29172 ValaClass* _tmp879_;
29175 _tmp873_ = vala_object_creation_expression_get_type_reference (_tmp872_);
29176 _tmp874_ = _tmp873_;
29177 _tmp875_ = vala_data_type_get_data_type (_tmp874_);
29178 _tmp876_ = _tmp875_;
29179 _tmp877_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp876_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp876_) : NULL);
29182 if (_tmp879_ != NULL) {
29183 ValaClass* _tmp880_;
29184 ValaTypeSymbol* _tmp881_;
29185 gboolean _tmp882_ = FALSE;
29187 _tmp881_ = self->gobject_type;
29188 _tmp882_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp880_, _tmp881_);
29189 _tmp878_ = _tmp882_;
29193 _tmp883_ = _tmp878_;
29195 ValaCCodeFunction* _tmp884_;
29196 ValaCCodeFunction* _tmp885_;
29197 ValaObjectCreationExpression* _tmp886_;
29198 ValaTargetValue* _tmp887_;
29199 ValaTargetValue* _tmp888_;
29200 ValaCCodeExpression* _tmp889_ = NULL;
29201 ValaCCodeExpression* _tmp890_;
29202 ValaCCodeIdentifier* _tmp891_;
29203 ValaCCodeIdentifier* _tmp892_;
29204 ValaCCodeFunctionCall* _tmp893_;
29205 ValaCCodeFunctionCall* _tmp894_;
29206 ValaCCodeFunctionCall* set_data_call;
29207 ValaCCodeFunctionCall* _tmp895_;
29208 ValaObjectCreationExpression* _tmp896_;
29209 ValaTargetValue* _tmp897_;
29210 ValaTargetValue* _tmp898_;
29211 ValaCCodeExpression* _tmp899_ = NULL;
29212 ValaCCodeExpression* _tmp900_;
29213 ValaCCodeCastExpression* _tmp901_;
29214 ValaCCodeCastExpression* _tmp902_;
29215 ValaCCodeFunctionCall* _tmp903_;
29216 ValaCCodeConstant* _tmp904_;
29217 ValaCCodeConstant* _tmp905_;
29220 ValaMethod* _tmp907_;
29221 ValaMethod* _tmp908_;
29222 ValaCCodeFunctionCall* _tmp917_;
29223 const gchar* _tmp918_;
29224 gchar* _tmp919_ = NULL;
29226 ValaCCodeConstant* _tmp921_;
29227 ValaCCodeConstant* _tmp922_;
29228 ValaCCodeFunction* _tmp923_;
29229 ValaCCodeFunction* _tmp924_;
29230 ValaCCodeFunctionCall* _tmp925_;
29231 ValaCCodeFunction* _tmp926_;
29232 ValaCCodeFunction* _tmp927_;
29233 _tmp884_ = vala_ccode_base_module_get_ccode (self);
29234 _tmp885_ = _tmp884_;
29236 _tmp887_ = vala_expression_get_target_value ((ValaExpression*) _tmp886_);
29237 _tmp888_ = _tmp887_;
29238 _tmp889_ = vala_ccode_base_module_get_cvalue_ (self, _tmp888_);
29239 _tmp890_ = _tmp889_;
29240 vala_ccode_function_open_if (_tmp885_, _tmp890_);
29241 _vala_ccode_node_unref0 (_tmp890_);
29242 _tmp891_ = vala_ccode_identifier_new ("g_object_set_data");
29243 _tmp892_ = _tmp891_;
29244 _tmp893_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp892_);
29245 _tmp894_ = _tmp893_;
29246 _vala_ccode_node_unref0 (_tmp892_);
29247 set_data_call = _tmp894_;
29248 _tmp895_ = set_data_call;
29250 _tmp897_ = vala_expression_get_target_value ((ValaExpression*) _tmp896_);
29251 _tmp898_ = _tmp897_;
29252 _tmp899_ = vala_ccode_base_module_get_cvalue_ (self, _tmp898_);
29253 _tmp900_ = _tmp899_;
29254 _tmp901_ = vala_ccode_cast_expression_new (_tmp900_, "GObject *");
29255 _tmp902_ = _tmp901_;
29256 vala_ccode_function_call_add_argument (_tmp895_, (ValaCCodeExpression*) _tmp902_);
29257 _vala_ccode_node_unref0 (_tmp902_);
29258 _vala_ccode_node_unref0 (_tmp900_);
29259 _tmp903_ = set_data_call;
29260 _tmp904_ = vala_ccode_constant_new ("\"vala-creation-function\"");
29261 _tmp905_ = _tmp904_;
29262 vala_ccode_function_call_add_argument (_tmp903_, (ValaCCodeExpression*) _tmp905_);
29263 _vala_ccode_node_unref0 (_tmp905_);
29264 _tmp906_ = g_strdup ("");
29265 func_name = _tmp906_;
29266 _tmp907_ = vala_ccode_base_module_get_current_method (self);
29267 _tmp908_ = _tmp907_;
29268 if (_tmp908_ != NULL) {
29269 ValaMethod* _tmp909_;
29270 ValaMethod* _tmp910_;
29271 gchar* _tmp911_ = NULL;
29272 _tmp909_ = vala_ccode_base_module_get_current_method (self);
29273 _tmp910_ = _tmp909_;
29274 _tmp911_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp910_);
29275 _g_free0 (func_name);
29276 func_name = _tmp911_;
29278 ValaPropertyAccessor* _tmp912_;
29279 ValaPropertyAccessor* _tmp913_;
29280 _tmp912_ = vala_ccode_base_module_get_current_property_accessor (self);
29281 _tmp913_ = _tmp912_;
29282 if (_tmp913_ != NULL) {
29283 ValaPropertyAccessor* _tmp914_;
29284 ValaPropertyAccessor* _tmp915_;
29285 gchar* _tmp916_ = NULL;
29286 _tmp914_ = vala_ccode_base_module_get_current_property_accessor (self);
29287 _tmp915_ = _tmp914_;
29288 _tmp916_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp915_);
29289 _g_free0 (func_name);
29290 func_name = _tmp916_;
29293 _tmp917_ = set_data_call;
29294 _tmp918_ = func_name;
29295 _tmp919_ = g_strdup_printf ("\"%s\"", _tmp918_);
29296 _tmp920_ = _tmp919_;
29297 _tmp921_ = vala_ccode_constant_new (_tmp920_);
29298 _tmp922_ = _tmp921_;
29299 vala_ccode_function_call_add_argument (_tmp917_, (ValaCCodeExpression*) _tmp922_);
29300 _vala_ccode_node_unref0 (_tmp922_);
29301 _g_free0 (_tmp920_);
29302 _tmp923_ = vala_ccode_base_module_get_ccode (self);
29303 _tmp924_ = _tmp923_;
29304 _tmp925_ = set_data_call;
29305 vala_ccode_function_add_expression (_tmp924_, (ValaCCodeExpression*) _tmp925_);
29306 _tmp926_ = vala_ccode_base_module_get_ccode (self);
29307 _tmp927_ = _tmp926_;
29308 vala_ccode_function_close (_tmp927_);
29309 _g_free0 (func_name);
29310 _vala_ccode_node_unref0 (set_data_call);
29312 _vala_code_node_unref0 (cl);
29314 _vala_target_value_unref0 (temp_value);
29319 _tmp929_ = vala_expression_get_target_value ((ValaExpression*) _tmp928_);
29320 _tmp930_ = _tmp929_;
29321 G_TYPE_CHECK_INSTANCE_CAST (_tmp930_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->lvalue = TRUE;
29322 _vala_code_node_unref0 (local);
29323 _vala_code_node_unref0 (st);
29324 _vala_ccode_node_unref0 (creation_expr);
29325 _vala_ccode_node_unref0 (instance);
29329 ValaCCodeExpression* vala_ccode_base_module_handle_struct_argument (ValaCCodeBaseModule* self, ValaParameter* param, ValaExpression* arg, ValaCCodeExpression* cexpr) {
29330 ValaCCodeExpression* result = NULL;
29331 ValaDataType* type = NULL;
29332 ValaParameter* _tmp0_;
29333 ValaExpression* _tmp9_;
29334 ValaUnaryExpression* _tmp10_;
29335 ValaUnaryExpression* unary;
29336 gboolean _tmp11_ = FALSE;
29337 ValaExpression* _tmp12_;
29338 ValaDataType* _tmp13_;
29339 ValaDataType* _tmp14_;
29341 ValaCCodeExpression* _tmp54_;
29342 ValaCCodeExpression* _tmp55_;
29343 g_return_val_if_fail (self != NULL, NULL);
29344 g_return_val_if_fail (arg != NULL, NULL);
29346 if (_tmp0_ != NULL) {
29347 ValaParameter* _tmp1_;
29348 ValaDataType* _tmp2_;
29349 ValaDataType* _tmp3_;
29350 ValaDataType* _tmp4_;
29352 _tmp2_ = vala_variable_get_variable_type ((ValaVariable*) _tmp1_);
29354 _tmp4_ = _vala_code_node_ref0 (_tmp3_);
29355 _vala_code_node_unref0 (type);
29358 ValaExpression* _tmp5_;
29359 ValaDataType* _tmp6_;
29360 ValaDataType* _tmp7_;
29361 ValaDataType* _tmp8_;
29363 _tmp6_ = vala_expression_get_value_type (_tmp5_);
29365 _tmp8_ = _vala_code_node_ref0 (_tmp7_);
29366 _vala_code_node_unref0 (type);
29370 _tmp10_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_UNARY_EXPRESSION) ? ((ValaUnaryExpression*) _tmp9_) : NULL);
29373 _tmp13_ = vala_expression_get_value_type (_tmp12_);
29375 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, VALA_TYPE_NULL_TYPE)) {
29376 ValaDataType* _tmp15_;
29377 gboolean _tmp16_ = FALSE;
29379 _tmp16_ = vala_data_type_is_real_struct_type (_tmp15_);
29386 gboolean _tmp18_ = FALSE;
29387 gboolean _tmp19_ = FALSE;
29388 ValaUnaryExpression* _tmp20_;
29392 if (_tmp20_ != NULL) {
29393 gboolean _tmp21_ = FALSE;
29394 ValaUnaryExpression* _tmp22_;
29395 ValaUnaryOperator _tmp23_;
29396 ValaUnaryOperator _tmp24_;
29399 _tmp23_ = vala_unary_expression_get_operator (_tmp22_);
29401 if (_tmp24_ == VALA_UNARY_OPERATOR_OUT) {
29404 ValaUnaryExpression* _tmp25_;
29405 ValaUnaryOperator _tmp26_;
29406 ValaUnaryOperator _tmp27_;
29408 _tmp26_ = vala_unary_expression_get_operator (_tmp25_);
29410 _tmp21_ = _tmp27_ == VALA_UNARY_OPERATOR_REF;
29419 ValaDataType* _tmp30_;
29423 _tmp31_ = vala_data_type_get_nullable (_tmp30_);
29425 _tmp18_ = !_tmp32_;
29431 gboolean _tmp34_ = FALSE;
29432 ValaCCodeExpression* _tmp35_;
29435 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_CCODE_IDENTIFIER)) {
29438 ValaCCodeExpression* _tmp36_;
29440 _tmp34_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp36_, VALA_TYPE_CCODE_MEMBER_ACCESS);
29444 ValaCCodeExpression* _tmp38_;
29445 ValaCCodeUnaryExpression* _tmp39_;
29447 _tmp39_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp38_);
29448 result = (ValaCCodeExpression*) _tmp39_;
29449 _vala_code_node_unref0 (unary);
29450 _vala_code_node_unref0 (type);
29453 ValaDataType* _tmp40_;
29454 ValaExpression* _tmp41_;
29455 ValaTargetValue* _tmp42_ = NULL;
29456 ValaTargetValue* temp_value;
29457 ValaCCodeFunction* _tmp43_;
29458 ValaCCodeFunction* _tmp44_;
29459 ValaTargetValue* _tmp45_;
29460 ValaCCodeExpression* _tmp46_ = NULL;
29461 ValaCCodeExpression* _tmp47_;
29462 ValaCCodeExpression* _tmp48_;
29463 ValaTargetValue* _tmp49_;
29464 ValaCCodeExpression* _tmp50_ = NULL;
29465 ValaCCodeExpression* _tmp51_;
29466 ValaCCodeUnaryExpression* _tmp52_;
29467 ValaCCodeExpression* _tmp53_;
29470 _tmp42_ = vala_ccode_base_module_create_temp_value (self, _tmp40_, FALSE, (ValaCodeNode*) _tmp41_, NULL);
29471 temp_value = _tmp42_;
29472 _tmp43_ = vala_ccode_base_module_get_ccode (self);
29474 _tmp45_ = temp_value;
29475 _tmp46_ = vala_ccode_base_module_get_cvalue_ (self, _tmp45_);
29478 vala_ccode_function_add_assignment (_tmp44_, _tmp47_, _tmp48_);
29479 _vala_ccode_node_unref0 (_tmp47_);
29480 _tmp49_ = temp_value;
29481 _tmp50_ = vala_ccode_base_module_get_cvalue_ (self, _tmp49_);
29483 _tmp52_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp51_);
29484 _tmp53_ = (ValaCCodeExpression*) _tmp52_;
29485 _vala_ccode_node_unref0 (_tmp51_);
29487 _vala_target_value_unref0 (temp_value);
29488 _vala_code_node_unref0 (unary);
29489 _vala_code_node_unref0 (type);
29495 _tmp55_ = _vala_ccode_node_ref0 (_tmp54_);
29497 _vala_code_node_unref0 (unary);
29498 _vala_code_node_unref0 (type);
29503 static void vala_ccode_base_module_real_visit_sizeof_expression (ValaCodeVisitor* base, ValaSizeofExpression* expr) {
29504 ValaCCodeBaseModule * self;
29505 ValaSizeofExpression* _tmp0_;
29506 ValaDataType* _tmp1_;
29507 ValaDataType* _tmp2_;
29508 ValaCCodeFile* _tmp3_;
29509 ValaCCodeIdentifier* _tmp4_;
29510 ValaCCodeIdentifier* _tmp5_;
29511 ValaCCodeFunctionCall* _tmp6_;
29512 ValaCCodeFunctionCall* _tmp7_;
29513 ValaCCodeFunctionCall* csizeof;
29514 ValaSizeofExpression* _tmp8_;
29515 ValaDataType* _tmp9_;
29516 ValaDataType* _tmp10_;
29517 gchar* _tmp11_ = NULL;
29519 ValaCCodeIdentifier* _tmp13_;
29520 ValaCCodeIdentifier* _tmp14_;
29521 ValaSizeofExpression* _tmp15_;
29522 self = (ValaCCodeBaseModule*) base;
29523 g_return_if_fail (expr != NULL);
29525 _tmp1_ = vala_sizeof_expression_get_type_reference (_tmp0_);
29527 _tmp3_ = self->cfile;
29528 vala_ccode_base_module_generate_type_declaration (self, _tmp2_, _tmp3_);
29529 _tmp4_ = vala_ccode_identifier_new ("sizeof");
29531 _tmp6_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp5_);
29533 _vala_ccode_node_unref0 (_tmp5_);
29536 _tmp9_ = vala_sizeof_expression_get_type_reference (_tmp8_);
29538 _tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_);
29540 _tmp13_ = vala_ccode_identifier_new (_tmp12_);
29542 vala_ccode_function_call_add_argument (csizeof, (ValaCCodeExpression*) _tmp14_);
29543 _vala_ccode_node_unref0 (_tmp14_);
29544 _g_free0 (_tmp12_);
29546 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp15_, (ValaCCodeExpression*) csizeof);
29547 _vala_ccode_node_unref0 (csizeof);
29551 static void vala_ccode_base_module_real_visit_typeof_expression (ValaCodeVisitor* base, ValaTypeofExpression* expr) {
29552 ValaCCodeBaseModule * self;
29553 ValaTypeofExpression* _tmp0_;
29554 ValaTypeofExpression* _tmp1_;
29555 ValaDataType* _tmp2_;
29556 ValaDataType* _tmp3_;
29557 ValaCCodeExpression* _tmp4_ = NULL;
29558 ValaCCodeExpression* _tmp5_;
29559 self = (ValaCCodeBaseModule*) base;
29560 g_return_if_fail (expr != NULL);
29563 _tmp2_ = vala_typeof_expression_get_type_reference (_tmp1_);
29565 _tmp4_ = vala_ccode_base_module_get_type_id_expression (self, _tmp3_, FALSE);
29567 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, _tmp5_);
29568 _vala_ccode_node_unref0 (_tmp5_);
29572 static void vala_ccode_base_module_real_visit_unary_expression (ValaCodeVisitor* base, ValaUnaryExpression* expr) {
29573 ValaCCodeBaseModule * self;
29574 gboolean _tmp0_ = FALSE;
29575 ValaUnaryExpression* _tmp1_;
29576 ValaUnaryOperator _tmp2_;
29577 ValaUnaryOperator _tmp3_;
29579 ValaCCodeUnaryOperator op = 0;
29580 ValaUnaryExpression* _tmp79_;
29581 ValaUnaryOperator _tmp80_;
29582 ValaUnaryOperator _tmp81_;
29583 ValaUnaryExpression* _tmp97_;
29584 ValaCCodeUnaryOperator _tmp98_;
29585 ValaUnaryExpression* _tmp99_;
29586 ValaExpression* _tmp100_;
29587 ValaExpression* _tmp101_;
29588 ValaCCodeExpression* _tmp102_ = NULL;
29589 ValaCCodeExpression* _tmp103_;
29590 ValaCCodeUnaryExpression* _tmp104_;
29591 ValaCCodeUnaryExpression* _tmp105_;
29592 self = (ValaCCodeBaseModule*) base;
29593 g_return_if_fail (expr != NULL);
29595 _tmp2_ = vala_unary_expression_get_operator (_tmp1_);
29597 if (_tmp3_ == VALA_UNARY_OPERATOR_REF) {
29600 ValaUnaryExpression* _tmp4_;
29601 ValaUnaryOperator _tmp5_;
29602 ValaUnaryOperator _tmp6_;
29604 _tmp5_ = vala_unary_expression_get_operator (_tmp4_);
29606 _tmp0_ = _tmp6_ == VALA_UNARY_OPERATOR_OUT;
29610 ValaUnaryExpression* _tmp8_;
29611 ValaExpression* _tmp9_;
29612 ValaExpression* _tmp10_;
29613 ValaTargetValue* _tmp11_;
29614 ValaTargetValue* _tmp12_;
29615 ValaGLibValue* _tmp13_;
29616 ValaGLibValue* glib_value;
29617 ValaGLibValue* _tmp14_;
29618 ValaDataType* _tmp15_;
29619 ValaDataType* _tmp16_;
29620 ValaGLibValue* _tmp17_;
29621 ValaGLibValue* ref_value;
29622 gboolean _tmp18_ = FALSE;
29623 gboolean _tmp19_ = FALSE;
29624 ValaUnaryExpression* _tmp20_;
29625 ValaDataType* _tmp21_;
29626 ValaDataType* _tmp22_;
29629 ValaGLibValue* _tmp47_;
29631 ValaGLibValue* _tmp65_;
29632 ValaCCodeExpression* _tmp66_;
29633 ValaGLibValue* _tmp71_;
29634 ValaCCodeExpression* _tmp72_;
29635 ValaUnaryExpression* _tmp77_;
29636 ValaGLibValue* _tmp78_;
29638 _tmp9_ = vala_unary_expression_get_inner (_tmp8_);
29640 _tmp11_ = vala_expression_get_target_value (_tmp10_);
29642 _tmp13_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
29643 glib_value = _tmp13_;
29644 _tmp14_ = glib_value;
29645 _tmp15_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp14_);
29647 _tmp17_ = vala_glib_value_new (_tmp16_, NULL, FALSE);
29648 ref_value = _tmp17_;
29650 _tmp21_ = vala_expression_get_target_type ((ValaExpression*) _tmp20_);
29652 if (_tmp22_ != NULL) {
29653 ValaGLibValue* _tmp23_;
29654 ValaDataType* _tmp24_;
29655 ValaDataType* _tmp25_;
29656 gboolean _tmp26_ = FALSE;
29657 _tmp23_ = glib_value;
29658 _tmp24_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp23_);
29660 _tmp26_ = vala_data_type_is_real_struct_type (_tmp25_);
29667 ValaGLibValue* _tmp28_;
29668 ValaDataType* _tmp29_;
29669 ValaDataType* _tmp30_;
29672 ValaUnaryExpression* _tmp33_;
29673 ValaDataType* _tmp34_;
29674 ValaDataType* _tmp35_;
29677 _tmp28_ = glib_value;
29678 _tmp29_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp28_);
29680 _tmp31_ = vala_data_type_get_nullable (_tmp30_);
29683 _tmp34_ = vala_expression_get_target_type ((ValaExpression*) _tmp33_);
29685 _tmp36_ = vala_data_type_get_nullable (_tmp35_);
29687 _tmp18_ = _tmp32_ != _tmp37_;
29693 ValaGLibValue* _tmp39_;
29694 ValaGLibValue* _tmp40_;
29695 ValaCCodeExpression* _tmp41_;
29696 ValaCCodeExpression* _tmp42_;
29697 _tmp39_ = ref_value;
29698 _tmp40_ = glib_value;
29699 _tmp41_ = _tmp40_->cvalue;
29700 _tmp42_ = _vala_ccode_node_ref0 (_tmp41_);
29701 _vala_ccode_node_unref0 (_tmp39_->cvalue);
29702 _tmp39_->cvalue = _tmp42_;
29704 ValaGLibValue* _tmp43_;
29705 ValaGLibValue* _tmp44_;
29706 ValaCCodeExpression* _tmp45_;
29707 ValaCCodeUnaryExpression* _tmp46_;
29708 _tmp43_ = ref_value;
29709 _tmp44_ = glib_value;
29710 _tmp45_ = _tmp44_->cvalue;
29711 _tmp46_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp45_);
29712 _vala_ccode_node_unref0 (_tmp43_->cvalue);
29713 _tmp43_->cvalue = (ValaCCodeExpression*) _tmp46_;
29715 _tmp47_ = glib_value;
29716 _tmp48_ = _tmp47_->array_length_cvalues;
29717 if (_tmp48_ != NULL) {
29727 ValaGLibValue* _tmp53_;
29731 ValaGLibValue* _tmp57_;
29732 ValaGLibValue* _tmp58_;
29735 gpointer _tmp61_ = NULL;
29736 ValaCCodeExpression* _tmp62_;
29737 ValaCCodeUnaryExpression* _tmp63_;
29738 ValaCCodeUnaryExpression* _tmp64_;
29747 _tmp53_ = glib_value;
29748 _tmp54_ = _tmp53_->array_length_cvalues;
29749 _tmp55_ = vala_collection_get_size ((ValaCollection*) _tmp54_);
29751 if (!(_tmp52_ < _tmp56_)) {
29754 _tmp57_ = ref_value;
29755 _tmp58_ = glib_value;
29756 _tmp59_ = _tmp58_->array_length_cvalues;
29758 _tmp61_ = vala_list_get (_tmp59_, _tmp60_);
29759 _tmp62_ = (ValaCCodeExpression*) _tmp61_;
29760 _tmp63_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp62_);
29762 vala_glib_value_append_array_length_cvalue (_tmp57_, (ValaCCodeExpression*) _tmp64_);
29763 _vala_ccode_node_unref0 (_tmp64_);
29764 _vala_ccode_node_unref0 (_tmp62_);
29769 _tmp65_ = glib_value;
29770 _tmp66_ = _tmp65_->delegate_target_cvalue;
29771 if (_tmp66_ != NULL) {
29772 ValaGLibValue* _tmp67_;
29773 ValaGLibValue* _tmp68_;
29774 ValaCCodeExpression* _tmp69_;
29775 ValaCCodeUnaryExpression* _tmp70_;
29776 _tmp67_ = ref_value;
29777 _tmp68_ = glib_value;
29778 _tmp69_ = _tmp68_->delegate_target_cvalue;
29779 _tmp70_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp69_);
29780 _vala_ccode_node_unref0 (_tmp67_->delegate_target_cvalue);
29781 _tmp67_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp70_;
29783 _tmp71_ = glib_value;
29784 _tmp72_ = _tmp71_->delegate_target_destroy_notify_cvalue;
29785 if (_tmp72_ != NULL) {
29786 ValaGLibValue* _tmp73_;
29787 ValaGLibValue* _tmp74_;
29788 ValaCCodeExpression* _tmp75_;
29789 ValaCCodeUnaryExpression* _tmp76_;
29790 _tmp73_ = ref_value;
29791 _tmp74_ = glib_value;
29792 _tmp75_ = _tmp74_->delegate_target_destroy_notify_cvalue;
29793 _tmp76_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp75_);
29794 _vala_ccode_node_unref0 (_tmp73_->delegate_target_destroy_notify_cvalue);
29795 _tmp73_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp76_;
29798 _tmp78_ = ref_value;
29799 vala_expression_set_target_value ((ValaExpression*) _tmp77_, (ValaTargetValue*) _tmp78_);
29800 _vala_target_value_unref0 (ref_value);
29801 _vala_target_value_unref0 (glib_value);
29805 _tmp80_ = vala_unary_expression_get_operator (_tmp79_);
29807 if (_tmp81_ == VALA_UNARY_OPERATOR_PLUS) {
29808 op = VALA_CCODE_UNARY_OPERATOR_PLUS;
29810 ValaUnaryExpression* _tmp82_;
29811 ValaUnaryOperator _tmp83_;
29812 ValaUnaryOperator _tmp84_;
29814 _tmp83_ = vala_unary_expression_get_operator (_tmp82_);
29816 if (_tmp84_ == VALA_UNARY_OPERATOR_MINUS) {
29817 op = VALA_CCODE_UNARY_OPERATOR_MINUS;
29819 ValaUnaryExpression* _tmp85_;
29820 ValaUnaryOperator _tmp86_;
29821 ValaUnaryOperator _tmp87_;
29823 _tmp86_ = vala_unary_expression_get_operator (_tmp85_);
29825 if (_tmp87_ == VALA_UNARY_OPERATOR_LOGICAL_NEGATION) {
29826 op = VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION;
29828 ValaUnaryExpression* _tmp88_;
29829 ValaUnaryOperator _tmp89_;
29830 ValaUnaryOperator _tmp90_;
29832 _tmp89_ = vala_unary_expression_get_operator (_tmp88_);
29834 if (_tmp90_ == VALA_UNARY_OPERATOR_BITWISE_COMPLEMENT) {
29835 op = VALA_CCODE_UNARY_OPERATOR_BITWISE_COMPLEMENT;
29837 ValaUnaryExpression* _tmp91_;
29838 ValaUnaryOperator _tmp92_;
29839 ValaUnaryOperator _tmp93_;
29841 _tmp92_ = vala_unary_expression_get_operator (_tmp91_);
29843 if (_tmp93_ == VALA_UNARY_OPERATOR_INCREMENT) {
29844 op = VALA_CCODE_UNARY_OPERATOR_PREFIX_INCREMENT;
29846 ValaUnaryExpression* _tmp94_;
29847 ValaUnaryOperator _tmp95_;
29848 ValaUnaryOperator _tmp96_;
29850 _tmp95_ = vala_unary_expression_get_operator (_tmp94_);
29852 if (_tmp96_ == VALA_UNARY_OPERATOR_DECREMENT) {
29853 op = VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT;
29855 g_assert_not_reached ();
29865 _tmp100_ = vala_unary_expression_get_inner (_tmp99_);
29866 _tmp101_ = _tmp100_;
29867 _tmp102_ = vala_ccode_base_module_get_cvalue (self, _tmp101_);
29868 _tmp103_ = _tmp102_;
29869 _tmp104_ = vala_ccode_unary_expression_new (_tmp98_, _tmp103_);
29870 _tmp105_ = _tmp104_;
29871 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp97_, (ValaCCodeExpression*) _tmp105_);
29872 _vala_ccode_node_unref0 (_tmp105_);
29873 _vala_ccode_node_unref0 (_tmp103_);
29877 ValaCCodeExpression* vala_ccode_base_module_try_cast_value_to_type (ValaCCodeBaseModule* self, ValaCCodeExpression* ccodeexpr, ValaDataType* from, ValaDataType* to, ValaExpression* expr) {
29878 ValaCCodeExpression* result = NULL;
29879 gboolean _tmp0_ = FALSE;
29880 gboolean _tmp1_ = FALSE;
29881 gboolean _tmp2_ = FALSE;
29882 gboolean _tmp3_ = FALSE;
29883 ValaDataType* _tmp4_;
29888 ValaDataType* _tmp21_;
29889 ValaCCodeIdentifier* _tmp22_ = NULL;
29890 ValaCCodeIdentifier* _tmp23_;
29891 ValaCCodeFunctionCall* _tmp24_;
29892 ValaCCodeFunctionCall* _tmp25_;
29893 ValaCCodeFunctionCall* ccall;
29894 ValaCCodeExpression* gvalue = NULL;
29895 ValaDataType* _tmp26_;
29898 ValaCCodeFunctionCall* _tmp33_;
29899 ValaCCodeExpression* _tmp34_;
29900 ValaCCodeFunctionCall* _tmp35_;
29901 ValaCCodeExpression* _tmp36_;
29902 ValaCCodeExpression* rv;
29903 gboolean _tmp37_ = FALSE;
29904 ValaExpression* _tmp38_;
29906 g_return_val_if_fail (self != NULL, NULL);
29907 g_return_val_if_fail (ccodeexpr != NULL, NULL);
29908 g_return_val_if_fail (from != NULL, NULL);
29909 g_return_val_if_fail (to != NULL, NULL);
29911 if (_tmp4_ == NULL) {
29914 ValaStruct* _tmp5_;
29915 _tmp5_ = self->gvalue_type;
29916 _tmp3_ = _tmp5_ == NULL;
29922 ValaDataType* _tmp7_;
29923 ValaTypeSymbol* _tmp8_;
29924 ValaTypeSymbol* _tmp9_;
29925 ValaStruct* _tmp10_;
29927 _tmp8_ = vala_data_type_get_data_type (_tmp7_);
29929 _tmp10_ = self->gvalue_type;
29930 _tmp2_ = _tmp9_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
29936 ValaDataType* _tmp12_;
29937 ValaTypeSymbol* _tmp13_;
29938 ValaTypeSymbol* _tmp14_;
29939 ValaStruct* _tmp15_;
29941 _tmp13_ = vala_data_type_get_data_type (_tmp12_);
29943 _tmp15_ = self->gvalue_type;
29944 _tmp1_ = _tmp14_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
29950 ValaDataType* _tmp17_;
29951 gchar* _tmp18_ = NULL;
29954 _tmp18_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp17_);
29956 _tmp0_ = g_strcmp0 (_tmp19_, "") == 0;
29957 _g_free0 (_tmp19_);
29965 _tmp22_ = vala_ccode_base_module_get_value_getter_function (self, _tmp21_);
29967 _tmp24_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp23_);
29969 _vala_ccode_node_unref0 (_tmp23_);
29972 _tmp27_ = vala_data_type_get_nullable (_tmp26_);
29975 ValaCCodeExpression* _tmp29_;
29976 ValaCCodeExpression* _tmp30_;
29977 _tmp29_ = ccodeexpr;
29978 _tmp30_ = _vala_ccode_node_ref0 (_tmp29_);
29979 _vala_ccode_node_unref0 (gvalue);
29982 ValaCCodeExpression* _tmp31_;
29983 ValaCCodeUnaryExpression* _tmp32_;
29984 _tmp31_ = ccodeexpr;
29985 _tmp32_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp31_);
29986 _vala_ccode_node_unref0 (gvalue);
29987 gvalue = (ValaCCodeExpression*) _tmp32_;
29991 vala_ccode_function_call_add_argument (_tmp33_, _tmp34_);
29993 _tmp36_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp35_);
29996 if (_tmp38_ != NULL) {
29997 ValaDataType* _tmp39_;
29999 _tmp37_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp39_, VALA_TYPE_ARRAY_TYPE);
30005 ValaCCodeIdentifier* _tmp41_;
30006 ValaCCodeIdentifier* _tmp42_;
30007 ValaCCodeFunctionCall* _tmp43_;
30008 ValaCCodeFunctionCall* _tmp44_;
30009 ValaCCodeFunctionCall* len_call;
30010 ValaCCodeFunctionCall* _tmp45_;
30011 ValaCCodeExpression* _tmp46_;
30012 ValaExpression* _tmp47_;
30013 ValaCCodeFunctionCall* _tmp48_;
30014 _tmp41_ = vala_ccode_identifier_new ("g_strv_length");
30016 _tmp43_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp42_);
30018 _vala_ccode_node_unref0 (_tmp42_);
30019 len_call = _tmp44_;
30020 _tmp45_ = len_call;
30022 vala_ccode_function_call_add_argument (_tmp45_, _tmp46_);
30024 _tmp48_ = len_call;
30025 vala_ccode_base_module_append_array_length (self, _tmp47_, (ValaCCodeExpression*) _tmp48_);
30026 _vala_ccode_node_unref0 (len_call);
30028 ValaDataType* _tmp49_;
30030 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp49_, VALA_TYPE_STRUCT_VALUE_TYPE)) {
30031 ValaCodeNode* _tmp50_ = NULL;
30032 ValaExpression* _tmp51_;
30033 ValaCodeNode* _tmp54_;
30034 ValaCodeNode* _tmp55_;
30035 ValaCodeNode* node;
30036 ValaDataType* _tmp56_;
30037 ValaCodeNode* _tmp57_;
30039 ValaTargetValue* _tmp59_ = NULL;
30040 ValaTargetValue* temp_value;
30041 ValaTargetValue* _tmp60_;
30042 ValaCCodeExpression* _tmp61_ = NULL;
30043 ValaCCodeExpression* ctemp;
30044 ValaCCodeExpression* _tmp62_;
30045 ValaDataType* _tmp63_;
30046 ValaPointerType* _tmp64_;
30047 ValaPointerType* _tmp65_;
30048 gchar* _tmp66_ = NULL;
30050 ValaCCodeCastExpression* _tmp68_;
30051 ValaCCodeCastExpression* _tmp69_;
30052 ValaCCodeUnaryExpression* _tmp70_;
30053 ValaCCodeIdentifier* _tmp71_;
30054 ValaCCodeIdentifier* _tmp72_;
30055 ValaCCodeFunctionCall* _tmp73_;
30056 ValaCCodeFunctionCall* _tmp74_;
30057 ValaCCodeFunctionCall* holds;
30058 ValaCCodeFunctionCall* _tmp75_;
30059 ValaCCodeExpression* _tmp76_;
30060 ValaCCodeFunctionCall* _tmp77_;
30061 ValaDataType* _tmp78_;
30062 gchar* _tmp79_ = NULL;
30064 ValaCCodeIdentifier* _tmp81_;
30065 ValaCCodeIdentifier* _tmp82_;
30066 ValaCCodeFunctionCall* _tmp83_;
30067 ValaCCodeFunctionCall* _tmp84_;
30068 ValaCCodeBinaryExpression* _tmp85_;
30069 ValaCCodeBinaryExpression* cond;
30070 ValaCCodeIdentifier* _tmp86_;
30071 ValaCCodeIdentifier* _tmp87_;
30072 ValaCCodeFunctionCall* _tmp88_;
30073 ValaCCodeFunctionCall* _tmp89_;
30074 ValaCCodeFunctionCall* warn;
30075 ValaCCodeFunctionCall* _tmp90_;
30076 ValaCCodeConstant* _tmp91_;
30077 ValaCCodeConstant* _tmp92_;
30078 ValaCCodeCommaExpression* _tmp93_;
30079 ValaCCodeCommaExpression* fail;
30080 ValaCCodeCommaExpression* _tmp94_;
30081 ValaCCodeFunctionCall* _tmp95_;
30082 ValaCCodeCommaExpression* _tmp96_;
30083 ValaCCodeExpression* _tmp97_;
30084 ValaCCodeBinaryExpression* _tmp98_;
30085 ValaCCodeExpression* _tmp99_;
30086 ValaCCodeCommaExpression* _tmp100_;
30087 ValaCCodeConditionalExpression* _tmp101_;
30089 if (_tmp51_ != NULL) {
30090 ValaExpression* _tmp52_;
30092 _tmp50_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, VALA_TYPE_CODE_NODE, ValaCodeNode);
30094 ValaDataType* _tmp53_;
30096 _tmp50_ = (ValaCodeNode*) _tmp53_;
30099 _tmp55_ = _vala_code_node_ref0 (_tmp54_);
30104 _tmp59_ = vala_ccode_base_module_create_temp_value (self, _tmp56_, TRUE, _tmp57_, &_tmp58_);
30105 temp_value = _tmp59_;
30106 _tmp60_ = temp_value;
30107 _tmp61_ = vala_ccode_base_module_get_cvalue_ (self, _tmp60_);
30111 _tmp64_ = vala_pointer_type_new (_tmp63_, NULL);
30113 _tmp66_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp65_);
30115 _tmp68_ = vala_ccode_cast_expression_new (_tmp62_, _tmp67_);
30117 _tmp70_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp69_);
30118 _vala_ccode_node_unref0 (rv);
30119 rv = (ValaCCodeExpression*) _tmp70_;
30120 _vala_ccode_node_unref0 (_tmp69_);
30121 _g_free0 (_tmp67_);
30122 _vala_code_node_unref0 (_tmp65_);
30123 _tmp71_ = vala_ccode_identifier_new ("G_VALUE_HOLDS");
30125 _tmp73_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp72_);
30127 _vala_ccode_node_unref0 (_tmp72_);
30131 vala_ccode_function_call_add_argument (_tmp75_, _tmp76_);
30134 _tmp79_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp78_);
30136 _tmp81_ = vala_ccode_identifier_new (_tmp80_);
30138 vala_ccode_function_call_add_argument (_tmp77_, (ValaCCodeExpression*) _tmp82_);
30139 _vala_ccode_node_unref0 (_tmp82_);
30140 _g_free0 (_tmp80_);
30143 _tmp85_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_AND, (ValaCCodeExpression*) _tmp83_, (ValaCCodeExpression*) _tmp84_);
30145 _tmp86_ = vala_ccode_identifier_new ("g_warning");
30147 _tmp88_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp87_);
30149 _vala_ccode_node_unref0 (_tmp87_);
30152 _tmp91_ = vala_ccode_constant_new ("\"Invalid GValue unboxing (wrong type or NULL)\"");
30154 vala_ccode_function_call_add_argument (_tmp90_, (ValaCCodeExpression*) _tmp92_);
30155 _vala_ccode_node_unref0 (_tmp92_);
30156 _tmp93_ = vala_ccode_comma_expression_new ();
30160 vala_ccode_comma_expression_append_expression (_tmp94_, (ValaCCodeExpression*) _tmp95_);
30163 vala_ccode_comma_expression_append_expression (_tmp96_, _tmp97_);
30167 _tmp101_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp98_, _tmp99_, (ValaCCodeExpression*) _tmp100_);
30168 _vala_ccode_node_unref0 (rv);
30169 rv = (ValaCCodeExpression*) _tmp101_;
30170 _vala_ccode_node_unref0 (fail);
30171 _vala_ccode_node_unref0 (warn);
30172 _vala_ccode_node_unref0 (cond);
30173 _vala_ccode_node_unref0 (holds);
30174 _vala_ccode_node_unref0 (ctemp);
30175 _vala_target_value_unref0 (temp_value);
30176 _vala_code_node_unref0 (node);
30180 _vala_ccode_node_unref0 (gvalue);
30181 _vala_ccode_node_unref0 (ccall);
30186 ValaTargetValue* vala_ccode_base_module_try_cast_variant_to_type (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaDataType* to, ValaCodeNode* node) {
30187 ValaTargetValue* result = NULL;
30188 gboolean _tmp0_ = FALSE;
30189 gboolean _tmp1_ = FALSE;
30190 ValaTargetValue* _tmp2_;
30191 ValaDataType* _tmp3_;
30192 ValaDataType* _tmp4_;
30197 gchar* _tmp16_ = NULL;
30198 gchar* variant_func;
30199 ValaTargetValue* _tmp17_;
30200 ValaTargetValue* _tmp18_;
30201 ValaTargetValue* variant;
30202 ValaTargetValue* _tmp19_;
30203 ValaDataType* _tmp20_;
30204 ValaDataType* _tmp21_;
30207 const gchar* _tmp34_;
30208 ValaCCodeIdentifier* _tmp35_;
30209 ValaCCodeIdentifier* _tmp36_;
30210 ValaCCodeFunctionCall* _tmp37_;
30211 ValaCCodeFunctionCall* _tmp38_;
30212 ValaCCodeFunctionCall* ccall;
30213 ValaCCodeFunctionCall* _tmp39_;
30214 ValaTargetValue* _tmp40_;
30215 ValaCCodeExpression* _tmp41_ = NULL;
30216 ValaCCodeExpression* _tmp42_;
30217 ValaDataType* _tmp43_;
30218 ValaCodeNode* _tmp44_;
30219 ValaTargetValue* _tmp45_ = NULL;
30220 ValaTargetValue* _result_;
30221 const gchar* _tmp46_;
30222 ValaCCodeFunction* _tmp47_;
30223 ValaCCodeFunction* cfunc;
30224 ValaCCodeFunction* _tmp48_;
30225 ValaCCodeFunction* _tmp49_;
30226 ValaCCodeParameter* _tmp50_;
30227 ValaCCodeParameter* _tmp51_;
30228 ValaDataType* _tmp52_;
30229 gboolean _tmp53_ = FALSE;
30230 ValaDataType* _tmp58_;
30231 gboolean _tmp59_ = FALSE;
30232 ValaDataType* _tmp97_;
30233 gboolean _tmp98_ = FALSE;
30234 ValaCCodeFunction* _tmp108_;
30235 ValaDataType* _tmp109_;
30236 ValaCCodeIdentifier* _tmp110_;
30237 ValaCCodeIdentifier* _tmp111_;
30238 ValaCCodeIdentifier* _tmp112_;
30239 ValaCCodeIdentifier* _tmp113_;
30240 ValaCCodeExpression* _tmp114_ = NULL;
30241 ValaCCodeExpression* _tmp115_;
30242 ValaCCodeExpression* func_result;
30243 ValaDataType* _tmp116_;
30244 gboolean _tmp117_ = FALSE;
30245 ValaCCodeFile* _tmp126_;
30246 ValaCCodeFunction* _tmp127_;
30247 ValaCCodeFile* _tmp128_;
30248 ValaCCodeFunction* _tmp129_;
30249 ValaTargetValue* _tmp130_;
30250 ValaTargetValue* _tmp131_ = NULL;
30251 g_return_val_if_fail (self != NULL, NULL);
30252 g_return_val_if_fail (value != NULL, NULL);
30253 g_return_val_if_fail (to != NULL, NULL);
30255 _tmp3_ = vala_target_value_get_value_type (_tmp2_);
30257 if (_tmp4_ == NULL) {
30261 _tmp5_ = self->gvariant_type;
30262 _tmp1_ = _tmp5_ == NULL;
30268 ValaTargetValue* _tmp7_;
30269 ValaDataType* _tmp8_;
30270 ValaDataType* _tmp9_;
30271 ValaTypeSymbol* _tmp10_;
30272 ValaTypeSymbol* _tmp11_;
30273 ValaClass* _tmp12_;
30275 _tmp8_ = vala_target_value_get_value_type (_tmp7_);
30277 _tmp10_ = vala_data_type_get_data_type (_tmp9_);
30279 _tmp12_ = self->gvariant_type;
30280 _tmp0_ = _tmp11_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
30287 _tmp14_ = self->priv->next_variant_function_id;
30288 self->priv->next_variant_function_id = _tmp14_ + 1;
30289 _tmp15_ = self->priv->next_variant_function_id;
30290 _tmp16_ = g_strdup_printf ("_variant_get%d", _tmp15_);
30291 variant_func = _tmp16_;
30293 _tmp18_ = _vala_target_value_ref0 (_tmp17_);
30296 _tmp20_ = vala_target_value_get_value_type (_tmp19_);
30298 _tmp22_ = vala_data_type_get_value_owned (_tmp21_);
30301 ValaTargetValue* _tmp24_;
30302 ValaCodeNode* _tmp25_;
30303 ValaTargetValue* _tmp26_ = NULL;
30304 ValaTargetValue* temp_value;
30305 ValaArrayList* _tmp27_;
30306 ValaArrayList* _tmp28_;
30307 ValaTargetValue* _tmp29_;
30308 ValaGLibValue* _tmp30_ = NULL;
30309 ValaGLibValue* _tmp31_;
30310 ValaTargetValue* _tmp32_;
30311 ValaTargetValue* _tmp33_;
30314 _tmp26_ = vala_ccode_base_module_store_temp_value (self, _tmp24_, _tmp25_, NULL);
30315 temp_value = _tmp26_;
30316 _tmp27_ = vala_ccode_base_module_get_temp_ref_values (self);
30318 _tmp29_ = temp_value;
30319 _tmp30_ = vala_glib_value_copy (G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
30321 vala_list_insert ((ValaList*) _tmp28_, 0, (ValaTargetValue*) _tmp31_);
30322 _vala_target_value_unref0 (_tmp31_);
30323 _tmp32_ = temp_value;
30324 _tmp33_ = _vala_target_value_ref0 (_tmp32_);
30325 _vala_target_value_unref0 (variant);
30327 _vala_target_value_unref0 (temp_value);
30329 _tmp34_ = variant_func;
30330 _tmp35_ = vala_ccode_identifier_new (_tmp34_);
30332 _tmp37_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp36_);
30334 _vala_ccode_node_unref0 (_tmp36_);
30338 _tmp41_ = vala_ccode_base_module_get_cvalue_ (self, _tmp40_);
30340 vala_ccode_function_call_add_argument (_tmp39_, _tmp42_);
30341 _vala_ccode_node_unref0 (_tmp42_);
30344 _tmp45_ = vala_ccode_base_module_create_temp_value (self, _tmp43_, FALSE, _tmp44_, NULL);
30345 _result_ = _tmp45_;
30346 _tmp46_ = variant_func;
30347 _tmp47_ = vala_ccode_function_new (_tmp46_, "void");
30350 vala_ccode_function_set_modifiers (_tmp48_, VALA_CCODE_MODIFIERS_STATIC);
30352 _tmp50_ = vala_ccode_parameter_new ("value", "GVariant*");
30354 vala_ccode_function_add_parameter (_tmp49_, _tmp51_);
30355 _vala_ccode_node_unref0 (_tmp51_);
30357 _tmp53_ = vala_data_type_is_real_non_null_struct_type (_tmp52_);
30359 ValaCCodeFunction* _tmp54_;
30360 ValaDataType* _tmp55_;
30361 gchar* _tmp56_ = NULL;
30365 _tmp56_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp55_);
30367 vala_ccode_function_set_return_type (_tmp54_, _tmp57_);
30368 _g_free0 (_tmp57_);
30371 _tmp59_ = vala_data_type_is_real_non_null_struct_type (_tmp58_);
30373 ValaCCodeFunction* _tmp60_;
30374 ValaDataType* _tmp61_;
30375 gchar* _tmp62_ = NULL;
30379 ValaCCodeParameter* _tmp66_;
30380 ValaCCodeParameter* _tmp67_;
30381 ValaCCodeFunctionCall* _tmp68_;
30382 ValaTargetValue* _tmp69_;
30383 ValaCCodeExpression* _tmp70_ = NULL;
30384 ValaCCodeExpression* _tmp71_;
30385 ValaCCodeUnaryExpression* _tmp72_;
30386 ValaCCodeUnaryExpression* _tmp73_;
30389 _tmp62_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp61_);
30391 _tmp64_ = g_strconcat (_tmp63_, "*", NULL);
30393 _tmp66_ = vala_ccode_parameter_new ("result", _tmp65_);
30395 vala_ccode_function_add_parameter (_tmp60_, _tmp67_);
30396 _vala_ccode_node_unref0 (_tmp67_);
30397 _g_free0 (_tmp65_);
30398 _g_free0 (_tmp63_);
30400 _tmp69_ = _result_;
30401 _tmp70_ = vala_ccode_base_module_get_cvalue_ (self, _tmp69_);
30403 _tmp72_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp71_);
30405 vala_ccode_function_call_add_argument (_tmp68_, (ValaCCodeExpression*) _tmp73_);
30406 _vala_ccode_node_unref0 (_tmp73_);
30407 _vala_ccode_node_unref0 (_tmp71_);
30409 ValaDataType* _tmp74_;
30411 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp74_, VALA_TYPE_ARRAY_TYPE)) {
30412 ValaDataType* _tmp75_;
30413 ValaArrayType* _tmp76_;
30414 ValaArrayType* array_type;
30416 _tmp76_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp75_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
30417 array_type = _tmp76_;
30427 ValaArrayType* _tmp81_;
30430 ValaCCodeFunctionCall* _tmp84_;
30431 ValaTargetValue* _tmp85_;
30433 ValaCCodeExpression* _tmp87_ = NULL;
30434 ValaCCodeExpression* _tmp88_;
30435 ValaCCodeUnaryExpression* _tmp89_;
30436 ValaCCodeUnaryExpression* _tmp90_;
30437 ValaCCodeFunction* _tmp91_;
30439 gchar* _tmp93_ = NULL;
30441 ValaCCodeParameter* _tmp95_;
30442 ValaCCodeParameter* _tmp96_;
30451 _tmp81_ = array_type;
30452 _tmp82_ = vala_array_type_get_rank (_tmp81_);
30454 if (!(_tmp80_ <= _tmp83_)) {
30458 _tmp85_ = _result_;
30460 _tmp87_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp85_, _tmp86_);
30462 _tmp89_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp88_);
30464 vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp90_);
30465 _vala_ccode_node_unref0 (_tmp90_);
30466 _vala_ccode_node_unref0 (_tmp88_);
30469 _tmp93_ = vala_ccode_base_module_get_array_length_cname (self, "result", _tmp92_);
30471 _tmp95_ = vala_ccode_parameter_new (_tmp94_, "int*");
30473 vala_ccode_function_add_parameter (_tmp91_, _tmp96_);
30474 _vala_ccode_node_unref0 (_tmp96_);
30475 _g_free0 (_tmp94_);
30479 _vala_code_node_unref0 (array_type);
30483 _tmp98_ = vala_data_type_is_real_non_null_struct_type (_tmp97_);
30485 ValaCCodeFunction* _tmp99_;
30486 ValaCCodeFunction* _tmp100_;
30487 ValaTargetValue* _tmp101_;
30488 ValaCCodeExpression* _tmp102_ = NULL;
30489 ValaCCodeExpression* _tmp103_;
30490 ValaCCodeFunctionCall* _tmp104_;
30491 _tmp99_ = vala_ccode_base_module_get_ccode (self);
30492 _tmp100_ = _tmp99_;
30493 _tmp101_ = _result_;
30494 _tmp102_ = vala_ccode_base_module_get_cvalue_ (self, _tmp101_);
30495 _tmp103_ = _tmp102_;
30497 vala_ccode_function_add_assignment (_tmp100_, _tmp103_, (ValaCCodeExpression*) _tmp104_);
30498 _vala_ccode_node_unref0 (_tmp103_);
30500 ValaCCodeFunction* _tmp105_;
30501 ValaCCodeFunction* _tmp106_;
30502 ValaCCodeFunctionCall* _tmp107_;
30503 _tmp105_ = vala_ccode_base_module_get_ccode (self);
30504 _tmp106_ = _tmp105_;
30506 vala_ccode_function_add_expression (_tmp106_, (ValaCCodeExpression*) _tmp107_);
30509 vala_ccode_base_module_push_function (self, _tmp108_);
30511 _tmp110_ = vala_ccode_identifier_new ("value");
30512 _tmp111_ = _tmp110_;
30513 _tmp112_ = vala_ccode_identifier_new ("*result");
30514 _tmp113_ = _tmp112_;
30515 _tmp114_ = vala_ccode_base_module_deserialize_expression (self, _tmp109_, (ValaCCodeExpression*) _tmp111_, (ValaCCodeExpression*) _tmp113_, NULL, NULL);
30516 _tmp115_ = _tmp114_;
30517 _vala_ccode_node_unref0 (_tmp113_);
30518 _vala_ccode_node_unref0 (_tmp111_);
30519 func_result = _tmp115_;
30521 _tmp117_ = vala_data_type_is_real_non_null_struct_type (_tmp116_);
30523 ValaCCodeFunction* _tmp118_;
30524 ValaCCodeFunction* _tmp119_;
30525 ValaCCodeIdentifier* _tmp120_;
30526 ValaCCodeIdentifier* _tmp121_;
30527 ValaCCodeExpression* _tmp122_;
30528 _tmp118_ = vala_ccode_base_module_get_ccode (self);
30529 _tmp119_ = _tmp118_;
30530 _tmp120_ = vala_ccode_identifier_new ("*result");
30531 _tmp121_ = _tmp120_;
30532 _tmp122_ = func_result;
30533 vala_ccode_function_add_assignment (_tmp119_, (ValaCCodeExpression*) _tmp121_, _tmp122_);
30534 _vala_ccode_node_unref0 (_tmp121_);
30536 ValaCCodeFunction* _tmp123_;
30537 ValaCCodeFunction* _tmp124_;
30538 ValaCCodeExpression* _tmp125_;
30539 _tmp123_ = vala_ccode_base_module_get_ccode (self);
30540 _tmp124_ = _tmp123_;
30541 _tmp125_ = func_result;
30542 vala_ccode_function_add_return (_tmp124_, _tmp125_);
30544 vala_ccode_base_module_pop_function (self);
30545 _tmp126_ = self->cfile;
30547 vala_ccode_file_add_function_declaration (_tmp126_, _tmp127_);
30548 _tmp128_ = self->cfile;
30550 vala_ccode_file_add_function (_tmp128_, _tmp129_);
30551 _tmp130_ = _result_;
30552 _tmp131_ = vala_ccode_base_module_load_temp_value (self, _tmp130_);
30554 _vala_ccode_node_unref0 (func_result);
30555 _vala_ccode_node_unref0 (cfunc);
30556 _vala_target_value_unref0 (_result_);
30557 _vala_ccode_node_unref0 (ccall);
30558 _vala_target_value_unref0 (variant);
30559 _g_free0 (variant_func);
30564 static ValaCCodeExpression* vala_ccode_base_module_real_deserialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail) {
30565 gboolean _vala_may_fail = FALSE;
30566 ValaCCodeExpression* result = NULL;
30567 g_return_val_if_fail (type != NULL, NULL);
30568 g_return_val_if_fail (variant_expr != NULL, NULL);
30569 g_assert_not_reached ();
30571 *may_fail = _vala_may_fail;
30577 ValaCCodeExpression* vala_ccode_base_module_deserialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail) {
30578 g_return_val_if_fail (self != NULL, NULL);
30579 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->deserialize_expression (self, type, variant_expr, expr, error_expr, may_fail);
30583 static ValaCCodeExpression* vala_ccode_base_module_real_serialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr) {
30584 ValaCCodeExpression* result = NULL;
30585 g_return_val_if_fail (type != NULL, NULL);
30586 g_return_val_if_fail (expr != NULL, NULL);
30587 g_assert_not_reached ();
30592 ValaCCodeExpression* vala_ccode_base_module_serialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr) {
30593 g_return_val_if_fail (self != NULL, NULL);
30594 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->serialize_expression (self, type, expr);
30598 static void vala_ccode_base_module_real_visit_cast_expression (ValaCodeVisitor* base, ValaCastExpression* expr) {
30599 ValaCCodeBaseModule * self;
30600 ValaCastExpression* _tmp0_;
30601 ValaExpression* _tmp1_;
30602 ValaExpression* _tmp2_;
30603 ValaCCodeExpression* _tmp3_ = NULL;
30604 ValaCCodeExpression* _tmp4_;
30605 ValaCastExpression* _tmp5_;
30606 ValaExpression* _tmp6_;
30607 ValaExpression* _tmp7_;
30608 ValaDataType* _tmp8_;
30609 ValaDataType* _tmp9_;
30610 ValaCastExpression* _tmp10_;
30611 ValaDataType* _tmp11_;
30612 ValaDataType* _tmp12_;
30613 ValaCastExpression* _tmp13_;
30614 ValaCCodeExpression* _tmp14_ = NULL;
30615 ValaCCodeExpression* _tmp15_;
30616 ValaCCodeExpression* valuecast;
30617 ValaCCodeExpression* _tmp16_;
30618 ValaCastExpression* _tmp19_;
30619 ValaExpression* _tmp20_;
30620 ValaExpression* _tmp21_;
30621 ValaTargetValue* _tmp22_;
30622 ValaTargetValue* _tmp23_;
30623 ValaCastExpression* _tmp24_;
30624 ValaDataType* _tmp25_;
30625 ValaDataType* _tmp26_;
30626 ValaCastExpression* _tmp27_;
30627 ValaTargetValue* _tmp28_ = NULL;
30628 ValaTargetValue* variantcast;
30629 ValaTargetValue* _tmp29_;
30630 ValaCastExpression* _tmp32_;
30631 ValaDataType* _tmp33_;
30632 ValaDataType* _tmp34_;
30633 ValaCCodeFile* _tmp35_;
30634 ValaCastExpression* _tmp36_;
30635 ValaDataType* _tmp37_;
30636 ValaDataType* _tmp38_;
30637 ValaTypeSymbol* _tmp39_;
30638 ValaTypeSymbol* _tmp40_;
30639 ValaClass* _tmp41_;
30641 ValaCastExpression* _tmp42_;
30642 ValaDataType* _tmp43_;
30643 ValaDataType* _tmp44_;
30644 ValaTypeSymbol* _tmp45_;
30645 ValaTypeSymbol* _tmp46_;
30646 ValaInterface* _tmp47_;
30647 ValaInterface* iface;
30648 gboolean _tmp48_ = FALSE;
30649 ValaInterface* _tmp49_;
30651 self = (ValaCCodeBaseModule*) base;
30652 g_return_if_fail (expr != NULL);
30654 _tmp1_ = vala_cast_expression_get_inner (_tmp0_);
30656 _tmp3_ = vala_ccode_base_module_get_cvalue (self, _tmp2_);
30659 _tmp6_ = vala_cast_expression_get_inner (_tmp5_);
30661 _tmp8_ = vala_expression_get_value_type (_tmp7_);
30664 _tmp11_ = vala_cast_expression_get_type_reference (_tmp10_);
30667 _tmp14_ = vala_ccode_base_module_try_cast_value_to_type (self, _tmp4_, _tmp9_, _tmp12_, (ValaExpression*) _tmp13_);
30669 _vala_ccode_node_unref0 (_tmp4_);
30670 valuecast = _tmp15_;
30671 _tmp16_ = valuecast;
30672 if (_tmp16_ != NULL) {
30673 ValaCastExpression* _tmp17_;
30674 ValaCCodeExpression* _tmp18_;
30676 _tmp18_ = valuecast;
30677 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp17_, _tmp18_);
30678 _vala_ccode_node_unref0 (valuecast);
30682 _tmp20_ = vala_cast_expression_get_inner (_tmp19_);
30684 _tmp22_ = vala_expression_get_target_value (_tmp21_);
30687 _tmp25_ = vala_cast_expression_get_type_reference (_tmp24_);
30690 _tmp28_ = vala_ccode_base_module_try_cast_variant_to_type (self, _tmp23_, _tmp26_, (ValaCodeNode*) _tmp27_);
30691 variantcast = _tmp28_;
30692 _tmp29_ = variantcast;
30693 if (_tmp29_ != NULL) {
30694 ValaCastExpression* _tmp30_;
30695 ValaTargetValue* _tmp31_;
30697 _tmp31_ = variantcast;
30698 vala_expression_set_target_value ((ValaExpression*) _tmp30_, _tmp31_);
30699 _vala_target_value_unref0 (variantcast);
30700 _vala_ccode_node_unref0 (valuecast);
30704 _tmp33_ = vala_cast_expression_get_type_reference (_tmp32_);
30706 _tmp35_ = self->cfile;
30707 vala_ccode_base_module_generate_type_declaration (self, _tmp34_, _tmp35_);
30709 _tmp37_ = vala_cast_expression_get_type_reference (_tmp36_);
30711 _tmp39_ = vala_data_type_get_data_type (_tmp38_);
30713 _tmp41_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp40_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp40_) : NULL);
30716 _tmp43_ = vala_cast_expression_get_type_reference (_tmp42_);
30718 _tmp45_ = vala_data_type_get_data_type (_tmp44_);
30720 _tmp47_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp46_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp46_) : NULL);
30723 if (_tmp49_ != NULL) {
30726 gboolean _tmp50_ = FALSE;
30727 ValaClass* _tmp51_;
30730 if (_tmp51_ != NULL) {
30731 ValaClass* _tmp52_;
30735 _tmp53_ = vala_class_get_is_compact (_tmp52_);
30737 _tmp50_ = !_tmp54_;
30746 ValaCastExpression* _tmp57_;
30750 _tmp58_ = vala_cast_expression_get_is_silent_cast (_tmp57_);
30753 ValaCastExpression* _tmp60_;
30754 ValaExpression* _tmp61_;
30755 ValaExpression* _tmp62_;
30756 ValaCCodeExpression* _tmp63_ = NULL;
30757 ValaCCodeExpression* cexpr;
30758 ValaCCodeExpression* _tmp64_;
30759 ValaCastExpression* _tmp65_;
30760 ValaDataType* _tmp66_;
30761 ValaDataType* _tmp67_;
30762 ValaCCodeExpression* _tmp68_ = NULL;
30763 ValaCCodeExpression* ccheck;
30764 ValaCCodeExpression* _tmp69_;
30765 ValaCastExpression* _tmp70_;
30766 ValaDataType* _tmp71_;
30767 ValaDataType* _tmp72_;
30768 gchar* _tmp73_ = NULL;
30770 ValaCCodeCastExpression* _tmp75_;
30771 ValaCCodeCastExpression* _tmp76_;
30772 ValaCCodeCastExpression* ccast;
30773 ValaCCodeConstant* _tmp77_;
30774 ValaCCodeConstant* cnull;
30775 ValaCastExpression* _tmp78_;
30776 ValaCCodeExpression* _tmp79_;
30777 ValaCCodeCastExpression* _tmp80_;
30778 ValaCCodeConstant* _tmp81_;
30779 ValaCCodeConditionalExpression* _tmp82_;
30780 ValaCCodeConditionalExpression* _tmp83_;
30782 _tmp61_ = vala_cast_expression_get_inner (_tmp60_);
30784 _tmp63_ = vala_ccode_base_module_get_cvalue (self, _tmp62_);
30788 _tmp66_ = vala_cast_expression_get_type_reference (_tmp65_);
30790 _tmp68_ = vala_ccode_base_module_create_type_check (self, (ValaCCodeNode*) _tmp64_, _tmp67_);
30794 _tmp71_ = vala_cast_expression_get_type_reference (_tmp70_);
30796 _tmp73_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp72_);
30798 _tmp75_ = vala_ccode_cast_expression_new (_tmp69_, _tmp74_);
30800 _g_free0 (_tmp74_);
30802 _tmp77_ = vala_ccode_constant_new ("NULL");
30808 _tmp82_ = vala_ccode_conditional_expression_new (_tmp79_, (ValaCCodeExpression*) _tmp80_, (ValaCCodeExpression*) _tmp81_);
30810 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp78_, (ValaCCodeExpression*) _tmp83_);
30811 _vala_ccode_node_unref0 (_tmp83_);
30812 _vala_ccode_node_unref0 (cnull);
30813 _vala_ccode_node_unref0 (ccast);
30814 _vala_ccode_node_unref0 (ccheck);
30815 _vala_ccode_node_unref0 (cexpr);
30817 ValaCastExpression* _tmp84_;
30818 ValaCastExpression* _tmp85_;
30819 ValaExpression* _tmp86_;
30820 ValaExpression* _tmp87_;
30821 ValaCCodeExpression* _tmp88_ = NULL;
30822 ValaCCodeExpression* _tmp89_;
30823 ValaCastExpression* _tmp90_;
30824 ValaDataType* _tmp91_;
30825 ValaDataType* _tmp92_;
30826 ValaTypeSymbol* _tmp93_;
30827 ValaTypeSymbol* _tmp94_;
30828 ValaCCodeFunctionCall* _tmp95_ = NULL;
30829 ValaCCodeFunctionCall* _tmp96_;
30832 _tmp86_ = vala_cast_expression_get_inner (_tmp85_);
30834 _tmp88_ = vala_ccode_base_module_get_cvalue (self, _tmp87_);
30837 _tmp91_ = vala_cast_expression_get_type_reference (_tmp90_);
30839 _tmp93_ = vala_data_type_get_data_type (_tmp92_);
30841 _tmp95_ = vala_ccode_base_module_generate_instance_cast (self, _tmp89_, _tmp94_);
30843 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp84_, (ValaCCodeExpression*) _tmp96_);
30844 _vala_ccode_node_unref0 (_tmp96_);
30845 _vala_ccode_node_unref0 (_tmp89_);
30848 ValaCastExpression* _tmp97_;
30851 ValaCastExpression* _tmp104_;
30852 ValaDataType* _tmp105_;
30853 ValaDataType* _tmp106_;
30854 ValaArrayType* _tmp107_;
30855 ValaArrayType* array_type;
30856 gboolean _tmp108_ = FALSE;
30857 ValaArrayType* _tmp109_;
30859 ValaCastExpression* _tmp201_;
30860 ValaExpression* _tmp202_;
30861 ValaExpression* _tmp203_;
30862 ValaCCodeExpression* _tmp204_ = NULL;
30863 ValaCCodeExpression* innercexpr;
30864 gboolean _tmp205_ = FALSE;
30865 gboolean _tmp206_ = FALSE;
30866 gboolean _tmp207_ = FALSE;
30867 ValaCastExpression* _tmp208_;
30868 ValaDataType* _tmp209_;
30869 ValaDataType* _tmp210_;
30870 ValaTypeSymbol* _tmp211_;
30871 ValaTypeSymbol* _tmp212_;
30875 ValaCastExpression* _tmp237_;
30876 ValaCCodeExpression* _tmp238_;
30877 ValaCastExpression* _tmp239_;
30878 ValaDataType* _tmp240_;
30879 ValaDataType* _tmp241_;
30880 gchar* _tmp242_ = NULL;
30882 ValaCCodeCastExpression* _tmp244_;
30883 ValaCCodeCastExpression* _tmp245_;
30884 ValaCastExpression* _tmp246_;
30885 ValaDataType* _tmp247_;
30886 ValaDataType* _tmp248_;
30888 _tmp98_ = vala_cast_expression_get_is_silent_cast (_tmp97_);
30891 ValaCastExpression* _tmp100_;
30892 ValaCastExpression* _tmp101_;
30893 ValaSourceReference* _tmp102_;
30894 ValaSourceReference* _tmp103_;
30896 vala_code_node_set_error ((ValaCodeNode*) _tmp100_, TRUE);
30898 _tmp102_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp101_);
30899 _tmp103_ = _tmp102_;
30900 vala_report_error (_tmp103_, "Operation not supported for this type");
30901 _vala_code_node_unref0 (iface);
30902 _vala_code_node_unref0 (cl);
30903 _vala_target_value_unref0 (variantcast);
30904 _vala_ccode_node_unref0 (valuecast);
30908 _tmp105_ = vala_cast_expression_get_type_reference (_tmp104_);
30909 _tmp106_ = _tmp105_;
30910 _tmp107_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp106_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp106_) : NULL);
30911 array_type = _tmp107_;
30912 _tmp109_ = array_type;
30913 if (_tmp109_ != NULL) {
30914 ValaCastExpression* _tmp110_;
30915 ValaExpression* _tmp111_;
30916 ValaExpression* _tmp112_;
30917 ValaDataType* _tmp113_;
30918 ValaDataType* _tmp114_;
30920 _tmp111_ = vala_cast_expression_get_inner (_tmp110_);
30921 _tmp112_ = _tmp111_;
30922 _tmp113_ = vala_expression_get_value_type (_tmp112_);
30923 _tmp114_ = _tmp113_;
30924 _tmp108_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp114_, VALA_TYPE_ARRAY_TYPE);
30928 _tmp115_ = _tmp108_;
30930 gboolean _tmp116_ = FALSE;
30931 ValaArrayType* _tmp117_;
30932 ValaDataType* _tmp118_;
30933 ValaDataType* _tmp119_;
30935 _tmp117_ = array_type;
30936 _tmp118_ = vala_array_type_get_element_type (_tmp117_);
30937 _tmp119_ = _tmp118_;
30938 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp119_, VALA_TYPE_GENERIC_TYPE)) {
30941 ValaCastExpression* _tmp120_;
30942 ValaExpression* _tmp121_;
30943 ValaExpression* _tmp122_;
30944 ValaDataType* _tmp123_;
30945 ValaDataType* _tmp124_;
30946 ValaDataType* _tmp125_;
30947 ValaDataType* _tmp126_;
30949 _tmp121_ = vala_cast_expression_get_inner (_tmp120_);
30950 _tmp122_ = _tmp121_;
30951 _tmp123_ = vala_expression_get_value_type (_tmp122_);
30952 _tmp124_ = _tmp123_;
30953 _tmp125_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp124_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
30954 _tmp126_ = _tmp125_;
30955 _tmp116_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp126_, VALA_TYPE_GENERIC_TYPE);
30957 _tmp127_ = _tmp116_;
30968 ValaArrayType* _tmp132_;
30971 ValaCastExpression* _tmp135_;
30972 ValaCastExpression* _tmp136_;
30973 ValaExpression* _tmp137_;
30974 ValaExpression* _tmp138_;
30976 ValaCCodeExpression* _tmp140_ = NULL;
30977 ValaCCodeExpression* _tmp141_;
30978 _tmp129_ = _tmp128_;
30982 dim = _tmp130_ + 1;
30986 _tmp132_ = array_type;
30987 _tmp133_ = vala_array_type_get_rank (_tmp132_);
30988 _tmp134_ = _tmp133_;
30989 if (!(_tmp131_ <= _tmp134_)) {
30994 _tmp137_ = vala_cast_expression_get_inner (_tmp136_);
30995 _tmp138_ = _tmp137_;
30997 _tmp140_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp138_, _tmp139_);
30998 _tmp141_ = _tmp140_;
30999 vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp135_, _tmp141_);
31000 _vala_ccode_node_unref0 (_tmp141_);
31005 ValaCCodeIdentifier* _tmp142_;
31006 ValaCCodeIdentifier* _tmp143_;
31007 ValaCCodeFunctionCall* _tmp144_;
31008 ValaCCodeFunctionCall* _tmp145_;
31009 ValaCCodeFunctionCall* sizeof_to;
31010 ValaCCodeFunctionCall* _tmp146_;
31011 ValaArrayType* _tmp147_;
31012 ValaDataType* _tmp148_;
31013 ValaDataType* _tmp149_;
31014 gchar* _tmp150_ = NULL;
31016 ValaCCodeConstant* _tmp152_;
31017 ValaCCodeConstant* _tmp153_;
31018 ValaCCodeIdentifier* _tmp154_;
31019 ValaCCodeIdentifier* _tmp155_;
31020 ValaCCodeFunctionCall* _tmp156_;
31021 ValaCCodeFunctionCall* _tmp157_;
31022 ValaCCodeFunctionCall* sizeof_from;
31023 ValaCCodeFunctionCall* _tmp158_;
31024 ValaCastExpression* _tmp159_;
31025 ValaExpression* _tmp160_;
31026 ValaExpression* _tmp161_;
31027 ValaDataType* _tmp162_;
31028 ValaDataType* _tmp163_;
31029 ValaDataType* _tmp164_;
31030 ValaDataType* _tmp165_;
31031 gchar* _tmp166_ = NULL;
31033 ValaCCodeConstant* _tmp168_;
31034 ValaCCodeConstant* _tmp169_;
31035 _tmp142_ = vala_ccode_identifier_new ("sizeof");
31036 _tmp143_ = _tmp142_;
31037 _tmp144_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp143_);
31038 _tmp145_ = _tmp144_;
31039 _vala_ccode_node_unref0 (_tmp143_);
31040 sizeof_to = _tmp145_;
31041 _tmp146_ = sizeof_to;
31042 _tmp147_ = array_type;
31043 _tmp148_ = vala_array_type_get_element_type (_tmp147_);
31044 _tmp149_ = _tmp148_;
31045 _tmp150_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp149_);
31046 _tmp151_ = _tmp150_;
31047 _tmp152_ = vala_ccode_constant_new (_tmp151_);
31048 _tmp153_ = _tmp152_;
31049 vala_ccode_function_call_add_argument (_tmp146_, (ValaCCodeExpression*) _tmp153_);
31050 _vala_ccode_node_unref0 (_tmp153_);
31051 _g_free0 (_tmp151_);
31052 _tmp154_ = vala_ccode_identifier_new ("sizeof");
31053 _tmp155_ = _tmp154_;
31054 _tmp156_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp155_);
31055 _tmp157_ = _tmp156_;
31056 _vala_ccode_node_unref0 (_tmp155_);
31057 sizeof_from = _tmp157_;
31058 _tmp158_ = sizeof_from;
31060 _tmp160_ = vala_cast_expression_get_inner (_tmp159_);
31061 _tmp161_ = _tmp160_;
31062 _tmp162_ = vala_expression_get_value_type (_tmp161_);
31063 _tmp163_ = _tmp162_;
31064 _tmp164_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp163_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
31065 _tmp165_ = _tmp164_;
31066 _tmp166_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp165_);
31067 _tmp167_ = _tmp166_;
31068 _tmp168_ = vala_ccode_constant_new (_tmp167_);
31069 _tmp169_ = _tmp168_;
31070 vala_ccode_function_call_add_argument (_tmp158_, (ValaCCodeExpression*) _tmp169_);
31071 _vala_ccode_node_unref0 (_tmp169_);
31072 _g_free0 (_tmp167_);
31082 ValaArrayType* _tmp174_;
31085 ValaCastExpression* _tmp177_;
31086 ValaCastExpression* _tmp178_;
31087 ValaExpression* _tmp179_;
31088 ValaExpression* _tmp180_;
31090 ValaCCodeExpression* _tmp182_ = NULL;
31091 ValaCCodeExpression* _tmp183_;
31092 ValaCCodeFunctionCall* _tmp184_;
31093 ValaCCodeBinaryExpression* _tmp185_;
31094 ValaCCodeBinaryExpression* _tmp186_;
31095 ValaCCodeFunctionCall* _tmp187_;
31096 ValaCCodeBinaryExpression* _tmp188_;
31097 ValaCCodeBinaryExpression* _tmp189_;
31098 _tmp171_ = _tmp170_;
31102 dim = _tmp172_ + 1;
31106 _tmp174_ = array_type;
31107 _tmp175_ = vala_array_type_get_rank (_tmp174_);
31108 _tmp176_ = _tmp175_;
31109 if (!(_tmp173_ <= _tmp176_)) {
31114 _tmp179_ = vala_cast_expression_get_inner (_tmp178_);
31115 _tmp180_ = _tmp179_;
31117 _tmp182_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp180_, _tmp181_);
31118 _tmp183_ = _tmp182_;
31119 _tmp184_ = sizeof_from;
31120 _tmp185_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, _tmp183_, (ValaCCodeExpression*) _tmp184_);
31121 _tmp186_ = _tmp185_;
31122 _tmp187_ = sizeof_to;
31123 _tmp188_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_DIV, (ValaCCodeExpression*) _tmp186_, (ValaCCodeExpression*) _tmp187_);
31124 _tmp189_ = _tmp188_;
31125 vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp177_, (ValaCCodeExpression*) _tmp189_);
31126 _vala_ccode_node_unref0 (_tmp189_);
31127 _vala_ccode_node_unref0 (_tmp186_);
31128 _vala_ccode_node_unref0 (_tmp183_);
31132 _vala_ccode_node_unref0 (sizeof_from);
31133 _vala_ccode_node_unref0 (sizeof_to);
31136 ValaArrayType* _tmp190_;
31137 _tmp190_ = array_type;
31138 if (_tmp190_ != NULL) {
31148 ValaArrayType* _tmp195_;
31151 ValaCastExpression* _tmp198_;
31152 ValaCCodeConstant* _tmp199_;
31153 ValaCCodeConstant* _tmp200_;
31154 _tmp192_ = _tmp191_;
31158 dim = _tmp193_ + 1;
31162 _tmp195_ = array_type;
31163 _tmp196_ = vala_array_type_get_rank (_tmp195_);
31164 _tmp197_ = _tmp196_;
31165 if (!(_tmp194_ <= _tmp197_)) {
31169 _tmp199_ = vala_ccode_constant_new ("-1");
31170 _tmp200_ = _tmp199_;
31171 vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp198_, (ValaCCodeExpression*) _tmp200_);
31172 _vala_ccode_node_unref0 (_tmp200_);
31179 _tmp202_ = vala_cast_expression_get_inner (_tmp201_);
31180 _tmp203_ = _tmp202_;
31181 _tmp204_ = vala_ccode_base_module_get_cvalue (self, _tmp203_);
31182 innercexpr = _tmp204_;
31184 _tmp209_ = vala_cast_expression_get_type_reference (_tmp208_);
31185 _tmp210_ = _tmp209_;
31186 _tmp211_ = vala_data_type_get_data_type (_tmp210_);
31187 _tmp212_ = _tmp211_;
31188 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp212_, VALA_TYPE_STRUCT)) {
31189 ValaCastExpression* _tmp213_;
31190 ValaDataType* _tmp214_;
31191 ValaDataType* _tmp215_;
31195 _tmp214_ = vala_cast_expression_get_type_reference (_tmp213_);
31196 _tmp215_ = _tmp214_;
31197 _tmp216_ = vala_data_type_get_nullable (_tmp215_);
31198 _tmp217_ = _tmp216_;
31199 _tmp207_ = !_tmp217_;
31203 _tmp218_ = _tmp207_;
31205 ValaCastExpression* _tmp219_;
31206 ValaExpression* _tmp220_;
31207 ValaExpression* _tmp221_;
31208 ValaDataType* _tmp222_;
31209 ValaDataType* _tmp223_;
31210 ValaTypeSymbol* _tmp224_;
31211 ValaTypeSymbol* _tmp225_;
31213 _tmp220_ = vala_cast_expression_get_inner (_tmp219_);
31214 _tmp221_ = _tmp220_;
31215 _tmp222_ = vala_expression_get_value_type (_tmp221_);
31216 _tmp223_ = _tmp222_;
31217 _tmp224_ = vala_data_type_get_data_type (_tmp223_);
31218 _tmp225_ = _tmp224_;
31219 _tmp206_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp225_, VALA_TYPE_STRUCT);
31223 _tmp226_ = _tmp206_;
31225 ValaCastExpression* _tmp227_;
31226 ValaExpression* _tmp228_;
31227 ValaExpression* _tmp229_;
31228 ValaDataType* _tmp230_;
31229 ValaDataType* _tmp231_;
31233 _tmp228_ = vala_cast_expression_get_inner (_tmp227_);
31234 _tmp229_ = _tmp228_;
31235 _tmp230_ = vala_expression_get_value_type (_tmp229_);
31236 _tmp231_ = _tmp230_;
31237 _tmp232_ = vala_data_type_get_nullable (_tmp231_);
31238 _tmp233_ = _tmp232_;
31239 _tmp205_ = _tmp233_;
31243 _tmp234_ = _tmp205_;
31245 ValaCCodeExpression* _tmp235_;
31246 ValaCCodeUnaryExpression* _tmp236_;
31247 _tmp235_ = innercexpr;
31248 _tmp236_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp235_);
31249 _vala_ccode_node_unref0 (innercexpr);
31250 innercexpr = (ValaCCodeExpression*) _tmp236_;
31253 _tmp238_ = innercexpr;
31255 _tmp240_ = vala_cast_expression_get_type_reference (_tmp239_);
31256 _tmp241_ = _tmp240_;
31257 _tmp242_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp241_);
31258 _tmp243_ = _tmp242_;
31259 _tmp244_ = vala_ccode_cast_expression_new (_tmp238_, _tmp243_);
31260 _tmp245_ = _tmp244_;
31261 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp237_, (ValaCCodeExpression*) _tmp245_);
31262 _vala_ccode_node_unref0 (_tmp245_);
31263 _g_free0 (_tmp243_);
31265 _tmp247_ = vala_cast_expression_get_type_reference (_tmp246_);
31266 _tmp248_ = _tmp247_;
31267 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp248_, VALA_TYPE_DELEGATE_TYPE)) {
31268 ValaCastExpression* _tmp249_;
31269 ValaExpression* _tmp250_;
31270 ValaExpression* _tmp251_;
31271 ValaCCodeExpression* _tmp252_ = NULL;
31272 ValaCCodeExpression* _tmp253_;
31274 ValaCastExpression* _tmp264_;
31275 ValaExpression* _tmp265_;
31276 ValaExpression* _tmp266_;
31277 ValaCCodeExpression* _tmp267_ = NULL;
31278 ValaCCodeExpression* _tmp268_;
31281 _tmp250_ = vala_cast_expression_get_inner (_tmp249_);
31282 _tmp251_ = _tmp250_;
31283 _tmp252_ = vala_ccode_base_module_get_delegate_target (self, _tmp251_);
31284 _tmp253_ = _tmp252_;
31285 _tmp254_ = _tmp253_ != NULL;
31286 _vala_ccode_node_unref0 (_tmp253_);
31288 ValaCastExpression* _tmp255_;
31289 ValaCastExpression* _tmp256_;
31290 ValaExpression* _tmp257_;
31291 ValaExpression* _tmp258_;
31292 ValaCCodeExpression* _tmp259_ = NULL;
31293 ValaCCodeExpression* _tmp260_;
31296 _tmp257_ = vala_cast_expression_get_inner (_tmp256_);
31297 _tmp258_ = _tmp257_;
31298 _tmp259_ = vala_ccode_base_module_get_delegate_target (self, _tmp258_);
31299 _tmp260_ = _tmp259_;
31300 vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp255_, _tmp260_);
31301 _vala_ccode_node_unref0 (_tmp260_);
31303 ValaCastExpression* _tmp261_;
31304 ValaCCodeConstant* _tmp262_;
31305 ValaCCodeConstant* _tmp263_;
31307 _tmp262_ = vala_ccode_constant_new ("NULL");
31308 _tmp263_ = _tmp262_;
31309 vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp261_, (ValaCCodeExpression*) _tmp263_);
31310 _vala_ccode_node_unref0 (_tmp263_);
31313 _tmp265_ = vala_cast_expression_get_inner (_tmp264_);
31314 _tmp266_ = _tmp265_;
31315 _tmp267_ = vala_ccode_base_module_get_delegate_target_destroy_notify (self, _tmp266_);
31316 _tmp268_ = _tmp267_;
31317 _tmp269_ = _tmp268_ != NULL;
31318 _vala_ccode_node_unref0 (_tmp268_);
31320 ValaCastExpression* _tmp270_;
31321 ValaCastExpression* _tmp271_;
31322 ValaExpression* _tmp272_;
31323 ValaExpression* _tmp273_;
31324 ValaCCodeExpression* _tmp274_ = NULL;
31325 ValaCCodeExpression* _tmp275_;
31328 _tmp272_ = vala_cast_expression_get_inner (_tmp271_);
31329 _tmp273_ = _tmp272_;
31330 _tmp274_ = vala_ccode_base_module_get_delegate_target_destroy_notify (self, _tmp273_);
31331 _tmp275_ = _tmp274_;
31332 vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp270_, _tmp275_);
31333 _vala_ccode_node_unref0 (_tmp275_);
31335 ValaCastExpression* _tmp276_;
31336 ValaCCodeConstant* _tmp277_;
31337 ValaCCodeConstant* _tmp278_;
31339 _tmp277_ = vala_ccode_constant_new ("NULL");
31340 _tmp278_ = _tmp277_;
31341 vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp276_, (ValaCCodeExpression*) _tmp278_);
31342 _vala_ccode_node_unref0 (_tmp278_);
31345 _vala_ccode_node_unref0 (innercexpr);
31346 _vala_code_node_unref0 (array_type);
31348 _vala_code_node_unref0 (iface);
31349 _vala_code_node_unref0 (cl);
31350 _vala_target_value_unref0 (variantcast);
31351 _vala_ccode_node_unref0 (valuecast);
31355 static void vala_ccode_base_module_real_visit_named_argument (ValaCodeVisitor* base, ValaNamedArgument* expr) {
31356 ValaCCodeBaseModule * self;
31357 ValaNamedArgument* _tmp0_;
31358 ValaNamedArgument* _tmp1_;
31359 ValaExpression* _tmp2_;
31360 ValaExpression* _tmp3_;
31361 ValaCCodeExpression* _tmp4_ = NULL;
31362 ValaCCodeExpression* _tmp5_;
31363 self = (ValaCCodeBaseModule*) base;
31364 g_return_if_fail (expr != NULL);
31367 _tmp2_ = vala_named_argument_get_inner (_tmp1_);
31369 _tmp4_ = vala_ccode_base_module_get_cvalue (self, _tmp3_);
31371 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, _tmp5_);
31372 _vala_ccode_node_unref0 (_tmp5_);
31376 static void vala_ccode_base_module_real_visit_pointer_indirection (ValaCodeVisitor* base, ValaPointerIndirection* expr) {
31377 ValaCCodeBaseModule * self;
31378 ValaPointerIndirection* _tmp0_;
31379 ValaPointerIndirection* _tmp1_;
31380 ValaExpression* _tmp2_;
31381 ValaExpression* _tmp3_;
31382 ValaCCodeExpression* _tmp4_ = NULL;
31383 ValaCCodeExpression* _tmp5_;
31384 ValaCCodeUnaryExpression* _tmp6_;
31385 ValaCCodeUnaryExpression* _tmp7_;
31386 self = (ValaCCodeBaseModule*) base;
31387 g_return_if_fail (expr != NULL);
31390 _tmp2_ = vala_pointer_indirection_get_inner (_tmp1_);
31392 _tmp4_ = vala_ccode_base_module_get_cvalue (self, _tmp3_);
31394 _tmp6_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp5_);
31396 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, (ValaCCodeExpression*) _tmp7_);
31397 _vala_ccode_node_unref0 (_tmp7_);
31398 _vala_ccode_node_unref0 (_tmp5_);
31402 static void vala_ccode_base_module_real_visit_addressof_expression (ValaCodeVisitor* base, ValaAddressofExpression* expr) {
31403 ValaCCodeBaseModule * self;
31404 ValaAddressofExpression* _tmp0_;
31405 ValaAddressofExpression* _tmp1_;
31406 ValaExpression* _tmp2_;
31407 ValaExpression* _tmp3_;
31408 ValaCCodeExpression* _tmp4_ = NULL;
31409 ValaCCodeExpression* _tmp5_;
31410 ValaCCodeUnaryExpression* _tmp6_;
31411 ValaCCodeUnaryExpression* _tmp7_;
31412 self = (ValaCCodeBaseModule*) base;
31413 g_return_if_fail (expr != NULL);
31416 _tmp2_ = vala_addressof_expression_get_inner (_tmp1_);
31418 _tmp4_ = vala_ccode_base_module_get_cvalue (self, _tmp3_);
31420 _tmp6_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp5_);
31422 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp0_, (ValaCCodeExpression*) _tmp7_);
31423 _vala_ccode_node_unref0 (_tmp7_);
31424 _vala_ccode_node_unref0 (_tmp5_);
31428 static void vala_ccode_base_module_real_visit_reference_transfer_expression (ValaCodeVisitor* base, ValaReferenceTransferExpression* expr) {
31429 ValaCCodeBaseModule * self;
31430 ValaReferenceTransferExpression* _tmp0_;
31431 ValaReferenceTransferExpression* _tmp1_;
31432 ValaExpression* _tmp2_;
31433 ValaExpression* _tmp3_;
31434 ValaTargetValue* _tmp4_;
31435 ValaTargetValue* _tmp5_;
31436 ValaReferenceTransferExpression* _tmp6_;
31437 ValaTargetValue* _tmp7_ = NULL;
31438 ValaTargetValue* _tmp8_;
31439 gboolean _tmp9_ = FALSE;
31440 ValaReferenceTransferExpression* _tmp10_;
31441 ValaExpression* _tmp11_;
31442 ValaExpression* _tmp12_;
31443 ValaDataType* _tmp13_;
31444 ValaDataType* _tmp14_;
31446 self = (ValaCCodeBaseModule*) base;
31447 g_return_if_fail (expr != NULL);
31450 _tmp2_ = vala_reference_transfer_expression_get_inner (_tmp1_);
31452 _tmp4_ = vala_expression_get_target_value (_tmp3_);
31455 _tmp7_ = vala_ccode_base_module_store_temp_value (self, _tmp5_, (ValaCodeNode*) _tmp6_, NULL);
31457 vala_expression_set_target_value ((ValaExpression*) _tmp0_, _tmp8_);
31458 _vala_target_value_unref0 (_tmp8_);
31460 _tmp11_ = vala_reference_transfer_expression_get_inner (_tmp10_);
31462 _tmp13_ = vala_expression_get_value_type (_tmp12_);
31464 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, VALA_TYPE_STRUCT_VALUE_TYPE)) {
31465 ValaReferenceTransferExpression* _tmp15_;
31466 ValaExpression* _tmp16_;
31467 ValaExpression* _tmp17_;
31468 ValaDataType* _tmp18_;
31469 ValaDataType* _tmp19_;
31473 _tmp16_ = vala_reference_transfer_expression_get_inner (_tmp15_);
31475 _tmp18_ = vala_expression_get_value_type (_tmp17_);
31477 _tmp20_ = vala_data_type_get_nullable (_tmp19_);
31485 ValaCCodeFile* _tmp23_;
31486 ValaCCodeIdentifier* _tmp24_;
31487 ValaCCodeIdentifier* _tmp25_;
31488 ValaCCodeFunctionCall* _tmp26_;
31489 ValaCCodeFunctionCall* _tmp27_;
31490 ValaCCodeFunctionCall* creation_call;
31491 ValaCCodeFunctionCall* _tmp28_;
31492 ValaReferenceTransferExpression* _tmp29_;
31493 ValaExpression* _tmp30_;
31494 ValaExpression* _tmp31_;
31495 ValaCCodeExpression* _tmp32_ = NULL;
31496 ValaCCodeExpression* _tmp33_;
31497 ValaCCodeUnaryExpression* _tmp34_;
31498 ValaCCodeUnaryExpression* _tmp35_;
31499 ValaCCodeFunctionCall* _tmp36_;
31500 ValaCCodeConstant* _tmp37_;
31501 ValaCCodeConstant* _tmp38_;
31502 ValaCCodeFunctionCall* _tmp39_;
31503 ValaReferenceTransferExpression* _tmp40_;
31504 ValaExpression* _tmp41_;
31505 ValaExpression* _tmp42_;
31506 ValaDataType* _tmp43_;
31507 ValaDataType* _tmp44_;
31508 gchar* _tmp45_ = NULL;
31510 gchar* _tmp47_ = NULL;
31512 ValaCCodeIdentifier* _tmp49_;
31513 ValaCCodeIdentifier* _tmp50_;
31514 ValaCCodeFunction* _tmp51_;
31515 ValaCCodeFunction* _tmp52_;
31516 ValaCCodeFunctionCall* _tmp53_;
31517 _tmp23_ = self->cfile;
31518 vala_ccode_file_add_include (_tmp23_, "string.h", FALSE);
31519 _tmp24_ = vala_ccode_identifier_new ("memset");
31521 _tmp26_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp25_);
31523 _vala_ccode_node_unref0 (_tmp25_);
31524 creation_call = _tmp27_;
31525 _tmp28_ = creation_call;
31527 _tmp30_ = vala_reference_transfer_expression_get_inner (_tmp29_);
31529 _tmp32_ = vala_ccode_base_module_get_cvalue (self, _tmp31_);
31531 _tmp34_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp33_);
31533 vala_ccode_function_call_add_argument (_tmp28_, (ValaCCodeExpression*) _tmp35_);
31534 _vala_ccode_node_unref0 (_tmp35_);
31535 _vala_ccode_node_unref0 (_tmp33_);
31536 _tmp36_ = creation_call;
31537 _tmp37_ = vala_ccode_constant_new ("0");
31539 vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp38_);
31540 _vala_ccode_node_unref0 (_tmp38_);
31541 _tmp39_ = creation_call;
31543 _tmp41_ = vala_reference_transfer_expression_get_inner (_tmp40_);
31545 _tmp43_ = vala_expression_get_value_type (_tmp42_);
31547 _tmp45_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp44_);
31549 _tmp47_ = g_strdup_printf ("sizeof (%s)", _tmp46_);
31551 _tmp49_ = vala_ccode_identifier_new (_tmp48_);
31553 vala_ccode_function_call_add_argument (_tmp39_, (ValaCCodeExpression*) _tmp50_);
31554 _vala_ccode_node_unref0 (_tmp50_);
31555 _g_free0 (_tmp48_);
31556 _g_free0 (_tmp46_);
31557 _tmp51_ = vala_ccode_base_module_get_ccode (self);
31559 _tmp53_ = creation_call;
31560 vala_ccode_function_add_expression (_tmp52_, (ValaCCodeExpression*) _tmp53_);
31561 _vala_ccode_node_unref0 (creation_call);
31563 ValaReferenceTransferExpression* _tmp54_;
31564 ValaDataType* _tmp55_;
31565 ValaDataType* _tmp56_;
31567 _tmp55_ = vala_expression_get_value_type ((ValaExpression*) _tmp54_);
31569 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp56_, VALA_TYPE_DELEGATE_TYPE)) {
31570 ValaReferenceTransferExpression* _tmp57_;
31571 ValaExpression* _tmp58_;
31572 ValaExpression* _tmp59_;
31573 ValaTargetValue* _tmp60_;
31574 ValaTargetValue* _tmp61_;
31575 ValaCCodeExpression* _tmp62_ = NULL;
31576 ValaCCodeExpression* target_destroy_notify;
31577 ValaCCodeExpression* _tmp63_;
31579 _tmp58_ = vala_reference_transfer_expression_get_inner (_tmp57_);
31581 _tmp60_ = vala_expression_get_target_value (_tmp59_);
31583 _tmp62_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp61_);
31584 target_destroy_notify = _tmp62_;
31585 _tmp63_ = target_destroy_notify;
31586 if (_tmp63_ != NULL) {
31587 ValaCCodeFunction* _tmp64_;
31588 ValaCCodeFunction* _tmp65_;
31589 ValaCCodeExpression* _tmp66_;
31590 ValaCCodeConstant* _tmp67_;
31591 ValaCCodeConstant* _tmp68_;
31592 _tmp64_ = vala_ccode_base_module_get_ccode (self);
31594 _tmp66_ = target_destroy_notify;
31595 _tmp67_ = vala_ccode_constant_new ("NULL");
31597 vala_ccode_function_add_assignment (_tmp65_, _tmp66_, (ValaCCodeExpression*) _tmp68_);
31598 _vala_ccode_node_unref0 (_tmp68_);
31600 _vala_ccode_node_unref0 (target_destroy_notify);
31602 ValaCCodeFunction* _tmp69_;
31603 ValaCCodeFunction* _tmp70_;
31604 ValaReferenceTransferExpression* _tmp71_;
31605 ValaExpression* _tmp72_;
31606 ValaExpression* _tmp73_;
31607 ValaCCodeExpression* _tmp74_ = NULL;
31608 ValaCCodeExpression* _tmp75_;
31609 ValaCCodeConstant* _tmp76_;
31610 ValaCCodeConstant* _tmp77_;
31611 _tmp69_ = vala_ccode_base_module_get_ccode (self);
31614 _tmp72_ = vala_reference_transfer_expression_get_inner (_tmp71_);
31616 _tmp74_ = vala_ccode_base_module_get_cvalue (self, _tmp73_);
31618 _tmp76_ = vala_ccode_constant_new ("NULL");
31620 vala_ccode_function_add_assignment (_tmp70_, _tmp75_, (ValaCCodeExpression*) _tmp77_);
31621 _vala_ccode_node_unref0 (_tmp77_);
31622 _vala_ccode_node_unref0 (_tmp75_);
31628 static void vala_ccode_base_module_real_visit_binary_expression (ValaCodeVisitor* base, ValaBinaryExpression* expr) {
31629 ValaCCodeBaseModule * self;
31630 ValaBinaryExpression* _tmp0_;
31631 ValaExpression* _tmp1_;
31632 ValaExpression* _tmp2_;
31633 ValaCCodeExpression* _tmp3_ = NULL;
31634 ValaCCodeExpression* cleft;
31635 ValaBinaryExpression* _tmp4_;
31636 ValaExpression* _tmp5_;
31637 ValaExpression* _tmp6_;
31638 ValaCCodeExpression* _tmp7_ = NULL;
31639 ValaCCodeExpression* cright;
31640 ValaCCodeExpression* left_chain;
31641 ValaBinaryExpression* _tmp8_;
31643 ValaCCodeBinaryOperator op = 0;
31644 ValaBinaryExpression* _tmp51_;
31645 ValaBinaryOperator _tmp52_;
31646 ValaBinaryOperator _tmp53_;
31647 gboolean _tmp185_ = FALSE;
31648 ValaBinaryExpression* _tmp186_;
31649 ValaBinaryOperator _tmp187_;
31650 ValaBinaryOperator _tmp188_;
31652 gboolean _tmp273_ = FALSE;
31653 gboolean _tmp274_ = FALSE;
31654 gboolean _tmp275_ = FALSE;
31655 ValaBinaryExpression* _tmp276_;
31656 ValaExpression* _tmp277_;
31657 ValaExpression* _tmp278_;
31658 ValaDataType* _tmp279_;
31659 ValaDataType* _tmp280_;
31663 ValaBinaryExpression* _tmp406_;
31664 ValaCCodeBinaryOperator _tmp407_;
31665 ValaCCodeExpression* _tmp408_;
31666 ValaCCodeExpression* _tmp409_;
31667 ValaCCodeBinaryExpression* _tmp410_;
31668 ValaCCodeBinaryExpression* _tmp411_;
31669 ValaCCodeExpression* _tmp412_;
31670 self = (ValaCCodeBaseModule*) base;
31671 g_return_if_fail (expr != NULL);
31673 _tmp1_ = vala_binary_expression_get_left (_tmp0_);
31675 _tmp3_ = vala_ccode_base_module_get_cvalue (self, _tmp2_);
31678 _tmp5_ = vala_binary_expression_get_right (_tmp4_);
31680 _tmp7_ = vala_ccode_base_module_get_cvalue (self, _tmp6_);
31684 _tmp9_ = _tmp8_->chained;
31686 ValaBinaryExpression* _tmp10_;
31687 ValaExpression* _tmp11_;
31688 ValaExpression* _tmp12_;
31689 ValaBinaryExpression* _tmp13_;
31690 ValaBinaryExpression* lbe;
31691 ValaBinaryExpression* _tmp14_;
31692 ValaExpression* _tmp15_;
31693 ValaExpression* _tmp16_;
31694 ValaDataType* _tmp17_;
31695 ValaDataType* _tmp18_;
31696 ValaLocalVariable* _tmp19_ = NULL;
31697 ValaLocalVariable* temp_decl;
31698 ValaLocalVariable* _tmp20_;
31699 ValaLocalVariable* _tmp21_;
31700 const gchar* _tmp22_;
31701 const gchar* _tmp23_;
31702 ValaCCodeExpression* _tmp24_ = NULL;
31703 ValaCCodeExpression* cvar;
31704 ValaBinaryExpression* _tmp25_;
31705 ValaCCodeExpression* _tmp26_ = NULL;
31706 ValaCCodeBinaryExpression* clbe;
31707 ValaBinaryExpression* _tmp27_;
31709 ValaCCodeFunction* _tmp33_;
31710 ValaCCodeFunction* _tmp34_;
31711 ValaCCodeExpression* _tmp35_;
31712 ValaBinaryExpression* _tmp36_;
31713 ValaExpression* _tmp37_;
31714 ValaExpression* _tmp38_;
31715 ValaCCodeExpression* _tmp39_ = NULL;
31716 ValaCCodeExpression* _tmp40_;
31717 ValaCCodeBinaryExpression* _tmp41_;
31718 ValaLocalVariable* _tmp42_;
31719 const gchar* _tmp43_;
31720 const gchar* _tmp44_;
31721 ValaCCodeExpression* _tmp45_ = NULL;
31722 ValaCCodeExpression* _tmp46_;
31723 ValaCCodeExpression* _tmp47_;
31724 ValaCCodeExpression* _tmp48_;
31725 ValaCCodeExpression* _tmp49_;
31726 ValaCCodeExpression* _tmp50_;
31728 _tmp11_ = vala_binary_expression_get_left (_tmp10_);
31730 _tmp13_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, VALA_TYPE_BINARY_EXPRESSION, ValaBinaryExpression));
31733 _tmp15_ = vala_binary_expression_get_right (_tmp14_);
31735 _tmp17_ = vala_expression_get_target_type (_tmp16_);
31737 _tmp19_ = vala_ccode_base_module_get_temp_variable (self, _tmp18_, TRUE, NULL, FALSE);
31738 temp_decl = _tmp19_;
31739 _tmp20_ = temp_decl;
31740 vala_ccode_base_module_emit_temp_var (self, _tmp20_);
31741 _tmp21_ = temp_decl;
31742 _tmp22_ = vala_symbol_get_name ((ValaSymbol*) _tmp21_);
31744 _tmp24_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp23_);
31747 _tmp26_ = vala_ccode_base_module_get_cvalue (self, (ValaExpression*) _tmp25_);
31748 clbe = G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_CCODE_BINARY_EXPRESSION, ValaCCodeBinaryExpression);
31750 _tmp28_ = _tmp27_->chained;
31752 ValaCCodeBinaryExpression* _tmp29_;
31753 ValaCCodeExpression* _tmp30_;
31754 ValaCCodeExpression* _tmp31_;
31755 ValaCCodeBinaryExpression* _tmp32_;
31757 _tmp30_ = vala_ccode_binary_expression_get_right (_tmp29_);
31759 _tmp32_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, VALA_TYPE_CCODE_BINARY_EXPRESSION, ValaCCodeBinaryExpression));
31760 _vala_ccode_node_unref0 (clbe);
31763 _tmp33_ = vala_ccode_base_module_get_ccode (self);
31767 _tmp37_ = vala_binary_expression_get_right (_tmp36_);
31769 _tmp39_ = vala_ccode_base_module_get_cvalue (self, _tmp38_);
31771 vala_ccode_function_add_assignment (_tmp34_, _tmp35_, _tmp40_);
31772 _vala_ccode_node_unref0 (_tmp40_);
31774 _tmp42_ = temp_decl;
31775 _tmp43_ = vala_symbol_get_name ((ValaSymbol*) _tmp42_);
31777 _tmp45_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp44_);
31779 vala_ccode_binary_expression_set_right (_tmp41_, _tmp46_);
31780 _vala_ccode_node_unref0 (_tmp46_);
31782 _tmp48_ = _vala_ccode_node_ref0 (_tmp47_);
31783 _vala_ccode_node_unref0 (left_chain);
31784 left_chain = _tmp48_;
31786 _tmp50_ = _vala_ccode_node_ref0 (_tmp49_);
31787 _vala_ccode_node_unref0 (cleft);
31789 _vala_ccode_node_unref0 (clbe);
31790 _vala_ccode_node_unref0 (cvar);
31791 _vala_code_node_unref0 (temp_decl);
31792 _vala_code_node_unref0 (lbe);
31795 _tmp52_ = vala_binary_expression_get_operator (_tmp51_);
31797 if (_tmp53_ == VALA_BINARY_OPERATOR_PLUS) {
31798 op = VALA_CCODE_BINARY_OPERATOR_PLUS;
31800 ValaBinaryExpression* _tmp54_;
31801 ValaBinaryOperator _tmp55_;
31802 ValaBinaryOperator _tmp56_;
31804 _tmp55_ = vala_binary_expression_get_operator (_tmp54_);
31806 if (_tmp56_ == VALA_BINARY_OPERATOR_MINUS) {
31807 op = VALA_CCODE_BINARY_OPERATOR_MINUS;
31809 ValaBinaryExpression* _tmp57_;
31810 ValaBinaryOperator _tmp58_;
31811 ValaBinaryOperator _tmp59_;
31813 _tmp58_ = vala_binary_expression_get_operator (_tmp57_);
31815 if (_tmp59_ == VALA_BINARY_OPERATOR_MUL) {
31816 op = VALA_CCODE_BINARY_OPERATOR_MUL;
31818 ValaBinaryExpression* _tmp60_;
31819 ValaBinaryOperator _tmp61_;
31820 ValaBinaryOperator _tmp62_;
31822 _tmp61_ = vala_binary_expression_get_operator (_tmp60_);
31824 if (_tmp62_ == VALA_BINARY_OPERATOR_DIV) {
31825 op = VALA_CCODE_BINARY_OPERATOR_DIV;
31827 ValaBinaryExpression* _tmp63_;
31828 ValaBinaryOperator _tmp64_;
31829 ValaBinaryOperator _tmp65_;
31831 _tmp64_ = vala_binary_expression_get_operator (_tmp63_);
31833 if (_tmp65_ == VALA_BINARY_OPERATOR_MOD) {
31834 ValaBinaryExpression* _tmp66_;
31835 ValaDataType* _tmp67_;
31836 ValaDataType* _tmp68_;
31837 ValaDataType* _tmp69_;
31838 gboolean _tmp70_ = FALSE;
31840 _tmp67_ = vala_expression_get_value_type ((ValaExpression*) _tmp66_);
31842 _tmp69_ = self->double_type;
31843 _tmp70_ = vala_data_type_equals (_tmp68_, _tmp69_);
31845 ValaCCodeFile* _tmp71_;
31846 ValaCCodeIdentifier* _tmp72_;
31847 ValaCCodeIdentifier* _tmp73_;
31848 ValaCCodeFunctionCall* _tmp74_;
31849 ValaCCodeFunctionCall* _tmp75_;
31850 ValaCCodeFunctionCall* ccall;
31851 ValaCCodeFunctionCall* _tmp76_;
31852 ValaCCodeExpression* _tmp77_;
31853 ValaCCodeFunctionCall* _tmp78_;
31854 ValaCCodeExpression* _tmp79_;
31855 ValaBinaryExpression* _tmp80_;
31856 ValaCCodeFunctionCall* _tmp81_;
31857 _tmp71_ = self->cfile;
31858 vala_ccode_file_add_include (_tmp71_, "math.h", FALSE);
31859 _tmp72_ = vala_ccode_identifier_new ("fmod");
31861 _tmp74_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp73_);
31863 _vala_ccode_node_unref0 (_tmp73_);
31867 vala_ccode_function_call_add_argument (_tmp76_, _tmp77_);
31870 vala_ccode_function_call_add_argument (_tmp78_, _tmp79_);
31873 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp80_, (ValaCCodeExpression*) _tmp81_);
31874 _vala_ccode_node_unref0 (ccall);
31875 _vala_ccode_node_unref0 (left_chain);
31876 _vala_ccode_node_unref0 (cright);
31877 _vala_ccode_node_unref0 (cleft);
31880 ValaBinaryExpression* _tmp82_;
31881 ValaDataType* _tmp83_;
31882 ValaDataType* _tmp84_;
31883 ValaDataType* _tmp85_;
31884 gboolean _tmp86_ = FALSE;
31886 _tmp83_ = vala_expression_get_value_type ((ValaExpression*) _tmp82_);
31888 _tmp85_ = self->float_type;
31889 _tmp86_ = vala_data_type_equals (_tmp84_, _tmp85_);
31891 ValaCCodeFile* _tmp87_;
31892 ValaCCodeIdentifier* _tmp88_;
31893 ValaCCodeIdentifier* _tmp89_;
31894 ValaCCodeFunctionCall* _tmp90_;
31895 ValaCCodeFunctionCall* _tmp91_;
31896 ValaCCodeFunctionCall* ccall;
31897 ValaCCodeFunctionCall* _tmp92_;
31898 ValaCCodeExpression* _tmp93_;
31899 ValaCCodeFunctionCall* _tmp94_;
31900 ValaCCodeExpression* _tmp95_;
31901 ValaBinaryExpression* _tmp96_;
31902 ValaCCodeFunctionCall* _tmp97_;
31903 _tmp87_ = self->cfile;
31904 vala_ccode_file_add_include (_tmp87_, "math.h", FALSE);
31905 _tmp88_ = vala_ccode_identifier_new ("fmodf");
31907 _tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
31909 _vala_ccode_node_unref0 (_tmp89_);
31913 vala_ccode_function_call_add_argument (_tmp92_, _tmp93_);
31916 vala_ccode_function_call_add_argument (_tmp94_, _tmp95_);
31919 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp96_, (ValaCCodeExpression*) _tmp97_);
31920 _vala_ccode_node_unref0 (ccall);
31921 _vala_ccode_node_unref0 (left_chain);
31922 _vala_ccode_node_unref0 (cright);
31923 _vala_ccode_node_unref0 (cleft);
31926 op = VALA_CCODE_BINARY_OPERATOR_MOD;
31930 ValaBinaryExpression* _tmp98_;
31931 ValaBinaryOperator _tmp99_;
31932 ValaBinaryOperator _tmp100_;
31934 _tmp99_ = vala_binary_expression_get_operator (_tmp98_);
31935 _tmp100_ = _tmp99_;
31936 if (_tmp100_ == VALA_BINARY_OPERATOR_SHIFT_LEFT) {
31937 op = VALA_CCODE_BINARY_OPERATOR_SHIFT_LEFT;
31939 ValaBinaryExpression* _tmp101_;
31940 ValaBinaryOperator _tmp102_;
31941 ValaBinaryOperator _tmp103_;
31943 _tmp102_ = vala_binary_expression_get_operator (_tmp101_);
31944 _tmp103_ = _tmp102_;
31945 if (_tmp103_ == VALA_BINARY_OPERATOR_SHIFT_RIGHT) {
31946 op = VALA_CCODE_BINARY_OPERATOR_SHIFT_RIGHT;
31948 ValaBinaryExpression* _tmp104_;
31949 ValaBinaryOperator _tmp105_;
31950 ValaBinaryOperator _tmp106_;
31952 _tmp105_ = vala_binary_expression_get_operator (_tmp104_);
31953 _tmp106_ = _tmp105_;
31954 if (_tmp106_ == VALA_BINARY_OPERATOR_LESS_THAN) {
31955 op = VALA_CCODE_BINARY_OPERATOR_LESS_THAN;
31957 ValaBinaryExpression* _tmp107_;
31958 ValaBinaryOperator _tmp108_;
31959 ValaBinaryOperator _tmp109_;
31961 _tmp108_ = vala_binary_expression_get_operator (_tmp107_);
31962 _tmp109_ = _tmp108_;
31963 if (_tmp109_ == VALA_BINARY_OPERATOR_GREATER_THAN) {
31964 op = VALA_CCODE_BINARY_OPERATOR_GREATER_THAN;
31966 ValaBinaryExpression* _tmp110_;
31967 ValaBinaryOperator _tmp111_;
31968 ValaBinaryOperator _tmp112_;
31970 _tmp111_ = vala_binary_expression_get_operator (_tmp110_);
31971 _tmp112_ = _tmp111_;
31972 if (_tmp112_ == VALA_BINARY_OPERATOR_LESS_THAN_OR_EQUAL) {
31973 op = VALA_CCODE_BINARY_OPERATOR_LESS_THAN_OR_EQUAL;
31975 ValaBinaryExpression* _tmp113_;
31976 ValaBinaryOperator _tmp114_;
31977 ValaBinaryOperator _tmp115_;
31979 _tmp114_ = vala_binary_expression_get_operator (_tmp113_);
31980 _tmp115_ = _tmp114_;
31981 if (_tmp115_ == VALA_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL) {
31982 op = VALA_CCODE_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL;
31984 ValaBinaryExpression* _tmp116_;
31985 ValaBinaryOperator _tmp117_;
31986 ValaBinaryOperator _tmp118_;
31988 _tmp117_ = vala_binary_expression_get_operator (_tmp116_);
31989 _tmp118_ = _tmp117_;
31990 if (_tmp118_ == VALA_BINARY_OPERATOR_EQUALITY) {
31991 op = VALA_CCODE_BINARY_OPERATOR_EQUALITY;
31993 ValaBinaryExpression* _tmp119_;
31994 ValaBinaryOperator _tmp120_;
31995 ValaBinaryOperator _tmp121_;
31997 _tmp120_ = vala_binary_expression_get_operator (_tmp119_);
31998 _tmp121_ = _tmp120_;
31999 if (_tmp121_ == VALA_BINARY_OPERATOR_INEQUALITY) {
32000 op = VALA_CCODE_BINARY_OPERATOR_INEQUALITY;
32002 ValaBinaryExpression* _tmp122_;
32003 ValaBinaryOperator _tmp123_;
32004 ValaBinaryOperator _tmp124_;
32006 _tmp123_ = vala_binary_expression_get_operator (_tmp122_);
32007 _tmp124_ = _tmp123_;
32008 if (_tmp124_ == VALA_BINARY_OPERATOR_BITWISE_AND) {
32009 op = VALA_CCODE_BINARY_OPERATOR_BITWISE_AND;
32011 ValaBinaryExpression* _tmp125_;
32012 ValaBinaryOperator _tmp126_;
32013 ValaBinaryOperator _tmp127_;
32015 _tmp126_ = vala_binary_expression_get_operator (_tmp125_);
32016 _tmp127_ = _tmp126_;
32017 if (_tmp127_ == VALA_BINARY_OPERATOR_BITWISE_OR) {
32018 op = VALA_CCODE_BINARY_OPERATOR_BITWISE_OR;
32020 ValaBinaryExpression* _tmp128_;
32021 ValaBinaryOperator _tmp129_;
32022 ValaBinaryOperator _tmp130_;
32024 _tmp129_ = vala_binary_expression_get_operator (_tmp128_);
32025 _tmp130_ = _tmp129_;
32026 if (_tmp130_ == VALA_BINARY_OPERATOR_BITWISE_XOR) {
32027 op = VALA_CCODE_BINARY_OPERATOR_BITWISE_XOR;
32029 ValaBinaryExpression* _tmp131_;
32030 ValaBinaryOperator _tmp132_;
32031 ValaBinaryOperator _tmp133_;
32033 _tmp132_ = vala_binary_expression_get_operator (_tmp131_);
32034 _tmp133_ = _tmp132_;
32035 if (_tmp133_ == VALA_BINARY_OPERATOR_AND) {
32036 op = VALA_CCODE_BINARY_OPERATOR_AND;
32038 ValaBinaryExpression* _tmp134_;
32039 ValaBinaryOperator _tmp135_;
32040 ValaBinaryOperator _tmp136_;
32042 _tmp135_ = vala_binary_expression_get_operator (_tmp134_);
32043 _tmp136_ = _tmp135_;
32044 if (_tmp136_ == VALA_BINARY_OPERATOR_OR) {
32045 op = VALA_CCODE_BINARY_OPERATOR_OR;
32047 ValaBinaryExpression* _tmp137_;
32048 ValaBinaryOperator _tmp138_;
32049 ValaBinaryOperator _tmp139_;
32051 _tmp138_ = vala_binary_expression_get_operator (_tmp137_);
32052 _tmp139_ = _tmp138_;
32053 if (_tmp139_ == VALA_BINARY_OPERATOR_IN) {
32054 ValaBinaryExpression* _tmp140_;
32055 ValaExpression* _tmp141_;
32056 ValaExpression* _tmp142_;
32057 ValaDataType* _tmp143_;
32058 ValaDataType* _tmp144_;
32060 _tmp141_ = vala_binary_expression_get_right (_tmp140_);
32061 _tmp142_ = _tmp141_;
32062 _tmp143_ = vala_expression_get_value_type (_tmp142_);
32063 _tmp144_ = _tmp143_;
32064 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp144_, VALA_TYPE_ARRAY_TYPE)) {
32065 ValaBinaryExpression* _tmp145_;
32066 ValaExpression* _tmp146_;
32067 ValaExpression* _tmp147_;
32068 ValaDataType* _tmp148_;
32069 ValaDataType* _tmp149_;
32070 ValaArrayType* _tmp150_;
32071 ValaArrayType* array_type;
32072 ValaArrayType* _tmp151_;
32073 gchar* _tmp152_ = NULL;
32075 ValaCCodeIdentifier* _tmp154_;
32076 ValaCCodeIdentifier* _tmp155_;
32077 ValaCCodeFunctionCall* _tmp156_;
32078 ValaCCodeFunctionCall* _tmp157_;
32079 ValaCCodeFunctionCall* node;
32080 ValaCCodeFunctionCall* _tmp158_;
32081 ValaCCodeExpression* _tmp159_;
32082 ValaCCodeFunctionCall* _tmp160_;
32083 ValaBinaryExpression* _tmp161_;
32084 ValaExpression* _tmp162_;
32085 ValaExpression* _tmp163_;
32086 ValaCCodeExpression* _tmp164_ = NULL;
32087 ValaCCodeExpression* _tmp165_;
32088 ValaArrayType* _tmp166_;
32089 ValaDataType* _tmp167_;
32090 ValaDataType* _tmp168_;
32091 ValaBinaryExpression* _tmp175_;
32092 ValaCCodeFunctionCall* _tmp176_;
32094 _tmp146_ = vala_binary_expression_get_right (_tmp145_);
32095 _tmp147_ = _tmp146_;
32096 _tmp148_ = vala_expression_get_value_type (_tmp147_);
32097 _tmp149_ = _tmp148_;
32098 _tmp150_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp149_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
32099 array_type = _tmp150_;
32100 _tmp151_ = array_type;
32101 _tmp152_ = vala_ccode_base_module_generate_array_contains_wrapper (self, _tmp151_);
32102 _tmp153_ = _tmp152_;
32103 _tmp154_ = vala_ccode_identifier_new (_tmp153_);
32104 _tmp155_ = _tmp154_;
32105 _tmp156_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp155_);
32106 _tmp157_ = _tmp156_;
32107 _vala_ccode_node_unref0 (_tmp155_);
32108 _g_free0 (_tmp153_);
32112 vala_ccode_function_call_add_argument (_tmp158_, _tmp159_);
32115 _tmp162_ = vala_binary_expression_get_right (_tmp161_);
32116 _tmp163_ = _tmp162_;
32117 _tmp164_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp163_, -1);
32118 _tmp165_ = _tmp164_;
32119 vala_ccode_function_call_add_argument (_tmp160_, _tmp165_);
32120 _vala_ccode_node_unref0 (_tmp165_);
32121 _tmp166_ = array_type;
32122 _tmp167_ = vala_array_type_get_element_type (_tmp166_);
32123 _tmp168_ = _tmp167_;
32124 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp168_, VALA_TYPE_STRUCT_VALUE_TYPE)) {
32125 ValaCCodeFunctionCall* _tmp169_;
32126 ValaCCodeExpression* _tmp170_;
32127 ValaCCodeUnaryExpression* _tmp171_;
32128 ValaCCodeUnaryExpression* _tmp172_;
32131 _tmp171_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp170_);
32132 _tmp172_ = _tmp171_;
32133 vala_ccode_function_call_add_argument (_tmp169_, (ValaCCodeExpression*) _tmp172_);
32134 _vala_ccode_node_unref0 (_tmp172_);
32136 ValaCCodeFunctionCall* _tmp173_;
32137 ValaCCodeExpression* _tmp174_;
32140 vala_ccode_function_call_add_argument (_tmp173_, _tmp174_);
32144 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp175_, (ValaCCodeExpression*) _tmp176_);
32145 _vala_ccode_node_unref0 (node);
32146 _vala_code_node_unref0 (array_type);
32148 ValaBinaryExpression* _tmp177_;
32149 ValaCCodeExpression* _tmp178_;
32150 ValaCCodeExpression* _tmp179_;
32151 ValaCCodeBinaryExpression* _tmp180_;
32152 ValaCCodeBinaryExpression* _tmp181_;
32153 ValaCCodeExpression* _tmp182_;
32154 ValaCCodeBinaryExpression* _tmp183_;
32155 ValaCCodeBinaryExpression* _tmp184_;
32159 _tmp180_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_BITWISE_AND, _tmp178_, _tmp179_);
32160 _tmp181_ = _tmp180_;
32162 _tmp183_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp181_, _tmp182_);
32163 _tmp184_ = _tmp183_;
32164 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp177_, (ValaCCodeExpression*) _tmp184_);
32165 _vala_ccode_node_unref0 (_tmp184_);
32166 _vala_ccode_node_unref0 (_tmp181_);
32168 _vala_ccode_node_unref0 (left_chain);
32169 _vala_ccode_node_unref0 (cright);
32170 _vala_ccode_node_unref0 (cleft);
32173 g_assert_not_reached ();
32194 _tmp187_ = vala_binary_expression_get_operator (_tmp186_);
32195 _tmp188_ = _tmp187_;
32196 if (_tmp188_ == VALA_BINARY_OPERATOR_EQUALITY) {
32199 ValaBinaryExpression* _tmp189_;
32200 ValaBinaryOperator _tmp190_;
32201 ValaBinaryOperator _tmp191_;
32203 _tmp190_ = vala_binary_expression_get_operator (_tmp189_);
32204 _tmp191_ = _tmp190_;
32205 _tmp185_ = _tmp191_ == VALA_BINARY_OPERATOR_INEQUALITY;
32207 _tmp192_ = _tmp185_;
32209 ValaBinaryExpression* _tmp193_;
32210 ValaExpression* _tmp194_;
32211 ValaExpression* _tmp195_;
32212 ValaDataType* _tmp196_;
32213 ValaDataType* _tmp197_;
32214 ValaDataType* _tmp198_;
32215 ValaDataType* left_type;
32216 ValaBinaryExpression* _tmp199_;
32217 ValaExpression* _tmp200_;
32218 ValaExpression* _tmp201_;
32219 ValaDataType* _tmp202_;
32220 ValaDataType* _tmp203_;
32221 ValaDataType* _tmp204_;
32222 ValaDataType* right_type;
32223 gboolean _tmp205_ = FALSE;
32224 ValaDataType* _tmp206_;
32227 _tmp194_ = vala_binary_expression_get_left (_tmp193_);
32228 _tmp195_ = _tmp194_;
32229 _tmp196_ = vala_expression_get_target_type (_tmp195_);
32230 _tmp197_ = _tmp196_;
32231 _tmp198_ = _vala_code_node_ref0 (_tmp197_);
32232 left_type = _tmp198_;
32234 _tmp200_ = vala_binary_expression_get_right (_tmp199_);
32235 _tmp201_ = _tmp200_;
32236 _tmp202_ = vala_expression_get_target_type (_tmp201_);
32237 _tmp203_ = _tmp202_;
32238 _tmp204_ = _vala_code_node_ref0 (_tmp203_);
32239 right_type = _tmp204_;
32240 vala_ccode_base_module_make_comparable_cexpression (self, &left_type, &cleft, &right_type, &cright);
32241 _tmp206_ = left_type;
32242 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp206_, VALA_TYPE_STRUCT_VALUE_TYPE)) {
32243 ValaDataType* _tmp207_;
32244 _tmp207_ = right_type;
32245 _tmp205_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp207_, VALA_TYPE_STRUCT_VALUE_TYPE);
32249 _tmp208_ = _tmp205_;
32251 ValaDataType* _tmp209_;
32252 ValaTypeSymbol* _tmp210_;
32253 ValaTypeSymbol* _tmp211_;
32254 gchar* _tmp212_ = NULL;
32256 const gchar* _tmp213_;
32257 ValaCCodeIdentifier* _tmp214_;
32258 ValaCCodeIdentifier* _tmp215_;
32259 ValaCCodeFunctionCall* _tmp216_;
32260 ValaCCodeFunctionCall* _tmp217_;
32261 ValaCCodeFunctionCall* ccall;
32262 ValaCCodeFunctionCall* _tmp218_;
32263 ValaCCodeExpression* _tmp219_;
32264 ValaCCodeFunctionCall* _tmp220_;
32265 ValaCCodeExpression* _tmp221_;
32266 ValaCCodeFunctionCall* _tmp222_;
32267 ValaCCodeExpression* _tmp223_;
32268 ValaCCodeConstant* _tmp224_;
32269 _tmp209_ = left_type;
32270 _tmp210_ = vala_data_type_get_data_type (_tmp209_);
32271 _tmp211_ = _tmp210_;
32272 _tmp212_ = vala_ccode_base_module_generate_struct_equal_function (self, G_TYPE_CHECK_INSTANCE_TYPE (G_TYPE_CHECK_INSTANCE_CAST (_tmp211_, VALA_TYPE_STRUCT, ValaStruct), VALA_TYPE_STRUCT) ? ((ValaStruct*) G_TYPE_CHECK_INSTANCE_CAST (_tmp211_, VALA_TYPE_STRUCT, ValaStruct)) : NULL);
32273 equalfunc = _tmp212_;
32274 _tmp213_ = equalfunc;
32275 _tmp214_ = vala_ccode_identifier_new (_tmp213_);
32276 _tmp215_ = _tmp214_;
32277 _tmp216_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp215_);
32278 _tmp217_ = _tmp216_;
32279 _vala_ccode_node_unref0 (_tmp215_);
32283 vala_ccode_function_call_add_argument (_tmp218_, _tmp219_);
32286 vala_ccode_function_call_add_argument (_tmp220_, _tmp221_);
32288 _tmp223_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp222_);
32289 _vala_ccode_node_unref0 (cleft);
32291 _tmp224_ = vala_ccode_constant_new ("TRUE");
32292 _vala_ccode_node_unref0 (cright);
32293 cright = (ValaCCodeExpression*) _tmp224_;
32294 _vala_ccode_node_unref0 (ccall);
32295 _g_free0 (equalfunc);
32297 gboolean _tmp225_ = FALSE;
32298 gboolean _tmp226_ = FALSE;
32299 gboolean _tmp227_ = FALSE;
32300 gboolean _tmp228_ = FALSE;
32301 gboolean _tmp229_ = FALSE;
32302 gboolean _tmp230_ = FALSE;
32303 ValaDataType* _tmp231_;
32310 _tmp231_ = left_type;
32311 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp231_, VALA_TYPE_INTEGER_TYPE)) {
32314 ValaDataType* _tmp232_;
32315 _tmp232_ = left_type;
32316 _tmp230_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp232_, VALA_TYPE_FLOATING_TYPE);
32318 _tmp233_ = _tmp230_;
32322 ValaDataType* _tmp234_;
32323 _tmp234_ = left_type;
32324 _tmp229_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp234_, VALA_TYPE_BOOLEAN_TYPE);
32326 _tmp235_ = _tmp229_;
32330 ValaDataType* _tmp236_;
32331 _tmp236_ = left_type;
32332 _tmp228_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp236_, VALA_TYPE_ENUM_VALUE_TYPE);
32334 _tmp237_ = _tmp228_;
32336 ValaDataType* _tmp238_;
32339 _tmp238_ = left_type;
32340 _tmp239_ = vala_data_type_get_nullable (_tmp238_);
32341 _tmp240_ = _tmp239_;
32342 _tmp227_ = _tmp240_;
32346 _tmp241_ = _tmp227_;
32348 gboolean _tmp242_ = FALSE;
32349 gboolean _tmp243_ = FALSE;
32350 gboolean _tmp244_ = FALSE;
32351 ValaDataType* _tmp245_;
32355 _tmp245_ = right_type;
32356 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp245_, VALA_TYPE_INTEGER_TYPE)) {
32359 ValaDataType* _tmp246_;
32360 _tmp246_ = right_type;
32361 _tmp244_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp246_, VALA_TYPE_FLOATING_TYPE);
32363 _tmp247_ = _tmp244_;
32367 ValaDataType* _tmp248_;
32368 _tmp248_ = right_type;
32369 _tmp243_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp248_, VALA_TYPE_BOOLEAN_TYPE);
32371 _tmp249_ = _tmp243_;
32375 ValaDataType* _tmp250_;
32376 _tmp250_ = right_type;
32377 _tmp242_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp250_, VALA_TYPE_ENUM_VALUE_TYPE);
32379 _tmp251_ = _tmp242_;
32380 _tmp226_ = _tmp251_;
32384 _tmp252_ = _tmp226_;
32386 ValaDataType* _tmp253_;
32389 _tmp253_ = right_type;
32390 _tmp254_ = vala_data_type_get_nullable (_tmp253_);
32391 _tmp255_ = _tmp254_;
32392 _tmp225_ = _tmp255_;
32396 _tmp256_ = _tmp225_;
32398 ValaDataType* _tmp257_;
32399 ValaTypeSymbol* _tmp258_;
32400 ValaTypeSymbol* _tmp259_;
32401 gchar* _tmp260_ = NULL;
32403 const gchar* _tmp261_;
32404 ValaCCodeIdentifier* _tmp262_;
32405 ValaCCodeIdentifier* _tmp263_;
32406 ValaCCodeFunctionCall* _tmp264_;
32407 ValaCCodeFunctionCall* _tmp265_;
32408 ValaCCodeFunctionCall* ccall;
32409 ValaCCodeFunctionCall* _tmp266_;
32410 ValaCCodeExpression* _tmp267_;
32411 ValaCCodeFunctionCall* _tmp268_;
32412 ValaCCodeExpression* _tmp269_;
32413 ValaCCodeFunctionCall* _tmp270_;
32414 ValaCCodeExpression* _tmp271_;
32415 ValaCCodeConstant* _tmp272_;
32416 _tmp257_ = left_type;
32417 _tmp258_ = vala_data_type_get_data_type (_tmp257_);
32418 _tmp259_ = _tmp258_;
32419 _tmp260_ = vala_ccode_base_module_generate_numeric_equal_function (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp259_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
32420 equalfunc = _tmp260_;
32421 _tmp261_ = equalfunc;
32422 _tmp262_ = vala_ccode_identifier_new (_tmp261_);
32423 _tmp263_ = _tmp262_;
32424 _tmp264_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp263_);
32425 _tmp265_ = _tmp264_;
32426 _vala_ccode_node_unref0 (_tmp263_);
32430 vala_ccode_function_call_add_argument (_tmp266_, _tmp267_);
32433 vala_ccode_function_call_add_argument (_tmp268_, _tmp269_);
32435 _tmp271_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp270_);
32436 _vala_ccode_node_unref0 (cleft);
32438 _tmp272_ = vala_ccode_constant_new ("TRUE");
32439 _vala_ccode_node_unref0 (cright);
32440 cright = (ValaCCodeExpression*) _tmp272_;
32441 _vala_ccode_node_unref0 (ccall);
32442 _g_free0 (equalfunc);
32445 _vala_code_node_unref0 (right_type);
32446 _vala_code_node_unref0 (left_type);
32449 _tmp277_ = vala_binary_expression_get_left (_tmp276_);
32450 _tmp278_ = _tmp277_;
32451 _tmp279_ = vala_expression_get_value_type (_tmp278_);
32452 _tmp280_ = _tmp279_;
32453 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp280_, VALA_TYPE_NULL_TYPE)) {
32454 ValaBinaryExpression* _tmp281_;
32455 ValaExpression* _tmp282_;
32456 ValaExpression* _tmp283_;
32457 ValaDataType* _tmp284_;
32458 ValaDataType* _tmp285_;
32459 ValaDataType* _tmp286_;
32460 gboolean _tmp287_ = FALSE;
32462 _tmp282_ = vala_binary_expression_get_left (_tmp281_);
32463 _tmp283_ = _tmp282_;
32464 _tmp284_ = vala_expression_get_value_type (_tmp283_);
32465 _tmp285_ = _tmp284_;
32466 _tmp286_ = self->string_type;
32467 _tmp287_ = vala_data_type_compatible (_tmp285_, _tmp286_);
32468 _tmp275_ = _tmp287_;
32472 _tmp288_ = _tmp275_;
32474 ValaBinaryExpression* _tmp289_;
32475 ValaExpression* _tmp290_;
32476 ValaExpression* _tmp291_;
32477 ValaDataType* _tmp292_;
32478 ValaDataType* _tmp293_;
32480 _tmp290_ = vala_binary_expression_get_right (_tmp289_);
32481 _tmp291_ = _tmp290_;
32482 _tmp292_ = vala_expression_get_value_type (_tmp291_);
32483 _tmp293_ = _tmp292_;
32484 _tmp274_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp293_, VALA_TYPE_NULL_TYPE);
32488 _tmp294_ = _tmp274_;
32490 ValaBinaryExpression* _tmp295_;
32491 ValaExpression* _tmp296_;
32492 ValaExpression* _tmp297_;
32493 ValaDataType* _tmp298_;
32494 ValaDataType* _tmp299_;
32495 ValaDataType* _tmp300_;
32496 gboolean _tmp301_ = FALSE;
32498 _tmp296_ = vala_binary_expression_get_right (_tmp295_);
32499 _tmp297_ = _tmp296_;
32500 _tmp298_ = vala_expression_get_value_type (_tmp297_);
32501 _tmp299_ = _tmp298_;
32502 _tmp300_ = self->string_type;
32503 _tmp301_ = vala_data_type_compatible (_tmp299_, _tmp300_);
32504 _tmp273_ = _tmp301_;
32508 _tmp302_ = _tmp273_;
32510 ValaBinaryExpression* _tmp303_;
32511 ValaBinaryOperator _tmp304_;
32512 ValaBinaryOperator _tmp305_;
32514 _tmp304_ = vala_binary_expression_get_operator (_tmp303_);
32515 _tmp305_ = _tmp304_;
32516 if (_tmp305_ == VALA_BINARY_OPERATOR_PLUS) {
32517 gboolean _tmp306_ = FALSE;
32518 ValaBinaryExpression* _tmp307_;
32519 ValaExpression* _tmp308_;
32520 ValaExpression* _tmp309_;
32521 gboolean _tmp310_ = FALSE;
32524 _tmp308_ = vala_binary_expression_get_left (_tmp307_);
32525 _tmp309_ = _tmp308_;
32526 _tmp310_ = vala_expression_is_constant (_tmp309_);
32528 ValaBinaryExpression* _tmp311_;
32529 ValaExpression* _tmp312_;
32530 ValaExpression* _tmp313_;
32531 gboolean _tmp314_ = FALSE;
32533 _tmp312_ = vala_binary_expression_get_right (_tmp311_);
32534 _tmp313_ = _tmp312_;
32535 _tmp314_ = vala_expression_is_constant (_tmp313_);
32536 _tmp306_ = _tmp314_;
32540 _tmp315_ = _tmp306_;
32542 gchar* left = NULL;
32543 gchar* right = NULL;
32544 ValaCCodeExpression* _tmp316_;
32545 ValaCCodeExpression* _tmp326_;
32546 ValaBinaryExpression* _tmp336_;
32547 const gchar* _tmp337_;
32548 const gchar* _tmp338_;
32549 gchar* _tmp339_ = NULL;
32551 ValaCCodeConstant* _tmp341_;
32552 ValaCCodeConstant* _tmp342_;
32554 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp316_, VALA_TYPE_CCODE_IDENTIFIER)) {
32555 ValaCCodeExpression* _tmp317_;
32556 const gchar* _tmp318_;
32557 const gchar* _tmp319_;
32560 _tmp318_ = vala_ccode_identifier_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp317_, VALA_TYPE_CCODE_IDENTIFIER, ValaCCodeIdentifier));
32561 _tmp319_ = _tmp318_;
32562 _tmp320_ = g_strdup (_tmp319_);
32566 ValaCCodeExpression* _tmp321_;
32568 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp321_, VALA_TYPE_CCODE_CONSTANT)) {
32569 ValaCCodeExpression* _tmp322_;
32570 const gchar* _tmp323_;
32571 const gchar* _tmp324_;
32574 _tmp323_ = vala_ccode_constant_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp322_, VALA_TYPE_CCODE_CONSTANT, ValaCCodeConstant));
32575 _tmp324_ = _tmp323_;
32576 _tmp325_ = g_strdup (_tmp324_);
32580 g_assert_not_reached ();
32584 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp326_, VALA_TYPE_CCODE_IDENTIFIER)) {
32585 ValaCCodeExpression* _tmp327_;
32586 const gchar* _tmp328_;
32587 const gchar* _tmp329_;
32590 _tmp328_ = vala_ccode_identifier_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp327_, VALA_TYPE_CCODE_IDENTIFIER, ValaCCodeIdentifier));
32591 _tmp329_ = _tmp328_;
32592 _tmp330_ = g_strdup (_tmp329_);
32596 ValaCCodeExpression* _tmp331_;
32598 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp331_, VALA_TYPE_CCODE_CONSTANT)) {
32599 ValaCCodeExpression* _tmp332_;
32600 const gchar* _tmp333_;
32601 const gchar* _tmp334_;
32604 _tmp333_ = vala_ccode_constant_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp332_, VALA_TYPE_CCODE_CONSTANT, ValaCCodeConstant));
32605 _tmp334_ = _tmp333_;
32606 _tmp335_ = g_strdup (_tmp334_);
32610 g_assert_not_reached ();
32616 _tmp339_ = g_strdup_printf ("%s %s", _tmp337_, _tmp338_);
32617 _tmp340_ = _tmp339_;
32618 _tmp341_ = vala_ccode_constant_new (_tmp340_);
32619 _tmp342_ = _tmp341_;
32620 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp336_, (ValaCCodeExpression*) _tmp342_);
32621 _vala_ccode_node_unref0 (_tmp342_);
32622 _g_free0 (_tmp340_);
32625 _vala_ccode_node_unref0 (left_chain);
32626 _vala_ccode_node_unref0 (cright);
32627 _vala_ccode_node_unref0 (cleft);
32630 ValaBinaryExpression* _tmp343_;
32631 ValaDataType* _tmp344_;
32632 ValaDataType* _tmp345_;
32633 ValaBinaryExpression* _tmp346_;
32634 ValaTargetValue* _tmp347_ = NULL;
32635 ValaTargetValue* temp_value;
32636 ValaCCodeIdentifier* _tmp348_;
32637 ValaCCodeIdentifier* _tmp349_;
32638 ValaCCodeFunctionCall* _tmp350_;
32639 ValaCCodeFunctionCall* _tmp351_;
32640 ValaCCodeFunctionCall* ccall;
32641 ValaCCodeFunctionCall* _tmp352_;
32642 ValaCCodeExpression* _tmp353_;
32643 ValaCCodeFunctionCall* _tmp354_;
32644 ValaCCodeExpression* _tmp355_;
32645 ValaCCodeFunctionCall* _tmp356_;
32646 ValaCCodeConstant* _tmp357_;
32647 ValaCCodeConstant* _tmp358_;
32648 ValaCCodeFunction* _tmp359_;
32649 ValaCCodeFunction* _tmp360_;
32650 ValaTargetValue* _tmp361_;
32651 ValaCCodeExpression* _tmp362_ = NULL;
32652 ValaCCodeExpression* _tmp363_;
32653 ValaCCodeFunctionCall* _tmp364_;
32654 ValaBinaryExpression* _tmp365_;
32655 ValaTargetValue* _tmp366_;
32657 _tmp344_ = vala_expression_get_value_type ((ValaExpression*) _tmp343_);
32658 _tmp345_ = _tmp344_;
32660 _tmp347_ = vala_ccode_base_module_create_temp_value (self, _tmp345_, FALSE, (ValaCodeNode*) _tmp346_, NULL);
32661 temp_value = _tmp347_;
32662 _tmp348_ = vala_ccode_identifier_new ("g_strconcat");
32663 _tmp349_ = _tmp348_;
32664 _tmp350_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp349_);
32665 _tmp351_ = _tmp350_;
32666 _vala_ccode_node_unref0 (_tmp349_);
32670 vala_ccode_function_call_add_argument (_tmp352_, _tmp353_);
32673 vala_ccode_function_call_add_argument (_tmp354_, _tmp355_);
32675 _tmp357_ = vala_ccode_constant_new ("NULL");
32676 _tmp358_ = _tmp357_;
32677 vala_ccode_function_call_add_argument (_tmp356_, (ValaCCodeExpression*) _tmp358_);
32678 _vala_ccode_node_unref0 (_tmp358_);
32679 _tmp359_ = vala_ccode_base_module_get_ccode (self);
32680 _tmp360_ = _tmp359_;
32681 _tmp361_ = temp_value;
32682 _tmp362_ = vala_ccode_base_module_get_cvalue_ (self, _tmp361_);
32683 _tmp363_ = _tmp362_;
32685 vala_ccode_function_add_assignment (_tmp360_, _tmp363_, (ValaCCodeExpression*) _tmp364_);
32686 _vala_ccode_node_unref0 (_tmp363_);
32688 _tmp366_ = temp_value;
32689 vala_expression_set_target_value ((ValaExpression*) _tmp365_, _tmp366_);
32690 _vala_ccode_node_unref0 (ccall);
32691 _vala_target_value_unref0 (temp_value);
32692 _vala_ccode_node_unref0 (left_chain);
32693 _vala_ccode_node_unref0 (cright);
32694 _vala_ccode_node_unref0 (cleft);
32698 gboolean _tmp367_ = FALSE;
32699 gboolean _tmp368_ = FALSE;
32700 gboolean _tmp369_ = FALSE;
32701 gboolean _tmp370_ = FALSE;
32702 gboolean _tmp371_ = FALSE;
32703 ValaBinaryExpression* _tmp372_;
32704 ValaBinaryOperator _tmp373_;
32705 ValaBinaryOperator _tmp374_;
32712 _tmp373_ = vala_binary_expression_get_operator (_tmp372_);
32713 _tmp374_ = _tmp373_;
32714 if (_tmp374_ == VALA_BINARY_OPERATOR_EQUALITY) {
32717 ValaBinaryExpression* _tmp375_;
32718 ValaBinaryOperator _tmp376_;
32719 ValaBinaryOperator _tmp377_;
32721 _tmp376_ = vala_binary_expression_get_operator (_tmp375_);
32722 _tmp377_ = _tmp376_;
32723 _tmp371_ = _tmp377_ == VALA_BINARY_OPERATOR_INEQUALITY;
32725 _tmp378_ = _tmp371_;
32729 ValaBinaryExpression* _tmp379_;
32730 ValaBinaryOperator _tmp380_;
32731 ValaBinaryOperator _tmp381_;
32733 _tmp380_ = vala_binary_expression_get_operator (_tmp379_);
32734 _tmp381_ = _tmp380_;
32735 _tmp370_ = _tmp381_ == VALA_BINARY_OPERATOR_LESS_THAN;
32737 _tmp382_ = _tmp370_;
32741 ValaBinaryExpression* _tmp383_;
32742 ValaBinaryOperator _tmp384_;
32743 ValaBinaryOperator _tmp385_;
32745 _tmp384_ = vala_binary_expression_get_operator (_tmp383_);
32746 _tmp385_ = _tmp384_;
32747 _tmp369_ = _tmp385_ == VALA_BINARY_OPERATOR_GREATER_THAN;
32749 _tmp386_ = _tmp369_;
32753 ValaBinaryExpression* _tmp387_;
32754 ValaBinaryOperator _tmp388_;
32755 ValaBinaryOperator _tmp389_;
32757 _tmp388_ = vala_binary_expression_get_operator (_tmp387_);
32758 _tmp389_ = _tmp388_;
32759 _tmp368_ = _tmp389_ == VALA_BINARY_OPERATOR_LESS_THAN_OR_EQUAL;
32761 _tmp390_ = _tmp368_;
32765 ValaBinaryExpression* _tmp391_;
32766 ValaBinaryOperator _tmp392_;
32767 ValaBinaryOperator _tmp393_;
32769 _tmp392_ = vala_binary_expression_get_operator (_tmp391_);
32770 _tmp393_ = _tmp392_;
32771 _tmp367_ = _tmp393_ == VALA_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL;
32773 _tmp394_ = _tmp367_;
32775 ValaCCodeIdentifier* _tmp395_;
32776 ValaCCodeIdentifier* _tmp396_;
32777 ValaCCodeFunctionCall* _tmp397_;
32778 ValaCCodeFunctionCall* _tmp398_;
32779 ValaCCodeFunctionCall* ccall;
32780 ValaCCodeFunctionCall* _tmp399_;
32781 ValaCCodeExpression* _tmp400_;
32782 ValaCCodeFunctionCall* _tmp401_;
32783 ValaCCodeExpression* _tmp402_;
32784 ValaCCodeFunctionCall* _tmp403_;
32785 ValaCCodeExpression* _tmp404_;
32786 ValaCCodeConstant* _tmp405_;
32787 _tmp395_ = vala_ccode_identifier_new ("g_strcmp0");
32788 _tmp396_ = _tmp395_;
32789 _tmp397_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp396_);
32790 _tmp398_ = _tmp397_;
32791 _vala_ccode_node_unref0 (_tmp396_);
32795 vala_ccode_function_call_add_argument (_tmp399_, _tmp400_);
32798 vala_ccode_function_call_add_argument (_tmp401_, _tmp402_);
32800 _tmp404_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp403_);
32801 _vala_ccode_node_unref0 (cleft);
32803 _tmp405_ = vala_ccode_constant_new ("0");
32804 _vala_ccode_node_unref0 (cright);
32805 cright = (ValaCCodeExpression*) _tmp405_;
32806 _vala_ccode_node_unref0 (ccall);
32814 _tmp410_ = vala_ccode_binary_expression_new (_tmp407_, _tmp408_, _tmp409_);
32815 _tmp411_ = _tmp410_;
32816 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp406_, (ValaCCodeExpression*) _tmp411_);
32817 _vala_ccode_node_unref0 (_tmp411_);
32818 _tmp412_ = left_chain;
32819 if (_tmp412_ != NULL) {
32820 ValaBinaryExpression* _tmp413_;
32821 ValaCCodeExpression* _tmp414_;
32822 ValaBinaryExpression* _tmp415_;
32823 ValaCCodeExpression* _tmp416_ = NULL;
32824 ValaCCodeExpression* _tmp417_;
32825 ValaCCodeBinaryExpression* _tmp418_;
32826 ValaCCodeBinaryExpression* _tmp419_;
32828 _tmp414_ = left_chain;
32830 _tmp416_ = vala_ccode_base_module_get_cvalue (self, (ValaExpression*) _tmp415_);
32831 _tmp417_ = _tmp416_;
32832 _tmp418_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_AND, _tmp414_, _tmp417_);
32833 _tmp419_ = _tmp418_;
32834 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp413_, (ValaCCodeExpression*) _tmp419_);
32835 _vala_ccode_node_unref0 (_tmp419_);
32836 _vala_ccode_node_unref0 (_tmp417_);
32838 _vala_ccode_node_unref0 (left_chain);
32839 _vala_ccode_node_unref0 (cright);
32840 _vala_ccode_node_unref0 (cleft);
32844 static ValaCCodeExpression* vala_ccode_base_module_create_type_check (ValaCCodeBaseModule* self, ValaCCodeNode* ccodenode, ValaDataType* type) {
32845 ValaCCodeExpression* result = NULL;
32846 ValaDataType* _tmp0_;
32847 ValaErrorType* _tmp1_;
32849 gboolean _tmp2_ = FALSE;
32850 ValaErrorType* _tmp3_;
32852 g_return_val_if_fail (self != NULL, NULL);
32853 g_return_val_if_fail (ccodenode != NULL, NULL);
32854 g_return_val_if_fail (type != NULL, NULL);
32856 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ERROR_TYPE) ? ((ValaErrorType*) _tmp0_) : NULL);
32859 if (_tmp3_ != NULL) {
32860 ValaErrorType* _tmp4_;
32861 ValaErrorCode* _tmp5_;
32862 ValaErrorCode* _tmp6_;
32864 _tmp5_ = vala_error_type_get_error_code (_tmp4_);
32866 _tmp2_ = _tmp6_ != NULL;
32872 ValaCCodeIdentifier* _tmp8_;
32873 ValaCCodeIdentifier* _tmp9_;
32874 ValaCCodeFunctionCall* _tmp10_;
32875 ValaCCodeFunctionCall* _tmp11_;
32876 ValaCCodeFunctionCall* matches_call;
32877 ValaCCodeFunctionCall* _tmp12_;
32878 ValaCCodeNode* _tmp13_;
32879 ValaCCodeFunctionCall* _tmp14_;
32880 ValaErrorType* _tmp15_;
32881 ValaErrorDomain* _tmp16_;
32882 ValaErrorDomain* _tmp17_;
32883 gchar* _tmp18_ = NULL;
32885 ValaCCodeIdentifier* _tmp20_;
32886 ValaCCodeIdentifier* _tmp21_;
32887 ValaCCodeFunctionCall* _tmp22_;
32888 ValaErrorType* _tmp23_;
32889 ValaErrorCode* _tmp24_;
32890 ValaErrorCode* _tmp25_;
32891 gchar* _tmp26_ = NULL;
32893 ValaCCodeIdentifier* _tmp28_;
32894 ValaCCodeIdentifier* _tmp29_;
32895 _tmp8_ = vala_ccode_identifier_new ("g_error_matches");
32897 _tmp10_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp9_);
32899 _vala_ccode_node_unref0 (_tmp9_);
32900 matches_call = _tmp11_;
32901 _tmp12_ = matches_call;
32902 _tmp13_ = ccodenode;
32903 vala_ccode_function_call_add_argument (_tmp12_, G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression));
32904 _tmp14_ = matches_call;
32906 _tmp16_ = vala_error_type_get_error_domain (_tmp15_);
32908 _tmp18_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp17_, NULL);
32910 _tmp20_ = vala_ccode_identifier_new (_tmp19_);
32912 vala_ccode_function_call_add_argument (_tmp14_, (ValaCCodeExpression*) _tmp21_);
32913 _vala_ccode_node_unref0 (_tmp21_);
32914 _g_free0 (_tmp19_);
32915 _tmp22_ = matches_call;
32917 _tmp24_ = vala_error_type_get_error_code (_tmp23_);
32919 _tmp26_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp25_);
32921 _tmp28_ = vala_ccode_identifier_new (_tmp27_);
32923 vala_ccode_function_call_add_argument (_tmp22_, (ValaCCodeExpression*) _tmp29_);
32924 _vala_ccode_node_unref0 (_tmp29_);
32925 _g_free0 (_tmp27_);
32926 result = (ValaCCodeExpression*) matches_call;
32927 _vala_code_node_unref0 (et);
32930 gboolean _tmp30_ = FALSE;
32931 ValaErrorType* _tmp31_;
32934 if (_tmp31_ != NULL) {
32935 ValaErrorType* _tmp32_;
32936 ValaErrorDomain* _tmp33_;
32937 ValaErrorDomain* _tmp34_;
32939 _tmp33_ = vala_error_type_get_error_domain (_tmp32_);
32941 _tmp30_ = _tmp34_ != NULL;
32947 ValaCCodeNode* _tmp36_;
32948 ValaCCodeMemberAccess* _tmp37_;
32949 ValaCCodeMemberAccess* instance_domain;
32950 ValaErrorType* _tmp38_;
32951 ValaErrorDomain* _tmp39_;
32952 ValaErrorDomain* _tmp40_;
32953 gchar* _tmp41_ = NULL;
32955 ValaCCodeIdentifier* _tmp43_;
32956 ValaCCodeIdentifier* _tmp44_;
32957 ValaCCodeIdentifier* type_domain;
32958 ValaCCodeMemberAccess* _tmp45_;
32959 ValaCCodeIdentifier* _tmp46_;
32960 ValaCCodeBinaryExpression* _tmp47_;
32961 _tmp36_ = ccodenode;
32962 _tmp37_ = vala_ccode_member_access_new_pointer (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression), "domain");
32963 instance_domain = _tmp37_;
32965 _tmp39_ = vala_error_type_get_error_domain (_tmp38_);
32967 _tmp41_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp40_, NULL);
32969 _tmp43_ = vala_ccode_identifier_new (_tmp42_);
32971 _g_free0 (_tmp42_);
32972 type_domain = _tmp44_;
32973 _tmp45_ = instance_domain;
32974 _tmp46_ = type_domain;
32975 _tmp47_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp45_, (ValaCCodeExpression*) _tmp46_);
32976 result = (ValaCCodeExpression*) _tmp47_;
32977 _vala_ccode_node_unref0 (type_domain);
32978 _vala_ccode_node_unref0 (instance_domain);
32979 _vala_code_node_unref0 (et);
32982 ValaDataType* _tmp48_;
32983 ValaTypeSymbol* _tmp49_;
32984 ValaTypeSymbol* _tmp50_;
32985 gchar* _tmp51_ = NULL;
32987 const gchar* _tmp52_;
32988 ValaCCodeIdentifier* _tmp54_;
32989 ValaCCodeIdentifier* _tmp55_;
32990 ValaCCodeFunctionCall* _tmp56_;
32991 ValaCCodeFunctionCall* _tmp57_;
32992 ValaCCodeFunctionCall* ccheck;
32993 ValaCCodeFunctionCall* _tmp58_;
32994 ValaCCodeNode* _tmp59_;
32995 ValaCCodeFunctionCall* _tmp60_;
32996 const gchar* _tmp61_;
32997 ValaCCodeIdentifier* _tmp62_;
32998 ValaCCodeIdentifier* _tmp63_;
33000 _tmp49_ = vala_data_type_get_data_type (_tmp48_);
33002 _tmp51_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp50_);
33005 if (g_strcmp0 (_tmp52_, "") == 0) {
33006 ValaCCodeInvalidExpression* _tmp53_;
33007 _tmp53_ = vala_ccode_invalid_expression_new ();
33008 result = (ValaCCodeExpression*) _tmp53_;
33009 _g_free0 (type_id);
33010 _vala_code_node_unref0 (et);
33013 _tmp54_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
33015 _tmp56_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp55_);
33017 _vala_ccode_node_unref0 (_tmp55_);
33020 _tmp59_ = ccodenode;
33021 vala_ccode_function_call_add_argument (_tmp58_, G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression));
33024 _tmp62_ = vala_ccode_identifier_new (_tmp61_);
33026 vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) _tmp63_);
33027 _vala_ccode_node_unref0 (_tmp63_);
33028 result = (ValaCCodeExpression*) ccheck;
33029 _g_free0 (type_id);
33030 _vala_code_node_unref0 (et);
33034 _vala_code_node_unref0 (et);
33038 static gchar* vala_ccode_base_module_generate_array_contains_wrapper (ValaCCodeBaseModule* self, ValaArrayType* array_type) {
33039 gchar* result = NULL;
33040 ValaArrayType* _tmp0_;
33041 ValaDataType* _tmp1_;
33042 ValaDataType* _tmp2_;
33043 gchar* _tmp3_ = NULL;
33045 gchar* _tmp5_ = NULL;
33047 gchar* array_contains_func;
33048 const gchar* _tmp7_;
33049 gboolean _tmp8_ = FALSE;
33050 const gchar* _tmp9_;
33051 ValaCCodeFunction* _tmp10_;
33052 ValaCCodeFunction* function;
33053 ValaCCodeFunction* _tmp11_;
33054 ValaCCodeFunction* _tmp12_;
33055 ValaArrayType* _tmp13_;
33056 ValaDataType* _tmp14_;
33057 ValaDataType* _tmp15_;
33058 gchar* _tmp16_ = NULL;
33060 gchar* _tmp18_ = NULL;
33062 ValaCCodeParameter* _tmp20_;
33063 ValaCCodeParameter* _tmp21_;
33064 ValaCCodeFunction* _tmp22_;
33065 ValaCCodeParameter* _tmp23_;
33066 ValaCCodeParameter* _tmp24_;
33067 ValaArrayType* _tmp25_;
33068 ValaDataType* _tmp26_;
33069 ValaDataType* _tmp27_;
33070 ValaCCodeFunction* _tmp46_;
33071 ValaCCodeFunction* _tmp47_;
33072 ValaCCodeFunction* _tmp48_;
33073 ValaCCodeVariableDeclarator* _tmp49_;
33074 ValaCCodeVariableDeclarator* _tmp50_;
33075 ValaCCodeIdentifier* _tmp51_;
33076 ValaCCodeIdentifier* _tmp52_;
33077 ValaCCodeConstant* _tmp53_;
33078 ValaCCodeConstant* _tmp54_;
33079 ValaCCodeAssignment* _tmp55_;
33080 ValaCCodeAssignment* _tmp56_;
33081 ValaCCodeAssignment* cloop_initializer;
33082 ValaCCodeIdentifier* _tmp57_;
33083 ValaCCodeIdentifier* _tmp58_;
33084 ValaCCodeIdentifier* _tmp59_;
33085 ValaCCodeIdentifier* _tmp60_;
33086 ValaCCodeBinaryExpression* _tmp61_;
33087 ValaCCodeBinaryExpression* _tmp62_;
33088 ValaCCodeBinaryExpression* cloop_condition;
33089 ValaCCodeIdentifier* _tmp63_;
33090 ValaCCodeIdentifier* _tmp64_;
33091 ValaCCodeUnaryExpression* _tmp65_;
33092 ValaCCodeUnaryExpression* _tmp66_;
33093 ValaCCodeUnaryExpression* cloop_iterator;
33094 ValaCCodeFunction* _tmp67_;
33095 ValaCCodeFunction* _tmp68_;
33096 ValaCCodeAssignment* _tmp69_;
33097 ValaCCodeBinaryExpression* _tmp70_;
33098 ValaCCodeUnaryExpression* _tmp71_;
33099 ValaCCodeIdentifier* _tmp72_;
33100 ValaCCodeIdentifier* _tmp73_;
33101 ValaCCodeIdentifier* _tmp74_;
33102 ValaCCodeIdentifier* _tmp75_;
33103 ValaCCodeElementAccess* _tmp76_;
33104 ValaCCodeElementAccess* _tmp77_;
33105 ValaCCodeElementAccess* celement;
33106 ValaCCodeIdentifier* _tmp78_;
33107 ValaCCodeIdentifier* cneedle;
33108 ValaCCodeBinaryExpression* cif_condition = NULL;
33109 ValaArrayType* _tmp79_;
33110 ValaDataType* _tmp80_;
33111 ValaDataType* _tmp81_;
33112 ValaDataType* _tmp82_;
33113 gboolean _tmp83_ = FALSE;
33114 ValaCCodeFunction* _tmp123_;
33115 ValaCCodeFunction* _tmp124_;
33116 ValaCCodeBinaryExpression* _tmp125_;
33117 ValaCCodeFunction* _tmp126_;
33118 ValaCCodeFunction* _tmp127_;
33119 ValaCCodeConstant* _tmp128_;
33120 ValaCCodeConstant* _tmp129_;
33121 ValaCCodeFunction* _tmp130_;
33122 ValaCCodeFunction* _tmp131_;
33123 ValaCCodeFunction* _tmp132_;
33124 ValaCCodeFunction* _tmp133_;
33125 ValaCCodeFunction* _tmp134_;
33126 ValaCCodeFunction* _tmp135_;
33127 ValaCCodeConstant* _tmp136_;
33128 ValaCCodeConstant* _tmp137_;
33129 ValaCCodeFile* _tmp138_;
33130 ValaCCodeFunction* _tmp139_;
33131 ValaCCodeFile* _tmp140_;
33132 ValaCCodeFunction* _tmp141_;
33133 g_return_val_if_fail (self != NULL, NULL);
33134 g_return_val_if_fail (array_type != NULL, NULL);
33135 _tmp0_ = array_type;
33136 _tmp1_ = vala_array_type_get_element_type (_tmp0_);
33138 _tmp3_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp2_, NULL);
33140 _tmp5_ = g_strdup_printf ("_vala_%s_array_contains", _tmp4_);
33143 array_contains_func = _tmp6_;
33144 _tmp7_ = array_contains_func;
33145 _tmp8_ = vala_ccode_base_module_add_wrapper (self, _tmp7_);
33147 result = array_contains_func;
33150 _tmp9_ = array_contains_func;
33151 _tmp10_ = vala_ccode_function_new (_tmp9_, "gboolean");
33152 function = _tmp10_;
33153 _tmp11_ = function;
33154 vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC);
33155 _tmp12_ = function;
33156 _tmp13_ = array_type;
33157 _tmp14_ = vala_array_type_get_element_type (_tmp13_);
33159 _tmp16_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp15_);
33161 _tmp18_ = g_strdup_printf ("%s*", _tmp17_);
33163 _tmp20_ = vala_ccode_parameter_new ("stack", _tmp19_);
33165 vala_ccode_function_add_parameter (_tmp12_, _tmp21_);
33166 _vala_ccode_node_unref0 (_tmp21_);
33167 _g_free0 (_tmp19_);
33168 _g_free0 (_tmp17_);
33169 _tmp22_ = function;
33170 _tmp23_ = vala_ccode_parameter_new ("stack_length", "int");
33172 vala_ccode_function_add_parameter (_tmp22_, _tmp24_);
33173 _vala_ccode_node_unref0 (_tmp24_);
33174 _tmp25_ = array_type;
33175 _tmp26_ = vala_array_type_get_element_type (_tmp25_);
33177 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp27_, VALA_TYPE_STRUCT_VALUE_TYPE)) {
33178 ValaCCodeFunction* _tmp28_;
33179 ValaArrayType* _tmp29_;
33180 ValaDataType* _tmp30_;
33181 ValaDataType* _tmp31_;
33182 gchar* _tmp32_ = NULL;
33186 ValaCCodeParameter* _tmp36_;
33187 ValaCCodeParameter* _tmp37_;
33188 _tmp28_ = function;
33189 _tmp29_ = array_type;
33190 _tmp30_ = vala_array_type_get_element_type (_tmp29_);
33192 _tmp32_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp31_);
33194 _tmp34_ = g_strconcat (_tmp33_, "*", NULL);
33196 _tmp36_ = vala_ccode_parameter_new ("needle", _tmp35_);
33198 vala_ccode_function_add_parameter (_tmp28_, _tmp37_);
33199 _vala_ccode_node_unref0 (_tmp37_);
33200 _g_free0 (_tmp35_);
33201 _g_free0 (_tmp33_);
33203 ValaCCodeFunction* _tmp38_;
33204 ValaArrayType* _tmp39_;
33205 ValaDataType* _tmp40_;
33206 ValaDataType* _tmp41_;
33207 gchar* _tmp42_ = NULL;
33209 ValaCCodeParameter* _tmp44_;
33210 ValaCCodeParameter* _tmp45_;
33211 _tmp38_ = function;
33212 _tmp39_ = array_type;
33213 _tmp40_ = vala_array_type_get_element_type (_tmp39_);
33215 _tmp42_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp41_);
33217 _tmp44_ = vala_ccode_parameter_new ("needle", _tmp43_);
33219 vala_ccode_function_add_parameter (_tmp38_, _tmp45_);
33220 _vala_ccode_node_unref0 (_tmp45_);
33221 _g_free0 (_tmp43_);
33223 _tmp46_ = function;
33224 vala_ccode_base_module_push_function (self, _tmp46_);
33225 _tmp47_ = vala_ccode_base_module_get_ccode (self);
33227 _tmp49_ = vala_ccode_variable_declarator_new ("i", NULL, NULL);
33229 vala_ccode_function_add_declaration (_tmp48_, "int", (ValaCCodeDeclarator*) _tmp50_, 0);
33230 _vala_ccode_node_unref0 (_tmp50_);
33231 _tmp51_ = vala_ccode_identifier_new ("i");
33233 _tmp53_ = vala_ccode_constant_new ("0");
33235 _tmp55_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp52_, (ValaCCodeExpression*) _tmp54_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
33237 _vala_ccode_node_unref0 (_tmp54_);
33238 _vala_ccode_node_unref0 (_tmp52_);
33239 cloop_initializer = _tmp56_;
33240 _tmp57_ = vala_ccode_identifier_new ("i");
33242 _tmp59_ = vala_ccode_identifier_new ("stack_length");
33244 _tmp61_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_LESS_THAN, (ValaCCodeExpression*) _tmp58_, (ValaCCodeExpression*) _tmp60_);
33246 _vala_ccode_node_unref0 (_tmp60_);
33247 _vala_ccode_node_unref0 (_tmp58_);
33248 cloop_condition = _tmp62_;
33249 _tmp63_ = vala_ccode_identifier_new ("i");
33251 _tmp65_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp64_);
33253 _vala_ccode_node_unref0 (_tmp64_);
33254 cloop_iterator = _tmp66_;
33255 _tmp67_ = vala_ccode_base_module_get_ccode (self);
33257 _tmp69_ = cloop_initializer;
33258 _tmp70_ = cloop_condition;
33259 _tmp71_ = cloop_iterator;
33260 vala_ccode_function_open_for (_tmp68_, (ValaCCodeExpression*) _tmp69_, (ValaCCodeExpression*) _tmp70_, (ValaCCodeExpression*) _tmp71_);
33261 _tmp72_ = vala_ccode_identifier_new ("stack");
33263 _tmp74_ = vala_ccode_identifier_new ("i");
33265 _tmp76_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp73_, (ValaCCodeExpression*) _tmp75_);
33267 _vala_ccode_node_unref0 (_tmp75_);
33268 _vala_ccode_node_unref0 (_tmp73_);
33269 celement = _tmp77_;
33270 _tmp78_ = vala_ccode_identifier_new ("needle");
33272 _tmp79_ = array_type;
33273 _tmp80_ = vala_array_type_get_element_type (_tmp79_);
33275 _tmp82_ = self->string_type;
33276 _tmp83_ = vala_data_type_compatible (_tmp81_, _tmp82_);
33278 ValaCCodeIdentifier* _tmp84_;
33279 ValaCCodeIdentifier* _tmp85_;
33280 ValaCCodeFunctionCall* _tmp86_;
33281 ValaCCodeFunctionCall* _tmp87_;
33282 ValaCCodeFunctionCall* ccall;
33283 ValaCCodeFunctionCall* _tmp88_;
33284 ValaCCodeElementAccess* _tmp89_;
33285 ValaCCodeFunctionCall* _tmp90_;
33286 ValaCCodeIdentifier* _tmp91_;
33287 ValaCCodeFunctionCall* _tmp92_;
33288 ValaCCodeConstant* _tmp93_;
33289 ValaCCodeConstant* _tmp94_;
33290 ValaCCodeBinaryExpression* _tmp95_;
33291 _tmp84_ = vala_ccode_identifier_new ("g_strcmp0");
33293 _tmp86_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp85_);
33295 _vala_ccode_node_unref0 (_tmp85_);
33298 _tmp89_ = celement;
33299 vala_ccode_function_call_add_argument (_tmp88_, (ValaCCodeExpression*) _tmp89_);
33302 vala_ccode_function_call_add_argument (_tmp90_, (ValaCCodeExpression*) _tmp91_);
33304 _tmp93_ = vala_ccode_constant_new ("0");
33306 _tmp95_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp92_, (ValaCCodeExpression*) _tmp94_);
33307 _vala_ccode_node_unref0 (cif_condition);
33308 cif_condition = _tmp95_;
33309 _vala_ccode_node_unref0 (_tmp94_);
33310 _vala_ccode_node_unref0 (ccall);
33312 ValaArrayType* _tmp96_;
33313 ValaDataType* _tmp97_;
33314 ValaDataType* _tmp98_;
33315 _tmp96_ = array_type;
33316 _tmp97_ = vala_array_type_get_element_type (_tmp96_);
33318 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp98_, VALA_TYPE_STRUCT_VALUE_TYPE)) {
33319 ValaArrayType* _tmp99_;
33320 ValaDataType* _tmp100_;
33321 ValaDataType* _tmp101_;
33322 ValaTypeSymbol* _tmp102_;
33323 ValaTypeSymbol* _tmp103_;
33324 gchar* _tmp104_ = NULL;
33326 const gchar* _tmp105_;
33327 ValaCCodeIdentifier* _tmp106_;
33328 ValaCCodeIdentifier* _tmp107_;
33329 ValaCCodeFunctionCall* _tmp108_;
33330 ValaCCodeFunctionCall* _tmp109_;
33331 ValaCCodeFunctionCall* ccall;
33332 ValaCCodeFunctionCall* _tmp110_;
33333 ValaCCodeElementAccess* _tmp111_;
33334 ValaCCodeUnaryExpression* _tmp112_;
33335 ValaCCodeUnaryExpression* _tmp113_;
33336 ValaCCodeFunctionCall* _tmp114_;
33337 ValaCCodeIdentifier* _tmp115_;
33338 ValaCCodeFunctionCall* _tmp116_;
33339 ValaCCodeConstant* _tmp117_;
33340 ValaCCodeConstant* _tmp118_;
33341 ValaCCodeBinaryExpression* _tmp119_;
33342 _tmp99_ = array_type;
33343 _tmp100_ = vala_array_type_get_element_type (_tmp99_);
33344 _tmp101_ = _tmp100_;
33345 _tmp102_ = vala_data_type_get_data_type (_tmp101_);
33346 _tmp103_ = _tmp102_;
33347 _tmp104_ = vala_ccode_base_module_generate_struct_equal_function (self, G_TYPE_CHECK_INSTANCE_TYPE (G_TYPE_CHECK_INSTANCE_CAST (_tmp103_, VALA_TYPE_STRUCT, ValaStruct), VALA_TYPE_STRUCT) ? ((ValaStruct*) G_TYPE_CHECK_INSTANCE_CAST (_tmp103_, VALA_TYPE_STRUCT, ValaStruct)) : NULL);
33348 equalfunc = _tmp104_;
33349 _tmp105_ = equalfunc;
33350 _tmp106_ = vala_ccode_identifier_new (_tmp105_);
33351 _tmp107_ = _tmp106_;
33352 _tmp108_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp107_);
33353 _tmp109_ = _tmp108_;
33354 _vala_ccode_node_unref0 (_tmp107_);
33357 _tmp111_ = celement;
33358 _tmp112_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp111_);
33359 _tmp113_ = _tmp112_;
33360 vala_ccode_function_call_add_argument (_tmp110_, (ValaCCodeExpression*) _tmp113_);
33361 _vala_ccode_node_unref0 (_tmp113_);
33363 _tmp115_ = cneedle;
33364 vala_ccode_function_call_add_argument (_tmp114_, (ValaCCodeExpression*) _tmp115_);
33366 _tmp117_ = vala_ccode_constant_new ("TRUE");
33367 _tmp118_ = _tmp117_;
33368 _tmp119_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp116_, (ValaCCodeExpression*) _tmp118_);
33369 _vala_ccode_node_unref0 (cif_condition);
33370 cif_condition = _tmp119_;
33371 _vala_ccode_node_unref0 (_tmp118_);
33372 _vala_ccode_node_unref0 (ccall);
33373 _g_free0 (equalfunc);
33375 ValaCCodeIdentifier* _tmp120_;
33376 ValaCCodeElementAccess* _tmp121_;
33377 ValaCCodeBinaryExpression* _tmp122_;
33378 _tmp120_ = cneedle;
33379 _tmp121_ = celement;
33380 _tmp122_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp120_, (ValaCCodeExpression*) _tmp121_);
33381 _vala_ccode_node_unref0 (cif_condition);
33382 cif_condition = _tmp122_;
33385 _tmp123_ = vala_ccode_base_module_get_ccode (self);
33386 _tmp124_ = _tmp123_;
33387 _tmp125_ = cif_condition;
33388 vala_ccode_function_open_if (_tmp124_, (ValaCCodeExpression*) _tmp125_);
33389 _tmp126_ = vala_ccode_base_module_get_ccode (self);
33390 _tmp127_ = _tmp126_;
33391 _tmp128_ = vala_ccode_constant_new ("TRUE");
33392 _tmp129_ = _tmp128_;
33393 vala_ccode_function_add_return (_tmp127_, (ValaCCodeExpression*) _tmp129_);
33394 _vala_ccode_node_unref0 (_tmp129_);
33395 _tmp130_ = vala_ccode_base_module_get_ccode (self);
33396 _tmp131_ = _tmp130_;
33397 vala_ccode_function_close (_tmp131_);
33398 _tmp132_ = vala_ccode_base_module_get_ccode (self);
33399 _tmp133_ = _tmp132_;
33400 vala_ccode_function_close (_tmp133_);
33401 _tmp134_ = vala_ccode_base_module_get_ccode (self);
33402 _tmp135_ = _tmp134_;
33403 _tmp136_ = vala_ccode_constant_new ("FALSE");
33404 _tmp137_ = _tmp136_;
33405 vala_ccode_function_add_return (_tmp135_, (ValaCCodeExpression*) _tmp137_);
33406 _vala_ccode_node_unref0 (_tmp137_);
33407 vala_ccode_base_module_pop_function (self);
33408 _tmp138_ = self->cfile;
33409 _tmp139_ = function;
33410 vala_ccode_file_add_function_declaration (_tmp138_, _tmp139_);
33411 _tmp140_ = self->cfile;
33412 _tmp141_ = function;
33413 vala_ccode_file_add_function (_tmp140_, _tmp141_);
33414 result = array_contains_func;
33415 _vala_ccode_node_unref0 (cif_condition);
33416 _vala_ccode_node_unref0 (cneedle);
33417 _vala_ccode_node_unref0 (celement);
33418 _vala_ccode_node_unref0 (cloop_iterator);
33419 _vala_ccode_node_unref0 (cloop_condition);
33420 _vala_ccode_node_unref0 (cloop_initializer);
33421 _vala_ccode_node_unref0 (function);
33426 static void vala_ccode_base_module_real_visit_type_check (ValaCodeVisitor* base, ValaTypeCheck* expr) {
33427 ValaCCodeBaseModule * self;
33428 ValaTypeCheck* _tmp0_;
33429 ValaDataType* _tmp1_;
33430 ValaDataType* _tmp2_;
33431 ValaCCodeFile* _tmp3_;
33432 ValaTypeCheck* _tmp4_;
33433 ValaTypeCheck* _tmp5_;
33434 ValaExpression* _tmp6_;
33435 ValaExpression* _tmp7_;
33436 ValaCCodeExpression* _tmp8_ = NULL;
33437 ValaCCodeExpression* _tmp9_;
33438 ValaTypeCheck* _tmp10_;
33439 ValaDataType* _tmp11_;
33440 ValaDataType* _tmp12_;
33441 ValaCCodeExpression* _tmp13_ = NULL;
33442 ValaCCodeExpression* _tmp14_;
33443 ValaTypeCheck* _tmp15_;
33444 ValaCCodeExpression* _tmp16_ = NULL;
33445 ValaCCodeExpression* _tmp17_;
33447 self = (ValaCCodeBaseModule*) base;
33448 g_return_if_fail (expr != NULL);
33450 _tmp1_ = vala_typecheck_get_type_reference (_tmp0_);
33452 _tmp3_ = self->cfile;
33453 vala_ccode_base_module_generate_type_declaration (self, _tmp2_, _tmp3_);
33456 _tmp6_ = vala_typecheck_get_expression (_tmp5_);
33458 _tmp8_ = vala_ccode_base_module_get_cvalue (self, _tmp7_);
33461 _tmp11_ = vala_typecheck_get_type_reference (_tmp10_);
33463 _tmp13_ = vala_ccode_base_module_create_type_check (self, (ValaCCodeNode*) _tmp9_, _tmp12_);
33465 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp4_, _tmp14_);
33466 _vala_ccode_node_unref0 (_tmp14_);
33467 _vala_ccode_node_unref0 (_tmp9_);
33469 _tmp16_ = vala_ccode_base_module_get_cvalue (self, (ValaExpression*) _tmp15_);
33471 _tmp18_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, VALA_TYPE_CCODE_INVALID_EXPRESSION);
33472 _vala_ccode_node_unref0 (_tmp17_);
33474 ValaTypeCheck* _tmp19_;
33475 ValaSourceReference* _tmp20_;
33476 ValaSourceReference* _tmp21_;
33478 _tmp20_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp19_);
33480 vala_report_error (_tmp21_, "type check expressions not supported for compact classes, structs, and" \
33486 static void vala_ccode_base_module_real_visit_lambda_expression (ValaCodeVisitor* base, ValaLambdaExpression* lambda) {
33487 ValaCCodeBaseModule * self;
33488 ValaLambdaExpression* _tmp0_;
33489 ValaDataType* _tmp1_;
33490 ValaDataType* _tmp2_;
33491 ValaDelegateType* _tmp3_;
33492 ValaDelegateType* delegate_type;
33493 ValaDelegateType* _tmp4_;
33494 ValaDelegate* _tmp5_;
33495 ValaDelegate* _tmp6_;
33496 ValaDelegate* _tmp7_;
33498 ValaLambdaExpression* _tmp8_;
33499 ValaMethod* _tmp9_;
33500 ValaMethod* _tmp10_;
33501 ValaDelegate* _tmp11_;
33502 gboolean _tmp12_ = FALSE;
33503 ValaLambdaExpression* _tmp13_;
33504 ValaMethod* _tmp14_;
33505 ValaMethod* _tmp15_;
33506 ValaDelegate* _tmp16_;
33507 gboolean _tmp17_ = FALSE;
33508 ValaLambdaExpression* _tmp18_;
33509 ValaMethod* _tmp19_;
33510 ValaMethod* _tmp20_;
33511 ValaDelegate* _tmp21_;
33512 gchar* _tmp22_ = NULL;
33514 ValaLambdaExpression* _tmp24_;
33515 ValaLambdaExpression* _tmp25_;
33516 ValaDataType* _tmp26_;
33517 ValaDataType* _tmp27_;
33520 gboolean expr_owned;
33521 ValaLambdaExpression* _tmp30_;
33522 ValaLambdaExpression* _tmp31_;
33523 ValaMethod* _tmp32_;
33524 ValaMethod* _tmp33_;
33525 gchar* _tmp34_ = NULL;
33527 ValaCCodeIdentifier* _tmp36_;
33528 ValaCCodeIdentifier* _tmp37_;
33529 ValaLambdaExpression* _tmp38_;
33530 ValaMethod* _tmp39_;
33531 ValaMethod* _tmp40_;
33534 self = (ValaCCodeBaseModule*) base;
33535 g_return_if_fail (lambda != NULL);
33537 _tmp1_ = vala_expression_get_target_type ((ValaExpression*) _tmp0_);
33539 _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
33540 delegate_type = _tmp3_;
33541 _tmp4_ = delegate_type;
33542 _tmp5_ = vala_delegate_type_get_delegate_symbol (_tmp4_);
33544 _tmp7_ = _vala_code_node_ref0 (_tmp6_);
33547 _tmp9_ = vala_lambda_expression_get_method (_tmp8_);
33550 _tmp12_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp11_, "CCode", "array_length", FALSE);
33551 vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp10_, "CCode", "array_length", _tmp12_, NULL);
33553 _tmp14_ = vala_lambda_expression_get_method (_tmp13_);
33556 _tmp17_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp16_, "CCode", "array_null_terminated", FALSE);
33557 vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp15_, "CCode", "array_null_terminated", _tmp17_, NULL);
33559 _tmp19_ = vala_lambda_expression_get_method (_tmp18_);
33562 _tmp22_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp21_, "CCode", "array_length_type");
33564 vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp20_, "CCode", "array_length_type", _tmp23_, NULL);
33565 _g_free0 (_tmp23_);
33567 vala_code_node_accept_children ((ValaCodeNode*) _tmp24_, (ValaCodeVisitor*) self);
33569 _tmp26_ = vala_expression_get_value_type ((ValaExpression*) _tmp25_);
33571 _tmp28_ = vala_data_type_get_value_owned (_tmp27_);
33573 expr_owned = _tmp29_;
33576 _tmp32_ = vala_lambda_expression_get_method (_tmp31_);
33578 _tmp34_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp33_);
33580 _tmp36_ = vala_ccode_identifier_new (_tmp35_);
33582 vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp30_, (ValaCCodeExpression*) _tmp37_);
33583 _vala_ccode_node_unref0 (_tmp37_);
33584 _g_free0 (_tmp35_);
33586 _tmp39_ = vala_lambda_expression_get_method (_tmp38_);
33588 _tmp41_ = vala_method_get_closure (_tmp40_);
33591 ValaBlock* _tmp43_;
33592 ValaBlock* _tmp44_;
33596 gchar* _tmp47_ = NULL;
33598 ValaCCodeExpression* _tmp49_ = NULL;
33599 ValaCCodeExpression* _tmp50_;
33600 ValaCCodeExpression* delegate_target;
33601 gboolean _tmp51_ = FALSE;
33604 ValaLambdaExpression* _tmp77_;
33605 ValaCCodeExpression* _tmp78_;
33606 _tmp43_ = vala_ccode_base_module_get_current_closure_block (self);
33608 _tmp45_ = vala_ccode_base_module_get_block_id (self, _tmp44_);
33609 block_id = _tmp45_;
33610 _tmp46_ = block_id;
33611 _tmp47_ = g_strdup_printf ("_data%d_", _tmp46_);
33613 _tmp49_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp48_);
33615 _g_free0 (_tmp48_);
33616 delegate_target = _tmp50_;
33617 _tmp52_ = expr_owned;
33621 ValaDelegateType* _tmp53_;
33624 _tmp53_ = delegate_type;
33625 _tmp54_ = vala_delegate_type_get_is_called_once (_tmp53_);
33632 gchar* _tmp58_ = NULL;
33634 ValaCCodeIdentifier* _tmp60_;
33635 ValaCCodeIdentifier* _tmp61_;
33636 ValaCCodeFunctionCall* _tmp62_;
33637 ValaCCodeFunctionCall* _tmp63_;
33638 ValaCCodeFunctionCall* ref_call;
33639 ValaCCodeFunctionCall* _tmp64_;
33640 ValaCCodeExpression* _tmp65_;
33641 ValaCCodeFunctionCall* _tmp66_;
33642 ValaCCodeExpression* _tmp67_;
33643 ValaLambdaExpression* _tmp68_;
33645 gchar* _tmp70_ = NULL;
33647 ValaCCodeIdentifier* _tmp72_;
33648 ValaCCodeIdentifier* _tmp73_;
33649 _tmp57_ = block_id;
33650 _tmp58_ = g_strdup_printf ("block%d_data_ref", _tmp57_);
33652 _tmp60_ = vala_ccode_identifier_new (_tmp59_);
33654 _tmp62_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp61_);
33656 _vala_ccode_node_unref0 (_tmp61_);
33657 _g_free0 (_tmp59_);
33658 ref_call = _tmp63_;
33659 _tmp64_ = ref_call;
33660 _tmp65_ = delegate_target;
33661 vala_ccode_function_call_add_argument (_tmp64_, _tmp65_);
33662 _tmp66_ = ref_call;
33663 _tmp67_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp66_);
33664 _vala_ccode_node_unref0 (delegate_target);
33665 delegate_target = _tmp67_;
33667 _tmp69_ = block_id;
33668 _tmp70_ = g_strdup_printf ("block%d_data_unref", _tmp69_);
33670 _tmp72_ = vala_ccode_identifier_new (_tmp71_);
33672 vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp68_, (ValaCCodeExpression*) _tmp73_);
33673 _vala_ccode_node_unref0 (_tmp73_);
33674 _g_free0 (_tmp71_);
33675 _vala_ccode_node_unref0 (ref_call);
33677 ValaLambdaExpression* _tmp74_;
33678 ValaCCodeConstant* _tmp75_;
33679 ValaCCodeConstant* _tmp76_;
33681 _tmp75_ = vala_ccode_constant_new ("NULL");
33683 vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp74_, (ValaCCodeExpression*) _tmp76_);
33684 _vala_ccode_node_unref0 (_tmp76_);
33687 _tmp78_ = delegate_target;
33688 vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp77_, _tmp78_);
33689 _vala_ccode_node_unref0 (delegate_target);
33691 ValaDataType* _tmp79_ = NULL;
33692 ValaDataType* _tmp80_;
33694 _tmp79_ = vala_ccode_base_module_get_this_type (self);
33696 _tmp81_ = _tmp80_ != NULL;
33697 _vala_code_node_unref0 (_tmp80_);
33699 ValaCCodeExpression* _tmp82_ = NULL;
33700 ValaCCodeExpression* delegate_target;
33701 gboolean _tmp83_ = FALSE;
33704 ValaLambdaExpression* _tmp124_;
33705 ValaCCodeExpression* _tmp125_;
33706 _tmp82_ = vala_ccode_base_module_get_result_cexpression (self, "self");
33707 delegate_target = _tmp82_;
33708 _tmp84_ = expr_owned;
33712 ValaDelegateType* _tmp85_;
33715 _tmp85_ = delegate_type;
33716 _tmp86_ = vala_delegate_type_get_is_called_once (_tmp85_);
33722 ValaDataType* _tmp89_ = NULL;
33723 ValaDataType* _tmp90_;
33725 _tmp89_ = vala_ccode_base_module_get_this_type (self);
33727 _tmp91_ = _tmp90_ != NULL;
33728 _vala_code_node_unref0 (_tmp90_);
33730 ValaDataType* _tmp92_ = NULL;
33731 ValaDataType* _tmp93_;
33732 ValaLambdaExpression* _tmp94_;
33733 ValaSourceReference* _tmp95_;
33734 ValaSourceReference* _tmp96_;
33735 ValaCCodeExpression* _tmp97_ = NULL;
33736 ValaCCodeExpression* _tmp98_;
33737 ValaCCodeFunctionCall* _tmp99_;
33738 ValaCCodeFunctionCall* _tmp100_;
33739 ValaCCodeFunctionCall* ref_call;
33740 ValaCCodeFunctionCall* _tmp101_;
33741 ValaCCodeExpression* _tmp102_;
33742 ValaCCodeFunctionCall* _tmp103_;
33743 ValaCCodeExpression* _tmp104_;
33744 ValaLambdaExpression* _tmp105_;
33745 ValaDataType* _tmp106_ = NULL;
33746 ValaDataType* _tmp107_;
33747 ValaCCodeExpression* _tmp108_ = NULL;
33748 ValaCCodeExpression* _tmp109_;
33749 _tmp92_ = vala_ccode_base_module_get_this_type (self);
33752 _tmp95_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp94_);
33754 _tmp97_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp93_, _tmp96_, FALSE);
33756 _tmp99_ = vala_ccode_function_call_new (_tmp98_);
33757 _tmp100_ = _tmp99_;
33758 _vala_ccode_node_unref0 (_tmp98_);
33759 _vala_code_node_unref0 (_tmp93_);
33760 ref_call = _tmp100_;
33761 _tmp101_ = ref_call;
33762 _tmp102_ = delegate_target;
33763 vala_ccode_function_call_add_argument (_tmp101_, _tmp102_);
33764 _tmp103_ = ref_call;
33765 _tmp104_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp103_);
33766 _vala_ccode_node_unref0 (delegate_target);
33767 delegate_target = _tmp104_;
33769 _tmp106_ = vala_ccode_base_module_get_this_type (self);
33770 _tmp107_ = _tmp106_;
33771 _tmp108_ = vala_ccode_base_module_get_destroy_func_expression (self, _tmp107_, FALSE);
33772 _tmp109_ = _tmp108_;
33773 vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp105_, _tmp109_);
33774 _vala_ccode_node_unref0 (_tmp109_);
33775 _vala_code_node_unref0 (_tmp107_);
33776 _vala_ccode_node_unref0 (ref_call);
33778 ValaCCodeIdentifier* _tmp110_;
33779 ValaCCodeIdentifier* _tmp111_;
33780 ValaCCodeFunctionCall* _tmp112_;
33781 ValaCCodeFunctionCall* _tmp113_;
33782 ValaCCodeFunctionCall* ref_call;
33783 ValaCCodeFunctionCall* _tmp114_;
33784 ValaCCodeExpression* _tmp115_;
33785 ValaCCodeFunctionCall* _tmp116_;
33786 ValaCCodeExpression* _tmp117_;
33787 ValaLambdaExpression* _tmp118_;
33788 ValaCCodeIdentifier* _tmp119_;
33789 ValaCCodeIdentifier* _tmp120_;
33790 _tmp110_ = vala_ccode_identifier_new ("g_object_ref");
33791 _tmp111_ = _tmp110_;
33792 _tmp112_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp111_);
33793 _tmp113_ = _tmp112_;
33794 _vala_ccode_node_unref0 (_tmp111_);
33795 ref_call = _tmp113_;
33796 _tmp114_ = ref_call;
33797 _tmp115_ = delegate_target;
33798 vala_ccode_function_call_add_argument (_tmp114_, _tmp115_);
33799 _tmp116_ = ref_call;
33800 _tmp117_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp116_);
33801 _vala_ccode_node_unref0 (delegate_target);
33802 delegate_target = _tmp117_;
33804 _tmp119_ = vala_ccode_identifier_new ("g_object_unref");
33805 _tmp120_ = _tmp119_;
33806 vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp118_, (ValaCCodeExpression*) _tmp120_);
33807 _vala_ccode_node_unref0 (_tmp120_);
33808 _vala_ccode_node_unref0 (ref_call);
33811 ValaLambdaExpression* _tmp121_;
33812 ValaCCodeConstant* _tmp122_;
33813 ValaCCodeConstant* _tmp123_;
33815 _tmp122_ = vala_ccode_constant_new ("NULL");
33816 _tmp123_ = _tmp122_;
33817 vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp121_, (ValaCCodeExpression*) _tmp123_);
33818 _vala_ccode_node_unref0 (_tmp123_);
33821 _tmp125_ = delegate_target;
33822 vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp124_, _tmp125_);
33823 _vala_ccode_node_unref0 (delegate_target);
33825 ValaLambdaExpression* _tmp126_;
33826 ValaCCodeConstant* _tmp127_;
33827 ValaCCodeConstant* _tmp128_;
33828 ValaLambdaExpression* _tmp129_;
33829 ValaCCodeConstant* _tmp130_;
33830 ValaCCodeConstant* _tmp131_;
33832 _tmp127_ = vala_ccode_constant_new ("NULL");
33833 _tmp128_ = _tmp127_;
33834 vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp126_, (ValaCCodeExpression*) _tmp128_);
33835 _vala_ccode_node_unref0 (_tmp128_);
33837 _tmp130_ = vala_ccode_constant_new ("NULL");
33838 _tmp131_ = _tmp130_;
33839 vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp129_, (ValaCCodeExpression*) _tmp131_);
33840 _vala_ccode_node_unref0 (_tmp131_);
33843 _vala_code_node_unref0 (d);
33844 _vala_code_node_unref0 (delegate_type);
33848 ValaCCodeExpression* vala_ccode_base_module_convert_from_generic_pointer (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr, ValaDataType* actual_type) {
33849 ValaCCodeExpression* result = NULL;
33850 ValaCCodeExpression* _tmp0_;
33851 ValaCCodeExpression* _tmp1_;
33852 ValaCCodeExpression* _result_;
33853 gboolean _tmp2_ = FALSE;
33854 ValaDataType* _tmp3_;
33855 gboolean _tmp4_ = FALSE;
33857 g_return_val_if_fail (self != NULL, NULL);
33858 g_return_val_if_fail (cexpr != NULL, NULL);
33859 g_return_val_if_fail (actual_type != NULL, NULL);
33861 _tmp1_ = _vala_ccode_node_ref0 (_tmp0_);
33863 _tmp3_ = actual_type;
33864 _tmp4_ = vala_ccode_base_module_is_reference_type_argument (self, _tmp3_);
33868 ValaDataType* _tmp5_;
33869 gboolean _tmp6_ = FALSE;
33870 _tmp5_ = actual_type;
33871 _tmp6_ = vala_ccode_base_module_is_nullable_value_type_argument (self, _tmp5_);
33876 ValaCCodeExpression* _tmp8_;
33877 ValaDataType* _tmp9_;
33878 gchar* _tmp10_ = NULL;
33880 ValaCCodeCastExpression* _tmp12_;
33882 _tmp9_ = actual_type;
33883 _tmp10_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp9_);
33885 _tmp12_ = vala_ccode_cast_expression_new (_tmp8_, _tmp11_);
33886 _vala_ccode_node_unref0 (_result_);
33887 _result_ = (ValaCCodeExpression*) _tmp12_;
33888 _g_free0 (_tmp11_);
33890 ValaDataType* _tmp13_;
33891 gboolean _tmp14_ = FALSE;
33892 _tmp13_ = actual_type;
33893 _tmp14_ = vala_ccode_base_module_is_signed_integer_type_argument (self, _tmp13_);
33895 ValaCCodeExpression* _tmp15_;
33896 ValaCCodeCastExpression* _tmp16_;
33897 ValaCCodeCastExpression* _tmp17_;
33898 ValaDataType* _tmp18_;
33899 gchar* _tmp19_ = NULL;
33901 ValaCCodeCastExpression* _tmp21_;
33903 _tmp16_ = vala_ccode_cast_expression_new (_tmp15_, "gintptr");
33905 _tmp18_ = actual_type;
33906 _tmp19_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp18_);
33908 _tmp21_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp17_, _tmp20_);
33909 _vala_ccode_node_unref0 (_result_);
33910 _result_ = (ValaCCodeExpression*) _tmp21_;
33911 _g_free0 (_tmp20_);
33912 _vala_ccode_node_unref0 (_tmp17_);
33914 ValaDataType* _tmp22_;
33915 gboolean _tmp23_ = FALSE;
33916 _tmp22_ = actual_type;
33917 _tmp23_ = vala_ccode_base_module_is_unsigned_integer_type_argument (self, _tmp22_);
33919 ValaCCodeExpression* _tmp24_;
33920 ValaCCodeCastExpression* _tmp25_;
33921 ValaCCodeCastExpression* _tmp26_;
33922 ValaDataType* _tmp27_;
33923 gchar* _tmp28_ = NULL;
33925 ValaCCodeCastExpression* _tmp30_;
33927 _tmp25_ = vala_ccode_cast_expression_new (_tmp24_, "guintptr");
33929 _tmp27_ = actual_type;
33930 _tmp28_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp27_);
33932 _tmp30_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp26_, _tmp29_);
33933 _vala_ccode_node_unref0 (_result_);
33934 _result_ = (ValaCCodeExpression*) _tmp30_;
33935 _g_free0 (_tmp29_);
33936 _vala_ccode_node_unref0 (_tmp26_);
33945 ValaCCodeExpression* vala_ccode_base_module_convert_to_generic_pointer (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr, ValaDataType* actual_type) {
33946 ValaCCodeExpression* result = NULL;
33947 ValaCCodeExpression* _tmp0_;
33948 ValaCCodeExpression* _tmp1_;
33949 ValaCCodeExpression* _result_;
33950 ValaDataType* _tmp2_;
33951 gboolean _tmp3_ = FALSE;
33952 g_return_val_if_fail (self != NULL, NULL);
33953 g_return_val_if_fail (cexpr != NULL, NULL);
33954 g_return_val_if_fail (actual_type != NULL, NULL);
33956 _tmp1_ = _vala_ccode_node_ref0 (_tmp0_);
33958 _tmp2_ = actual_type;
33959 _tmp3_ = vala_ccode_base_module_is_signed_integer_type_argument (self, _tmp2_);
33961 ValaCCodeExpression* _tmp4_;
33962 ValaCCodeCastExpression* _tmp5_;
33963 ValaCCodeCastExpression* _tmp6_;
33964 ValaCCodeCastExpression* _tmp7_;
33966 _tmp5_ = vala_ccode_cast_expression_new (_tmp4_, "gintptr");
33968 _tmp7_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp6_, "gpointer");
33969 _vala_ccode_node_unref0 (_result_);
33970 _result_ = (ValaCCodeExpression*) _tmp7_;
33971 _vala_ccode_node_unref0 (_tmp6_);
33973 ValaDataType* _tmp8_;
33974 gboolean _tmp9_ = FALSE;
33975 _tmp8_ = actual_type;
33976 _tmp9_ = vala_ccode_base_module_is_unsigned_integer_type_argument (self, _tmp8_);
33978 ValaCCodeExpression* _tmp10_;
33979 ValaCCodeCastExpression* _tmp11_;
33980 ValaCCodeCastExpression* _tmp12_;
33981 ValaCCodeCastExpression* _tmp13_;
33983 _tmp11_ = vala_ccode_cast_expression_new (_tmp10_, "guintptr");
33985 _tmp13_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp12_, "gpointer");
33986 _vala_ccode_node_unref0 (_result_);
33987 _result_ = (ValaCCodeExpression*) _tmp13_;
33988 _vala_ccode_node_unref0 (_tmp12_);
33996 ValaTargetValue* vala_ccode_base_module_transform_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaDataType* target_type, ValaCodeNode* node) {
33997 ValaTargetValue* result = NULL;
33998 ValaTargetValue* _tmp0_;
33999 ValaDataType* _tmp1_;
34000 ValaDataType* _tmp2_;
34001 ValaDataType* _tmp3_;
34002 ValaDataType* type;
34003 ValaTargetValue* _tmp4_;
34004 ValaGLibValue* _tmp5_ = NULL;
34005 ValaGLibValue* _result_;
34006 gboolean requires_temp_value;
34007 gboolean _tmp6_ = FALSE;
34008 ValaDataType* _tmp7_;
34012 gboolean _tmp61_ = FALSE;
34013 gboolean _tmp62_ = FALSE;
34014 gboolean _tmp63_ = FALSE;
34015 ValaDataType* _tmp64_;
34020 gboolean _tmp75_ = FALSE;
34021 gboolean _tmp76_ = FALSE;
34022 gboolean _tmp77_ = FALSE;
34023 ValaDataType* _tmp78_;
34028 gboolean _tmp89_ = FALSE;
34029 gboolean _tmp90_ = FALSE;
34030 gboolean _tmp91_ = FALSE;
34031 ValaDataType* _tmp92_;
34035 gboolean gvalue_boxing;
34036 gboolean _tmp104_ = FALSE;
34037 gboolean _tmp105_ = FALSE;
34038 gboolean _tmp106_ = FALSE;
34039 ValaDataType* _tmp107_;
34043 gboolean gvariant_boxing;
34044 gboolean _tmp120_ = FALSE;
34045 gboolean _tmp121_ = FALSE;
34046 ValaDataType* _tmp122_;
34051 ValaDataType* _tmp166_;
34052 ValaGLibValue* _tmp167_;
34053 ValaDataType* _tmp168_;
34054 ValaDataType* _tmp169_ = NULL;
34055 ValaDataType* _tmp170_;
34057 gboolean _tmp391_ = FALSE;
34060 gboolean _tmp403_ = FALSE;
34061 gboolean _tmp404_ = FALSE;
34062 gboolean _tmp405_ = FALSE;
34063 gboolean _tmp406_ = FALSE;
34064 gboolean _tmp407_ = FALSE;
34071 g_return_val_if_fail (self != NULL, NULL);
34072 g_return_val_if_fail (value != NULL, NULL);
34073 g_return_val_if_fail (node != NULL, NULL);
34075 _tmp1_ = vala_target_value_get_value_type (_tmp0_);
34077 _tmp3_ = _vala_code_node_ref0 (_tmp2_);
34080 _tmp5_ = vala_glib_value_copy (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
34082 requires_temp_value = FALSE;
34084 _tmp8_ = vala_data_type_get_value_owned (_tmp7_);
34087 ValaDataType* _tmp10_;
34091 _tmp11_ = vala_data_type_get_floating_reference (_tmp10_);
34099 ValaDataType* _tmp14_;
34100 ValaTypeSymbol* _tmp15_;
34101 ValaTypeSymbol* _tmp16_;
34102 ValaObjectTypeSymbol* _tmp17_;
34103 ValaObjectTypeSymbol* cl;
34104 gchar* _tmp18_ = NULL;
34105 ValaObjectTypeSymbol* _tmp19_;
34106 const gchar* _tmp23_;
34109 const gchar* _tmp25_;
34111 _tmp15_ = vala_data_type_get_data_type (_tmp14_);
34113 _tmp17_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, VALA_TYPE_OBJECT_TYPE_SYMBOL) ? ((ValaObjectTypeSymbol*) _tmp16_) : NULL);
34116 if (_tmp19_ != NULL) {
34117 ValaObjectTypeSymbol* _tmp20_;
34118 gchar* _tmp21_ = NULL;
34120 _tmp21_ = vala_ccode_base_module_get_ccode_ref_sink_function (_tmp20_);
34121 _g_free0 (_tmp18_);
34125 _tmp22_ = g_strdup ("");
34126 _g_free0 (_tmp18_);
34130 _tmp24_ = g_strdup (_tmp23_);
34131 sink_func = _tmp24_;
34132 _tmp25_ = sink_func;
34133 if (g_strcmp0 (_tmp25_, "") != 0) {
34134 ValaDataType* _tmp26_;
34137 const gchar* _tmp38_;
34138 ValaCCodeIdentifier* _tmp39_;
34139 ValaCCodeIdentifier* _tmp40_;
34140 ValaCCodeFunctionCall* _tmp41_;
34141 ValaCCodeFunctionCall* _tmp42_;
34142 ValaCCodeFunctionCall* csink;
34143 ValaCCodeFunctionCall* _tmp43_;
34144 ValaGLibValue* _tmp44_;
34145 ValaCCodeExpression* _tmp45_;
34146 ValaCCodeFunction* _tmp46_;
34147 ValaCCodeFunction* _tmp47_;
34148 ValaCCodeFunctionCall* _tmp48_;
34149 ValaDataType* _tmp49_;
34153 _tmp27_ = vala_data_type_get_nullable (_tmp26_);
34156 ValaGLibValue* _tmp29_;
34157 ValaCCodeExpression* _tmp30_;
34158 ValaCCodeIdentifier* _tmp31_;
34159 ValaCCodeIdentifier* _tmp32_;
34160 ValaCCodeBinaryExpression* _tmp33_;
34161 ValaCCodeBinaryExpression* _tmp34_;
34162 ValaCCodeBinaryExpression* is_not_null;
34163 ValaCCodeFunction* _tmp35_;
34164 ValaCCodeFunction* _tmp36_;
34165 ValaCCodeBinaryExpression* _tmp37_;
34166 _tmp29_ = _result_;
34167 _tmp30_ = _tmp29_->cvalue;
34168 _tmp31_ = vala_ccode_identifier_new ("NULL");
34170 _tmp33_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp30_, (ValaCCodeExpression*) _tmp32_);
34172 _vala_ccode_node_unref0 (_tmp32_);
34173 is_not_null = _tmp34_;
34174 _tmp35_ = vala_ccode_base_module_get_ccode (self);
34176 _tmp37_ = is_not_null;
34177 vala_ccode_function_open_if (_tmp36_, (ValaCCodeExpression*) _tmp37_);
34178 _vala_ccode_node_unref0 (is_not_null);
34180 _tmp38_ = sink_func;
34181 _tmp39_ = vala_ccode_identifier_new (_tmp38_);
34183 _tmp41_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp40_);
34185 _vala_ccode_node_unref0 (_tmp40_);
34188 _tmp44_ = _result_;
34189 _tmp45_ = _tmp44_->cvalue;
34190 vala_ccode_function_call_add_argument (_tmp43_, _tmp45_);
34191 _tmp46_ = vala_ccode_base_module_get_ccode (self);
34194 vala_ccode_function_add_expression (_tmp47_, (ValaCCodeExpression*) _tmp48_);
34196 _tmp50_ = vala_data_type_get_nullable (_tmp49_);
34199 ValaCCodeFunction* _tmp52_;
34200 ValaCCodeFunction* _tmp53_;
34201 _tmp52_ = vala_ccode_base_module_get_ccode (self);
34203 vala_ccode_function_close (_tmp53_);
34205 _vala_ccode_node_unref0 (csink);
34207 ValaDataType* _tmp54_;
34208 ValaTypeSymbol* _tmp55_;
34209 ValaTypeSymbol* _tmp56_;
34210 const gchar* _tmp57_;
34211 const gchar* _tmp58_;
34212 gchar* _tmp59_ = NULL;
34215 _tmp55_ = vala_data_type_get_data_type (_tmp54_);
34217 _tmp57_ = vala_symbol_get_name ((ValaSymbol*) _tmp56_);
34219 _tmp59_ = g_strdup_printf ("type `%s' does not support floating references", _tmp58_);
34221 vala_report_error (NULL, _tmp60_);
34222 _g_free0 (_tmp60_);
34224 _g_free0 (sink_func);
34225 _g_free0 (_tmp18_);
34226 _vala_code_node_unref0 (cl);
34229 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp64_, VALA_TYPE_VALUE_TYPE)) {
34230 ValaDataType* _tmp65_;
34234 _tmp66_ = vala_data_type_get_nullable (_tmp65_);
34236 _tmp63_ = !_tmp67_;
34242 ValaDataType* _tmp69_;
34243 _tmp69_ = target_type;
34244 _tmp62_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp69_, VALA_TYPE_VALUE_TYPE);
34250 ValaDataType* _tmp71_;
34253 _tmp71_ = target_type;
34254 _tmp72_ = vala_data_type_get_nullable (_tmp71_);
34263 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp78_, VALA_TYPE_VALUE_TYPE)) {
34264 ValaDataType* _tmp79_;
34268 _tmp80_ = vala_data_type_get_nullable (_tmp79_);
34276 ValaDataType* _tmp83_;
34277 _tmp83_ = target_type;
34278 _tmp76_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp83_, VALA_TYPE_VALUE_TYPE);
34284 ValaDataType* _tmp85_;
34287 _tmp85_ = target_type;
34288 _tmp86_ = vala_data_type_get_nullable (_tmp85_);
34290 _tmp75_ = !_tmp87_;
34295 unboxing = _tmp88_;
34296 _tmp92_ = target_type;
34297 if (_tmp92_ != NULL) {
34298 ValaDataType* _tmp93_;
34299 ValaTypeSymbol* _tmp94_;
34300 ValaTypeSymbol* _tmp95_;
34301 ValaStruct* _tmp96_;
34302 _tmp93_ = target_type;
34303 _tmp94_ = vala_data_type_get_data_type (_tmp93_);
34305 _tmp96_ = self->gvalue_type;
34306 _tmp91_ = _tmp95_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp96_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
34312 ValaDataType* _tmp98_;
34314 _tmp90_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp98_, VALA_TYPE_NULL_TYPE);
34320 ValaDataType* _tmp100_;
34321 gchar* _tmp101_ = NULL;
34324 _tmp101_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp100_);
34325 _tmp102_ = _tmp101_;
34326 _tmp89_ = g_strcmp0 (_tmp102_, "G_TYPE_VALUE") != 0;
34327 _g_free0 (_tmp102_);
34331 _tmp103_ = _tmp89_;
34332 gvalue_boxing = _tmp103_;
34333 _tmp107_ = target_type;
34334 if (_tmp107_ != NULL) {
34335 ValaDataType* _tmp108_;
34336 ValaTypeSymbol* _tmp109_;
34337 ValaTypeSymbol* _tmp110_;
34338 ValaClass* _tmp111_;
34339 _tmp108_ = target_type;
34340 _tmp109_ = vala_data_type_get_data_type (_tmp108_);
34341 _tmp110_ = _tmp109_;
34342 _tmp111_ = self->gvariant_type;
34343 _tmp106_ = _tmp110_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp111_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
34347 _tmp112_ = _tmp106_;
34349 ValaDataType* _tmp113_;
34351 _tmp105_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp113_, VALA_TYPE_NULL_TYPE);
34355 _tmp114_ = _tmp105_;
34357 ValaDataType* _tmp115_;
34358 ValaTypeSymbol* _tmp116_;
34359 ValaTypeSymbol* _tmp117_;
34360 ValaClass* _tmp118_;
34362 _tmp116_ = vala_data_type_get_data_type (_tmp115_);
34363 _tmp117_ = _tmp116_;
34364 _tmp118_ = self->gvariant_type;
34365 _tmp104_ = _tmp117_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp118_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
34369 _tmp119_ = _tmp104_;
34370 gvariant_boxing = _tmp119_;
34372 _tmp123_ = vala_data_type_get_value_owned (_tmp122_);
34373 _tmp124_ = _tmp123_;
34375 gboolean _tmp125_ = FALSE;
34376 gboolean _tmp126_ = FALSE;
34377 gboolean _tmp127_ = FALSE;
34378 gboolean _tmp128_ = FALSE;
34379 ValaDataType* _tmp129_;
34384 _tmp129_ = target_type;
34385 if (_tmp129_ == NULL) {
34388 ValaDataType* _tmp130_;
34391 _tmp130_ = target_type;
34392 _tmp131_ = vala_data_type_get_value_owned (_tmp130_);
34393 _tmp132_ = _tmp131_;
34394 _tmp128_ = !_tmp132_;
34396 _tmp133_ = _tmp128_;
34402 _tmp127_ = _tmp134_;
34404 _tmp135_ = _tmp127_;
34409 _tmp136_ = unboxing;
34410 _tmp126_ = _tmp136_;
34412 _tmp137_ = _tmp126_;
34417 _tmp138_ = gvariant_boxing;
34418 _tmp125_ = _tmp138_;
34420 _tmp139_ = _tmp125_;
34421 _tmp121_ = _tmp139_;
34425 _tmp140_ = _tmp121_;
34428 _tmp141_ = gvalue_boxing;
34429 _tmp120_ = !_tmp141_;
34433 _tmp142_ = _tmp120_;
34435 ValaDataType* _tmp143_;
34436 _tmp143_ = target_type;
34437 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp143_, VALA_TYPE_POINTER_TYPE)) {
34439 ValaDataType* _tmp144_;
34440 gboolean _tmp145_ = FALSE;
34442 _tmp145_ = vala_ccode_base_module_requires_destroy (self, _tmp144_);
34444 ValaDataType* _tmp146_;
34445 gboolean _tmp147_ = FALSE;
34447 _tmp147_ = vala_ccode_base_module_is_lvalue_access_allowed (self, _tmp146_);
34449 ValaArrayList* _tmp148_;
34450 ValaArrayList* _tmp149_;
34451 ValaGLibValue* _tmp150_;
34452 ValaGLibValue* _tmp151_ = NULL;
34453 ValaGLibValue* _tmp152_;
34454 _tmp148_ = vala_ccode_base_module_get_temp_ref_values (self);
34455 _tmp149_ = _tmp148_;
34456 _tmp150_ = _result_;
34457 _tmp151_ = vala_glib_value_copy (_tmp150_);
34458 _tmp152_ = _tmp151_;
34459 vala_list_insert ((ValaList*) _tmp149_, 0, (ValaTargetValue*) _tmp152_);
34460 _vala_target_value_unref0 (_tmp152_);
34462 ValaDataType* _tmp153_;
34463 ValaCodeNode* _tmp154_;
34464 ValaTargetValue* _tmp155_ = NULL;
34465 ValaTargetValue* temp_value;
34466 ValaArrayList* _tmp156_;
34467 ValaArrayList* _tmp157_;
34468 ValaTargetValue* _tmp158_;
34469 ValaGLibValue* _tmp159_ = NULL;
34470 ValaGLibValue* _tmp160_;
34471 ValaTargetValue* _tmp161_;
34472 ValaGLibValue* _tmp162_;
34473 ValaGLibValue* _tmp163_;
34474 ValaTargetValue* _tmp164_;
34475 ValaCCodeExpression* _tmp165_ = NULL;
34478 _tmp155_ = vala_ccode_base_module_create_temp_value (self, _tmp153_, FALSE, _tmp154_, NULL);
34479 temp_value = _tmp155_;
34480 _tmp156_ = vala_ccode_base_module_get_temp_ref_values (self);
34481 _tmp157_ = _tmp156_;
34482 _tmp158_ = temp_value;
34483 _tmp159_ = vala_glib_value_copy (G_TYPE_CHECK_INSTANCE_CAST (_tmp158_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
34484 _tmp160_ = _tmp159_;
34485 vala_list_insert ((ValaList*) _tmp157_, 0, (ValaTargetValue*) _tmp160_);
34486 _vala_target_value_unref0 (_tmp160_);
34487 _tmp161_ = temp_value;
34488 _tmp162_ = _result_;
34489 vala_ccode_base_module_store_value (self, _tmp161_, (ValaTargetValue*) _tmp162_);
34490 _tmp163_ = _result_;
34491 _tmp164_ = temp_value;
34492 _tmp165_ = vala_ccode_base_module_get_cvalue_ (self, _tmp164_);
34493 _vala_ccode_node_unref0 (_tmp163_->cvalue);
34494 _tmp163_->cvalue = _tmp165_;
34495 requires_temp_value = FALSE;
34496 _vala_target_value_unref0 (temp_value);
34501 _tmp166_ = target_type;
34502 if (_tmp166_ == NULL) {
34503 result = (ValaTargetValue*) _result_;
34504 _vala_code_node_unref0 (type);
34507 _tmp167_ = _result_;
34508 _tmp168_ = target_type;
34509 _tmp169_ = vala_data_type_copy (_tmp168_);
34510 _tmp170_ = _tmp169_;
34511 vala_target_value_set_value_type ((ValaTargetValue*) _tmp167_, _tmp170_);
34512 _vala_code_node_unref0 (_tmp170_);
34513 _tmp171_ = gvalue_boxing;
34515 ValaDataType* _tmp172_;
34516 ValaCodeNode* _tmp173_;
34518 ValaTargetValue* _tmp175_ = NULL;
34519 ValaTargetValue* temp_value;
34520 ValaDataType* _tmp176_;
34523 ValaDataType* _tmp184_;
34526 ValaCCodeIdentifier* _tmp206_;
34527 ValaCCodeIdentifier* _tmp207_;
34528 ValaCCodeFunctionCall* _tmp208_;
34529 ValaCCodeFunctionCall* _tmp209_;
34530 ValaCCodeFunctionCall* ccall;
34531 ValaDataType* _tmp210_;
34534 ValaDataType* _tmp223_;
34535 gchar* _tmp224_ = NULL;
34537 const gchar* _tmp225_;
34538 ValaCCodeFunctionCall* _tmp234_;
34539 const gchar* _tmp235_;
34540 ValaCCodeIdentifier* _tmp236_;
34541 ValaCCodeIdentifier* _tmp237_;
34542 ValaCCodeFunction* _tmp238_;
34543 ValaCCodeFunction* _tmp239_;
34544 ValaCCodeFunctionCall* _tmp240_;
34545 ValaDataType* _tmp241_;
34546 gboolean _tmp242_ = FALSE;
34547 ValaDataType* _tmp251_;
34550 ValaDataType* _tmp264_;
34551 gboolean _tmp265_ = FALSE;
34552 ValaCCodeFunction* _tmp274_;
34553 ValaCCodeFunction* _tmp275_;
34554 ValaCCodeFunctionCall* _tmp276_;
34555 ValaTargetValue* _tmp277_;
34556 ValaGLibValue* _tmp278_;
34557 _tmp172_ = target_type;
34560 _tmp175_ = vala_ccode_base_module_create_temp_value (self, _tmp172_, TRUE, _tmp173_, &_tmp174_);
34561 temp_value = _tmp175_;
34562 _tmp176_ = target_type;
34563 _tmp177_ = vala_data_type_get_value_owned (_tmp176_);
34564 _tmp178_ = _tmp177_;
34566 ValaArrayList* _tmp179_;
34567 ValaArrayList* _tmp180_;
34568 ValaTargetValue* _tmp181_;
34569 ValaGLibValue* _tmp182_ = NULL;
34570 ValaGLibValue* _tmp183_;
34571 _tmp179_ = vala_ccode_base_module_get_temp_ref_values (self);
34572 _tmp180_ = _tmp179_;
34573 _tmp181_ = temp_value;
34574 _tmp182_ = vala_glib_value_copy (G_TYPE_CHECK_INSTANCE_CAST (_tmp181_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
34575 _tmp183_ = _tmp182_;
34576 vala_list_insert ((ValaList*) _tmp180_, 0, (ValaTargetValue*) _tmp183_);
34577 _vala_target_value_unref0 (_tmp183_);
34579 _tmp184_ = target_type;
34580 _tmp185_ = vala_data_type_get_nullable (_tmp184_);
34581 _tmp186_ = _tmp185_;
34583 ValaCCodeIdentifier* _tmp187_;
34584 ValaCCodeIdentifier* _tmp188_;
34585 ValaCCodeFunctionCall* _tmp189_;
34586 ValaCCodeFunctionCall* _tmp190_;
34587 ValaCCodeFunctionCall* newcall;
34588 ValaCCodeFunctionCall* _tmp191_;
34589 ValaCCodeConstant* _tmp192_;
34590 ValaCCodeConstant* _tmp193_;
34591 ValaCCodeFunctionCall* _tmp194_;
34592 ValaCCodeConstant* _tmp195_;
34593 ValaCCodeConstant* _tmp196_;
34594 ValaTargetValue* _tmp197_;
34595 ValaCCodeExpression* _tmp198_ = NULL;
34596 ValaCCodeExpression* _tmp199_;
34597 ValaCCodeFunctionCall* _tmp200_;
34598 ValaCCodeAssignment* _tmp201_;
34599 ValaCCodeAssignment* _tmp202_;
34600 ValaCCodeAssignment* newassignment;
34601 ValaCCodeFunction* _tmp203_;
34602 ValaCCodeFunction* _tmp204_;
34603 ValaCCodeAssignment* _tmp205_;
34604 _tmp187_ = vala_ccode_identifier_new ("g_new0");
34605 _tmp188_ = _tmp187_;
34606 _tmp189_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp188_);
34607 _tmp190_ = _tmp189_;
34608 _vala_ccode_node_unref0 (_tmp188_);
34609 newcall = _tmp190_;
34610 _tmp191_ = newcall;
34611 _tmp192_ = vala_ccode_constant_new ("GValue");
34612 _tmp193_ = _tmp192_;
34613 vala_ccode_function_call_add_argument (_tmp191_, (ValaCCodeExpression*) _tmp193_);
34614 _vala_ccode_node_unref0 (_tmp193_);
34615 _tmp194_ = newcall;
34616 _tmp195_ = vala_ccode_constant_new ("1");
34617 _tmp196_ = _tmp195_;
34618 vala_ccode_function_call_add_argument (_tmp194_, (ValaCCodeExpression*) _tmp196_);
34619 _vala_ccode_node_unref0 (_tmp196_);
34620 _tmp197_ = temp_value;
34621 _tmp198_ = vala_ccode_base_module_get_cvalue_ (self, _tmp197_);
34622 _tmp199_ = _tmp198_;
34623 _tmp200_ = newcall;
34624 _tmp201_ = vala_ccode_assignment_new (_tmp199_, (ValaCCodeExpression*) _tmp200_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
34625 _tmp202_ = _tmp201_;
34626 _vala_ccode_node_unref0 (_tmp199_);
34627 newassignment = _tmp202_;
34628 _tmp203_ = vala_ccode_base_module_get_ccode (self);
34629 _tmp204_ = _tmp203_;
34630 _tmp205_ = newassignment;
34631 vala_ccode_function_add_expression (_tmp204_, (ValaCCodeExpression*) _tmp205_);
34632 _vala_ccode_node_unref0 (newassignment);
34633 _vala_ccode_node_unref0 (newcall);
34635 _tmp206_ = vala_ccode_identifier_new ("g_value_init");
34636 _tmp207_ = _tmp206_;
34637 _tmp208_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp207_);
34638 _tmp209_ = _tmp208_;
34639 _vala_ccode_node_unref0 (_tmp207_);
34641 _tmp210_ = target_type;
34642 _tmp211_ = vala_data_type_get_nullable (_tmp210_);
34643 _tmp212_ = _tmp211_;
34645 ValaCCodeFunctionCall* _tmp213_;
34646 ValaTargetValue* _tmp214_;
34647 ValaCCodeExpression* _tmp215_ = NULL;
34648 ValaCCodeExpression* _tmp216_;
34650 _tmp214_ = temp_value;
34651 _tmp215_ = vala_ccode_base_module_get_cvalue_ (self, _tmp214_);
34652 _tmp216_ = _tmp215_;
34653 vala_ccode_function_call_add_argument (_tmp213_, _tmp216_);
34654 _vala_ccode_node_unref0 (_tmp216_);
34656 ValaCCodeFunctionCall* _tmp217_;
34657 ValaTargetValue* _tmp218_;
34658 ValaCCodeExpression* _tmp219_ = NULL;
34659 ValaCCodeExpression* _tmp220_;
34660 ValaCCodeUnaryExpression* _tmp221_;
34661 ValaCCodeUnaryExpression* _tmp222_;
34663 _tmp218_ = temp_value;
34664 _tmp219_ = vala_ccode_base_module_get_cvalue_ (self, _tmp218_);
34665 _tmp220_ = _tmp219_;
34666 _tmp221_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp220_);
34667 _tmp222_ = _tmp221_;
34668 vala_ccode_function_call_add_argument (_tmp217_, (ValaCCodeExpression*) _tmp222_);
34669 _vala_ccode_node_unref0 (_tmp222_);
34670 _vala_ccode_node_unref0 (_tmp220_);
34673 _tmp224_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp223_);
34674 type_id = _tmp224_;
34675 _tmp225_ = type_id;
34676 if (g_strcmp0 (_tmp225_, "") == 0) {
34677 ValaCodeNode* _tmp226_;
34678 ValaSourceReference* _tmp227_;
34679 ValaSourceReference* _tmp228_;
34680 ValaDataType* _tmp229_;
34681 gchar* _tmp230_ = NULL;
34683 gchar* _tmp232_ = NULL;
34686 _tmp227_ = vala_code_node_get_source_reference (_tmp226_);
34687 _tmp228_ = _tmp227_;
34689 _tmp230_ = vala_code_node_to_string ((ValaCodeNode*) _tmp229_);
34690 _tmp231_ = _tmp230_;
34691 _tmp232_ = g_strdup_printf ("GValue boxing of type `%s' is not supported", _tmp231_);
34692 _tmp233_ = _tmp232_;
34693 vala_report_error (_tmp228_, _tmp233_);
34694 _g_free0 (_tmp233_);
34695 _g_free0 (_tmp231_);
34698 _tmp235_ = type_id;
34699 _tmp236_ = vala_ccode_identifier_new (_tmp235_);
34700 _tmp237_ = _tmp236_;
34701 vala_ccode_function_call_add_argument (_tmp234_, (ValaCCodeExpression*) _tmp237_);
34702 _vala_ccode_node_unref0 (_tmp237_);
34703 _tmp238_ = vala_ccode_base_module_get_ccode (self);
34704 _tmp239_ = _tmp238_;
34706 vala_ccode_function_add_expression (_tmp239_, (ValaCCodeExpression*) _tmp240_);
34708 _tmp242_ = vala_ccode_base_module_requires_destroy (self, _tmp241_);
34710 ValaDataType* _tmp243_;
34711 ValaCCodeIdentifier* _tmp244_ = NULL;
34712 ValaCCodeIdentifier* _tmp245_;
34713 ValaCCodeFunctionCall* _tmp246_;
34715 _tmp244_ = vala_ccode_base_module_get_value_taker_function (self, _tmp243_);
34716 _tmp245_ = _tmp244_;
34717 _tmp246_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp245_);
34718 _vala_ccode_node_unref0 (ccall);
34720 _vala_ccode_node_unref0 (_tmp245_);
34722 ValaDataType* _tmp247_;
34723 ValaCCodeIdentifier* _tmp248_ = NULL;
34724 ValaCCodeIdentifier* _tmp249_;
34725 ValaCCodeFunctionCall* _tmp250_;
34727 _tmp248_ = vala_ccode_base_module_get_value_setter_function (self, _tmp247_);
34728 _tmp249_ = _tmp248_;
34729 _tmp250_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp249_);
34730 _vala_ccode_node_unref0 (ccall);
34732 _vala_ccode_node_unref0 (_tmp249_);
34734 _tmp251_ = target_type;
34735 _tmp252_ = vala_data_type_get_nullable (_tmp251_);
34736 _tmp253_ = _tmp252_;
34738 ValaCCodeFunctionCall* _tmp254_;
34739 ValaTargetValue* _tmp255_;
34740 ValaCCodeExpression* _tmp256_ = NULL;
34741 ValaCCodeExpression* _tmp257_;
34743 _tmp255_ = temp_value;
34744 _tmp256_ = vala_ccode_base_module_get_cvalue_ (self, _tmp255_);
34745 _tmp257_ = _tmp256_;
34746 vala_ccode_function_call_add_argument (_tmp254_, _tmp257_);
34747 _vala_ccode_node_unref0 (_tmp257_);
34749 ValaCCodeFunctionCall* _tmp258_;
34750 ValaTargetValue* _tmp259_;
34751 ValaCCodeExpression* _tmp260_ = NULL;
34752 ValaCCodeExpression* _tmp261_;
34753 ValaCCodeUnaryExpression* _tmp262_;
34754 ValaCCodeUnaryExpression* _tmp263_;
34756 _tmp259_ = temp_value;
34757 _tmp260_ = vala_ccode_base_module_get_cvalue_ (self, _tmp259_);
34758 _tmp261_ = _tmp260_;
34759 _tmp262_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp261_);
34760 _tmp263_ = _tmp262_;
34761 vala_ccode_function_call_add_argument (_tmp258_, (ValaCCodeExpression*) _tmp263_);
34762 _vala_ccode_node_unref0 (_tmp263_);
34763 _vala_ccode_node_unref0 (_tmp261_);
34766 _tmp265_ = vala_data_type_is_real_non_null_struct_type (_tmp264_);
34768 ValaCCodeFunctionCall* _tmp266_;
34769 ValaGLibValue* _tmp267_;
34770 ValaCCodeExpression* _tmp268_;
34771 ValaCCodeUnaryExpression* _tmp269_;
34772 ValaCCodeUnaryExpression* _tmp270_;
34774 _tmp267_ = _result_;
34775 _tmp268_ = _tmp267_->cvalue;
34776 _tmp269_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp268_);
34777 _tmp270_ = _tmp269_;
34778 vala_ccode_function_call_add_argument (_tmp266_, (ValaCCodeExpression*) _tmp270_);
34779 _vala_ccode_node_unref0 (_tmp270_);
34781 ValaCCodeFunctionCall* _tmp271_;
34782 ValaGLibValue* _tmp272_;
34783 ValaCCodeExpression* _tmp273_;
34785 _tmp272_ = _result_;
34786 _tmp273_ = _tmp272_->cvalue;
34787 vala_ccode_function_call_add_argument (_tmp271_, _tmp273_);
34789 _tmp274_ = vala_ccode_base_module_get_ccode (self);
34790 _tmp275_ = _tmp274_;
34792 vala_ccode_function_add_expression (_tmp275_, (ValaCCodeExpression*) _tmp276_);
34793 _tmp277_ = temp_value;
34794 _tmp278_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp277_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
34795 _vala_target_value_unref0 (_result_);
34796 _result_ = _tmp278_;
34797 requires_temp_value = FALSE;
34798 _g_free0 (type_id);
34799 _vala_ccode_node_unref0 (ccall);
34800 _vala_target_value_unref0 (temp_value);
34803 _tmp279_ = gvariant_boxing;
34807 gchar* _tmp282_ = NULL;
34808 gchar* variant_func;
34809 const gchar* _tmp283_;
34810 ValaCCodeIdentifier* _tmp284_;
34811 ValaCCodeIdentifier* _tmp285_;
34812 ValaCCodeFunctionCall* _tmp286_;
34813 ValaCCodeFunctionCall* _tmp287_;
34814 ValaCCodeFunctionCall* ccall;
34815 ValaCCodeFunctionCall* _tmp288_;
34816 ValaGLibValue* _tmp289_;
34817 ValaCCodeExpression* _tmp290_;
34818 const gchar* _tmp291_;
34819 ValaCCodeFunction* _tmp292_;
34820 ValaCCodeFunction* cfunc;
34821 ValaCCodeFunction* _tmp293_;
34822 ValaCCodeFunction* _tmp294_;
34823 ValaDataType* _tmp295_;
34824 gchar* _tmp296_ = NULL;
34826 ValaCCodeParameter* _tmp298_;
34827 ValaCCodeParameter* _tmp299_;
34828 ValaDataType* _tmp300_;
34829 ValaCCodeFunction* _tmp321_;
34830 ValaCCodeIdentifier* _tmp322_;
34831 ValaCCodeIdentifier* _tmp323_;
34832 ValaCCodeFunctionCall* _tmp324_;
34833 ValaCCodeFunctionCall* _tmp325_;
34834 ValaCCodeFunctionCall* sink;
34835 ValaCCodeFunctionCall* _tmp326_;
34836 ValaDataType* _tmp327_;
34837 ValaCCodeIdentifier* _tmp328_;
34838 ValaCCodeIdentifier* _tmp329_;
34839 ValaCCodeExpression* _tmp330_ = NULL;
34840 ValaCCodeExpression* _tmp331_;
34841 ValaCCodeFunction* _tmp332_;
34842 ValaCCodeFunction* _tmp333_;
34843 ValaCCodeFunctionCall* _tmp334_;
34844 ValaCCodeFile* _tmp335_;
34845 ValaCCodeFunction* _tmp336_;
34846 ValaCCodeFile* _tmp337_;
34847 ValaCCodeFunction* _tmp338_;
34848 ValaGLibValue* _tmp339_;
34849 ValaCCodeFunctionCall* _tmp340_;
34850 ValaCCodeExpression* _tmp341_;
34851 _tmp280_ = self->priv->next_variant_function_id;
34852 self->priv->next_variant_function_id = _tmp280_ + 1;
34853 _tmp281_ = self->priv->next_variant_function_id;
34854 _tmp282_ = g_strdup_printf ("_variant_new%d", _tmp281_);
34855 variant_func = _tmp282_;
34856 _tmp283_ = variant_func;
34857 _tmp284_ = vala_ccode_identifier_new (_tmp283_);
34858 _tmp285_ = _tmp284_;
34859 _tmp286_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp285_);
34860 _tmp287_ = _tmp286_;
34861 _vala_ccode_node_unref0 (_tmp285_);
34864 _tmp289_ = _result_;
34865 _tmp290_ = _tmp289_->cvalue;
34866 vala_ccode_function_call_add_argument (_tmp288_, _tmp290_);
34867 _tmp291_ = variant_func;
34868 _tmp292_ = vala_ccode_function_new (_tmp291_, "GVariant*");
34871 vala_ccode_function_set_modifiers (_tmp293_, VALA_CCODE_MODIFIERS_STATIC);
34874 _tmp296_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp295_);
34875 _tmp297_ = _tmp296_;
34876 _tmp298_ = vala_ccode_parameter_new ("value", _tmp297_);
34877 _tmp299_ = _tmp298_;
34878 vala_ccode_function_add_parameter (_tmp294_, _tmp299_);
34879 _vala_ccode_node_unref0 (_tmp299_);
34880 _g_free0 (_tmp297_);
34882 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp300_, VALA_TYPE_ARRAY_TYPE)) {
34883 ValaDataType* _tmp301_;
34884 ValaArrayType* _tmp302_;
34885 ValaArrayType* array_type;
34887 _tmp302_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp301_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
34888 array_type = _tmp302_;
34898 ValaArrayType* _tmp307_;
34901 ValaCCodeFunctionCall* _tmp310_;
34902 ValaTargetValue* _tmp311_;
34904 ValaCCodeExpression* _tmp313_ = NULL;
34905 ValaCCodeExpression* _tmp314_;
34906 ValaCCodeFunction* _tmp315_;
34908 gchar* _tmp317_ = NULL;
34910 ValaCCodeParameter* _tmp319_;
34911 ValaCCodeParameter* _tmp320_;
34912 _tmp304_ = _tmp303_;
34916 dim = _tmp305_ + 1;
34920 _tmp307_ = array_type;
34921 _tmp308_ = vala_array_type_get_rank (_tmp307_);
34922 _tmp309_ = _tmp308_;
34923 if (!(_tmp306_ <= _tmp309_)) {
34929 _tmp313_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp311_, _tmp312_);
34930 _tmp314_ = _tmp313_;
34931 vala_ccode_function_call_add_argument (_tmp310_, _tmp314_);
34932 _vala_ccode_node_unref0 (_tmp314_);
34935 _tmp317_ = vala_ccode_base_module_get_array_length_cname (self, "value", _tmp316_);
34936 _tmp318_ = _tmp317_;
34937 _tmp319_ = vala_ccode_parameter_new (_tmp318_, "gint");
34938 _tmp320_ = _tmp319_;
34939 vala_ccode_function_add_parameter (_tmp315_, _tmp320_);
34940 _vala_ccode_node_unref0 (_tmp320_);
34941 _g_free0 (_tmp318_);
34945 _vala_code_node_unref0 (array_type);
34948 vala_ccode_base_module_push_function (self, _tmp321_);
34949 _tmp322_ = vala_ccode_identifier_new ("g_variant_ref_sink");
34950 _tmp323_ = _tmp322_;
34951 _tmp324_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp323_);
34952 _tmp325_ = _tmp324_;
34953 _vala_ccode_node_unref0 (_tmp323_);
34957 _tmp328_ = vala_ccode_identifier_new ("value");
34958 _tmp329_ = _tmp328_;
34959 _tmp330_ = vala_ccode_base_module_serialize_expression (self, _tmp327_, (ValaCCodeExpression*) _tmp329_);
34960 _tmp331_ = _tmp330_;
34961 vala_ccode_function_call_add_argument (_tmp326_, _tmp331_);
34962 _vala_ccode_node_unref0 (_tmp331_);
34963 _vala_ccode_node_unref0 (_tmp329_);
34964 _tmp332_ = vala_ccode_base_module_get_ccode (self);
34965 _tmp333_ = _tmp332_;
34967 vala_ccode_function_add_return (_tmp333_, (ValaCCodeExpression*) _tmp334_);
34968 vala_ccode_base_module_pop_function (self);
34969 _tmp335_ = self->cfile;
34971 vala_ccode_file_add_function_declaration (_tmp335_, _tmp336_);
34972 _tmp337_ = self->cfile;
34974 vala_ccode_file_add_function (_tmp337_, _tmp338_);
34975 _tmp339_ = _result_;
34977 _tmp341_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp340_);
34978 _vala_ccode_node_unref0 (_tmp339_->cvalue);
34979 _tmp339_->cvalue = _tmp341_;
34980 requires_temp_value = TRUE;
34981 _vala_ccode_node_unref0 (sink);
34982 _vala_ccode_node_unref0 (cfunc);
34983 _vala_ccode_node_unref0 (ccall);
34984 _g_free0 (variant_func);
34989 ValaGLibValue* _tmp343_;
34990 ValaDataType* _tmp344_;
34991 ValaDataType* _tmp345_;
34992 gboolean _tmp346_ = FALSE;
34993 ValaGLibValue* _tmp347_;
34996 ValaGLibValue* _tmp371_;
34997 ValaGLibValue* _tmp372_;
34998 ValaCCodeExpression* _tmp373_;
34999 ValaCCodeUnaryExpression* _tmp374_;
35000 ValaGLibValue* _tmp375_;
35001 ValaGLibValue* _tmp376_;
35002 ValaDataType* _tmp377_;
35003 ValaDataType* _tmp378_;
35004 _tmp343_ = _result_;
35005 _tmp344_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp343_);
35006 _tmp345_ = _tmp344_;
35007 vala_data_type_set_nullable (_tmp345_, FALSE);
35008 _tmp347_ = _result_;
35009 _tmp348_ = _tmp347_->lvalue;
35013 ValaGLibValue* _tmp349_;
35014 ValaDataType* _tmp350_;
35015 ValaDataType* _tmp351_;
35016 ValaTargetValue* _tmp352_;
35017 ValaDataType* _tmp353_;
35018 ValaDataType* _tmp354_;
35019 gboolean _tmp355_ = FALSE;
35020 _tmp349_ = _result_;
35021 _tmp350_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp349_);
35022 _tmp351_ = _tmp350_;
35024 _tmp353_ = vala_target_value_get_value_type (_tmp352_);
35025 _tmp354_ = _tmp353_;
35026 _tmp355_ = vala_data_type_equals (_tmp351_, _tmp354_);
35027 _tmp346_ = !_tmp355_;
35029 _tmp356_ = _tmp346_;
35031 ValaGLibValue* _tmp357_;
35032 ValaGLibValue* _tmp358_;
35033 ValaCCodeExpression* _tmp359_;
35034 ValaTargetValue* _tmp360_;
35035 ValaDataType* _tmp361_;
35036 ValaDataType* _tmp362_;
35037 ValaGLibValue* _tmp363_;
35038 ValaDataType* _tmp364_;
35039 ValaDataType* _tmp365_;
35040 ValaCodeNode* _tmp366_;
35041 ValaCCodeExpression* _tmp367_ = NULL;
35042 ValaGLibValue* _tmp368_;
35043 ValaCodeNode* _tmp369_;
35044 ValaTargetValue* _tmp370_ = NULL;
35045 _tmp357_ = _result_;
35046 _tmp358_ = _result_;
35047 _tmp359_ = _tmp358_->cvalue;
35049 _tmp361_ = vala_target_value_get_value_type (_tmp360_);
35050 _tmp362_ = _tmp361_;
35051 _tmp363_ = _result_;
35052 _tmp364_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp363_);
35053 _tmp365_ = _tmp364_;
35055 _tmp367_ = vala_ccode_base_module_get_implicit_cast_expression (self, _tmp359_, _tmp362_, _tmp365_, _tmp366_);
35056 _vala_ccode_node_unref0 (_tmp357_->cvalue);
35057 _tmp357_->cvalue = _tmp367_;
35058 _tmp368_ = _result_;
35060 _tmp370_ = vala_ccode_base_module_store_temp_value (self, (ValaTargetValue*) _tmp368_, _tmp369_, NULL);
35061 _vala_target_value_unref0 (_result_);
35062 _result_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp370_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
35063 requires_temp_value = FALSE;
35065 _tmp371_ = _result_;
35066 _tmp372_ = _result_;
35067 _tmp373_ = _tmp372_->cvalue;
35068 _tmp374_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp373_);
35069 _vala_ccode_node_unref0 (_tmp371_->cvalue);
35070 _tmp371_->cvalue = (ValaCCodeExpression*) _tmp374_;
35071 _tmp375_ = _result_;
35072 _tmp375_->lvalue = FALSE;
35073 _tmp376_ = _result_;
35074 _tmp377_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp376_);
35075 _tmp378_ = _tmp377_;
35076 vala_data_type_set_nullable (_tmp378_, TRUE);
35079 _tmp379_ = unboxing;
35081 ValaGLibValue* _tmp380_;
35082 ValaGLibValue* _tmp381_;
35083 ValaCCodeExpression* _tmp382_;
35084 ValaCCodeUnaryExpression* _tmp383_;
35085 _tmp380_ = _result_;
35086 _tmp381_ = _result_;
35087 _tmp382_ = _tmp381_->cvalue;
35088 _tmp383_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp382_);
35089 _vala_ccode_node_unref0 (_tmp380_->cvalue);
35090 _tmp380_->cvalue = (ValaCCodeExpression*) _tmp383_;
35092 ValaGLibValue* _tmp384_;
35093 ValaGLibValue* _tmp385_;
35094 ValaCCodeExpression* _tmp386_;
35095 ValaDataType* _tmp387_;
35096 ValaDataType* _tmp388_;
35097 ValaCodeNode* _tmp389_;
35098 ValaCCodeExpression* _tmp390_ = NULL;
35099 _tmp384_ = _result_;
35100 _tmp385_ = _result_;
35101 _tmp386_ = _tmp385_->cvalue;
35103 _tmp388_ = target_type;
35105 _tmp390_ = vala_ccode_base_module_get_implicit_cast_expression (self, _tmp386_, _tmp387_, _tmp388_, _tmp389_);
35106 _vala_ccode_node_unref0 (_tmp384_->cvalue);
35107 _tmp384_->cvalue = _tmp390_;
35112 _tmp392_ = requires_temp_value;
35114 gboolean _tmp393_ = FALSE;
35115 ValaDataType* _tmp394_;
35117 _tmp394_ = target_type;
35118 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp394_, VALA_TYPE_ARRAY_TYPE)) {
35119 ValaDataType* _tmp395_;
35122 _tmp395_ = target_type;
35123 _tmp396_ = vala_array_type_get_inline_allocated (G_TYPE_CHECK_INSTANCE_CAST (_tmp395_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
35124 _tmp397_ = _tmp396_;
35125 _tmp393_ = _tmp397_;
35129 _tmp398_ = _tmp393_;
35130 _tmp391_ = !_tmp398_;
35134 _tmp399_ = _tmp391_;
35136 ValaGLibValue* _tmp400_;
35137 ValaCodeNode* _tmp401_;
35138 ValaTargetValue* _tmp402_ = NULL;
35139 _tmp400_ = _result_;
35141 _tmp402_ = vala_ccode_base_module_store_temp_value (self, (ValaTargetValue*) _tmp400_, _tmp401_, NULL);
35142 _vala_target_value_unref0 (_result_);
35143 _result_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp402_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
35145 _tmp408_ = gvalue_boxing;
35148 _tmp409_ = gvariant_boxing;
35149 _tmp407_ = !_tmp409_;
35153 _tmp410_ = _tmp407_;
35155 ValaDataType* _tmp411_;
35158 _tmp411_ = target_type;
35159 _tmp412_ = vala_data_type_get_value_owned (_tmp411_);
35160 _tmp413_ = _tmp412_;
35161 _tmp406_ = _tmp413_;
35165 _tmp414_ = _tmp406_;
35167 gboolean _tmp415_ = FALSE;
35168 gboolean _tmp416_ = FALSE;
35169 ValaDataType* _tmp417_;
35175 _tmp418_ = vala_data_type_get_value_owned (_tmp417_);
35176 _tmp419_ = _tmp418_;
35182 _tmp416_ = _tmp420_;
35184 _tmp421_ = _tmp416_;
35189 _tmp422_ = unboxing;
35190 _tmp415_ = _tmp422_;
35192 _tmp423_ = _tmp415_;
35193 _tmp405_ = _tmp423_;
35197 _tmp424_ = _tmp405_;
35199 ValaDataType* _tmp425_;
35200 gboolean _tmp426_ = FALSE;
35201 _tmp425_ = target_type;
35202 _tmp426_ = vala_ccode_base_module_requires_copy (self, _tmp425_);
35203 _tmp404_ = _tmp426_;
35207 _tmp427_ = _tmp404_;
35209 ValaDataType* _tmp428_;
35211 _tmp403_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp428_, VALA_TYPE_NULL_TYPE);
35215 _tmp429_ = _tmp403_;
35217 ValaGLibValue* _tmp430_;
35218 ValaCodeNode* _tmp431_;
35219 ValaTargetValue* _tmp432_ = NULL;
35220 ValaGLibValue* copy;
35221 gboolean _tmp433_ = FALSE;
35222 ValaDataType* _tmp434_;
35223 ValaTypeSymbol* _tmp435_;
35224 ValaTypeSymbol* _tmp436_;
35226 ValaGLibValue* _tmp449_;
35227 ValaGLibValue* _tmp450_;
35228 _tmp430_ = _result_;
35230 _tmp432_ = vala_ccode_base_module_copy_value (self, (ValaTargetValue*) _tmp430_, _tmp431_);
35231 copy = G_TYPE_CHECK_INSTANCE_CAST (_tmp432_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
35232 _tmp434_ = target_type;
35233 _tmp435_ = vala_data_type_get_data_type (_tmp434_);
35234 _tmp436_ = _tmp435_;
35235 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp436_, VALA_TYPE_INTERFACE)) {
35236 ValaGLibValue* _tmp437_;
35238 _tmp433_ = _tmp437_ == NULL;
35242 _tmp438_ = _tmp433_;
35244 ValaCodeNode* _tmp439_;
35245 ValaSourceReference* _tmp440_;
35246 ValaSourceReference* _tmp441_;
35247 ValaDataType* _tmp442_;
35248 ValaTypeSymbol* _tmp443_;
35249 ValaTypeSymbol* _tmp444_;
35250 gchar* _tmp445_ = NULL;
35252 gchar* _tmp447_ = NULL;
35255 _tmp440_ = vala_code_node_get_source_reference (_tmp439_);
35256 _tmp441_ = _tmp440_;
35257 _tmp442_ = target_type;
35258 _tmp443_ = vala_data_type_get_data_type (_tmp442_);
35259 _tmp444_ = _tmp443_;
35260 _tmp445_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp444_);
35261 _tmp446_ = _tmp445_;
35262 _tmp447_ = g_strdup_printf ("missing class prerequisite for interface `%s', add GLib.Object to inte" \
35263 "rface declaration if unsure", _tmp446_);
35264 _tmp448_ = _tmp447_;
35265 vala_report_error (_tmp441_, _tmp448_);
35266 _g_free0 (_tmp448_);
35267 _g_free0 (_tmp446_);
35268 result = (ValaTargetValue*) _result_;
35269 _vala_target_value_unref0 (copy);
35270 _vala_code_node_unref0 (type);
35274 _tmp450_ = _vala_target_value_ref0 (_tmp449_);
35275 _vala_target_value_unref0 (_result_);
35276 _result_ = _tmp450_;
35277 _vala_target_value_unref0 (copy);
35279 result = (ValaTargetValue*) _result_;
35280 _vala_code_node_unref0 (type);
35285 static ValaCCodeExpression* vala_ccode_base_module_real_get_implicit_cast_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node) {
35286 ValaCCodeExpression* result = NULL;
35287 ValaCCodeExpression* _tmp0_;
35288 ValaCCodeExpression* _tmp1_;
35289 ValaCCodeExpression* cexpr;
35290 gboolean _tmp2_ = FALSE;
35291 ValaDataType* _tmp3_;
35292 ValaTypeSymbol* _tmp4_;
35293 ValaTypeSymbol* _tmp5_;
35295 ValaDataType* _tmp13_;
35296 ValaDataType* _tmp14_;
35297 ValaCCodeFile* _tmp15_;
35298 ValaDataType* _tmp16_;
35299 ValaTypeSymbol* _tmp17_;
35300 ValaTypeSymbol* _tmp18_;
35301 ValaClass* _tmp19_;
35303 ValaDataType* _tmp20_;
35304 ValaTypeSymbol* _tmp21_;
35305 ValaTypeSymbol* _tmp22_;
35306 ValaInterface* _tmp23_;
35307 ValaInterface* iface;
35308 gboolean _tmp24_ = FALSE;
35309 ValaCodeContext* _tmp25_;
35313 g_return_val_if_fail (source_cexpr != NULL, NULL);
35314 _tmp0_ = source_cexpr;
35315 _tmp1_ = _vala_ccode_node_ref0 (_tmp0_);
35317 _tmp3_ = expression_type;
35318 _tmp4_ = vala_data_type_get_data_type (_tmp3_);
35320 if (_tmp5_ != NULL) {
35321 ValaDataType* _tmp6_;
35322 ValaTypeSymbol* _tmp7_;
35323 ValaTypeSymbol* _tmp8_;
35324 ValaDataType* _tmp9_;
35325 ValaTypeSymbol* _tmp10_;
35326 ValaTypeSymbol* _tmp11_;
35327 _tmp6_ = expression_type;
35328 _tmp7_ = vala_data_type_get_data_type (_tmp6_);
35330 _tmp9_ = target_type;
35331 _tmp10_ = vala_data_type_get_data_type (_tmp9_);
35333 _tmp2_ = _tmp8_ == _tmp11_;
35342 _tmp13_ = expression_type;
35343 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, VALA_TYPE_NULL_TYPE)) {
35347 _tmp14_ = target_type;
35348 _tmp15_ = self->cfile;
35349 vala_ccode_base_module_generate_type_declaration (self, _tmp14_, _tmp15_);
35350 _tmp16_ = target_type;
35351 _tmp17_ = vala_data_type_get_data_type (_tmp16_);
35353 _tmp19_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp18_) : NULL);
35355 _tmp20_ = target_type;
35356 _tmp21_ = vala_data_type_get_data_type (_tmp20_);
35358 _tmp23_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp22_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp22_) : NULL);
35360 _tmp25_ = self->priv->_context;
35361 _tmp26_ = vala_code_context_get_checking (_tmp25_);
35364 gboolean _tmp28_ = FALSE;
35365 ValaInterface* _tmp29_;
35368 if (_tmp29_ != NULL) {
35371 gboolean _tmp30_ = FALSE;
35372 ValaClass* _tmp31_;
35375 if (_tmp31_ != NULL) {
35376 ValaClass* _tmp32_;
35380 _tmp33_ = vala_class_get_is_compact (_tmp32_);
35382 _tmp30_ = !_tmp34_;
35396 ValaCCodeExpression* _tmp38_;
35397 ValaDataType* _tmp39_;
35398 ValaTypeSymbol* _tmp40_;
35399 ValaTypeSymbol* _tmp41_;
35400 ValaCCodeFunctionCall* _tmp42_ = NULL;
35402 _tmp39_ = target_type;
35403 _tmp40_ = vala_data_type_get_data_type (_tmp39_);
35405 _tmp42_ = vala_ccode_base_module_generate_instance_cast (self, _tmp38_, _tmp41_);
35406 result = (ValaCCodeExpression*) _tmp42_;
35407 _vala_code_node_unref0 (iface);
35408 _vala_code_node_unref0 (cl);
35409 _vala_ccode_node_unref0 (cexpr);
35412 gboolean _tmp43_ = FALSE;
35413 ValaDataType* _tmp44_;
35414 ValaTypeSymbol* _tmp45_;
35415 ValaTypeSymbol* _tmp46_;
35417 _tmp44_ = target_type;
35418 _tmp45_ = vala_data_type_get_data_type (_tmp44_);
35420 if (_tmp46_ != NULL) {
35421 ValaDataType* _tmp47_;
35422 gchar* _tmp48_ = NULL;
35424 ValaDataType* _tmp50_;
35425 gchar* _tmp51_ = NULL;
35427 _tmp47_ = expression_type;
35428 _tmp48_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp47_);
35430 _tmp50_ = target_type;
35431 _tmp51_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp50_);
35433 _tmp43_ = g_strcmp0 (_tmp49_, _tmp52_) != 0;
35434 _g_free0 (_tmp52_);
35435 _g_free0 (_tmp49_);
35441 ValaDataType* _tmp54_;
35442 ValaTypeSymbol* _tmp55_;
35443 ValaTypeSymbol* _tmp56_;
35444 ValaStruct* _tmp57_;
35446 gboolean _tmp58_ = FALSE;
35447 ValaDataType* _tmp59_;
35448 ValaTypeSymbol* _tmp60_;
35449 ValaTypeSymbol* _tmp61_;
35450 gboolean _tmp62_ = FALSE;
35452 _tmp54_ = target_type;
35453 _tmp55_ = vala_data_type_get_data_type (_tmp54_);
35455 _tmp57_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp56_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp56_) : NULL);
35457 _tmp59_ = target_type;
35458 _tmp60_ = vala_data_type_get_data_type (_tmp59_);
35460 _tmp62_ = vala_typesymbol_is_reference_type (_tmp61_);
35464 gboolean _tmp63_ = FALSE;
35465 ValaStruct* _tmp64_;
35468 if (_tmp64_ != NULL) {
35469 ValaStruct* _tmp65_;
35470 gboolean _tmp66_ = FALSE;
35472 _tmp66_ = vala_struct_is_simple_type (_tmp65_);
35482 ValaCCodeExpression* _tmp69_;
35483 ValaDataType* _tmp70_;
35484 gchar* _tmp71_ = NULL;
35486 ValaCCodeCastExpression* _tmp73_;
35487 ValaCCodeExpression* _tmp74_;
35489 _tmp70_ = target_type;
35490 _tmp71_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp70_);
35492 _tmp73_ = vala_ccode_cast_expression_new (_tmp69_, _tmp72_);
35493 _tmp74_ = (ValaCCodeExpression*) _tmp73_;
35494 _g_free0 (_tmp72_);
35496 _vala_code_node_unref0 (st);
35497 _vala_code_node_unref0 (iface);
35498 _vala_code_node_unref0 (cl);
35499 _vala_ccode_node_unref0 (cexpr);
35503 _vala_code_node_unref0 (st);
35504 _vala_code_node_unref0 (iface);
35505 _vala_code_node_unref0 (cl);
35508 _vala_code_node_unref0 (st);
35511 _vala_code_node_unref0 (iface);
35512 _vala_code_node_unref0 (cl);
35516 _vala_code_node_unref0 (iface);
35517 _vala_code_node_unref0 (cl);
35518 _vala_ccode_node_unref0 (cexpr);
35522 ValaCCodeExpression* vala_ccode_base_module_get_implicit_cast_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node) {
35523 g_return_val_if_fail (self != NULL, NULL);
35524 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_implicit_cast_expression (self, source_cexpr, expression_type, target_type, node);
35528 void vala_ccode_base_module_store_property (ValaCCodeBaseModule* self, ValaProperty* prop, ValaExpression* instance, ValaTargetValue* value) {
35529 ValaExpression* _tmp0_;
35532 ValaProperty* _tmp91_;
35533 ValaProperty* _tmp92_;
35534 ValaProperty* base_property;
35535 ValaProperty* _tmp93_;
35536 gboolean _tmp94_ = FALSE;
35537 const gchar* _tmp131_;
35538 ValaCCodeIdentifier* _tmp132_;
35539 ValaCCodeIdentifier* _tmp133_;
35540 ValaCCodeFunctionCall* _tmp134_;
35541 ValaCCodeFunctionCall* _tmp135_;
35542 ValaCCodeFunctionCall* ccall;
35543 ValaProperty* _tmp136_;
35544 ValaMemberBinding _tmp137_;
35545 ValaMemberBinding _tmp138_;
35546 ValaProperty* _tmp159_;
35547 gboolean _tmp160_ = FALSE;
35548 ValaTargetValue* _tmp165_;
35549 ValaCCodeExpression* _tmp166_ = NULL;
35550 ValaCCodeExpression* cexpr;
35551 ValaProperty* _tmp167_;
35552 ValaDataType* _tmp168_;
35553 ValaDataType* _tmp169_;
35554 gboolean _tmp170_ = FALSE;
35555 ValaProperty* _tmp173_;
35556 ValaDataType* _tmp174_;
35557 ValaDataType* _tmp175_;
35558 ValaArrayType* _tmp176_;
35559 ValaArrayType* array_type;
35560 ValaCCodeFunctionCall* _tmp177_;
35561 ValaCCodeExpression* _tmp178_;
35562 gboolean _tmp179_ = FALSE;
35563 ValaArrayType* _tmp180_;
35565 ValaProperty* _tmp223_;
35566 gboolean _tmp224_ = FALSE;
35567 ValaCCodeFunction* _tmp228_;
35568 ValaCCodeFunction* _tmp229_;
35569 ValaCCodeFunctionCall* _tmp230_;
35570 g_return_if_fail (self != NULL);
35571 g_return_if_fail (prop != NULL);
35572 g_return_if_fail (value != NULL);
35574 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_BASE_ACCESS)) {
35575 ValaProperty* _tmp1_;
35576 ValaProperty* _tmp2_;
35577 ValaProperty* _tmp3_;
35579 _tmp2_ = vala_property_get_base_property (_tmp1_);
35581 if (_tmp3_ != NULL) {
35582 ValaProperty* _tmp4_;
35583 ValaProperty* _tmp5_;
35584 ValaProperty* _tmp6_;
35585 ValaSymbol* _tmp7_;
35586 ValaSymbol* _tmp8_;
35588 ValaClass* base_class;
35589 ValaClass* _tmp10_;
35590 gchar* _tmp11_ = NULL;
35592 gchar* _tmp13_ = NULL;
35594 ValaCCodeIdentifier* _tmp15_;
35595 ValaCCodeIdentifier* _tmp16_;
35596 ValaCCodeFunctionCall* _tmp17_;
35597 ValaCCodeFunctionCall* _tmp18_;
35598 ValaCCodeFunctionCall* vcast;
35599 ValaCCodeFunctionCall* _tmp19_;
35600 ValaClass* _tmp20_;
35601 ValaClass* _tmp21_;
35602 gchar* _tmp22_ = NULL;
35604 gchar* _tmp24_ = NULL;
35606 ValaCCodeIdentifier* _tmp26_;
35607 ValaCCodeIdentifier* _tmp27_;
35608 ValaCCodeFunctionCall* _tmp28_;
35609 ValaProperty* _tmp29_;
35610 const gchar* _tmp30_;
35611 const gchar* _tmp31_;
35612 gchar* _tmp32_ = NULL;
35614 ValaCCodeMemberAccess* _tmp34_;
35615 ValaCCodeMemberAccess* _tmp35_;
35616 ValaCCodeFunctionCall* _tmp36_;
35617 ValaCCodeFunctionCall* _tmp37_;
35618 ValaCCodeFunctionCall* ccall;
35619 ValaCCodeFunctionCall* _tmp38_;
35620 ValaExpression* _tmp39_;
35621 ValaCCodeExpression* _tmp40_ = NULL;
35622 ValaCCodeExpression* _tmp41_;
35623 ValaCCodeFunctionCall* _tmp42_;
35624 ValaTargetValue* _tmp43_;
35625 ValaCCodeExpression* _tmp44_ = NULL;
35626 ValaCCodeExpression* _tmp45_;
35627 ValaCCodeFunction* _tmp46_;
35628 ValaCCodeFunction* _tmp47_;
35629 ValaCCodeFunctionCall* _tmp48_;
35631 _tmp5_ = vala_property_get_base_property (_tmp4_);
35633 _tmp7_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp6_);
35635 _tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_CLASS, ValaClass));
35636 base_class = _tmp9_;
35637 _tmp10_ = base_class;
35638 _tmp11_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp10_, NULL);
35640 _tmp13_ = g_strdup_printf ("%s_CLASS", _tmp12_);
35642 _tmp15_ = vala_ccode_identifier_new (_tmp14_);
35644 _tmp17_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp16_);
35646 _vala_ccode_node_unref0 (_tmp16_);
35647 _g_free0 (_tmp14_);
35648 _g_free0 (_tmp12_);
35651 _tmp20_ = vala_ccode_base_module_get_current_class (self);
35653 _tmp22_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp21_, NULL);
35655 _tmp24_ = g_strdup_printf ("%s_parent_class", _tmp23_);
35657 _tmp26_ = vala_ccode_identifier_new (_tmp25_);
35659 vala_ccode_function_call_add_argument (_tmp19_, (ValaCCodeExpression*) _tmp27_);
35660 _vala_ccode_node_unref0 (_tmp27_);
35661 _g_free0 (_tmp25_);
35662 _g_free0 (_tmp23_);
35665 _tmp30_ = vala_symbol_get_name ((ValaSymbol*) _tmp29_);
35667 _tmp32_ = g_strdup_printf ("set_%s", _tmp31_);
35669 _tmp34_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp28_, _tmp33_);
35671 _tmp36_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp35_);
35673 _vala_ccode_node_unref0 (_tmp35_);
35674 _g_free0 (_tmp33_);
35677 _tmp39_ = instance;
35678 _tmp40_ = vala_ccode_base_module_get_ccodenode (self, _tmp39_);
35679 _tmp41_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
35680 vala_ccode_function_call_add_argument (_tmp38_, _tmp41_);
35681 _vala_ccode_node_unref0 (_tmp41_);
35684 _tmp44_ = vala_ccode_base_module_get_cvalue_ (self, _tmp43_);
35686 vala_ccode_function_call_add_argument (_tmp42_, _tmp45_);
35687 _vala_ccode_node_unref0 (_tmp45_);
35688 _tmp46_ = vala_ccode_base_module_get_ccode (self);
35691 vala_ccode_function_add_expression (_tmp47_, (ValaCCodeExpression*) _tmp48_);
35692 _vala_ccode_node_unref0 (ccall);
35693 _vala_ccode_node_unref0 (vcast);
35694 _vala_code_node_unref0 (base_class);
35696 ValaProperty* _tmp49_;
35697 ValaProperty* _tmp50_;
35698 ValaProperty* _tmp51_;
35700 _tmp50_ = vala_property_get_base_interface_property (_tmp49_);
35702 if (_tmp51_ != NULL) {
35703 ValaProperty* _tmp52_;
35704 ValaProperty* _tmp53_;
35705 ValaProperty* _tmp54_;
35706 ValaSymbol* _tmp55_;
35707 ValaSymbol* _tmp56_;
35708 ValaInterface* _tmp57_;
35709 ValaInterface* base_iface;
35710 ValaClass* _tmp58_;
35711 ValaClass* _tmp59_;
35712 gchar* _tmp60_ = NULL;
35714 ValaInterface* _tmp62_;
35715 gchar* _tmp63_ = NULL;
35717 gchar* _tmp65_ = NULL;
35719 gchar* parent_iface_var;
35720 const gchar* _tmp67_;
35721 ValaCCodeIdentifier* _tmp68_;
35722 ValaCCodeIdentifier* _tmp69_;
35723 ValaProperty* _tmp70_;
35724 const gchar* _tmp71_;
35725 const gchar* _tmp72_;
35726 gchar* _tmp73_ = NULL;
35728 ValaCCodeMemberAccess* _tmp75_;
35729 ValaCCodeMemberAccess* _tmp76_;
35730 ValaCCodeFunctionCall* _tmp77_;
35731 ValaCCodeFunctionCall* _tmp78_;
35732 ValaCCodeFunctionCall* ccall;
35733 ValaCCodeFunctionCall* _tmp79_;
35734 ValaExpression* _tmp80_;
35735 ValaCCodeExpression* _tmp81_ = NULL;
35736 ValaCCodeExpression* _tmp82_;
35737 ValaCCodeFunctionCall* _tmp83_;
35738 ValaTargetValue* _tmp84_;
35739 ValaCCodeExpression* _tmp85_ = NULL;
35740 ValaCCodeExpression* _tmp86_;
35741 ValaCCodeFunction* _tmp87_;
35742 ValaCCodeFunction* _tmp88_;
35743 ValaCCodeFunctionCall* _tmp89_;
35745 _tmp53_ = vala_property_get_base_interface_property (_tmp52_);
35747 _tmp55_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp54_);
35749 _tmp57_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp56_, VALA_TYPE_INTERFACE, ValaInterface));
35750 base_iface = _tmp57_;
35751 _tmp58_ = vala_ccode_base_module_get_current_class (self);
35753 _tmp60_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp59_, NULL);
35755 _tmp62_ = base_iface;
35756 _tmp63_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp62_, NULL);
35758 _tmp65_ = g_strdup_printf ("%s_%s_parent_iface", _tmp61_, _tmp64_);
35760 _g_free0 (_tmp64_);
35761 _g_free0 (_tmp61_);
35762 parent_iface_var = _tmp66_;
35763 _tmp67_ = parent_iface_var;
35764 _tmp68_ = vala_ccode_identifier_new (_tmp67_);
35767 _tmp71_ = vala_symbol_get_name ((ValaSymbol*) _tmp70_);
35769 _tmp73_ = g_strdup_printf ("set_%s", _tmp72_);
35771 _tmp75_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp69_, _tmp74_);
35773 _tmp77_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp76_);
35775 _vala_ccode_node_unref0 (_tmp76_);
35776 _g_free0 (_tmp74_);
35777 _vala_ccode_node_unref0 (_tmp69_);
35780 _tmp80_ = instance;
35781 _tmp81_ = vala_ccode_base_module_get_ccodenode (self, _tmp80_);
35782 _tmp82_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp81_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
35783 vala_ccode_function_call_add_argument (_tmp79_, _tmp82_);
35784 _vala_ccode_node_unref0 (_tmp82_);
35787 _tmp85_ = vala_ccode_base_module_get_cvalue_ (self, _tmp84_);
35789 vala_ccode_function_call_add_argument (_tmp83_, _tmp86_);
35790 _vala_ccode_node_unref0 (_tmp86_);
35791 _tmp87_ = vala_ccode_base_module_get_ccode (self);
35794 vala_ccode_function_add_expression (_tmp88_, (ValaCCodeExpression*) _tmp89_);
35795 _vala_ccode_node_unref0 (ccall);
35796 _g_free0 (parent_iface_var);
35797 _vala_code_node_unref0 (base_iface);
35802 _tmp90_ = g_strdup ("g_object_set");
35803 set_func = _tmp90_;
35805 _tmp92_ = _vala_code_node_ref0 (_tmp91_);
35806 base_property = _tmp92_;
35808 _tmp94_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp93_);
35810 ValaProperty* _tmp95_;
35811 ValaProperty* _tmp96_;
35812 ValaProperty* _tmp97_;
35813 ValaProperty* _tmp109_;
35815 _tmp96_ = vala_property_get_base_property (_tmp95_);
35817 if (_tmp97_ != NULL) {
35818 ValaProperty* _tmp98_;
35819 ValaProperty* _tmp99_;
35820 ValaProperty* _tmp100_;
35821 ValaProperty* _tmp101_;
35823 _tmp99_ = vala_property_get_base_property (_tmp98_);
35824 _tmp100_ = _tmp99_;
35825 _tmp101_ = _vala_code_node_ref0 (_tmp100_);
35826 _vala_code_node_unref0 (base_property);
35827 base_property = _tmp101_;
35829 ValaProperty* _tmp102_;
35830 ValaProperty* _tmp103_;
35831 ValaProperty* _tmp104_;
35833 _tmp103_ = vala_property_get_base_interface_property (_tmp102_);
35834 _tmp104_ = _tmp103_;
35835 if (_tmp104_ != NULL) {
35836 ValaProperty* _tmp105_;
35837 ValaProperty* _tmp106_;
35838 ValaProperty* _tmp107_;
35839 ValaProperty* _tmp108_;
35841 _tmp106_ = vala_property_get_base_interface_property (_tmp105_);
35842 _tmp107_ = _tmp106_;
35843 _tmp108_ = _vala_code_node_ref0 (_tmp107_);
35844 _vala_code_node_unref0 (base_property);
35845 base_property = _tmp108_;
35849 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp109_, VALA_TYPE_DYNAMIC_PROPERTY)) {
35850 ValaProperty* _tmp110_;
35851 gchar* _tmp111_ = NULL;
35853 _tmp111_ = vala_ccode_base_module_get_dynamic_property_setter_cname (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp110_, VALA_TYPE_DYNAMIC_PROPERTY, ValaDynamicProperty));
35854 _g_free0 (set_func);
35855 set_func = _tmp111_;
35857 ValaProperty* _tmp112_;
35858 ValaPropertyAccessor* _tmp113_;
35859 ValaPropertyAccessor* _tmp114_;
35860 ValaCCodeFile* _tmp115_;
35861 ValaProperty* _tmp116_;
35862 ValaPropertyAccessor* _tmp117_;
35863 ValaPropertyAccessor* _tmp118_;
35864 gchar* _tmp119_ = NULL;
35865 gboolean _tmp120_ = FALSE;
35866 ValaProperty* _tmp121_;
35870 _tmp112_ = base_property;
35871 _tmp113_ = vala_property_get_set_accessor (_tmp112_);
35872 _tmp114_ = _tmp113_;
35873 _tmp115_ = self->cfile;
35874 vala_ccode_base_module_generate_property_accessor_declaration (self, _tmp114_, _tmp115_);
35875 _tmp116_ = base_property;
35876 _tmp117_ = vala_property_get_set_accessor (_tmp116_);
35877 _tmp118_ = _tmp117_;
35878 _tmp119_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp118_);
35879 _g_free0 (set_func);
35880 set_func = _tmp119_;
35882 _tmp122_ = vala_symbol_get_external ((ValaSymbol*) _tmp121_);
35883 _tmp123_ = _tmp122_;
35885 ValaProperty* _tmp124_;
35889 _tmp125_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp124_);
35890 _tmp126_ = _tmp125_;
35891 _tmp120_ = _tmp126_;
35895 _tmp127_ = _tmp120_;
35897 ValaProperty* _tmp128_;
35898 gboolean _tmp129_ = FALSE;
35900 _tmp129_ = vala_ccode_base_module_add_generated_external_symbol (self, (ValaSymbol*) _tmp128_);
35902 ValaProperty* _tmp130_;
35904 vala_code_visitor_visit_property ((ValaCodeVisitor*) self, _tmp130_);
35909 _tmp131_ = set_func;
35910 _tmp132_ = vala_ccode_identifier_new (_tmp131_);
35911 _tmp133_ = _tmp132_;
35912 _tmp134_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp133_);
35913 _tmp135_ = _tmp134_;
35914 _vala_ccode_node_unref0 (_tmp133_);
35917 _tmp137_ = vala_property_get_binding (_tmp136_);
35918 _tmp138_ = _tmp137_;
35919 if (_tmp138_ == VALA_MEMBER_BINDING_INSTANCE) {
35920 ValaExpression* _tmp139_;
35921 ValaCCodeExpression* _tmp140_ = NULL;
35922 ValaCCodeExpression* cinstance;
35923 ValaProperty* _tmp141_;
35924 ValaSymbol* _tmp142_;
35925 ValaSymbol* _tmp143_;
35926 ValaCCodeFunctionCall* _tmp157_;
35927 ValaCCodeExpression* _tmp158_;
35928 _tmp139_ = instance;
35929 _tmp140_ = vala_ccode_base_module_get_ccodenode (self, _tmp139_);
35930 cinstance = G_TYPE_CHECK_INSTANCE_CAST (_tmp140_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
35932 _tmp142_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp141_);
35933 _tmp143_ = _tmp142_;
35934 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp143_, VALA_TYPE_STRUCT)) {
35935 ValaExpression* _tmp144_;
35936 ValaTargetValue* _tmp145_;
35937 ValaTargetValue* _tmp146_;
35938 ValaTargetValue* _tmp147_;
35939 ValaTargetValue* instance_value;
35940 ValaTargetValue* _tmp148_;
35941 gboolean _tmp149_ = FALSE;
35942 ValaTargetValue* _tmp153_;
35943 ValaCCodeExpression* _tmp154_ = NULL;
35944 ValaCCodeExpression* _tmp155_;
35945 ValaCCodeUnaryExpression* _tmp156_;
35946 _tmp144_ = instance;
35947 _tmp145_ = vala_expression_get_target_value (_tmp144_);
35948 _tmp146_ = _tmp145_;
35949 _tmp147_ = _vala_target_value_ref0 (_tmp146_);
35950 instance_value = _tmp147_;
35951 _tmp148_ = instance_value;
35952 _tmp149_ = vala_ccode_base_module_get_lvalue (self, _tmp148_);
35954 ValaTargetValue* _tmp150_;
35955 ValaExpression* _tmp151_;
35956 ValaTargetValue* _tmp152_ = NULL;
35957 _tmp150_ = instance_value;
35958 _tmp151_ = instance;
35959 _tmp152_ = vala_ccode_base_module_store_temp_value (self, _tmp150_, (ValaCodeNode*) _tmp151_, NULL);
35960 _vala_target_value_unref0 (instance_value);
35961 instance_value = _tmp152_;
35963 _tmp153_ = instance_value;
35964 _tmp154_ = vala_ccode_base_module_get_cvalue_ (self, _tmp153_);
35965 _tmp155_ = _tmp154_;
35966 _tmp156_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp155_);
35967 _vala_ccode_node_unref0 (cinstance);
35968 cinstance = (ValaCCodeExpression*) _tmp156_;
35969 _vala_ccode_node_unref0 (_tmp155_);
35970 _vala_target_value_unref0 (instance_value);
35973 _tmp158_ = cinstance;
35974 vala_ccode_function_call_add_argument (_tmp157_, _tmp158_);
35975 _vala_ccode_node_unref0 (cinstance);
35978 _tmp160_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp159_);
35980 ValaCCodeFunctionCall* _tmp161_;
35981 ValaProperty* _tmp162_;
35982 ValaCCodeConstant* _tmp163_ = NULL;
35983 ValaCCodeConstant* _tmp164_;
35986 _tmp163_ = vala_ccode_base_module_get_property_canonical_cconstant (self, _tmp162_);
35987 _tmp164_ = _tmp163_;
35988 vala_ccode_function_call_add_argument (_tmp161_, (ValaCCodeExpression*) _tmp164_);
35989 _vala_ccode_node_unref0 (_tmp164_);
35992 _tmp166_ = vala_ccode_base_module_get_cvalue_ (self, _tmp165_);
35995 _tmp168_ = vala_property_get_property_type (_tmp167_);
35996 _tmp169_ = _tmp168_;
35997 _tmp170_ = vala_data_type_is_real_non_null_struct_type (_tmp169_);
35999 ValaCCodeExpression* _tmp171_;
36000 ValaCCodeUnaryExpression* _tmp172_;
36002 _tmp172_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp171_);
36003 _vala_ccode_node_unref0 (cexpr);
36004 cexpr = (ValaCCodeExpression*) _tmp172_;
36007 _tmp174_ = vala_property_get_property_type (_tmp173_);
36008 _tmp175_ = _tmp174_;
36009 _tmp176_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp175_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp175_) : NULL);
36010 array_type = _tmp176_;
36013 vala_ccode_function_call_add_argument (_tmp177_, _tmp178_);
36014 _tmp180_ = array_type;
36015 if (_tmp180_ != NULL) {
36016 ValaProperty* _tmp181_;
36017 gboolean _tmp182_ = FALSE;
36019 _tmp182_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp181_);
36020 _tmp179_ = _tmp182_;
36024 _tmp183_ = _tmp179_;
36035 ValaArrayType* _tmp188_;
36038 ValaCCodeFunctionCall* _tmp191_;
36039 ValaTargetValue* _tmp192_;
36041 ValaCCodeExpression* _tmp194_ = NULL;
36042 ValaCCodeExpression* _tmp195_;
36043 _tmp185_ = _tmp184_;
36047 dim = _tmp186_ + 1;
36051 _tmp188_ = array_type;
36052 _tmp189_ = vala_array_type_get_rank (_tmp188_);
36053 _tmp190_ = _tmp189_;
36054 if (!(_tmp187_ <= _tmp190_)) {
36060 _tmp194_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp192_, _tmp193_);
36061 _tmp195_ = _tmp194_;
36062 vala_ccode_function_call_add_argument (_tmp191_, _tmp195_);
36063 _vala_ccode_node_unref0 (_tmp195_);
36068 ValaProperty* _tmp196_;
36069 ValaDataType* _tmp197_;
36070 ValaDataType* _tmp198_;
36072 _tmp197_ = vala_property_get_property_type (_tmp196_);
36073 _tmp198_ = _tmp197_;
36074 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp198_, VALA_TYPE_DELEGATE_TYPE)) {
36075 ValaProperty* _tmp199_;
36076 ValaDataType* _tmp200_;
36077 ValaDataType* _tmp201_;
36078 ValaDelegateType* _tmp202_;
36079 ValaDelegateType* delegate_type;
36080 ValaDelegateType* _tmp203_;
36081 ValaDelegate* _tmp204_;
36082 ValaDelegate* _tmp205_;
36086 _tmp200_ = vala_property_get_property_type (_tmp199_);
36087 _tmp201_ = _tmp200_;
36088 _tmp202_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp201_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
36089 delegate_type = _tmp202_;
36090 _tmp203_ = delegate_type;
36091 _tmp204_ = vala_delegate_type_get_delegate_symbol (_tmp203_);
36092 _tmp205_ = _tmp204_;
36093 _tmp206_ = vala_delegate_get_has_target (_tmp205_);
36094 _tmp207_ = _tmp206_;
36096 ValaCCodeFunctionCall* _tmp208_;
36097 ValaTargetValue* _tmp209_;
36098 ValaCCodeExpression* _tmp210_ = NULL;
36099 ValaCCodeExpression* _tmp211_;
36100 ValaProperty* _tmp212_;
36101 ValaPropertyAccessor* _tmp213_;
36102 ValaPropertyAccessor* _tmp214_;
36103 ValaDataType* _tmp215_;
36104 ValaDataType* _tmp216_;
36109 _tmp210_ = vala_ccode_base_module_get_delegate_target_cvalue (self, _tmp209_);
36110 _tmp211_ = _tmp210_;
36111 vala_ccode_function_call_add_argument (_tmp208_, _tmp211_);
36112 _vala_ccode_node_unref0 (_tmp211_);
36113 _tmp212_ = base_property;
36114 _tmp213_ = vala_property_get_set_accessor (_tmp212_);
36115 _tmp214_ = _tmp213_;
36116 _tmp215_ = vala_property_accessor_get_value_type (_tmp214_);
36117 _tmp216_ = _tmp215_;
36118 _tmp217_ = vala_data_type_get_value_owned (_tmp216_);
36119 _tmp218_ = _tmp217_;
36121 ValaCCodeFunctionCall* _tmp219_;
36122 ValaTargetValue* _tmp220_;
36123 ValaCCodeExpression* _tmp221_ = NULL;
36124 ValaCCodeExpression* _tmp222_;
36127 _tmp221_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue (self, _tmp220_);
36128 _tmp222_ = _tmp221_;
36129 vala_ccode_function_call_add_argument (_tmp219_, _tmp222_);
36130 _vala_ccode_node_unref0 (_tmp222_);
36133 _vala_code_node_unref0 (delegate_type);
36137 _tmp224_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp223_);
36139 ValaCCodeFunctionCall* _tmp225_;
36140 ValaCCodeConstant* _tmp226_;
36141 ValaCCodeConstant* _tmp227_;
36143 _tmp226_ = vala_ccode_constant_new ("NULL");
36144 _tmp227_ = _tmp226_;
36145 vala_ccode_function_call_add_argument (_tmp225_, (ValaCCodeExpression*) _tmp227_);
36146 _vala_ccode_node_unref0 (_tmp227_);
36148 _tmp228_ = vala_ccode_base_module_get_ccode (self);
36149 _tmp229_ = _tmp228_;
36151 vala_ccode_function_add_expression (_tmp229_, (ValaCCodeExpression*) _tmp230_);
36152 _vala_code_node_unref0 (array_type);
36153 _vala_ccode_node_unref0 (cexpr);
36154 _vala_ccode_node_unref0 (ccall);
36155 _vala_code_node_unref0 (base_property);
36156 _g_free0 (set_func);
36160 gboolean vala_ccode_base_module_add_wrapper (ValaCCodeBaseModule* self, const gchar* wrapper_name) {
36161 gboolean result = FALSE;
36163 const gchar* _tmp1_;
36164 gboolean _tmp2_ = FALSE;
36165 g_return_val_if_fail (self != NULL, FALSE);
36166 g_return_val_if_fail (wrapper_name != NULL, FALSE);
36167 _tmp0_ = self->wrappers;
36168 _tmp1_ = wrapper_name;
36169 _tmp2_ = vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_);
36175 gboolean vala_ccode_base_module_add_generated_external_symbol (ValaCCodeBaseModule* self, ValaSymbol* external_symbol) {
36176 gboolean result = FALSE;
36178 ValaSymbol* _tmp1_;
36179 gboolean _tmp2_ = FALSE;
36180 g_return_val_if_fail (self != NULL, FALSE);
36181 g_return_val_if_fail (external_symbol != NULL, FALSE);
36182 _tmp0_ = self->priv->generated_external_symbols;
36183 _tmp1_ = external_symbol;
36184 _tmp2_ = vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_);
36190 ValaDataType* vala_ccode_base_module_get_data_type_for_symbol (ValaTypeSymbol* sym) {
36191 ValaDataType* result = NULL;
36192 ValaDataType* type;
36193 ValaTypeSymbol* _tmp0_;
36194 g_return_val_if_fail (sym != NULL, NULL);
36197 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CLASS)) {
36198 ValaTypeSymbol* _tmp1_;
36199 ValaObjectType* _tmp2_;
36201 _tmp2_ = vala_object_type_new ((ValaObjectTypeSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_CLASS, ValaClass));
36202 _vala_code_node_unref0 (type);
36203 type = (ValaDataType*) _tmp2_;
36205 ValaTypeSymbol* _tmp3_;
36207 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_INTERFACE)) {
36208 ValaTypeSymbol* _tmp4_;
36209 ValaObjectType* _tmp5_;
36211 _tmp5_ = vala_object_type_new ((ValaObjectTypeSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, VALA_TYPE_INTERFACE, ValaInterface));
36212 _vala_code_node_unref0 (type);
36213 type = (ValaDataType*) _tmp5_;
36215 ValaTypeSymbol* _tmp6_;
36217 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_STRUCT)) {
36218 ValaTypeSymbol* _tmp7_;
36219 ValaStruct* _tmp8_;
36221 ValaStruct* _tmp9_;
36222 gboolean _tmp10_ = FALSE;
36224 _tmp8_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, VALA_TYPE_STRUCT, ValaStruct));
36227 _tmp10_ = vala_struct_is_boolean_type (_tmp9_);
36229 ValaStruct* _tmp11_;
36230 ValaBooleanType* _tmp12_;
36232 _tmp12_ = vala_boolean_type_new (_tmp11_);
36233 _vala_code_node_unref0 (type);
36234 type = (ValaDataType*) _tmp12_;
36236 ValaStruct* _tmp13_;
36237 gboolean _tmp14_ = FALSE;
36239 _tmp14_ = vala_struct_is_integer_type (_tmp13_);
36241 ValaStruct* _tmp15_;
36242 ValaIntegerType* _tmp16_;
36244 _tmp16_ = vala_integer_type_new (_tmp15_, NULL, NULL);
36245 _vala_code_node_unref0 (type);
36246 type = (ValaDataType*) _tmp16_;
36248 ValaStruct* _tmp17_;
36249 gboolean _tmp18_ = FALSE;
36251 _tmp18_ = vala_struct_is_floating_type (_tmp17_);
36253 ValaStruct* _tmp19_;
36254 ValaFloatingType* _tmp20_;
36256 _tmp20_ = vala_floating_type_new (_tmp19_);
36257 _vala_code_node_unref0 (type);
36258 type = (ValaDataType*) _tmp20_;
36260 ValaStruct* _tmp21_;
36261 ValaStructValueType* _tmp22_;
36263 _tmp22_ = vala_struct_value_type_new (_tmp21_);
36264 _vala_code_node_unref0 (type);
36265 type = (ValaDataType*) _tmp22_;
36269 _vala_code_node_unref0 (st);
36271 ValaTypeSymbol* _tmp23_;
36273 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, VALA_TYPE_ENUM)) {
36274 ValaTypeSymbol* _tmp24_;
36275 ValaEnumValueType* _tmp25_;
36277 _tmp25_ = vala_enum_value_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, VALA_TYPE_ENUM, ValaEnum));
36278 _vala_code_node_unref0 (type);
36279 type = (ValaDataType*) _tmp25_;
36281 ValaTypeSymbol* _tmp26_;
36283 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, VALA_TYPE_ERROR_DOMAIN)) {
36284 ValaTypeSymbol* _tmp27_;
36285 ValaErrorType* _tmp28_;
36287 _tmp28_ = vala_error_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, VALA_TYPE_ERROR_DOMAIN, ValaErrorDomain), NULL, NULL);
36288 _vala_code_node_unref0 (type);
36289 type = (ValaDataType*) _tmp28_;
36291 ValaTypeSymbol* _tmp29_;
36293 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_ERROR_CODE)) {
36294 ValaTypeSymbol* _tmp30_;
36295 ValaSymbol* _tmp31_;
36296 ValaSymbol* _tmp32_;
36297 ValaTypeSymbol* _tmp33_;
36298 ValaErrorType* _tmp34_;
36300 _tmp31_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp30_);
36303 _tmp34_ = vala_error_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp32_, VALA_TYPE_ERROR_DOMAIN, ValaErrorDomain), G_TYPE_CHECK_INSTANCE_CAST (_tmp33_, VALA_TYPE_ERROR_CODE, ValaErrorCode), NULL);
36304 _vala_code_node_unref0 (type);
36305 type = (ValaDataType*) _tmp34_;
36307 ValaTypeSymbol* _tmp35_;
36308 gchar* _tmp36_ = NULL;
36310 gchar* _tmp38_ = NULL;
36312 ValaInvalidType* _tmp40_;
36314 _tmp36_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp35_);
36316 _tmp38_ = g_strdup_printf ("internal error: `%s' is not a supported type", _tmp37_);
36318 vala_report_error (NULL, _tmp39_);
36319 _g_free0 (_tmp39_);
36320 _g_free0 (_tmp37_);
36321 _tmp40_ = vala_invalid_type_new ();
36322 result = (ValaDataType*) _tmp40_;
36323 _vala_code_node_unref0 (type);
36336 ValaCCodeExpression* vala_ccode_base_module_default_value_for_type (ValaCCodeBaseModule* self, ValaDataType* type, gboolean initializer_expression) {
36337 ValaCCodeExpression* result = NULL;
36338 ValaDataType* _tmp0_;
36339 ValaTypeSymbol* _tmp1_;
36340 ValaTypeSymbol* _tmp2_;
36341 ValaStruct* _tmp3_;
36343 ValaDataType* _tmp4_;
36344 ValaArrayType* _tmp5_;
36345 ValaArrayType* array_type;
36346 gboolean _tmp6_ = FALSE;
36347 gboolean _tmp7_ = FALSE;
36348 ValaDataType* _tmp8_;
36349 ValaTypeSymbol* _tmp9_;
36350 ValaTypeSymbol* _tmp10_;
36353 g_return_val_if_fail (self != NULL, NULL);
36354 g_return_val_if_fail (type != NULL, NULL);
36356 _tmp1_ = vala_data_type_get_data_type (_tmp0_);
36358 _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp2_) : NULL);
36361 _tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp4_) : NULL);
36362 array_type = _tmp5_;
36364 _tmp9_ = vala_data_type_get_data_type (_tmp8_);
36366 if (_tmp10_ != NULL) {
36367 ValaDataType* _tmp11_;
36371 _tmp12_ = vala_data_type_get_nullable (_tmp11_);
36379 ValaDataType* _tmp15_;
36380 ValaTypeSymbol* _tmp16_;
36381 ValaTypeSymbol* _tmp17_;
36382 gchar* _tmp18_ = NULL;
36385 _tmp16_ = vala_data_type_get_data_type (_tmp15_);
36387 _tmp18_ = vala_ccode_base_module_get_ccode_default_value (_tmp17_);
36389 _tmp6_ = g_strcmp0 (_tmp19_, "") != 0;
36390 _g_free0 (_tmp19_);
36396 ValaDataType* _tmp21_;
36397 ValaTypeSymbol* _tmp22_;
36398 ValaTypeSymbol* _tmp23_;
36399 gchar* _tmp24_ = NULL;
36401 ValaCCodeConstant* _tmp26_;
36402 ValaCCodeExpression* _tmp27_;
36404 _tmp22_ = vala_data_type_get_data_type (_tmp21_);
36406 _tmp24_ = vala_ccode_base_module_get_ccode_default_value (_tmp23_);
36408 _tmp26_ = vala_ccode_constant_new (_tmp25_);
36409 _tmp27_ = (ValaCCodeExpression*) _tmp26_;
36410 _g_free0 (_tmp25_);
36412 _vala_code_node_unref0 (array_type);
36413 _vala_code_node_unref0 (st);
36416 gboolean _tmp28_ = FALSE;
36417 gboolean _tmp29_ = FALSE;
36421 _tmp30_ = initializer_expression;
36423 ValaDataType* _tmp31_;
36427 _tmp32_ = vala_data_type_get_nullable (_tmp31_);
36429 _tmp29_ = !_tmp33_;
36435 gboolean _tmp35_ = FALSE;
36436 ValaStruct* _tmp36_;
36439 if (_tmp36_ != NULL) {
36442 gboolean _tmp37_ = FALSE;
36443 ValaArrayType* _tmp38_;
36445 _tmp38_ = array_type;
36446 if (_tmp38_ != NULL) {
36447 ValaArrayType* _tmp39_;
36450 _tmp39_ = array_type;
36451 _tmp40_ = vala_array_type_get_fixed_length (_tmp39_);
36467 ValaCCodeInitializerList* _tmp45_;
36468 ValaCCodeInitializerList* clist;
36469 ValaCCodeInitializerList* _tmp46_;
36470 ValaCCodeConstant* _tmp47_;
36471 ValaCCodeConstant* _tmp48_;
36472 _tmp45_ = vala_ccode_initializer_list_new ();
36475 _tmp47_ = vala_ccode_constant_new ("0");
36477 vala_ccode_initializer_list_append (_tmp46_, (ValaCCodeExpression*) _tmp48_);
36478 _vala_ccode_node_unref0 (_tmp48_);
36479 result = (ValaCCodeExpression*) clist;
36480 _vala_code_node_unref0 (array_type);
36481 _vala_code_node_unref0 (st);
36484 gboolean _tmp49_ = FALSE;
36485 gboolean _tmp50_ = FALSE;
36486 gboolean _tmp51_ = FALSE;
36487 gboolean _tmp52_ = FALSE;
36488 gboolean _tmp53_ = FALSE;
36489 ValaDataType* _tmp54_;
36490 ValaTypeSymbol* _tmp55_;
36491 ValaTypeSymbol* _tmp56_;
36498 _tmp55_ = vala_data_type_get_data_type (_tmp54_);
36500 if (_tmp56_ != NULL) {
36501 ValaDataType* _tmp57_;
36502 ValaTypeSymbol* _tmp58_;
36503 ValaTypeSymbol* _tmp59_;
36504 gboolean _tmp60_ = FALSE;
36506 _tmp58_ = vala_data_type_get_data_type (_tmp57_);
36508 _tmp60_ = vala_typesymbol_is_reference_type (_tmp59_);
36517 ValaDataType* _tmp62_;
36521 _tmp63_ = vala_data_type_get_nullable (_tmp62_);
36529 ValaDataType* _tmp66_;
36531 _tmp51_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp66_, VALA_TYPE_POINTER_TYPE);
36537 ValaDataType* _tmp68_;
36539 _tmp50_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp68_, VALA_TYPE_DELEGATE_TYPE);
36545 gboolean _tmp70_ = FALSE;
36546 ValaArrayType* _tmp71_;
36548 _tmp71_ = array_type;
36549 if (_tmp71_ != NULL) {
36550 ValaArrayType* _tmp72_;
36553 _tmp72_ = array_type;
36554 _tmp73_ = vala_array_type_get_fixed_length (_tmp72_);
36556 _tmp70_ = !_tmp74_;
36565 ValaCCodeConstant* _tmp77_;
36566 _tmp77_ = vala_ccode_constant_new ("NULL");
36567 result = (ValaCCodeExpression*) _tmp77_;
36568 _vala_code_node_unref0 (array_type);
36569 _vala_code_node_unref0 (st);
36572 ValaDataType* _tmp78_;
36573 ValaTypeParameter* _tmp79_;
36574 ValaTypeParameter* _tmp80_;
36576 _tmp79_ = vala_data_type_get_type_parameter (_tmp78_);
36578 if (_tmp80_ != NULL) {
36579 ValaCCodeConstant* _tmp81_;
36580 _tmp81_ = vala_ccode_constant_new ("NULL");
36581 result = (ValaCCodeExpression*) _tmp81_;
36582 _vala_code_node_unref0 (array_type);
36583 _vala_code_node_unref0 (st);
36586 ValaDataType* _tmp82_;
36588 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp82_, VALA_TYPE_ERROR_TYPE)) {
36589 ValaCCodeConstant* _tmp83_;
36590 _tmp83_ = vala_ccode_constant_new ("NULL");
36591 result = (ValaCCodeExpression*) _tmp83_;
36592 _vala_code_node_unref0 (array_type);
36593 _vala_code_node_unref0 (st);
36601 _vala_code_node_unref0 (array_type);
36602 _vala_code_node_unref0 (st);
36607 static void vala_ccode_base_module_create_property_type_check_statement (ValaCCodeBaseModule* self, ValaProperty* prop, gboolean check_return_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name) {
36609 g_return_if_fail (self != NULL);
36610 g_return_if_fail (prop != NULL);
36611 g_return_if_fail (t != NULL);
36612 g_return_if_fail (var_name != NULL);
36613 _tmp0_ = check_return_type;
36615 ValaProperty* _tmp1_;
36616 ValaProperty* _tmp2_;
36617 ValaDataType* _tmp3_;
36618 ValaDataType* _tmp4_;
36619 ValaTypeSymbol* _tmp5_;
36621 const gchar* _tmp7_;
36624 _tmp3_ = vala_property_get_property_type (_tmp2_);
36629 vala_ccode_base_module_create_type_check_statement (self, (ValaCodeNode*) _tmp1_, _tmp4_, _tmp5_, _tmp6_, _tmp7_);
36631 ValaProperty* _tmp8_;
36632 ValaVoidType* _tmp9_;
36633 ValaVoidType* _tmp10_;
36634 ValaTypeSymbol* _tmp11_;
36636 const gchar* _tmp13_;
36638 _tmp9_ = vala_void_type_new (NULL);
36641 _tmp12_ = non_null;
36642 _tmp13_ = var_name;
36643 vala_ccode_base_module_create_type_check_statement (self, (ValaCodeNode*) _tmp8_, (ValaDataType*) _tmp10_, _tmp11_, _tmp12_, _tmp13_);
36644 _vala_code_node_unref0 (_tmp10_);
36649 static void vala_ccode_base_module_real_create_type_check_statement (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name) {
36650 g_return_if_fail (method_node != NULL);
36651 g_return_if_fail (ret_type != NULL);
36652 g_return_if_fail (t != NULL);
36653 g_return_if_fail (var_name != NULL);
36657 void vala_ccode_base_module_create_type_check_statement (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name) {
36658 g_return_if_fail (self != NULL);
36659 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->create_type_check_statement (self, method_node, ret_type, t, non_null, var_name);
36663 gint vala_ccode_base_module_get_param_pos (ValaCCodeBaseModule* self, gdouble param_pos, gboolean ellipsis) {
36666 g_return_val_if_fail (self != NULL, 0);
36670 _tmp1_ = param_pos;
36671 if (_tmp1_ >= ((gdouble) 0)) {
36673 _tmp2_ = param_pos;
36674 result = (gint) (_tmp2_ * 1000);
36678 _tmp3_ = param_pos;
36679 result = (gint) ((100 + _tmp3_) * 1000);
36684 _tmp4_ = param_pos;
36685 if (_tmp4_ >= ((gdouble) 0)) {
36687 _tmp5_ = param_pos;
36688 result = (gint) ((100 + _tmp5_) * 1000);
36692 _tmp6_ = param_pos;
36693 result = (gint) ((200 + _tmp6_) * 1000);
36700 ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node) {
36701 ValaCCodeExpression* result = NULL;
36702 ValaExpression* _tmp0_;
36703 ValaCCodeExpression* _tmp1_ = NULL;
36704 ValaCCodeExpression* _tmp2_;
36706 ValaExpression* _tmp5_;
36707 ValaCCodeExpression* _tmp6_ = NULL;
36708 g_return_val_if_fail (self != NULL, NULL);
36709 g_return_val_if_fail (node != NULL, NULL);
36711 _tmp1_ = vala_ccode_base_module_get_cvalue (self, _tmp0_);
36713 _tmp3_ = _tmp2_ == NULL;
36714 _vala_ccode_node_unref0 (_tmp2_);
36716 ValaExpression* _tmp4_;
36718 vala_code_node_emit ((ValaCodeNode*) _tmp4_, (ValaCodeGenerator*) self);
36721 _tmp6_ = vala_ccode_base_module_get_cvalue (self, _tmp5_);
36727 gboolean vala_ccode_base_module_is_lvalue_access_allowed (ValaCCodeBaseModule* self, ValaDataType* type) {
36728 gboolean result = FALSE;
36729 ValaDataType* _tmp0_;
36730 ValaArrayType* _tmp1_;
36731 ValaArrayType* array_type;
36732 gboolean _tmp2_ = FALSE;
36733 ValaArrayType* _tmp3_;
36735 ValaDataType* _tmp8_;
36736 ValaTypeSymbol* _tmp9_;
36737 ValaTypeSymbol* _tmp10_;
36738 g_return_val_if_fail (self != NULL, FALSE);
36739 g_return_val_if_fail (type != NULL, FALSE);
36741 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp0_) : NULL);
36742 array_type = _tmp1_;
36743 _tmp3_ = array_type;
36744 if (_tmp3_ != NULL) {
36745 ValaArrayType* _tmp4_;
36748 _tmp4_ = array_type;
36749 _tmp5_ = vala_array_type_get_inline_allocated (_tmp4_);
36758 _vala_code_node_unref0 (array_type);
36762 _tmp9_ = vala_data_type_get_data_type (_tmp8_);
36764 if (_tmp10_ != NULL) {
36765 ValaDataType* _tmp11_;
36766 ValaTypeSymbol* _tmp12_;
36767 ValaTypeSymbol* _tmp13_;
36768 gboolean _tmp14_ = FALSE;
36770 _tmp12_ = vala_data_type_get_data_type (_tmp11_);
36772 _tmp14_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp13_, "CCode", "lvalue_access", TRUE);
36774 _vala_code_node_unref0 (array_type);
36778 _vala_code_node_unref0 (array_type);
36783 static gpointer _vala_attribute_cache_ref0 (gpointer self) {
36784 return self ? vala_attribute_cache_ref (self) : NULL;
36788 ValaCCodeAttribute* vala_ccode_base_module_get_ccode_attribute (ValaCodeNode* node) {
36789 ValaCCodeAttribute* result = NULL;
36790 ValaCodeNode* _tmp0_;
36792 ValaAttributeCache* _tmp2_ = NULL;
36793 ValaAttributeCache* attr;
36794 ValaAttributeCache* _tmp3_;
36795 ValaAttributeCache* _tmp9_;
36796 ValaCCodeAttribute* _tmp10_;
36797 g_return_val_if_fail (node != NULL, NULL);
36799 _tmp1_ = vala_ccode_base_module_ccode_attribute_cache_index;
36800 _tmp2_ = vala_code_node_get_attribute_cache (_tmp0_, _tmp1_);
36803 if (_tmp3_ == NULL) {
36804 ValaCodeNode* _tmp4_;
36805 ValaCCodeAttribute* _tmp5_;
36806 ValaCodeNode* _tmp6_;
36808 ValaAttributeCache* _tmp8_;
36810 _tmp5_ = vala_ccode_attribute_new (_tmp4_);
36811 _vala_attribute_cache_unref0 (attr);
36812 attr = (ValaAttributeCache*) _tmp5_;
36814 _tmp7_ = vala_ccode_base_module_ccode_attribute_cache_index;
36816 vala_code_node_set_attribute_cache (_tmp6_, _tmp7_, _tmp8_);
36819 _tmp10_ = _vala_attribute_cache_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, VALA_TYPE_CCODE_ATTRIBUTE, ValaCCodeAttribute));
36821 _vala_attribute_cache_unref0 (attr);
36826 gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node) {
36827 gchar* result = NULL;
36828 ValaCodeNode* _tmp0_;
36829 ValaCCodeAttribute* _tmp1_ = NULL;
36830 ValaCCodeAttribute* _tmp2_;
36831 const gchar* _tmp3_;
36832 const gchar* _tmp4_;
36835 g_return_val_if_fail (node != NULL, NULL);
36837 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
36839 _tmp3_ = vala_ccode_attribute_get_name (_tmp2_);
36841 _tmp5_ = g_strdup (_tmp4_);
36843 _vala_attribute_cache_unref0 (_tmp2_);
36849 gchar* vala_ccode_base_module_get_ccode_const_name (ValaCodeNode* node) {
36850 gchar* result = NULL;
36851 ValaCodeNode* _tmp0_;
36852 ValaCCodeAttribute* _tmp1_ = NULL;
36853 ValaCCodeAttribute* _tmp2_;
36854 const gchar* _tmp3_;
36855 const gchar* _tmp4_;
36858 g_return_val_if_fail (node != NULL, NULL);
36860 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
36862 _tmp3_ = vala_ccode_attribute_get_const_name (_tmp2_);
36864 _tmp5_ = g_strdup (_tmp4_);
36866 _vala_attribute_cache_unref0 (_tmp2_);
36872 gchar* vala_ccode_base_module_get_ccode_type_name (ValaInterface* iface) {
36873 gchar* result = NULL;
36874 ValaInterface* _tmp0_;
36875 ValaCCodeAttribute* _tmp1_ = NULL;
36876 ValaCCodeAttribute* _tmp2_;
36877 const gchar* _tmp3_;
36878 const gchar* _tmp4_;
36881 g_return_val_if_fail (iface != NULL, NULL);
36883 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
36885 _tmp3_ = vala_ccode_attribute_get_type_name (_tmp2_);
36887 _tmp5_ = g_strdup (_tmp4_);
36889 _vala_attribute_cache_unref0 (_tmp2_);
36895 gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix) {
36896 gchar* result = NULL;
36897 ValaCodeNode* _tmp0_;
36898 ValaSymbol* _tmp1_;
36900 ValaSymbol* _tmp2_;
36901 g_return_val_if_fail (node != NULL, NULL);
36903 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_SYMBOL) ? ((ValaSymbol*) _tmp0_) : NULL);
36906 if (_tmp2_ != NULL) {
36907 const gchar* _tmp3_;
36908 ValaSymbol* _tmp4_;
36910 if (_tmp3_ == NULL) {
36914 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_DELEGATE)) {
36915 ValaSymbol* _tmp5_;
36916 ValaSymbol* _tmp6_;
36917 ValaSymbol* _tmp7_;
36918 gchar* _tmp8_ = NULL;
36920 const gchar* _tmp10_;
36921 ValaSymbol* _tmp11_;
36922 const gchar* _tmp12_;
36923 const gchar* _tmp13_;
36924 gchar* _tmp14_ = NULL;
36926 gchar* _tmp16_ = NULL;
36929 _tmp6_ = vala_symbol_get_parent_symbol (_tmp5_);
36931 _tmp8_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp7_);
36935 _tmp12_ = vala_symbol_get_name (_tmp11_);
36937 _tmp14_ = vala_symbol_camel_case_to_lower_case (_tmp13_);
36939 _tmp16_ = g_strdup_printf ("%s%s%s", _tmp9_, _tmp10_, _tmp15_);
36941 _g_free0 (_tmp15_);
36944 _vala_code_node_unref0 (sym);
36947 ValaSymbol* _tmp18_;
36949 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, VALA_TYPE_ERROR_CODE)) {
36950 ValaSymbol* _tmp19_;
36951 gchar* _tmp20_ = NULL;
36953 gchar* _tmp22_ = NULL;
36956 _tmp20_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp19_);
36958 _tmp22_ = g_utf8_strdown (_tmp21_, (gssize) (-1));
36960 _g_free0 (_tmp21_);
36962 _vala_code_node_unref0 (sym);
36965 ValaSymbol* _tmp24_;
36966 ValaSymbol* _tmp25_;
36967 ValaSymbol* _tmp26_;
36968 gchar* _tmp27_ = NULL;
36970 const gchar* _tmp29_;
36971 ValaSymbol* _tmp30_;
36972 gchar* _tmp31_ = NULL;
36974 gchar* _tmp33_ = NULL;
36977 _tmp25_ = vala_symbol_get_parent_symbol (_tmp24_);
36979 _tmp27_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp26_);
36983 _tmp31_ = vala_ccode_base_module_get_ccode_lower_case_suffix (_tmp30_);
36985 _tmp33_ = g_strdup_printf ("%s%s%s", _tmp28_, _tmp29_, _tmp32_);
36987 _g_free0 (_tmp32_);
36988 _g_free0 (_tmp28_);
36990 _vala_code_node_unref0 (sym);
36995 ValaCodeNode* _tmp35_;
36997 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_ERROR_TYPE)) {
36998 ValaCodeNode* _tmp36_;
36999 ValaErrorType* _tmp37_;
37000 ValaErrorType* type;
37001 ValaErrorType* _tmp38_;
37002 ValaErrorDomain* _tmp39_;
37003 ValaErrorDomain* _tmp40_;
37005 _tmp37_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, VALA_TYPE_ERROR_TYPE, ValaErrorType));
37008 _tmp39_ = vala_error_type_get_error_domain (_tmp38_);
37010 if (_tmp40_ == NULL) {
37011 const gchar* _tmp41_;
37013 if (_tmp41_ == NULL) {
37015 _tmp42_ = g_strdup ("g_error");
37017 _vala_code_node_unref0 (type);
37018 _vala_code_node_unref0 (sym);
37021 const gchar* _tmp43_;
37022 gchar* _tmp44_ = NULL;
37024 _tmp44_ = g_strdup_printf ("g_%s_error", _tmp43_);
37026 _vala_code_node_unref0 (type);
37027 _vala_code_node_unref0 (sym);
37031 ValaErrorType* _tmp45_;
37032 ValaErrorCode* _tmp46_;
37033 ValaErrorCode* _tmp47_;
37035 _tmp46_ = vala_error_type_get_error_code (_tmp45_);
37037 if (_tmp47_ == NULL) {
37038 ValaErrorType* _tmp48_;
37039 ValaErrorDomain* _tmp49_;
37040 ValaErrorDomain* _tmp50_;
37041 const gchar* _tmp51_;
37042 gchar* _tmp52_ = NULL;
37044 _tmp49_ = vala_error_type_get_error_domain (_tmp48_);
37047 _tmp52_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp50_, _tmp51_);
37049 _vala_code_node_unref0 (type);
37050 _vala_code_node_unref0 (sym);
37053 ValaErrorType* _tmp53_;
37054 ValaErrorCode* _tmp54_;
37055 ValaErrorCode* _tmp55_;
37056 const gchar* _tmp56_;
37057 gchar* _tmp57_ = NULL;
37059 _tmp54_ = vala_error_type_get_error_code (_tmp53_);
37062 _tmp57_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp55_, _tmp56_);
37064 _vala_code_node_unref0 (type);
37065 _vala_code_node_unref0 (sym);
37069 _vala_code_node_unref0 (type);
37071 ValaCodeNode* _tmp58_;
37072 ValaDataType* _tmp59_;
37073 ValaDataType* type;
37074 ValaDataType* _tmp60_;
37075 ValaTypeSymbol* _tmp61_;
37076 ValaTypeSymbol* _tmp62_;
37077 const gchar* _tmp63_;
37078 gchar* _tmp64_ = NULL;
37080 _tmp59_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp58_, VALA_TYPE_DATA_TYPE, ValaDataType));
37083 _tmp61_ = vala_data_type_get_data_type (_tmp60_);
37086 _tmp64_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp62_, _tmp63_);
37088 _vala_code_node_unref0 (type);
37089 _vala_code_node_unref0 (sym);
37093 _vala_code_node_unref0 (sym);
37097 gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const gchar* infix) {
37098 gchar* result = NULL;
37099 ValaSymbol* _tmp0_;
37100 g_return_val_if_fail (sym != NULL, NULL);
37102 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_PROPERTY)) {
37103 ValaSymbol* _tmp1_;
37104 ValaSymbol* _tmp2_;
37105 ValaSymbol* _tmp3_;
37106 gchar* _tmp4_ = NULL;
37108 ValaSymbol* _tmp6_;
37109 const gchar* _tmp7_;
37110 const gchar* _tmp8_;
37111 gchar* _tmp9_ = NULL;
37113 gchar* _tmp11_ = NULL;
37115 gchar* _tmp13_ = NULL;
37118 _tmp2_ = vala_symbol_get_parent_symbol (_tmp1_);
37120 _tmp4_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp3_, NULL);
37123 _tmp7_ = vala_symbol_get_name (_tmp6_);
37125 _tmp9_ = vala_symbol_camel_case_to_lower_case (_tmp8_);
37127 _tmp11_ = g_strdup_printf ("%s_%s", _tmp5_, _tmp10_);
37129 _tmp13_ = g_utf8_strup (_tmp12_, (gssize) (-1));
37131 _g_free0 (_tmp12_);
37132 _g_free0 (_tmp10_);
37137 ValaSymbol* _tmp15_;
37138 const gchar* _tmp16_;
37139 gchar* _tmp17_ = NULL;
37141 gchar* _tmp19_ = NULL;
37145 _tmp17_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp15_, _tmp16_);
37147 _tmp19_ = g_utf8_strup (_tmp18_, (gssize) (-1));
37149 _g_free0 (_tmp18_);
37156 gchar* vala_ccode_base_module_get_ccode_header_filenames (ValaSymbol* sym) {
37157 gchar* result = NULL;
37158 ValaSymbol* _tmp0_;
37159 ValaCCodeAttribute* _tmp1_ = NULL;
37160 ValaCCodeAttribute* _tmp2_;
37161 const gchar* _tmp3_;
37162 const gchar* _tmp4_;
37165 g_return_val_if_fail (sym != NULL, NULL);
37167 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37169 _tmp3_ = vala_ccode_attribute_get_header_filenames (_tmp2_);
37171 _tmp5_ = g_strdup (_tmp4_);
37173 _vala_attribute_cache_unref0 (_tmp2_);
37179 gchar* vala_ccode_base_module_get_ccode_prefix (ValaSymbol* sym) {
37180 gchar* result = NULL;
37181 ValaSymbol* _tmp0_;
37182 ValaCCodeAttribute* _tmp1_ = NULL;
37183 ValaCCodeAttribute* _tmp2_;
37184 const gchar* _tmp3_;
37185 const gchar* _tmp4_;
37188 g_return_val_if_fail (sym != NULL, NULL);
37190 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37192 _tmp3_ = vala_ccode_attribute_get_prefix (_tmp2_);
37194 _tmp5_ = g_strdup (_tmp4_);
37196 _vala_attribute_cache_unref0 (_tmp2_);
37202 gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym) {
37203 gchar* result = NULL;
37204 ValaSymbol* _tmp0_;
37205 ValaCCodeAttribute* _tmp1_ = NULL;
37206 ValaCCodeAttribute* _tmp2_;
37207 const gchar* _tmp3_;
37208 const gchar* _tmp4_;
37211 g_return_val_if_fail (sym != NULL, NULL);
37213 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37215 _tmp3_ = vala_ccode_attribute_get_lower_case_prefix (_tmp2_);
37217 _tmp5_ = g_strdup (_tmp4_);
37219 _vala_attribute_cache_unref0 (_tmp2_);
37225 gchar* vala_ccode_base_module_get_ccode_lower_case_suffix (ValaSymbol* sym) {
37226 gchar* result = NULL;
37227 ValaSymbol* _tmp0_;
37228 ValaCCodeAttribute* _tmp1_ = NULL;
37229 ValaCCodeAttribute* _tmp2_;
37230 const gchar* _tmp3_;
37231 const gchar* _tmp4_;
37234 g_return_val_if_fail (sym != NULL, NULL);
37236 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37238 _tmp3_ = vala_ccode_attribute_get_lower_case_suffix (_tmp2_);
37240 _tmp5_ = g_strdup (_tmp4_);
37242 _vala_attribute_cache_unref0 (_tmp2_);
37248 gchar* vala_ccode_base_module_get_ccode_ref_function (ValaTypeSymbol* sym) {
37249 gchar* result = NULL;
37250 ValaTypeSymbol* _tmp0_;
37251 ValaCCodeAttribute* _tmp1_ = NULL;
37252 ValaCCodeAttribute* _tmp2_;
37253 const gchar* _tmp3_;
37254 const gchar* _tmp4_;
37257 g_return_val_if_fail (sym != NULL, NULL);
37259 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37261 _tmp3_ = vala_ccode_attribute_get_ref_function (_tmp2_);
37263 _tmp5_ = g_strdup (_tmp4_);
37265 _vala_attribute_cache_unref0 (_tmp2_);
37271 gboolean vala_ccode_base_module_is_reference_counting (ValaTypeSymbol* sym) {
37272 gboolean result = FALSE;
37273 ValaTypeSymbol* _tmp0_;
37274 g_return_val_if_fail (sym != NULL, FALSE);
37276 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CLASS)) {
37277 ValaTypeSymbol* _tmp1_;
37278 gchar* _tmp2_ = NULL;
37282 _tmp2_ = vala_ccode_base_module_get_ccode_ref_function (_tmp1_);
37284 _tmp4_ = _tmp3_ != NULL;
37289 ValaTypeSymbol* _tmp5_;
37291 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_INTERFACE)) {
37302 gboolean vala_ccode_base_module_get_ccode_ref_function_void (ValaClass* cl) {
37303 gboolean result = FALSE;
37305 ValaCCodeAttribute* _tmp1_ = NULL;
37306 ValaCCodeAttribute* _tmp2_;
37310 g_return_val_if_fail (cl != NULL, FALSE);
37312 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37314 _tmp3_ = vala_ccode_attribute_get_ref_function_void (_tmp2_);
37317 _vala_attribute_cache_unref0 (_tmp2_);
37323 gboolean vala_ccode_base_module_get_ccode_free_function_address_of (ValaClass* cl) {
37324 gboolean result = FALSE;
37326 ValaCCodeAttribute* _tmp1_ = NULL;
37327 ValaCCodeAttribute* _tmp2_;
37331 g_return_val_if_fail (cl != NULL, FALSE);
37333 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37335 _tmp3_ = vala_ccode_attribute_get_free_function_address_of (_tmp2_);
37338 _vala_attribute_cache_unref0 (_tmp2_);
37344 gchar* vala_ccode_base_module_get_ccode_unref_function (ValaObjectTypeSymbol* sym) {
37345 gchar* result = NULL;
37346 ValaObjectTypeSymbol* _tmp0_;
37347 ValaCCodeAttribute* _tmp1_ = NULL;
37348 ValaCCodeAttribute* _tmp2_;
37349 const gchar* _tmp3_;
37350 const gchar* _tmp4_;
37353 g_return_val_if_fail (sym != NULL, NULL);
37355 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37357 _tmp3_ = vala_ccode_attribute_get_unref_function (_tmp2_);
37359 _tmp5_ = g_strdup (_tmp4_);
37361 _vala_attribute_cache_unref0 (_tmp2_);
37367 gchar* vala_ccode_base_module_get_ccode_ref_sink_function (ValaObjectTypeSymbol* sym) {
37368 gchar* result = NULL;
37369 ValaObjectTypeSymbol* _tmp0_;
37370 ValaCCodeAttribute* _tmp1_ = NULL;
37371 ValaCCodeAttribute* _tmp2_;
37372 const gchar* _tmp3_;
37373 const gchar* _tmp4_;
37376 g_return_val_if_fail (sym != NULL, NULL);
37378 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37380 _tmp3_ = vala_ccode_attribute_get_ref_sink_function (_tmp2_);
37382 _tmp5_ = g_strdup (_tmp4_);
37384 _vala_attribute_cache_unref0 (_tmp2_);
37390 gchar* vala_ccode_base_module_get_ccode_copy_function (ValaTypeSymbol* sym) {
37391 gchar* result = NULL;
37392 ValaTypeSymbol* _tmp0_;
37393 ValaCCodeAttribute* _tmp1_ = NULL;
37394 ValaCCodeAttribute* _tmp2_;
37395 const gchar* _tmp3_;
37396 const gchar* _tmp4_;
37399 g_return_val_if_fail (sym != NULL, NULL);
37401 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37403 _tmp3_ = vala_ccode_attribute_get_copy_function (_tmp2_);
37405 _tmp5_ = g_strdup (_tmp4_);
37407 _vala_attribute_cache_unref0 (_tmp2_);
37413 gchar* vala_ccode_base_module_get_ccode_destroy_function (ValaTypeSymbol* sym) {
37414 gchar* result = NULL;
37415 ValaTypeSymbol* _tmp0_;
37416 ValaCCodeAttribute* _tmp1_ = NULL;
37417 ValaCCodeAttribute* _tmp2_;
37418 const gchar* _tmp3_;
37419 const gchar* _tmp4_;
37422 g_return_val_if_fail (sym != NULL, NULL);
37424 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37426 _tmp3_ = vala_ccode_attribute_get_destroy_function (_tmp2_);
37428 _tmp5_ = g_strdup (_tmp4_);
37430 _vala_attribute_cache_unref0 (_tmp2_);
37436 gchar* vala_ccode_base_module_get_ccode_dup_function (ValaTypeSymbol* sym) {
37437 gchar* result = NULL;
37438 ValaTypeSymbol* _tmp0_;
37439 ValaTypeSymbol* _tmp9_;
37440 gchar* _tmp10_ = NULL;
37441 g_return_val_if_fail (sym != NULL, NULL);
37443 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_STRUCT)) {
37444 ValaTypeSymbol* _tmp1_;
37448 _tmp2_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp1_);
37454 ValaTypeSymbol* _tmp4_;
37455 gchar* _tmp5_ = NULL;
37460 _tmp5_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp4_);
37462 _tmp7_ = g_strconcat (_tmp6_, "dup", NULL);
37470 _tmp10_ = vala_ccode_base_module_get_ccode_copy_function (_tmp9_);
37476 gchar* vala_ccode_base_module_get_ccode_free_function (ValaTypeSymbol* sym) {
37477 gchar* result = NULL;
37478 ValaTypeSymbol* _tmp0_;
37479 ValaCCodeAttribute* _tmp1_ = NULL;
37480 ValaCCodeAttribute* _tmp2_;
37481 const gchar* _tmp3_;
37482 const gchar* _tmp4_;
37485 g_return_val_if_fail (sym != NULL, NULL);
37487 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37489 _tmp3_ = vala_ccode_attribute_get_free_function (_tmp2_);
37491 _tmp5_ = g_strdup (_tmp4_);
37493 _vala_attribute_cache_unref0 (_tmp2_);
37499 gboolean vala_ccode_base_module_get_ccode_is_gboxed (ValaTypeSymbol* sym) {
37500 gboolean result = FALSE;
37501 ValaTypeSymbol* _tmp0_;
37502 gchar* _tmp1_ = NULL;
37505 g_return_val_if_fail (sym != NULL, FALSE);
37507 _tmp1_ = vala_ccode_base_module_get_ccode_free_function (_tmp0_);
37509 _tmp3_ = g_strcmp0 (_tmp2_, "g_boxed_free") == 0;
37516 gchar* vala_ccode_base_module_get_ccode_type_id (ValaCodeNode* node) {
37517 gchar* result = NULL;
37518 ValaCodeNode* _tmp0_;
37519 ValaCCodeAttribute* _tmp1_ = NULL;
37520 ValaCCodeAttribute* _tmp2_;
37521 const gchar* _tmp3_;
37522 const gchar* _tmp4_;
37525 g_return_val_if_fail (node != NULL, NULL);
37527 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37529 _tmp3_ = vala_ccode_attribute_get_type_id (_tmp2_);
37531 _tmp5_ = g_strdup (_tmp4_);
37533 _vala_attribute_cache_unref0 (_tmp2_);
37539 gchar* vala_ccode_base_module_get_ccode_marshaller_type_name (ValaCodeNode* node) {
37540 gchar* result = NULL;
37541 ValaCodeNode* _tmp0_;
37542 ValaCCodeAttribute* _tmp1_ = NULL;
37543 ValaCCodeAttribute* _tmp2_;
37544 const gchar* _tmp3_;
37545 const gchar* _tmp4_;
37548 g_return_val_if_fail (node != NULL, NULL);
37550 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37552 _tmp3_ = vala_ccode_attribute_get_marshaller_type_name (_tmp2_);
37554 _tmp5_ = g_strdup (_tmp4_);
37556 _vala_attribute_cache_unref0 (_tmp2_);
37562 gchar* vala_ccode_base_module_get_ccode_get_value_function (ValaCodeNode* sym) {
37563 gchar* result = NULL;
37564 ValaCodeNode* _tmp0_;
37565 ValaCCodeAttribute* _tmp1_ = NULL;
37566 ValaCCodeAttribute* _tmp2_;
37567 const gchar* _tmp3_;
37568 const gchar* _tmp4_;
37571 g_return_val_if_fail (sym != NULL, NULL);
37573 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37575 _tmp3_ = vala_ccode_attribute_get_get_value_function (_tmp2_);
37577 _tmp5_ = g_strdup (_tmp4_);
37579 _vala_attribute_cache_unref0 (_tmp2_);
37585 gchar* vala_ccode_base_module_get_ccode_set_value_function (ValaCodeNode* sym) {
37586 gchar* result = NULL;
37587 ValaCodeNode* _tmp0_;
37588 ValaCCodeAttribute* _tmp1_ = NULL;
37589 ValaCCodeAttribute* _tmp2_;
37590 const gchar* _tmp3_;
37591 const gchar* _tmp4_;
37594 g_return_val_if_fail (sym != NULL, NULL);
37596 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37598 _tmp3_ = vala_ccode_attribute_get_set_value_function (_tmp2_);
37600 _tmp5_ = g_strdup (_tmp4_);
37602 _vala_attribute_cache_unref0 (_tmp2_);
37608 gchar* vala_ccode_base_module_get_ccode_take_value_function (ValaCodeNode* sym) {
37609 gchar* result = NULL;
37610 ValaCodeNode* _tmp0_;
37611 ValaCCodeAttribute* _tmp1_ = NULL;
37612 ValaCCodeAttribute* _tmp2_;
37613 const gchar* _tmp3_;
37614 const gchar* _tmp4_;
37617 g_return_val_if_fail (sym != NULL, NULL);
37619 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37621 _tmp3_ = vala_ccode_attribute_get_take_value_function (_tmp2_);
37623 _tmp5_ = g_strdup (_tmp4_);
37625 _vala_attribute_cache_unref0 (_tmp2_);
37631 gchar* vala_ccode_base_module_get_ccode_param_spec_function (ValaCodeNode* sym) {
37632 gchar* result = NULL;
37633 ValaCodeNode* _tmp0_;
37634 ValaCCodeAttribute* _tmp1_ = NULL;
37635 ValaCCodeAttribute* _tmp2_;
37636 const gchar* _tmp3_;
37637 const gchar* _tmp4_;
37640 g_return_val_if_fail (sym != NULL, NULL);
37642 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37644 _tmp3_ = vala_ccode_attribute_get_param_spec_function (_tmp2_);
37646 _tmp5_ = g_strdup (_tmp4_);
37648 _vala_attribute_cache_unref0 (_tmp2_);
37654 gchar* vala_ccode_base_module_get_ccode_type_check_function (ValaTypeSymbol* sym) {
37655 gchar* result = NULL;
37656 ValaTypeSymbol* _tmp0_;
37659 ValaTypeSymbol* _tmp2_;
37660 gchar* _tmp3_ = NULL;
37662 gboolean _tmp4_ = FALSE;
37665 g_return_val_if_fail (sym != NULL, NULL);
37667 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp0_) : NULL);
37670 _tmp3_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp2_, "CCode", "type_check_function");
37673 if (_tmp5_ != NULL) {
37674 const gchar* _tmp6_;
37676 _tmp4_ = _tmp6_ != NULL;
37683 _vala_code_node_unref0 (cl);
37686 gboolean _tmp8_ = FALSE;
37687 gboolean _tmp9_ = FALSE;
37688 gboolean _tmp10_ = FALSE;
37689 gboolean _tmp11_ = FALSE;
37690 ValaClass* _tmp12_;
37696 if (_tmp12_ != NULL) {
37697 ValaClass* _tmp13_;
37701 _tmp14_ = vala_class_get_is_compact (_tmp13_);
37711 ValaTypeSymbol* _tmp17_;
37713 _tmp10_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, VALA_TYPE_STRUCT);
37719 ValaTypeSymbol* _tmp19_;
37721 _tmp9_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, VALA_TYPE_ENUM);
37727 ValaTypeSymbol* _tmp21_;
37729 _tmp8_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_DELEGATE);
37734 _tmp23_ = g_strdup ("");
37737 _vala_code_node_unref0 (cl);
37740 ValaTypeSymbol* _tmp24_;
37741 gchar* _tmp25_ = NULL;
37743 _tmp25_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp24_, "IS_");
37746 _vala_code_node_unref0 (cl);
37751 _vala_code_node_unref0 (cl);
37755 gchar* vala_ccode_base_module_get_ccode_default_value (ValaTypeSymbol* sym) {
37756 gchar* result = NULL;
37757 ValaTypeSymbol* _tmp0_;
37758 ValaCCodeAttribute* _tmp1_ = NULL;
37759 ValaCCodeAttribute* _tmp2_;
37760 const gchar* _tmp3_;
37761 const gchar* _tmp4_;
37764 g_return_val_if_fail (sym != NULL, NULL);
37766 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
37768 _tmp3_ = vala_ccode_attribute_get_default_value (_tmp2_);
37770 _tmp5_ = g_strdup (_tmp4_);
37772 _vala_attribute_cache_unref0 (_tmp2_);
37778 gboolean vala_ccode_base_module_get_ccode_has_copy_function (ValaStruct* st) {
37779 gboolean result = FALSE;
37780 ValaStruct* _tmp0_;
37781 gboolean _tmp1_ = FALSE;
37782 g_return_val_if_fail (st != NULL, FALSE);
37784 _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "has_copy_function", TRUE);
37790 gboolean vala_ccode_base_module_get_ccode_has_destroy_function (ValaStruct* st) {
37791 gboolean result = FALSE;
37792 ValaStruct* _tmp0_;
37793 gboolean _tmp1_ = FALSE;
37794 g_return_val_if_fail (st != NULL, FALSE);
37796 _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "has_destroy_function", TRUE);
37802 gdouble vala_ccode_base_module_get_ccode_instance_pos (ValaCodeNode* node) {
37803 gdouble result = 0.0;
37804 ValaCodeNode* _tmp0_;
37805 g_return_val_if_fail (node != NULL, 0.0);
37807 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_DELEGATE)) {
37808 ValaCodeNode* _tmp1_;
37809 gdouble _tmp2_ = 0.0;
37811 _tmp2_ = vala_code_node_get_attribute_double (_tmp1_, "CCode", "instance_pos", (gdouble) (-2));
37815 ValaCodeNode* _tmp3_;
37816 gdouble _tmp4_ = 0.0;
37818 _tmp4_ = vala_code_node_get_attribute_double (_tmp3_, "CCode", "instance_pos", (gdouble) 0);
37825 gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node) {
37826 gboolean result = FALSE;
37827 ValaCodeNode* _tmp0_;
37828 ValaCCodeAttribute* _tmp1_ = NULL;
37829 ValaCCodeAttribute* _tmp2_;
37833 g_return_val_if_fail (node != NULL, FALSE);
37835 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37837 _tmp3_ = vala_ccode_attribute_get_array_length (_tmp2_);
37840 _vala_attribute_cache_unref0 (_tmp2_);
37846 gchar* vala_ccode_base_module_get_ccode_array_length_type (ValaCodeNode* node) {
37847 gchar* result = NULL;
37848 ValaCodeNode* _tmp0_;
37849 ValaCCodeAttribute* _tmp1_ = NULL;
37850 ValaCCodeAttribute* _tmp2_;
37851 const gchar* _tmp3_;
37852 const gchar* _tmp4_;
37855 g_return_val_if_fail (node != NULL, NULL);
37857 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37859 _tmp3_ = vala_ccode_attribute_get_array_length_type (_tmp2_);
37861 _tmp5_ = g_strdup (_tmp4_);
37863 _vala_attribute_cache_unref0 (_tmp2_);
37869 gboolean vala_ccode_base_module_get_ccode_array_null_terminated (ValaCodeNode* node) {
37870 gboolean result = FALSE;
37871 ValaCodeNode* _tmp0_;
37872 ValaCCodeAttribute* _tmp1_ = NULL;
37873 ValaCCodeAttribute* _tmp2_;
37877 g_return_val_if_fail (node != NULL, FALSE);
37879 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37881 _tmp3_ = vala_ccode_attribute_get_array_null_terminated (_tmp2_);
37884 _vala_attribute_cache_unref0 (_tmp2_);
37890 gchar* vala_ccode_base_module_get_ccode_array_length_name (ValaCodeNode* node) {
37891 gchar* result = NULL;
37892 ValaCodeNode* _tmp0_;
37893 ValaCCodeAttribute* _tmp1_ = NULL;
37894 ValaCCodeAttribute* _tmp2_;
37895 const gchar* _tmp3_;
37896 const gchar* _tmp4_;
37899 g_return_val_if_fail (node != NULL, NULL);
37901 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37903 _tmp3_ = vala_ccode_attribute_get_array_length_name (_tmp2_);
37905 _tmp5_ = g_strdup (_tmp4_);
37907 _vala_attribute_cache_unref0 (_tmp2_);
37913 gchar* vala_ccode_base_module_get_ccode_array_length_expr (ValaCodeNode* node) {
37914 gchar* result = NULL;
37915 ValaCodeNode* _tmp0_;
37916 ValaCCodeAttribute* _tmp1_ = NULL;
37917 ValaCCodeAttribute* _tmp2_;
37918 const gchar* _tmp3_;
37919 const gchar* _tmp4_;
37922 g_return_val_if_fail (node != NULL, NULL);
37924 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
37926 _tmp3_ = vala_ccode_attribute_get_array_length_expr (_tmp2_);
37928 _tmp5_ = g_strdup (_tmp4_);
37930 _vala_attribute_cache_unref0 (_tmp2_);
37936 gdouble vala_ccode_base_module_get_ccode_array_length_pos (ValaCodeNode* node) {
37937 gdouble result = 0.0;
37938 ValaCodeNode* _tmp0_;
37939 ValaAttribute* _tmp1_ = NULL;
37941 gboolean _tmp2_ = FALSE;
37942 ValaAttribute* _tmp3_;
37944 ValaCodeNode* _tmp9_;
37945 g_return_val_if_fail (node != NULL, 0.0);
37947 _tmp1_ = vala_code_node_get_attribute (_tmp0_, "CCode");
37950 if (_tmp3_ != NULL) {
37951 ValaAttribute* _tmp4_;
37952 gboolean _tmp5_ = FALSE;
37954 _tmp5_ = vala_attribute_has_argument (_tmp4_, "array_length_pos");
37961 ValaAttribute* _tmp7_;
37962 gdouble _tmp8_ = 0.0;
37964 _tmp8_ = vala_attribute_get_double (_tmp7_, "array_length_pos", (gdouble) 0);
37966 _vala_code_node_unref0 (a);
37970 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_PARAMETER)) {
37971 ValaCodeNode* _tmp10_;
37972 ValaParameter* _tmp11_;
37973 ValaParameter* param;
37974 ValaParameter* _tmp12_;
37975 gdouble _tmp13_ = 0.0;
37977 _tmp11_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, VALA_TYPE_PARAMETER, ValaParameter));
37980 _tmp13_ = vala_ccode_base_module_get_ccode_pos (_tmp12_);
37981 result = _tmp13_ + 0.1;
37982 _vala_code_node_unref0 (param);
37983 _vala_code_node_unref0 (a);
37986 result = (gdouble) (-3);
37987 _vala_code_node_unref0 (a);
37990 _vala_code_node_unref0 (a);
37994 gdouble vala_ccode_base_module_get_ccode_delegate_target_pos (ValaCodeNode* node) {
37995 gdouble result = 0.0;
37996 ValaCodeNode* _tmp0_;
37997 ValaAttribute* _tmp1_ = NULL;
37999 gboolean _tmp2_ = FALSE;
38000 ValaAttribute* _tmp3_;
38002 ValaCodeNode* _tmp9_;
38003 g_return_val_if_fail (node != NULL, 0.0);
38005 _tmp1_ = vala_code_node_get_attribute (_tmp0_, "CCode");
38008 if (_tmp3_ != NULL) {
38009 ValaAttribute* _tmp4_;
38010 gboolean _tmp5_ = FALSE;
38012 _tmp5_ = vala_attribute_has_argument (_tmp4_, "delegate_target_pos");
38019 ValaAttribute* _tmp7_;
38020 gdouble _tmp8_ = 0.0;
38022 _tmp8_ = vala_attribute_get_double (_tmp7_, "delegate_target_pos", (gdouble) 0);
38024 _vala_code_node_unref0 (a);
38028 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_PARAMETER)) {
38029 ValaCodeNode* _tmp10_;
38030 ValaParameter* _tmp11_;
38031 ValaParameter* param;
38032 ValaParameter* _tmp12_;
38033 gdouble _tmp13_ = 0.0;
38035 _tmp11_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, VALA_TYPE_PARAMETER, ValaParameter));
38038 _tmp13_ = vala_ccode_base_module_get_ccode_pos (_tmp12_);
38039 result = _tmp13_ + 0.1;
38040 _vala_code_node_unref0 (param);
38041 _vala_code_node_unref0 (a);
38044 result = (gdouble) (-3);
38045 _vala_code_node_unref0 (a);
38048 _vala_code_node_unref0 (a);
38052 gdouble vala_ccode_base_module_get_ccode_destroy_notify_pos (ValaCodeNode* node) {
38053 gdouble result = 0.0;
38054 ValaCodeNode* _tmp0_;
38055 ValaAttribute* _tmp1_ = NULL;
38057 gboolean _tmp2_ = FALSE;
38058 ValaAttribute* _tmp3_;
38060 ValaCodeNode* _tmp9_;
38061 g_return_val_if_fail (node != NULL, 0.0);
38063 _tmp1_ = vala_code_node_get_attribute (_tmp0_, "CCode");
38066 if (_tmp3_ != NULL) {
38067 ValaAttribute* _tmp4_;
38068 gboolean _tmp5_ = FALSE;
38070 _tmp5_ = vala_attribute_has_argument (_tmp4_, "destroy_notify_pos");
38077 ValaAttribute* _tmp7_;
38078 gdouble _tmp8_ = 0.0;
38080 _tmp8_ = vala_attribute_get_double (_tmp7_, "destroy_notify_pos", (gdouble) 0);
38082 _vala_code_node_unref0 (a);
38086 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_PARAMETER)) {
38087 ValaCodeNode* _tmp10_;
38088 ValaParameter* _tmp11_;
38089 ValaParameter* param;
38090 ValaParameter* _tmp12_;
38091 gdouble _tmp13_ = 0.0;
38093 _tmp11_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, VALA_TYPE_PARAMETER, ValaParameter));
38096 _tmp13_ = vala_ccode_base_module_get_ccode_pos (_tmp12_);
38097 result = _tmp13_ + 0.1;
38098 _vala_code_node_unref0 (param);
38099 _vala_code_node_unref0 (a);
38102 result = (gdouble) (-3);
38103 _vala_code_node_unref0 (a);
38106 _vala_code_node_unref0 (a);
38110 gboolean vala_ccode_base_module_get_ccode_delegate_target (ValaCodeNode* node) {
38111 gboolean result = FALSE;
38112 ValaCodeNode* _tmp0_;
38113 ValaCCodeAttribute* _tmp1_ = NULL;
38114 ValaCCodeAttribute* _tmp2_;
38118 g_return_val_if_fail (node != NULL, FALSE);
38120 _tmp1_ = vala_ccode_base_module_get_ccode_attribute (_tmp0_);
38122 _tmp3_ = vala_ccode_attribute_get_delegate_target (_tmp2_);
38125 _vala_attribute_cache_unref0 (_tmp2_);
38131 gchar* vala_ccode_base_module_get_ccode_delegate_target_name (ValaVariable* variable) {
38132 gchar* result = NULL;
38133 ValaVariable* _tmp0_;
38134 ValaCCodeAttribute* _tmp1_ = NULL;
38135 ValaCCodeAttribute* _tmp2_;
38136 const gchar* _tmp3_;
38137 const gchar* _tmp4_;
38140 g_return_val_if_fail (variable != NULL, NULL);
38142 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
38144 _tmp3_ = vala_ccode_attribute_get_delegate_target_name (_tmp2_);
38146 _tmp5_ = g_strdup (_tmp4_);
38148 _vala_attribute_cache_unref0 (_tmp2_);
38154 gdouble vala_ccode_base_module_get_ccode_pos (ValaParameter* param) {
38155 gdouble result = 0.0;
38156 ValaParameter* _tmp0_;
38157 ValaCCodeAttribute* _tmp1_ = NULL;
38158 ValaCCodeAttribute* _tmp2_;
38162 g_return_val_if_fail (param != NULL, 0.0);
38164 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
38166 _tmp3_ = vala_ccode_attribute_get_pos (_tmp2_);
38169 _vala_attribute_cache_unref0 (_tmp2_);
38175 gchar* vala_ccode_base_module_get_ccode_type (ValaCodeNode* node) {
38176 gchar* result = NULL;
38177 ValaCodeNode* _tmp0_;
38178 gchar* _tmp1_ = NULL;
38179 g_return_val_if_fail (node != NULL, NULL);
38181 _tmp1_ = vala_code_node_get_attribute_string (_tmp0_, "CCode", "type");
38187 gboolean vala_ccode_base_module_get_ccode_simple_generics (ValaMethod* m) {
38188 gboolean result = FALSE;
38189 ValaMethod* _tmp0_;
38190 gboolean _tmp1_ = FALSE;
38191 g_return_val_if_fail (m != NULL, FALSE);
38193 _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "simple_generics", FALSE);
38199 gchar* vala_ccode_base_module_get_ccode_real_name (ValaSymbol* sym) {
38200 gchar* result = NULL;
38201 ValaSymbol* _tmp0_;
38202 ValaCCodeAttribute* _tmp1_ = NULL;
38203 ValaCCodeAttribute* _tmp2_;
38204 const gchar* _tmp3_;
38205 const gchar* _tmp4_;
38208 g_return_val_if_fail (sym != NULL, NULL);
38210 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
38212 _tmp3_ = vala_ccode_attribute_get_real_name (_tmp2_);
38214 _tmp5_ = g_strdup (_tmp4_);
38216 _vala_attribute_cache_unref0 (_tmp2_);
38222 gchar* vala_ccode_base_module_get_ccode_vfunc_name (ValaMethod* m) {
38223 gchar* result = NULL;
38224 ValaMethod* _tmp0_;
38225 ValaCCodeAttribute* _tmp1_ = NULL;
38226 ValaCCodeAttribute* _tmp2_;
38227 const gchar* _tmp3_;
38228 const gchar* _tmp4_;
38231 g_return_val_if_fail (m != NULL, NULL);
38233 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
38235 _tmp3_ = vala_ccode_attribute_get_vfunc_name (_tmp2_);
38237 _tmp5_ = g_strdup (_tmp4_);
38239 _vala_attribute_cache_unref0 (_tmp2_);
38245 gchar* vala_ccode_base_module_get_ccode_finish_name (ValaMethod* m) {
38246 gchar* result = NULL;
38247 ValaMethod* _tmp0_;
38248 ValaCCodeAttribute* _tmp1_ = NULL;
38249 ValaCCodeAttribute* _tmp2_;
38250 const gchar* _tmp3_;
38251 const gchar* _tmp4_;
38254 g_return_val_if_fail (m != NULL, NULL);
38256 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
38258 _tmp3_ = vala_ccode_attribute_get_finish_name (_tmp2_);
38260 _tmp5_ = g_strdup (_tmp4_);
38262 _vala_attribute_cache_unref0 (_tmp2_);
38268 gchar* vala_ccode_base_module_get_ccode_finish_vfunc_name (ValaMethod* m) {
38269 gchar* result = NULL;
38270 ValaMethod* _tmp0_;
38271 ValaCCodeAttribute* _tmp1_ = NULL;
38272 ValaCCodeAttribute* _tmp2_;
38273 const gchar* _tmp3_;
38274 const gchar* _tmp4_;
38277 g_return_val_if_fail (m != NULL, NULL);
38279 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
38281 _tmp3_ = vala_ccode_attribute_get_finish_vfunc_name (_tmp2_);
38283 _tmp5_ = g_strdup (_tmp4_);
38285 _vala_attribute_cache_unref0 (_tmp2_);
38291 gchar* vala_ccode_base_module_get_ccode_finish_real_name (ValaMethod* m) {
38292 gchar* result = NULL;
38293 ValaMethod* _tmp0_;
38294 ValaCCodeAttribute* _tmp1_ = NULL;
38295 ValaCCodeAttribute* _tmp2_;
38296 const gchar* _tmp3_;
38297 const gchar* _tmp4_;
38300 g_return_val_if_fail (m != NULL, NULL);
38302 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
38304 _tmp3_ = vala_ccode_attribute_get_finish_real_name (_tmp2_);
38306 _tmp5_ = g_strdup (_tmp4_);
38308 _vala_attribute_cache_unref0 (_tmp2_);
38314 gboolean vala_ccode_base_module_get_ccode_no_accessor_method (ValaProperty* p) {
38315 gboolean result = FALSE;
38316 ValaProperty* _tmp0_;
38317 ValaAttribute* _tmp1_ = NULL;
38318 ValaAttribute* _tmp2_;
38320 g_return_val_if_fail (p != NULL, FALSE);
38322 _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp0_, "NoAccessorMethod");
38324 _tmp3_ = _tmp2_ != NULL;
38325 _vala_code_node_unref0 (_tmp2_);
38331 gboolean vala_ccode_base_module_get_ccode_has_type_id (ValaTypeSymbol* sym) {
38332 gboolean result = FALSE;
38333 ValaTypeSymbol* _tmp0_;
38334 gboolean _tmp1_ = FALSE;
38335 g_return_val_if_fail (sym != NULL, FALSE);
38337 _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "has_type_id", TRUE);
38343 gboolean vala_ccode_base_module_get_ccode_has_new_function (ValaMethod* m) {
38344 gboolean result = FALSE;
38345 ValaMethod* _tmp0_;
38346 gboolean _tmp1_ = FALSE;
38347 g_return_val_if_fail (m != NULL, FALSE);
38349 _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "has_new_function", TRUE);
38355 gboolean vala_ccode_base_module_get_ccode_has_generic_type_parameter (ValaMethod* m) {
38356 gboolean result = FALSE;
38357 ValaMethod* _tmp0_;
38358 ValaAttribute* _tmp1_ = NULL;
38360 gboolean _tmp2_ = FALSE;
38361 ValaAttribute* _tmp3_;
38363 g_return_val_if_fail (m != NULL, FALSE);
38365 _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp0_, "CCode");
38368 if (_tmp3_ != NULL) {
38369 ValaAttribute* _tmp4_;
38370 gboolean _tmp5_ = FALSE;
38372 _tmp5_ = vala_attribute_has_argument (_tmp4_, "generic_type_pos");
38379 _vala_code_node_unref0 (a);
38384 gdouble vala_ccode_base_module_get_ccode_generic_type_pos (ValaMethod* m) {
38385 gdouble result = 0.0;
38386 ValaMethod* _tmp0_;
38387 gdouble _tmp1_ = 0.0;
38388 g_return_val_if_fail (m != NULL, 0.0);
38390 _tmp1_ = vala_code_node_get_attribute_double ((ValaCodeNode*) _tmp0_, "CCode", "generic_type_pos", (gdouble) 0);
38396 gchar* vala_ccode_base_module_get_ccode_sentinel (ValaMethod* m) {
38397 gchar* result = NULL;
38398 ValaMethod* _tmp0_;
38399 ValaCCodeAttribute* _tmp1_ = NULL;
38400 ValaCCodeAttribute* _tmp2_;
38401 const gchar* _tmp3_;
38402 const gchar* _tmp4_;
38405 g_return_val_if_fail (m != NULL, NULL);
38407 _tmp1_ = vala_ccode_base_module_get_ccode_attribute ((ValaCodeNode*) _tmp0_);
38409 _tmp3_ = vala_ccode_attribute_get_sentinel (_tmp2_);
38411 _tmp5_ = g_strdup (_tmp4_);
38413 _vala_attribute_cache_unref0 (_tmp2_);
38419 gboolean vala_ccode_base_module_get_ccode_notify (ValaProperty* prop) {
38420 gboolean result = FALSE;
38421 ValaProperty* _tmp0_;
38422 gboolean _tmp1_ = FALSE;
38423 g_return_val_if_fail (prop != NULL, FALSE);
38425 _tmp1_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp0_, "CCode", "notify", TRUE);
38431 gchar* vala_ccode_base_module_get_ccode_nick (ValaProperty* prop) {
38432 gchar* result = NULL;
38433 ValaProperty* _tmp0_;
38434 gchar* _tmp1_ = NULL;
38436 const gchar* _tmp2_;
38437 g_return_val_if_fail (prop != NULL, NULL);
38439 _tmp1_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp0_, "Description", "nick");
38442 if (_tmp2_ == NULL) {
38443 ValaProperty* _tmp3_;
38444 const gchar* _tmp4_;
38445 const gchar* _tmp5_;
38446 gchar* _tmp6_ = NULL;
38448 _tmp4_ = vala_symbol_get_name ((ValaSymbol*) _tmp3_);
38450 _tmp6_ = string_replace (_tmp5_, "_", "-");
38459 gchar* vala_ccode_base_module_get_ccode_blurb (ValaProperty* prop) {
38460 gchar* result = NULL;
38461 ValaProperty* _tmp0_;
38462 gchar* _tmp1_ = NULL;
38464 const gchar* _tmp2_;
38465 g_return_val_if_fail (prop != NULL, NULL);
38467 _tmp1_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp0_, "Description", "blurb");
38470 if (_tmp2_ == NULL) {
38471 ValaProperty* _tmp3_;
38472 const gchar* _tmp4_;
38473 const gchar* _tmp5_;
38474 gchar* _tmp6_ = NULL;
38476 _tmp4_ = vala_symbol_get_name ((ValaSymbol*) _tmp3_);
38478 _tmp6_ = string_replace (_tmp5_, "_", "-");
38487 gchar* vala_ccode_base_module_get_ccode_declarator_suffix (ValaDataType* type) {
38488 gchar* result = NULL;
38489 ValaDataType* _tmp0_;
38490 ValaArrayType* _tmp1_;
38491 ValaArrayType* array_type;
38492 ValaArrayType* _tmp2_;
38494 g_return_val_if_fail (type != NULL, NULL);
38496 _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp0_) : NULL);
38497 array_type = _tmp1_;
38498 _tmp2_ = array_type;
38499 if (_tmp2_ != NULL) {
38500 ValaArrayType* _tmp3_;
38503 _tmp3_ = array_type;
38504 _tmp4_ = vala_array_type_get_fixed_length (_tmp3_);
38507 ValaArrayType* _tmp6_;
38510 gchar* _tmp9_ = NULL;
38511 _tmp6_ = array_type;
38512 _tmp7_ = vala_array_type_get_length (_tmp6_);
38514 _tmp9_ = g_strdup_printf ("[%d]", _tmp8_);
38516 _vala_code_node_unref0 (array_type);
38519 ValaArrayType* _tmp10_;
38522 _tmp10_ = array_type;
38523 _tmp11_ = vala_array_type_get_inline_allocated (_tmp10_);
38527 _tmp13_ = g_strdup ("[]");
38529 _vala_code_node_unref0 (array_type);
38534 _tmp14_ = g_strdup ("");
38536 _vala_code_node_unref0 (array_type);
38541 static gunichar string_get_char (const gchar* self, glong index) {
38542 gunichar result = 0U;
38544 gunichar _tmp1_ = 0U;
38545 g_return_val_if_fail (self != NULL, 0U);
38547 _tmp1_ = g_utf8_get_char (((gchar*) self) + _tmp0_);
38553 ValaCCodeConstant* vala_ccode_base_module_get_signal_canonical_constant (ValaCCodeBaseModule* self, ValaSignal* sig, const gchar* detail) {
38554 ValaCCodeConstant* result = NULL;
38557 ValaSignal* _tmp1_;
38558 gchar* _tmp2_ = NULL;
38560 const gchar* _tmp15_;
38563 const gchar* _tmp21_;
38564 ValaCCodeConstant* _tmp22_;
38565 g_return_val_if_fail (self != NULL, NULL);
38566 g_return_val_if_fail (sig != NULL, NULL);
38567 _tmp0_ = g_string_new ("\"");
38570 _tmp2_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp1_);
38573 const gchar* _tmp3_;
38576 const gchar* _tmp6_;
38577 gunichar _tmp7_ = 0U;
38580 const gchar* _tmp12_;
38581 const gchar* _tmp13_ = NULL;
38584 _tmp4_ = strlen (_tmp3_);
38586 if (!(_tmp5_ > 0)) {
38590 _tmp7_ = string_get_char (_tmp6_, (glong) 0);
38593 if (_tmp8_ == ((gunichar) '_')) {
38596 g_string_append_c (_tmp9_, '-');
38602 g_string_append_unichar (_tmp10_, _tmp11_);
38605 _tmp13_ = g_utf8_next_char (_tmp12_);
38606 _tmp14_ = g_strdup (_tmp13_);
38611 if (_tmp15_ != NULL) {
38614 const gchar* _tmp18_;
38616 g_string_append (_tmp16_, "::");
38619 g_string_append (_tmp17_, _tmp18_);
38622 g_string_append_c (_tmp19_, '"');
38624 _tmp21_ = _tmp20_->str;
38625 _tmp22_ = vala_ccode_constant_new (_tmp21_);
38628 _g_string_free0 (str);
38633 ValaCCodeConstant* vala_ccode_base_module_get_enum_value_canonical_cconstant (ValaEnumValue* ev) {
38634 ValaCCodeConstant* result = NULL;
38637 ValaEnumValue* _tmp1_;
38638 const gchar* _tmp2_;
38639 const gchar* _tmp3_;
38644 const gchar* _tmp20_;
38645 ValaCCodeConstant* _tmp21_;
38646 g_return_val_if_fail (ev != NULL, NULL);
38647 _tmp0_ = g_string_new ("\"");
38650 _tmp2_ = vala_symbol_get_name ((ValaSymbol*) _tmp1_);
38652 _tmp4_ = g_strdup (_tmp3_);
38655 const gchar* _tmp5_;
38658 const gchar* _tmp8_;
38659 gunichar _tmp9_ = 0U;
38662 const gchar* _tmp15_;
38663 const gchar* _tmp16_ = NULL;
38666 _tmp6_ = strlen (_tmp5_);
38668 if (!(_tmp7_ > 0)) {
38672 _tmp9_ = string_get_char (_tmp8_, (glong) 0);
38675 if (_tmp10_ == ((gunichar) '_')) {
38678 g_string_append_c (_tmp11_, '-');
38682 gunichar _tmp14_ = 0U;
38685 _tmp14_ = g_unichar_tolower (_tmp13_);
38686 g_string_append_unichar (_tmp12_, _tmp14_);
38689 _tmp16_ = g_utf8_next_char (_tmp15_);
38690 _tmp17_ = g_strdup (_tmp16_);
38695 g_string_append_c (_tmp18_, '"');
38697 _tmp20_ = _tmp19_->str;
38698 _tmp21_ = vala_ccode_constant_new (_tmp20_);
38701 _g_string_free0 (str);
38706 gboolean vala_ccode_base_module_get_signal_has_emitter (ValaCCodeBaseModule* self, ValaSignal* sig) {
38707 gboolean result = FALSE;
38708 ValaSignal* _tmp0_;
38709 ValaAttribute* _tmp1_ = NULL;
38710 ValaAttribute* _tmp2_;
38712 g_return_val_if_fail (self != NULL, FALSE);
38713 g_return_val_if_fail (sig != NULL, FALSE);
38715 _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp0_, "HasEmitter");
38717 _tmp3_ = _tmp2_ != NULL;
38718 _vala_code_node_unref0 (_tmp2_);
38724 ValaCCodeConstant* vala_ccode_base_module_get_property_canonical_cconstant (ValaCCodeBaseModule* self, ValaProperty* prop) {
38725 ValaCCodeConstant* result = NULL;
38726 ValaProperty* _tmp0_;
38727 const gchar* _tmp1_;
38728 const gchar* _tmp2_;
38729 gchar* _tmp3_ = NULL;
38731 gchar* _tmp5_ = NULL;
38733 ValaCCodeConstant* _tmp7_;
38734 ValaCCodeConstant* _tmp8_;
38735 g_return_val_if_fail (self != NULL, NULL);
38736 g_return_val_if_fail (prop != NULL, NULL);
38738 _tmp1_ = vala_symbol_get_name ((ValaSymbol*) _tmp0_);
38740 _tmp3_ = string_replace (_tmp2_, "_", "-");
38742 _tmp5_ = g_strdup_printf ("\"%s\"", _tmp4_);
38744 _tmp7_ = vala_ccode_constant_new (_tmp6_);
38753 static void vala_ccode_base_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl) {
38754 ValaCCodeBaseModule * self;
38755 self = (ValaCCodeBaseModule*) base;
38756 g_return_if_fail (cl != NULL);
38760 void vala_ccode_base_module_create_postcondition_statement (ValaCCodeBaseModule* self, ValaExpression* postcondition) {
38761 ValaCCodeIdentifier* _tmp0_;
38762 ValaCCodeIdentifier* _tmp1_;
38763 ValaCCodeFunctionCall* _tmp2_;
38764 ValaCCodeFunctionCall* _tmp3_;
38765 ValaCCodeFunctionCall* cassert;
38766 ValaExpression* _tmp4_;
38767 ValaExpression* _tmp5_;
38768 ValaCCodeExpression* _tmp6_ = NULL;
38769 ValaCCodeExpression* _tmp7_;
38770 ValaCCodeFunction* _tmp8_;
38771 ValaCCodeFunction* _tmp9_;
38772 g_return_if_fail (self != NULL);
38773 g_return_if_fail (postcondition != NULL);
38774 _tmp0_ = vala_ccode_identifier_new ("g_warn_if_fail");
38776 _tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_);
38778 _vala_ccode_node_unref0 (_tmp1_);
38780 _tmp4_ = postcondition;
38781 vala_code_node_emit ((ValaCodeNode*) _tmp4_, (ValaCodeGenerator*) self);
38782 _tmp5_ = postcondition;
38783 _tmp6_ = vala_ccode_base_module_get_cvalue (self, _tmp5_);
38785 vala_ccode_function_call_add_argument (cassert, _tmp7_);
38786 _vala_ccode_node_unref0 (_tmp7_);
38787 _tmp8_ = vala_ccode_base_module_get_ccode (self);
38789 vala_ccode_function_add_expression (_tmp9_, (ValaCCodeExpression*) cassert);
38790 _vala_ccode_node_unref0 (cassert);
38794 static gboolean vala_ccode_base_module_real_is_gobject_property (ValaCCodeBaseModule* self, ValaProperty* prop) {
38795 gboolean result = FALSE;
38796 g_return_val_if_fail (prop != NULL, FALSE);
38802 gboolean vala_ccode_base_module_is_gobject_property (ValaCCodeBaseModule* self, ValaProperty* prop) {
38803 g_return_val_if_fail (self != NULL, FALSE);
38804 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->is_gobject_property (self, prop);
38808 ValaDataType* vala_ccode_base_module_get_this_type (ValaCCodeBaseModule* self) {
38809 ValaDataType* result = NULL;
38810 gboolean _tmp0_ = FALSE;
38811 ValaMethod* _tmp1_;
38812 ValaMethod* _tmp2_;
38814 g_return_val_if_fail (self != NULL, NULL);
38815 _tmp1_ = vala_ccode_base_module_get_current_method (self);
38817 if (_tmp2_ != NULL) {
38818 ValaMethod* _tmp3_;
38819 ValaMethod* _tmp4_;
38820 ValaMemberBinding _tmp5_;
38821 ValaMemberBinding _tmp6_;
38822 _tmp3_ = vala_ccode_base_module_get_current_method (self);
38824 _tmp5_ = vala_method_get_binding (_tmp4_);
38826 _tmp0_ = _tmp6_ == VALA_MEMBER_BINDING_INSTANCE;
38832 ValaMethod* _tmp8_;
38833 ValaMethod* _tmp9_;
38834 ValaParameter* _tmp10_;
38835 ValaParameter* _tmp11_;
38836 ValaDataType* _tmp12_;
38837 ValaDataType* _tmp13_;
38838 ValaDataType* _tmp14_;
38839 _tmp8_ = vala_ccode_base_module_get_current_method (self);
38841 _tmp10_ = vala_method_get_this_parameter (_tmp9_);
38843 _tmp12_ = vala_variable_get_variable_type ((ValaVariable*) _tmp11_);
38845 _tmp14_ = _vala_code_node_ref0 (_tmp13_);
38849 gboolean _tmp15_ = FALSE;
38850 ValaPropertyAccessor* _tmp16_;
38851 ValaPropertyAccessor* _tmp17_;
38853 _tmp16_ = vala_ccode_base_module_get_current_property_accessor (self);
38855 if (_tmp17_ != NULL) {
38856 ValaPropertyAccessor* _tmp18_;
38857 ValaPropertyAccessor* _tmp19_;
38858 ValaProperty* _tmp20_;
38859 ValaProperty* _tmp21_;
38860 ValaMemberBinding _tmp22_;
38861 ValaMemberBinding _tmp23_;
38862 _tmp18_ = vala_ccode_base_module_get_current_property_accessor (self);
38864 _tmp20_ = vala_property_accessor_get_prop (_tmp19_);
38866 _tmp22_ = vala_property_get_binding (_tmp21_);
38868 _tmp15_ = _tmp23_ == VALA_MEMBER_BINDING_INSTANCE;
38874 ValaPropertyAccessor* _tmp25_;
38875 ValaPropertyAccessor* _tmp26_;
38876 ValaProperty* _tmp27_;
38877 ValaProperty* _tmp28_;
38878 ValaParameter* _tmp29_;
38879 ValaParameter* _tmp30_;
38880 ValaDataType* _tmp31_;
38881 ValaDataType* _tmp32_;
38882 ValaDataType* _tmp33_;
38883 _tmp25_ = vala_ccode_base_module_get_current_property_accessor (self);
38885 _tmp27_ = vala_property_accessor_get_prop (_tmp26_);
38887 _tmp29_ = vala_property_get_this_parameter (_tmp28_);
38889 _tmp31_ = vala_variable_get_variable_type ((ValaVariable*) _tmp30_);
38891 _tmp33_ = _vala_code_node_ref0 (_tmp32_);
38895 gboolean _tmp34_ = FALSE;
38896 ValaConstructor* _tmp35_;
38897 ValaConstructor* _tmp36_;
38899 _tmp35_ = vala_ccode_base_module_get_current_constructor (self);
38901 if (_tmp36_ != NULL) {
38902 ValaConstructor* _tmp37_;
38903 ValaConstructor* _tmp38_;
38904 ValaMemberBinding _tmp39_;
38905 ValaMemberBinding _tmp40_;
38906 _tmp37_ = vala_ccode_base_module_get_current_constructor (self);
38908 _tmp39_ = vala_constructor_get_binding (_tmp38_);
38910 _tmp34_ = _tmp40_ == VALA_MEMBER_BINDING_INSTANCE;
38916 ValaConstructor* _tmp42_;
38917 ValaConstructor* _tmp43_;
38918 ValaParameter* _tmp44_;
38919 ValaParameter* _tmp45_;
38920 ValaDataType* _tmp46_;
38921 ValaDataType* _tmp47_;
38922 ValaDataType* _tmp48_;
38923 _tmp42_ = vala_ccode_base_module_get_current_constructor (self);
38925 _tmp44_ = vala_constructor_get_this_parameter (_tmp43_);
38927 _tmp46_ = vala_variable_get_variable_type ((ValaVariable*) _tmp45_);
38929 _tmp48_ = _vala_code_node_ref0 (_tmp47_);
38933 gboolean _tmp49_ = FALSE;
38934 ValaDestructor* _tmp50_;
38935 ValaDestructor* _tmp51_;
38937 _tmp50_ = vala_ccode_base_module_get_current_destructor (self);
38939 if (_tmp51_ != NULL) {
38940 ValaDestructor* _tmp52_;
38941 ValaDestructor* _tmp53_;
38942 ValaMemberBinding _tmp54_;
38943 ValaMemberBinding _tmp55_;
38944 _tmp52_ = vala_ccode_base_module_get_current_destructor (self);
38946 _tmp54_ = vala_destructor_get_binding (_tmp53_);
38948 _tmp49_ = _tmp55_ == VALA_MEMBER_BINDING_INSTANCE;
38954 ValaDestructor* _tmp57_;
38955 ValaDestructor* _tmp58_;
38956 ValaParameter* _tmp59_;
38957 ValaParameter* _tmp60_;
38958 ValaDataType* _tmp61_;
38959 ValaDataType* _tmp62_;
38960 ValaDataType* _tmp63_;
38961 _tmp57_ = vala_ccode_base_module_get_current_destructor (self);
38963 _tmp59_ = vala_destructor_get_this_parameter (_tmp58_);
38965 _tmp61_ = vala_variable_get_variable_type ((ValaVariable*) _tmp60_);
38967 _tmp63_ = _vala_code_node_ref0 (_tmp62_);
38979 ValaCCodeFunctionCall* vala_ccode_base_module_generate_instance_cast (ValaCCodeBaseModule* self, ValaCCodeExpression* expr, ValaTypeSymbol* type) {
38980 ValaCCodeFunctionCall* result = NULL;
38981 ValaCCodeIdentifier* _tmp0_;
38982 ValaCCodeIdentifier* _tmp1_;
38983 ValaCCodeFunctionCall* _tmp2_;
38984 ValaCCodeFunctionCall* _tmp3_;
38985 ValaCCodeFunctionCall* _result_;
38986 ValaCCodeExpression* _tmp4_;
38987 ValaTypeSymbol* _tmp5_;
38988 gchar* _tmp6_ = NULL;
38990 ValaCCodeIdentifier* _tmp8_;
38991 ValaCCodeIdentifier* _tmp9_;
38992 ValaTypeSymbol* _tmp10_;
38993 gchar* _tmp11_ = NULL;
38995 ValaCCodeIdentifier* _tmp13_;
38996 ValaCCodeIdentifier* _tmp14_;
38997 g_return_val_if_fail (self != NULL, NULL);
38998 g_return_val_if_fail (expr != NULL, NULL);
38999 g_return_val_if_fail (type != NULL, NULL);
39000 _tmp0_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_CAST");
39002 _tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_);
39004 _vala_ccode_node_unref0 (_tmp1_);
39007 vala_ccode_function_call_add_argument (_result_, _tmp4_);
39009 _tmp6_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp5_);
39011 _tmp8_ = vala_ccode_identifier_new (_tmp7_);
39013 vala_ccode_function_call_add_argument (_result_, (ValaCCodeExpression*) _tmp9_);
39014 _vala_ccode_node_unref0 (_tmp9_);
39017 _tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_);
39019 _tmp13_ = vala_ccode_identifier_new (_tmp12_);
39021 vala_ccode_function_call_add_argument (_result_, (ValaCCodeExpression*) _tmp14_);
39022 _vala_ccode_node_unref0 (_tmp14_);
39023 _g_free0 (_tmp12_);
39029 static void vala_ccode_base_module_generate_struct_destroy_function (ValaCCodeBaseModule* self, ValaStruct* st) {
39030 ValaCCodeFile* _tmp0_;
39031 ValaStruct* _tmp1_;
39032 gchar* _tmp2_ = NULL;
39034 gboolean _tmp4_ = FALSE;
39036 ValaStruct* _tmp6_;
39037 gchar* _tmp7_ = NULL;
39039 ValaCCodeFunction* _tmp9_;
39040 ValaCCodeFunction* _tmp10_;
39041 ValaCCodeFunction* function;
39042 ValaCCodeFunction* _tmp11_;
39043 ValaCCodeFunction* _tmp12_;
39044 ValaStruct* _tmp13_;
39045 gchar* _tmp14_ = NULL;
39049 ValaCCodeParameter* _tmp18_;
39050 ValaCCodeParameter* _tmp19_;
39051 ValaCCodeBaseModuleEmitContext* _tmp20_;
39052 ValaCCodeBaseModuleEmitContext* _tmp21_;
39053 ValaCCodeFunction* _tmp22_;
39054 ValaStruct* _tmp23_;
39055 ValaTargetValue* _tmp24_ = NULL;
39056 ValaTargetValue* this_value;
39057 ValaCCodeFile* _tmp49_;
39058 ValaCCodeFunction* _tmp50_;
39059 ValaCCodeFile* _tmp51_;
39060 ValaCCodeFunction* _tmp52_;
39061 g_return_if_fail (self != NULL);
39062 g_return_if_fail (st != NULL);
39063 _tmp0_ = self->cfile;
39065 _tmp2_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp1_);
39067 _tmp4_ = vala_ccode_file_add_declaration (_tmp0_, _tmp3_);
39074 _tmp7_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp6_);
39076 _tmp9_ = vala_ccode_function_new (_tmp8_, "void");
39079 function = _tmp10_;
39080 _tmp11_ = function;
39081 vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC);
39082 _tmp12_ = function;
39084 _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_);
39086 _tmp16_ = g_strconcat (_tmp15_, "*", NULL);
39088 _tmp18_ = vala_ccode_parameter_new ("self", _tmp17_);
39090 vala_ccode_function_add_parameter (_tmp12_, _tmp19_);
39091 _vala_ccode_node_unref0 (_tmp19_);
39092 _g_free0 (_tmp17_);
39093 _g_free0 (_tmp15_);
39094 _tmp20_ = vala_ccode_base_module_emit_context_new (NULL);
39096 vala_ccode_base_module_push_context (self, _tmp21_);
39097 _vala_ccode_base_module_emit_context_unref0 (_tmp21_);
39098 _tmp22_ = function;
39099 vala_ccode_base_module_push_function (self, _tmp22_);
39101 _tmp24_ = vala_ccode_base_module_load_this_parameter (self, (ValaTypeSymbol*) _tmp23_);
39102 this_value = _tmp24_;
39104 ValaStruct* _tmp25_;
39105 ValaList* _tmp26_ = NULL;
39113 _tmp26_ = vala_struct_get_fields (_tmp25_);
39116 _tmp28_ = vala_collection_get_size ((ValaCollection*) _tmp27_);
39126 gpointer _tmp35_ = NULL;
39128 ValaField* _tmp36_;
39129 ValaMemberBinding _tmp37_;
39130 ValaMemberBinding _tmp38_;
39131 _tmp30_ = _f_index;
39132 _f_index = _tmp30_ + 1;
39133 _tmp31_ = _f_index;
39135 if (!(_tmp31_ < _tmp32_)) {
39139 _tmp34_ = _f_index;
39140 _tmp35_ = vala_list_get (_tmp33_, _tmp34_);
39141 f = (ValaField*) _tmp35_;
39143 _tmp37_ = vala_field_get_binding (_tmp36_);
39145 if (_tmp38_ == VALA_MEMBER_BINDING_INSTANCE) {
39146 ValaField* _tmp39_;
39147 ValaDataType* _tmp40_;
39148 ValaDataType* _tmp41_;
39149 gboolean _tmp42_ = FALSE;
39151 _tmp40_ = vala_variable_get_variable_type ((ValaVariable*) _tmp39_);
39153 _tmp42_ = vala_ccode_base_module_requires_destroy (self, _tmp41_);
39155 ValaCCodeFunction* _tmp43_;
39156 ValaCCodeFunction* _tmp44_;
39157 ValaField* _tmp45_;
39158 ValaTargetValue* _tmp46_;
39159 ValaCCodeExpression* _tmp47_ = NULL;
39160 ValaCCodeExpression* _tmp48_;
39161 _tmp43_ = vala_ccode_base_module_get_ccode (self);
39164 _tmp46_ = this_value;
39165 _tmp47_ = vala_ccode_base_module_destroy_field (self, _tmp45_, _tmp46_);
39167 vala_ccode_function_add_expression (_tmp44_, _tmp48_);
39168 _vala_ccode_node_unref0 (_tmp48_);
39171 _vala_code_node_unref0 (f);
39173 _vala_iterable_unref0 (_f_list);
39175 vala_ccode_base_module_pop_function (self);
39176 vala_ccode_base_module_pop_context (self);
39177 _tmp49_ = self->cfile;
39178 _tmp50_ = function;
39179 vala_ccode_file_add_function_declaration (_tmp49_, _tmp50_);
39180 _tmp51_ = self->cfile;
39181 _tmp52_ = function;
39182 vala_ccode_file_add_function (_tmp51_, _tmp52_);
39183 _vala_target_value_unref0 (this_value);
39184 _vala_ccode_node_unref0 (function);
39188 static void vala_ccode_base_module_generate_struct_copy_function (ValaCCodeBaseModule* self, ValaStruct* st) {
39189 ValaCCodeFile* _tmp0_;
39190 ValaStruct* _tmp1_;
39191 gchar* _tmp2_ = NULL;
39193 gboolean _tmp4_ = FALSE;
39195 ValaStruct* _tmp6_;
39196 gchar* _tmp7_ = NULL;
39198 ValaCCodeFunction* _tmp9_;
39199 ValaCCodeFunction* _tmp10_;
39200 ValaCCodeFunction* function;
39201 ValaCCodeFunction* _tmp11_;
39202 ValaCCodeFunction* _tmp12_;
39203 ValaStruct* _tmp13_;
39204 gchar* _tmp14_ = NULL;
39210 ValaCCodeParameter* _tmp20_;
39211 ValaCCodeParameter* _tmp21_;
39212 ValaCCodeFunction* _tmp22_;
39213 ValaStruct* _tmp23_;
39214 gchar* _tmp24_ = NULL;
39218 ValaCCodeParameter* _tmp28_;
39219 ValaCCodeParameter* _tmp29_;
39220 ValaCCodeBaseModuleEmitContext* _tmp30_;
39221 ValaCCodeBaseModuleEmitContext* _tmp31_;
39222 ValaCCodeFunction* _tmp32_;
39223 ValaStruct* _tmp33_;
39224 ValaDataType* _tmp34_ = NULL;
39225 ValaDataType* _tmp35_;
39226 ValaCCodeIdentifier* _tmp36_;
39227 ValaCCodeIdentifier* _tmp37_;
39228 ValaGLibValue* _tmp38_;
39229 ValaGLibValue* _tmp39_;
39230 ValaGLibValue* dest_struct;
39231 ValaCCodeFile* _tmp71_;
39232 ValaCCodeFunction* _tmp72_;
39233 ValaCCodeFile* _tmp73_;
39234 ValaCCodeFunction* _tmp74_;
39235 g_return_if_fail (self != NULL);
39236 g_return_if_fail (st != NULL);
39237 _tmp0_ = self->cfile;
39239 _tmp2_ = vala_ccode_base_module_get_ccode_copy_function ((ValaTypeSymbol*) _tmp1_);
39241 _tmp4_ = vala_ccode_file_add_declaration (_tmp0_, _tmp3_);
39248 _tmp7_ = vala_ccode_base_module_get_ccode_copy_function ((ValaTypeSymbol*) _tmp6_);
39250 _tmp9_ = vala_ccode_function_new (_tmp8_, "void");
39253 function = _tmp10_;
39254 _tmp11_ = function;
39255 vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC);
39256 _tmp12_ = function;
39258 _tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_);
39260 _tmp16_ = g_strconcat ("const ", _tmp15_, NULL);
39262 _tmp18_ = g_strconcat (_tmp17_, "*", NULL);
39264 _tmp20_ = vala_ccode_parameter_new ("self", _tmp19_);
39266 vala_ccode_function_add_parameter (_tmp12_, _tmp21_);
39267 _vala_ccode_node_unref0 (_tmp21_);
39268 _g_free0 (_tmp19_);
39269 _g_free0 (_tmp17_);
39270 _g_free0 (_tmp15_);
39271 _tmp22_ = function;
39273 _tmp24_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp23_);
39275 _tmp26_ = g_strconcat (_tmp25_, "*", NULL);
39277 _tmp28_ = vala_ccode_parameter_new ("dest", _tmp27_);
39279 vala_ccode_function_add_parameter (_tmp22_, _tmp29_);
39280 _vala_ccode_node_unref0 (_tmp29_);
39281 _g_free0 (_tmp27_);
39282 _g_free0 (_tmp25_);
39283 _tmp30_ = vala_ccode_base_module_emit_context_new (NULL);
39285 vala_ccode_base_module_push_context (self, _tmp31_);
39286 _vala_ccode_base_module_emit_context_unref0 (_tmp31_);
39287 _tmp32_ = function;
39288 vala_ccode_base_module_push_function (self, _tmp32_);
39290 _tmp34_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp33_);
39292 _tmp36_ = vala_ccode_identifier_new ("(*dest)");
39294 _tmp38_ = vala_glib_value_new (_tmp35_, (ValaCCodeExpression*) _tmp37_, TRUE);
39296 _vala_ccode_node_unref0 (_tmp37_);
39297 _vala_code_node_unref0 (_tmp35_);
39298 dest_struct = _tmp39_;
39300 ValaStruct* _tmp40_;
39301 ValaList* _tmp41_ = NULL;
39309 _tmp41_ = vala_struct_get_fields (_tmp40_);
39312 _tmp43_ = vala_collection_get_size ((ValaCollection*) _tmp42_);
39322 gpointer _tmp50_ = NULL;
39324 ValaField* _tmp51_;
39325 ValaMemberBinding _tmp52_;
39326 ValaMemberBinding _tmp53_;
39327 _tmp45_ = _f_index;
39328 _f_index = _tmp45_ + 1;
39329 _tmp46_ = _f_index;
39331 if (!(_tmp46_ < _tmp47_)) {
39335 _tmp49_ = _f_index;
39336 _tmp50_ = vala_list_get (_tmp48_, _tmp49_);
39337 f = (ValaField*) _tmp50_;
39339 _tmp52_ = vala_field_get_binding (_tmp51_);
39341 if (_tmp53_ == VALA_MEMBER_BINDING_INSTANCE) {
39342 ValaField* _tmp54_;
39343 ValaStruct* _tmp55_;
39344 ValaTargetValue* _tmp56_ = NULL;
39345 ValaTargetValue* _tmp57_;
39346 ValaTargetValue* _tmp58_ = NULL;
39347 ValaTargetValue* _tmp59_;
39348 ValaTargetValue* value;
39349 ValaField* _tmp60_;
39350 ValaDataType* _tmp61_;
39351 ValaDataType* _tmp62_;
39352 gboolean _tmp63_ = FALSE;
39353 ValaField* _tmp68_;
39354 ValaGLibValue* _tmp69_;
39355 ValaTargetValue* _tmp70_;
39358 _tmp56_ = vala_ccode_base_module_load_this_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp55_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
39360 _tmp58_ = vala_code_generator_load_field ((ValaCodeGenerator*) self, _tmp54_, _tmp57_);
39362 _vala_target_value_unref0 (_tmp57_);
39365 _tmp61_ = vala_variable_get_variable_type ((ValaVariable*) _tmp60_);
39367 _tmp63_ = vala_ccode_base_module_requires_copy (self, _tmp62_);
39369 ValaTargetValue* _tmp64_;
39370 ValaField* _tmp65_;
39371 ValaTargetValue* _tmp66_ = NULL;
39372 ValaTargetValue* _tmp67_;
39375 _tmp66_ = vala_ccode_base_module_copy_value (self, _tmp64_, (ValaCodeNode*) _tmp65_);
39376 _vala_target_value_unref0 (value);
39379 if (_tmp67_ == NULL) {
39380 _vala_target_value_unref0 (value);
39381 _vala_code_node_unref0 (f);
39386 _tmp69_ = dest_struct;
39388 vala_code_generator_store_field ((ValaCodeGenerator*) self, _tmp68_, (ValaTargetValue*) _tmp69_, _tmp70_);
39389 _vala_target_value_unref0 (value);
39391 _vala_code_node_unref0 (f);
39393 _vala_iterable_unref0 (_f_list);
39395 vala_ccode_base_module_pop_function (self);
39396 vala_ccode_base_module_pop_context (self);
39397 _tmp71_ = self->cfile;
39398 _tmp72_ = function;
39399 vala_ccode_file_add_function_declaration (_tmp71_, _tmp72_);
39400 _tmp73_ = self->cfile;
39401 _tmp74_ = function;
39402 vala_ccode_file_add_function (_tmp73_, _tmp74_);
39403 _vala_target_value_unref0 (dest_struct);
39404 _vala_ccode_node_unref0 (function);
39408 void vala_ccode_base_module_return_default_value (ValaCCodeBaseModule* self, ValaDataType* return_type) {
39409 ValaCCodeFunction* _tmp0_;
39410 ValaCCodeFunction* _tmp1_;
39411 ValaDataType* _tmp2_;
39412 ValaCCodeExpression* _tmp3_ = NULL;
39413 ValaCCodeExpression* _tmp4_;
39414 g_return_if_fail (self != NULL);
39415 g_return_if_fail (return_type != NULL);
39416 _tmp0_ = vala_ccode_base_module_get_ccode (self);
39418 _tmp2_ = return_type;
39419 _tmp3_ = vala_ccode_base_module_default_value_for_type (self, _tmp2_, FALSE);
39421 vala_ccode_function_add_return (_tmp1_, _tmp4_);
39422 _vala_ccode_node_unref0 (_tmp4_);
39426 static void vala_ccode_base_module_real_generate_dynamic_method_wrapper (ValaCCodeBaseModule* self, ValaDynamicMethod* method) {
39427 g_return_if_fail (method != NULL);
39431 void vala_ccode_base_module_generate_dynamic_method_wrapper (ValaCCodeBaseModule* self, ValaDynamicMethod* method) {
39432 g_return_if_fail (self != NULL);
39433 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_dynamic_method_wrapper (self, method);
39437 static gboolean vala_ccode_base_module_real_method_has_wrapper (ValaCCodeBaseModule* self, ValaMethod* method) {
39438 gboolean result = FALSE;
39439 g_return_val_if_fail (method != NULL, FALSE);
39445 gboolean vala_ccode_base_module_method_has_wrapper (ValaCCodeBaseModule* self, ValaMethod* method) {
39446 g_return_val_if_fail (self != NULL, FALSE);
39447 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->method_has_wrapper (self, method);
39451 static ValaCCodeFunctionCall* vala_ccode_base_module_real_get_param_spec (ValaCCodeBaseModule* self, ValaProperty* prop) {
39452 ValaCCodeFunctionCall* result = NULL;
39453 ValaCCodeIdentifier* _tmp0_;
39454 ValaCCodeIdentifier* _tmp1_;
39455 ValaCCodeFunctionCall* _tmp2_;
39456 ValaCCodeFunctionCall* _tmp3_;
39457 g_return_val_if_fail (prop != NULL, NULL);
39458 _tmp0_ = vala_ccode_identifier_new ("");
39460 _tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_);
39462 _vala_ccode_node_unref0 (_tmp1_);
39468 ValaCCodeFunctionCall* vala_ccode_base_module_get_param_spec (ValaCCodeBaseModule* self, ValaProperty* prop) {
39469 g_return_val_if_fail (self != NULL, NULL);
39470 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_param_spec (self, prop);
39474 static ValaCCodeFunctionCall* vala_ccode_base_module_real_get_signal_creation (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type) {
39475 ValaCCodeFunctionCall* result = NULL;
39476 ValaCCodeIdentifier* _tmp0_;
39477 ValaCCodeIdentifier* _tmp1_;
39478 ValaCCodeFunctionCall* _tmp2_;
39479 ValaCCodeFunctionCall* _tmp3_;
39480 g_return_val_if_fail (sig != NULL, NULL);
39481 g_return_val_if_fail (type != NULL, NULL);
39482 _tmp0_ = vala_ccode_identifier_new ("");
39484 _tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_);
39486 _vala_ccode_node_unref0 (_tmp1_);
39492 ValaCCodeFunctionCall* vala_ccode_base_module_get_signal_creation (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type) {
39493 g_return_val_if_fail (self != NULL, NULL);
39494 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_signal_creation (self, sig, type);
39498 static void vala_ccode_base_module_real_register_dbus_info (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable) {
39499 g_return_if_fail (block != NULL);
39500 g_return_if_fail (bindable != NULL);
39504 void vala_ccode_base_module_register_dbus_info (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable) {
39505 g_return_if_fail (self != NULL);
39506 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->register_dbus_info (self, block, bindable);
39510 static gchar* vala_ccode_base_module_real_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node) {
39511 gchar* result = NULL;
39512 ValaDynamicProperty* _tmp0_;
39513 ValaSourceReference* _tmp1_;
39514 ValaSourceReference* _tmp2_;
39515 ValaDynamicProperty* _tmp3_;
39516 ValaDataType* _tmp4_;
39517 ValaDataType* _tmp5_;
39518 gchar* _tmp6_ = NULL;
39520 gchar* _tmp8_ = NULL;
39523 g_return_val_if_fail (node != NULL, NULL);
39525 _tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp0_);
39528 _tmp4_ = vala_dynamic_property_get_dynamic_type (_tmp3_);
39530 _tmp6_ = vala_code_node_to_string ((ValaCodeNode*) _tmp5_);
39532 _tmp8_ = g_strdup_printf ("dynamic properties are not supported for %s", _tmp7_);
39534 vala_report_error (_tmp2_, _tmp9_);
39537 _tmp10_ = g_strdup ("");
39543 gchar* vala_ccode_base_module_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node) {
39544 g_return_val_if_fail (self != NULL, NULL);
39545 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_property_getter_cname (self, node);
39549 static gchar* vala_ccode_base_module_real_get_dynamic_property_setter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node) {
39550 gchar* result = NULL;
39551 ValaDynamicProperty* _tmp0_;
39552 ValaSourceReference* _tmp1_;
39553 ValaSourceReference* _tmp2_;
39554 ValaDynamicProperty* _tmp3_;
39555 ValaDataType* _tmp4_;
39556 ValaDataType* _tmp5_;
39557 gchar* _tmp6_ = NULL;
39559 gchar* _tmp8_ = NULL;
39562 g_return_val_if_fail (node != NULL, NULL);
39564 _tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp0_);
39567 _tmp4_ = vala_dynamic_property_get_dynamic_type (_tmp3_);
39569 _tmp6_ = vala_code_node_to_string ((ValaCodeNode*) _tmp5_);
39571 _tmp8_ = g_strdup_printf ("dynamic properties are not supported for %s", _tmp7_);
39573 vala_report_error (_tmp2_, _tmp9_);
39576 _tmp10_ = g_strdup ("");
39582 gchar* vala_ccode_base_module_get_dynamic_property_setter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node) {
39583 g_return_val_if_fail (self != NULL, NULL);
39584 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_property_setter_cname (self, node);
39588 static gchar* vala_ccode_base_module_real_get_dynamic_signal_cname (ValaCCodeBaseModule* self, ValaDynamicSignal* node) {
39589 gchar* result = NULL;
39591 g_return_val_if_fail (node != NULL, NULL);
39592 _tmp0_ = g_strdup ("");
39598 gchar* vala_ccode_base_module_get_dynamic_signal_cname (ValaCCodeBaseModule* self, ValaDynamicSignal* node) {
39599 g_return_val_if_fail (self != NULL, NULL);
39600 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_signal_cname (self, node);
39604 static gchar* vala_ccode_base_module_real_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) {
39605 gchar* result = NULL;
39607 g_return_val_if_fail (node != NULL, NULL);
39608 _tmp0_ = g_strdup ("");
39614 gchar* vala_ccode_base_module_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) {
39615 g_return_val_if_fail (self != NULL, NULL);
39616 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_signal_connect_wrapper_name (self, node);
39620 static gchar* vala_ccode_base_module_real_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) {
39621 gchar* result = NULL;
39623 g_return_val_if_fail (node != NULL, NULL);
39624 _tmp0_ = g_strdup ("");
39630 gchar* vala_ccode_base_module_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) {
39631 g_return_val_if_fail (self != NULL, NULL);
39632 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_signal_connect_after_wrapper_name (self, node);
39636 static gchar* vala_ccode_base_module_real_get_dynamic_signal_disconnect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) {
39637 gchar* result = NULL;
39639 g_return_val_if_fail (node != NULL, NULL);
39640 _tmp0_ = g_strdup ("");
39646 gchar* vala_ccode_base_module_get_dynamic_signal_disconnect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node) {
39647 g_return_val_if_fail (self != NULL, NULL);
39648 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_dynamic_signal_disconnect_wrapper_name (self, node);
39652 static gchar* vala_ccode_base_module_real_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim) {
39653 gchar* result = NULL;
39655 g_return_val_if_fail (array_cname != NULL, NULL);
39656 _tmp0_ = g_strdup ("");
39662 gchar* vala_ccode_base_module_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim) {
39663 g_return_val_if_fail (self != NULL, NULL);
39664 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_array_length_cname (self, array_cname, dim);
39668 static gchar* vala_ccode_base_module_real_get_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim) {
39669 gchar* result = NULL;
39671 g_return_val_if_fail (param != NULL, NULL);
39672 _tmp0_ = g_strdup ("");
39678 gchar* vala_ccode_base_module_get_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim) {
39679 g_return_val_if_fail (self != NULL, NULL);
39680 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_parameter_array_length_cname (self, param, dim);
39684 static ValaCCodeExpression* vala_ccode_base_module_real_get_array_length_cexpression (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim) {
39685 ValaCCodeExpression* result = NULL;
39686 ValaCCodeConstant* _tmp0_;
39687 g_return_val_if_fail (array_expr != NULL, NULL);
39688 _tmp0_ = vala_ccode_constant_new ("");
39689 result = (ValaCCodeExpression*) _tmp0_;
39694 ValaCCodeExpression* vala_ccode_base_module_get_array_length_cexpression (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim) {
39695 g_return_val_if_fail (self != NULL, NULL);
39696 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_array_length_cexpression (self, array_expr, dim);
39700 static ValaCCodeExpression* vala_ccode_base_module_real_get_array_length_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim) {
39701 ValaCCodeExpression* result = NULL;
39702 ValaCCodeInvalidExpression* _tmp0_;
39703 g_return_val_if_fail (value != NULL, NULL);
39704 _tmp0_ = vala_ccode_invalid_expression_new ();
39705 result = (ValaCCodeExpression*) _tmp0_;
39710 ValaCCodeExpression* vala_ccode_base_module_get_array_length_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim) {
39711 g_return_val_if_fail (self != NULL, NULL);
39712 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_array_length_cvalue (self, value, dim);
39716 static gchar* vala_ccode_base_module_real_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname) {
39717 gchar* result = NULL;
39719 g_return_val_if_fail (array_cname != NULL, NULL);
39720 _tmp0_ = g_strdup ("");
39726 gchar* vala_ccode_base_module_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname) {
39727 g_return_val_if_fail (self != NULL, NULL);
39728 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->get_array_size_cname (self, array_cname);
39732 static void vala_ccode_base_module_real_add_simple_check (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails) {
39733 g_return_if_fail (node != NULL);
39737 void vala_ccode_base_module_add_simple_check (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails) {
39738 g_return_if_fail (self != NULL);
39739 VALA_CCODE_BASE_MODULE_GET_CLASS (self)->add_simple_check (self, node, always_fails);
39743 static gchar* vala_ccode_base_module_real_generate_ready_function (ValaCCodeBaseModule* self, ValaMethod* m) {
39744 gchar* result = NULL;
39746 g_return_val_if_fail (m != NULL, NULL);
39747 _tmp0_ = g_strdup ("");
39753 gchar* vala_ccode_base_module_generate_ready_function (ValaCCodeBaseModule* self, ValaMethod* m) {
39754 g_return_val_if_fail (self != NULL, NULL);
39755 return VALA_CCODE_BASE_MODULE_GET_CLASS (self)->generate_ready_function (self, m);
39759 ValaCCodeExpression* vala_ccode_base_module_get_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr) {
39760 ValaCCodeExpression* result = NULL;
39761 ValaExpression* _tmp0_;
39762 ValaTargetValue* _tmp1_;
39763 ValaTargetValue* _tmp2_;
39764 ValaExpression* _tmp3_;
39765 ValaTargetValue* _tmp4_;
39766 ValaTargetValue* _tmp5_;
39767 ValaGLibValue* _tmp6_;
39768 ValaGLibValue* glib_value;
39769 ValaGLibValue* _tmp7_;
39770 ValaCCodeExpression* _tmp8_;
39771 ValaCCodeExpression* _tmp9_;
39772 g_return_val_if_fail (self != NULL, NULL);
39773 g_return_val_if_fail (expr != NULL, NULL);
39775 _tmp1_ = vala_expression_get_target_value (_tmp0_);
39777 if (_tmp2_ == NULL) {
39782 _tmp4_ = vala_expression_get_target_value (_tmp3_);
39784 _tmp6_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
39785 glib_value = _tmp6_;
39786 _tmp7_ = glib_value;
39787 _tmp8_ = _tmp7_->cvalue;
39788 _tmp9_ = _vala_ccode_node_ref0 (_tmp8_);
39790 _vala_target_value_unref0 (glib_value);
39795 ValaCCodeExpression* vala_ccode_base_module_get_cvalue_ (ValaCCodeBaseModule* self, ValaTargetValue* value) {
39796 ValaCCodeExpression* result = NULL;
39797 ValaTargetValue* _tmp0_;
39798 ValaGLibValue* _tmp1_;
39799 ValaGLibValue* glib_value;
39800 ValaCCodeExpression* _tmp2_;
39801 ValaCCodeExpression* _tmp3_;
39802 g_return_val_if_fail (self != NULL, NULL);
39803 g_return_val_if_fail (value != NULL, NULL);
39805 _tmp1_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
39806 glib_value = _tmp1_;
39807 _tmp2_ = glib_value->cvalue;
39808 _tmp3_ = _vala_ccode_node_ref0 (_tmp2_);
39810 _vala_target_value_unref0 (glib_value);
39815 void vala_ccode_base_module_set_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue) {
39816 ValaExpression* _tmp0_;
39817 ValaTargetValue* _tmp1_;
39818 ValaTargetValue* _tmp2_;
39819 ValaGLibValue* _tmp3_;
39820 ValaGLibValue* glib_value;
39821 ValaGLibValue* _tmp4_;
39822 ValaGLibValue* _tmp11_;
39823 ValaCCodeExpression* _tmp12_;
39824 ValaCCodeExpression* _tmp13_;
39825 g_return_if_fail (self != NULL);
39826 g_return_if_fail (expr != NULL);
39828 _tmp1_ = vala_expression_get_target_value (_tmp0_);
39830 _tmp3_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
39831 glib_value = _tmp3_;
39832 _tmp4_ = glib_value;
39833 if (_tmp4_ == NULL) {
39834 ValaExpression* _tmp5_;
39835 ValaDataType* _tmp6_;
39836 ValaDataType* _tmp7_;
39837 ValaGLibValue* _tmp8_;
39838 ValaExpression* _tmp9_;
39839 ValaGLibValue* _tmp10_;
39841 _tmp6_ = vala_expression_get_value_type (_tmp5_);
39843 _tmp8_ = vala_glib_value_new (_tmp7_, NULL, FALSE);
39844 _vala_target_value_unref0 (glib_value);
39845 glib_value = _tmp8_;
39847 _tmp10_ = glib_value;
39848 vala_expression_set_target_value (_tmp9_, (ValaTargetValue*) _tmp10_);
39850 _tmp11_ = glib_value;
39852 _tmp13_ = _vala_ccode_node_ref0 (_tmp12_);
39853 _vala_ccode_node_unref0 (_tmp11_->cvalue);
39854 _tmp11_->cvalue = _tmp13_;
39855 _vala_target_value_unref0 (glib_value);
39859 ValaCCodeExpression* vala_ccode_base_module_get_array_size_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) {
39860 ValaCCodeExpression* result = NULL;
39861 ValaTargetValue* _tmp0_;
39862 ValaGLibValue* _tmp1_;
39863 ValaGLibValue* glib_value;
39864 ValaCCodeExpression* _tmp2_;
39865 ValaCCodeExpression* _tmp3_;
39866 g_return_val_if_fail (self != NULL, NULL);
39867 g_return_val_if_fail (value != NULL, NULL);
39869 _tmp1_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
39870 glib_value = _tmp1_;
39871 _tmp2_ = glib_value->array_size_cvalue;
39872 _tmp3_ = _vala_ccode_node_ref0 (_tmp2_);
39874 _vala_target_value_unref0 (glib_value);
39879 void vala_ccode_base_module_set_array_size_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCCodeExpression* cvalue) {
39880 ValaTargetValue* _tmp0_;
39881 ValaGLibValue* _tmp1_;
39882 ValaGLibValue* glib_value;
39883 ValaCCodeExpression* _tmp2_;
39884 ValaCCodeExpression* _tmp3_;
39885 g_return_if_fail (self != NULL);
39886 g_return_if_fail (value != NULL);
39888 _tmp1_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
39889 glib_value = _tmp1_;
39891 _tmp3_ = _vala_ccode_node_ref0 (_tmp2_);
39892 _vala_ccode_node_unref0 (glib_value->array_size_cvalue);
39893 glib_value->array_size_cvalue = _tmp3_;
39894 _vala_target_value_unref0 (glib_value);
39898 ValaCCodeExpression* vala_ccode_base_module_get_delegate_target (ValaCCodeBaseModule* self, ValaExpression* expr) {
39899 ValaCCodeExpression* result = NULL;
39900 ValaExpression* _tmp0_;
39901 ValaTargetValue* _tmp1_;
39902 ValaTargetValue* _tmp2_;
39903 ValaExpression* _tmp3_;
39904 ValaTargetValue* _tmp4_;
39905 ValaTargetValue* _tmp5_;
39906 ValaGLibValue* _tmp6_;
39907 ValaGLibValue* glib_value;
39908 ValaGLibValue* _tmp7_;
39909 ValaCCodeExpression* _tmp8_;
39910 ValaCCodeExpression* _tmp9_;
39911 g_return_val_if_fail (self != NULL, NULL);
39912 g_return_val_if_fail (expr != NULL, NULL);
39914 _tmp1_ = vala_expression_get_target_value (_tmp0_);
39916 if (_tmp2_ == NULL) {
39921 _tmp4_ = vala_expression_get_target_value (_tmp3_);
39923 _tmp6_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
39924 glib_value = _tmp6_;
39925 _tmp7_ = glib_value;
39926 _tmp8_ = _tmp7_->delegate_target_cvalue;
39927 _tmp9_ = _vala_ccode_node_ref0 (_tmp8_);
39929 _vala_target_value_unref0 (glib_value);
39934 void vala_ccode_base_module_set_delegate_target (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* delegate_target) {
39935 ValaExpression* _tmp0_;
39936 ValaTargetValue* _tmp1_;
39937 ValaTargetValue* _tmp2_;
39938 ValaGLibValue* _tmp3_;
39939 ValaGLibValue* glib_value;
39940 ValaGLibValue* _tmp4_;
39941 ValaGLibValue* _tmp11_;
39942 ValaCCodeExpression* _tmp12_;
39943 ValaCCodeExpression* _tmp13_;
39944 g_return_if_fail (self != NULL);
39945 g_return_if_fail (expr != NULL);
39947 _tmp1_ = vala_expression_get_target_value (_tmp0_);
39949 _tmp3_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
39950 glib_value = _tmp3_;
39951 _tmp4_ = glib_value;
39952 if (_tmp4_ == NULL) {
39953 ValaExpression* _tmp5_;
39954 ValaDataType* _tmp6_;
39955 ValaDataType* _tmp7_;
39956 ValaGLibValue* _tmp8_;
39957 ValaExpression* _tmp9_;
39958 ValaGLibValue* _tmp10_;
39960 _tmp6_ = vala_expression_get_value_type (_tmp5_);
39962 _tmp8_ = vala_glib_value_new (_tmp7_, NULL, FALSE);
39963 _vala_target_value_unref0 (glib_value);
39964 glib_value = _tmp8_;
39966 _tmp10_ = glib_value;
39967 vala_expression_set_target_value (_tmp9_, (ValaTargetValue*) _tmp10_);
39969 _tmp11_ = glib_value;
39970 _tmp12_ = delegate_target;
39971 _tmp13_ = _vala_ccode_node_ref0 (_tmp12_);
39972 _vala_ccode_node_unref0 (_tmp11_->delegate_target_cvalue);
39973 _tmp11_->delegate_target_cvalue = _tmp13_;
39974 _vala_target_value_unref0 (glib_value);
39978 ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_destroy_notify (ValaCCodeBaseModule* self, ValaExpression* expr) {
39979 ValaCCodeExpression* result = NULL;
39980 ValaExpression* _tmp0_;
39981 ValaTargetValue* _tmp1_;
39982 ValaTargetValue* _tmp2_;
39983 ValaExpression* _tmp3_;
39984 ValaTargetValue* _tmp4_;
39985 ValaTargetValue* _tmp5_;
39986 ValaGLibValue* _tmp6_;
39987 ValaGLibValue* glib_value;
39988 ValaGLibValue* _tmp7_;
39989 ValaCCodeExpression* _tmp8_;
39990 ValaCCodeExpression* _tmp9_;
39991 g_return_val_if_fail (self != NULL, NULL);
39992 g_return_val_if_fail (expr != NULL, NULL);
39994 _tmp1_ = vala_expression_get_target_value (_tmp0_);
39996 if (_tmp2_ == NULL) {
40001 _tmp4_ = vala_expression_get_target_value (_tmp3_);
40003 _tmp6_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
40004 glib_value = _tmp6_;
40005 _tmp7_ = glib_value;
40006 _tmp8_ = _tmp7_->delegate_target_destroy_notify_cvalue;
40007 _tmp9_ = _vala_ccode_node_ref0 (_tmp8_);
40009 _vala_target_value_unref0 (glib_value);
40014 void vala_ccode_base_module_set_delegate_target_destroy_notify (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* destroy_notify) {
40015 ValaExpression* _tmp0_;
40016 ValaTargetValue* _tmp1_;
40017 ValaTargetValue* _tmp2_;
40018 ValaGLibValue* _tmp3_;
40019 ValaGLibValue* glib_value;
40020 ValaGLibValue* _tmp4_;
40021 ValaGLibValue* _tmp11_;
40022 ValaCCodeExpression* _tmp12_;
40023 ValaCCodeExpression* _tmp13_;
40024 g_return_if_fail (self != NULL);
40025 g_return_if_fail (expr != NULL);
40027 _tmp1_ = vala_expression_get_target_value (_tmp0_);
40029 _tmp3_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
40030 glib_value = _tmp3_;
40031 _tmp4_ = glib_value;
40032 if (_tmp4_ == NULL) {
40033 ValaExpression* _tmp5_;
40034 ValaDataType* _tmp6_;
40035 ValaDataType* _tmp7_;
40036 ValaGLibValue* _tmp8_;
40037 ValaExpression* _tmp9_;
40038 ValaGLibValue* _tmp10_;
40040 _tmp6_ = vala_expression_get_value_type (_tmp5_);
40042 _tmp8_ = vala_glib_value_new (_tmp7_, NULL, FALSE);
40043 _vala_target_value_unref0 (glib_value);
40044 glib_value = _tmp8_;
40046 _tmp10_ = glib_value;
40047 vala_expression_set_target_value (_tmp9_, (ValaTargetValue*) _tmp10_);
40049 _tmp11_ = glib_value;
40050 _tmp12_ = destroy_notify;
40051 _tmp13_ = _vala_ccode_node_ref0 (_tmp12_);
40052 _vala_ccode_node_unref0 (_tmp11_->delegate_target_destroy_notify_cvalue);
40053 _tmp11_->delegate_target_destroy_notify_cvalue = _tmp13_;
40054 _vala_target_value_unref0 (glib_value);
40058 void vala_ccode_base_module_append_array_length (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* size) {
40059 ValaExpression* _tmp0_;
40060 ValaTargetValue* _tmp1_;
40061 ValaTargetValue* _tmp2_;
40062 ValaGLibValue* _tmp3_;
40063 ValaGLibValue* glib_value;
40064 ValaGLibValue* _tmp4_;
40065 ValaGLibValue* _tmp11_;
40066 ValaCCodeExpression* _tmp12_;
40067 g_return_if_fail (self != NULL);
40068 g_return_if_fail (expr != NULL);
40069 g_return_if_fail (size != NULL);
40071 _tmp1_ = vala_expression_get_target_value (_tmp0_);
40073 _tmp3_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
40074 glib_value = _tmp3_;
40075 _tmp4_ = glib_value;
40076 if (_tmp4_ == NULL) {
40077 ValaExpression* _tmp5_;
40078 ValaDataType* _tmp6_;
40079 ValaDataType* _tmp7_;
40080 ValaGLibValue* _tmp8_;
40081 ValaExpression* _tmp9_;
40082 ValaGLibValue* _tmp10_;
40084 _tmp6_ = vala_expression_get_value_type (_tmp5_);
40086 _tmp8_ = vala_glib_value_new (_tmp7_, NULL, FALSE);
40087 _vala_target_value_unref0 (glib_value);
40088 glib_value = _tmp8_;
40090 _tmp10_ = glib_value;
40091 vala_expression_set_target_value (_tmp9_, (ValaTargetValue*) _tmp10_);
40093 _tmp11_ = glib_value;
40095 vala_glib_value_append_array_length_cvalue (_tmp11_, _tmp12_);
40096 _vala_target_value_unref0 (glib_value);
40100 ValaList* vala_ccode_base_module_get_array_lengths (ValaCCodeBaseModule* self, ValaExpression* expr) {
40101 ValaList* result = NULL;
40102 ValaExpression* _tmp0_;
40103 ValaTargetValue* _tmp1_;
40104 ValaTargetValue* _tmp2_;
40105 ValaGLibValue* _tmp3_;
40106 ValaGLibValue* glib_value;
40107 ValaGLibValue* _tmp4_;
40108 ValaGLibValue* _tmp11_;
40111 g_return_val_if_fail (self != NULL, NULL);
40112 g_return_val_if_fail (expr != NULL, NULL);
40114 _tmp1_ = vala_expression_get_target_value (_tmp0_);
40116 _tmp3_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
40117 glib_value = _tmp3_;
40118 _tmp4_ = glib_value;
40119 if (_tmp4_ == NULL) {
40120 ValaExpression* _tmp5_;
40121 ValaDataType* _tmp6_;
40122 ValaDataType* _tmp7_;
40123 ValaGLibValue* _tmp8_;
40124 ValaExpression* _tmp9_;
40125 ValaGLibValue* _tmp10_;
40127 _tmp6_ = vala_expression_get_value_type (_tmp5_);
40129 _tmp8_ = vala_glib_value_new (_tmp7_, NULL, FALSE);
40130 _vala_target_value_unref0 (glib_value);
40131 glib_value = _tmp8_;
40133 _tmp10_ = glib_value;
40134 vala_expression_set_target_value (_tmp9_, (ValaTargetValue*) _tmp10_);
40136 _tmp11_ = glib_value;
40137 _tmp12_ = _tmp11_->array_length_cvalues;
40138 _tmp13_ = _vala_iterable_ref0 (_tmp12_);
40140 _vala_target_value_unref0 (glib_value);
40145 gboolean vala_ccode_base_module_get_lvalue (ValaCCodeBaseModule* self, ValaTargetValue* value) {
40146 gboolean result = FALSE;
40147 ValaTargetValue* _tmp0_;
40148 ValaGLibValue* _tmp1_;
40149 ValaGLibValue* glib_value;
40151 g_return_val_if_fail (self != NULL, FALSE);
40152 g_return_val_if_fail (value != NULL, FALSE);
40154 _tmp1_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
40155 glib_value = _tmp1_;
40156 _tmp2_ = glib_value->lvalue;
40158 _vala_target_value_unref0 (glib_value);
40163 gboolean vala_ccode_base_module_get_non_null (ValaCCodeBaseModule* self, ValaTargetValue* value) {
40164 gboolean result = FALSE;
40165 ValaTargetValue* _tmp0_;
40166 ValaGLibValue* _tmp1_;
40167 ValaGLibValue* glib_value;
40169 g_return_val_if_fail (self != NULL, FALSE);
40170 g_return_val_if_fail (value != NULL, FALSE);
40172 _tmp1_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
40173 glib_value = _tmp1_;
40174 _tmp2_ = glib_value->non_null;
40176 _vala_target_value_unref0 (glib_value);
40181 gchar* vala_ccode_base_module_get_ctype (ValaCCodeBaseModule* self, ValaTargetValue* value) {
40182 gchar* result = NULL;
40183 ValaTargetValue* _tmp0_;
40184 ValaGLibValue* _tmp1_;
40185 ValaGLibValue* glib_value;
40186 const gchar* _tmp2_;
40188 g_return_val_if_fail (self != NULL, NULL);
40189 g_return_val_if_fail (value != NULL, NULL);
40191 _tmp1_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
40192 glib_value = _tmp1_;
40193 _tmp2_ = glib_value->ctype;
40194 _tmp3_ = g_strdup (_tmp2_);
40196 _vala_target_value_unref0 (glib_value);
40201 gboolean vala_ccode_base_module_get_array_null_terminated (ValaCCodeBaseModule* self, ValaTargetValue* value) {
40202 gboolean result = FALSE;
40203 ValaTargetValue* _tmp0_;
40204 ValaGLibValue* _tmp1_;
40205 ValaGLibValue* glib_value;
40207 g_return_val_if_fail (self != NULL, FALSE);
40208 g_return_val_if_fail (value != NULL, FALSE);
40210 _tmp1_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
40211 glib_value = _tmp1_;
40212 _tmp2_ = glib_value->array_null_terminated;
40214 _vala_target_value_unref0 (glib_value);
40219 ValaCCodeExpression* vala_ccode_base_module_get_array_length_cexpr (ValaCCodeBaseModule* self, ValaTargetValue* value) {
40220 ValaCCodeExpression* result = NULL;
40221 ValaTargetValue* _tmp0_;
40222 ValaGLibValue* _tmp1_;
40223 ValaGLibValue* glib_value;
40224 ValaCCodeExpression* _tmp2_;
40225 ValaCCodeExpression* _tmp3_;
40226 g_return_val_if_fail (self != NULL, NULL);
40227 g_return_val_if_fail (value != NULL, NULL);
40229 _tmp1_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
40230 glib_value = _tmp1_;
40231 _tmp2_ = glib_value->array_length_cexpr;
40232 _tmp3_ = _vala_ccode_node_ref0 (_tmp2_);
40234 _vala_target_value_unref0 (glib_value);
40239 ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self) {
40240 ValaCodeContext* result;
40241 ValaCodeContext* _tmp0_;
40242 g_return_val_if_fail (self != NULL, NULL);
40243 _tmp0_ = self->priv->_context;
40249 static gpointer _vala_code_context_ref0 (gpointer self) {
40250 return self ? vala_code_context_ref (self) : NULL;
40254 void vala_ccode_base_module_set_context (ValaCCodeBaseModule* self, ValaCodeContext* value) {
40255 ValaCodeContext* _tmp0_;
40256 ValaCodeContext* _tmp1_;
40257 g_return_if_fail (self != NULL);
40259 _tmp1_ = _vala_code_context_ref0 (_tmp0_);
40260 _vala_code_context_unref0 (self->priv->_context);
40261 self->priv->_context = _tmp1_;
40265 ValaSymbol* vala_ccode_base_module_get_current_symbol (ValaCCodeBaseModule* self) {
40266 ValaSymbol* result;
40267 ValaCCodeBaseModuleEmitContext* _tmp0_;
40268 ValaSymbol* _tmp1_;
40269 g_return_val_if_fail (self != NULL, NULL);
40270 _tmp0_ = self->emit_context;
40271 _tmp1_ = _tmp0_->current_symbol;
40277 ValaTryStatement* vala_ccode_base_module_get_current_try (ValaCCodeBaseModule* self) {
40278 ValaTryStatement* result;
40279 ValaCCodeBaseModuleEmitContext* _tmp0_;
40280 ValaTryStatement* _tmp1_;
40281 g_return_val_if_fail (self != NULL, NULL);
40282 _tmp0_ = self->emit_context;
40283 _tmp1_ = _tmp0_->current_try;
40289 void vala_ccode_base_module_set_current_try (ValaCCodeBaseModule* self, ValaTryStatement* value) {
40290 ValaCCodeBaseModuleEmitContext* _tmp0_;
40291 ValaTryStatement* _tmp1_;
40292 ValaTryStatement* _tmp2_;
40293 g_return_if_fail (self != NULL);
40294 _tmp0_ = self->emit_context;
40296 _tmp2_ = _vala_code_node_ref0 (_tmp1_);
40297 _vala_code_node_unref0 (_tmp0_->current_try);
40298 _tmp0_->current_try = _tmp2_;
40302 ValaCatchClause* vala_ccode_base_module_get_current_catch (ValaCCodeBaseModule* self) {
40303 ValaCatchClause* result;
40304 ValaCCodeBaseModuleEmitContext* _tmp0_;
40305 ValaCatchClause* _tmp1_;
40306 g_return_val_if_fail (self != NULL, NULL);
40307 _tmp0_ = self->emit_context;
40308 _tmp1_ = _tmp0_->current_catch;
40314 void vala_ccode_base_module_set_current_catch (ValaCCodeBaseModule* self, ValaCatchClause* value) {
40315 ValaCCodeBaseModuleEmitContext* _tmp0_;
40316 ValaCatchClause* _tmp1_;
40317 ValaCatchClause* _tmp2_;
40318 g_return_if_fail (self != NULL);
40319 _tmp0_ = self->emit_context;
40321 _tmp2_ = _vala_code_node_ref0 (_tmp1_);
40322 _vala_code_node_unref0 (_tmp0_->current_catch);
40323 _tmp0_->current_catch = _tmp2_;
40327 ValaTypeSymbol* vala_ccode_base_module_get_current_type_symbol (ValaCCodeBaseModule* self) {
40328 ValaTypeSymbol* result;
40329 ValaSymbol* _tmp0_;
40330 ValaSymbol* _tmp1_;
40331 ValaSymbol* _tmp2_;
40333 g_return_val_if_fail (self != NULL, NULL);
40334 _tmp0_ = vala_ccode_base_module_get_current_symbol (self);
40336 _tmp2_ = _vala_code_node_ref0 (_tmp1_);
40339 ValaSymbol* _tmp3_;
40340 ValaSymbol* _tmp4_;
40341 ValaSymbol* _tmp6_;
40342 ValaSymbol* _tmp7_;
40343 ValaSymbol* _tmp8_;
40344 ValaSymbol* _tmp9_;
40346 if (!(_tmp3_ != NULL)) {
40350 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_TYPESYMBOL)) {
40351 ValaSymbol* _tmp5_;
40353 result = G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
40354 _vala_code_node_unref0 (sym);
40358 _tmp7_ = vala_symbol_get_parent_symbol (_tmp6_);
40360 _tmp9_ = _vala_code_node_ref0 (_tmp8_);
40361 _vala_code_node_unref0 (sym);
40365 _vala_code_node_unref0 (sym);
40370 ValaClass* vala_ccode_base_module_get_current_class (ValaCCodeBaseModule* self) {
40372 ValaTypeSymbol* _tmp0_;
40373 ValaTypeSymbol* _tmp1_;
40374 g_return_val_if_fail (self != NULL, NULL);
40375 _tmp0_ = vala_ccode_base_module_get_current_type_symbol (self);
40377 result = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp1_) : NULL;
40382 ValaMethod* vala_ccode_base_module_get_current_method (ValaCCodeBaseModule* self) {
40383 ValaMethod* result;
40384 ValaSymbol* _tmp0_;
40385 ValaSymbol* _tmp1_;
40386 ValaSymbol* _tmp2_;
40388 ValaSymbol* _tmp8_;
40389 g_return_val_if_fail (self != NULL, NULL);
40390 _tmp0_ = vala_ccode_base_module_get_current_symbol (self);
40392 _tmp2_ = _vala_code_node_ref0 (_tmp1_);
40395 ValaSymbol* _tmp3_;
40396 ValaSymbol* _tmp4_;
40397 ValaSymbol* _tmp5_;
40398 ValaSymbol* _tmp6_;
40399 ValaSymbol* _tmp7_;
40401 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_BLOCK)) {
40405 _tmp5_ = vala_symbol_get_parent_symbol (_tmp4_);
40407 _tmp7_ = _vala_code_node_ref0 (_tmp6_);
40408 _vala_code_node_unref0 (sym);
40412 result = G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp8_) : NULL;
40413 _vala_code_node_unref0 (sym);
40418 ValaPropertyAccessor* vala_ccode_base_module_get_current_property_accessor (ValaCCodeBaseModule* self) {
40419 ValaPropertyAccessor* result;
40420 ValaSymbol* _tmp0_;
40421 ValaSymbol* _tmp1_;
40422 ValaSymbol* _tmp2_;
40424 ValaSymbol* _tmp8_;
40425 g_return_val_if_fail (self != NULL, NULL);
40426 _tmp0_ = vala_ccode_base_module_get_current_symbol (self);
40428 _tmp2_ = _vala_code_node_ref0 (_tmp1_);
40431 ValaSymbol* _tmp3_;
40432 ValaSymbol* _tmp4_;
40433 ValaSymbol* _tmp5_;
40434 ValaSymbol* _tmp6_;
40435 ValaSymbol* _tmp7_;
40437 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_BLOCK)) {
40441 _tmp5_ = vala_symbol_get_parent_symbol (_tmp4_);
40443 _tmp7_ = _vala_code_node_ref0 (_tmp6_);
40444 _vala_code_node_unref0 (sym);
40448 result = G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_PROPERTY_ACCESSOR) ? ((ValaPropertyAccessor*) _tmp8_) : NULL;
40449 _vala_code_node_unref0 (sym);
40454 ValaConstructor* vala_ccode_base_module_get_current_constructor (ValaCCodeBaseModule* self) {
40455 ValaConstructor* result;
40456 ValaSymbol* _tmp0_;
40457 ValaSymbol* _tmp1_;
40458 ValaSymbol* _tmp2_;
40460 ValaSymbol* _tmp8_;
40461 g_return_val_if_fail (self != NULL, NULL);
40462 _tmp0_ = vala_ccode_base_module_get_current_symbol (self);
40464 _tmp2_ = _vala_code_node_ref0 (_tmp1_);
40467 ValaSymbol* _tmp3_;
40468 ValaSymbol* _tmp4_;
40469 ValaSymbol* _tmp5_;
40470 ValaSymbol* _tmp6_;
40471 ValaSymbol* _tmp7_;
40473 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_BLOCK)) {
40477 _tmp5_ = vala_symbol_get_parent_symbol (_tmp4_);
40479 _tmp7_ = _vala_code_node_ref0 (_tmp6_);
40480 _vala_code_node_unref0 (sym);
40484 result = G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_CONSTRUCTOR) ? ((ValaConstructor*) _tmp8_) : NULL;
40485 _vala_code_node_unref0 (sym);
40490 ValaDestructor* vala_ccode_base_module_get_current_destructor (ValaCCodeBaseModule* self) {
40491 ValaDestructor* result;
40492 ValaSymbol* _tmp0_;
40493 ValaSymbol* _tmp1_;
40494 ValaSymbol* _tmp2_;
40496 ValaSymbol* _tmp8_;
40497 g_return_val_if_fail (self != NULL, NULL);
40498 _tmp0_ = vala_ccode_base_module_get_current_symbol (self);
40500 _tmp2_ = _vala_code_node_ref0 (_tmp1_);
40503 ValaSymbol* _tmp3_;
40504 ValaSymbol* _tmp4_;
40505 ValaSymbol* _tmp5_;
40506 ValaSymbol* _tmp6_;
40507 ValaSymbol* _tmp7_;
40509 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_BLOCK)) {
40513 _tmp5_ = vala_symbol_get_parent_symbol (_tmp4_);
40515 _tmp7_ = _vala_code_node_ref0 (_tmp6_);
40516 _vala_code_node_unref0 (sym);
40520 result = G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_DESTRUCTOR) ? ((ValaDestructor*) _tmp8_) : NULL;
40521 _vala_code_node_unref0 (sym);
40526 ValaDataType* vala_ccode_base_module_get_current_return_type (ValaCCodeBaseModule* self) {
40527 ValaDataType* result;
40528 ValaMethod* _tmp0_;
40529 ValaMethod* _tmp1_;
40530 ValaMethod* _tmp2_;
40532 ValaMethod* _tmp3_;
40533 ValaPropertyAccessor* _tmp7_;
40534 ValaPropertyAccessor* _tmp8_;
40535 ValaPropertyAccessor* _tmp9_;
40536 ValaPropertyAccessor* acc;
40537 ValaPropertyAccessor* _tmp10_;
40538 gboolean _tmp18_ = FALSE;
40539 gboolean _tmp19_ = FALSE;
40541 g_return_val_if_fail (self != NULL, NULL);
40542 _tmp0_ = vala_ccode_base_module_get_current_method (self);
40544 _tmp2_ = _vala_code_node_ref0 (_tmp1_);
40547 if (_tmp3_ != NULL) {
40548 ValaMethod* _tmp4_;
40549 ValaDataType* _tmp5_;
40550 ValaDataType* _tmp6_;
40552 _tmp5_ = vala_method_get_return_type (_tmp4_);
40555 _vala_code_node_unref0 (m);
40558 _tmp7_ = vala_ccode_base_module_get_current_property_accessor (self);
40560 _tmp9_ = _vala_code_node_ref0 (_tmp8_);
40563 if (_tmp10_ != NULL) {
40564 ValaPropertyAccessor* _tmp11_;
40568 _tmp12_ = vala_property_accessor_get_readable (_tmp11_);
40571 ValaPropertyAccessor* _tmp14_;
40572 ValaDataType* _tmp15_;
40573 ValaDataType* _tmp16_;
40575 _tmp15_ = vala_property_accessor_get_value_type (_tmp14_);
40578 _vala_code_node_unref0 (acc);
40579 _vala_code_node_unref0 (m);
40582 ValaDataType* _tmp17_;
40583 _tmp17_ = self->void_type;
40585 _vala_code_node_unref0 (acc);
40586 _vala_code_node_unref0 (m);
40590 _tmp19_ = vala_ccode_base_module_is_in_constructor (self);
40594 gboolean _tmp20_ = FALSE;
40595 _tmp20_ = vala_ccode_base_module_is_in_destructor (self);
40600 ValaDataType* _tmp22_;
40601 _tmp22_ = self->void_type;
40603 _vala_code_node_unref0 (acc);
40604 _vala_code_node_unref0 (m);
40608 _vala_code_node_unref0 (acc);
40609 _vala_code_node_unref0 (m);
40614 ValaBlock* vala_ccode_base_module_get_current_closure_block (ValaCCodeBaseModule* self) {
40616 ValaSymbol* _tmp0_;
40617 ValaSymbol* _tmp1_;
40618 ValaBlock* _tmp2_ = NULL;
40619 g_return_val_if_fail (self != NULL, NULL);
40620 _tmp0_ = vala_ccode_base_module_get_current_symbol (self);
40622 _tmp2_ = vala_ccode_base_module_next_closure_block (self, _tmp1_);
40628 ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self) {
40629 ValaCCodeFunction* result;
40630 ValaCCodeBaseModuleEmitContext* _tmp0_;
40631 ValaCCodeFunction* _tmp1_;
40632 g_return_val_if_fail (self != NULL, NULL);
40633 _tmp0_ = self->emit_context;
40634 _tmp1_ = _tmp0_->ccode;
40640 ValaArrayList* vala_ccode_base_module_get_temp_ref_values (ValaCCodeBaseModule* self) {
40641 ValaArrayList* result;
40642 ValaCCodeBaseModuleEmitContext* _tmp0_;
40643 ValaArrayList* _tmp1_;
40644 g_return_val_if_fail (self != NULL, NULL);
40645 _tmp0_ = self->emit_context;
40646 _tmp1_ = _tmp0_->temp_ref_values;
40652 gint vala_ccode_base_module_get_next_temp_var_id (ValaCCodeBaseModule* self) {
40654 ValaCCodeBaseModuleEmitContext* _tmp0_;
40656 g_return_val_if_fail (self != NULL, 0);
40657 _tmp0_ = self->emit_context;
40658 _tmp1_ = _tmp0_->next_temp_var_id;
40664 void vala_ccode_base_module_set_next_temp_var_id (ValaCCodeBaseModule* self, gint value) {
40665 ValaCCodeBaseModuleEmitContext* _tmp0_;
40667 g_return_if_fail (self != NULL);
40668 _tmp0_ = self->emit_context;
40670 _tmp0_->next_temp_var_id = _tmp1_;
40674 gboolean vala_ccode_base_module_get_in_creation_method (ValaCCodeBaseModule* self) {
40676 ValaMethod* _tmp0_;
40677 ValaMethod* _tmp1_;
40678 g_return_val_if_fail (self != NULL, FALSE);
40679 _tmp0_ = vala_ccode_base_module_get_current_method (self);
40681 result = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CREATION_METHOD);
40686 gboolean vala_ccode_base_module_get_current_method_inner_error (ValaCCodeBaseModule* self) {
40688 ValaCCodeBaseModuleEmitContext* _tmp0_;
40690 g_return_val_if_fail (self != NULL, FALSE);
40691 _tmp0_ = self->emit_context;
40692 _tmp1_ = _tmp0_->current_method_inner_error;
40698 void vala_ccode_base_module_set_current_method_inner_error (ValaCCodeBaseModule* self, gboolean value) {
40699 ValaCCodeBaseModuleEmitContext* _tmp0_;
40701 g_return_if_fail (self != NULL);
40702 _tmp0_ = self->emit_context;
40704 _tmp0_->current_method_inner_error = _tmp1_;
40708 gboolean vala_ccode_base_module_get_current_method_return (ValaCCodeBaseModule* self) {
40710 ValaCCodeBaseModuleEmitContext* _tmp0_;
40712 g_return_val_if_fail (self != NULL, FALSE);
40713 _tmp0_ = self->emit_context;
40714 _tmp1_ = _tmp0_->current_method_return;
40720 void vala_ccode_base_module_set_current_method_return (ValaCCodeBaseModule* self, gboolean value) {
40721 ValaCCodeBaseModuleEmitContext* _tmp0_;
40723 g_return_if_fail (self != NULL);
40724 _tmp0_ = self->emit_context;
40726 _tmp0_->current_method_return = _tmp1_;
40730 ValaMap* vala_ccode_base_module_get_variable_name_map (ValaCCodeBaseModule* self) {
40732 ValaCCodeBaseModuleEmitContext* _tmp0_;
40734 g_return_val_if_fail (self != NULL, NULL);
40735 _tmp0_ = self->emit_context;
40736 _tmp1_ = _tmp0_->variable_name_map;
40742 ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_construct (GType object_type, ValaSymbol* symbol) {
40743 ValaCCodeBaseModuleEmitContext* self = NULL;
40744 ValaSymbol* _tmp0_;
40745 ValaSymbol* _tmp1_;
40746 self = (ValaCCodeBaseModuleEmitContext*) g_type_create_instance (object_type);
40748 _tmp1_ = _vala_code_node_ref0 (_tmp0_);
40749 _vala_code_node_unref0 (self->current_symbol);
40750 self->current_symbol = _tmp1_;
40755 ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_new (ValaSymbol* symbol) {
40756 return vala_ccode_base_module_emit_context_construct (VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, symbol);
40760 void vala_ccode_base_module_emit_context_push_symbol (ValaCCodeBaseModuleEmitContext* self, ValaSymbol* symbol) {
40761 ValaArrayList* _tmp0_;
40762 ValaSymbol* _tmp1_;
40763 ValaSymbol* _tmp2_;
40764 ValaSymbol* _tmp3_;
40765 g_return_if_fail (self != NULL);
40766 g_return_if_fail (symbol != NULL);
40767 _tmp0_ = self->symbol_stack;
40768 _tmp1_ = self->current_symbol;
40769 vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_);
40771 _tmp3_ = _vala_code_node_ref0 (_tmp2_);
40772 _vala_code_node_unref0 (self->current_symbol);
40773 self->current_symbol = _tmp3_;
40777 void vala_ccode_base_module_emit_context_pop_symbol (ValaCCodeBaseModuleEmitContext* self) {
40778 ValaArrayList* _tmp0_;
40779 ValaArrayList* _tmp1_;
40782 gpointer _tmp4_ = NULL;
40783 ValaArrayList* _tmp5_;
40784 ValaArrayList* _tmp6_;
40787 g_return_if_fail (self != NULL);
40788 _tmp0_ = self->symbol_stack;
40789 _tmp1_ = self->symbol_stack;
40790 _tmp2_ = vala_collection_get_size ((ValaCollection*) _tmp1_);
40792 _tmp4_ = vala_list_get ((ValaList*) _tmp0_, _tmp3_ - 1);
40793 _vala_code_node_unref0 (self->current_symbol);
40794 self->current_symbol = (ValaSymbol*) _tmp4_;
40795 _tmp5_ = self->symbol_stack;
40796 _tmp6_ = self->symbol_stack;
40797 _tmp7_ = vala_collection_get_size ((ValaCollection*) _tmp6_);
40799 vala_list_remove_at ((ValaList*) _tmp5_, _tmp8_ - 1);
40803 static void vala_ccode_base_module_value_emit_context_init (GValue* value) {
40804 value->data[0].v_pointer = NULL;
40808 static void vala_ccode_base_module_value_emit_context_free_value (GValue* value) {
40809 if (value->data[0].v_pointer) {
40810 vala_ccode_base_module_emit_context_unref (value->data[0].v_pointer);
40815 static void vala_ccode_base_module_value_emit_context_copy_value (const GValue* src_value, GValue* dest_value) {
40816 if (src_value->data[0].v_pointer) {
40817 dest_value->data[0].v_pointer = vala_ccode_base_module_emit_context_ref (src_value->data[0].v_pointer);
40819 dest_value->data[0].v_pointer = NULL;
40824 static gpointer vala_ccode_base_module_value_emit_context_peek_pointer (const GValue* value) {
40825 return value->data[0].v_pointer;
40829 static gchar* vala_ccode_base_module_value_emit_context_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
40830 if (collect_values[0].v_pointer) {
40831 ValaCCodeBaseModuleEmitContext* object;
40832 object = collect_values[0].v_pointer;
40833 if (object->parent_instance.g_class == NULL) {
40834 return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
40835 } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
40836 return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
40838 value->data[0].v_pointer = vala_ccode_base_module_emit_context_ref (object);
40840 value->data[0].v_pointer = NULL;
40846 static gchar* vala_ccode_base_module_value_emit_context_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
40847 ValaCCodeBaseModuleEmitContext** object_p;
40848 object_p = collect_values[0].v_pointer;
40850 return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
40852 if (!value->data[0].v_pointer) {
40854 } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
40855 *object_p = value->data[0].v_pointer;
40857 *object_p = vala_ccode_base_module_emit_context_ref (value->data[0].v_pointer);
40863 GParamSpec* vala_ccode_base_module_param_spec_emit_context (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
40864 ValaCCodeBaseModuleParamSpecEmitContext* spec;
40865 g_return_val_if_fail (g_type_is_a (object_type, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT), NULL);
40866 spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
40867 G_PARAM_SPEC (spec)->value_type = object_type;
40868 return G_PARAM_SPEC (spec);
40872 gpointer vala_ccode_base_module_value_get_emit_context (const GValue* value) {
40873 g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT), NULL);
40874 return value->data[0].v_pointer;
40878 void vala_ccode_base_module_value_set_emit_context (GValue* value, gpointer v_object) {
40879 ValaCCodeBaseModuleEmitContext* old;
40880 g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT));
40881 old = value->data[0].v_pointer;
40883 g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT));
40884 g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
40885 value->data[0].v_pointer = v_object;
40886 vala_ccode_base_module_emit_context_ref (value->data[0].v_pointer);
40888 value->data[0].v_pointer = NULL;
40891 vala_ccode_base_module_emit_context_unref (old);
40896 void vala_ccode_base_module_value_take_emit_context (GValue* value, gpointer v_object) {
40897 ValaCCodeBaseModuleEmitContext* old;
40898 g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT));
40899 old = value->data[0].v_pointer;
40901 g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT));
40902 g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
40903 value->data[0].v_pointer = v_object;
40905 value->data[0].v_pointer = NULL;
40908 vala_ccode_base_module_emit_context_unref (old);
40913 static void vala_ccode_base_module_emit_context_class_init (ValaCCodeBaseModuleEmitContextClass * klass) {
40914 vala_ccode_base_module_emit_context_parent_class = g_type_class_peek_parent (klass);
40915 VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_CLASS (klass)->finalize = vala_ccode_base_module_emit_context_finalize;
40919 static void vala_ccode_base_module_emit_context_instance_init (ValaCCodeBaseModuleEmitContext * self) {
40921 ValaArrayList* _tmp1_;
40923 ValaArrayList* _tmp3_;
40925 ValaArrayList* _tmp5_;
40929 ValaHashMap* _tmp9_;
40931 GEqualFunc _tmp11_;
40932 GEqualFunc _tmp12_;
40933 ValaHashMap* _tmp13_;
40935 GEqualFunc _tmp15_;
40936 GEqualFunc _tmp16_;
40937 ValaHashMap* _tmp17_;
40938 _tmp0_ = g_direct_equal;
40939 _tmp1_ = vala_array_list_new (VALA_TYPE_SYMBOL, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp0_);
40940 self->symbol_stack = _tmp1_;
40941 _tmp2_ = g_direct_equal;
40942 _tmp3_ = vala_array_list_new (VALA_TYPE_CCODE_FUNCTION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp2_);
40943 self->ccode_stack = _tmp3_;
40944 _tmp4_ = g_direct_equal;
40945 _tmp5_ = vala_array_list_new (VALA_TYPE_TARGET_VALUE, (GBoxedCopyFunc) vala_target_value_ref, vala_target_value_unref, _tmp4_);
40946 self->temp_ref_values = _tmp5_;
40947 _tmp6_ = g_str_hash;
40948 _tmp7_ = g_str_equal;
40949 _tmp8_ = g_direct_equal;
40950 _tmp9_ = vala_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp6_, _tmp7_, _tmp8_);
40951 self->variable_name_map = (ValaMap*) _tmp9_;
40952 _tmp10_ = g_str_hash;
40953 _tmp11_ = g_str_equal;
40954 _tmp12_ = g_direct_equal;
40955 _tmp13_ = vala_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_INT, NULL, NULL, _tmp10_, _tmp11_, _tmp12_);
40956 self->closure_variable_count_map = (ValaMap*) _tmp13_;
40957 _tmp14_ = g_direct_hash;
40958 _tmp15_ = g_direct_equal;
40959 _tmp16_ = g_direct_equal;
40960 _tmp17_ = vala_hash_map_new (VALA_TYPE_LOCAL_VARIABLE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, G_TYPE_INT, NULL, NULL, _tmp14_, _tmp15_, _tmp16_);
40961 self->closure_variable_clash_map = (ValaMap*) _tmp17_;
40962 self->ref_count = 1;
40966 static void vala_ccode_base_module_emit_context_finalize (ValaCCodeBaseModuleEmitContext* obj) {
40967 ValaCCodeBaseModuleEmitContext * self;
40968 self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContext);
40969 _vala_code_node_unref0 (self->current_symbol);
40970 _vala_iterable_unref0 (self->symbol_stack);
40971 _vala_code_node_unref0 (self->current_try);
40972 _vala_code_node_unref0 (self->current_catch);
40973 _vala_ccode_node_unref0 (self->ccode);
40974 _vala_iterable_unref0 (self->ccode_stack);
40975 _vala_iterable_unref0 (self->temp_ref_values);
40976 _vala_map_unref0 (self->variable_name_map);
40977 _vala_map_unref0 (self->closure_variable_count_map);
40978 _vala_map_unref0 (self->closure_variable_clash_map);
40982 GType vala_ccode_base_module_emit_context_get_type (void) {
40983 static volatile gsize vala_ccode_base_module_emit_context_type_id__volatile = 0;
40984 if (g_once_init_enter (&vala_ccode_base_module_emit_context_type_id__volatile)) {
40985 static const GTypeValueTable g_define_type_value_table = { vala_ccode_base_module_value_emit_context_init, vala_ccode_base_module_value_emit_context_free_value, vala_ccode_base_module_value_emit_context_copy_value, vala_ccode_base_module_value_emit_context_peek_pointer, "p", vala_ccode_base_module_value_emit_context_collect_value, "p", vala_ccode_base_module_value_emit_context_lcopy_value };
40986 static const GTypeInfo g_define_type_info = { sizeof (ValaCCodeBaseModuleEmitContextClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_ccode_base_module_emit_context_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaCCodeBaseModuleEmitContext), 0, (GInstanceInitFunc) vala_ccode_base_module_emit_context_instance_init, &g_define_type_value_table };
40987 static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
40988 GType vala_ccode_base_module_emit_context_type_id;
40989 vala_ccode_base_module_emit_context_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ValaCCodeBaseModuleEmitContext", &g_define_type_info, &g_define_type_fundamental_info, 0);
40990 g_once_init_leave (&vala_ccode_base_module_emit_context_type_id__volatile, vala_ccode_base_module_emit_context_type_id);
40992 return vala_ccode_base_module_emit_context_type_id__volatile;
40996 gpointer vala_ccode_base_module_emit_context_ref (gpointer instance) {
40997 ValaCCodeBaseModuleEmitContext* self;
40999 g_atomic_int_inc (&self->ref_count);
41004 void vala_ccode_base_module_emit_context_unref (gpointer instance) {
41005 ValaCCodeBaseModuleEmitContext* self;
41007 if (g_atomic_int_dec_and_test (&self->ref_count)) {
41008 VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_GET_CLASS (self)->finalize (self);
41009 g_type_free_instance ((GTypeInstance *) self);
41014 static void vala_ccode_base_module_class_init (ValaCCodeBaseModuleClass * klass) {
41016 vala_ccode_base_module_parent_class = g_type_class_peek_parent (klass);
41017 VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_ccode_base_module_finalize;
41018 g_type_class_add_private (klass, sizeof (ValaCCodeBaseModulePrivate));
41019 VALA_CODE_GENERATOR_CLASS (klass)->emit = vala_ccode_base_module_real_emit;
41020 VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_free = vala_ccode_base_module_real_append_vala_array_free;
41021 VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_move = vala_ccode_base_module_real_append_vala_array_move;
41022 VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_length = vala_ccode_base_module_real_append_vala_array_length;
41023 VALA_CODE_VISITOR_CLASS (klass)->visit_source_file = vala_ccode_base_module_real_visit_source_file;
41024 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_enum_declaration = vala_ccode_base_module_real_generate_enum_declaration;
41025 VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_ccode_base_module_real_visit_enum;
41026 VALA_CODE_VISITOR_CLASS (klass)->visit_constant = vala_ccode_base_module_real_visit_constant;
41027 VALA_CODE_VISITOR_CLASS (klass)->visit_field = vala_ccode_base_module_real_visit_field;
41028 VALA_CODE_VISITOR_CLASS (klass)->visit_formal_parameter = vala_ccode_base_module_real_visit_formal_parameter;
41029 VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_ccode_base_module_real_visit_property;
41030 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_struct_declaration = vala_ccode_base_module_real_generate_class_struct_declaration;
41031 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_struct_declaration = vala_ccode_base_module_real_generate_struct_declaration;
41032 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_delegate_declaration = vala_ccode_base_module_real_generate_delegate_declaration;
41033 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_cparameters = vala_ccode_base_module_real_generate_cparameters;
41034 VALA_CODE_VISITOR_CLASS (klass)->visit_property_accessor = vala_ccode_base_module_real_visit_property_accessor;
41035 VALA_CODE_VISITOR_CLASS (klass)->visit_destructor = vala_ccode_base_module_real_visit_destructor;
41036 VALA_CODE_VISITOR_CLASS (klass)->visit_block = vala_ccode_base_module_real_visit_block;
41037 VALA_CODE_VISITOR_CLASS (klass)->visit_declaration_statement = vala_ccode_base_module_real_visit_declaration_statement;
41038 VALA_CODE_VISITOR_CLASS (klass)->visit_local_variable = vala_ccode_base_module_real_visit_local_variable;
41039 VALA_CODE_VISITOR_CLASS (klass)->visit_initializer_list = vala_ccode_base_module_real_visit_initializer_list;
41040 VALA_CODE_GENERATOR_CLASS (klass)->create_local = vala_ccode_base_module_real_create_local;
41041 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dup_func_expression = vala_ccode_base_module_real_get_dup_func_expression;
41042 VALA_CCODE_BASE_MODULE_CLASS (klass)->append_struct_array_free = vala_ccode_base_module_real_append_struct_array_free;
41043 VALA_CCODE_BASE_MODULE_CLASS (klass)->destroy_value = vala_ccode_base_module_real_destroy_value;
41044 VALA_CODE_VISITOR_CLASS (klass)->visit_end_full_expression = vala_ccode_base_module_real_visit_end_full_expression;
41045 VALA_CODE_VISITOR_CLASS (klass)->visit_expression_statement = vala_ccode_base_module_real_visit_expression_statement;
41046 VALA_CCODE_BASE_MODULE_CLASS (klass)->append_scope_free = vala_ccode_base_module_real_append_scope_free;
41047 VALA_CODE_VISITOR_CLASS (klass)->visit_return_statement = vala_ccode_base_module_real_visit_return_statement;
41048 VALA_CODE_VISITOR_CLASS (klass)->visit_lock_statement = vala_ccode_base_module_real_visit_lock_statement;
41049 VALA_CODE_VISITOR_CLASS (klass)->visit_unlock_statement = vala_ccode_base_module_real_visit_unlock_statement;
41050 VALA_CODE_VISITOR_CLASS (klass)->visit_delete_statement = vala_ccode_base_module_real_visit_delete_statement;
41051 VALA_CODE_VISITOR_CLASS (klass)->visit_expression = vala_ccode_base_module_real_visit_expression;
41052 VALA_CODE_VISITOR_CLASS (klass)->visit_boolean_literal = vala_ccode_base_module_real_visit_boolean_literal;
41053 VALA_CODE_VISITOR_CLASS (klass)->visit_character_literal = vala_ccode_base_module_real_visit_character_literal;
41054 VALA_CODE_VISITOR_CLASS (klass)->visit_integer_literal = vala_ccode_base_module_real_visit_integer_literal;
41055 VALA_CODE_VISITOR_CLASS (klass)->visit_real_literal = vala_ccode_base_module_real_visit_real_literal;
41056 VALA_CODE_VISITOR_CLASS (klass)->visit_string_literal = vala_ccode_base_module_real_visit_string_literal;
41057 VALA_CODE_VISITOR_CLASS (klass)->visit_regex_literal = vala_ccode_base_module_real_visit_regex_literal;
41058 VALA_CODE_VISITOR_CLASS (klass)->visit_null_literal = vala_ccode_base_module_real_visit_null_literal;
41059 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_local_cvalue = vala_ccode_base_module_real_get_local_cvalue;
41060 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_parameter_cvalue = vala_ccode_base_module_real_get_parameter_cvalue;
41061 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_field_cvalue = vala_ccode_base_module_real_get_field_cvalue;
41062 VALA_CCODE_BASE_MODULE_CLASS (klass)->load_variable = vala_ccode_base_module_real_load_variable;
41063 VALA_CCODE_BASE_MODULE_CLASS (klass)->load_this_parameter = vala_ccode_base_module_real_load_this_parameter;
41064 VALA_CCODE_BASE_MODULE_CLASS (klass)->store_value = vala_ccode_base_module_real_store_value;
41065 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cname = vala_ccode_base_module_real_get_delegate_target_cname;
41066 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cexpression = vala_ccode_base_module_real_get_delegate_target_cexpression;
41067 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cvalue = vala_ccode_base_module_real_get_delegate_target_cvalue;
41068 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_destroy_notify_cvalue = vala_ccode_base_module_real_get_delegate_target_destroy_notify_cvalue;
41069 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_destroy_notify_cname = vala_ccode_base_module_real_get_delegate_target_destroy_notify_cname;
41070 VALA_CODE_VISITOR_CLASS (klass)->visit_base_access = vala_ccode_base_module_real_visit_base_access;
41071 VALA_CODE_VISITOR_CLASS (klass)->visit_postfix_expression = vala_ccode_base_module_real_visit_postfix_expression;
41072 VALA_CCODE_BASE_MODULE_CLASS (klass)->copy_value = vala_ccode_base_module_real_copy_value;
41073 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_declaration = vala_ccode_base_module_real_generate_class_declaration;
41074 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_interface_declaration = vala_ccode_base_module_real_generate_interface_declaration;
41075 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_method_declaration = vala_ccode_base_module_real_generate_method_declaration;
41076 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_error_domain_declaration = vala_ccode_base_module_real_generate_error_domain_declaration;
41077 VALA_CODE_VISITOR_CLASS (klass)->visit_object_creation_expression = vala_ccode_base_module_real_visit_object_creation_expression;
41078 VALA_CODE_VISITOR_CLASS (klass)->visit_sizeof_expression = vala_ccode_base_module_real_visit_sizeof_expression;
41079 VALA_CODE_VISITOR_CLASS (klass)->visit_typeof_expression = vala_ccode_base_module_real_visit_typeof_expression;
41080 VALA_CODE_VISITOR_CLASS (klass)->visit_unary_expression = vala_ccode_base_module_real_visit_unary_expression;
41081 VALA_CCODE_BASE_MODULE_CLASS (klass)->deserialize_expression = vala_ccode_base_module_real_deserialize_expression;
41082 VALA_CCODE_BASE_MODULE_CLASS (klass)->serialize_expression = vala_ccode_base_module_real_serialize_expression;
41083 VALA_CODE_VISITOR_CLASS (klass)->visit_cast_expression = vala_ccode_base_module_real_visit_cast_expression;
41084 VALA_CODE_VISITOR_CLASS (klass)->visit_named_argument = vala_ccode_base_module_real_visit_named_argument;
41085 VALA_CODE_VISITOR_CLASS (klass)->visit_pointer_indirection = vala_ccode_base_module_real_visit_pointer_indirection;
41086 VALA_CODE_VISITOR_CLASS (klass)->visit_addressof_expression = vala_ccode_base_module_real_visit_addressof_expression;
41087 VALA_CODE_VISITOR_CLASS (klass)->visit_reference_transfer_expression = vala_ccode_base_module_real_visit_reference_transfer_expression;
41088 VALA_CODE_VISITOR_CLASS (klass)->visit_binary_expression = vala_ccode_base_module_real_visit_binary_expression;
41089 VALA_CODE_VISITOR_CLASS (klass)->visit_type_check = vala_ccode_base_module_real_visit_type_check;
41090 VALA_CODE_VISITOR_CLASS (klass)->visit_lambda_expression = vala_ccode_base_module_real_visit_lambda_expression;
41091 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_implicit_cast_expression = vala_ccode_base_module_real_get_implicit_cast_expression;
41092 VALA_CCODE_BASE_MODULE_CLASS (klass)->create_type_check_statement = vala_ccode_base_module_real_create_type_check_statement;
41093 VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_ccode_base_module_real_visit_class;
41094 VALA_CCODE_BASE_MODULE_CLASS (klass)->is_gobject_property = vala_ccode_base_module_real_is_gobject_property;
41095 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_dynamic_method_wrapper = vala_ccode_base_module_real_generate_dynamic_method_wrapper;
41096 VALA_CCODE_BASE_MODULE_CLASS (klass)->method_has_wrapper = vala_ccode_base_module_real_method_has_wrapper;
41097 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_param_spec = vala_ccode_base_module_real_get_param_spec;
41098 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_signal_creation = vala_ccode_base_module_real_get_signal_creation;
41099 VALA_CCODE_BASE_MODULE_CLASS (klass)->register_dbus_info = vala_ccode_base_module_real_register_dbus_info;
41100 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_property_getter_cname = vala_ccode_base_module_real_get_dynamic_property_getter_cname;
41101 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_property_setter_cname = vala_ccode_base_module_real_get_dynamic_property_setter_cname;
41102 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_cname = vala_ccode_base_module_real_get_dynamic_signal_cname;
41103 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_connect_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_connect_wrapper_name;
41104 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_connect_after_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_connect_after_wrapper_name;
41105 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_disconnect_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_disconnect_wrapper_name;
41106 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cname = vala_ccode_base_module_real_get_array_length_cname;
41107 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_parameter_array_length_cname = vala_ccode_base_module_real_get_parameter_array_length_cname;
41108 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cexpression = vala_ccode_base_module_real_get_array_length_cexpression;
41109 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cvalue = vala_ccode_base_module_real_get_array_length_cvalue;
41110 VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_size_cname = vala_ccode_base_module_real_get_array_size_cname;
41111 VALA_CCODE_BASE_MODULE_CLASS (klass)->add_simple_check = vala_ccode_base_module_real_add_simple_check;
41112 VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_ready_function = vala_ccode_base_module_real_generate_ready_function;
41113 _tmp0_ = vala_code_node_get_attribute_cache_index ();
41114 vala_ccode_base_module_ccode_attribute_cache_index = _tmp0_;
41118 static void vala_ccode_base_module_instance_init (ValaCCodeBaseModule * self) {
41119 ValaCCodeBaseModuleEmitContext* _tmp0_;
41121 ValaArrayList* _tmp2_;
41123 ValaArrayList* _tmp4_;
41127 ValaHashMap* _tmp8_;
41128 ValaVoidType* _tmp9_;
41129 self->priv = VALA_CCODE_BASE_MODULE_GET_PRIVATE (self);
41130 _tmp0_ = vala_ccode_base_module_emit_context_new (NULL);
41131 self->emit_context = _tmp0_;
41132 _tmp1_ = g_direct_equal;
41133 _tmp2_ = vala_array_list_new (VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, (GBoxedCopyFunc) vala_ccode_base_module_emit_context_ref, vala_ccode_base_module_emit_context_unref, _tmp1_);
41134 self->priv->emit_context_stack = (ValaList*) _tmp2_;
41135 self->current_line = NULL;
41136 _tmp3_ = g_direct_equal;
41137 _tmp4_ = vala_array_list_new (VALA_TYPE_CCODE_LINE_DIRECTIVE, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp3_);
41138 self->priv->line_directive_stack = (ValaList*) _tmp4_;
41139 self->next_regex_id = 0;
41140 self->next_coroutine_state = 1;
41141 self->priv->next_block_id = 0;
41142 _tmp5_ = g_direct_hash;
41143 _tmp6_ = g_direct_equal;
41144 _tmp7_ = g_direct_equal;
41145 _tmp8_ = vala_hash_map_new (VALA_TYPE_BLOCK, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, G_TYPE_INT, NULL, NULL, _tmp5_, _tmp6_, _tmp7_);
41146 self->priv->block_map = (ValaMap*) _tmp8_;
41147 _tmp9_ = vala_void_type_new (NULL);
41148 self->void_type = (ValaDataType*) _tmp9_;
41149 self->in_plugin = FALSE;
41150 self->priv->next_variant_function_id = 0;
41154 static void vala_ccode_base_module_finalize (ValaCodeVisitor* obj) {
41155 ValaCCodeBaseModule * self;
41156 self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModule);
41157 _vala_code_context_unref0 (self->priv->_context);
41158 _vala_code_node_unref0 (self->root_symbol);
41159 _vala_ccode_base_module_emit_context_unref0 (self->emit_context);
41160 _vala_iterable_unref0 (self->priv->emit_context_stack);
41161 _vala_ccode_node_unref0 (self->current_line);
41162 _vala_iterable_unref0 (self->priv->line_directive_stack);
41163 _vala_ccode_file_unref0 (self->header_file);
41164 _vala_ccode_file_unref0 (self->internal_header_file);
41165 _vala_ccode_file_unref0 (self->cfile);
41166 _vala_ccode_base_module_emit_context_unref0 (self->class_init_context);
41167 _vala_ccode_base_module_emit_context_unref0 (self->base_init_context);
41168 _vala_ccode_base_module_emit_context_unref0 (self->class_finalize_context);
41169 _vala_ccode_base_module_emit_context_unref0 (self->base_finalize_context);
41170 _vala_ccode_base_module_emit_context_unref0 (self->instance_init_context);
41171 _vala_ccode_base_module_emit_context_unref0 (self->instance_finalize_context);
41172 _vala_ccode_node_unref0 (self->param_spec_struct);
41173 _vala_ccode_node_unref0 (self->closure_struct);
41174 _vala_ccode_node_unref0 (self->prop_enum);
41175 _vala_iterable_unref0 (self->user_marshal_set);
41176 _vala_iterable_unref0 (self->predefined_marshal_set);
41177 _vala_iterable_unref0 (self->priv->reserved_identifiers);
41178 _vala_map_unref0 (self->priv->block_map);
41179 _vala_code_node_unref0 (self->void_type);
41180 _vala_code_node_unref0 (self->bool_type);
41181 _vala_code_node_unref0 (self->char_type);
41182 _vala_code_node_unref0 (self->uchar_type);
41183 _vala_code_node_unref0 (self->unichar_type);
41184 _vala_code_node_unref0 (self->short_type);
41185 _vala_code_node_unref0 (self->ushort_type);
41186 _vala_code_node_unref0 (self->int_type);
41187 _vala_code_node_unref0 (self->uint_type);
41188 _vala_code_node_unref0 (self->long_type);
41189 _vala_code_node_unref0 (self->ulong_type);
41190 _vala_code_node_unref0 (self->int8_type);
41191 _vala_code_node_unref0 (self->uint8_type);
41192 _vala_code_node_unref0 (self->int16_type);
41193 _vala_code_node_unref0 (self->uint16_type);
41194 _vala_code_node_unref0 (self->int32_type);
41195 _vala_code_node_unref0 (self->uint32_type);
41196 _vala_code_node_unref0 (self->int64_type);
41197 _vala_code_node_unref0 (self->uint64_type);
41198 _vala_code_node_unref0 (self->string_type);
41199 _vala_code_node_unref0 (self->regex_type);
41200 _vala_code_node_unref0 (self->float_type);
41201 _vala_code_node_unref0 (self->double_type);
41202 _vala_code_node_unref0 (self->gtype_type);
41203 _vala_code_node_unref0 (self->gobject_type);
41204 _vala_code_node_unref0 (self->gerror_type);
41205 _vala_code_node_unref0 (self->glist_type);
41206 _vala_code_node_unref0 (self->gslist_type);
41207 _vala_code_node_unref0 (self->gnode_type);
41208 _vala_code_node_unref0 (self->gqueue_type);
41209 _vala_code_node_unref0 (self->gvaluearray_type);
41210 _vala_code_node_unref0 (self->gstringbuilder_type);
41211 _vala_code_node_unref0 (self->garray_type);
41212 _vala_code_node_unref0 (self->gbytearray_type);
41213 _vala_code_node_unref0 (self->gptrarray_type);
41214 _vala_code_node_unref0 (self->gthreadpool_type);
41215 _vala_code_node_unref0 (self->gdestroynotify_type);
41216 _vala_code_node_unref0 (self->gquark_type);
41217 _vala_code_node_unref0 (self->gvalue_type);
41218 _vala_code_node_unref0 (self->gvariant_type);
41219 _vala_code_node_unref0 (self->mutex_type);
41220 _vala_code_node_unref0 (self->gmutex_type);
41221 _vala_code_node_unref0 (self->grecmutex_type);
41222 _vala_code_node_unref0 (self->grwlock_type);
41223 _vala_code_node_unref0 (self->gcond_type);
41224 _vala_code_node_unref0 (self->gsource_type);
41225 _vala_code_node_unref0 (self->type_module_type);
41226 _vala_code_node_unref0 (self->dbus_proxy_type);
41227 _g_free0 (self->module_init_param_name);
41228 _vala_iterable_unref0 (self->wrappers);
41229 _vala_iterable_unref0 (self->priv->generated_external_symbols);
41230 VALA_CODE_VISITOR_CLASS (vala_ccode_base_module_parent_class)->finalize (obj);
41235 * Code visitor generating C Code.
41237 GType vala_ccode_base_module_get_type (void) {
41238 static volatile gsize vala_ccode_base_module_type_id__volatile = 0;
41239 if (g_once_init_enter (&vala_ccode_base_module_type_id__volatile)) {
41240 static const GTypeInfo g_define_type_info = { sizeof (ValaCCodeBaseModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_ccode_base_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaCCodeBaseModule), 0, (GInstanceInitFunc) vala_ccode_base_module_instance_init, NULL };
41241 GType vala_ccode_base_module_type_id;
41242 vala_ccode_base_module_type_id = g_type_register_static (VALA_TYPE_CODE_GENERATOR, "ValaCCodeBaseModule", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
41243 g_once_init_leave (&vala_ccode_base_module_type_id__volatile, vala_ccode_base_module_type_id);
41245 return vala_ccode_base_module_type_id__volatile;
41249 ValaGLibValue* vala_glib_value_construct (GType object_type, ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue) {
41250 ValaGLibValue* self = NULL;
41251 ValaDataType* _tmp0_;
41252 ValaCCodeExpression* _tmp1_;
41253 ValaCCodeExpression* _tmp2_;
41255 _tmp0_ = value_type;
41256 self = (ValaGLibValue*) vala_target_value_construct (object_type, _tmp0_);
41258 _tmp2_ = _vala_ccode_node_ref0 (_tmp1_);
41259 _vala_ccode_node_unref0 (self->cvalue);
41260 self->cvalue = _tmp2_;
41262 self->lvalue = _tmp3_;
41267 ValaGLibValue* vala_glib_value_new (ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue) {
41268 return vala_glib_value_construct (VALA_TYPE_GLIB_VALUE, value_type, cvalue, lvalue);
41272 void vala_glib_value_append_array_length_cvalue (ValaGLibValue* self, ValaCCodeExpression* length_cvalue) {
41275 ValaCCodeExpression* _tmp4_;
41276 g_return_if_fail (self != NULL);
41277 g_return_if_fail (length_cvalue != NULL);
41278 _tmp0_ = self->array_length_cvalues;
41279 if (_tmp0_ == NULL) {
41281 ValaArrayList* _tmp2_;
41282 _tmp1_ = g_direct_equal;
41283 _tmp2_ = vala_array_list_new (VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp1_);
41284 _vala_iterable_unref0 (self->array_length_cvalues);
41285 self->array_length_cvalues = (ValaList*) _tmp2_;
41287 _tmp3_ = self->array_length_cvalues;
41288 _tmp4_ = length_cvalue;
41289 vala_collection_add ((ValaCollection*) _tmp3_, _tmp4_);
41293 ValaGLibValue* vala_glib_value_copy (ValaGLibValue* self) {
41294 ValaGLibValue* result = NULL;
41295 ValaDataType* _tmp0_;
41296 ValaDataType* _tmp1_;
41297 ValaDataType* _tmp2_ = NULL;
41298 ValaDataType* _tmp3_;
41299 ValaCCodeExpression* _tmp4_;
41301 ValaGLibValue* _tmp6_;
41302 ValaGLibValue* _tmp7_;
41303 ValaGLibValue* _result_;
41304 ValaGLibValue* _tmp8_;
41305 ValaDataType* _tmp9_;
41306 ValaDataType* _tmp10_;
41307 ValaGLibValue* _tmp11_;
41309 ValaGLibValue* _tmp13_;
41310 const gchar* _tmp14_;
41313 ValaGLibValue* _tmp30_;
41314 ValaCCodeExpression* _tmp31_;
41315 ValaCCodeExpression* _tmp32_;
41316 ValaGLibValue* _tmp33_;
41318 ValaGLibValue* _tmp35_;
41319 ValaCCodeExpression* _tmp36_;
41320 ValaCCodeExpression* _tmp37_;
41321 ValaGLibValue* _tmp38_;
41322 ValaCCodeExpression* _tmp39_;
41323 ValaCCodeExpression* _tmp40_;
41324 ValaGLibValue* _tmp41_;
41325 ValaCCodeExpression* _tmp42_;
41326 ValaCCodeExpression* _tmp43_;
41327 g_return_val_if_fail (self != NULL, NULL);
41328 _tmp0_ = vala_target_value_get_value_type ((ValaTargetValue*) self);
41330 _tmp2_ = vala_data_type_copy (_tmp1_);
41332 _tmp4_ = self->cvalue;
41333 _tmp5_ = self->lvalue;
41334 _tmp6_ = vala_glib_value_new (_tmp3_, _tmp4_, _tmp5_);
41336 _vala_code_node_unref0 (_tmp3_);
41339 _tmp9_ = vala_target_value_get_actual_value_type ((ValaTargetValue*) self);
41341 vala_target_value_set_actual_value_type ((ValaTargetValue*) _tmp8_, _tmp10_);
41342 _tmp11_ = _result_;
41343 _tmp12_ = self->non_null;
41344 _tmp11_->non_null = _tmp12_;
41345 _tmp13_ = _result_;
41346 _tmp14_ = self->ctype;
41347 _tmp15_ = g_strdup (_tmp14_);
41348 _g_free0 (_tmp13_->ctype);
41349 _tmp13_->ctype = _tmp15_;
41350 _tmp16_ = self->array_length_cvalues;
41351 if (_tmp16_ != NULL) {
41355 ValaList* _cexpr_list;
41361 _tmp17_ = self->array_length_cvalues;
41362 _tmp18_ = _vala_iterable_ref0 (_tmp17_);
41363 _cexpr_list = _tmp18_;
41364 _tmp19_ = _cexpr_list;
41365 _tmp20_ = vala_collection_get_size ((ValaCollection*) _tmp19_);
41367 _cexpr_size = _tmp21_;
41375 gpointer _tmp27_ = NULL;
41376 ValaCCodeExpression* cexpr;
41377 ValaGLibValue* _tmp28_;
41378 ValaCCodeExpression* _tmp29_;
41379 _tmp22_ = _cexpr_index;
41380 _cexpr_index = _tmp22_ + 1;
41381 _tmp23_ = _cexpr_index;
41382 _tmp24_ = _cexpr_size;
41383 if (!(_tmp23_ < _tmp24_)) {
41386 _tmp25_ = _cexpr_list;
41387 _tmp26_ = _cexpr_index;
41388 _tmp27_ = vala_list_get (_tmp25_, _tmp26_);
41389 cexpr = (ValaCCodeExpression*) _tmp27_;
41390 _tmp28_ = _result_;
41392 vala_glib_value_append_array_length_cvalue (_tmp28_, _tmp29_);
41393 _vala_ccode_node_unref0 (cexpr);
41395 _vala_iterable_unref0 (_cexpr_list);
41398 _tmp30_ = _result_;
41399 _tmp31_ = self->array_size_cvalue;
41400 _tmp32_ = _vala_ccode_node_ref0 (_tmp31_);
41401 _vala_ccode_node_unref0 (_tmp30_->array_size_cvalue);
41402 _tmp30_->array_size_cvalue = _tmp32_;
41403 _tmp33_ = _result_;
41404 _tmp34_ = self->array_null_terminated;
41405 _tmp33_->array_null_terminated = _tmp34_;
41406 _tmp35_ = _result_;
41407 _tmp36_ = self->array_length_cexpr;
41408 _tmp37_ = _vala_ccode_node_ref0 (_tmp36_);
41409 _vala_ccode_node_unref0 (_tmp35_->array_length_cexpr);
41410 _tmp35_->array_length_cexpr = _tmp37_;
41411 _tmp38_ = _result_;
41412 _tmp39_ = self->delegate_target_cvalue;
41413 _tmp40_ = _vala_ccode_node_ref0 (_tmp39_);
41414 _vala_ccode_node_unref0 (_tmp38_->delegate_target_cvalue);
41415 _tmp38_->delegate_target_cvalue = _tmp40_;
41416 _tmp41_ = _result_;
41417 _tmp42_ = self->delegate_target_destroy_notify_cvalue;
41418 _tmp43_ = _vala_ccode_node_ref0 (_tmp42_);
41419 _vala_ccode_node_unref0 (_tmp41_->delegate_target_destroy_notify_cvalue);
41420 _tmp41_->delegate_target_destroy_notify_cvalue = _tmp43_;
41426 static void vala_glib_value_class_init (ValaGLibValueClass * klass) {
41427 vala_glib_value_parent_class = g_type_class_peek_parent (klass);
41428 VALA_TARGET_VALUE_CLASS (klass)->finalize = vala_glib_value_finalize;
41432 static void vala_glib_value_instance_init (ValaGLibValue * self) {
41436 static void vala_glib_value_finalize (ValaTargetValue* obj) {
41437 ValaGLibValue * self;
41438 self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
41439 _vala_ccode_node_unref0 (self->cvalue);
41440 _g_free0 (self->ctype);
41441 _vala_iterable_unref0 (self->array_length_cvalues);
41442 _vala_ccode_node_unref0 (self->array_size_cvalue);
41443 _vala_ccode_node_unref0 (self->array_length_cexpr);
41444 _vala_ccode_node_unref0 (self->delegate_target_cvalue);
41445 _vala_ccode_node_unref0 (self->delegate_target_destroy_notify_cvalue);
41446 VALA_TARGET_VALUE_CLASS (vala_glib_value_parent_class)->finalize (obj);
41450 GType vala_glib_value_get_type (void) {
41451 static volatile gsize vala_glib_value_type_id__volatile = 0;
41452 if (g_once_init_enter (&vala_glib_value_type_id__volatile)) {
41453 static const GTypeInfo g_define_type_info = { sizeof (ValaGLibValueClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_glib_value_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGLibValue), 0, (GInstanceInitFunc) vala_glib_value_instance_init, NULL };
41454 GType vala_glib_value_type_id;
41455 vala_glib_value_type_id = g_type_register_static (VALA_TYPE_TARGET_VALUE, "ValaGLibValue", &g_define_type_info, 0);
41456 g_once_init_leave (&vala_glib_value_type_id__volatile, vala_glib_value_type_id);
41458 return vala_glib_value_type_id__volatile;
41462 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
41463 if ((array != NULL) && (destroy_func != NULL)) {
41465 for (i = 0; i < array_length; i = i + 1) {
41466 if (((gpointer*) array)[i] != NULL) {
41467 destroy_func (((gpointer*) array)[i]);
41474 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
41475 _vala_array_destroy (array, array_length, destroy_func);
41480 static gint _vala_array_length (gpointer array) {
41484 while (((gpointer*) array)[length]) {