1 /* symbol.c generated by valac, the Vala compiler
2  * generated from symbol.vala, do not modify */
3 
4 /* symbol.vala
5  *
6  * Copyright (C) 2008-2009 Florian Brosch, Didier Villevalois
7  * Copyright (C) 2011      Florian Brosch
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License as published by the Free Software Foundation; either
12  * version 2.1 of the License, or (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
22  *
23  * Author:
24  * 	Didier 'Ptitjes Villevalois <ptitjes@free.fr>
25  */
26 
27 #include "valadoc.h"
28 #include <valagee.h>
29 #include <glib-object.h>
30 #include <glib.h>
31 #include <vala.h>
32 #include <stdlib.h>
33 #include <string.h>
34 
35 enum  {
36 	VALADOC_API_SYMBOL_0_PROPERTY,
37 	VALADOC_API_SYMBOL_IS_DEPRECATED_PROPERTY,
38 	VALADOC_API_SYMBOL_ACCESSIBILITY_PROPERTY,
39 	VALADOC_API_SYMBOL_IS_PUBLIC_PROPERTY,
40 	VALADOC_API_SYMBOL_IS_PROTECTED_PROPERTY,
41 	VALADOC_API_SYMBOL_IS_INTERNAL_PROPERTY,
42 	VALADOC_API_SYMBOL_IS_PRIVATE_PROPERTY,
43 	VALADOC_API_SYMBOL_NUM_PROPERTIES
44 };
45 static GParamSpec* valadoc_api_symbol_properties[VALADOC_API_SYMBOL_NUM_PROPERTIES];
46 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
47 #define _valadoc_api_source_comment_unref0(var) ((var == NULL) ? NULL : (var = (valadoc_api_source_comment_unref (var), NULL)))
48 #define _g_free0(var) (var = (g_free (var), NULL))
49 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
50 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
51 
52 struct _ValadocApiSymbolPrivate {
53 	ValaArrayList* attributes;
54 	ValadocApiSourceComment* source_comment;
55 	gboolean _is_deprecated;
56 	ValaSymbolAccessibility _accessibility;
57 };
58 
59 static gint ValadocApiSymbol_private_offset;
60 static gpointer valadoc_api_symbol_parent_class = NULL;
61 
62 G_GNUC_INTERNAL void valadoc_api_item_parse_comments (ValadocApiItem* self,
63                                       ValadocSettings* settings,
64                                       ValadocDocumentationParser* parser);
65 G_GNUC_INTERNAL void valadoc_api_item_check_comments (ValadocApiItem* self,
66                                       ValadocSettings* settings,
67                                       ValadocDocumentationParser* parser);
68 static void valadoc_api_symbol_set_is_deprecated (ValadocApiSymbol* self,
69                                            gboolean value);
70 static void valadoc_api_symbol_set_accessibility (ValadocApiSymbol* self,
71                                            ValaSymbolAccessibility value);
72 G_GNUC_INTERNAL void valadoc_api_package_register_deprecated_symbol (ValadocApiPackage* self,
73                                                      ValadocApiSymbol* symbol,
74                                                      const gchar* version);
75 static gboolean valadoc_api_symbol_real_is_browsable (ValadocApiNode* base,
76                                                ValadocSettings* settings);
77 static void valadoc_api_symbol_real_parse_comments (ValadocApiItem* base,
78                                              ValadocSettings* settings,
79                                              ValadocDocumentationParser* parser);
80 G_GNUC_INTERNAL void valadoc_api_node_set_documentation (ValadocApiNode* self,
81                                          ValadocContentComment* value);
82 static void valadoc_api_symbol_real_check_comments (ValadocApiItem* base,
83                                              ValadocSettings* settings,
84                                              ValadocDocumentationParser* parser);
85 static void valadoc_api_symbol_finalize (GObject * obj);
86 static GType valadoc_api_symbol_get_type_once (void);
87 static void _vala_valadoc_api_symbol_get_property (GObject * object,
88                                             guint property_id,
89                                             GValue * value,
90                                             GParamSpec * pspec);
91 static void _vala_valadoc_api_symbol_set_property (GObject * object,
92                                             guint property_id,
93                                             const GValue * value,
94                                             GParamSpec * pspec);
95 
96 static inline gpointer
valadoc_api_symbol_get_instance_private(ValadocApiSymbol * self)97 valadoc_api_symbol_get_instance_private (ValadocApiSymbol* self)
98 {
99 	return G_STRUCT_MEMBER_P (self, ValadocApiSymbol_private_offset);
100 }
101 
102 gboolean
valadoc_api_symbol_get_is_deprecated(ValadocApiSymbol * self)103 valadoc_api_symbol_get_is_deprecated (ValadocApiSymbol* self)
104 {
105 	gboolean result;
106 	g_return_val_if_fail (self != NULL, FALSE);
107 	result = self->priv->_is_deprecated;
108 	return result;
109 }
110 
111 static void
valadoc_api_symbol_set_is_deprecated(ValadocApiSymbol * self,gboolean value)112 valadoc_api_symbol_set_is_deprecated (ValadocApiSymbol* self,
113                                       gboolean value)
114 {
115 	gboolean old_value;
116 	g_return_if_fail (self != NULL);
117 	old_value = valadoc_api_symbol_get_is_deprecated (self);
118 	if (old_value != value) {
119 		self->priv->_is_deprecated = value;
120 		g_object_notify_by_pspec ((GObject *) self, valadoc_api_symbol_properties[VALADOC_API_SYMBOL_IS_DEPRECATED_PROPERTY]);
121 	}
122 }
123 
124 static gpointer
_valadoc_api_source_comment_ref0(gpointer self)125 _valadoc_api_source_comment_ref0 (gpointer self)
126 {
127 	return self ? valadoc_api_source_comment_ref (self) : NULL;
128 }
129 
130 ValadocApiSymbol*
valadoc_api_symbol_construct(GType object_type,ValadocApiNode * parent,ValadocApiSourceFile * file,const gchar * name,ValaSymbolAccessibility accessibility,ValadocApiSourceComment * comment,ValaSymbol * data)131 valadoc_api_symbol_construct (GType object_type,
132                               ValadocApiNode* parent,
133                               ValadocApiSourceFile* file,
134                               const gchar* name,
135                               ValaSymbolAccessibility accessibility,
136                               ValadocApiSourceComment* comment,
137                               ValaSymbol* data)
138 {
139 	ValadocApiSymbol * self = NULL;
140 	ValadocApiSourceComment* _tmp0_;
141 	g_return_val_if_fail (parent != NULL, NULL);
142 	g_return_val_if_fail (file != NULL, NULL);
143 	g_return_val_if_fail (data != NULL, NULL);
144 	self = (ValadocApiSymbol*) valadoc_api_node_construct (object_type, parent, file, name, (ValaCodeNode*) data);
145 	valadoc_api_symbol_set_accessibility (self, accessibility);
146 	_tmp0_ = _valadoc_api_source_comment_ref0 (comment);
147 	_valadoc_api_source_comment_unref0 (self->priv->source_comment);
148 	self->priv->source_comment = _tmp0_;
149 	return self;
150 }
151 
152 static gpointer
_vala_code_node_ref0(gpointer self)153 _vala_code_node_ref0 (gpointer self)
154 {
155 	return self ? vala_code_node_ref (self) : NULL;
156 }
157 
158 void
valadoc_api_symbol_add_attribute(ValadocApiSymbol * self,ValadocApiAttribute * att)159 valadoc_api_symbol_add_attribute (ValadocApiSymbol* self,
160                                   ValadocApiAttribute* att)
161 {
162 	ValaArrayList* _tmp0_;
163 	ValaAttribute* attr = NULL;
164 	ValaCodeNode* _tmp3_;
165 	ValaCodeNode* _tmp4_;
166 	ValaAttribute* _tmp5_;
167 	const gchar* _tmp6_;
168 	const gchar* _tmp7_;
169 	ValaArrayList* _tmp23_;
170 	g_return_if_fail (self != NULL);
171 	g_return_if_fail (att != NULL);
172 	_tmp0_ = self->priv->attributes;
173 	if (_tmp0_ == NULL) {
174 		GEqualFunc _tmp1_;
175 		ValaArrayList* _tmp2_;
176 		_tmp1_ = g_direct_equal;
177 		_tmp2_ = vala_array_list_new (VALADOC_API_TYPE_ATTRIBUTE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp1_);
178 		_vala_iterable_unref0 (self->priv->attributes);
179 		self->priv->attributes = _tmp2_;
180 	}
181 	_tmp3_ = valadoc_api_item_get_data ((ValadocApiItem*) att);
182 	_tmp4_ = _tmp3_;
183 	_tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, VALA_TYPE_ATTRIBUTE, ValaAttribute));
184 	attr = _tmp5_;
185 	_tmp6_ = valadoc_api_attribute_get_name (att);
186 	_tmp7_ = _tmp6_;
187 	if (g_strcmp0 (_tmp7_, "Version") == 0) {
188 		gboolean deprecated = FALSE;
189 		ValaAttribute* _tmp8_;
190 		gchar* version = NULL;
191 		ValaAttribute* _tmp9_;
192 		gchar* _tmp10_;
193 		gboolean _tmp11_ = FALSE;
194 		_tmp8_ = attr;
195 		deprecated = vala_attribute_get_bool (_tmp8_, "deprecated", FALSE);
196 		_tmp9_ = attr;
197 		_tmp10_ = vala_attribute_get_string (_tmp9_, "deprecated_since", NULL);
198 		version = _tmp10_;
199 		if (deprecated) {
200 			_tmp11_ = TRUE;
201 		} else {
202 			const gchar* _tmp12_;
203 			_tmp12_ = version;
204 			_tmp11_ = _tmp12_ != NULL;
205 		}
206 		if (_tmp11_) {
207 			ValadocApiPackage* _tmp13_;
208 			ValadocApiPackage* _tmp14_;
209 			const gchar* _tmp15_;
210 			_tmp13_ = valadoc_documentation_get_package ((ValadocDocumentation*) self);
211 			_tmp14_ = _tmp13_;
212 			_tmp15_ = version;
213 			valadoc_api_package_register_deprecated_symbol (_tmp14_, self, _tmp15_);
214 			valadoc_api_symbol_set_is_deprecated (self, TRUE);
215 		}
216 		_g_free0 (version);
217 	} else {
218 		const gchar* _tmp16_;
219 		const gchar* _tmp17_;
220 		_tmp16_ = valadoc_api_attribute_get_name (att);
221 		_tmp17_ = _tmp16_;
222 		if (g_strcmp0 (_tmp17_, "Deprecated") == 0) {
223 			gchar* version = NULL;
224 			ValaAttribute* _tmp18_;
225 			gchar* _tmp19_;
226 			ValadocApiPackage* _tmp20_;
227 			ValadocApiPackage* _tmp21_;
228 			const gchar* _tmp22_;
229 			_tmp18_ = attr;
230 			_tmp19_ = vala_attribute_get_string (_tmp18_, "version", NULL);
231 			version = _tmp19_;
232 			_tmp20_ = valadoc_documentation_get_package ((ValadocDocumentation*) self);
233 			_tmp21_ = _tmp20_;
234 			_tmp22_ = version;
235 			valadoc_api_package_register_deprecated_symbol (_tmp21_, self, _tmp22_);
236 			valadoc_api_symbol_set_is_deprecated (self, TRUE);
237 			_g_free0 (version);
238 		}
239 	}
240 	_tmp23_ = self->priv->attributes;
241 	vala_collection_add ((ValaCollection*) _tmp23_, att);
242 	_vala_code_node_unref0 (attr);
243 }
244 
245 static gpointer
_vala_iterable_ref0(gpointer self)246 _vala_iterable_ref0 (gpointer self)
247 {
248 	return self ? vala_iterable_ref (self) : NULL;
249 }
250 
251 ValaCollection*
valadoc_api_symbol_get_attributes(ValadocApiSymbol * self)252 valadoc_api_symbol_get_attributes (ValadocApiSymbol* self)
253 {
254 	ValaArrayList* _tmp0_;
255 	ValaCollection* result = NULL;
256 	g_return_val_if_fail (self != NULL, NULL);
257 	_tmp0_ = self->priv->attributes;
258 	if (_tmp0_ == NULL) {
259 		GEqualFunc _tmp1_;
260 		ValaArrayList* _tmp2_;
261 		_tmp1_ = g_direct_equal;
262 		_tmp2_ = vala_array_list_new (VALADOC_API_TYPE_ATTRIBUTE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp1_);
263 		result = (ValaCollection*) _tmp2_;
264 		return result;
265 	} else {
266 		ValaArrayList* _tmp3_;
267 		ValaCollection* _tmp4_;
268 		_tmp3_ = self->priv->attributes;
269 		_tmp4_ = _vala_iterable_ref0 ((ValaCollection*) _tmp3_);
270 		result = _tmp4_;
271 		return result;
272 	}
273 }
274 
275 ValadocApiAttribute*
valadoc_api_symbol_get_attribute(ValadocApiSymbol * self,const gchar * name)276 valadoc_api_symbol_get_attribute (ValadocApiSymbol* self,
277                                   const gchar* name)
278 {
279 	ValaArrayList* _tmp0_;
280 	ValadocApiAttribute* result = NULL;
281 	g_return_val_if_fail (self != NULL, NULL);
282 	g_return_val_if_fail (name != NULL, NULL);
283 	_tmp0_ = self->priv->attributes;
284 	if (_tmp0_ != NULL) {
285 		{
286 			ValaArrayList* _att_list = NULL;
287 			ValaArrayList* _tmp1_;
288 			ValaArrayList* _tmp2_;
289 			gint _att_size = 0;
290 			ValaArrayList* _tmp3_;
291 			gint _tmp4_;
292 			gint _tmp5_;
293 			gint _att_index = 0;
294 			_tmp1_ = self->priv->attributes;
295 			_tmp2_ = _vala_iterable_ref0 (_tmp1_);
296 			_att_list = _tmp2_;
297 			_tmp3_ = _att_list;
298 			_tmp4_ = vala_collection_get_size ((ValaCollection*) _tmp3_);
299 			_tmp5_ = _tmp4_;
300 			_att_size = _tmp5_;
301 			_att_index = -1;
302 			while (TRUE) {
303 				gint _tmp6_;
304 				gint _tmp7_;
305 				ValadocApiAttribute* att = NULL;
306 				ValaArrayList* _tmp8_;
307 				gpointer _tmp9_;
308 				ValadocApiAttribute* _tmp10_;
309 				const gchar* _tmp11_;
310 				const gchar* _tmp12_;
311 				_att_index = _att_index + 1;
312 				_tmp6_ = _att_index;
313 				_tmp7_ = _att_size;
314 				if (!(_tmp6_ < _tmp7_)) {
315 					break;
316 				}
317 				_tmp8_ = _att_list;
318 				_tmp9_ = vala_list_get ((ValaList*) _tmp8_, _att_index);
319 				att = (ValadocApiAttribute*) _tmp9_;
320 				_tmp10_ = att;
321 				_tmp11_ = valadoc_api_attribute_get_name (_tmp10_);
322 				_tmp12_ = _tmp11_;
323 				if (g_strcmp0 (_tmp12_, name) == 0) {
324 					result = att;
325 					_vala_iterable_unref0 (_att_list);
326 					return result;
327 				}
328 				_g_object_unref0 (att);
329 			}
330 			_vala_iterable_unref0 (_att_list);
331 		}
332 	}
333 	result = NULL;
334 	return result;
335 }
336 
337 /**
338  * {@inheritDoc}
339  */
340 static gpointer
_g_object_ref0(gpointer self)341 _g_object_ref0 (gpointer self)
342 {
343 	return self ? g_object_ref (self) : NULL;
344 }
345 
346 static gboolean
valadoc_api_symbol_real_is_browsable(ValadocApiNode * base,ValadocSettings * settings)347 valadoc_api_symbol_real_is_browsable (ValadocApiNode* base,
348                                       ValadocSettings* settings)
349 {
350 	ValadocApiSymbol * self;
351 	gboolean _tmp0_ = FALSE;
352 	gboolean _tmp3_ = FALSE;
353 	gboolean _tmp6_ = FALSE;
354 	ValadocApiItem* pos = NULL;
355 	ValadocApiItem* _tmp9_;
356 	ValadocApiItem* _tmp10_;
357 	ValadocApiItem* _tmp11_;
358 	gboolean result = FALSE;
359 	self = (ValadocApiSymbol*) base;
360 	g_return_val_if_fail (settings != NULL, FALSE);
361 	if (!settings->_private) {
362 		gboolean _tmp1_;
363 		gboolean _tmp2_;
364 		_tmp1_ = valadoc_api_symbol_get_is_private (self);
365 		_tmp2_ = _tmp1_;
366 		_tmp0_ = _tmp2_;
367 	} else {
368 		_tmp0_ = FALSE;
369 	}
370 	if (_tmp0_) {
371 		result = FALSE;
372 		return result;
373 	}
374 	if (!settings->_internal) {
375 		gboolean _tmp4_;
376 		gboolean _tmp5_;
377 		_tmp4_ = valadoc_api_symbol_get_is_internal (self);
378 		_tmp5_ = _tmp4_;
379 		_tmp3_ = _tmp5_;
380 	} else {
381 		_tmp3_ = FALSE;
382 	}
383 	if (_tmp3_) {
384 		result = FALSE;
385 		return result;
386 	}
387 	if (!settings->_protected) {
388 		gboolean _tmp7_;
389 		gboolean _tmp8_;
390 		_tmp7_ = valadoc_api_symbol_get_is_protected (self);
391 		_tmp8_ = _tmp7_;
392 		_tmp6_ = _tmp8_;
393 	} else {
394 		_tmp6_ = FALSE;
395 	}
396 	if (_tmp6_) {
397 		result = FALSE;
398 		return result;
399 	}
400 	_tmp9_ = valadoc_api_item_get_parent ((ValadocApiItem*) self);
401 	_tmp10_ = _tmp9_;
402 	_tmp11_ = _g_object_ref0 (_tmp10_);
403 	pos = _tmp11_;
404 	while (TRUE) {
405 		gboolean _tmp12_ = FALSE;
406 		gboolean _tmp13_ = FALSE;
407 		ValadocApiItem* _tmp14_;
408 		ValadocApiItem* _tmp17_;
409 		ValadocApiItem* _tmp18_;
410 		ValadocApiItem* _tmp19_;
411 		ValadocApiItem* _tmp20_;
412 		ValadocApiItem* _tmp21_;
413 		_tmp14_ = pos;
414 		if (_tmp14_ != NULL) {
415 			ValadocApiItem* _tmp15_;
416 			_tmp15_ = pos;
417 			_tmp13_ = VALADOC_API_IS_SYMBOL (_tmp15_);
418 		} else {
419 			_tmp13_ = FALSE;
420 		}
421 		if (_tmp13_) {
422 			ValadocApiItem* _tmp16_;
423 			_tmp16_ = pos;
424 			_tmp12_ = VALADOC_API_IS_NAMESPACE (_tmp16_) == FALSE;
425 		} else {
426 			_tmp12_ = FALSE;
427 		}
428 		if (!_tmp12_) {
429 			break;
430 		}
431 		_tmp17_ = pos;
432 		if (valadoc_api_node_is_browsable ((ValadocApiNode*) G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol), settings) == FALSE) {
433 			result = FALSE;
434 			_g_object_unref0 (pos);
435 			return result;
436 		}
437 		_tmp18_ = pos;
438 		_tmp19_ = valadoc_api_item_get_parent (_tmp18_);
439 		_tmp20_ = _tmp19_;
440 		_tmp21_ = _g_object_ref0 (_tmp20_);
441 		_g_object_unref0 (pos);
442 		pos = _tmp21_;
443 	}
444 	result = TRUE;
445 	_g_object_unref0 (pos);
446 	return result;
447 }
448 
449 ValaSymbolAccessibility
valadoc_api_symbol_get_accessibility(ValadocApiSymbol * self)450 valadoc_api_symbol_get_accessibility (ValadocApiSymbol* self)
451 {
452 	ValaSymbolAccessibility result;
453 	ValaSymbolAccessibility _tmp0_;
454 	g_return_val_if_fail (self != NULL, 0);
455 	_tmp0_ = self->priv->_accessibility;
456 	result = _tmp0_;
457 	return result;
458 }
459 
460 static void
valadoc_api_symbol_set_accessibility(ValadocApiSymbol * self,ValaSymbolAccessibility value)461 valadoc_api_symbol_set_accessibility (ValadocApiSymbol* self,
462                                       ValaSymbolAccessibility value)
463 {
464 	ValaSymbolAccessibility old_value;
465 	g_return_if_fail (self != NULL);
466 	old_value = valadoc_api_symbol_get_accessibility (self);
467 	if (old_value != value) {
468 		self->priv->_accessibility = value;
469 		g_object_notify_by_pspec ((GObject *) self, valadoc_api_symbol_properties[VALADOC_API_SYMBOL_ACCESSIBILITY_PROPERTY]);
470 	}
471 }
472 
473 gboolean
valadoc_api_symbol_get_is_public(ValadocApiSymbol * self)474 valadoc_api_symbol_get_is_public (ValadocApiSymbol* self)
475 {
476 	gboolean result;
477 	ValaSymbolAccessibility _tmp0_;
478 	g_return_val_if_fail (self != NULL, FALSE);
479 	_tmp0_ = self->priv->_accessibility;
480 	result = _tmp0_ == VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
481 	return result;
482 }
483 
484 gboolean
valadoc_api_symbol_get_is_protected(ValadocApiSymbol * self)485 valadoc_api_symbol_get_is_protected (ValadocApiSymbol* self)
486 {
487 	gboolean result;
488 	ValaSymbolAccessibility _tmp0_;
489 	g_return_val_if_fail (self != NULL, FALSE);
490 	_tmp0_ = self->priv->_accessibility;
491 	result = _tmp0_ == VALA_SYMBOL_ACCESSIBILITY_PROTECTED;
492 	return result;
493 }
494 
495 gboolean
valadoc_api_symbol_get_is_internal(ValadocApiSymbol * self)496 valadoc_api_symbol_get_is_internal (ValadocApiSymbol* self)
497 {
498 	gboolean result;
499 	ValaSymbolAccessibility _tmp0_;
500 	g_return_val_if_fail (self != NULL, FALSE);
501 	_tmp0_ = self->priv->_accessibility;
502 	result = _tmp0_ == VALA_SYMBOL_ACCESSIBILITY_INTERNAL;
503 	return result;
504 }
505 
506 gboolean
valadoc_api_symbol_get_is_private(ValadocApiSymbol * self)507 valadoc_api_symbol_get_is_private (ValadocApiSymbol* self)
508 {
509 	gboolean result;
510 	ValaSymbolAccessibility _tmp0_;
511 	g_return_val_if_fail (self != NULL, FALSE);
512 	_tmp0_ = self->priv->_accessibility;
513 	result = _tmp0_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
514 	return result;
515 }
516 
517 /**
518  * {@inheritDoc}
519  */
520 static void
valadoc_api_symbol_real_parse_comments(ValadocApiItem * base,ValadocSettings * settings,ValadocDocumentationParser * parser)521 valadoc_api_symbol_real_parse_comments (ValadocApiItem* base,
522                                         ValadocSettings* settings,
523                                         ValadocDocumentationParser* parser)
524 {
525 	ValadocApiSymbol * self;
526 	ValadocContentComment* _tmp0_;
527 	ValadocContentComment* _tmp1_;
528 	ValadocApiSourceComment* _tmp2_;
529 	self = (ValadocApiSymbol*) base;
530 	g_return_if_fail (settings != NULL);
531 	g_return_if_fail (parser != NULL);
532 	_tmp0_ = valadoc_api_node_get_documentation ((ValadocApiNode*) self);
533 	_tmp1_ = _tmp0_;
534 	if (_tmp1_ != NULL) {
535 		return;
536 	}
537 	_tmp2_ = self->priv->source_comment;
538 	if (_tmp2_ != NULL) {
539 		ValadocApiSourceComment* _tmp3_;
540 		ValadocContentComment* _tmp4_;
541 		ValadocContentComment* _tmp5_;
542 		_tmp3_ = self->priv->source_comment;
543 		_tmp4_ = valadoc_documentation_parser_parse (parser, (ValadocApiNode*) self, _tmp3_);
544 		_tmp5_ = _tmp4_;
545 		valadoc_api_node_set_documentation ((ValadocApiNode*) self, _tmp5_);
546 		_g_object_unref0 (_tmp5_);
547 	}
548 	VALADOC_API_ITEM_CLASS (valadoc_api_symbol_parent_class)->parse_comments ((ValadocApiItem*) G_TYPE_CHECK_INSTANCE_CAST (self, VALADOC_API_TYPE_NODE, ValadocApiNode), settings, parser);
549 }
550 
551 /**
552  * {@inheritDoc}
553  */
554 static void
valadoc_api_symbol_real_check_comments(ValadocApiItem * base,ValadocSettings * settings,ValadocDocumentationParser * parser)555 valadoc_api_symbol_real_check_comments (ValadocApiItem* base,
556                                         ValadocSettings* settings,
557                                         ValadocDocumentationParser* parser)
558 {
559 	ValadocApiSymbol * self;
560 	ValadocContentComment* _tmp0_;
561 	ValadocContentComment* _tmp1_;
562 	self = (ValadocApiSymbol*) base;
563 	g_return_if_fail (settings != NULL);
564 	g_return_if_fail (parser != NULL);
565 	_tmp0_ = valadoc_api_node_get_documentation ((ValadocApiNode*) self);
566 	_tmp1_ = _tmp0_;
567 	if (_tmp1_ != NULL) {
568 		ValadocContentComment* _tmp2_;
569 		ValadocContentComment* _tmp3_;
570 		_tmp2_ = valadoc_api_node_get_documentation ((ValadocApiNode*) self);
571 		_tmp3_ = _tmp2_;
572 		valadoc_documentation_parser_check (parser, (ValadocApiNode*) self, _tmp3_);
573 	}
574 	VALADOC_API_ITEM_CLASS (valadoc_api_symbol_parent_class)->check_comments ((ValadocApiItem*) G_TYPE_CHECK_INSTANCE_CAST (self, VALADOC_API_TYPE_NODE, ValadocApiNode), settings, parser);
575 }
576 
577 static void
valadoc_api_symbol_class_init(ValadocApiSymbolClass * klass,gpointer klass_data)578 valadoc_api_symbol_class_init (ValadocApiSymbolClass * klass,
579                                gpointer klass_data)
580 {
581 	valadoc_api_symbol_parent_class = g_type_class_peek_parent (klass);
582 	g_type_class_adjust_private_offset (klass, &ValadocApiSymbol_private_offset);
583 	((ValadocApiNodeClass *) klass)->is_browsable = (gboolean (*) (ValadocApiNode*, ValadocSettings*)) valadoc_api_symbol_real_is_browsable;
584 	((ValadocApiItemClass *) klass)->parse_comments = (void (*) (ValadocApiItem*, ValadocSettings*, ValadocDocumentationParser*)) valadoc_api_symbol_real_parse_comments;
585 	((ValadocApiItemClass *) klass)->check_comments = (void (*) (ValadocApiItem*, ValadocSettings*, ValadocDocumentationParser*)) valadoc_api_symbol_real_check_comments;
586 	G_OBJECT_CLASS (klass)->get_property = _vala_valadoc_api_symbol_get_property;
587 	G_OBJECT_CLASS (klass)->set_property = _vala_valadoc_api_symbol_set_property;
588 	G_OBJECT_CLASS (klass)->finalize = valadoc_api_symbol_finalize;
589 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_SYMBOL_IS_DEPRECATED_PROPERTY, valadoc_api_symbol_properties[VALADOC_API_SYMBOL_IS_DEPRECATED_PROPERTY] = g_param_spec_boolean ("is-deprecated", "is-deprecated", "is-deprecated", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
590 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_SYMBOL_ACCESSIBILITY_PROPERTY, valadoc_api_symbol_properties[VALADOC_API_SYMBOL_ACCESSIBILITY_PROPERTY] = g_param_spec_enum ("accessibility", "accessibility", "accessibility", VALA_TYPE_SYMBOL_ACCESSIBILITY, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
591 	/**
592 	 * Specifies whether this symbol is public.
593 	 */
594 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_SYMBOL_IS_PUBLIC_PROPERTY, valadoc_api_symbol_properties[VALADOC_API_SYMBOL_IS_PUBLIC_PROPERTY] = g_param_spec_boolean ("is-public", "is-public", "is-public", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
595 	/**
596 	 * Specifies whether this symbol is protected.
597 	 */
598 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_SYMBOL_IS_PROTECTED_PROPERTY, valadoc_api_symbol_properties[VALADOC_API_SYMBOL_IS_PROTECTED_PROPERTY] = g_param_spec_boolean ("is-protected", "is-protected", "is-protected", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
599 	/**
600 	 * Specifies whether this symbol is internal.
601 	 */
602 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_SYMBOL_IS_INTERNAL_PROPERTY, valadoc_api_symbol_properties[VALADOC_API_SYMBOL_IS_INTERNAL_PROPERTY] = g_param_spec_boolean ("is-internal", "is-internal", "is-internal", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
603 	/**
604 	 * Specifies whether this symbol is private.
605 	 */
606 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_SYMBOL_IS_PRIVATE_PROPERTY, valadoc_api_symbol_properties[VALADOC_API_SYMBOL_IS_PRIVATE_PROPERTY] = g_param_spec_boolean ("is-private", "is-private", "is-private", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
607 }
608 
609 static void
valadoc_api_symbol_instance_init(ValadocApiSymbol * self,gpointer klass)610 valadoc_api_symbol_instance_init (ValadocApiSymbol * self,
611                                   gpointer klass)
612 {
613 	self->priv = valadoc_api_symbol_get_instance_private (self);
614 	self->priv->_is_deprecated = FALSE;
615 }
616 
617 static void
valadoc_api_symbol_finalize(GObject * obj)618 valadoc_api_symbol_finalize (GObject * obj)
619 {
620 	ValadocApiSymbol * self;
621 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol);
622 	_vala_iterable_unref0 (self->priv->attributes);
623 	_valadoc_api_source_comment_unref0 (self->priv->source_comment);
624 	G_OBJECT_CLASS (valadoc_api_symbol_parent_class)->finalize (obj);
625 }
626 
627 /**
628  * Represents a node in the symbol tree.
629  */
630 static GType
valadoc_api_symbol_get_type_once(void)631 valadoc_api_symbol_get_type_once (void)
632 {
633 	static const GTypeInfo g_define_type_info = { sizeof (ValadocApiSymbolClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_api_symbol_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocApiSymbol), 0, (GInstanceInitFunc) valadoc_api_symbol_instance_init, NULL };
634 	GType valadoc_api_symbol_type_id;
635 	valadoc_api_symbol_type_id = g_type_register_static (VALADOC_API_TYPE_NODE, "ValadocApiSymbol", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
636 	ValadocApiSymbol_private_offset = g_type_add_instance_private (valadoc_api_symbol_type_id, sizeof (ValadocApiSymbolPrivate));
637 	return valadoc_api_symbol_type_id;
638 }
639 
640 GType
valadoc_api_symbol_get_type(void)641 valadoc_api_symbol_get_type (void)
642 {
643 	static volatile gsize valadoc_api_symbol_type_id__volatile = 0;
644 	if (g_once_init_enter (&valadoc_api_symbol_type_id__volatile)) {
645 		GType valadoc_api_symbol_type_id;
646 		valadoc_api_symbol_type_id = valadoc_api_symbol_get_type_once ();
647 		g_once_init_leave (&valadoc_api_symbol_type_id__volatile, valadoc_api_symbol_type_id);
648 	}
649 	return valadoc_api_symbol_type_id__volatile;
650 }
651 
652 static void
_vala_valadoc_api_symbol_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)653 _vala_valadoc_api_symbol_get_property (GObject * object,
654                                        guint property_id,
655                                        GValue * value,
656                                        GParamSpec * pspec)
657 {
658 	ValadocApiSymbol * self;
659 	self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol);
660 	switch (property_id) {
661 		case VALADOC_API_SYMBOL_IS_DEPRECATED_PROPERTY:
662 		g_value_set_boolean (value, valadoc_api_symbol_get_is_deprecated (self));
663 		break;
664 		case VALADOC_API_SYMBOL_ACCESSIBILITY_PROPERTY:
665 		g_value_set_enum (value, valadoc_api_symbol_get_accessibility (self));
666 		break;
667 		case VALADOC_API_SYMBOL_IS_PUBLIC_PROPERTY:
668 		g_value_set_boolean (value, valadoc_api_symbol_get_is_public (self));
669 		break;
670 		case VALADOC_API_SYMBOL_IS_PROTECTED_PROPERTY:
671 		g_value_set_boolean (value, valadoc_api_symbol_get_is_protected (self));
672 		break;
673 		case VALADOC_API_SYMBOL_IS_INTERNAL_PROPERTY:
674 		g_value_set_boolean (value, valadoc_api_symbol_get_is_internal (self));
675 		break;
676 		case VALADOC_API_SYMBOL_IS_PRIVATE_PROPERTY:
677 		g_value_set_boolean (value, valadoc_api_symbol_get_is_private (self));
678 		break;
679 		default:
680 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
681 		break;
682 	}
683 }
684 
685 static void
_vala_valadoc_api_symbol_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)686 _vala_valadoc_api_symbol_set_property (GObject * object,
687                                        guint property_id,
688                                        const GValue * value,
689                                        GParamSpec * pspec)
690 {
691 	ValadocApiSymbol * self;
692 	self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol);
693 	switch (property_id) {
694 		case VALADOC_API_SYMBOL_IS_DEPRECATED_PROPERTY:
695 		valadoc_api_symbol_set_is_deprecated (self, g_value_get_boolean (value));
696 		break;
697 		case VALADOC_API_SYMBOL_ACCESSIBILITY_PROPERTY:
698 		valadoc_api_symbol_set_accessibility (self, g_value_get_enum (value));
699 		break;
700 		default:
701 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
702 		break;
703 	}
704 }
705 
706