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