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