1 /* property.c generated by valac, the Vala compiler
2  * generated from property.vala, do not modify */
3 
4 /* property.vala
5  *
6  * Copyright (C) 2008-2011  Florian Brosch
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  * 	Florian Brosch <flo.brosch@gmail.com>
24  */
25 
26 #include "valadoc.h"
27 #include <stdlib.h>
28 #include <string.h>
29 #include <glib.h>
30 #include <vala.h>
31 #include <valacodegen.h>
32 
33 enum  {
34 	VALADOC_API_PROPERTY_0_PROPERTY,
35 	VALADOC_API_PROPERTY_PROPERTY_TYPE_PROPERTY,
36 	VALADOC_API_PROPERTY_IS_VIRTUAL_PROPERTY,
37 	VALADOC_API_PROPERTY_IS_ABSTRACT_PROPERTY,
38 	VALADOC_API_PROPERTY_IS_OVERRIDE_PROPERTY,
39 	VALADOC_API_PROPERTY_IS_DBUS_VISIBLE_PROPERTY,
40 	VALADOC_API_PROPERTY_SETTER_PROPERTY,
41 	VALADOC_API_PROPERTY_GETTER_PROPERTY,
42 	VALADOC_API_PROPERTY_BASE_PROPERTY_PROPERTY,
43 	VALADOC_API_PROPERTY_NODE_TYPE_PROPERTY,
44 	VALADOC_API_PROPERTY_NUM_PROPERTIES
45 };
46 static GParamSpec* valadoc_api_property_properties[VALADOC_API_PROPERTY_NUM_PROPERTIES];
47 #define _g_free0(var) (var = (g_free (var), NULL))
48 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
49 #define _valadoc_api_signature_builder_unref0(var) ((var == NULL) ? NULL : (var = (valadoc_api_signature_builder_unref (var), NULL)))
50 
51 struct _ValadocApiPropertyPrivate {
52 	gchar* dbus_name;
53 	gchar* cname;
54 	ValadocApiTypeReference* _property_type;
55 	gboolean _is_dbus_visible;
56 	ValadocApiPropertyAccessor* _setter;
57 	ValadocApiPropertyAccessor* _getter;
58 	ValadocApiProperty* _base_property;
59 };
60 
61 static gint ValadocApiProperty_private_offset;
62 static gpointer valadoc_api_property_parent_class = NULL;
63 
64 G_GNUC_INTERNAL void valadoc_api_item_parse_comments (ValadocApiItem* self,
65                                       ValadocSettings* settings,
66                                       ValadocDocumentationParser* parser);
67 G_GNUC_INTERNAL void valadoc_api_item_check_comments (ValadocApiItem* self,
68                                       ValadocSettings* settings,
69                                       ValadocDocumentationParser* parser);
70 static void valadoc_api_property_set_is_dbus_visible (ValadocApiProperty* self,
71                                                gboolean value);
72 static void valadoc_api_property_real_parse_comments (ValadocApiItem* base,
73                                                ValadocSettings* settings,
74                                                ValadocDocumentationParser* parser);
75 static void valadoc_api_property_real_check_comments (ValadocApiItem* base,
76                                                ValadocSettings* settings,
77                                                ValadocDocumentationParser* parser);
78 static ValadocContentInline* valadoc_api_property_real_build_signature (ValadocApiItem* base);
79 static void valadoc_api_property_real_accept (ValadocApiNode* base,
80                                        ValadocApiVisitor* visitor);
81 static void valadoc_api_property_finalize (GObject * obj);
82 static GType valadoc_api_property_get_type_once (void);
83 static void _vala_valadoc_api_property_get_property (GObject * object,
84                                               guint property_id,
85                                               GValue * value,
86                                               GParamSpec * pspec);
87 static void _vala_valadoc_api_property_set_property (GObject * object,
88                                               guint property_id,
89                                               const GValue * value,
90                                               GParamSpec * pspec);
91 
92 static inline gpointer
valadoc_api_property_get_instance_private(ValadocApiProperty * self)93 valadoc_api_property_get_instance_private (ValadocApiProperty* self)
94 {
95 	return G_STRUCT_MEMBER_P (self, ValadocApiProperty_private_offset);
96 }
97 
98 ValadocApiProperty*
valadoc_api_property_construct(GType object_type,ValadocApiNode * parent,ValadocApiSourceFile * file,const gchar * name,ValaSymbolAccessibility accessibility,ValadocApiSourceComment * comment,ValaProperty * data)99 valadoc_api_property_construct (GType object_type,
100                                 ValadocApiNode* parent,
101                                 ValadocApiSourceFile* file,
102                                 const gchar* name,
103                                 ValaSymbolAccessibility accessibility,
104                                 ValadocApiSourceComment* comment,
105                                 ValaProperty* data)
106 {
107 	ValadocApiProperty * self = NULL;
108 	gchar* _tmp0_;
109 	gchar* _tmp1_;
110 	g_return_val_if_fail (parent != NULL, NULL);
111 	g_return_val_if_fail (file != NULL, NULL);
112 	g_return_val_if_fail (name != NULL, NULL);
113 	g_return_val_if_fail (data != NULL, NULL);
114 	self = (ValadocApiProperty*) valadoc_api_symbol_construct (object_type, parent, file, name, accessibility, comment, (ValaSymbol*) data);
115 	valadoc_api_property_set_is_dbus_visible (self, vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) data));
116 	_tmp0_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) data);
117 	_g_free0 (self->priv->dbus_name);
118 	self->priv->dbus_name = _tmp0_;
119 	_tmp1_ = vala_get_ccode_name ((ValaCodeNode*) data);
120 	_g_free0 (self->priv->cname);
121 	self->priv->cname = _tmp1_;
122 	return self;
123 }
124 
125 ValadocApiProperty*
valadoc_api_property_new(ValadocApiNode * parent,ValadocApiSourceFile * file,const gchar * name,ValaSymbolAccessibility accessibility,ValadocApiSourceComment * comment,ValaProperty * data)126 valadoc_api_property_new (ValadocApiNode* parent,
127                           ValadocApiSourceFile* file,
128                           const gchar* name,
129                           ValaSymbolAccessibility accessibility,
130                           ValadocApiSourceComment* comment,
131                           ValaProperty* data)
132 {
133 	return valadoc_api_property_construct (VALADOC_API_TYPE_PROPERTY, parent, file, name, accessibility, comment, data);
134 }
135 
136 /**
137  * Returns the name of this method as it is used in C.
138  */
139 gchar*
valadoc_api_property_get_cname(ValadocApiProperty * self)140 valadoc_api_property_get_cname (ValadocApiProperty* self)
141 {
142 	const gchar* _tmp0_;
143 	gchar* _tmp1_;
144 	gchar* result = NULL;
145 	g_return_val_if_fail (self != NULL, NULL);
146 	_tmp0_ = self->priv->cname;
147 	_tmp1_ = g_strdup (_tmp0_);
148 	result = _tmp1_;
149 	return result;
150 }
151 
152 /**
153  * Returns the dbus-name.
154  */
155 gchar*
valadoc_api_property_get_dbus_name(ValadocApiProperty * self)156 valadoc_api_property_get_dbus_name (ValadocApiProperty* self)
157 {
158 	const gchar* _tmp0_;
159 	gchar* _tmp1_;
160 	gchar* result = NULL;
161 	g_return_val_if_fail (self != NULL, NULL);
162 	_tmp0_ = self->priv->dbus_name;
163 	_tmp1_ = g_strdup (_tmp0_);
164 	result = _tmp1_;
165 	return result;
166 }
167 
168 ValadocApiTypeReference*
valadoc_api_property_get_property_type(ValadocApiProperty * self)169 valadoc_api_property_get_property_type (ValadocApiProperty* self)
170 {
171 	ValadocApiTypeReference* result;
172 	ValadocApiTypeReference* _tmp0_;
173 	g_return_val_if_fail (self != NULL, NULL);
174 	_tmp0_ = self->priv->_property_type;
175 	result = _tmp0_;
176 	return result;
177 }
178 
179 static gpointer
_g_object_ref0(gpointer self)180 _g_object_ref0 (gpointer self)
181 {
182 	return self ? g_object_ref (self) : NULL;
183 }
184 
185 void
valadoc_api_property_set_property_type(ValadocApiProperty * self,ValadocApiTypeReference * value)186 valadoc_api_property_set_property_type (ValadocApiProperty* self,
187                                         ValadocApiTypeReference* value)
188 {
189 	ValadocApiTypeReference* old_value;
190 	g_return_if_fail (self != NULL);
191 	old_value = valadoc_api_property_get_property_type (self);
192 	if (old_value != value) {
193 		ValadocApiTypeReference* _tmp0_;
194 		_tmp0_ = _g_object_ref0 (value);
195 		_g_object_unref0 (self->priv->_property_type);
196 		self->priv->_property_type = _tmp0_;
197 		g_object_notify_by_pspec ((GObject *) self, valadoc_api_property_properties[VALADOC_API_PROPERTY_PROPERTY_TYPE_PROPERTY]);
198 	}
199 }
200 
201 gboolean
valadoc_api_property_get_is_virtual(ValadocApiProperty * self)202 valadoc_api_property_get_is_virtual (ValadocApiProperty* self)
203 {
204 	gboolean result;
205 	ValaCodeNode* _tmp0_;
206 	ValaCodeNode* _tmp1_;
207 	gboolean _tmp2_;
208 	gboolean _tmp3_;
209 	g_return_val_if_fail (self != NULL, FALSE);
210 	_tmp0_ = valadoc_api_item_get_data ((ValadocApiItem*) self);
211 	_tmp1_ = _tmp0_;
212 	_tmp2_ = vala_property_get_is_virtual (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_PROPERTY, ValaProperty));
213 	_tmp3_ = _tmp2_;
214 	result = _tmp3_;
215 	return result;
216 }
217 
218 gboolean
valadoc_api_property_get_is_abstract(ValadocApiProperty * self)219 valadoc_api_property_get_is_abstract (ValadocApiProperty* self)
220 {
221 	gboolean result;
222 	ValaCodeNode* _tmp0_;
223 	ValaCodeNode* _tmp1_;
224 	gboolean _tmp2_;
225 	gboolean _tmp3_;
226 	g_return_val_if_fail (self != NULL, FALSE);
227 	_tmp0_ = valadoc_api_item_get_data ((ValadocApiItem*) self);
228 	_tmp1_ = _tmp0_;
229 	_tmp2_ = vala_property_get_is_abstract (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_PROPERTY, ValaProperty));
230 	_tmp3_ = _tmp2_;
231 	result = _tmp3_;
232 	return result;
233 }
234 
235 gboolean
valadoc_api_property_get_is_override(ValadocApiProperty * self)236 valadoc_api_property_get_is_override (ValadocApiProperty* self)
237 {
238 	gboolean result;
239 	ValaCodeNode* _tmp0_;
240 	ValaCodeNode* _tmp1_;
241 	gboolean _tmp2_;
242 	gboolean _tmp3_;
243 	g_return_val_if_fail (self != NULL, FALSE);
244 	_tmp0_ = valadoc_api_item_get_data ((ValadocApiItem*) self);
245 	_tmp1_ = _tmp0_;
246 	_tmp2_ = vala_property_get_overrides (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_PROPERTY, ValaProperty));
247 	_tmp3_ = _tmp2_;
248 	result = _tmp3_;
249 	return result;
250 }
251 
252 gboolean
valadoc_api_property_get_is_dbus_visible(ValadocApiProperty * self)253 valadoc_api_property_get_is_dbus_visible (ValadocApiProperty* self)
254 {
255 	gboolean result;
256 	g_return_val_if_fail (self != NULL, FALSE);
257 	result = self->priv->_is_dbus_visible;
258 	return result;
259 }
260 
261 static void
valadoc_api_property_set_is_dbus_visible(ValadocApiProperty * self,gboolean value)262 valadoc_api_property_set_is_dbus_visible (ValadocApiProperty* self,
263                                           gboolean value)
264 {
265 	gboolean old_value;
266 	g_return_if_fail (self != NULL);
267 	old_value = valadoc_api_property_get_is_dbus_visible (self);
268 	if (old_value != value) {
269 		self->priv->_is_dbus_visible = value;
270 		g_object_notify_by_pspec ((GObject *) self, valadoc_api_property_properties[VALADOC_API_PROPERTY_IS_DBUS_VISIBLE_PROPERTY]);
271 	}
272 }
273 
274 ValadocApiPropertyAccessor*
valadoc_api_property_get_setter(ValadocApiProperty * self)275 valadoc_api_property_get_setter (ValadocApiProperty* self)
276 {
277 	ValadocApiPropertyAccessor* result;
278 	ValadocApiPropertyAccessor* _tmp0_;
279 	g_return_val_if_fail (self != NULL, NULL);
280 	_tmp0_ = self->priv->_setter;
281 	result = _tmp0_;
282 	return result;
283 }
284 
285 void
valadoc_api_property_set_setter(ValadocApiProperty * self,ValadocApiPropertyAccessor * value)286 valadoc_api_property_set_setter (ValadocApiProperty* self,
287                                  ValadocApiPropertyAccessor* value)
288 {
289 	ValadocApiPropertyAccessor* old_value;
290 	g_return_if_fail (self != NULL);
291 	old_value = valadoc_api_property_get_setter (self);
292 	if (old_value != value) {
293 		ValadocApiPropertyAccessor* _tmp0_;
294 		_tmp0_ = _g_object_ref0 (value);
295 		_g_object_unref0 (self->priv->_setter);
296 		self->priv->_setter = _tmp0_;
297 		g_object_notify_by_pspec ((GObject *) self, valadoc_api_property_properties[VALADOC_API_PROPERTY_SETTER_PROPERTY]);
298 	}
299 }
300 
301 ValadocApiPropertyAccessor*
valadoc_api_property_get_getter(ValadocApiProperty * self)302 valadoc_api_property_get_getter (ValadocApiProperty* self)
303 {
304 	ValadocApiPropertyAccessor* result;
305 	ValadocApiPropertyAccessor* _tmp0_;
306 	g_return_val_if_fail (self != NULL, NULL);
307 	_tmp0_ = self->priv->_getter;
308 	result = _tmp0_;
309 	return result;
310 }
311 
312 void
valadoc_api_property_set_getter(ValadocApiProperty * self,ValadocApiPropertyAccessor * value)313 valadoc_api_property_set_getter (ValadocApiProperty* self,
314                                  ValadocApiPropertyAccessor* value)
315 {
316 	ValadocApiPropertyAccessor* old_value;
317 	g_return_if_fail (self != NULL);
318 	old_value = valadoc_api_property_get_getter (self);
319 	if (old_value != value) {
320 		ValadocApiPropertyAccessor* _tmp0_;
321 		_tmp0_ = _g_object_ref0 (value);
322 		_g_object_unref0 (self->priv->_getter);
323 		self->priv->_getter = _tmp0_;
324 		g_object_notify_by_pspec ((GObject *) self, valadoc_api_property_properties[VALADOC_API_PROPERTY_GETTER_PROPERTY]);
325 	}
326 }
327 
328 ValadocApiProperty*
valadoc_api_property_get_base_property(ValadocApiProperty * self)329 valadoc_api_property_get_base_property (ValadocApiProperty* self)
330 {
331 	ValadocApiProperty* result;
332 	ValadocApiProperty* _tmp0_;
333 	g_return_val_if_fail (self != NULL, NULL);
334 	_tmp0_ = self->priv->_base_property;
335 	result = _tmp0_;
336 	return result;
337 }
338 
339 void
valadoc_api_property_set_base_property(ValadocApiProperty * self,ValadocApiProperty * value)340 valadoc_api_property_set_base_property (ValadocApiProperty* self,
341                                         ValadocApiProperty* value)
342 {
343 	ValadocApiProperty* old_value;
344 	g_return_if_fail (self != NULL);
345 	old_value = valadoc_api_property_get_base_property (self);
346 	if (old_value != value) {
347 		ValadocApiProperty* _tmp0_;
348 		_tmp0_ = _g_object_ref0 (value);
349 		_g_object_unref0 (self->priv->_base_property);
350 		self->priv->_base_property = _tmp0_;
351 		g_object_notify_by_pspec ((GObject *) self, valadoc_api_property_properties[VALADOC_API_PROPERTY_BASE_PROPERTY_PROPERTY]);
352 	}
353 }
354 
355 /**
356  * {@inheritDoc}
357  */
358 static void
valadoc_api_property_real_parse_comments(ValadocApiItem * base,ValadocSettings * settings,ValadocDocumentationParser * parser)359 valadoc_api_property_real_parse_comments (ValadocApiItem* base,
360                                           ValadocSettings* settings,
361                                           ValadocDocumentationParser* parser)
362 {
363 	ValadocApiProperty * self;
364 	gboolean _tmp0_ = FALSE;
365 	ValadocApiPropertyAccessor* _tmp1_;
366 	gboolean _tmp4_ = FALSE;
367 	ValadocApiPropertyAccessor* _tmp5_;
368 	self = (ValadocApiProperty*) base;
369 	g_return_if_fail (settings != NULL);
370 	g_return_if_fail (parser != NULL);
371 	_tmp1_ = self->priv->_getter;
372 	if (_tmp1_ != NULL) {
373 		ValadocApiPropertyAccessor* _tmp2_;
374 		_tmp2_ = self->priv->_getter;
375 		_tmp0_ = valadoc_api_node_is_browsable ((ValadocApiNode*) _tmp2_, settings);
376 	} else {
377 		_tmp0_ = FALSE;
378 	}
379 	if (_tmp0_) {
380 		ValadocApiPropertyAccessor* _tmp3_;
381 		_tmp3_ = self->priv->_getter;
382 		valadoc_api_item_parse_comments ((ValadocApiItem*) _tmp3_, settings, parser);
383 	}
384 	_tmp5_ = self->priv->_setter;
385 	if (_tmp5_ != NULL) {
386 		ValadocApiPropertyAccessor* _tmp6_;
387 		_tmp6_ = self->priv->_setter;
388 		_tmp4_ = valadoc_api_node_is_browsable ((ValadocApiNode*) _tmp6_, settings);
389 	} else {
390 		_tmp4_ = FALSE;
391 	}
392 	if (_tmp4_) {
393 		ValadocApiPropertyAccessor* _tmp7_;
394 		_tmp7_ = self->priv->_setter;
395 		valadoc_api_item_parse_comments ((ValadocApiItem*) _tmp7_, settings, parser);
396 	}
397 	VALADOC_API_ITEM_CLASS (valadoc_api_property_parent_class)->parse_comments ((ValadocApiItem*) G_TYPE_CHECK_INSTANCE_CAST (self, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol), settings, parser);
398 }
399 
400 /**
401  * {@inheritDoc}
402  */
403 static void
valadoc_api_property_real_check_comments(ValadocApiItem * base,ValadocSettings * settings,ValadocDocumentationParser * parser)404 valadoc_api_property_real_check_comments (ValadocApiItem* base,
405                                           ValadocSettings* settings,
406                                           ValadocDocumentationParser* parser)
407 {
408 	ValadocApiProperty * self;
409 	gboolean _tmp0_ = FALSE;
410 	ValadocApiPropertyAccessor* _tmp1_;
411 	gboolean _tmp4_ = FALSE;
412 	ValadocApiPropertyAccessor* _tmp5_;
413 	self = (ValadocApiProperty*) base;
414 	g_return_if_fail (settings != NULL);
415 	g_return_if_fail (parser != NULL);
416 	_tmp1_ = self->priv->_getter;
417 	if (_tmp1_ != NULL) {
418 		ValadocApiPropertyAccessor* _tmp2_;
419 		_tmp2_ = self->priv->_getter;
420 		_tmp0_ = valadoc_api_node_is_browsable ((ValadocApiNode*) _tmp2_, settings);
421 	} else {
422 		_tmp0_ = FALSE;
423 	}
424 	if (_tmp0_) {
425 		ValadocApiPropertyAccessor* _tmp3_;
426 		_tmp3_ = self->priv->_getter;
427 		valadoc_api_item_check_comments ((ValadocApiItem*) _tmp3_, settings, parser);
428 	}
429 	_tmp5_ = self->priv->_setter;
430 	if (_tmp5_ != NULL) {
431 		ValadocApiPropertyAccessor* _tmp6_;
432 		_tmp6_ = self->priv->_setter;
433 		_tmp4_ = valadoc_api_node_is_browsable ((ValadocApiNode*) _tmp6_, settings);
434 	} else {
435 		_tmp4_ = FALSE;
436 	}
437 	if (_tmp4_) {
438 		ValadocApiPropertyAccessor* _tmp7_;
439 		_tmp7_ = self->priv->_setter;
440 		valadoc_api_item_check_comments ((ValadocApiItem*) _tmp7_, settings, parser);
441 	}
442 	VALADOC_API_ITEM_CLASS (valadoc_api_property_parent_class)->check_comments ((ValadocApiItem*) G_TYPE_CHECK_INSTANCE_CAST (self, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol), settings, parser);
443 }
444 
445 /**
446  * {@inheritDoc}
447  */
448 static ValadocContentInline*
valadoc_api_property_real_build_signature(ValadocApiItem * base)449 valadoc_api_property_real_build_signature (ValadocApiItem* base)
450 {
451 	ValadocApiProperty * self;
452 	ValadocApiSignatureBuilder* signature = NULL;
453 	ValadocApiSignatureBuilder* _tmp0_;
454 	ValadocApiSignatureBuilder* _tmp1_;
455 	ValaSymbolAccessibility _tmp2_;
456 	ValaSymbolAccessibility _tmp3_;
457 	const gchar* _tmp4_;
458 	gboolean _tmp5_;
459 	gboolean _tmp6_;
460 	ValadocApiSignatureBuilder* _tmp14_;
461 	ValadocApiTypeReference* _tmp15_;
462 	ValadocContentInline* _tmp16_;
463 	ValadocContentInline* _tmp17_;
464 	ValadocApiSignatureBuilder* _tmp18_;
465 	ValadocApiSignatureBuilder* _tmp19_;
466 	gboolean _tmp20_ = FALSE;
467 	ValadocApiPropertyAccessor* _tmp21_;
468 	gboolean _tmp27_ = FALSE;
469 	ValadocApiPropertyAccessor* _tmp28_;
470 	ValadocApiSignatureBuilder* _tmp34_;
471 	ValadocApiSignatureBuilder* _tmp35_;
472 	ValadocContentRun* _tmp36_;
473 	ValadocContentInline* result = NULL;
474 	self = (ValadocApiProperty*) base;
475 	_tmp0_ = valadoc_api_signature_builder_new ();
476 	signature = _tmp0_;
477 	_tmp1_ = signature;
478 	_tmp2_ = valadoc_api_symbol_get_accessibility ((ValadocApiSymbol*) self);
479 	_tmp3_ = _tmp2_;
480 	_tmp4_ = vala_symbol_accessibility_to_string (_tmp3_);
481 	valadoc_api_signature_builder_append_keyword (_tmp1_, _tmp4_, TRUE);
482 	_tmp5_ = valadoc_api_property_get_is_abstract (self);
483 	_tmp6_ = _tmp5_;
484 	if (_tmp6_) {
485 		ValadocApiSignatureBuilder* _tmp7_;
486 		_tmp7_ = signature;
487 		valadoc_api_signature_builder_append_keyword (_tmp7_, "abstract", TRUE);
488 	} else {
489 		gboolean _tmp8_;
490 		gboolean _tmp9_;
491 		_tmp8_ = valadoc_api_property_get_is_override (self);
492 		_tmp9_ = _tmp8_;
493 		if (_tmp9_) {
494 			ValadocApiSignatureBuilder* _tmp10_;
495 			_tmp10_ = signature;
496 			valadoc_api_signature_builder_append_keyword (_tmp10_, "override", TRUE);
497 		} else {
498 			gboolean _tmp11_;
499 			gboolean _tmp12_;
500 			_tmp11_ = valadoc_api_property_get_is_virtual (self);
501 			_tmp12_ = _tmp11_;
502 			if (_tmp12_) {
503 				ValadocApiSignatureBuilder* _tmp13_;
504 				_tmp13_ = signature;
505 				valadoc_api_signature_builder_append_keyword (_tmp13_, "virtual", TRUE);
506 			}
507 		}
508 	}
509 	_tmp14_ = signature;
510 	_tmp15_ = self->priv->_property_type;
511 	_tmp16_ = valadoc_api_item_get_signature ((ValadocApiItem*) _tmp15_);
512 	_tmp17_ = _tmp16_;
513 	valadoc_api_signature_builder_append_content (_tmp14_, _tmp17_, TRUE);
514 	_tmp18_ = signature;
515 	valadoc_api_signature_builder_append_symbol (_tmp18_, (ValadocApiNode*) self, TRUE);
516 	_tmp19_ = signature;
517 	valadoc_api_signature_builder_append (_tmp19_, "{", TRUE);
518 	_tmp21_ = self->priv->_getter;
519 	if (_tmp21_ != NULL) {
520 		ValadocApiPropertyAccessor* _tmp22_;
521 		_tmp22_ = self->priv->_getter;
522 		_tmp20_ = ((ValadocApiNode*) _tmp22_)->do_document;
523 	} else {
524 		_tmp20_ = FALSE;
525 	}
526 	if (_tmp20_) {
527 		ValadocApiSignatureBuilder* _tmp23_;
528 		ValadocApiPropertyAccessor* _tmp24_;
529 		ValadocContentInline* _tmp25_;
530 		ValadocContentInline* _tmp26_;
531 		_tmp23_ = signature;
532 		_tmp24_ = self->priv->_getter;
533 		_tmp25_ = valadoc_api_item_get_signature ((ValadocApiItem*) _tmp24_);
534 		_tmp26_ = _tmp25_;
535 		valadoc_api_signature_builder_append_content (_tmp23_, _tmp26_, TRUE);
536 	}
537 	_tmp28_ = self->priv->_setter;
538 	if (_tmp28_ != NULL) {
539 		ValadocApiPropertyAccessor* _tmp29_;
540 		_tmp29_ = self->priv->_setter;
541 		_tmp27_ = ((ValadocApiNode*) _tmp29_)->do_document;
542 	} else {
543 		_tmp27_ = FALSE;
544 	}
545 	if (_tmp27_) {
546 		ValadocApiSignatureBuilder* _tmp30_;
547 		ValadocApiPropertyAccessor* _tmp31_;
548 		ValadocContentInline* _tmp32_;
549 		ValadocContentInline* _tmp33_;
550 		_tmp30_ = signature;
551 		_tmp31_ = self->priv->_setter;
552 		_tmp32_ = valadoc_api_item_get_signature ((ValadocApiItem*) _tmp31_);
553 		_tmp33_ = _tmp32_;
554 		valadoc_api_signature_builder_append_content (_tmp30_, _tmp33_, TRUE);
555 	}
556 	_tmp34_ = signature;
557 	valadoc_api_signature_builder_append (_tmp34_, "}", TRUE);
558 	_tmp35_ = signature;
559 	_tmp36_ = valadoc_api_signature_builder_get (_tmp35_);
560 	result = (ValadocContentInline*) _tmp36_;
561 	_valadoc_api_signature_builder_unref0 (signature);
562 	return result;
563 }
564 
565 static ValadocApiNodeType
valadoc_api_property_real_get_node_type(ValadocApiNode * base)566 valadoc_api_property_real_get_node_type (ValadocApiNode* base)
567 {
568 	ValadocApiNodeType result;
569 	ValadocApiProperty* self;
570 	self = (ValadocApiProperty*) base;
571 	result = VALADOC_API_NODE_TYPE_PROPERTY;
572 	return result;
573 }
574 
575 /**
576  * {@inheritDoc}
577  */
578 static void
valadoc_api_property_real_accept(ValadocApiNode * base,ValadocApiVisitor * visitor)579 valadoc_api_property_real_accept (ValadocApiNode* base,
580                                   ValadocApiVisitor* visitor)
581 {
582 	ValadocApiProperty * self;
583 	self = (ValadocApiProperty*) base;
584 	g_return_if_fail (visitor != NULL);
585 	valadoc_api_visitor_visit_property (visitor, self);
586 }
587 
588 static void
valadoc_api_property_class_init(ValadocApiPropertyClass * klass,gpointer klass_data)589 valadoc_api_property_class_init (ValadocApiPropertyClass * klass,
590                                  gpointer klass_data)
591 {
592 	valadoc_api_property_parent_class = g_type_class_peek_parent (klass);
593 	g_type_class_adjust_private_offset (klass, &ValadocApiProperty_private_offset);
594 	((ValadocApiItemClass *) klass)->parse_comments = (void (*) (ValadocApiItem*, ValadocSettings*, ValadocDocumentationParser*)) valadoc_api_property_real_parse_comments;
595 	((ValadocApiItemClass *) klass)->check_comments = (void (*) (ValadocApiItem*, ValadocSettings*, ValadocDocumentationParser*)) valadoc_api_property_real_check_comments;
596 	((ValadocApiItemClass *) klass)->build_signature = (ValadocContentInline* (*) (ValadocApiItem*)) valadoc_api_property_real_build_signature;
597 	((ValadocApiNodeClass *) klass)->accept = (void (*) (ValadocApiNode*, ValadocApiVisitor*)) valadoc_api_property_real_accept;
598 	VALADOC_API_NODE_CLASS (klass)->get_node_type = valadoc_api_property_real_get_node_type;
599 	G_OBJECT_CLASS (klass)->get_property = _vala_valadoc_api_property_get_property;
600 	G_OBJECT_CLASS (klass)->set_property = _vala_valadoc_api_property_set_property;
601 	G_OBJECT_CLASS (klass)->finalize = valadoc_api_property_finalize;
602 	/**
603 	 * The property type.
604 	 */
605 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_PROPERTY_PROPERTY_TYPE_PROPERTY, valadoc_api_property_properties[VALADOC_API_PROPERTY_PROPERTY_TYPE_PROPERTY] = g_param_spec_object ("property-type", "property-type", "property-type", VALADOC_API_TYPE_TYPEREFERENCE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
606 	/**
607 	 * Specifies whether the property is virtual.
608 	 */
609 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_PROPERTY_IS_VIRTUAL_PROPERTY, valadoc_api_property_properties[VALADOC_API_PROPERTY_IS_VIRTUAL_PROPERTY] = g_param_spec_boolean ("is-virtual", "is-virtual", "is-virtual", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
610 	/**
611 	 * Specifies whether the property is abstract.
612 	 */
613 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_PROPERTY_IS_ABSTRACT_PROPERTY, valadoc_api_property_properties[VALADOC_API_PROPERTY_IS_ABSTRACT_PROPERTY] = g_param_spec_boolean ("is-abstract", "is-abstract", "is-abstract", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
614 	/**
615 	 * Specifies whether the property is override.
616 	 */
617 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_PROPERTY_IS_OVERRIDE_PROPERTY, valadoc_api_property_properties[VALADOC_API_PROPERTY_IS_OVERRIDE_PROPERTY] = g_param_spec_boolean ("is-override", "is-override", "is-override", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
618 	/**
619 	 * Specifies whether the property is visible.
620 	 */
621 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_PROPERTY_IS_DBUS_VISIBLE_PROPERTY, valadoc_api_property_properties[VALADOC_API_PROPERTY_IS_DBUS_VISIBLE_PROPERTY] = g_param_spec_boolean ("is-dbus-visible", "is-dbus-visible", "is-dbus-visible", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
622 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_PROPERTY_SETTER_PROPERTY, valadoc_api_property_properties[VALADOC_API_PROPERTY_SETTER_PROPERTY] = g_param_spec_object ("setter", "setter", "setter", VALADOC_API_TYPE_PROPERTY_ACCESSOR, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
623 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_PROPERTY_GETTER_PROPERTY, valadoc_api_property_properties[VALADOC_API_PROPERTY_GETTER_PROPERTY] = g_param_spec_object ("getter", "getter", "getter", VALADOC_API_TYPE_PROPERTY_ACCESSOR, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
624 	/**
625 	 * Specifies the virtual or abstract property this property overrides.
626 	 */
627 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_PROPERTY_BASE_PROPERTY_PROPERTY, valadoc_api_property_properties[VALADOC_API_PROPERTY_BASE_PROPERTY_PROPERTY] = g_param_spec_object ("base-property", "base-property", "base-property", VALADOC_API_TYPE_PROPERTY, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
628 	/**
629 	 * {@inheritDoc}
630 	 */
631 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_PROPERTY_NODE_TYPE_PROPERTY, valadoc_api_property_properties[VALADOC_API_PROPERTY_NODE_TYPE_PROPERTY] = g_param_spec_enum ("node-type", "node-type", "node-type", VALADOC_API_TYPE_NODE_TYPE, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
632 }
633 
634 static void
valadoc_api_property_instance_init(ValadocApiProperty * self,gpointer klass)635 valadoc_api_property_instance_init (ValadocApiProperty * self,
636                                     gpointer klass)
637 {
638 	self->priv = valadoc_api_property_get_instance_private (self);
639 }
640 
641 static void
valadoc_api_property_finalize(GObject * obj)642 valadoc_api_property_finalize (GObject * obj)
643 {
644 	ValadocApiProperty * self;
645 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALADOC_API_TYPE_PROPERTY, ValadocApiProperty);
646 	_g_free0 (self->priv->dbus_name);
647 	_g_free0 (self->priv->cname);
648 	_g_object_unref0 (self->priv->_property_type);
649 	_g_object_unref0 (self->priv->_setter);
650 	_g_object_unref0 (self->priv->_getter);
651 	_g_object_unref0 (self->priv->_base_property);
652 	G_OBJECT_CLASS (valadoc_api_property_parent_class)->finalize (obj);
653 }
654 
655 /**
656  * Represents a property declaration.
657  */
658 static GType
valadoc_api_property_get_type_once(void)659 valadoc_api_property_get_type_once (void)
660 {
661 	static const GTypeInfo g_define_type_info = { sizeof (ValadocApiPropertyClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_api_property_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocApiProperty), 0, (GInstanceInitFunc) valadoc_api_property_instance_init, NULL };
662 	GType valadoc_api_property_type_id;
663 	valadoc_api_property_type_id = g_type_register_static (VALADOC_API_TYPE_SYMBOL, "ValadocApiProperty", &g_define_type_info, 0);
664 	ValadocApiProperty_private_offset = g_type_add_instance_private (valadoc_api_property_type_id, sizeof (ValadocApiPropertyPrivate));
665 	return valadoc_api_property_type_id;
666 }
667 
668 GType
valadoc_api_property_get_type(void)669 valadoc_api_property_get_type (void)
670 {
671 	static volatile gsize valadoc_api_property_type_id__volatile = 0;
672 	if (g_once_init_enter (&valadoc_api_property_type_id__volatile)) {
673 		GType valadoc_api_property_type_id;
674 		valadoc_api_property_type_id = valadoc_api_property_get_type_once ();
675 		g_once_init_leave (&valadoc_api_property_type_id__volatile, valadoc_api_property_type_id);
676 	}
677 	return valadoc_api_property_type_id__volatile;
678 }
679 
680 static void
_vala_valadoc_api_property_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)681 _vala_valadoc_api_property_get_property (GObject * object,
682                                          guint property_id,
683                                          GValue * value,
684                                          GParamSpec * pspec)
685 {
686 	ValadocApiProperty * self;
687 	self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_API_TYPE_PROPERTY, ValadocApiProperty);
688 	switch (property_id) {
689 		case VALADOC_API_PROPERTY_PROPERTY_TYPE_PROPERTY:
690 		g_value_set_object (value, valadoc_api_property_get_property_type (self));
691 		break;
692 		case VALADOC_API_PROPERTY_IS_VIRTUAL_PROPERTY:
693 		g_value_set_boolean (value, valadoc_api_property_get_is_virtual (self));
694 		break;
695 		case VALADOC_API_PROPERTY_IS_ABSTRACT_PROPERTY:
696 		g_value_set_boolean (value, valadoc_api_property_get_is_abstract (self));
697 		break;
698 		case VALADOC_API_PROPERTY_IS_OVERRIDE_PROPERTY:
699 		g_value_set_boolean (value, valadoc_api_property_get_is_override (self));
700 		break;
701 		case VALADOC_API_PROPERTY_IS_DBUS_VISIBLE_PROPERTY:
702 		g_value_set_boolean (value, valadoc_api_property_get_is_dbus_visible (self));
703 		break;
704 		case VALADOC_API_PROPERTY_SETTER_PROPERTY:
705 		g_value_set_object (value, valadoc_api_property_get_setter (self));
706 		break;
707 		case VALADOC_API_PROPERTY_GETTER_PROPERTY:
708 		g_value_set_object (value, valadoc_api_property_get_getter (self));
709 		break;
710 		case VALADOC_API_PROPERTY_BASE_PROPERTY_PROPERTY:
711 		g_value_set_object (value, valadoc_api_property_get_base_property (self));
712 		break;
713 		case VALADOC_API_PROPERTY_NODE_TYPE_PROPERTY:
714 		g_value_set_enum (value, valadoc_api_node_get_node_type ((ValadocApiNode*) self));
715 		break;
716 		default:
717 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
718 		break;
719 	}
720 }
721 
722 static void
_vala_valadoc_api_property_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)723 _vala_valadoc_api_property_set_property (GObject * object,
724                                          guint property_id,
725                                          const GValue * value,
726                                          GParamSpec * pspec)
727 {
728 	ValadocApiProperty * self;
729 	self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_API_TYPE_PROPERTY, ValadocApiProperty);
730 	switch (property_id) {
731 		case VALADOC_API_PROPERTY_PROPERTY_TYPE_PROPERTY:
732 		valadoc_api_property_set_property_type (self, g_value_get_object (value));
733 		break;
734 		case VALADOC_API_PROPERTY_IS_DBUS_VISIBLE_PROPERTY:
735 		valadoc_api_property_set_is_dbus_visible (self, g_value_get_boolean (value));
736 		break;
737 		case VALADOC_API_PROPERTY_SETTER_PROPERTY:
738 		valadoc_api_property_set_setter (self, g_value_get_object (value));
739 		break;
740 		case VALADOC_API_PROPERTY_GETTER_PROPERTY:
741 		valadoc_api_property_set_getter (self, g_value_get_object (value));
742 		break;
743 		case VALADOC_API_PROPERTY_BASE_PROPERTY_PROPERTY:
744 		valadoc_api_property_set_base_property (self, g_value_get_object (value));
745 		break;
746 		default:
747 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
748 		break;
749 	}
750 }
751 
752