1 /* valaglibvalue.c generated by valac, the Vala compiler
2  * generated from valaglibvalue.vala, do not modify */
3 
4 /* valaglibvalue.vala
5  *
6  * Copyright (C) 2010  Jürg Billeter
7  * Copyright (C) 2011  Luca Bruno
8  *
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.
13 
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.
18 
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
22  *
23  * Author:
24  * 	Jürg Billeter <j@bitron.ch>
25  * 	Luca Bruno <lucabru@src.gnome.org>
26  */
27 
28 #include "valacodegen.h"
29 #include <vala.h>
30 #include <valaccode.h>
31 #include <glib.h>
32 #include <valagee.h>
33 #include <glib-object.h>
34 #include <stdlib.h>
35 #include <string.h>
36 
37 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
38 #define _g_free0(var) (var = (g_free (var), NULL))
39 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
40 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
41 #define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))
42 
43 static gpointer vala_glib_value_parent_class = NULL;
44 
45 static void vala_glib_value_finalize (ValaTargetValue * obj);
46 static GType vala_glib_value_get_type_once (void);
47 
48 static gpointer
_vala_ccode_node_ref0(gpointer self)49 _vala_ccode_node_ref0 (gpointer self)
50 {
51 	return self ? vala_ccode_node_ref (self) : NULL;
52 }
53 
54 ValaGLibValue*
vala_glib_value_construct(GType object_type,ValaDataType * value_type,ValaCCodeExpression * cvalue,gboolean lvalue)55 vala_glib_value_construct (GType object_type,
56                            ValaDataType* value_type,
57                            ValaCCodeExpression* cvalue,
58                            gboolean lvalue)
59 {
60 	ValaGLibValue* self = NULL;
61 	ValaCCodeExpression* _tmp0_;
62 	self = (ValaGLibValue*) vala_target_value_construct (object_type, value_type);
63 	_tmp0_ = _vala_ccode_node_ref0 (cvalue);
64 	_vala_ccode_node_unref0 (self->cvalue);
65 	self->cvalue = _tmp0_;
66 	self->lvalue = lvalue;
67 	return self;
68 }
69 
70 ValaGLibValue*
vala_glib_value_new(ValaDataType * value_type,ValaCCodeExpression * cvalue,gboolean lvalue)71 vala_glib_value_new (ValaDataType* value_type,
72                      ValaCCodeExpression* cvalue,
73                      gboolean lvalue)
74 {
75 	return vala_glib_value_construct (VALA_TYPE_GLIB_VALUE, value_type, cvalue, lvalue);
76 }
77 
78 void
vala_glib_value_append_array_length_cvalue(ValaGLibValue * self,ValaCCodeExpression * length_cvalue)79 vala_glib_value_append_array_length_cvalue (ValaGLibValue* self,
80                                             ValaCCodeExpression* length_cvalue)
81 {
82 	ValaList* _tmp0_;
83 	ValaList* _tmp3_;
84 	g_return_if_fail (self != NULL);
85 	g_return_if_fail (length_cvalue != NULL);
86 	_tmp0_ = self->array_length_cvalues;
87 	if (_tmp0_ == NULL) {
88 		GEqualFunc _tmp1_;
89 		ValaArrayList* _tmp2_;
90 		_tmp1_ = g_direct_equal;
91 		_tmp2_ = vala_array_list_new (VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp1_);
92 		_vala_iterable_unref0 (self->array_length_cvalues);
93 		self->array_length_cvalues = (ValaList*) _tmp2_;
94 	}
95 	_tmp3_ = self->array_length_cvalues;
96 	vala_collection_add ((ValaCollection*) _tmp3_, length_cvalue);
97 }
98 
99 static gpointer
_vala_iterable_ref0(gpointer self)100 _vala_iterable_ref0 (gpointer self)
101 {
102 	return self ? vala_iterable_ref (self) : NULL;
103 }
104 
105 ValaGLibValue*
vala_glib_value_copy(ValaGLibValue * self)106 vala_glib_value_copy (ValaGLibValue* self)
107 {
108 	ValaGLibValue* _result_ = NULL;
109 	ValaDataType* _tmp0_;
110 	ValaDataType* _tmp1_;
111 	ValaDataType* _tmp2_;
112 	ValaDataType* _tmp3_;
113 	ValaCCodeExpression* _tmp4_;
114 	ValaGLibValue* _tmp5_;
115 	ValaGLibValue* _tmp6_;
116 	ValaGLibValue* _tmp7_;
117 	ValaDataType* _tmp8_;
118 	ValaDataType* _tmp9_;
119 	ValaGLibValue* _tmp10_;
120 	ValaGLibValue* _tmp11_;
121 	const gchar* _tmp12_;
122 	gchar* _tmp13_;
123 	ValaList* _tmp14_;
124 	ValaGLibValue* _tmp26_;
125 	ValaCCodeExpression* _tmp27_;
126 	ValaCCodeExpression* _tmp28_;
127 	ValaGLibValue* _tmp29_;
128 	ValaGLibValue* _tmp30_;
129 	ValaCCodeExpression* _tmp31_;
130 	ValaCCodeExpression* _tmp32_;
131 	ValaGLibValue* _tmp33_;
132 	ValaCCodeExpression* _tmp34_;
133 	ValaCCodeExpression* _tmp35_;
134 	ValaGLibValue* _tmp36_;
135 	ValaCCodeExpression* _tmp37_;
136 	ValaCCodeExpression* _tmp38_;
137 	ValaGLibValue* result = NULL;
138 	g_return_val_if_fail (self != NULL, NULL);
139 	_tmp0_ = vala_target_value_get_value_type ((ValaTargetValue*) self);
140 	_tmp1_ = _tmp0_;
141 	_tmp2_ = vala_data_type_copy (_tmp1_);
142 	_tmp3_ = _tmp2_;
143 	_tmp4_ = self->cvalue;
144 	_tmp5_ = vala_glib_value_new (_tmp3_, _tmp4_, self->lvalue);
145 	_tmp6_ = _tmp5_;
146 	_vala_code_node_unref0 (_tmp3_);
147 	_result_ = _tmp6_;
148 	_tmp7_ = _result_;
149 	_tmp8_ = vala_target_value_get_actual_value_type ((ValaTargetValue*) self);
150 	_tmp9_ = _tmp8_;
151 	vala_target_value_set_actual_value_type ((ValaTargetValue*) _tmp7_, _tmp9_);
152 	_tmp10_ = _result_;
153 	_tmp10_->non_null = self->non_null;
154 	_tmp11_ = _result_;
155 	_tmp12_ = self->ctype;
156 	_tmp13_ = g_strdup (_tmp12_);
157 	_g_free0 (_tmp11_->ctype);
158 	_tmp11_->ctype = _tmp13_;
159 	_tmp14_ = self->array_length_cvalues;
160 	if (_tmp14_ != NULL) {
161 		{
162 			ValaList* _cexpr_list = NULL;
163 			ValaList* _tmp15_;
164 			ValaList* _tmp16_;
165 			gint _cexpr_size = 0;
166 			ValaList* _tmp17_;
167 			gint _tmp18_;
168 			gint _tmp19_;
169 			gint _cexpr_index = 0;
170 			_tmp15_ = self->array_length_cvalues;
171 			_tmp16_ = _vala_iterable_ref0 (_tmp15_);
172 			_cexpr_list = _tmp16_;
173 			_tmp17_ = _cexpr_list;
174 			_tmp18_ = vala_collection_get_size ((ValaCollection*) _tmp17_);
175 			_tmp19_ = _tmp18_;
176 			_cexpr_size = _tmp19_;
177 			_cexpr_index = -1;
178 			while (TRUE) {
179 				gint _tmp20_;
180 				gint _tmp21_;
181 				ValaCCodeExpression* cexpr = NULL;
182 				ValaList* _tmp22_;
183 				gpointer _tmp23_;
184 				ValaGLibValue* _tmp24_;
185 				ValaCCodeExpression* _tmp25_;
186 				_cexpr_index = _cexpr_index + 1;
187 				_tmp20_ = _cexpr_index;
188 				_tmp21_ = _cexpr_size;
189 				if (!(_tmp20_ < _tmp21_)) {
190 					break;
191 				}
192 				_tmp22_ = _cexpr_list;
193 				_tmp23_ = vala_list_get (_tmp22_, _cexpr_index);
194 				cexpr = (ValaCCodeExpression*) _tmp23_;
195 				_tmp24_ = _result_;
196 				_tmp25_ = cexpr;
197 				vala_glib_value_append_array_length_cvalue (_tmp24_, _tmp25_);
198 				_vala_ccode_node_unref0 (cexpr);
199 			}
200 			_vala_iterable_unref0 (_cexpr_list);
201 		}
202 	}
203 	_tmp26_ = _result_;
204 	_tmp27_ = self->array_size_cvalue;
205 	_tmp28_ = _vala_ccode_node_ref0 (_tmp27_);
206 	_vala_ccode_node_unref0 (_tmp26_->array_size_cvalue);
207 	_tmp26_->array_size_cvalue = _tmp28_;
208 	_tmp29_ = _result_;
209 	_tmp29_->array_null_terminated = self->array_null_terminated;
210 	_tmp30_ = _result_;
211 	_tmp31_ = self->array_length_cexpr;
212 	_tmp32_ = _vala_ccode_node_ref0 (_tmp31_);
213 	_vala_ccode_node_unref0 (_tmp30_->array_length_cexpr);
214 	_tmp30_->array_length_cexpr = _tmp32_;
215 	_tmp33_ = _result_;
216 	_tmp34_ = self->delegate_target_cvalue;
217 	_tmp35_ = _vala_ccode_node_ref0 (_tmp34_);
218 	_vala_ccode_node_unref0 (_tmp33_->delegate_target_cvalue);
219 	_tmp33_->delegate_target_cvalue = _tmp35_;
220 	_tmp36_ = _result_;
221 	_tmp37_ = self->delegate_target_destroy_notify_cvalue;
222 	_tmp38_ = _vala_ccode_node_ref0 (_tmp37_);
223 	_vala_ccode_node_unref0 (_tmp36_->delegate_target_destroy_notify_cvalue);
224 	_tmp36_->delegate_target_destroy_notify_cvalue = _tmp38_;
225 	result = _result_;
226 	return result;
227 }
228 
229 static void
vala_glib_value_class_init(ValaGLibValueClass * klass,gpointer klass_data)230 vala_glib_value_class_init (ValaGLibValueClass * klass,
231                             gpointer klass_data)
232 {
233 	vala_glib_value_parent_class = g_type_class_peek_parent (klass);
234 	((ValaTargetValueClass *) klass)->finalize = vala_glib_value_finalize;
235 }
236 
237 static void
vala_glib_value_instance_init(ValaGLibValue * self,gpointer klass)238 vala_glib_value_instance_init (ValaGLibValue * self,
239                                gpointer klass)
240 {
241 }
242 
243 static void
vala_glib_value_finalize(ValaTargetValue * obj)244 vala_glib_value_finalize (ValaTargetValue * obj)
245 {
246 	ValaGLibValue * self;
247 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
248 	_vala_ccode_node_unref0 (self->cvalue);
249 	_g_free0 (self->ctype);
250 	_vala_iterable_unref0 (self->array_length_cvalues);
251 	_vala_ccode_node_unref0 (self->array_size_cvalue);
252 	_vala_ccode_node_unref0 (self->array_length_cexpr);
253 	_vala_ccode_node_unref0 (self->delegate_target_cvalue);
254 	_vala_ccode_node_unref0 (self->delegate_target_destroy_notify_cvalue);
255 	VALA_TARGET_VALUE_CLASS (vala_glib_value_parent_class)->finalize (obj);
256 }
257 
258 static GType
vala_glib_value_get_type_once(void)259 vala_glib_value_get_type_once (void)
260 {
261 	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 };
262 	GType vala_glib_value_type_id;
263 	vala_glib_value_type_id = g_type_register_static (VALA_TYPE_TARGET_VALUE, "ValaGLibValue", &g_define_type_info, 0);
264 	return vala_glib_value_type_id;
265 }
266 
267 GType
vala_glib_value_get_type(void)268 vala_glib_value_get_type (void)
269 {
270 	static volatile gsize vala_glib_value_type_id__volatile = 0;
271 	if (g_once_init_enter (&vala_glib_value_type_id__volatile)) {
272 		GType vala_glib_value_type_id;
273 		vala_glib_value_type_id = vala_glib_value_get_type_once ();
274 		g_once_init_leave (&vala_glib_value_type_id__volatile, vala_glib_value_type_id);
275 	}
276 	return vala_glib_value_type_id__volatile;
277 }
278 
279 ValaCCodeExpression*
vala_get_cvalue(ValaExpression * expr)280 vala_get_cvalue (ValaExpression* expr)
281 {
282 	ValaTargetValue* _tmp0_;
283 	ValaTargetValue* _tmp1_;
284 	ValaTargetValue* _tmp2_;
285 	ValaTargetValue* _tmp3_;
286 	ValaCCodeExpression* _tmp4_;
287 	ValaCCodeExpression* result = NULL;
288 	g_return_val_if_fail (expr != NULL, NULL);
289 	_tmp0_ = vala_expression_get_target_value (expr);
290 	_tmp1_ = _tmp0_;
291 	if (_tmp1_ == NULL) {
292 		result = NULL;
293 		return result;
294 	}
295 	_tmp2_ = vala_expression_get_target_value (expr);
296 	_tmp3_ = _tmp2_;
297 	_tmp4_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->cvalue;
298 	result = _tmp4_;
299 	return result;
300 }
301 
302 ValaCCodeExpression*
vala_get_cvalue_(ValaTargetValue * value)303 vala_get_cvalue_ (ValaTargetValue* value)
304 {
305 	ValaCCodeExpression* _tmp0_;
306 	ValaCCodeExpression* result = NULL;
307 	g_return_val_if_fail (value != NULL, NULL);
308 	_tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (value, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->cvalue;
309 	result = _tmp0_;
310 	return result;
311 }
312 
313 void
vala_set_cvalue(ValaExpression * expr,ValaCCodeExpression * cvalue)314 vala_set_cvalue (ValaExpression* expr,
315                  ValaCCodeExpression* cvalue)
316 {
317 	ValaGLibValue* glib_value = NULL;
318 	ValaTargetValue* _tmp0_;
319 	ValaTargetValue* _tmp1_;
320 	ValaGLibValue* _tmp2_;
321 	ValaGLibValue* _tmp9_;
322 	ValaCCodeExpression* _tmp10_;
323 	g_return_if_fail (expr != NULL);
324 	_tmp0_ = vala_expression_get_target_value (expr);
325 	_tmp1_ = _tmp0_;
326 	glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
327 	_tmp2_ = glib_value;
328 	if (_tmp2_ == NULL) {
329 		ValaDataType* _tmp3_;
330 		ValaDataType* _tmp4_;
331 		ValaGLibValue* _tmp5_;
332 		ValaGLibValue* _tmp6_;
333 		ValaTargetValue* _tmp7_;
334 		ValaTargetValue* _tmp8_;
335 		_tmp3_ = vala_expression_get_value_type (expr);
336 		_tmp4_ = _tmp3_;
337 		_tmp5_ = vala_glib_value_new (_tmp4_, NULL, FALSE);
338 		_tmp6_ = _tmp5_;
339 		vala_expression_set_target_value (expr, (ValaTargetValue*) _tmp6_);
340 		_vala_target_value_unref0 (_tmp6_);
341 		_tmp7_ = vala_expression_get_target_value (expr);
342 		_tmp8_ = _tmp7_;
343 		glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
344 	}
345 	_tmp9_ = glib_value;
346 	_tmp10_ = _vala_ccode_node_ref0 (cvalue);
347 	_vala_ccode_node_unref0 (_tmp9_->cvalue);
348 	_tmp9_->cvalue = _tmp10_;
349 }
350 
351 ValaCCodeExpression*
vala_get_array_size_cvalue(ValaTargetValue * value)352 vala_get_array_size_cvalue (ValaTargetValue* value)
353 {
354 	ValaCCodeExpression* _tmp0_;
355 	ValaCCodeExpression* result = NULL;
356 	g_return_val_if_fail (value != NULL, NULL);
357 	_tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (value, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->array_size_cvalue;
358 	result = _tmp0_;
359 	return result;
360 }
361 
362 void
vala_set_array_size_cvalue(ValaTargetValue * value,ValaCCodeExpression * cvalue)363 vala_set_array_size_cvalue (ValaTargetValue* value,
364                             ValaCCodeExpression* cvalue)
365 {
366 	ValaCCodeExpression* _tmp0_;
367 	g_return_if_fail (value != NULL);
368 	_tmp0_ = _vala_ccode_node_ref0 (cvalue);
369 	_vala_ccode_node_unref0 (G_TYPE_CHECK_INSTANCE_CAST (value, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->array_size_cvalue);
370 	G_TYPE_CHECK_INSTANCE_CAST (value, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->array_size_cvalue = _tmp0_;
371 }
372 
373 ValaCCodeExpression*
vala_get_delegate_target(ValaExpression * expr)374 vala_get_delegate_target (ValaExpression* expr)
375 {
376 	ValaTargetValue* _tmp0_;
377 	ValaTargetValue* _tmp1_;
378 	ValaTargetValue* _tmp2_;
379 	ValaTargetValue* _tmp3_;
380 	ValaCCodeExpression* _tmp4_;
381 	ValaCCodeExpression* result = NULL;
382 	g_return_val_if_fail (expr != NULL, NULL);
383 	_tmp0_ = vala_expression_get_target_value (expr);
384 	_tmp1_ = _tmp0_;
385 	if (_tmp1_ == NULL) {
386 		result = NULL;
387 		return result;
388 	}
389 	_tmp2_ = vala_expression_get_target_value (expr);
390 	_tmp3_ = _tmp2_;
391 	_tmp4_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->delegate_target_cvalue;
392 	result = _tmp4_;
393 	return result;
394 }
395 
396 void
vala_set_delegate_target(ValaExpression * expr,ValaCCodeExpression * delegate_target)397 vala_set_delegate_target (ValaExpression* expr,
398                           ValaCCodeExpression* delegate_target)
399 {
400 	ValaGLibValue* glib_value = NULL;
401 	ValaTargetValue* _tmp0_;
402 	ValaTargetValue* _tmp1_;
403 	ValaGLibValue* _tmp2_;
404 	ValaGLibValue* _tmp9_;
405 	ValaCCodeExpression* _tmp10_;
406 	g_return_if_fail (expr != NULL);
407 	_tmp0_ = vala_expression_get_target_value (expr);
408 	_tmp1_ = _tmp0_;
409 	glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
410 	_tmp2_ = glib_value;
411 	if (_tmp2_ == NULL) {
412 		ValaDataType* _tmp3_;
413 		ValaDataType* _tmp4_;
414 		ValaGLibValue* _tmp5_;
415 		ValaGLibValue* _tmp6_;
416 		ValaTargetValue* _tmp7_;
417 		ValaTargetValue* _tmp8_;
418 		_tmp3_ = vala_expression_get_value_type (expr);
419 		_tmp4_ = _tmp3_;
420 		_tmp5_ = vala_glib_value_new (_tmp4_, NULL, FALSE);
421 		_tmp6_ = _tmp5_;
422 		vala_expression_set_target_value (expr, (ValaTargetValue*) _tmp6_);
423 		_vala_target_value_unref0 (_tmp6_);
424 		_tmp7_ = vala_expression_get_target_value (expr);
425 		_tmp8_ = _tmp7_;
426 		glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
427 	}
428 	_tmp9_ = glib_value;
429 	_tmp10_ = _vala_ccode_node_ref0 (delegate_target);
430 	_vala_ccode_node_unref0 (_tmp9_->delegate_target_cvalue);
431 	_tmp9_->delegate_target_cvalue = _tmp10_;
432 }
433 
434 ValaCCodeExpression*
vala_get_delegate_target_destroy_notify(ValaExpression * expr)435 vala_get_delegate_target_destroy_notify (ValaExpression* expr)
436 {
437 	ValaGLibValue* glib_value = NULL;
438 	ValaTargetValue* _tmp0_;
439 	ValaTargetValue* _tmp1_;
440 	ValaGLibValue* _tmp2_;
441 	ValaGLibValue* _tmp3_;
442 	ValaCCodeExpression* _tmp4_;
443 	ValaCCodeExpression* result = NULL;
444 	g_return_val_if_fail (expr != NULL, NULL);
445 	_tmp0_ = vala_expression_get_target_value (expr);
446 	_tmp1_ = _tmp0_;
447 	glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
448 	_tmp2_ = glib_value;
449 	if (_tmp2_ == NULL) {
450 		result = NULL;
451 		return result;
452 	}
453 	_tmp3_ = glib_value;
454 	_tmp4_ = _tmp3_->delegate_target_destroy_notify_cvalue;
455 	result = _tmp4_;
456 	return result;
457 }
458 
459 void
vala_set_delegate_target_destroy_notify(ValaExpression * expr,ValaCCodeExpression * destroy_notify)460 vala_set_delegate_target_destroy_notify (ValaExpression* expr,
461                                          ValaCCodeExpression* destroy_notify)
462 {
463 	ValaGLibValue* glib_value = NULL;
464 	ValaTargetValue* _tmp0_;
465 	ValaTargetValue* _tmp1_;
466 	ValaGLibValue* _tmp2_;
467 	ValaGLibValue* _tmp9_;
468 	ValaCCodeExpression* _tmp10_;
469 	g_return_if_fail (expr != NULL);
470 	_tmp0_ = vala_expression_get_target_value (expr);
471 	_tmp1_ = _tmp0_;
472 	glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
473 	_tmp2_ = glib_value;
474 	if (_tmp2_ == NULL) {
475 		ValaDataType* _tmp3_;
476 		ValaDataType* _tmp4_;
477 		ValaGLibValue* _tmp5_;
478 		ValaGLibValue* _tmp6_;
479 		ValaTargetValue* _tmp7_;
480 		ValaTargetValue* _tmp8_;
481 		_tmp3_ = vala_expression_get_value_type (expr);
482 		_tmp4_ = _tmp3_;
483 		_tmp5_ = vala_glib_value_new (_tmp4_, NULL, FALSE);
484 		_tmp6_ = _tmp5_;
485 		vala_expression_set_target_value (expr, (ValaTargetValue*) _tmp6_);
486 		_vala_target_value_unref0 (_tmp6_);
487 		_tmp7_ = vala_expression_get_target_value (expr);
488 		_tmp8_ = _tmp7_;
489 		glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
490 	}
491 	_tmp9_ = glib_value;
492 	_tmp10_ = _vala_ccode_node_ref0 (destroy_notify);
493 	_vala_ccode_node_unref0 (_tmp9_->delegate_target_destroy_notify_cvalue);
494 	_tmp9_->delegate_target_destroy_notify_cvalue = _tmp10_;
495 }
496 
497 void
vala_append_array_length(ValaExpression * expr,ValaCCodeExpression * size)498 vala_append_array_length (ValaExpression* expr,
499                           ValaCCodeExpression* size)
500 {
501 	ValaGLibValue* glib_value = NULL;
502 	ValaTargetValue* _tmp0_;
503 	ValaTargetValue* _tmp1_;
504 	ValaGLibValue* _tmp2_;
505 	ValaGLibValue* _tmp9_;
506 	g_return_if_fail (expr != NULL);
507 	g_return_if_fail (size != NULL);
508 	_tmp0_ = vala_expression_get_target_value (expr);
509 	_tmp1_ = _tmp0_;
510 	glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
511 	_tmp2_ = glib_value;
512 	if (_tmp2_ == NULL) {
513 		ValaDataType* _tmp3_;
514 		ValaDataType* _tmp4_;
515 		ValaGLibValue* _tmp5_;
516 		ValaGLibValue* _tmp6_;
517 		ValaTargetValue* _tmp7_;
518 		ValaTargetValue* _tmp8_;
519 		_tmp3_ = vala_expression_get_value_type (expr);
520 		_tmp4_ = _tmp3_;
521 		_tmp5_ = vala_glib_value_new (_tmp4_, NULL, FALSE);
522 		_tmp6_ = _tmp5_;
523 		vala_expression_set_target_value (expr, (ValaTargetValue*) _tmp6_);
524 		_vala_target_value_unref0 (_tmp6_);
525 		_tmp7_ = vala_expression_get_target_value (expr);
526 		_tmp8_ = _tmp7_;
527 		glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
528 	}
529 	_tmp9_ = glib_value;
530 	vala_glib_value_append_array_length_cvalue (_tmp9_, size);
531 }
532 
533 ValaList*
vala_get_array_lengths(ValaExpression * expr)534 vala_get_array_lengths (ValaExpression* expr)
535 {
536 	ValaGLibValue* glib_value = NULL;
537 	ValaTargetValue* _tmp0_;
538 	ValaTargetValue* _tmp1_;
539 	ValaGLibValue* _tmp2_;
540 	ValaGLibValue* _tmp3_;
541 	ValaList* _tmp4_;
542 	ValaList* result = NULL;
543 	g_return_val_if_fail (expr != NULL, NULL);
544 	_tmp0_ = vala_expression_get_target_value (expr);
545 	_tmp1_ = _tmp0_;
546 	glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
547 	_tmp2_ = glib_value;
548 	if (_tmp2_ == NULL) {
549 		result = NULL;
550 		return result;
551 	}
552 	_tmp3_ = glib_value;
553 	_tmp4_ = _tmp3_->array_length_cvalues;
554 	result = _tmp4_;
555 	return result;
556 }
557 
558 gboolean
vala_get_lvalue(ValaTargetValue * value)559 vala_get_lvalue (ValaTargetValue* value)
560 {
561 	gboolean result = FALSE;
562 	g_return_val_if_fail (value != NULL, FALSE);
563 	result = G_TYPE_CHECK_INSTANCE_CAST (value, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->lvalue;
564 	return result;
565 }
566 
567 gboolean
vala_get_non_null(ValaTargetValue * value)568 vala_get_non_null (ValaTargetValue* value)
569 {
570 	gboolean result = FALSE;
571 	g_return_val_if_fail (value != NULL, FALSE);
572 	result = G_TYPE_CHECK_INSTANCE_CAST (value, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->non_null;
573 	return result;
574 }
575 
576 const gchar*
vala_get_ctype(ValaTargetValue * value)577 vala_get_ctype (ValaTargetValue* value)
578 {
579 	const gchar* _tmp0_;
580 	const gchar* result = NULL;
581 	g_return_val_if_fail (value != NULL, NULL);
582 	_tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (value, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->ctype;
583 	result = _tmp0_;
584 	return result;
585 }
586 
587 gboolean
vala_get_array_null_terminated(ValaTargetValue * value)588 vala_get_array_null_terminated (ValaTargetValue* value)
589 {
590 	gboolean result = FALSE;
591 	g_return_val_if_fail (value != NULL, FALSE);
592 	result = G_TYPE_CHECK_INSTANCE_CAST (value, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->array_null_terminated;
593 	return result;
594 }
595 
596 ValaCCodeExpression*
vala_get_array_length_cexpr(ValaTargetValue * value)597 vala_get_array_length_cexpr (ValaTargetValue* value)
598 {
599 	ValaCCodeExpression* _tmp0_;
600 	ValaCCodeExpression* result = NULL;
601 	g_return_val_if_fail (value != NULL, NULL);
602 	_tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (value, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->array_length_cexpr;
603 	result = _tmp0_;
604 	return result;
605 }
606 
607