1 /* valaobjecttypesymbol.c generated by valac, the Vala compiler
2  * generated from valaobjecttypesymbol.vala, do not modify */
3 
4 /* valaobjecttypesymbol.vala
5  *
6  * Copyright (C) 2008-2009  Jürg Billeter
7  * Copyright (C) 2008  Philip Van Hoof
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  * 	Philip Van Hoof <pvanhoof@gnome.org>
26  */
27 
28 #include "vala.h"
29 #include <valagee.h>
30 #include <glib-object.h>
31 #include <stdlib.h>
32 #include <string.h>
33 #include <glib.h>
34 
35 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
36 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
37 #define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))
38 
39 struct _ValaObjectTypeSymbolPrivate {
40 	ValaList* type_parameters;
41 	ValaList* members;
42 	ValaList* fields;
43 	ValaList* methods;
44 	ValaList* properties;
45 	ValaList* signals;
46 	ValaList* classes;
47 	ValaList* interfaces;
48 	ValaList* structs;
49 	ValaList* enums;
50 	ValaList* delegates;
51 	ValaList* constants;
52 };
53 
54 static gint ValaObjectTypeSymbol_private_offset;
55 static gpointer vala_object_type_symbol_parent_class = NULL;
56 
57 static void vala_object_type_symbol_real_add_field (ValaSymbol* base,
58                                              ValaField* f);
59 static void vala_object_type_symbol_real_add_method (ValaSymbol* base,
60                                               ValaMethod* m);
61 static void vala_object_type_symbol_real_add_property (ValaSymbol* base,
62                                                 ValaProperty* prop);
63 static void vala_object_type_symbol_real_add_signal (ValaSymbol* base,
64                                               ValaSignal* sig);
65 static void vala_object_type_symbol_real_add_class (ValaSymbol* base,
66                                              ValaClass* cl);
67 static void vala_object_type_symbol_real_add_interface (ValaSymbol* base,
68                                                  ValaInterface* iface);
69 static void vala_object_type_symbol_real_add_struct (ValaSymbol* base,
70                                               ValaStruct* st);
71 static void vala_object_type_symbol_real_add_enum (ValaSymbol* base,
72                                             ValaEnum* en);
73 static void vala_object_type_symbol_real_add_delegate (ValaSymbol* base,
74                                                 ValaDelegate* d);
75 static void vala_object_type_symbol_real_add_constant (ValaSymbol* base,
76                                                 ValaConstant* c);
77 static gint vala_object_type_symbol_real_get_type_parameter_index (ValaTypeSymbol* base,
78                                                             const gchar* name);
79 static void vala_object_type_symbol_real_accept_children (ValaCodeNode* base,
80                                                    ValaCodeVisitor* visitor);
81 static gboolean vala_object_type_symbol_real_check (ValaCodeNode* base,
82                                              ValaCodeContext* context);
83 static void vala_object_type_symbol_finalize (ValaCodeNode * obj);
84 static GType vala_object_type_symbol_get_type_once (void);
85 
86 static inline gpointer
vala_object_type_symbol_get_instance_private(ValaObjectTypeSymbol * self)87 vala_object_type_symbol_get_instance_private (ValaObjectTypeSymbol* self)
88 {
89 	return G_STRUCT_MEMBER_P (self, ValaObjectTypeSymbol_private_offset);
90 }
91 
92 ValaObjectTypeSymbol*
vala_object_type_symbol_construct(GType object_type,const gchar * name,ValaSourceReference * source_reference,ValaComment * comment)93 vala_object_type_symbol_construct (GType object_type,
94                                    const gchar* name,
95                                    ValaSourceReference* source_reference,
96                                    ValaComment* comment)
97 {
98 	ValaObjectTypeSymbol* self = NULL;
99 	g_return_val_if_fail (name != NULL, NULL);
100 	self = (ValaObjectTypeSymbol*) vala_typesymbol_construct (object_type, name, source_reference, comment);
101 	return self;
102 }
103 
104 /**
105  * Returns the list of members.
106  *
107  * @return list of members
108  */
109 ValaList*
vala_object_type_symbol_get_members(ValaObjectTypeSymbol * self)110 vala_object_type_symbol_get_members (ValaObjectTypeSymbol* self)
111 {
112 	ValaList* _tmp0_;
113 	ValaList* result = NULL;
114 	g_return_val_if_fail (self != NULL, NULL);
115 	_tmp0_ = self->priv->members;
116 	result = _tmp0_;
117 	return result;
118 }
119 
120 /**
121  * Returns the list of fields.
122  *
123  * @return list of fields
124  */
125 ValaList*
vala_object_type_symbol_get_fields(ValaObjectTypeSymbol * self)126 vala_object_type_symbol_get_fields (ValaObjectTypeSymbol* self)
127 {
128 	ValaList* _tmp0_;
129 	ValaList* result = NULL;
130 	g_return_val_if_fail (self != NULL, NULL);
131 	_tmp0_ = self->priv->fields;
132 	result = _tmp0_;
133 	return result;
134 }
135 
136 /**
137  * Returns the list of methods.
138  *
139  * @return list of methods
140  */
141 ValaList*
vala_object_type_symbol_get_methods(ValaObjectTypeSymbol * self)142 vala_object_type_symbol_get_methods (ValaObjectTypeSymbol* self)
143 {
144 	ValaList* _tmp0_;
145 	ValaList* result = NULL;
146 	g_return_val_if_fail (self != NULL, NULL);
147 	_tmp0_ = self->priv->methods;
148 	result = _tmp0_;
149 	return result;
150 }
151 
152 /**
153  * Returns the list of properties.
154  *
155  * @return list of properties
156  */
157 ValaList*
vala_object_type_symbol_get_properties(ValaObjectTypeSymbol * self)158 vala_object_type_symbol_get_properties (ValaObjectTypeSymbol* self)
159 {
160 	ValaList* _tmp0_;
161 	ValaList* result = NULL;
162 	g_return_val_if_fail (self != NULL, NULL);
163 	_tmp0_ = self->priv->properties;
164 	result = _tmp0_;
165 	return result;
166 }
167 
168 /**
169  * Returns the list of signals.
170  *
171  * @return list of signals
172  */
173 ValaList*
vala_object_type_symbol_get_signals(ValaObjectTypeSymbol * self)174 vala_object_type_symbol_get_signals (ValaObjectTypeSymbol* self)
175 {
176 	ValaList* _tmp0_;
177 	ValaList* result = NULL;
178 	g_return_val_if_fail (self != NULL, NULL);
179 	_tmp0_ = self->priv->signals;
180 	result = _tmp0_;
181 	return result;
182 }
183 
184 /**
185  * Adds the specified field as a member to this object-symbol.
186  *
187  * @param f a field
188  */
189 static void
vala_object_type_symbol_real_add_field(ValaSymbol * base,ValaField * f)190 vala_object_type_symbol_real_add_field (ValaSymbol* base,
191                                         ValaField* f)
192 {
193 	ValaObjectTypeSymbol * self;
194 	ValaList* _tmp0_;
195 	ValaList* _tmp1_;
196 	ValaScope* _tmp2_;
197 	ValaScope* _tmp3_;
198 	const gchar* _tmp4_;
199 	const gchar* _tmp5_;
200 	self = (ValaObjectTypeSymbol*) base;
201 	g_return_if_fail (f != NULL);
202 	_tmp0_ = self->priv->fields;
203 	vala_collection_add ((ValaCollection*) _tmp0_, f);
204 	_tmp1_ = self->priv->members;
205 	vala_collection_add ((ValaCollection*) _tmp1_, (ValaSymbol*) f);
206 	_tmp2_ = vala_symbol_get_scope ((ValaSymbol*) self);
207 	_tmp3_ = _tmp2_;
208 	_tmp4_ = vala_symbol_get_name ((ValaSymbol*) f);
209 	_tmp5_ = _tmp4_;
210 	vala_scope_add (_tmp3_, _tmp5_, (ValaSymbol*) f);
211 }
212 
213 /**
214  * Adds the specified method as a member to this object-symbol.
215  *
216  * @param m a method
217  */
218 static void
vala_object_type_symbol_real_add_method(ValaSymbol * base,ValaMethod * m)219 vala_object_type_symbol_real_add_method (ValaSymbol* base,
220                                          ValaMethod* m)
221 {
222 	ValaObjectTypeSymbol * self;
223 	ValaList* _tmp0_;
224 	ValaList* _tmp1_;
225 	gboolean _tmp2_ = FALSE;
226 	gboolean _tmp3_ = FALSE;
227 	self = (ValaObjectTypeSymbol*) base;
228 	g_return_if_fail (m != NULL);
229 	_tmp0_ = self->priv->methods;
230 	vala_collection_add ((ValaCollection*) _tmp0_, m);
231 	_tmp1_ = self->priv->members;
232 	vala_collection_add ((ValaCollection*) _tmp1_, (ValaSymbol*) m);
233 	if (VALA_IS_CLASS (self)) {
234 		ValaDataType* _tmp4_;
235 		ValaDataType* _tmp5_;
236 		_tmp4_ = vala_method_get_base_interface_type (m);
237 		_tmp5_ = _tmp4_;
238 		_tmp3_ = _tmp5_ != NULL;
239 	} else {
240 		_tmp3_ = FALSE;
241 	}
242 	if (_tmp3_) {
243 		gboolean _tmp6_ = FALSE;
244 		gboolean _tmp7_;
245 		gboolean _tmp8_;
246 		_tmp7_ = vala_method_get_is_abstract (m);
247 		_tmp8_ = _tmp7_;
248 		if (_tmp8_) {
249 			_tmp6_ = TRUE;
250 		} else {
251 			gboolean _tmp9_;
252 			gboolean _tmp10_;
253 			_tmp9_ = vala_method_get_is_virtual (m);
254 			_tmp10_ = _tmp9_;
255 			_tmp6_ = _tmp10_;
256 		}
257 		_tmp2_ = !_tmp6_;
258 	} else {
259 		_tmp2_ = FALSE;
260 	}
261 	if (_tmp2_) {
262 		ValaScope* _tmp11_;
263 		ValaScope* _tmp12_;
264 		_tmp11_ = vala_symbol_get_scope ((ValaSymbol*) self);
265 		_tmp12_ = _tmp11_;
266 		vala_scope_add (_tmp12_, NULL, (ValaSymbol*) m);
267 	} else {
268 		ValaScope* _tmp13_;
269 		ValaScope* _tmp14_;
270 		const gchar* _tmp15_;
271 		const gchar* _tmp16_;
272 		_tmp13_ = vala_symbol_get_scope ((ValaSymbol*) self);
273 		_tmp14_ = _tmp13_;
274 		_tmp15_ = vala_symbol_get_name ((ValaSymbol*) m);
275 		_tmp16_ = _tmp15_;
276 		vala_scope_add (_tmp14_, _tmp16_, (ValaSymbol*) m);
277 	}
278 }
279 
280 /**
281  * Adds the specified property as a member to this object-symbol.
282  *
283  * @param prop a property
284  */
285 static void
vala_object_type_symbol_real_add_property(ValaSymbol * base,ValaProperty * prop)286 vala_object_type_symbol_real_add_property (ValaSymbol* base,
287                                            ValaProperty* prop)
288 {
289 	ValaObjectTypeSymbol * self;
290 	ValaList* _tmp0_;
291 	ValaList* _tmp1_;
292 	ValaScope* _tmp2_;
293 	ValaScope* _tmp3_;
294 	const gchar* _tmp4_;
295 	const gchar* _tmp5_;
296 	self = (ValaObjectTypeSymbol*) base;
297 	g_return_if_fail (prop != NULL);
298 	_tmp0_ = self->priv->properties;
299 	vala_collection_add ((ValaCollection*) _tmp0_, prop);
300 	_tmp1_ = self->priv->members;
301 	vala_collection_add ((ValaCollection*) _tmp1_, (ValaSymbol*) prop);
302 	_tmp2_ = vala_symbol_get_scope ((ValaSymbol*) self);
303 	_tmp3_ = _tmp2_;
304 	_tmp4_ = vala_symbol_get_name ((ValaSymbol*) prop);
305 	_tmp5_ = _tmp4_;
306 	vala_scope_add (_tmp3_, _tmp5_, (ValaSymbol*) prop);
307 }
308 
309 /**
310  * Adds the specified signal as a member to this object-symbol.
311  *
312  * @param sig a signal
313  */
314 static void
vala_object_type_symbol_real_add_signal(ValaSymbol * base,ValaSignal * sig)315 vala_object_type_symbol_real_add_signal (ValaSymbol* base,
316                                          ValaSignal* sig)
317 {
318 	ValaObjectTypeSymbol * self;
319 	ValaList* _tmp0_;
320 	ValaList* _tmp1_;
321 	ValaScope* _tmp2_;
322 	ValaScope* _tmp3_;
323 	const gchar* _tmp4_;
324 	const gchar* _tmp5_;
325 	self = (ValaObjectTypeSymbol*) base;
326 	g_return_if_fail (sig != NULL);
327 	_tmp0_ = self->priv->signals;
328 	vala_collection_add ((ValaCollection*) _tmp0_, sig);
329 	_tmp1_ = self->priv->members;
330 	vala_collection_add ((ValaCollection*) _tmp1_, (ValaSymbol*) sig);
331 	_tmp2_ = vala_symbol_get_scope ((ValaSymbol*) self);
332 	_tmp3_ = _tmp2_;
333 	_tmp4_ = vala_symbol_get_name ((ValaSymbol*) sig);
334 	_tmp5_ = _tmp4_;
335 	vala_scope_add (_tmp3_, _tmp5_, (ValaSymbol*) sig);
336 }
337 
338 /**
339  * Returns the list of classes.
340  *
341  * @return list of classes
342  */
343 ValaList*
vala_object_type_symbol_get_classes(ValaObjectTypeSymbol * self)344 vala_object_type_symbol_get_classes (ValaObjectTypeSymbol* self)
345 {
346 	ValaList* _tmp0_;
347 	ValaList* result = NULL;
348 	g_return_val_if_fail (self != NULL, NULL);
349 	_tmp0_ = self->priv->classes;
350 	result = _tmp0_;
351 	return result;
352 }
353 
354 /**
355  * Returns the list of interfaces.
356  *
357  * @return list of interfaces
358  */
359 ValaList*
vala_object_type_symbol_get_interfaces(ValaObjectTypeSymbol * self)360 vala_object_type_symbol_get_interfaces (ValaObjectTypeSymbol* self)
361 {
362 	ValaList* _tmp0_;
363 	ValaList* result = NULL;
364 	g_return_val_if_fail (self != NULL, NULL);
365 	_tmp0_ = self->priv->interfaces;
366 	result = _tmp0_;
367 	return result;
368 }
369 
370 /**
371  * Returns the list of structs.
372  *
373  * @return list of structs
374  */
375 ValaList*
vala_object_type_symbol_get_structs(ValaObjectTypeSymbol * self)376 vala_object_type_symbol_get_structs (ValaObjectTypeSymbol* self)
377 {
378 	ValaList* _tmp0_;
379 	ValaList* result = NULL;
380 	g_return_val_if_fail (self != NULL, NULL);
381 	_tmp0_ = self->priv->structs;
382 	result = _tmp0_;
383 	return result;
384 }
385 
386 /**
387  * Returns the list of enums.
388  *
389  * @return list of enums
390  */
391 ValaList*
vala_object_type_symbol_get_enums(ValaObjectTypeSymbol * self)392 vala_object_type_symbol_get_enums (ValaObjectTypeSymbol* self)
393 {
394 	ValaList* _tmp0_;
395 	ValaList* result = NULL;
396 	g_return_val_if_fail (self != NULL, NULL);
397 	_tmp0_ = self->priv->enums;
398 	result = _tmp0_;
399 	return result;
400 }
401 
402 /**
403  * Returns the list of delegates.
404  *
405  * @return list of delegates
406  */
407 ValaList*
vala_object_type_symbol_get_delegates(ValaObjectTypeSymbol * self)408 vala_object_type_symbol_get_delegates (ValaObjectTypeSymbol* self)
409 {
410 	ValaList* _tmp0_;
411 	ValaList* result = NULL;
412 	g_return_val_if_fail (self != NULL, NULL);
413 	_tmp0_ = self->priv->delegates;
414 	result = _tmp0_;
415 	return result;
416 }
417 
418 /**
419  * Adds the specified class as an inner class.
420  *
421  * @param cl a class
422  */
423 static void
vala_object_type_symbol_real_add_class(ValaSymbol * base,ValaClass * cl)424 vala_object_type_symbol_real_add_class (ValaSymbol* base,
425                                         ValaClass* cl)
426 {
427 	ValaObjectTypeSymbol * self;
428 	ValaList* _tmp0_;
429 	ValaScope* _tmp1_;
430 	ValaScope* _tmp2_;
431 	const gchar* _tmp3_;
432 	const gchar* _tmp4_;
433 	self = (ValaObjectTypeSymbol*) base;
434 	g_return_if_fail (cl != NULL);
435 	_tmp0_ = self->priv->classes;
436 	vala_collection_add ((ValaCollection*) _tmp0_, cl);
437 	_tmp1_ = vala_symbol_get_scope ((ValaSymbol*) self);
438 	_tmp2_ = _tmp1_;
439 	_tmp3_ = vala_symbol_get_name ((ValaSymbol*) cl);
440 	_tmp4_ = _tmp3_;
441 	vala_scope_add (_tmp2_, _tmp4_, (ValaSymbol*) cl);
442 }
443 
444 /**
445  * Adds the specified interface as an inner interface.
446  *
447  * @param iface an interface
448  */
449 static void
vala_object_type_symbol_real_add_interface(ValaSymbol * base,ValaInterface * iface)450 vala_object_type_symbol_real_add_interface (ValaSymbol* base,
451                                             ValaInterface* iface)
452 {
453 	ValaObjectTypeSymbol * self;
454 	ValaList* _tmp0_;
455 	ValaScope* _tmp1_;
456 	ValaScope* _tmp2_;
457 	const gchar* _tmp3_;
458 	const gchar* _tmp4_;
459 	self = (ValaObjectTypeSymbol*) base;
460 	g_return_if_fail (iface != NULL);
461 	_tmp0_ = self->priv->interfaces;
462 	vala_collection_add ((ValaCollection*) _tmp0_, iface);
463 	_tmp1_ = vala_symbol_get_scope ((ValaSymbol*) self);
464 	_tmp2_ = _tmp1_;
465 	_tmp3_ = vala_symbol_get_name ((ValaSymbol*) iface);
466 	_tmp4_ = _tmp3_;
467 	vala_scope_add (_tmp2_, _tmp4_, (ValaSymbol*) iface);
468 }
469 
470 /**
471  * Adds the specified struct as an inner struct.
472  *
473  * @param st a struct
474  */
475 static void
vala_object_type_symbol_real_add_struct(ValaSymbol * base,ValaStruct * st)476 vala_object_type_symbol_real_add_struct (ValaSymbol* base,
477                                          ValaStruct* st)
478 {
479 	ValaObjectTypeSymbol * self;
480 	ValaList* _tmp0_;
481 	ValaScope* _tmp1_;
482 	ValaScope* _tmp2_;
483 	const gchar* _tmp3_;
484 	const gchar* _tmp4_;
485 	self = (ValaObjectTypeSymbol*) base;
486 	g_return_if_fail (st != NULL);
487 	_tmp0_ = self->priv->structs;
488 	vala_collection_add ((ValaCollection*) _tmp0_, st);
489 	_tmp1_ = vala_symbol_get_scope ((ValaSymbol*) self);
490 	_tmp2_ = _tmp1_;
491 	_tmp3_ = vala_symbol_get_name ((ValaSymbol*) st);
492 	_tmp4_ = _tmp3_;
493 	vala_scope_add (_tmp2_, _tmp4_, (ValaSymbol*) st);
494 }
495 
496 /**
497  * Adds the specified enum as an inner enum.
498  *
499  * @param en an enum
500  */
501 static void
vala_object_type_symbol_real_add_enum(ValaSymbol * base,ValaEnum * en)502 vala_object_type_symbol_real_add_enum (ValaSymbol* base,
503                                        ValaEnum* en)
504 {
505 	ValaObjectTypeSymbol * self;
506 	ValaList* _tmp0_;
507 	ValaScope* _tmp1_;
508 	ValaScope* _tmp2_;
509 	const gchar* _tmp3_;
510 	const gchar* _tmp4_;
511 	self = (ValaObjectTypeSymbol*) base;
512 	g_return_if_fail (en != NULL);
513 	_tmp0_ = self->priv->enums;
514 	vala_collection_add ((ValaCollection*) _tmp0_, en);
515 	_tmp1_ = vala_symbol_get_scope ((ValaSymbol*) self);
516 	_tmp2_ = _tmp1_;
517 	_tmp3_ = vala_symbol_get_name ((ValaSymbol*) en);
518 	_tmp4_ = _tmp3_;
519 	vala_scope_add (_tmp2_, _tmp4_, (ValaSymbol*) en);
520 }
521 
522 /**
523  * Adds the specified delegate as an inner delegate.
524  *
525  * @param d a delegate
526  */
527 static void
vala_object_type_symbol_real_add_delegate(ValaSymbol * base,ValaDelegate * d)528 vala_object_type_symbol_real_add_delegate (ValaSymbol* base,
529                                            ValaDelegate* d)
530 {
531 	ValaObjectTypeSymbol * self;
532 	ValaList* _tmp0_;
533 	ValaScope* _tmp1_;
534 	ValaScope* _tmp2_;
535 	const gchar* _tmp3_;
536 	const gchar* _tmp4_;
537 	self = (ValaObjectTypeSymbol*) base;
538 	g_return_if_fail (d != NULL);
539 	_tmp0_ = self->priv->delegates;
540 	vala_collection_add ((ValaCollection*) _tmp0_, d);
541 	_tmp1_ = vala_symbol_get_scope ((ValaSymbol*) self);
542 	_tmp2_ = _tmp1_;
543 	_tmp3_ = vala_symbol_get_name ((ValaSymbol*) d);
544 	_tmp4_ = _tmp3_;
545 	vala_scope_add (_tmp2_, _tmp4_, (ValaSymbol*) d);
546 }
547 
548 /**
549  * Adds the specified constant as a member to this interface.
550  *
551  * @param c a constant
552  */
553 static void
vala_object_type_symbol_real_add_constant(ValaSymbol * base,ValaConstant * c)554 vala_object_type_symbol_real_add_constant (ValaSymbol* base,
555                                            ValaConstant* c)
556 {
557 	ValaObjectTypeSymbol * self;
558 	ValaList* _tmp0_;
559 	ValaScope* _tmp1_;
560 	ValaScope* _tmp2_;
561 	const gchar* _tmp3_;
562 	const gchar* _tmp4_;
563 	self = (ValaObjectTypeSymbol*) base;
564 	g_return_if_fail (c != NULL);
565 	_tmp0_ = self->priv->constants;
566 	vala_collection_add ((ValaCollection*) _tmp0_, c);
567 	_tmp1_ = vala_symbol_get_scope ((ValaSymbol*) self);
568 	_tmp2_ = _tmp1_;
569 	_tmp3_ = vala_symbol_get_name ((ValaSymbol*) c);
570 	_tmp4_ = _tmp3_;
571 	vala_scope_add (_tmp2_, _tmp4_, (ValaSymbol*) c);
572 }
573 
574 /**
575  * Returns the list of constants.
576  *
577  * @return list of constants
578  */
579 ValaList*
vala_object_type_symbol_get_constants(ValaObjectTypeSymbol * self)580 vala_object_type_symbol_get_constants (ValaObjectTypeSymbol* self)
581 {
582 	ValaList* _tmp0_;
583 	ValaList* result = NULL;
584 	g_return_val_if_fail (self != NULL, NULL);
585 	_tmp0_ = self->priv->constants;
586 	result = _tmp0_;
587 	return result;
588 }
589 
590 /**
591  * Appends the specified parameter to the list of type parameters.
592  *
593  * @param p a type parameter
594  */
595 void
vala_object_type_symbol_add_type_parameter(ValaObjectTypeSymbol * self,ValaTypeParameter * p)596 vala_object_type_symbol_add_type_parameter (ValaObjectTypeSymbol* self,
597                                             ValaTypeParameter* p)
598 {
599 	ValaList* _tmp0_;
600 	ValaScope* _tmp1_;
601 	ValaScope* _tmp2_;
602 	const gchar* _tmp3_;
603 	const gchar* _tmp4_;
604 	g_return_if_fail (self != NULL);
605 	g_return_if_fail (p != NULL);
606 	_tmp0_ = self->priv->type_parameters;
607 	vala_collection_add ((ValaCollection*) _tmp0_, p);
608 	_tmp1_ = vala_symbol_get_scope ((ValaSymbol*) self);
609 	_tmp2_ = _tmp1_;
610 	_tmp3_ = vala_symbol_get_name ((ValaSymbol*) p);
611 	_tmp4_ = _tmp3_;
612 	vala_scope_add (_tmp2_, _tmp4_, (ValaSymbol*) p);
613 }
614 
615 /**
616  * Returns the type parameter list.
617  *
618  * @return list of type parameters
619  */
620 ValaList*
vala_object_type_symbol_get_type_parameters(ValaObjectTypeSymbol * self)621 vala_object_type_symbol_get_type_parameters (ValaObjectTypeSymbol* self)
622 {
623 	ValaList* _tmp0_;
624 	ValaList* result = NULL;
625 	g_return_val_if_fail (self != NULL, NULL);
626 	_tmp0_ = self->priv->type_parameters;
627 	result = _tmp0_;
628 	return result;
629 }
630 
631 gboolean
vala_object_type_symbol_has_type_parameters(ValaObjectTypeSymbol * self)632 vala_object_type_symbol_has_type_parameters (ValaObjectTypeSymbol* self)
633 {
634 	gboolean _tmp0_ = FALSE;
635 	ValaList* _tmp1_;
636 	gboolean result = FALSE;
637 	g_return_val_if_fail (self != NULL, FALSE);
638 	_tmp1_ = self->priv->type_parameters;
639 	if (_tmp1_ != NULL) {
640 		ValaList* _tmp2_;
641 		gint _tmp3_;
642 		gint _tmp4_;
643 		_tmp2_ = self->priv->type_parameters;
644 		_tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
645 		_tmp4_ = _tmp3_;
646 		_tmp0_ = _tmp4_ > 0;
647 	} else {
648 		_tmp0_ = FALSE;
649 	}
650 	result = _tmp0_;
651 	return result;
652 }
653 
654 static gpointer
_vala_iterable_ref0(gpointer self)655 _vala_iterable_ref0 (gpointer self)
656 {
657 	return self ? vala_iterable_ref (self) : NULL;
658 }
659 
660 static gint
vala_object_type_symbol_real_get_type_parameter_index(ValaTypeSymbol * base,const gchar * name)661 vala_object_type_symbol_real_get_type_parameter_index (ValaTypeSymbol* base,
662                                                        const gchar* name)
663 {
664 	ValaObjectTypeSymbol * self;
665 	gint i = 0;
666 	gint result = 0;
667 	self = (ValaObjectTypeSymbol*) base;
668 	g_return_val_if_fail (name != NULL, 0);
669 	i = 0;
670 	{
671 		ValaList* _parameter_list = NULL;
672 		ValaList* _tmp0_;
673 		ValaList* _tmp1_;
674 		gint _parameter_size = 0;
675 		ValaList* _tmp2_;
676 		gint _tmp3_;
677 		gint _tmp4_;
678 		gint _parameter_index = 0;
679 		_tmp0_ = self->priv->type_parameters;
680 		_tmp1_ = _vala_iterable_ref0 (_tmp0_);
681 		_parameter_list = _tmp1_;
682 		_tmp2_ = _parameter_list;
683 		_tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
684 		_tmp4_ = _tmp3_;
685 		_parameter_size = _tmp4_;
686 		_parameter_index = -1;
687 		while (TRUE) {
688 			gint _tmp5_;
689 			gint _tmp6_;
690 			ValaTypeParameter* parameter = NULL;
691 			ValaList* _tmp7_;
692 			gpointer _tmp8_;
693 			ValaTypeParameter* _tmp9_;
694 			const gchar* _tmp10_;
695 			const gchar* _tmp11_;
696 			gint _tmp12_;
697 			_parameter_index = _parameter_index + 1;
698 			_tmp5_ = _parameter_index;
699 			_tmp6_ = _parameter_size;
700 			if (!(_tmp5_ < _tmp6_)) {
701 				break;
702 			}
703 			_tmp7_ = _parameter_list;
704 			_tmp8_ = vala_list_get (_tmp7_, _parameter_index);
705 			parameter = (ValaTypeParameter*) _tmp8_;
706 			_tmp9_ = parameter;
707 			_tmp10_ = vala_symbol_get_name ((ValaSymbol*) _tmp9_);
708 			_tmp11_ = _tmp10_;
709 			if (g_strcmp0 (_tmp11_, name) == 0) {
710 				result = i;
711 				_vala_code_node_unref0 (parameter);
712 				_vala_iterable_unref0 (_parameter_list);
713 				return result;
714 			}
715 			_tmp12_ = i;
716 			i = _tmp12_ + 1;
717 			_vala_code_node_unref0 (parameter);
718 		}
719 		_vala_iterable_unref0 (_parameter_list);
720 	}
721 	result = -1;
722 	return result;
723 }
724 
725 /**
726  * Adds the specified method as a hidden member to this class,
727  * primarily used for default signal handlers.
728  *
729  * The hidden methods are not part of the `methods` collection.
730  *
731  * There may also be other use cases, eg, convert array.resize() to
732  * this type of method?
733  *
734  * @param m a method
735  */
736 void
vala_object_type_symbol_add_hidden_method(ValaObjectTypeSymbol * self,ValaMethod * m)737 vala_object_type_symbol_add_hidden_method (ValaObjectTypeSymbol* self,
738                                            ValaMethod* m)
739 {
740 	ValaMemberBinding _tmp0_;
741 	ValaMemberBinding _tmp1_;
742 	gboolean _tmp24_ = FALSE;
743 	ValaDataType* _tmp25_;
744 	ValaDataType* _tmp26_;
745 	ValaScope* _tmp48_;
746 	ValaScope* _tmp49_;
747 	g_return_if_fail (self != NULL);
748 	g_return_if_fail (m != NULL);
749 	_tmp0_ = vala_method_get_binding (m);
750 	_tmp1_ = _tmp0_;
751 	if (_tmp1_ == VALA_MEMBER_BINDING_INSTANCE) {
752 		ValaParameter* _tmp2_;
753 		ValaParameter* _tmp3_;
754 		ValaDataType* _tmp10_;
755 		ValaDataType* _tmp11_;
756 		ValaSourceReference* _tmp12_;
757 		ValaSourceReference* _tmp13_;
758 		ValaParameter* _tmp14_;
759 		ValaParameter* _tmp15_;
760 		ValaScope* _tmp16_;
761 		ValaScope* _tmp17_;
762 		ValaParameter* _tmp18_;
763 		ValaParameter* _tmp19_;
764 		const gchar* _tmp20_;
765 		const gchar* _tmp21_;
766 		ValaParameter* _tmp22_;
767 		ValaParameter* _tmp23_;
768 		_tmp2_ = vala_method_get_this_parameter (m);
769 		_tmp3_ = _tmp2_;
770 		if (_tmp3_ != NULL) {
771 			ValaScope* _tmp4_;
772 			ValaScope* _tmp5_;
773 			ValaParameter* _tmp6_;
774 			ValaParameter* _tmp7_;
775 			const gchar* _tmp8_;
776 			const gchar* _tmp9_;
777 			_tmp4_ = vala_symbol_get_scope ((ValaSymbol*) m);
778 			_tmp5_ = _tmp4_;
779 			_tmp6_ = vala_method_get_this_parameter (m);
780 			_tmp7_ = _tmp6_;
781 			_tmp8_ = vala_symbol_get_name ((ValaSymbol*) _tmp7_);
782 			_tmp9_ = _tmp8_;
783 			vala_scope_remove (_tmp5_, _tmp9_);
784 		}
785 		_tmp10_ = vala_semantic_analyzer_get_this_type ((ValaSymbol*) m, (ValaTypeSymbol*) self);
786 		_tmp11_ = _tmp10_;
787 		_tmp12_ = vala_code_node_get_source_reference ((ValaCodeNode*) m);
788 		_tmp13_ = _tmp12_;
789 		_tmp14_ = vala_parameter_new ("this", _tmp11_, _tmp13_);
790 		_tmp15_ = _tmp14_;
791 		vala_method_set_this_parameter (m, _tmp15_);
792 		_vala_code_node_unref0 (_tmp15_);
793 		_vala_code_node_unref0 (_tmp11_);
794 		_tmp16_ = vala_symbol_get_scope ((ValaSymbol*) m);
795 		_tmp17_ = _tmp16_;
796 		_tmp18_ = vala_method_get_this_parameter (m);
797 		_tmp19_ = _tmp18_;
798 		_tmp20_ = vala_symbol_get_name ((ValaSymbol*) _tmp19_);
799 		_tmp21_ = _tmp20_;
800 		_tmp22_ = vala_method_get_this_parameter (m);
801 		_tmp23_ = _tmp22_;
802 		vala_scope_add (_tmp17_, _tmp21_, (ValaSymbol*) _tmp23_);
803 	}
804 	_tmp25_ = vala_callable_get_return_type ((ValaCallable*) m);
805 	_tmp26_ = _tmp25_;
806 	if (!VALA_IS_VOID_TYPE (_tmp26_)) {
807 		ValaList* _tmp27_;
808 		gint _tmp28_;
809 		gint _tmp29_;
810 		_tmp27_ = vala_method_get_postconditions (m);
811 		_tmp28_ = vala_collection_get_size ((ValaCollection*) _tmp27_);
812 		_tmp29_ = _tmp28_;
813 		_tmp24_ = _tmp29_ > 0;
814 	} else {
815 		_tmp24_ = FALSE;
816 	}
817 	if (_tmp24_) {
818 		ValaLocalVariable* _tmp30_;
819 		ValaLocalVariable* _tmp31_;
820 		ValaDataType* _tmp38_;
821 		ValaDataType* _tmp39_;
822 		ValaDataType* _tmp40_;
823 		ValaDataType* _tmp41_;
824 		ValaSourceReference* _tmp42_;
825 		ValaSourceReference* _tmp43_;
826 		ValaLocalVariable* _tmp44_;
827 		ValaLocalVariable* _tmp45_;
828 		ValaLocalVariable* _tmp46_;
829 		ValaLocalVariable* _tmp47_;
830 		_tmp30_ = vala_subroutine_get_result_var ((ValaSubroutine*) m);
831 		_tmp31_ = _tmp30_;
832 		if (_tmp31_ != NULL) {
833 			ValaScope* _tmp32_;
834 			ValaScope* _tmp33_;
835 			ValaLocalVariable* _tmp34_;
836 			ValaLocalVariable* _tmp35_;
837 			const gchar* _tmp36_;
838 			const gchar* _tmp37_;
839 			_tmp32_ = vala_symbol_get_scope ((ValaSymbol*) m);
840 			_tmp33_ = _tmp32_;
841 			_tmp34_ = vala_subroutine_get_result_var ((ValaSubroutine*) m);
842 			_tmp35_ = _tmp34_;
843 			_tmp36_ = vala_symbol_get_name ((ValaSymbol*) _tmp35_);
844 			_tmp37_ = _tmp36_;
845 			vala_scope_remove (_tmp33_, _tmp37_);
846 		}
847 		_tmp38_ = vala_callable_get_return_type ((ValaCallable*) m);
848 		_tmp39_ = _tmp38_;
849 		_tmp40_ = vala_data_type_copy (_tmp39_);
850 		_tmp41_ = _tmp40_;
851 		_tmp42_ = vala_code_node_get_source_reference ((ValaCodeNode*) m);
852 		_tmp43_ = _tmp42_;
853 		_tmp44_ = vala_local_variable_new (_tmp41_, "result", NULL, _tmp43_);
854 		_tmp45_ = _tmp44_;
855 		vala_subroutine_set_result_var ((ValaSubroutine*) m, _tmp45_);
856 		_vala_code_node_unref0 (_tmp45_);
857 		_vala_code_node_unref0 (_tmp41_);
858 		_tmp46_ = vala_subroutine_get_result_var ((ValaSubroutine*) m);
859 		_tmp47_ = _tmp46_;
860 		vala_local_variable_set_is_result (_tmp47_, TRUE);
861 	}
862 	_tmp48_ = vala_symbol_get_scope ((ValaSymbol*) self);
863 	_tmp49_ = _tmp48_;
864 	vala_scope_add (_tmp49_, NULL, (ValaSymbol*) m);
865 }
866 
867 static void
vala_object_type_symbol_real_accept_children(ValaCodeNode * base,ValaCodeVisitor * visitor)868 vala_object_type_symbol_real_accept_children (ValaCodeNode* base,
869                                               ValaCodeVisitor* visitor)
870 {
871 	ValaObjectTypeSymbol * self;
872 	ValaCodeContext* _tmp30_;
873 	ValaCodeContext* _tmp31_;
874 	gboolean _tmp32_;
875 	gboolean _tmp33_;
876 	gboolean _tmp34_;
877 	self = (ValaObjectTypeSymbol*) base;
878 	g_return_if_fail (visitor != NULL);
879 	{
880 		ValaList* _p_list = NULL;
881 		ValaList* _tmp0_;
882 		ValaList* _tmp1_;
883 		gint _p_size = 0;
884 		ValaList* _tmp2_;
885 		gint _tmp3_;
886 		gint _tmp4_;
887 		gint _p_index = 0;
888 		_tmp0_ = vala_object_type_symbol_get_type_parameters (self);
889 		_tmp1_ = _vala_iterable_ref0 (_tmp0_);
890 		_p_list = _tmp1_;
891 		_tmp2_ = _p_list;
892 		_tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
893 		_tmp4_ = _tmp3_;
894 		_p_size = _tmp4_;
895 		_p_index = -1;
896 		while (TRUE) {
897 			gint _tmp5_;
898 			gint _tmp6_;
899 			ValaTypeParameter* p = NULL;
900 			ValaList* _tmp7_;
901 			gpointer _tmp8_;
902 			ValaTypeParameter* _tmp9_;
903 			_p_index = _p_index + 1;
904 			_tmp5_ = _p_index;
905 			_tmp6_ = _p_size;
906 			if (!(_tmp5_ < _tmp6_)) {
907 				break;
908 			}
909 			_tmp7_ = _p_list;
910 			_tmp8_ = vala_list_get (_tmp7_, _p_index);
911 			p = (ValaTypeParameter*) _tmp8_;
912 			_tmp9_ = p;
913 			vala_code_node_accept ((ValaCodeNode*) _tmp9_, visitor);
914 			_vala_code_node_unref0 (p);
915 		}
916 		_vala_iterable_unref0 (_p_list);
917 	}
918 	{
919 		ValaList* _en_list = NULL;
920 		ValaList* _tmp10_;
921 		ValaList* _tmp11_;
922 		gint _en_size = 0;
923 		ValaList* _tmp12_;
924 		gint _tmp13_;
925 		gint _tmp14_;
926 		gint _en_index = 0;
927 		_tmp10_ = vala_object_type_symbol_get_enums (self);
928 		_tmp11_ = _vala_iterable_ref0 (_tmp10_);
929 		_en_list = _tmp11_;
930 		_tmp12_ = _en_list;
931 		_tmp13_ = vala_collection_get_size ((ValaCollection*) _tmp12_);
932 		_tmp14_ = _tmp13_;
933 		_en_size = _tmp14_;
934 		_en_index = -1;
935 		while (TRUE) {
936 			gint _tmp15_;
937 			gint _tmp16_;
938 			ValaEnum* en = NULL;
939 			ValaList* _tmp17_;
940 			gpointer _tmp18_;
941 			ValaEnum* _tmp19_;
942 			_en_index = _en_index + 1;
943 			_tmp15_ = _en_index;
944 			_tmp16_ = _en_size;
945 			if (!(_tmp15_ < _tmp16_)) {
946 				break;
947 			}
948 			_tmp17_ = _en_list;
949 			_tmp18_ = vala_list_get (_tmp17_, _en_index);
950 			en = (ValaEnum*) _tmp18_;
951 			_tmp19_ = en;
952 			vala_code_node_accept ((ValaCodeNode*) _tmp19_, visitor);
953 			_vala_code_node_unref0 (en);
954 		}
955 		_vala_iterable_unref0 (_en_list);
956 	}
957 	{
958 		ValaList* _c_list = NULL;
959 		ValaList* _tmp20_;
960 		ValaList* _tmp21_;
961 		gint _c_size = 0;
962 		ValaList* _tmp22_;
963 		gint _tmp23_;
964 		gint _tmp24_;
965 		gint _c_index = 0;
966 		_tmp20_ = vala_object_type_symbol_get_constants (self);
967 		_tmp21_ = _vala_iterable_ref0 (_tmp20_);
968 		_c_list = _tmp21_;
969 		_tmp22_ = _c_list;
970 		_tmp23_ = vala_collection_get_size ((ValaCollection*) _tmp22_);
971 		_tmp24_ = _tmp23_;
972 		_c_size = _tmp24_;
973 		_c_index = -1;
974 		while (TRUE) {
975 			gint _tmp25_;
976 			gint _tmp26_;
977 			ValaConstant* c = NULL;
978 			ValaList* _tmp27_;
979 			gpointer _tmp28_;
980 			ValaConstant* _tmp29_;
981 			_c_index = _c_index + 1;
982 			_tmp25_ = _c_index;
983 			_tmp26_ = _c_size;
984 			if (!(_tmp25_ < _tmp26_)) {
985 				break;
986 			}
987 			_tmp27_ = _c_list;
988 			_tmp28_ = vala_list_get (_tmp27_, _c_index);
989 			c = (ValaConstant*) _tmp28_;
990 			_tmp29_ = c;
991 			vala_code_node_accept ((ValaCodeNode*) _tmp29_, visitor);
992 			_vala_code_node_unref0 (c);
993 		}
994 		_vala_iterable_unref0 (_c_list);
995 	}
996 	_tmp30_ = vala_code_context_get ();
997 	_tmp31_ = _tmp30_;
998 	_tmp32_ = vala_code_context_get_abi_stability (_tmp31_);
999 	_tmp33_ = _tmp32_;
1000 	_tmp34_ = _tmp33_;
1001 	_vala_code_context_unref0 (_tmp31_);
1002 	if (_tmp34_) {
1003 		{
1004 			ValaList* _s_list = NULL;
1005 			ValaList* _tmp35_;
1006 			ValaList* _tmp36_;
1007 			gint _s_size = 0;
1008 			ValaList* _tmp37_;
1009 			gint _tmp38_;
1010 			gint _tmp39_;
1011 			gint _s_index = 0;
1012 			_tmp35_ = vala_object_type_symbol_get_members (self);
1013 			_tmp36_ = _vala_iterable_ref0 (_tmp35_);
1014 			_s_list = _tmp36_;
1015 			_tmp37_ = _s_list;
1016 			_tmp38_ = vala_collection_get_size ((ValaCollection*) _tmp37_);
1017 			_tmp39_ = _tmp38_;
1018 			_s_size = _tmp39_;
1019 			_s_index = -1;
1020 			while (TRUE) {
1021 				gint _tmp40_;
1022 				gint _tmp41_;
1023 				ValaSymbol* s = NULL;
1024 				ValaList* _tmp42_;
1025 				gpointer _tmp43_;
1026 				ValaSymbol* _tmp44_;
1027 				_s_index = _s_index + 1;
1028 				_tmp40_ = _s_index;
1029 				_tmp41_ = _s_size;
1030 				if (!(_tmp40_ < _tmp41_)) {
1031 					break;
1032 				}
1033 				_tmp42_ = _s_list;
1034 				_tmp43_ = vala_list_get (_tmp42_, _s_index);
1035 				s = (ValaSymbol*) _tmp43_;
1036 				_tmp44_ = s;
1037 				vala_code_node_accept ((ValaCodeNode*) _tmp44_, visitor);
1038 				_vala_code_node_unref0 (s);
1039 			}
1040 			_vala_iterable_unref0 (_s_list);
1041 		}
1042 	} else {
1043 		{
1044 			ValaList* _f_list = NULL;
1045 			ValaList* _tmp45_;
1046 			ValaList* _tmp46_;
1047 			gint _f_size = 0;
1048 			ValaList* _tmp47_;
1049 			gint _tmp48_;
1050 			gint _tmp49_;
1051 			gint _f_index = 0;
1052 			_tmp45_ = vala_object_type_symbol_get_fields (self);
1053 			_tmp46_ = _vala_iterable_ref0 (_tmp45_);
1054 			_f_list = _tmp46_;
1055 			_tmp47_ = _f_list;
1056 			_tmp48_ = vala_collection_get_size ((ValaCollection*) _tmp47_);
1057 			_tmp49_ = _tmp48_;
1058 			_f_size = _tmp49_;
1059 			_f_index = -1;
1060 			while (TRUE) {
1061 				gint _tmp50_;
1062 				gint _tmp51_;
1063 				ValaField* f = NULL;
1064 				ValaList* _tmp52_;
1065 				gpointer _tmp53_;
1066 				ValaField* _tmp54_;
1067 				_f_index = _f_index + 1;
1068 				_tmp50_ = _f_index;
1069 				_tmp51_ = _f_size;
1070 				if (!(_tmp50_ < _tmp51_)) {
1071 					break;
1072 				}
1073 				_tmp52_ = _f_list;
1074 				_tmp53_ = vala_list_get (_tmp52_, _f_index);
1075 				f = (ValaField*) _tmp53_;
1076 				_tmp54_ = f;
1077 				vala_code_node_accept ((ValaCodeNode*) _tmp54_, visitor);
1078 				_vala_code_node_unref0 (f);
1079 			}
1080 			_vala_iterable_unref0 (_f_list);
1081 		}
1082 		{
1083 			ValaList* _m_list = NULL;
1084 			ValaList* _tmp55_;
1085 			ValaList* _tmp56_;
1086 			gint _m_size = 0;
1087 			ValaList* _tmp57_;
1088 			gint _tmp58_;
1089 			gint _tmp59_;
1090 			gint _m_index = 0;
1091 			_tmp55_ = vala_object_type_symbol_get_methods (self);
1092 			_tmp56_ = _vala_iterable_ref0 (_tmp55_);
1093 			_m_list = _tmp56_;
1094 			_tmp57_ = _m_list;
1095 			_tmp58_ = vala_collection_get_size ((ValaCollection*) _tmp57_);
1096 			_tmp59_ = _tmp58_;
1097 			_m_size = _tmp59_;
1098 			_m_index = -1;
1099 			while (TRUE) {
1100 				gint _tmp60_;
1101 				gint _tmp61_;
1102 				ValaMethod* m = NULL;
1103 				ValaList* _tmp62_;
1104 				gpointer _tmp63_;
1105 				ValaMethod* _tmp64_;
1106 				_m_index = _m_index + 1;
1107 				_tmp60_ = _m_index;
1108 				_tmp61_ = _m_size;
1109 				if (!(_tmp60_ < _tmp61_)) {
1110 					break;
1111 				}
1112 				_tmp62_ = _m_list;
1113 				_tmp63_ = vala_list_get (_tmp62_, _m_index);
1114 				m = (ValaMethod*) _tmp63_;
1115 				_tmp64_ = m;
1116 				vala_code_node_accept ((ValaCodeNode*) _tmp64_, visitor);
1117 				_vala_code_node_unref0 (m);
1118 			}
1119 			_vala_iterable_unref0 (_m_list);
1120 		}
1121 		{
1122 			ValaList* _prop_list = NULL;
1123 			ValaList* _tmp65_;
1124 			ValaList* _tmp66_;
1125 			gint _prop_size = 0;
1126 			ValaList* _tmp67_;
1127 			gint _tmp68_;
1128 			gint _tmp69_;
1129 			gint _prop_index = 0;
1130 			_tmp65_ = vala_object_type_symbol_get_properties (self);
1131 			_tmp66_ = _vala_iterable_ref0 (_tmp65_);
1132 			_prop_list = _tmp66_;
1133 			_tmp67_ = _prop_list;
1134 			_tmp68_ = vala_collection_get_size ((ValaCollection*) _tmp67_);
1135 			_tmp69_ = _tmp68_;
1136 			_prop_size = _tmp69_;
1137 			_prop_index = -1;
1138 			while (TRUE) {
1139 				gint _tmp70_;
1140 				gint _tmp71_;
1141 				ValaProperty* prop = NULL;
1142 				ValaList* _tmp72_;
1143 				gpointer _tmp73_;
1144 				ValaProperty* _tmp74_;
1145 				_prop_index = _prop_index + 1;
1146 				_tmp70_ = _prop_index;
1147 				_tmp71_ = _prop_size;
1148 				if (!(_tmp70_ < _tmp71_)) {
1149 					break;
1150 				}
1151 				_tmp72_ = _prop_list;
1152 				_tmp73_ = vala_list_get (_tmp72_, _prop_index);
1153 				prop = (ValaProperty*) _tmp73_;
1154 				_tmp74_ = prop;
1155 				vala_code_node_accept ((ValaCodeNode*) _tmp74_, visitor);
1156 				_vala_code_node_unref0 (prop);
1157 			}
1158 			_vala_iterable_unref0 (_prop_list);
1159 		}
1160 		{
1161 			ValaList* _sig_list = NULL;
1162 			ValaList* _tmp75_;
1163 			ValaList* _tmp76_;
1164 			gint _sig_size = 0;
1165 			ValaList* _tmp77_;
1166 			gint _tmp78_;
1167 			gint _tmp79_;
1168 			gint _sig_index = 0;
1169 			_tmp75_ = vala_object_type_symbol_get_signals (self);
1170 			_tmp76_ = _vala_iterable_ref0 (_tmp75_);
1171 			_sig_list = _tmp76_;
1172 			_tmp77_ = _sig_list;
1173 			_tmp78_ = vala_collection_get_size ((ValaCollection*) _tmp77_);
1174 			_tmp79_ = _tmp78_;
1175 			_sig_size = _tmp79_;
1176 			_sig_index = -1;
1177 			while (TRUE) {
1178 				gint _tmp80_;
1179 				gint _tmp81_;
1180 				ValaSignal* sig = NULL;
1181 				ValaList* _tmp82_;
1182 				gpointer _tmp83_;
1183 				ValaSignal* _tmp84_;
1184 				_sig_index = _sig_index + 1;
1185 				_tmp80_ = _sig_index;
1186 				_tmp81_ = _sig_size;
1187 				if (!(_tmp80_ < _tmp81_)) {
1188 					break;
1189 				}
1190 				_tmp82_ = _sig_list;
1191 				_tmp83_ = vala_list_get (_tmp82_, _sig_index);
1192 				sig = (ValaSignal*) _tmp83_;
1193 				_tmp84_ = sig;
1194 				vala_code_node_accept ((ValaCodeNode*) _tmp84_, visitor);
1195 				_vala_code_node_unref0 (sig);
1196 			}
1197 			_vala_iterable_unref0 (_sig_list);
1198 		}
1199 	}
1200 	{
1201 		ValaList* _cl_list = NULL;
1202 		ValaList* _tmp85_;
1203 		ValaList* _tmp86_;
1204 		gint _cl_size = 0;
1205 		ValaList* _tmp87_;
1206 		gint _tmp88_;
1207 		gint _tmp89_;
1208 		gint _cl_index = 0;
1209 		_tmp85_ = vala_object_type_symbol_get_classes (self);
1210 		_tmp86_ = _vala_iterable_ref0 (_tmp85_);
1211 		_cl_list = _tmp86_;
1212 		_tmp87_ = _cl_list;
1213 		_tmp88_ = vala_collection_get_size ((ValaCollection*) _tmp87_);
1214 		_tmp89_ = _tmp88_;
1215 		_cl_size = _tmp89_;
1216 		_cl_index = -1;
1217 		while (TRUE) {
1218 			gint _tmp90_;
1219 			gint _tmp91_;
1220 			ValaClass* cl = NULL;
1221 			ValaList* _tmp92_;
1222 			gpointer _tmp93_;
1223 			ValaClass* _tmp94_;
1224 			_cl_index = _cl_index + 1;
1225 			_tmp90_ = _cl_index;
1226 			_tmp91_ = _cl_size;
1227 			if (!(_tmp90_ < _tmp91_)) {
1228 				break;
1229 			}
1230 			_tmp92_ = _cl_list;
1231 			_tmp93_ = vala_list_get (_tmp92_, _cl_index);
1232 			cl = (ValaClass*) _tmp93_;
1233 			_tmp94_ = cl;
1234 			vala_code_node_accept ((ValaCodeNode*) _tmp94_, visitor);
1235 			_vala_code_node_unref0 (cl);
1236 		}
1237 		_vala_iterable_unref0 (_cl_list);
1238 	}
1239 	{
1240 		ValaList* _iface_list = NULL;
1241 		ValaList* _tmp95_;
1242 		ValaList* _tmp96_;
1243 		gint _iface_size = 0;
1244 		ValaList* _tmp97_;
1245 		gint _tmp98_;
1246 		gint _tmp99_;
1247 		gint _iface_index = 0;
1248 		_tmp95_ = vala_object_type_symbol_get_interfaces (self);
1249 		_tmp96_ = _vala_iterable_ref0 (_tmp95_);
1250 		_iface_list = _tmp96_;
1251 		_tmp97_ = _iface_list;
1252 		_tmp98_ = vala_collection_get_size ((ValaCollection*) _tmp97_);
1253 		_tmp99_ = _tmp98_;
1254 		_iface_size = _tmp99_;
1255 		_iface_index = -1;
1256 		while (TRUE) {
1257 			gint _tmp100_;
1258 			gint _tmp101_;
1259 			ValaInterface* iface = NULL;
1260 			ValaList* _tmp102_;
1261 			gpointer _tmp103_;
1262 			ValaInterface* _tmp104_;
1263 			_iface_index = _iface_index + 1;
1264 			_tmp100_ = _iface_index;
1265 			_tmp101_ = _iface_size;
1266 			if (!(_tmp100_ < _tmp101_)) {
1267 				break;
1268 			}
1269 			_tmp102_ = _iface_list;
1270 			_tmp103_ = vala_list_get (_tmp102_, _iface_index);
1271 			iface = (ValaInterface*) _tmp103_;
1272 			_tmp104_ = iface;
1273 			vala_code_node_accept ((ValaCodeNode*) _tmp104_, visitor);
1274 			_vala_code_node_unref0 (iface);
1275 		}
1276 		_vala_iterable_unref0 (_iface_list);
1277 	}
1278 	{
1279 		ValaList* _st_list = NULL;
1280 		ValaList* _tmp105_;
1281 		ValaList* _tmp106_;
1282 		gint _st_size = 0;
1283 		ValaList* _tmp107_;
1284 		gint _tmp108_;
1285 		gint _tmp109_;
1286 		gint _st_index = 0;
1287 		_tmp105_ = vala_object_type_symbol_get_structs (self);
1288 		_tmp106_ = _vala_iterable_ref0 (_tmp105_);
1289 		_st_list = _tmp106_;
1290 		_tmp107_ = _st_list;
1291 		_tmp108_ = vala_collection_get_size ((ValaCollection*) _tmp107_);
1292 		_tmp109_ = _tmp108_;
1293 		_st_size = _tmp109_;
1294 		_st_index = -1;
1295 		while (TRUE) {
1296 			gint _tmp110_;
1297 			gint _tmp111_;
1298 			ValaStruct* st = NULL;
1299 			ValaList* _tmp112_;
1300 			gpointer _tmp113_;
1301 			ValaStruct* _tmp114_;
1302 			_st_index = _st_index + 1;
1303 			_tmp110_ = _st_index;
1304 			_tmp111_ = _st_size;
1305 			if (!(_tmp110_ < _tmp111_)) {
1306 				break;
1307 			}
1308 			_tmp112_ = _st_list;
1309 			_tmp113_ = vala_list_get (_tmp112_, _st_index);
1310 			st = (ValaStruct*) _tmp113_;
1311 			_tmp114_ = st;
1312 			vala_code_node_accept ((ValaCodeNode*) _tmp114_, visitor);
1313 			_vala_code_node_unref0 (st);
1314 		}
1315 		_vala_iterable_unref0 (_st_list);
1316 	}
1317 	{
1318 		ValaList* _d_list = NULL;
1319 		ValaList* _tmp115_;
1320 		ValaList* _tmp116_;
1321 		gint _d_size = 0;
1322 		ValaList* _tmp117_;
1323 		gint _tmp118_;
1324 		gint _tmp119_;
1325 		gint _d_index = 0;
1326 		_tmp115_ = vala_object_type_symbol_get_delegates (self);
1327 		_tmp116_ = _vala_iterable_ref0 (_tmp115_);
1328 		_d_list = _tmp116_;
1329 		_tmp117_ = _d_list;
1330 		_tmp118_ = vala_collection_get_size ((ValaCollection*) _tmp117_);
1331 		_tmp119_ = _tmp118_;
1332 		_d_size = _tmp119_;
1333 		_d_index = -1;
1334 		while (TRUE) {
1335 			gint _tmp120_;
1336 			gint _tmp121_;
1337 			ValaDelegate* d = NULL;
1338 			ValaList* _tmp122_;
1339 			gpointer _tmp123_;
1340 			ValaDelegate* _tmp124_;
1341 			_d_index = _d_index + 1;
1342 			_tmp120_ = _d_index;
1343 			_tmp121_ = _d_size;
1344 			if (!(_tmp120_ < _tmp121_)) {
1345 				break;
1346 			}
1347 			_tmp122_ = _d_list;
1348 			_tmp123_ = vala_list_get (_tmp122_, _d_index);
1349 			d = (ValaDelegate*) _tmp123_;
1350 			_tmp124_ = d;
1351 			vala_code_node_accept ((ValaCodeNode*) _tmp124_, visitor);
1352 			_vala_code_node_unref0 (d);
1353 		}
1354 		_vala_iterable_unref0 (_d_list);
1355 	}
1356 }
1357 
1358 static gboolean
vala_object_type_symbol_real_check(ValaCodeNode * base,ValaCodeContext * context)1359 vala_object_type_symbol_real_check (ValaCodeNode* base,
1360                                     ValaCodeContext* context)
1361 {
1362 	ValaObjectTypeSymbol * self;
1363 	gboolean _tmp0_;
1364 	gboolean _tmp1_;
1365 	gboolean _tmp4_ = FALSE;
1366 	gboolean _tmp5_ = FALSE;
1367 	gboolean _tmp6_;
1368 	gboolean _tmp7_;
1369 	gboolean _tmp11_;
1370 	gboolean _tmp12_;
1371 	gboolean result = FALSE;
1372 	self = (ValaObjectTypeSymbol*) base;
1373 	g_return_val_if_fail (context != NULL, FALSE);
1374 	_tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
1375 	_tmp1_ = _tmp0_;
1376 	if (_tmp1_) {
1377 		gboolean _tmp2_;
1378 		gboolean _tmp3_;
1379 		_tmp2_ = vala_code_node_get_error ((ValaCodeNode*) self);
1380 		_tmp3_ = _tmp2_;
1381 		result = !_tmp3_;
1382 		return result;
1383 	}
1384 	_tmp6_ = vala_symbol_get_external_package ((ValaSymbol*) self);
1385 	_tmp7_ = _tmp6_;
1386 	if (!_tmp7_) {
1387 		ValaAttribute* _tmp8_;
1388 		_tmp8_ = vala_code_node_get_attribute ((ValaCodeNode*) self, "DBus");
1389 		_tmp5_ = _tmp8_ != NULL;
1390 	} else {
1391 		_tmp5_ = FALSE;
1392 	}
1393 	if (_tmp5_) {
1394 		_tmp4_ = !vala_code_context_has_package (context, "gio-2.0");
1395 	} else {
1396 		_tmp4_ = FALSE;
1397 	}
1398 	if (_tmp4_) {
1399 		ValaSourceReference* _tmp9_;
1400 		ValaSourceReference* _tmp10_;
1401 		vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
1402 		_tmp9_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
1403 		_tmp10_ = _tmp9_;
1404 		vala_report_error (_tmp10_, "gio-2.0 package required for DBus support");
1405 	}
1406 	_tmp11_ = vala_code_node_get_error ((ValaCodeNode*) self);
1407 	_tmp12_ = _tmp11_;
1408 	result = !_tmp12_;
1409 	return result;
1410 }
1411 
1412 static void
vala_object_type_symbol_class_init(ValaObjectTypeSymbolClass * klass,gpointer klass_data)1413 vala_object_type_symbol_class_init (ValaObjectTypeSymbolClass * klass,
1414                                     gpointer klass_data)
1415 {
1416 	vala_object_type_symbol_parent_class = g_type_class_peek_parent (klass);
1417 	((ValaCodeNodeClass *) klass)->finalize = vala_object_type_symbol_finalize;
1418 	g_type_class_adjust_private_offset (klass, &ValaObjectTypeSymbol_private_offset);
1419 	((ValaSymbolClass *) klass)->add_field = (void (*) (ValaSymbol*, ValaField*)) vala_object_type_symbol_real_add_field;
1420 	((ValaSymbolClass *) klass)->add_method = (void (*) (ValaSymbol*, ValaMethod*)) vala_object_type_symbol_real_add_method;
1421 	((ValaSymbolClass *) klass)->add_property = (void (*) (ValaSymbol*, ValaProperty*)) vala_object_type_symbol_real_add_property;
1422 	((ValaSymbolClass *) klass)->add_signal = (void (*) (ValaSymbol*, ValaSignal*)) vala_object_type_symbol_real_add_signal;
1423 	((ValaSymbolClass *) klass)->add_class = (void (*) (ValaSymbol*, ValaClass*)) vala_object_type_symbol_real_add_class;
1424 	((ValaSymbolClass *) klass)->add_interface = (void (*) (ValaSymbol*, ValaInterface*)) vala_object_type_symbol_real_add_interface;
1425 	((ValaSymbolClass *) klass)->add_struct = (void (*) (ValaSymbol*, ValaStruct*)) vala_object_type_symbol_real_add_struct;
1426 	((ValaSymbolClass *) klass)->add_enum = (void (*) (ValaSymbol*, ValaEnum*)) vala_object_type_symbol_real_add_enum;
1427 	((ValaSymbolClass *) klass)->add_delegate = (void (*) (ValaSymbol*, ValaDelegate*)) vala_object_type_symbol_real_add_delegate;
1428 	((ValaSymbolClass *) klass)->add_constant = (void (*) (ValaSymbol*, ValaConstant*)) vala_object_type_symbol_real_add_constant;
1429 	((ValaTypeSymbolClass *) klass)->get_type_parameter_index = (gint (*) (ValaTypeSymbol*, const gchar*)) vala_object_type_symbol_real_get_type_parameter_index;
1430 	((ValaCodeNodeClass *) klass)->accept_children = (void (*) (ValaCodeNode*, ValaCodeVisitor*)) vala_object_type_symbol_real_accept_children;
1431 	((ValaCodeNodeClass *) klass)->check = (gboolean (*) (ValaCodeNode*, ValaCodeContext*)) vala_object_type_symbol_real_check;
1432 }
1433 
1434 static void
vala_object_type_symbol_instance_init(ValaObjectTypeSymbol * self,gpointer klass)1435 vala_object_type_symbol_instance_init (ValaObjectTypeSymbol * self,
1436                                        gpointer klass)
1437 {
1438 	GEqualFunc _tmp0_;
1439 	ValaArrayList* _tmp1_;
1440 	GEqualFunc _tmp2_;
1441 	ValaArrayList* _tmp3_;
1442 	GEqualFunc _tmp4_;
1443 	ValaArrayList* _tmp5_;
1444 	GEqualFunc _tmp6_;
1445 	ValaArrayList* _tmp7_;
1446 	GEqualFunc _tmp8_;
1447 	ValaArrayList* _tmp9_;
1448 	GEqualFunc _tmp10_;
1449 	ValaArrayList* _tmp11_;
1450 	GEqualFunc _tmp12_;
1451 	ValaArrayList* _tmp13_;
1452 	GEqualFunc _tmp14_;
1453 	ValaArrayList* _tmp15_;
1454 	GEqualFunc _tmp16_;
1455 	ValaArrayList* _tmp17_;
1456 	GEqualFunc _tmp18_;
1457 	ValaArrayList* _tmp19_;
1458 	GEqualFunc _tmp20_;
1459 	ValaArrayList* _tmp21_;
1460 	GEqualFunc _tmp22_;
1461 	ValaArrayList* _tmp23_;
1462 	self->priv = vala_object_type_symbol_get_instance_private (self);
1463 	_tmp0_ = g_direct_equal;
1464 	_tmp1_ = vala_array_list_new (VALA_TYPE_TYPEPARAMETER, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp0_);
1465 	self->priv->type_parameters = (ValaList*) _tmp1_;
1466 	_tmp2_ = g_direct_equal;
1467 	_tmp3_ = vala_array_list_new (VALA_TYPE_SYMBOL, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp2_);
1468 	self->priv->members = (ValaList*) _tmp3_;
1469 	_tmp4_ = g_direct_equal;
1470 	_tmp5_ = vala_array_list_new (VALA_TYPE_FIELD, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp4_);
1471 	self->priv->fields = (ValaList*) _tmp5_;
1472 	_tmp6_ = g_direct_equal;
1473 	_tmp7_ = vala_array_list_new (VALA_TYPE_METHOD, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp6_);
1474 	self->priv->methods = (ValaList*) _tmp7_;
1475 	_tmp8_ = g_direct_equal;
1476 	_tmp9_ = vala_array_list_new (VALA_TYPE_PROPERTY, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp8_);
1477 	self->priv->properties = (ValaList*) _tmp9_;
1478 	_tmp10_ = g_direct_equal;
1479 	_tmp11_ = vala_array_list_new (VALA_TYPE_SIGNAL, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp10_);
1480 	self->priv->signals = (ValaList*) _tmp11_;
1481 	_tmp12_ = g_direct_equal;
1482 	_tmp13_ = vala_array_list_new (VALA_TYPE_CLASS, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp12_);
1483 	self->priv->classes = (ValaList*) _tmp13_;
1484 	_tmp14_ = g_direct_equal;
1485 	_tmp15_ = vala_array_list_new (VALA_TYPE_INTERFACE, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp14_);
1486 	self->priv->interfaces = (ValaList*) _tmp15_;
1487 	_tmp16_ = g_direct_equal;
1488 	_tmp17_ = vala_array_list_new (VALA_TYPE_STRUCT, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp16_);
1489 	self->priv->structs = (ValaList*) _tmp17_;
1490 	_tmp18_ = g_direct_equal;
1491 	_tmp19_ = vala_array_list_new (VALA_TYPE_ENUM, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp18_);
1492 	self->priv->enums = (ValaList*) _tmp19_;
1493 	_tmp20_ = g_direct_equal;
1494 	_tmp21_ = vala_array_list_new (VALA_TYPE_DELEGATE, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp20_);
1495 	self->priv->delegates = (ValaList*) _tmp21_;
1496 	_tmp22_ = g_direct_equal;
1497 	_tmp23_ = vala_array_list_new (VALA_TYPE_CONSTANT, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp22_);
1498 	self->priv->constants = (ValaList*) _tmp23_;
1499 }
1500 
1501 static void
vala_object_type_symbol_finalize(ValaCodeNode * obj)1502 vala_object_type_symbol_finalize (ValaCodeNode * obj)
1503 {
1504 	ValaObjectTypeSymbol * self;
1505 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol);
1506 	_vala_iterable_unref0 (self->priv->type_parameters);
1507 	_vala_iterable_unref0 (self->priv->members);
1508 	_vala_iterable_unref0 (self->priv->fields);
1509 	_vala_iterable_unref0 (self->priv->methods);
1510 	_vala_iterable_unref0 (self->priv->properties);
1511 	_vala_iterable_unref0 (self->priv->signals);
1512 	_vala_iterable_unref0 (self->priv->classes);
1513 	_vala_iterable_unref0 (self->priv->interfaces);
1514 	_vala_iterable_unref0 (self->priv->structs);
1515 	_vala_iterable_unref0 (self->priv->enums);
1516 	_vala_iterable_unref0 (self->priv->delegates);
1517 	_vala_iterable_unref0 (self->priv->constants);
1518 	VALA_CODE_NODE_CLASS (vala_object_type_symbol_parent_class)->finalize (obj);
1519 }
1520 
1521 /**
1522  * Represents a runtime data type for objects and interfaces. This data type may
1523  * be defined in Vala source code or imported from an external library with a
1524  * Vala API file.
1525  */
1526 static GType
vala_object_type_symbol_get_type_once(void)1527 vala_object_type_symbol_get_type_once (void)
1528 {
1529 	static const GTypeInfo g_define_type_info = { sizeof (ValaObjectTypeSymbolClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_object_type_symbol_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaObjectTypeSymbol), 0, (GInstanceInitFunc) vala_object_type_symbol_instance_init, NULL };
1530 	GType vala_object_type_symbol_type_id;
1531 	vala_object_type_symbol_type_id = g_type_register_static (VALA_TYPE_TYPESYMBOL, "ValaObjectTypeSymbol", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
1532 	ValaObjectTypeSymbol_private_offset = g_type_add_instance_private (vala_object_type_symbol_type_id, sizeof (ValaObjectTypeSymbolPrivate));
1533 	return vala_object_type_symbol_type_id;
1534 }
1535 
1536 GType
vala_object_type_symbol_get_type(void)1537 vala_object_type_symbol_get_type (void)
1538 {
1539 	static volatile gsize vala_object_type_symbol_type_id__volatile = 0;
1540 	if (g_once_init_enter (&vala_object_type_symbol_type_id__volatile)) {
1541 		GType vala_object_type_symbol_type_id;
1542 		vala_object_type_symbol_type_id = vala_object_type_symbol_get_type_once ();
1543 		g_once_init_leave (&vala_object_type_symbol_type_id__volatile, vala_object_type_symbol_type_id);
1544 	}
1545 	return vala_object_type_symbol_type_id__volatile;
1546 }
1547 
1548