1 /* valasymbol.c generated by valac, the Vala compiler
2 * generated from valasymbol.vala, do not modify */
3
4 /* valasymbol.vala
5 *
6 * Copyright (C) 2006-2010 Jürg Billeter
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 *
22 * Author:
23 * Jürg Billeter <j@bitron.ch>
24 */
25
26 #include "vala.h"
27 #include <stdlib.h>
28 #include <string.h>
29 #include <glib.h>
30
31 #define _g_free0(var) (var = (g_free (var), NULL))
32 #define _vala_comment_unref0(var) ((var == NULL) ? NULL : (var = (vala_comment_unref (var), NULL)))
33 #define _vala_version_attribute_unref0(var) ((var == NULL) ? NULL : (var = (vala_version_attribute_unref (var), NULL)))
34 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
35 #define _vala_scope_unref0(var) ((var == NULL) ? NULL : (var = (vala_scope_unref (var), NULL)))
36 #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
37
38 struct _ValaSymbolPrivate {
39 gchar* _name;
40 gboolean _active;
41 gboolean _used;
42 gboolean _anonymous;
43 ValaSymbolAccessibility _access;
44 ValaComment* _comment;
45 ValaVersionAttribute* _version;
46 gboolean _hides;
47 gboolean _is_extern;
48 ValaScope* _owner;
49 ValaScope* _scope;
50 gboolean* _external;
51 };
52
53 static gint ValaSymbol_private_offset;
54 static gpointer vala_symbol_parent_class = NULL;
55
56 static gboolean* _bool_dup (gboolean* self);
57 static gboolean vala_symbol_real_is_instance_member (ValaSymbol* self);
58 static gboolean vala_symbol_real_is_class_member (ValaSymbol* self);
59 static void vala_symbol_real_add_namespace (ValaSymbol* self,
60 ValaNamespace* ns);
61 static void vala_symbol_real_add_class (ValaSymbol* self,
62 ValaClass* cl);
63 static void vala_symbol_real_add_interface (ValaSymbol* self,
64 ValaInterface* iface);
65 static void vala_symbol_real_add_struct (ValaSymbol* self,
66 ValaStruct* st);
67 static void vala_symbol_real_add_enum (ValaSymbol* self,
68 ValaEnum* en);
69 static void vala_symbol_real_add_error_domain (ValaSymbol* self,
70 ValaErrorDomain* edomain);
71 static void vala_symbol_real_add_delegate (ValaSymbol* self,
72 ValaDelegate* d);
73 static void vala_symbol_real_add_constant (ValaSymbol* self,
74 ValaConstant* constant);
75 static void vala_symbol_real_add_field (ValaSymbol* self,
76 ValaField* f);
77 static void vala_symbol_real_add_method (ValaSymbol* self,
78 ValaMethod* m);
79 static void vala_symbol_real_add_property (ValaSymbol* self,
80 ValaProperty* prop);
81 static void vala_symbol_real_add_signal (ValaSymbol* self,
82 ValaSignal* sig);
83 static void vala_symbol_real_add_constructor (ValaSymbol* self,
84 ValaConstructor* c);
85 static void vala_symbol_real_add_destructor (ValaSymbol* self,
86 ValaDestructor* d);
87 static gchar* vala_symbol_real_to_string (ValaCodeNode* base);
88 static void vala_symbol_finalize (ValaCodeNode * obj);
89 static GType vala_symbol_get_type_once (void);
90
91 static inline gpointer
vala_symbol_get_instance_private(ValaSymbol * self)92 vala_symbol_get_instance_private (ValaSymbol* self)
93 {
94 return G_STRUCT_MEMBER_P (self, ValaSymbol_private_offset);
95 }
96
97 ValaSymbol*
vala_symbol_get_parent_symbol(ValaSymbol * self)98 vala_symbol_get_parent_symbol (ValaSymbol* self)
99 {
100 ValaSymbol* result;
101 ValaScope* _tmp0_;
102 ValaScope* _tmp1_;
103 g_return_val_if_fail (self != NULL, NULL);
104 _tmp0_ = vala_symbol_get_owner (self);
105 _tmp1_ = _tmp0_;
106 if (_tmp1_ == NULL) {
107 result = NULL;
108 return result;
109 } else {
110 ValaScope* _tmp2_;
111 ValaScope* _tmp3_;
112 ValaSymbol* _tmp4_;
113 ValaSymbol* _tmp5_;
114 _tmp2_ = vala_symbol_get_owner (self);
115 _tmp3_ = _tmp2_;
116 _tmp4_ = vala_scope_get_owner (_tmp3_);
117 _tmp5_ = _tmp4_;
118 result = _tmp5_;
119 return result;
120 }
121 }
122
123 ValaScope*
vala_symbol_get_owner(ValaSymbol * self)124 vala_symbol_get_owner (ValaSymbol* self)
125 {
126 ValaScope* result;
127 ValaScope* _tmp0_;
128 g_return_val_if_fail (self != NULL, NULL);
129 _tmp0_ = self->priv->_owner;
130 result = _tmp0_;
131 return result;
132 }
133
134 void
vala_symbol_set_owner(ValaSymbol * self,ValaScope * value)135 vala_symbol_set_owner (ValaSymbol* self,
136 ValaScope* value)
137 {
138 ValaScope* _tmp0_;
139 g_return_if_fail (self != NULL);
140 self->priv->_owner = value;
141 _tmp0_ = self->priv->_scope;
142 vala_scope_set_parent_scope (_tmp0_, value);
143 }
144
145 const gchar*
vala_symbol_get_name(ValaSymbol * self)146 vala_symbol_get_name (ValaSymbol* self)
147 {
148 const gchar* result;
149 const gchar* _tmp0_;
150 g_return_val_if_fail (self != NULL, NULL);
151 _tmp0_ = self->priv->_name;
152 result = _tmp0_;
153 return result;
154 }
155
156 void
vala_symbol_set_name(ValaSymbol * self,const gchar * value)157 vala_symbol_set_name (ValaSymbol* self,
158 const gchar* value)
159 {
160 gchar* _tmp0_;
161 g_return_if_fail (self != NULL);
162 _tmp0_ = g_strdup (value);
163 _g_free0 (self->priv->_name);
164 self->priv->_name = _tmp0_;
165 }
166
167 gboolean
vala_symbol_get_active(ValaSymbol * self)168 vala_symbol_get_active (ValaSymbol* self)
169 {
170 gboolean result;
171 g_return_val_if_fail (self != NULL, FALSE);
172 result = self->priv->_active;
173 return result;
174 }
175
176 void
vala_symbol_set_active(ValaSymbol * self,gboolean value)177 vala_symbol_set_active (ValaSymbol* self,
178 gboolean value)
179 {
180 g_return_if_fail (self != NULL);
181 self->priv->_active = value;
182 }
183
184 gboolean
vala_symbol_get_used(ValaSymbol * self)185 vala_symbol_get_used (ValaSymbol* self)
186 {
187 gboolean result;
188 g_return_val_if_fail (self != NULL, FALSE);
189 result = self->priv->_used;
190 return result;
191 }
192
193 void
vala_symbol_set_used(ValaSymbol * self,gboolean value)194 vala_symbol_set_used (ValaSymbol* self,
195 gboolean value)
196 {
197 g_return_if_fail (self != NULL);
198 self->priv->_used = value;
199 }
200
201 gboolean
vala_symbol_get_anonymous(ValaSymbol * self)202 vala_symbol_get_anonymous (ValaSymbol* self)
203 {
204 gboolean result;
205 g_return_val_if_fail (self != NULL, FALSE);
206 result = self->priv->_anonymous;
207 return result;
208 }
209
210 void
vala_symbol_set_anonymous(ValaSymbol * self,gboolean value)211 vala_symbol_set_anonymous (ValaSymbol* self,
212 gboolean value)
213 {
214 g_return_if_fail (self != NULL);
215 self->priv->_anonymous = value;
216 }
217
218 ValaSymbolAccessibility
vala_symbol_get_access(ValaSymbol * self)219 vala_symbol_get_access (ValaSymbol* self)
220 {
221 ValaSymbolAccessibility result;
222 ValaSymbolAccessibility _tmp0_;
223 g_return_val_if_fail (self != NULL, 0);
224 _tmp0_ = self->priv->_access;
225 result = _tmp0_;
226 return result;
227 }
228
229 void
vala_symbol_set_access(ValaSymbol * self,ValaSymbolAccessibility value)230 vala_symbol_set_access (ValaSymbol* self,
231 ValaSymbolAccessibility value)
232 {
233 g_return_if_fail (self != NULL);
234 self->priv->_access = value;
235 }
236
237 ValaComment*
vala_symbol_get_comment(ValaSymbol * self)238 vala_symbol_get_comment (ValaSymbol* self)
239 {
240 ValaComment* result;
241 ValaComment* _tmp0_;
242 g_return_val_if_fail (self != NULL, NULL);
243 _tmp0_ = self->priv->_comment;
244 result = _tmp0_;
245 return result;
246 }
247
248 static gpointer
_vala_comment_ref0(gpointer self)249 _vala_comment_ref0 (gpointer self)
250 {
251 return self ? vala_comment_ref (self) : NULL;
252 }
253
254 void
vala_symbol_set_comment(ValaSymbol * self,ValaComment * value)255 vala_symbol_set_comment (ValaSymbol* self,
256 ValaComment* value)
257 {
258 ValaComment* _tmp0_;
259 g_return_if_fail (self != NULL);
260 _tmp0_ = _vala_comment_ref0 (value);
261 _vala_comment_unref0 (self->priv->_comment);
262 self->priv->_comment = _tmp0_;
263 }
264
265 ValaVersionAttribute*
vala_symbol_get_version(ValaSymbol * self)266 vala_symbol_get_version (ValaSymbol* self)
267 {
268 ValaVersionAttribute* result;
269 ValaVersionAttribute* _tmp0_;
270 ValaVersionAttribute* _tmp2_;
271 g_return_val_if_fail (self != NULL, NULL);
272 _tmp0_ = self->priv->_version;
273 if (_tmp0_ == NULL) {
274 ValaVersionAttribute* _tmp1_;
275 _tmp1_ = vala_version_attribute_new (self);
276 _vala_version_attribute_unref0 (self->priv->_version);
277 self->priv->_version = _tmp1_;
278 }
279 _tmp2_ = self->priv->_version;
280 result = _tmp2_;
281 return result;
282 }
283
284 gboolean
vala_symbol_get_hides(ValaSymbol * self)285 vala_symbol_get_hides (ValaSymbol* self)
286 {
287 gboolean result;
288 g_return_val_if_fail (self != NULL, FALSE);
289 result = self->priv->_hides;
290 return result;
291 }
292
293 void
vala_symbol_set_hides(ValaSymbol * self,gboolean value)294 vala_symbol_set_hides (ValaSymbol* self,
295 gboolean value)
296 {
297 g_return_if_fail (self != NULL);
298 self->priv->_hides = value;
299 }
300
301 /**
302 * Check if this symbol is just internal API (and therefore doesn't need
303 * to be listed in header files for instance) by traversing parent symbols
304 * and checking their accessibility.
305 */
306 static gpointer
_vala_code_node_ref0(gpointer self)307 _vala_code_node_ref0 (gpointer self)
308 {
309 return self ? vala_code_node_ref (self) : NULL;
310 }
311
312 gboolean
vala_symbol_is_internal_symbol(ValaSymbol * self)313 vala_symbol_is_internal_symbol (ValaSymbol* self)
314 {
315 gboolean _tmp0_ = FALSE;
316 gboolean _tmp1_;
317 gboolean _tmp2_;
318 gboolean result = FALSE;
319 g_return_val_if_fail (self != NULL, FALSE);
320 _tmp1_ = vala_symbol_get_external (self);
321 _tmp2_ = _tmp1_;
322 if (!_tmp2_) {
323 gboolean _tmp3_;
324 gboolean _tmp4_;
325 _tmp3_ = vala_symbol_get_external_package (self);
326 _tmp4_ = _tmp3_;
327 _tmp0_ = _tmp4_;
328 } else {
329 _tmp0_ = FALSE;
330 }
331 if (_tmp0_) {
332 result = TRUE;
333 return result;
334 }
335 {
336 ValaSymbol* sym = NULL;
337 ValaSymbol* _tmp5_;
338 _tmp5_ = _vala_code_node_ref0 (self);
339 sym = _tmp5_;
340 {
341 gboolean _tmp6_ = FALSE;
342 _tmp6_ = TRUE;
343 while (TRUE) {
344 ValaSymbol* _tmp11_;
345 gboolean _tmp12_ = FALSE;
346 ValaSymbol* _tmp13_;
347 ValaSymbolAccessibility _tmp14_;
348 if (!_tmp6_) {
349 ValaSymbol* _tmp7_;
350 ValaSymbol* _tmp8_;
351 ValaSymbol* _tmp9_;
352 ValaSymbol* _tmp10_;
353 _tmp7_ = sym;
354 _tmp8_ = vala_symbol_get_parent_symbol (_tmp7_);
355 _tmp9_ = _tmp8_;
356 _tmp10_ = _vala_code_node_ref0 (_tmp9_);
357 _vala_code_node_unref0 (sym);
358 sym = _tmp10_;
359 }
360 _tmp6_ = FALSE;
361 _tmp11_ = sym;
362 if (!(NULL != _tmp11_)) {
363 break;
364 }
365 _tmp13_ = sym;
366 _tmp14_ = _tmp13_->priv->_access;
367 if (_tmp14_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
368 _tmp12_ = TRUE;
369 } else {
370 ValaSymbol* _tmp15_;
371 ValaSymbolAccessibility _tmp16_;
372 _tmp15_ = sym;
373 _tmp16_ = _tmp15_->priv->_access;
374 _tmp12_ = _tmp16_ == VALA_SYMBOL_ACCESSIBILITY_INTERNAL;
375 }
376 if (_tmp12_) {
377 result = TRUE;
378 _vala_code_node_unref0 (sym);
379 return result;
380 }
381 }
382 }
383 _vala_code_node_unref0 (sym);
384 }
385 result = FALSE;
386 return result;
387 }
388
389 gboolean
vala_symbol_is_private_symbol(ValaSymbol * self)390 vala_symbol_is_private_symbol (ValaSymbol* self)
391 {
392 gboolean _tmp0_ = FALSE;
393 gboolean _tmp1_;
394 gboolean _tmp2_;
395 gboolean result = FALSE;
396 g_return_val_if_fail (self != NULL, FALSE);
397 _tmp1_ = vala_symbol_get_external (self);
398 _tmp2_ = _tmp1_;
399 if (!_tmp2_) {
400 gboolean _tmp3_;
401 gboolean _tmp4_;
402 _tmp3_ = vala_symbol_get_external_package (self);
403 _tmp4_ = _tmp3_;
404 _tmp0_ = _tmp4_;
405 } else {
406 _tmp0_ = FALSE;
407 }
408 if (_tmp0_) {
409 result = TRUE;
410 return result;
411 }
412 {
413 ValaSymbol* sym = NULL;
414 ValaSymbol* _tmp5_;
415 _tmp5_ = _vala_code_node_ref0 (self);
416 sym = _tmp5_;
417 {
418 gboolean _tmp6_ = FALSE;
419 _tmp6_ = TRUE;
420 while (TRUE) {
421 ValaSymbol* _tmp11_;
422 ValaSymbol* _tmp12_;
423 ValaSymbolAccessibility _tmp13_;
424 if (!_tmp6_) {
425 ValaSymbol* _tmp7_;
426 ValaSymbol* _tmp8_;
427 ValaSymbol* _tmp9_;
428 ValaSymbol* _tmp10_;
429 _tmp7_ = sym;
430 _tmp8_ = vala_symbol_get_parent_symbol (_tmp7_);
431 _tmp9_ = _tmp8_;
432 _tmp10_ = _vala_code_node_ref0 (_tmp9_);
433 _vala_code_node_unref0 (sym);
434 sym = _tmp10_;
435 }
436 _tmp6_ = FALSE;
437 _tmp11_ = sym;
438 if (!(NULL != _tmp11_)) {
439 break;
440 }
441 _tmp12_ = sym;
442 _tmp13_ = _tmp12_->priv->_access;
443 if (_tmp13_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
444 result = TRUE;
445 _vala_code_node_unref0 (sym);
446 return result;
447 }
448 }
449 }
450 _vala_code_node_unref0 (sym);
451 }
452 result = FALSE;
453 return result;
454 }
455
456 ValaScope*
vala_symbol_get_scope(ValaSymbol * self)457 vala_symbol_get_scope (ValaSymbol* self)
458 {
459 ValaScope* result;
460 ValaScope* _tmp0_;
461 g_return_val_if_fail (self != NULL, NULL);
462 _tmp0_ = self->priv->_scope;
463 result = _tmp0_;
464 return result;
465 }
466
467 gboolean
vala_symbol_get_is_extern(ValaSymbol * self)468 vala_symbol_get_is_extern (ValaSymbol* self)
469 {
470 gboolean result;
471 g_return_val_if_fail (self != NULL, FALSE);
472 result = self->priv->_is_extern;
473 return result;
474 }
475
476 void
vala_symbol_set_is_extern(ValaSymbol * self,gboolean value)477 vala_symbol_set_is_extern (ValaSymbol* self,
478 gboolean value)
479 {
480 g_return_if_fail (self != NULL);
481 self->priv->_is_extern = value;
482 }
483
484 gboolean
vala_symbol_get_external(ValaSymbol * self)485 vala_symbol_get_external (ValaSymbol* self)
486 {
487 gboolean result;
488 gboolean* _tmp0_;
489 gboolean _tmp2_ = FALSE;
490 gboolean _tmp3_;
491 g_return_val_if_fail (self != NULL, FALSE);
492 _tmp0_ = self->priv->_external;
493 if (_tmp0_ != NULL) {
494 gboolean* _tmp1_;
495 _tmp1_ = self->priv->_external;
496 result = *_tmp1_;
497 return result;
498 }
499 _tmp3_ = self->priv->_is_extern;
500 if (_tmp3_) {
501 _tmp2_ = TRUE;
502 } else {
503 gboolean _tmp4_;
504 gboolean _tmp5_;
505 _tmp4_ = vala_symbol_get_external_package (self);
506 _tmp5_ = _tmp4_;
507 _tmp2_ = _tmp5_;
508 }
509 result = _tmp2_;
510 return result;
511 }
512
513 static gboolean*
_bool_dup(gboolean * self)514 _bool_dup (gboolean* self)
515 {
516 gboolean* dup;
517 dup = g_new0 (gboolean, 1);
518 memcpy (dup, self, sizeof (gboolean));
519 return dup;
520 }
521
522 static gpointer
__bool_dup0(gpointer self)523 __bool_dup0 (gpointer self)
524 {
525 return self ? _bool_dup (self) : NULL;
526 }
527
528 void
vala_symbol_set_external(ValaSymbol * self,gboolean value)529 vala_symbol_set_external (ValaSymbol* self,
530 gboolean value)
531 {
532 gboolean* _tmp0_;
533 g_return_if_fail (self != NULL);
534 _tmp0_ = __bool_dup0 (&value);
535 _g_free0 (self->priv->_external);
536 self->priv->_external = _tmp0_;
537 }
538
539 gboolean
vala_symbol_get_external_package(ValaSymbol * self)540 vala_symbol_get_external_package (ValaSymbol* self)
541 {
542 gboolean result;
543 ValaSourceFileType _tmp0_;
544 ValaSourceFileType _tmp1_;
545 g_return_val_if_fail (self != NULL, FALSE);
546 _tmp0_ = vala_symbol_get_source_type (self);
547 _tmp1_ = _tmp0_;
548 result = _tmp1_ == VALA_SOURCE_FILE_TYPE_PACKAGE;
549 return result;
550 }
551
552 gboolean
vala_symbol_get_from_commandline(ValaSymbol * self)553 vala_symbol_get_from_commandline (ValaSymbol* self)
554 {
555 gboolean result;
556 ValaSourceReference* _tmp0_;
557 ValaSourceReference* _tmp1_;
558 g_return_val_if_fail (self != NULL, FALSE);
559 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
560 _tmp1_ = _tmp0_;
561 if (_tmp1_ != NULL) {
562 ValaSourceReference* _tmp2_;
563 ValaSourceReference* _tmp3_;
564 ValaSourceFile* _tmp4_;
565 ValaSourceFile* _tmp5_;
566 gboolean _tmp6_;
567 gboolean _tmp7_;
568 _tmp2_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
569 _tmp3_ = _tmp2_;
570 _tmp4_ = vala_source_reference_get_file (_tmp3_);
571 _tmp5_ = _tmp4_;
572 _tmp6_ = vala_source_file_get_from_commandline (_tmp5_);
573 _tmp7_ = _tmp6_;
574 result = _tmp7_;
575 return result;
576 } else {
577 result = FALSE;
578 return result;
579 }
580 }
581
582 ValaSourceFileType
vala_symbol_get_source_type(ValaSymbol * self)583 vala_symbol_get_source_type (ValaSymbol* self)
584 {
585 ValaSourceFileType result;
586 ValaSourceReference* _tmp0_;
587 ValaSourceReference* _tmp1_;
588 g_return_val_if_fail (self != NULL, 0);
589 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
590 _tmp1_ = _tmp0_;
591 if (_tmp1_ != NULL) {
592 ValaSourceReference* _tmp2_;
593 ValaSourceReference* _tmp3_;
594 ValaSourceFile* _tmp4_;
595 ValaSourceFile* _tmp5_;
596 ValaSourceFileType _tmp6_;
597 ValaSourceFileType _tmp7_;
598 _tmp2_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
599 _tmp3_ = _tmp2_;
600 _tmp4_ = vala_source_reference_get_file (_tmp3_);
601 _tmp5_ = _tmp4_;
602 _tmp6_ = vala_source_file_get_file_type (_tmp5_);
603 _tmp7_ = _tmp6_;
604 result = _tmp7_;
605 return result;
606 } else {
607 result = VALA_SOURCE_FILE_TYPE_NONE;
608 return result;
609 }
610 }
611
612 ValaSymbol*
vala_symbol_construct(GType object_type,const gchar * name,ValaSourceReference * source_reference,ValaComment * comment)613 vala_symbol_construct (GType object_type,
614 const gchar* name,
615 ValaSourceReference* source_reference,
616 ValaComment* comment)
617 {
618 ValaSymbol* self = NULL;
619 ValaScope* _tmp0_;
620 self = (ValaSymbol*) vala_code_node_construct (object_type);
621 vala_symbol_set_name (self, name);
622 vala_code_node_set_source_reference ((ValaCodeNode*) self, source_reference);
623 vala_symbol_set_comment (self, comment);
624 _tmp0_ = vala_scope_new (self);
625 _vala_scope_unref0 (self->priv->_scope);
626 self->priv->_scope = _tmp0_;
627 return self;
628 }
629
630 /**
631 * Returns the fully expanded name of this symbol for use in
632 * human-readable messages.
633 *
634 * @return full name
635 */
636 gchar*
vala_symbol_get_full_name(ValaSymbol * self)637 vala_symbol_get_full_name (ValaSymbol* self)
638 {
639 ValaSymbol* _tmp0_;
640 ValaSymbol* _tmp1_;
641 const gchar* _tmp4_;
642 ValaSymbol* _tmp8_;
643 ValaSymbol* _tmp9_;
644 gchar* _tmp10_;
645 gchar* _tmp11_;
646 gboolean _tmp12_;
647 const gchar* _tmp15_;
648 gchar* result = NULL;
649 g_return_val_if_fail (self != NULL, NULL);
650 _tmp0_ = vala_symbol_get_parent_symbol (self);
651 _tmp1_ = _tmp0_;
652 if (_tmp1_ == NULL) {
653 const gchar* _tmp2_;
654 gchar* _tmp3_;
655 _tmp2_ = self->priv->_name;
656 _tmp3_ = g_strdup (_tmp2_);
657 result = _tmp3_;
658 return result;
659 }
660 _tmp4_ = self->priv->_name;
661 if (_tmp4_ == NULL) {
662 ValaSymbol* _tmp5_;
663 ValaSymbol* _tmp6_;
664 gchar* _tmp7_;
665 _tmp5_ = vala_symbol_get_parent_symbol (self);
666 _tmp6_ = _tmp5_;
667 _tmp7_ = vala_symbol_get_full_name (_tmp6_);
668 result = _tmp7_;
669 return result;
670 }
671 _tmp8_ = vala_symbol_get_parent_symbol (self);
672 _tmp9_ = _tmp8_;
673 _tmp10_ = vala_symbol_get_full_name (_tmp9_);
674 _tmp11_ = _tmp10_;
675 _tmp12_ = _tmp11_ == NULL;
676 _g_free0 (_tmp11_);
677 if (_tmp12_) {
678 const gchar* _tmp13_;
679 gchar* _tmp14_;
680 _tmp13_ = self->priv->_name;
681 _tmp14_ = g_strdup (_tmp13_);
682 result = _tmp14_;
683 return result;
684 }
685 _tmp15_ = self->priv->_name;
686 if (g_str_has_prefix (_tmp15_, ".")) {
687 ValaSymbol* _tmp16_;
688 ValaSymbol* _tmp17_;
689 gchar* _tmp18_;
690 gchar* _tmp19_;
691 const gchar* _tmp20_;
692 gchar* _tmp21_;
693 gchar* _tmp22_;
694 _tmp16_ = vala_symbol_get_parent_symbol (self);
695 _tmp17_ = _tmp16_;
696 _tmp18_ = vala_symbol_get_full_name (_tmp17_);
697 _tmp19_ = _tmp18_;
698 _tmp20_ = self->priv->_name;
699 _tmp21_ = g_strdup_printf ("%s%s", _tmp19_, _tmp20_);
700 _tmp22_ = _tmp21_;
701 _g_free0 (_tmp19_);
702 result = _tmp22_;
703 return result;
704 } else {
705 ValaSymbol* _tmp23_;
706 ValaSymbol* _tmp24_;
707 gchar* _tmp25_;
708 gchar* _tmp26_;
709 const gchar* _tmp27_;
710 gchar* _tmp28_;
711 gchar* _tmp29_;
712 _tmp23_ = vala_symbol_get_parent_symbol (self);
713 _tmp24_ = _tmp23_;
714 _tmp25_ = vala_symbol_get_full_name (_tmp24_);
715 _tmp26_ = _tmp25_;
716 _tmp27_ = self->priv->_name;
717 _tmp28_ = g_strdup_printf ("%s.%s", _tmp26_, _tmp27_);
718 _tmp29_ = _tmp28_;
719 _g_free0 (_tmp26_);
720 result = _tmp29_;
721 return result;
722 }
723 }
724
725 /**
726 * Converts a string from CamelCase to lower_case.
727 *
728 * @param camel_case a string in camel case
729 * @return the specified string converted to lower case
730 */
731 static gboolean
string_contains(const gchar * self,const gchar * needle)732 string_contains (const gchar* self,
733 const gchar* needle)
734 {
735 gchar* _tmp0_;
736 gboolean result = FALSE;
737 g_return_val_if_fail (self != NULL, FALSE);
738 g_return_val_if_fail (needle != NULL, FALSE);
739 _tmp0_ = strstr ((gchar*) self, (gchar*) needle);
740 result = _tmp0_ != NULL;
741 return result;
742 }
743
744 static gunichar
string_get_char(const gchar * self,glong index)745 string_get_char (const gchar* self,
746 glong index)
747 {
748 gunichar result = 0U;
749 g_return_val_if_fail (self != NULL, 0U);
750 result = g_utf8_get_char (((gchar*) self) + index);
751 return result;
752 }
753
754 gchar*
vala_symbol_camel_case_to_lower_case(const gchar * camel_case)755 vala_symbol_camel_case_to_lower_case (const gchar* camel_case)
756 {
757 GString* result_builder = NULL;
758 GString* _tmp1_;
759 const gchar* i = NULL;
760 gboolean first = FALSE;
761 GString* _tmp29_;
762 const gchar* _tmp30_;
763 gchar* _tmp31_;
764 gchar* result = NULL;
765 g_return_val_if_fail (camel_case != NULL, NULL);
766 if (string_contains (camel_case, "_")) {
767 gchar* _tmp0_;
768 _tmp0_ = g_ascii_strdown (camel_case, (gssize) -1);
769 result = _tmp0_;
770 return result;
771 }
772 _tmp1_ = g_string_new ("");
773 result_builder = _tmp1_;
774 i = camel_case;
775 first = TRUE;
776 while (TRUE) {
777 const gchar* _tmp2_;
778 gint _tmp3_;
779 gint _tmp4_;
780 gunichar c = 0U;
781 const gchar* _tmp5_;
782 gboolean _tmp6_ = FALSE;
783 GString* _tmp26_;
784 const gchar* _tmp27_;
785 const gchar* _tmp28_;
786 _tmp2_ = i;
787 _tmp3_ = strlen (_tmp2_);
788 _tmp4_ = _tmp3_;
789 if (!(_tmp4_ > 0)) {
790 break;
791 }
792 _tmp5_ = i;
793 c = string_get_char (_tmp5_, (glong) 0);
794 if (g_unichar_isupper (c)) {
795 _tmp6_ = !first;
796 } else {
797 _tmp6_ = FALSE;
798 }
799 if (_tmp6_) {
800 const gchar* t = NULL;
801 const gchar* _tmp7_;
802 const gchar* _tmp8_;
803 gboolean prev_upper = FALSE;
804 const gchar* _tmp9_;
805 const gchar* _tmp10_;
806 const gchar* _tmp11_;
807 gboolean next_upper = FALSE;
808 const gchar* _tmp12_;
809 gboolean _tmp13_ = FALSE;
810 _tmp7_ = i;
811 _tmp8_ = g_utf8_prev_char (_tmp7_);
812 t = _tmp8_;
813 _tmp9_ = t;
814 prev_upper = g_unichar_isupper (string_get_char (_tmp9_, (glong) 0));
815 _tmp10_ = i;
816 _tmp11_ = g_utf8_next_char (_tmp10_);
817 t = _tmp11_;
818 _tmp12_ = t;
819 next_upper = g_unichar_isupper (string_get_char (_tmp12_, (glong) 0));
820 if (!prev_upper) {
821 _tmp13_ = TRUE;
822 } else {
823 gboolean _tmp14_ = FALSE;
824 const gchar* _tmp15_;
825 gint _tmp16_;
826 gint _tmp17_;
827 _tmp15_ = i;
828 _tmp16_ = strlen (_tmp15_);
829 _tmp17_ = _tmp16_;
830 if (_tmp17_ >= 2) {
831 _tmp14_ = !next_upper;
832 } else {
833 _tmp14_ = FALSE;
834 }
835 _tmp13_ = _tmp14_;
836 }
837 if (_tmp13_) {
838 glong len = 0L;
839 GString* _tmp18_;
840 const gchar* _tmp19_;
841 gint _tmp20_;
842 gint _tmp21_;
843 gboolean _tmp22_ = FALSE;
844 _tmp18_ = result_builder;
845 _tmp19_ = _tmp18_->str;
846 _tmp20_ = strlen (_tmp19_);
847 _tmp21_ = _tmp20_;
848 len = (glong) _tmp21_;
849 if (len != ((glong) 1)) {
850 GString* _tmp23_;
851 const gchar* _tmp24_;
852 _tmp23_ = result_builder;
853 _tmp24_ = _tmp23_->str;
854 _tmp22_ = string_get_char (_tmp24_, len - 2) != ((gunichar) '_');
855 } else {
856 _tmp22_ = FALSE;
857 }
858 if (_tmp22_) {
859 GString* _tmp25_;
860 _tmp25_ = result_builder;
861 g_string_append_c (_tmp25_, '_');
862 }
863 }
864 }
865 _tmp26_ = result_builder;
866 g_string_append_unichar (_tmp26_, g_unichar_tolower (c));
867 first = FALSE;
868 _tmp27_ = i;
869 _tmp28_ = g_utf8_next_char (_tmp27_);
870 i = _tmp28_;
871 }
872 _tmp29_ = result_builder;
873 _tmp30_ = _tmp29_->str;
874 _tmp31_ = g_strdup (_tmp30_);
875 result = _tmp31_;
876 _g_string_free0 (result_builder);
877 return result;
878 }
879
880 /**
881 * Converts a string from lower_case to CamelCase.
882 *
883 * @param lower_case a string in lower case
884 * @return the specified string converted to camel case
885 */
886 gchar*
vala_symbol_lower_case_to_camel_case(const gchar * lower_case)887 vala_symbol_lower_case_to_camel_case (const gchar* lower_case)
888 {
889 GString* result_builder = NULL;
890 GString* _tmp0_;
891 const gchar* i = NULL;
892 gboolean last_underscore = FALSE;
893 GString* _tmp10_;
894 const gchar* _tmp11_;
895 gchar* _tmp12_;
896 gchar* result = NULL;
897 g_return_val_if_fail (lower_case != NULL, NULL);
898 _tmp0_ = g_string_new ("");
899 result_builder = _tmp0_;
900 i = lower_case;
901 last_underscore = TRUE;
902 while (TRUE) {
903 const gchar* _tmp1_;
904 gint _tmp2_;
905 gint _tmp3_;
906 gunichar c = 0U;
907 const gchar* _tmp4_;
908 const gchar* _tmp8_;
909 const gchar* _tmp9_;
910 _tmp1_ = i;
911 _tmp2_ = strlen (_tmp1_);
912 _tmp3_ = _tmp2_;
913 if (!(_tmp3_ > 0)) {
914 break;
915 }
916 _tmp4_ = i;
917 c = string_get_char (_tmp4_, (glong) 0);
918 if (c == ((gunichar) '_')) {
919 last_underscore = TRUE;
920 } else {
921 if (g_unichar_isupper (c)) {
922 gchar* _tmp5_;
923 _tmp5_ = g_strdup (lower_case);
924 result = _tmp5_;
925 _g_string_free0 (result_builder);
926 return result;
927 } else {
928 if (last_underscore) {
929 GString* _tmp6_;
930 _tmp6_ = result_builder;
931 g_string_append_unichar (_tmp6_, g_unichar_toupper (c));
932 last_underscore = FALSE;
933 } else {
934 GString* _tmp7_;
935 _tmp7_ = result_builder;
936 g_string_append_unichar (_tmp7_, c);
937 }
938 }
939 }
940 _tmp8_ = i;
941 _tmp9_ = g_utf8_next_char (_tmp8_);
942 i = _tmp9_;
943 }
944 _tmp10_ = result_builder;
945 _tmp11_ = _tmp10_->str;
946 _tmp12_ = g_strdup (_tmp11_);
947 result = _tmp12_;
948 _g_string_free0 (result_builder);
949 return result;
950 }
951
952 /**
953 * Implementation of GLib.EqualFunc to use with e.g. HashMap
954 *
955 * @param a a symbol
956 * @param b a symbol
957 * @return whether the given instances represent the same symbol
958 */
959 gboolean
vala_symbol_equal_func(ValaSymbol * a,ValaSymbol * b)960 vala_symbol_equal_func (ValaSymbol* a,
961 ValaSymbol* b)
962 {
963 GEqualFunc _tmp0_;
964 gchar* _tmp1_;
965 gchar* _tmp2_;
966 gchar* _tmp3_;
967 gchar* _tmp4_;
968 gboolean _tmp5_;
969 gboolean result = FALSE;
970 g_return_val_if_fail (a != NULL, FALSE);
971 g_return_val_if_fail (b != NULL, FALSE);
972 _tmp0_ = g_str_equal;
973 _tmp1_ = vala_symbol_get_full_name (a);
974 _tmp2_ = _tmp1_;
975 _tmp3_ = vala_symbol_get_full_name (b);
976 _tmp4_ = _tmp3_;
977 _tmp5_ = _tmp0_ (_tmp2_, _tmp4_);
978 _g_free0 (_tmp4_);
979 _g_free0 (_tmp2_);
980 result = _tmp5_;
981 return result;
982 }
983
984 /**
985 * Implementation of GLib.HashFunc to use with e.g. HashMap
986 *
987 * @param s a symbol
988 * @return a hash value
989 */
990 guint
vala_symbol_hash_func(ValaSymbol * s)991 vala_symbol_hash_func (ValaSymbol* s)
992 {
993 GHashFunc _tmp0_;
994 gchar* _tmp1_;
995 gchar* _tmp2_;
996 guint _tmp3_;
997 guint result = 0U;
998 g_return_val_if_fail (s != NULL, 0U);
999 _tmp0_ = g_str_hash;
1000 _tmp1_ = vala_symbol_get_full_name (s);
1001 _tmp2_ = _tmp1_;
1002 _tmp3_ = _tmp0_ (_tmp2_);
1003 _g_free0 (_tmp2_);
1004 result = _tmp3_;
1005 return result;
1006 }
1007
1008 static gpointer
_vala_scope_ref0(gpointer self)1009 _vala_scope_ref0 (gpointer self)
1010 {
1011 return self ? vala_scope_ref (self) : NULL;
1012 }
1013
1014 ValaScope*
vala_symbol_get_top_accessible_scope(ValaSymbol * self,gboolean is_internal)1015 vala_symbol_get_top_accessible_scope (ValaSymbol* self,
1016 gboolean is_internal)
1017 {
1018 ValaSymbolAccessibility _tmp0_;
1019 ValaSymbolAccessibility _tmp4_;
1020 ValaSymbol* _tmp5_;
1021 ValaSymbol* _tmp6_;
1022 ValaSymbol* _tmp10_;
1023 ValaSymbol* _tmp11_;
1024 ValaScope* _tmp12_;
1025 ValaScope* result = NULL;
1026 g_return_val_if_fail (self != NULL, NULL);
1027 _tmp0_ = self->priv->_access;
1028 if (_tmp0_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
1029 ValaScope* _tmp1_;
1030 ValaScope* _tmp2_;
1031 ValaScope* _tmp3_;
1032 _tmp1_ = vala_symbol_get_owner (self);
1033 _tmp2_ = _tmp1_;
1034 _tmp3_ = _vala_scope_ref0 (_tmp2_);
1035 result = _tmp3_;
1036 return result;
1037 }
1038 _tmp4_ = self->priv->_access;
1039 if (_tmp4_ == VALA_SYMBOL_ACCESSIBILITY_INTERNAL) {
1040 is_internal = TRUE;
1041 }
1042 _tmp5_ = vala_symbol_get_parent_symbol (self);
1043 _tmp6_ = _tmp5_;
1044 if (_tmp6_ == NULL) {
1045 if (is_internal) {
1046 ValaScope* _tmp7_;
1047 ValaScope* _tmp8_;
1048 ValaScope* _tmp9_;
1049 _tmp7_ = vala_symbol_get_scope (self);
1050 _tmp8_ = _tmp7_;
1051 _tmp9_ = _vala_scope_ref0 (_tmp8_);
1052 result = _tmp9_;
1053 return result;
1054 } else {
1055 result = NULL;
1056 return result;
1057 }
1058 }
1059 _tmp10_ = vala_symbol_get_parent_symbol (self);
1060 _tmp11_ = _tmp10_;
1061 _tmp12_ = vala_symbol_get_top_accessible_scope (_tmp11_, is_internal);
1062 result = _tmp12_;
1063 return result;
1064 }
1065
1066 static gboolean
vala_symbol_real_is_instance_member(ValaSymbol * self)1067 vala_symbol_real_is_instance_member (ValaSymbol* self)
1068 {
1069 gboolean instance = FALSE;
1070 gboolean result = FALSE;
1071 instance = TRUE;
1072 if (VALA_IS_FIELD (self)) {
1073 ValaField* f = NULL;
1074 ValaField* _tmp0_;
1075 ValaField* _tmp1_;
1076 ValaMemberBinding _tmp2_;
1077 ValaMemberBinding _tmp3_;
1078 _tmp0_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_FIELD, ValaField));
1079 f = _tmp0_;
1080 _tmp1_ = f;
1081 _tmp2_ = vala_field_get_binding (_tmp1_);
1082 _tmp3_ = _tmp2_;
1083 instance = _tmp3_ == VALA_MEMBER_BINDING_INSTANCE;
1084 _vala_code_node_unref0 (f);
1085 } else {
1086 if (VALA_IS_METHOD (self)) {
1087 ValaMethod* m = NULL;
1088 ValaMethod* _tmp4_;
1089 ValaMethod* _tmp5_;
1090 _tmp4_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_METHOD, ValaMethod));
1091 m = _tmp4_;
1092 _tmp5_ = m;
1093 if (!VALA_IS_CREATION_METHOD (_tmp5_)) {
1094 ValaMethod* _tmp6_;
1095 ValaMemberBinding _tmp7_;
1096 ValaMemberBinding _tmp8_;
1097 _tmp6_ = m;
1098 _tmp7_ = vala_method_get_binding (_tmp6_);
1099 _tmp8_ = _tmp7_;
1100 instance = _tmp8_ == VALA_MEMBER_BINDING_INSTANCE;
1101 }
1102 _vala_code_node_unref0 (m);
1103 } else {
1104 if (VALA_IS_PROPERTY (self)) {
1105 ValaProperty* prop = NULL;
1106 ValaProperty* _tmp9_;
1107 ValaProperty* _tmp10_;
1108 ValaMemberBinding _tmp11_;
1109 ValaMemberBinding _tmp12_;
1110 _tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_PROPERTY, ValaProperty));
1111 prop = _tmp9_;
1112 _tmp10_ = prop;
1113 _tmp11_ = vala_property_get_binding (_tmp10_);
1114 _tmp12_ = _tmp11_;
1115 instance = _tmp12_ == VALA_MEMBER_BINDING_INSTANCE;
1116 _vala_code_node_unref0 (prop);
1117 } else {
1118 if (VALA_IS_ENUM_VALUE (self)) {
1119 instance = FALSE;
1120 } else {
1121 if (VALA_IS_ERROR_CODE (self)) {
1122 instance = FALSE;
1123 }
1124 }
1125 }
1126 }
1127 }
1128 result = instance;
1129 return result;
1130 }
1131
1132 gboolean
vala_symbol_is_instance_member(ValaSymbol * self)1133 vala_symbol_is_instance_member (ValaSymbol* self)
1134 {
1135 g_return_val_if_fail (self != NULL, FALSE);
1136 return VALA_SYMBOL_GET_CLASS (self)->is_instance_member (self);
1137 }
1138
1139 static gboolean
vala_symbol_real_is_class_member(ValaSymbol * self)1140 vala_symbol_real_is_class_member (ValaSymbol* self)
1141 {
1142 gboolean isclass = FALSE;
1143 gboolean result = FALSE;
1144 isclass = TRUE;
1145 if (VALA_IS_FIELD (self)) {
1146 ValaField* f = NULL;
1147 ValaField* _tmp0_;
1148 ValaField* _tmp1_;
1149 ValaMemberBinding _tmp2_;
1150 ValaMemberBinding _tmp3_;
1151 _tmp0_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_FIELD, ValaField));
1152 f = _tmp0_;
1153 _tmp1_ = f;
1154 _tmp2_ = vala_field_get_binding (_tmp1_);
1155 _tmp3_ = _tmp2_;
1156 isclass = _tmp3_ == VALA_MEMBER_BINDING_CLASS;
1157 _vala_code_node_unref0 (f);
1158 } else {
1159 if (VALA_IS_METHOD (self)) {
1160 ValaMethod* m = NULL;
1161 ValaMethod* _tmp4_;
1162 ValaMethod* _tmp5_;
1163 _tmp4_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_METHOD, ValaMethod));
1164 m = _tmp4_;
1165 _tmp5_ = m;
1166 if (!VALA_IS_CREATION_METHOD (_tmp5_)) {
1167 ValaMethod* _tmp6_;
1168 ValaMemberBinding _tmp7_;
1169 ValaMemberBinding _tmp8_;
1170 _tmp6_ = m;
1171 _tmp7_ = vala_method_get_binding (_tmp6_);
1172 _tmp8_ = _tmp7_;
1173 isclass = _tmp8_ == VALA_MEMBER_BINDING_CLASS;
1174 }
1175 _vala_code_node_unref0 (m);
1176 } else {
1177 if (VALA_IS_PROPERTY (self)) {
1178 ValaProperty* prop = NULL;
1179 ValaProperty* _tmp9_;
1180 ValaProperty* _tmp10_;
1181 ValaMemberBinding _tmp11_;
1182 ValaMemberBinding _tmp12_;
1183 _tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_PROPERTY, ValaProperty));
1184 prop = _tmp9_;
1185 _tmp10_ = prop;
1186 _tmp11_ = vala_property_get_binding (_tmp10_);
1187 _tmp12_ = _tmp11_;
1188 isclass = _tmp12_ == VALA_MEMBER_BINDING_CLASS;
1189 _vala_code_node_unref0 (prop);
1190 } else {
1191 if (VALA_IS_ENUM_VALUE (self)) {
1192 isclass = FALSE;
1193 } else {
1194 if (VALA_IS_ERROR_CODE (self)) {
1195 isclass = FALSE;
1196 }
1197 }
1198 }
1199 }
1200 }
1201 result = isclass;
1202 return result;
1203 }
1204
1205 gboolean
vala_symbol_is_class_member(ValaSymbol * self)1206 vala_symbol_is_class_member (ValaSymbol* self)
1207 {
1208 g_return_val_if_fail (self != NULL, FALSE);
1209 return VALA_SYMBOL_GET_CLASS (self)->is_class_member (self);
1210 }
1211
1212 ValaSymbol*
vala_symbol_get_hidden_member(ValaSymbol * self)1213 vala_symbol_get_hidden_member (ValaSymbol* self)
1214 {
1215 ValaSymbol* sym = NULL;
1216 ValaSymbol* _tmp0_;
1217 ValaSymbol* _tmp1_;
1218 ValaSymbol* result = NULL;
1219 g_return_val_if_fail (self != NULL, NULL);
1220 sym = NULL;
1221 _tmp0_ = vala_symbol_get_parent_symbol (self);
1222 _tmp1_ = _tmp0_;
1223 if (VALA_IS_CLASS (_tmp1_)) {
1224 ValaClass* cl = NULL;
1225 ValaSymbol* _tmp2_;
1226 ValaSymbol* _tmp3_;
1227 ValaClass* _tmp4_;
1228 ValaClass* _tmp5_;
1229 ValaClass* _tmp6_;
1230 _tmp2_ = vala_symbol_get_parent_symbol (self);
1231 _tmp3_ = _tmp2_;
1232 _tmp4_ = vala_class_get_base_class (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, VALA_TYPE_CLASS, ValaClass));
1233 _tmp5_ = _tmp4_;
1234 _tmp6_ = _vala_code_node_ref0 (_tmp5_);
1235 cl = _tmp6_;
1236 while (TRUE) {
1237 ValaClass* _tmp7_;
1238 ValaClass* _tmp8_;
1239 ValaScope* _tmp9_;
1240 ValaScope* _tmp10_;
1241 const gchar* _tmp11_;
1242 ValaSymbol* _tmp12_;
1243 gboolean _tmp13_ = FALSE;
1244 ValaSymbol* _tmp14_;
1245 ValaClass* _tmp17_;
1246 ValaClass* _tmp18_;
1247 ValaClass* _tmp19_;
1248 ValaClass* _tmp20_;
1249 _tmp7_ = cl;
1250 if (!(_tmp7_ != NULL)) {
1251 break;
1252 }
1253 _tmp8_ = cl;
1254 _tmp9_ = vala_symbol_get_scope ((ValaSymbol*) _tmp8_);
1255 _tmp10_ = _tmp9_;
1256 _tmp11_ = self->priv->_name;
1257 _tmp12_ = vala_scope_lookup (_tmp10_, _tmp11_);
1258 _vala_code_node_unref0 (sym);
1259 sym = _tmp12_;
1260 _tmp14_ = sym;
1261 if (_tmp14_ != NULL) {
1262 ValaSymbol* _tmp15_;
1263 ValaSymbolAccessibility _tmp16_;
1264 _tmp15_ = sym;
1265 _tmp16_ = _tmp15_->priv->_access;
1266 _tmp13_ = _tmp16_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
1267 } else {
1268 _tmp13_ = FALSE;
1269 }
1270 if (_tmp13_) {
1271 result = sym;
1272 _vala_code_node_unref0 (cl);
1273 return result;
1274 }
1275 _tmp17_ = cl;
1276 _tmp18_ = vala_class_get_base_class (_tmp17_);
1277 _tmp19_ = _tmp18_;
1278 _tmp20_ = _vala_code_node_ref0 (_tmp19_);
1279 _vala_code_node_unref0 (cl);
1280 cl = _tmp20_;
1281 }
1282 _vala_code_node_unref0 (cl);
1283 } else {
1284 ValaSymbol* _tmp21_;
1285 ValaSymbol* _tmp22_;
1286 _tmp21_ = vala_symbol_get_parent_symbol (self);
1287 _tmp22_ = _tmp21_;
1288 if (VALA_IS_STRUCT (_tmp22_)) {
1289 ValaStruct* st = NULL;
1290 ValaSymbol* _tmp23_;
1291 ValaSymbol* _tmp24_;
1292 ValaStruct* _tmp25_;
1293 ValaStruct* _tmp26_;
1294 ValaStruct* _tmp27_;
1295 _tmp23_ = vala_symbol_get_parent_symbol (self);
1296 _tmp24_ = _tmp23_;
1297 _tmp25_ = vala_struct_get_base_struct (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, VALA_TYPE_STRUCT, ValaStruct));
1298 _tmp26_ = _tmp25_;
1299 _tmp27_ = _vala_code_node_ref0 (_tmp26_);
1300 st = _tmp27_;
1301 while (TRUE) {
1302 ValaStruct* _tmp28_;
1303 ValaStruct* _tmp29_;
1304 ValaScope* _tmp30_;
1305 ValaScope* _tmp31_;
1306 const gchar* _tmp32_;
1307 ValaSymbol* _tmp33_;
1308 gboolean _tmp34_ = FALSE;
1309 ValaSymbol* _tmp35_;
1310 ValaStruct* _tmp38_;
1311 ValaStruct* _tmp39_;
1312 ValaStruct* _tmp40_;
1313 ValaStruct* _tmp41_;
1314 _tmp28_ = st;
1315 if (!(_tmp28_ != NULL)) {
1316 break;
1317 }
1318 _tmp29_ = st;
1319 _tmp30_ = vala_symbol_get_scope ((ValaSymbol*) _tmp29_);
1320 _tmp31_ = _tmp30_;
1321 _tmp32_ = self->priv->_name;
1322 _tmp33_ = vala_scope_lookup (_tmp31_, _tmp32_);
1323 _vala_code_node_unref0 (sym);
1324 sym = _tmp33_;
1325 _tmp35_ = sym;
1326 if (_tmp35_ != NULL) {
1327 ValaSymbol* _tmp36_;
1328 ValaSymbolAccessibility _tmp37_;
1329 _tmp36_ = sym;
1330 _tmp37_ = _tmp36_->priv->_access;
1331 _tmp34_ = _tmp37_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
1332 } else {
1333 _tmp34_ = FALSE;
1334 }
1335 if (_tmp34_) {
1336 result = sym;
1337 _vala_code_node_unref0 (st);
1338 return result;
1339 }
1340 _tmp38_ = st;
1341 _tmp39_ = vala_struct_get_base_struct (_tmp38_);
1342 _tmp40_ = _tmp39_;
1343 _tmp41_ = _vala_code_node_ref0 (_tmp40_);
1344 _vala_code_node_unref0 (st);
1345 st = _tmp41_;
1346 }
1347 _vala_code_node_unref0 (st);
1348 }
1349 }
1350 result = NULL;
1351 _vala_code_node_unref0 (sym);
1352 return result;
1353 }
1354
1355 gboolean
vala_symbol_is_accessible(ValaSymbol * self,ValaSymbol * sym)1356 vala_symbol_is_accessible (ValaSymbol* self,
1357 ValaSymbol* sym)
1358 {
1359 ValaScope* sym_scope = NULL;
1360 ValaScope* _tmp0_;
1361 ValaScope* this_scope = NULL;
1362 ValaScope* _tmp1_;
1363 gboolean _tmp2_ = FALSE;
1364 gboolean _tmp3_ = FALSE;
1365 ValaScope* _tmp4_;
1366 gboolean result = FALSE;
1367 g_return_val_if_fail (self != NULL, FALSE);
1368 g_return_val_if_fail (sym != NULL, FALSE);
1369 _tmp0_ = vala_symbol_get_top_accessible_scope (sym, FALSE);
1370 sym_scope = _tmp0_;
1371 _tmp1_ = vala_symbol_get_top_accessible_scope (self, FALSE);
1372 this_scope = _tmp1_;
1373 _tmp4_ = sym_scope;
1374 if (_tmp4_ == NULL) {
1375 ValaScope* _tmp5_;
1376 _tmp5_ = this_scope;
1377 _tmp3_ = _tmp5_ != NULL;
1378 } else {
1379 _tmp3_ = FALSE;
1380 }
1381 if (_tmp3_) {
1382 _tmp2_ = TRUE;
1383 } else {
1384 gboolean _tmp6_ = FALSE;
1385 ValaScope* _tmp7_;
1386 _tmp7_ = sym_scope;
1387 if (_tmp7_ != NULL) {
1388 ValaScope* _tmp8_;
1389 ValaScope* _tmp9_;
1390 _tmp8_ = sym_scope;
1391 _tmp9_ = this_scope;
1392 _tmp6_ = !vala_scope_is_subscope_of (_tmp8_, _tmp9_);
1393 } else {
1394 _tmp6_ = FALSE;
1395 }
1396 _tmp2_ = _tmp6_;
1397 }
1398 if (_tmp2_) {
1399 result = FALSE;
1400 _vala_scope_unref0 (this_scope);
1401 _vala_scope_unref0 (sym_scope);
1402 return result;
1403 }
1404 result = TRUE;
1405 _vala_scope_unref0 (this_scope);
1406 _vala_scope_unref0 (sym_scope);
1407 return result;
1408 }
1409
1410 static void
vala_symbol_real_add_namespace(ValaSymbol * self,ValaNamespace * ns)1411 vala_symbol_real_add_namespace (ValaSymbol* self,
1412 ValaNamespace* ns)
1413 {
1414 ValaSourceReference* _tmp0_;
1415 ValaSourceReference* _tmp1_;
1416 gchar* _tmp2_;
1417 gchar* _tmp3_;
1418 gchar* _tmp4_;
1419 gchar* _tmp5_;
1420 g_return_if_fail (ns != NULL);
1421 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) ns);
1422 _tmp1_ = _tmp0_;
1423 _tmp2_ = vala_symbol_get_full_name (self);
1424 _tmp3_ = _tmp2_;
1425 _tmp4_ = g_strdup_printf ("inner `%s' is not supported in `%s'", "namespace", _tmp3_);
1426 _tmp5_ = _tmp4_;
1427 vala_report_error (_tmp1_, _tmp5_);
1428 _g_free0 (_tmp5_);
1429 _g_free0 (_tmp3_);
1430 }
1431
1432 void
vala_symbol_add_namespace(ValaSymbol * self,ValaNamespace * ns)1433 vala_symbol_add_namespace (ValaSymbol* self,
1434 ValaNamespace* ns)
1435 {
1436 g_return_if_fail (self != NULL);
1437 VALA_SYMBOL_GET_CLASS (self)->add_namespace (self, ns);
1438 }
1439
1440 static void
vala_symbol_real_add_class(ValaSymbol * self,ValaClass * cl)1441 vala_symbol_real_add_class (ValaSymbol* self,
1442 ValaClass* cl)
1443 {
1444 ValaSourceReference* _tmp0_;
1445 ValaSourceReference* _tmp1_;
1446 gchar* _tmp2_;
1447 gchar* _tmp3_;
1448 gchar* _tmp4_;
1449 gchar* _tmp5_;
1450 g_return_if_fail (cl != NULL);
1451 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
1452 _tmp1_ = _tmp0_;
1453 _tmp2_ = vala_symbol_get_full_name (self);
1454 _tmp3_ = _tmp2_;
1455 _tmp4_ = g_strdup_printf ("inner `%s' types are not supported in `%s'", "class", _tmp3_);
1456 _tmp5_ = _tmp4_;
1457 vala_report_error (_tmp1_, _tmp5_);
1458 _g_free0 (_tmp5_);
1459 _g_free0 (_tmp3_);
1460 }
1461
1462 void
vala_symbol_add_class(ValaSymbol * self,ValaClass * cl)1463 vala_symbol_add_class (ValaSymbol* self,
1464 ValaClass* cl)
1465 {
1466 g_return_if_fail (self != NULL);
1467 VALA_SYMBOL_GET_CLASS (self)->add_class (self, cl);
1468 }
1469
1470 static void
vala_symbol_real_add_interface(ValaSymbol * self,ValaInterface * iface)1471 vala_symbol_real_add_interface (ValaSymbol* self,
1472 ValaInterface* iface)
1473 {
1474 ValaSourceReference* _tmp0_;
1475 ValaSourceReference* _tmp1_;
1476 gchar* _tmp2_;
1477 gchar* _tmp3_;
1478 gchar* _tmp4_;
1479 gchar* _tmp5_;
1480 g_return_if_fail (iface != NULL);
1481 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) iface);
1482 _tmp1_ = _tmp0_;
1483 _tmp2_ = vala_symbol_get_full_name (self);
1484 _tmp3_ = _tmp2_;
1485 _tmp4_ = g_strdup_printf ("inner `%s' types are not supported in `%s'", "interface", _tmp3_);
1486 _tmp5_ = _tmp4_;
1487 vala_report_error (_tmp1_, _tmp5_);
1488 _g_free0 (_tmp5_);
1489 _g_free0 (_tmp3_);
1490 }
1491
1492 void
vala_symbol_add_interface(ValaSymbol * self,ValaInterface * iface)1493 vala_symbol_add_interface (ValaSymbol* self,
1494 ValaInterface* iface)
1495 {
1496 g_return_if_fail (self != NULL);
1497 VALA_SYMBOL_GET_CLASS (self)->add_interface (self, iface);
1498 }
1499
1500 static void
vala_symbol_real_add_struct(ValaSymbol * self,ValaStruct * st)1501 vala_symbol_real_add_struct (ValaSymbol* self,
1502 ValaStruct* st)
1503 {
1504 ValaSourceReference* _tmp0_;
1505 ValaSourceReference* _tmp1_;
1506 gchar* _tmp2_;
1507 gchar* _tmp3_;
1508 gchar* _tmp4_;
1509 gchar* _tmp5_;
1510 g_return_if_fail (st != NULL);
1511 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) st);
1512 _tmp1_ = _tmp0_;
1513 _tmp2_ = vala_symbol_get_full_name (self);
1514 _tmp3_ = _tmp2_;
1515 _tmp4_ = g_strdup_printf ("inner `%s' types are not supported in `%s'", "struct", _tmp3_);
1516 _tmp5_ = _tmp4_;
1517 vala_report_error (_tmp1_, _tmp5_);
1518 _g_free0 (_tmp5_);
1519 _g_free0 (_tmp3_);
1520 }
1521
1522 void
vala_symbol_add_struct(ValaSymbol * self,ValaStruct * st)1523 vala_symbol_add_struct (ValaSymbol* self,
1524 ValaStruct* st)
1525 {
1526 g_return_if_fail (self != NULL);
1527 VALA_SYMBOL_GET_CLASS (self)->add_struct (self, st);
1528 }
1529
1530 static void
vala_symbol_real_add_enum(ValaSymbol * self,ValaEnum * en)1531 vala_symbol_real_add_enum (ValaSymbol* self,
1532 ValaEnum* en)
1533 {
1534 ValaSourceReference* _tmp0_;
1535 ValaSourceReference* _tmp1_;
1536 gchar* _tmp2_;
1537 gchar* _tmp3_;
1538 gchar* _tmp4_;
1539 gchar* _tmp5_;
1540 g_return_if_fail (en != NULL);
1541 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) en);
1542 _tmp1_ = _tmp0_;
1543 _tmp2_ = vala_symbol_get_full_name (self);
1544 _tmp3_ = _tmp2_;
1545 _tmp4_ = g_strdup_printf ("inner `%s' types are not supported in `%s'", "enum", _tmp3_);
1546 _tmp5_ = _tmp4_;
1547 vala_report_error (_tmp1_, _tmp5_);
1548 _g_free0 (_tmp5_);
1549 _g_free0 (_tmp3_);
1550 }
1551
1552 void
vala_symbol_add_enum(ValaSymbol * self,ValaEnum * en)1553 vala_symbol_add_enum (ValaSymbol* self,
1554 ValaEnum* en)
1555 {
1556 g_return_if_fail (self != NULL);
1557 VALA_SYMBOL_GET_CLASS (self)->add_enum (self, en);
1558 }
1559
1560 static void
vala_symbol_real_add_error_domain(ValaSymbol * self,ValaErrorDomain * edomain)1561 vala_symbol_real_add_error_domain (ValaSymbol* self,
1562 ValaErrorDomain* edomain)
1563 {
1564 ValaSourceReference* _tmp0_;
1565 ValaSourceReference* _tmp1_;
1566 gchar* _tmp2_;
1567 gchar* _tmp3_;
1568 gchar* _tmp4_;
1569 gchar* _tmp5_;
1570 g_return_if_fail (edomain != NULL);
1571 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) edomain);
1572 _tmp1_ = _tmp0_;
1573 _tmp2_ = vala_symbol_get_full_name (self);
1574 _tmp3_ = _tmp2_;
1575 _tmp4_ = g_strdup_printf ("inner `%s' types are not supported in `%s'", "errordomain", _tmp3_);
1576 _tmp5_ = _tmp4_;
1577 vala_report_error (_tmp1_, _tmp5_);
1578 _g_free0 (_tmp5_);
1579 _g_free0 (_tmp3_);
1580 }
1581
1582 void
vala_symbol_add_error_domain(ValaSymbol * self,ValaErrorDomain * edomain)1583 vala_symbol_add_error_domain (ValaSymbol* self,
1584 ValaErrorDomain* edomain)
1585 {
1586 g_return_if_fail (self != NULL);
1587 VALA_SYMBOL_GET_CLASS (self)->add_error_domain (self, edomain);
1588 }
1589
1590 static void
vala_symbol_real_add_delegate(ValaSymbol * self,ValaDelegate * d)1591 vala_symbol_real_add_delegate (ValaSymbol* self,
1592 ValaDelegate* d)
1593 {
1594 ValaSourceReference* _tmp0_;
1595 ValaSourceReference* _tmp1_;
1596 gchar* _tmp2_;
1597 gchar* _tmp3_;
1598 gchar* _tmp4_;
1599 gchar* _tmp5_;
1600 g_return_if_fail (d != NULL);
1601 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) d);
1602 _tmp1_ = _tmp0_;
1603 _tmp2_ = vala_symbol_get_full_name (self);
1604 _tmp3_ = _tmp2_;
1605 _tmp4_ = g_strdup_printf ("inner `%s' types are not supported in `%s'", "delegate", _tmp3_);
1606 _tmp5_ = _tmp4_;
1607 vala_report_error (_tmp1_, _tmp5_);
1608 _g_free0 (_tmp5_);
1609 _g_free0 (_tmp3_);
1610 }
1611
1612 void
vala_symbol_add_delegate(ValaSymbol * self,ValaDelegate * d)1613 vala_symbol_add_delegate (ValaSymbol* self,
1614 ValaDelegate* d)
1615 {
1616 g_return_if_fail (self != NULL);
1617 VALA_SYMBOL_GET_CLASS (self)->add_delegate (self, d);
1618 }
1619
1620 static void
vala_symbol_real_add_constant(ValaSymbol * self,ValaConstant * constant)1621 vala_symbol_real_add_constant (ValaSymbol* self,
1622 ValaConstant* constant)
1623 {
1624 ValaSourceReference* _tmp0_;
1625 ValaSourceReference* _tmp1_;
1626 gchar* _tmp2_;
1627 gchar* _tmp3_;
1628 gchar* _tmp4_;
1629 gchar* _tmp5_;
1630 g_return_if_fail (constant != NULL);
1631 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) constant);
1632 _tmp1_ = _tmp0_;
1633 _tmp2_ = vala_symbol_get_full_name (self);
1634 _tmp3_ = _tmp2_;
1635 _tmp4_ = g_strdup_printf ("constants are not allowed in `%s'", _tmp3_);
1636 _tmp5_ = _tmp4_;
1637 vala_report_error (_tmp1_, _tmp5_);
1638 _g_free0 (_tmp5_);
1639 _g_free0 (_tmp3_);
1640 }
1641
1642 void
vala_symbol_add_constant(ValaSymbol * self,ValaConstant * constant)1643 vala_symbol_add_constant (ValaSymbol* self,
1644 ValaConstant* constant)
1645 {
1646 g_return_if_fail (self != NULL);
1647 VALA_SYMBOL_GET_CLASS (self)->add_constant (self, constant);
1648 }
1649
1650 static void
vala_symbol_real_add_field(ValaSymbol * self,ValaField * f)1651 vala_symbol_real_add_field (ValaSymbol* self,
1652 ValaField* f)
1653 {
1654 ValaSourceReference* _tmp0_;
1655 ValaSourceReference* _tmp1_;
1656 gchar* _tmp2_;
1657 gchar* _tmp3_;
1658 gchar* _tmp4_;
1659 gchar* _tmp5_;
1660 g_return_if_fail (f != NULL);
1661 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) f);
1662 _tmp1_ = _tmp0_;
1663 _tmp2_ = vala_symbol_get_full_name (self);
1664 _tmp3_ = _tmp2_;
1665 _tmp4_ = g_strdup_printf ("fields are not allowed in `%s'", _tmp3_);
1666 _tmp5_ = _tmp4_;
1667 vala_report_error (_tmp1_, _tmp5_);
1668 _g_free0 (_tmp5_);
1669 _g_free0 (_tmp3_);
1670 }
1671
1672 void
vala_symbol_add_field(ValaSymbol * self,ValaField * f)1673 vala_symbol_add_field (ValaSymbol* self,
1674 ValaField* f)
1675 {
1676 g_return_if_fail (self != NULL);
1677 VALA_SYMBOL_GET_CLASS (self)->add_field (self, f);
1678 }
1679
1680 static void
vala_symbol_real_add_method(ValaSymbol * self,ValaMethod * m)1681 vala_symbol_real_add_method (ValaSymbol* self,
1682 ValaMethod* m)
1683 {
1684 ValaSourceReference* _tmp0_;
1685 ValaSourceReference* _tmp1_;
1686 gchar* _tmp2_;
1687 gchar* _tmp3_;
1688 gchar* _tmp4_;
1689 gchar* _tmp5_;
1690 g_return_if_fail (m != NULL);
1691 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) m);
1692 _tmp1_ = _tmp0_;
1693 _tmp2_ = vala_symbol_get_full_name (self);
1694 _tmp3_ = _tmp2_;
1695 _tmp4_ = g_strdup_printf ("methods are not allowed in `%s'", _tmp3_);
1696 _tmp5_ = _tmp4_;
1697 vala_report_error (_tmp1_, _tmp5_);
1698 _g_free0 (_tmp5_);
1699 _g_free0 (_tmp3_);
1700 }
1701
1702 void
vala_symbol_add_method(ValaSymbol * self,ValaMethod * m)1703 vala_symbol_add_method (ValaSymbol* self,
1704 ValaMethod* m)
1705 {
1706 g_return_if_fail (self != NULL);
1707 VALA_SYMBOL_GET_CLASS (self)->add_method (self, m);
1708 }
1709
1710 static void
vala_symbol_real_add_property(ValaSymbol * self,ValaProperty * prop)1711 vala_symbol_real_add_property (ValaSymbol* self,
1712 ValaProperty* prop)
1713 {
1714 ValaSourceReference* _tmp0_;
1715 ValaSourceReference* _tmp1_;
1716 gchar* _tmp2_;
1717 gchar* _tmp3_;
1718 gchar* _tmp4_;
1719 gchar* _tmp5_;
1720 g_return_if_fail (prop != NULL);
1721 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) prop);
1722 _tmp1_ = _tmp0_;
1723 _tmp2_ = vala_symbol_get_full_name (self);
1724 _tmp3_ = _tmp2_;
1725 _tmp4_ = g_strdup_printf ("properties are not allowed in `%s'", _tmp3_);
1726 _tmp5_ = _tmp4_;
1727 vala_report_error (_tmp1_, _tmp5_);
1728 _g_free0 (_tmp5_);
1729 _g_free0 (_tmp3_);
1730 }
1731
1732 void
vala_symbol_add_property(ValaSymbol * self,ValaProperty * prop)1733 vala_symbol_add_property (ValaSymbol* self,
1734 ValaProperty* prop)
1735 {
1736 g_return_if_fail (self != NULL);
1737 VALA_SYMBOL_GET_CLASS (self)->add_property (self, prop);
1738 }
1739
1740 static void
vala_symbol_real_add_signal(ValaSymbol * self,ValaSignal * sig)1741 vala_symbol_real_add_signal (ValaSymbol* self,
1742 ValaSignal* sig)
1743 {
1744 ValaSourceReference* _tmp0_;
1745 ValaSourceReference* _tmp1_;
1746 gchar* _tmp2_;
1747 gchar* _tmp3_;
1748 gchar* _tmp4_;
1749 gchar* _tmp5_;
1750 g_return_if_fail (sig != NULL);
1751 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) sig);
1752 _tmp1_ = _tmp0_;
1753 _tmp2_ = vala_symbol_get_full_name (self);
1754 _tmp3_ = _tmp2_;
1755 _tmp4_ = g_strdup_printf ("signals are not allowed in `%s'", _tmp3_);
1756 _tmp5_ = _tmp4_;
1757 vala_report_error (_tmp1_, _tmp5_);
1758 _g_free0 (_tmp5_);
1759 _g_free0 (_tmp3_);
1760 }
1761
1762 void
vala_symbol_add_signal(ValaSymbol * self,ValaSignal * sig)1763 vala_symbol_add_signal (ValaSymbol* self,
1764 ValaSignal* sig)
1765 {
1766 g_return_if_fail (self != NULL);
1767 VALA_SYMBOL_GET_CLASS (self)->add_signal (self, sig);
1768 }
1769
1770 static void
vala_symbol_real_add_constructor(ValaSymbol * self,ValaConstructor * c)1771 vala_symbol_real_add_constructor (ValaSymbol* self,
1772 ValaConstructor* c)
1773 {
1774 ValaSourceReference* _tmp0_;
1775 ValaSourceReference* _tmp1_;
1776 gchar* _tmp2_;
1777 gchar* _tmp3_;
1778 gchar* _tmp4_;
1779 gchar* _tmp5_;
1780 g_return_if_fail (c != NULL);
1781 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
1782 _tmp1_ = _tmp0_;
1783 _tmp2_ = vala_symbol_get_full_name (self);
1784 _tmp3_ = _tmp2_;
1785 _tmp4_ = g_strdup_printf ("constructors are not allowed in `%s'", _tmp3_);
1786 _tmp5_ = _tmp4_;
1787 vala_report_error (_tmp1_, _tmp5_);
1788 _g_free0 (_tmp5_);
1789 _g_free0 (_tmp3_);
1790 }
1791
1792 void
vala_symbol_add_constructor(ValaSymbol * self,ValaConstructor * c)1793 vala_symbol_add_constructor (ValaSymbol* self,
1794 ValaConstructor* c)
1795 {
1796 g_return_if_fail (self != NULL);
1797 VALA_SYMBOL_GET_CLASS (self)->add_constructor (self, c);
1798 }
1799
1800 static void
vala_symbol_real_add_destructor(ValaSymbol * self,ValaDestructor * d)1801 vala_symbol_real_add_destructor (ValaSymbol* self,
1802 ValaDestructor* d)
1803 {
1804 ValaSourceReference* _tmp0_;
1805 ValaSourceReference* _tmp1_;
1806 gchar* _tmp2_;
1807 gchar* _tmp3_;
1808 gchar* _tmp4_;
1809 gchar* _tmp5_;
1810 g_return_if_fail (d != NULL);
1811 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) d);
1812 _tmp1_ = _tmp0_;
1813 _tmp2_ = vala_symbol_get_full_name (self);
1814 _tmp3_ = _tmp2_;
1815 _tmp4_ = g_strdup_printf ("destructors are not allowed in `%s'", _tmp3_);
1816 _tmp5_ = _tmp4_;
1817 vala_report_error (_tmp1_, _tmp5_);
1818 _g_free0 (_tmp5_);
1819 _g_free0 (_tmp3_);
1820 }
1821
1822 void
vala_symbol_add_destructor(ValaSymbol * self,ValaDestructor * d)1823 vala_symbol_add_destructor (ValaSymbol* self,
1824 ValaDestructor* d)
1825 {
1826 g_return_if_fail (self != NULL);
1827 VALA_SYMBOL_GET_CLASS (self)->add_destructor (self, d);
1828 }
1829
1830 static gchar*
vala_symbol_real_to_string(ValaCodeNode * base)1831 vala_symbol_real_to_string (ValaCodeNode* base)
1832 {
1833 ValaSymbol * self;
1834 gchar* _tmp0_;
1835 gchar* result = NULL;
1836 self = (ValaSymbol*) base;
1837 _tmp0_ = vala_symbol_get_full_name (self);
1838 result = _tmp0_;
1839 return result;
1840 }
1841
1842 static void
vala_symbol_class_init(ValaSymbolClass * klass,gpointer klass_data)1843 vala_symbol_class_init (ValaSymbolClass * klass,
1844 gpointer klass_data)
1845 {
1846 vala_symbol_parent_class = g_type_class_peek_parent (klass);
1847 ((ValaCodeNodeClass *) klass)->finalize = vala_symbol_finalize;
1848 g_type_class_adjust_private_offset (klass, &ValaSymbol_private_offset);
1849 ((ValaSymbolClass *) klass)->is_instance_member = (gboolean (*) (ValaSymbol*)) vala_symbol_real_is_instance_member;
1850 ((ValaSymbolClass *) klass)->is_class_member = (gboolean (*) (ValaSymbol*)) vala_symbol_real_is_class_member;
1851 ((ValaSymbolClass *) klass)->add_namespace = (void (*) (ValaSymbol*, ValaNamespace*)) vala_symbol_real_add_namespace;
1852 ((ValaSymbolClass *) klass)->add_class = (void (*) (ValaSymbol*, ValaClass*)) vala_symbol_real_add_class;
1853 ((ValaSymbolClass *) klass)->add_interface = (void (*) (ValaSymbol*, ValaInterface*)) vala_symbol_real_add_interface;
1854 ((ValaSymbolClass *) klass)->add_struct = (void (*) (ValaSymbol*, ValaStruct*)) vala_symbol_real_add_struct;
1855 ((ValaSymbolClass *) klass)->add_enum = (void (*) (ValaSymbol*, ValaEnum*)) vala_symbol_real_add_enum;
1856 ((ValaSymbolClass *) klass)->add_error_domain = (void (*) (ValaSymbol*, ValaErrorDomain*)) vala_symbol_real_add_error_domain;
1857 ((ValaSymbolClass *) klass)->add_delegate = (void (*) (ValaSymbol*, ValaDelegate*)) vala_symbol_real_add_delegate;
1858 ((ValaSymbolClass *) klass)->add_constant = (void (*) (ValaSymbol*, ValaConstant*)) vala_symbol_real_add_constant;
1859 ((ValaSymbolClass *) klass)->add_field = (void (*) (ValaSymbol*, ValaField*)) vala_symbol_real_add_field;
1860 ((ValaSymbolClass *) klass)->add_method = (void (*) (ValaSymbol*, ValaMethod*)) vala_symbol_real_add_method;
1861 ((ValaSymbolClass *) klass)->add_property = (void (*) (ValaSymbol*, ValaProperty*)) vala_symbol_real_add_property;
1862 ((ValaSymbolClass *) klass)->add_signal = (void (*) (ValaSymbol*, ValaSignal*)) vala_symbol_real_add_signal;
1863 ((ValaSymbolClass *) klass)->add_constructor = (void (*) (ValaSymbol*, ValaConstructor*)) vala_symbol_real_add_constructor;
1864 ((ValaSymbolClass *) klass)->add_destructor = (void (*) (ValaSymbol*, ValaDestructor*)) vala_symbol_real_add_destructor;
1865 ((ValaCodeNodeClass *) klass)->to_string = (gchar* (*) (ValaCodeNode*)) vala_symbol_real_to_string;
1866 }
1867
1868 static void
vala_symbol_instance_init(ValaSymbol * self,gpointer klass)1869 vala_symbol_instance_init (ValaSymbol * self,
1870 gpointer klass)
1871 {
1872 self->priv = vala_symbol_get_instance_private (self);
1873 self->priv->_active = TRUE;
1874 }
1875
1876 static void
vala_symbol_finalize(ValaCodeNode * obj)1877 vala_symbol_finalize (ValaCodeNode * obj)
1878 {
1879 ValaSymbol * self;
1880 self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_SYMBOL, ValaSymbol);
1881 _g_free0 (self->priv->_name);
1882 _vala_comment_unref0 (self->priv->_comment);
1883 _vala_version_attribute_unref0 (self->priv->_version);
1884 _vala_scope_unref0 (self->priv->_scope);
1885 _g_free0 (self->priv->_external);
1886 VALA_CODE_NODE_CLASS (vala_symbol_parent_class)->finalize (obj);
1887 }
1888
1889 /**
1890 * Represents a node in the symbol tree.
1891 */
1892 static GType
vala_symbol_get_type_once(void)1893 vala_symbol_get_type_once (void)
1894 {
1895 static const GTypeInfo g_define_type_info = { sizeof (ValaSymbolClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_symbol_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaSymbol), 0, (GInstanceInitFunc) vala_symbol_instance_init, NULL };
1896 GType vala_symbol_type_id;
1897 vala_symbol_type_id = g_type_register_static (VALA_TYPE_CODE_NODE, "ValaSymbol", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
1898 ValaSymbol_private_offset = g_type_add_instance_private (vala_symbol_type_id, sizeof (ValaSymbolPrivate));
1899 return vala_symbol_type_id;
1900 }
1901
1902 GType
vala_symbol_get_type(void)1903 vala_symbol_get_type (void)
1904 {
1905 static volatile gsize vala_symbol_type_id__volatile = 0;
1906 if (g_once_init_enter (&vala_symbol_type_id__volatile)) {
1907 GType vala_symbol_type_id;
1908 vala_symbol_type_id = vala_symbol_get_type_once ();
1909 g_once_init_leave (&vala_symbol_type_id__volatile, vala_symbol_type_id);
1910 }
1911 return vala_symbol_type_id__volatile;
1912 }
1913
1914 const gchar*
vala_symbol_accessibility_to_string(ValaSymbolAccessibility self)1915 vala_symbol_accessibility_to_string (ValaSymbolAccessibility self)
1916 {
1917 const gchar* result = NULL;
1918 switch (self) {
1919 case VALA_SYMBOL_ACCESSIBILITY_PROTECTED:
1920 {
1921 result = "protected";
1922 return result;
1923 }
1924 case VALA_SYMBOL_ACCESSIBILITY_INTERNAL:
1925 {
1926 result = "internal";
1927 return result;
1928 }
1929 case VALA_SYMBOL_ACCESSIBILITY_PRIVATE:
1930 {
1931 result = "private";
1932 return result;
1933 }
1934 case VALA_SYMBOL_ACCESSIBILITY_PUBLIC:
1935 {
1936 result = "public";
1937 return result;
1938 }
1939 default:
1940 {
1941 g_assert_not_reached ();
1942 }
1943 }
1944 }
1945
1946 static GType
vala_symbol_accessibility_get_type_once(void)1947 vala_symbol_accessibility_get_type_once (void)
1948 {
1949 static const GEnumValue values[] = {{VALA_SYMBOL_ACCESSIBILITY_PRIVATE, "VALA_SYMBOL_ACCESSIBILITY_PRIVATE", "private"}, {VALA_SYMBOL_ACCESSIBILITY_INTERNAL, "VALA_SYMBOL_ACCESSIBILITY_INTERNAL", "internal"}, {VALA_SYMBOL_ACCESSIBILITY_PROTECTED, "VALA_SYMBOL_ACCESSIBILITY_PROTECTED", "protected"}, {VALA_SYMBOL_ACCESSIBILITY_PUBLIC, "VALA_SYMBOL_ACCESSIBILITY_PUBLIC", "public"}, {0, NULL, NULL}};
1950 GType vala_symbol_accessibility_type_id;
1951 vala_symbol_accessibility_type_id = g_enum_register_static ("ValaSymbolAccessibility", values);
1952 return vala_symbol_accessibility_type_id;
1953 }
1954
1955 GType
vala_symbol_accessibility_get_type(void)1956 vala_symbol_accessibility_get_type (void)
1957 {
1958 static volatile gsize vala_symbol_accessibility_type_id__volatile = 0;
1959 if (g_once_init_enter (&vala_symbol_accessibility_type_id__volatile)) {
1960 GType vala_symbol_accessibility_type_id;
1961 vala_symbol_accessibility_type_id = vala_symbol_accessibility_get_type_once ();
1962 g_once_init_leave (&vala_symbol_accessibility_type_id__volatile, vala_symbol_accessibility_type_id);
1963 }
1964 return vala_symbol_accessibility_type_id__volatile;
1965 }
1966
1967 static GType
vala_member_binding_get_type_once(void)1968 vala_member_binding_get_type_once (void)
1969 {
1970 static const GEnumValue values[] = {{VALA_MEMBER_BINDING_INSTANCE, "VALA_MEMBER_BINDING_INSTANCE", "instance"}, {VALA_MEMBER_BINDING_CLASS, "VALA_MEMBER_BINDING_CLASS", "class"}, {VALA_MEMBER_BINDING_STATIC, "VALA_MEMBER_BINDING_STATIC", "static"}, {0, NULL, NULL}};
1971 GType vala_member_binding_type_id;
1972 vala_member_binding_type_id = g_enum_register_static ("ValaMemberBinding", values);
1973 return vala_member_binding_type_id;
1974 }
1975
1976 GType
vala_member_binding_get_type(void)1977 vala_member_binding_get_type (void)
1978 {
1979 static volatile gsize vala_member_binding_type_id__volatile = 0;
1980 if (g_once_init_enter (&vala_member_binding_type_id__volatile)) {
1981 GType vala_member_binding_type_id;
1982 vala_member_binding_type_id = vala_member_binding_get_type_once ();
1983 g_once_init_leave (&vala_member_binding_type_id__volatile, vala_member_binding_type_id);
1984 }
1985 return vala_member_binding_type_id__volatile;
1986 }
1987
1988