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