1 /* tagletparam.c generated by valac, the Vala compiler
2  * generated from tagletparam.vala, do not modify */
3 
4 /* taglet.vala
5  *
6  * Copyright (C) 2008-2009 Didier Villevalois
7  * Copyright (C) 2008-2012 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 <stdlib.h>
29 #include <string.h>
30 #include <glib.h>
31 #include <glib-object.h>
32 #include <valagee.h>
33 
34 enum  {
35 	VALADOC_TAGLETS_PARAM_0_PROPERTY,
36 	VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY,
37 	VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY,
38 	VALADOC_TAGLETS_PARAM_POSITION_PROPERTY,
39 	VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY,
40 	VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY,
41 	VALADOC_TAGLETS_PARAM_NUM_PROPERTIES
42 };
43 static GParamSpec* valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_NUM_PROPERTIES];
44 #define _g_free0(var) (var = (g_free (var), NULL))
45 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
46 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
47 
48 struct _ValadocTagletsParamPrivate {
49 	gchar* _parameter_name;
50 	ValadocApiSymbol* _parameter;
51 	gint _position;
52 	gboolean _is_c_self_param;
53 	gboolean _is_this;
54 };
55 
56 static gint ValadocTagletsParam_private_offset;
57 static gpointer valadoc_taglets_param_parent_class = NULL;
58 static ValadocContentTagletIface * valadoc_taglets_param_valadoc_content_taglet_parent_iface = NULL;
59 static ValadocContentBlockIface * valadoc_taglets_param_valadoc_content_block_parent_iface = NULL;
60 
61 G_GNUC_INTERNAL void valadoc_taglets_param_set_parameter_name (ValadocTagletsParam* self,
62                                                const gchar* value);
63 static void valadoc_taglets_param_set_parameter (ValadocTagletsParam* self,
64                                           ValadocApiSymbol* value);
65 static void valadoc_taglets_param_set_position (ValadocTagletsParam* self,
66                                          gint value);
67 G_GNUC_INTERNAL void valadoc_taglets_param_set_is_c_self_param (ValadocTagletsParam* self,
68                                                 gboolean value);
69 static void valadoc_taglets_param_set_is_this (ValadocTagletsParam* self,
70                                         gboolean value);
71 static ValadocRule* valadoc_taglets_param_real_get_parser_rule (ValadocContentTaglet* base,
72                                                          ValadocRule* run_rule);
73 static void __lambda11_ (ValadocTagletsParam* self,
74                   ValadocToken* token,
75                   GError** error);
76 static void ___lambda11__valadoc_token_type_action (ValadocToken* token,
77                                              gpointer self,
78                                              GError** error);
79 static void valadoc_taglets_param_real_check (ValadocContentContentElement* base,
80                                        ValadocApiTree* api_root,
81                                        ValadocApiNode* container,
82                                        const gchar* file_path,
83                                        ValadocErrorReporter* reporter,
84                                        ValadocSettings* settings);
85 static gboolean valadoc_taglets_param_has_instance (ValadocTagletsParam* self,
86                                              ValadocApiItem* element);
87 G_GNUC_INTERNAL const gchar* valadoc_api_callable_get_implicit_array_length_cparameter_name (ValadocApiCallable* self);
88 G_GNUC_INTERNAL const gchar* valadoc_api_parameter_get_implicit_array_length_cparameter_name (ValadocApiParameter* self);
89 G_GNUC_INTERNAL const gchar* valadoc_api_parameter_get_implicit_closure_cparameter_name (ValadocApiParameter* self);
90 G_GNUC_INTERNAL const gchar* valadoc_api_parameter_get_implicit_destroy_cparameter_name (ValadocApiParameter* self);
91 static void valadoc_taglets_param_real_accept (ValadocContentContentElement* base,
92                                         ValadocContentContentVisitor* visitor);
93 static ValaList* valadoc_taglets_param_real_get_inheritable_documentation (ValadocContentTaglet* base);
94 static gboolean valadoc_taglets_param_real_inheritable (ValadocContentTaglet* base,
95                                                  ValadocContentTaglet* taglet);
96 static ValadocContentContentElement* valadoc_taglets_param_real_copy (ValadocContentContentElement* base,
97                                                                ValadocContentContentElement* new_parent);
98 G_GNUC_INTERNAL void valadoc_content_content_element_set_parent (ValadocContentContentElement* self,
99                                                  ValadocContentContentElement* value);
100 G_GNUC_INTERNAL ValadocContentBlockContent* valadoc_content_block_content_construct (GType object_type);
101 static void valadoc_taglets_param_finalize (GObject * obj);
102 static GType valadoc_taglets_param_get_type_once (void);
103 static void _vala_valadoc_taglets_param_get_property (GObject * object,
104                                                guint property_id,
105                                                GValue * value,
106                                                GParamSpec * pspec);
107 static void _vala_valadoc_taglets_param_set_property (GObject * object,
108                                                guint property_id,
109                                                const GValue * value,
110                                                GParamSpec * pspec);
111 static void _vala_array_destroy (gpointer array,
112                           gint array_length,
113                           GDestroyNotify destroy_func);
114 static void _vala_array_free (gpointer array,
115                        gint array_length,
116                        GDestroyNotify destroy_func);
117 
118 static inline gpointer
valadoc_taglets_param_get_instance_private(ValadocTagletsParam * self)119 valadoc_taglets_param_get_instance_private (ValadocTagletsParam* self)
120 {
121 	return G_STRUCT_MEMBER_P (self, ValadocTagletsParam_private_offset);
122 }
123 
124 const gchar*
valadoc_taglets_param_get_parameter_name(ValadocTagletsParam * self)125 valadoc_taglets_param_get_parameter_name (ValadocTagletsParam* self)
126 {
127 	const gchar* result;
128 	const gchar* _tmp0_;
129 	g_return_val_if_fail (self != NULL, NULL);
130 	_tmp0_ = self->priv->_parameter_name;
131 	result = _tmp0_;
132 	return result;
133 }
134 
135 G_GNUC_INTERNAL void
valadoc_taglets_param_set_parameter_name(ValadocTagletsParam * self,const gchar * value)136 valadoc_taglets_param_set_parameter_name (ValadocTagletsParam* self,
137                                           const gchar* value)
138 {
139 	gchar* old_value;
140 	g_return_if_fail (self != NULL);
141 	old_value = valadoc_taglets_param_get_parameter_name (self);
142 	if (g_strcmp0 (value, old_value) != 0) {
143 		gchar* _tmp0_;
144 		_tmp0_ = g_strdup (value);
145 		_g_free0 (self->priv->_parameter_name);
146 		self->priv->_parameter_name = _tmp0_;
147 		g_object_notify_by_pspec ((GObject *) self, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY]);
148 	}
149 }
150 
151 ValadocApiSymbol*
valadoc_taglets_param_get_parameter(ValadocTagletsParam * self)152 valadoc_taglets_param_get_parameter (ValadocTagletsParam* self)
153 {
154 	ValadocApiSymbol* result;
155 	ValadocApiSymbol* _tmp0_;
156 	g_return_val_if_fail (self != NULL, NULL);
157 	_tmp0_ = self->priv->_parameter;
158 	result = _tmp0_;
159 	return result;
160 }
161 
162 static void
valadoc_taglets_param_set_parameter(ValadocTagletsParam * self,ValadocApiSymbol * value)163 valadoc_taglets_param_set_parameter (ValadocTagletsParam* self,
164                                      ValadocApiSymbol* value)
165 {
166 	ValadocApiSymbol* old_value;
167 	g_return_if_fail (self != NULL);
168 	old_value = valadoc_taglets_param_get_parameter (self);
169 	if (old_value != value) {
170 		self->priv->_parameter = value;
171 		g_object_notify_by_pspec ((GObject *) self, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY]);
172 	}
173 }
174 
175 gint
valadoc_taglets_param_get_position(ValadocTagletsParam * self)176 valadoc_taglets_param_get_position (ValadocTagletsParam* self)
177 {
178 	gint result;
179 	g_return_val_if_fail (self != NULL, 0);
180 	result = self->priv->_position;
181 	return result;
182 }
183 
184 static void
valadoc_taglets_param_set_position(ValadocTagletsParam * self,gint value)185 valadoc_taglets_param_set_position (ValadocTagletsParam* self,
186                                     gint value)
187 {
188 	gint old_value;
189 	g_return_if_fail (self != NULL);
190 	old_value = valadoc_taglets_param_get_position (self);
191 	if (old_value != value) {
192 		self->priv->_position = value;
193 		g_object_notify_by_pspec ((GObject *) self, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_POSITION_PROPERTY]);
194 	}
195 }
196 
197 gboolean
valadoc_taglets_param_get_is_c_self_param(ValadocTagletsParam * self)198 valadoc_taglets_param_get_is_c_self_param (ValadocTagletsParam* self)
199 {
200 	gboolean result;
201 	g_return_val_if_fail (self != NULL, FALSE);
202 	result = self->priv->_is_c_self_param;
203 	return result;
204 }
205 
206 G_GNUC_INTERNAL void
valadoc_taglets_param_set_is_c_self_param(ValadocTagletsParam * self,gboolean value)207 valadoc_taglets_param_set_is_c_self_param (ValadocTagletsParam* self,
208                                            gboolean value)
209 {
210 	gboolean old_value;
211 	g_return_if_fail (self != NULL);
212 	old_value = valadoc_taglets_param_get_is_c_self_param (self);
213 	if (old_value != value) {
214 		self->priv->_is_c_self_param = value;
215 		g_object_notify_by_pspec ((GObject *) self, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY]);
216 	}
217 }
218 
219 gboolean
valadoc_taglets_param_get_is_this(ValadocTagletsParam * self)220 valadoc_taglets_param_get_is_this (ValadocTagletsParam* self)
221 {
222 	gboolean result;
223 	g_return_val_if_fail (self != NULL, FALSE);
224 	result = self->priv->_is_this;
225 	return result;
226 }
227 
228 static void
valadoc_taglets_param_set_is_this(ValadocTagletsParam * self,gboolean value)229 valadoc_taglets_param_set_is_this (ValadocTagletsParam* self,
230                                    gboolean value)
231 {
232 	gboolean old_value;
233 	g_return_if_fail (self != NULL);
234 	old_value = valadoc_taglets_param_get_is_this (self);
235 	if (old_value != value) {
236 		self->priv->_is_this = value;
237 		g_object_notify_by_pspec ((GObject *) self, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY]);
238 	}
239 }
240 
241 static gpointer
_g_object_ref0(gpointer self)242 _g_object_ref0 (gpointer self)
243 {
244 	return self ? g_object_ref (self) : NULL;
245 }
246 
247 static void
__lambda11_(ValadocTagletsParam * self,ValadocToken * token,GError ** error)248 __lambda11_ (ValadocTagletsParam* self,
249              ValadocToken* token,
250              GError** error)
251 {
252 	const gchar* _tmp0_;
253 	g_return_if_fail (token != NULL);
254 	_tmp0_ = valadoc_token_to_string (token);
255 	valadoc_taglets_param_set_parameter_name (self, _tmp0_);
256 }
257 
258 static void
___lambda11__valadoc_token_type_action(ValadocToken * token,gpointer self,GError ** error)259 ___lambda11__valadoc_token_type_action (ValadocToken* token,
260                                         gpointer self,
261                                         GError** error)
262 {
263 	__lambda11_ ((ValadocTagletsParam*) self, token, error);
264 }
265 
266 static ValadocRule*
valadoc_taglets_param_real_get_parser_rule(ValadocContentTaglet * base,ValadocRule * run_rule)267 valadoc_taglets_param_real_get_parser_rule (ValadocContentTaglet* base,
268                                             ValadocRule* run_rule)
269 {
270 	ValadocTagletsParam * self;
271 	ValadocTokenType* _tmp0_;
272 	GObject* _tmp1_;
273 	GObject** _tmp2_;
274 	GObject** _tmp3_;
275 	gint _tmp3__length1;
276 	ValadocRule* _tmp4_;
277 	GObject** _tmp5_;
278 	GObject** _tmp6_;
279 	gint _tmp6__length1;
280 	ValadocRule* _tmp7_;
281 	ValadocTokenType* _tmp8_;
282 	ValadocTokenType* _tmp9_;
283 	ValadocTokenType* _tmp10_;
284 	GObject* _tmp11_;
285 	GObject** _tmp12_;
286 	GObject** _tmp13_;
287 	gint _tmp13__length1;
288 	ValadocRule* _tmp14_;
289 	ValadocRule* _tmp15_;
290 	ValadocRule* result = NULL;
291 	self = (ValadocTagletsParam*) base;
292 	g_return_val_if_fail (run_rule != NULL, NULL);
293 	_tmp0_ = valadoc_token_type_SPACE;
294 	_tmp1_ = _g_object_ref0 ((GObject*) _tmp0_);
295 	_tmp2_ = g_new0 (GObject*, 1 + 1);
296 	_tmp2_[0] = _tmp1_;
297 	_tmp3_ = _tmp2_;
298 	_tmp3__length1 = 1;
299 	_tmp4_ = valadoc_rule_many (_tmp3_, (gint) 1);
300 	_tmp5_ = g_new0 (GObject*, 1 + 1);
301 	_tmp5_[0] = (GObject*) _tmp4_;
302 	_tmp6_ = _tmp5_;
303 	_tmp6__length1 = 1;
304 	_tmp7_ = valadoc_rule_option (_tmp6_, (gint) 1);
305 	_tmp8_ = valadoc_token_type_any_word ();
306 	_tmp9_ = _tmp8_;
307 	_tmp10_ = valadoc_token_type_action (_tmp9_, ___lambda11__valadoc_token_type_action, self);
308 	_tmp11_ = _g_object_ref0 ((GObject*) run_rule);
309 	_tmp12_ = g_new0 (GObject*, 3 + 1);
310 	_tmp12_[0] = (GObject*) _tmp7_;
311 	_tmp12_[1] = (GObject*) _tmp10_;
312 	_tmp12_[2] = _tmp11_;
313 	_tmp13_ = _tmp12_;
314 	_tmp13__length1 = 3;
315 	_tmp14_ = valadoc_rule_seq (_tmp13_, (gint) 3);
316 	_tmp15_ = _tmp14_;
317 	_tmp13_ = (_vala_array_free (_tmp13_, _tmp13__length1, (GDestroyNotify) g_object_unref), NULL);
318 	_g_object_unref0 (_tmp9_);
319 	_tmp6_ = (_vala_array_free (_tmp6_, _tmp6__length1, (GDestroyNotify) g_object_unref), NULL);
320 	_tmp3_ = (_vala_array_free (_tmp3_, _tmp3__length1, (GDestroyNotify) g_object_unref), NULL);
321 	result = _tmp15_;
322 	return result;
323 }
324 
325 static gpointer
_vala_iterable_ref0(gpointer self)326 _vala_iterable_ref0 (gpointer self)
327 {
328 	return self ? vala_iterable_ref (self) : NULL;
329 }
330 
331 static void
valadoc_taglets_param_real_check(ValadocContentContentElement * base,ValadocApiTree * api_root,ValadocApiNode * container,const gchar * file_path,ValadocErrorReporter * reporter,ValadocSettings * settings)332 valadoc_taglets_param_real_check (ValadocContentContentElement* base,
333                                   ValadocApiTree* api_root,
334                                   ValadocApiNode* container,
335                                   const gchar* file_path,
336                                   ValadocErrorReporter* reporter,
337                                   ValadocSettings* settings)
338 {
339 	ValadocTagletsParam * self;
340 	const gchar* implicit_return_array_length = NULL;
341 	gboolean has_instance = FALSE;
342 	gboolean is_implicit = FALSE;
343 	gboolean _tmp6_ = FALSE;
344 	gboolean _tmp7_;
345 	ValadocApiSymbol* _tmp77_;
346 	self = (ValadocTagletsParam*) base;
347 	g_return_if_fail (api_root != NULL);
348 	g_return_if_fail (container != NULL);
349 	g_return_if_fail (file_path != NULL);
350 	g_return_if_fail (reporter != NULL);
351 	g_return_if_fail (settings != NULL);
352 	implicit_return_array_length = NULL;
353 	has_instance = valadoc_taglets_param_has_instance (self, (ValadocApiItem*) container);
354 	is_implicit = FALSE;
355 	valadoc_taglets_param_set_parameter (self, NULL);
356 	if (VALADOC_API_IS_CALLABLE (container)) {
357 		const gchar* _tmp0_;
358 		const gchar* _tmp1_;
359 		_tmp0_ = valadoc_api_callable_get_implicit_array_length_cparameter_name (G_TYPE_CHECK_INSTANCE_CAST (container, VALADOC_API_TYPE_CALLABLE, ValadocApiCallable));
360 		_tmp1_ = _tmp0_;
361 		implicit_return_array_length = _tmp1_;
362 	} else {
363 		gchar* _tmp2_;
364 		gchar* _tmp3_;
365 		gchar* _tmp4_;
366 		gchar* _tmp5_;
367 		_tmp2_ = valadoc_api_node_get_full_name (container);
368 		_tmp3_ = _tmp2_;
369 		_tmp4_ = g_strdup_printf ("%s: %s: @param", file_path, _tmp3_);
370 		_tmp5_ = _tmp4_;
371 		valadoc_error_reporter_simple_warning (reporter, _tmp5_, "@param used outside method/delegate/signal context");
372 		_g_free0 (_tmp5_);
373 		_g_free0 (_tmp3_);
374 		VALADOC_CONTENT_CONTENT_ELEMENT_CLASS (valadoc_taglets_param_parent_class)->check ((ValadocContentContentElement*) G_TYPE_CHECK_INSTANCE_CAST (self, VALADOC_CONTENT_TYPE_BLOCK_CONTENT, ValadocContentBlockContent), api_root, container, file_path, reporter, settings);
375 		return;
376 	}
377 	_tmp7_ = self->priv->_is_c_self_param;
378 	if (_tmp7_ == TRUE) {
379 		_tmp6_ = has_instance;
380 	} else {
381 		_tmp6_ = FALSE;
382 	}
383 	if (_tmp6_) {
384 		valadoc_taglets_param_set_parameter_name (self, "this");
385 		valadoc_taglets_param_set_is_this (self, TRUE);
386 		valadoc_taglets_param_set_position (self, 0);
387 	} else {
388 		const gchar* _tmp8_;
389 		_tmp8_ = self->priv->_parameter_name;
390 		if (g_strcmp0 (_tmp8_, "...") == 0) {
391 			ValaList* params = NULL;
392 			ValaList* _tmp9_;
393 			_tmp9_ = valadoc_api_node_get_children_by_type (container, VALADOC_API_NODE_TYPE_FORMAL_PARAMETER, FALSE);
394 			params = _tmp9_;
395 			{
396 				ValaList* _param_list = NULL;
397 				ValaList* _tmp10_;
398 				ValaList* _tmp11_;
399 				gint _param_size = 0;
400 				ValaList* _tmp12_;
401 				gint _tmp13_;
402 				gint _tmp14_;
403 				gint _param_index = 0;
404 				_tmp10_ = params;
405 				_tmp11_ = _vala_iterable_ref0 (_tmp10_);
406 				_param_list = _tmp11_;
407 				_tmp12_ = _param_list;
408 				_tmp13_ = vala_collection_get_size ((ValaCollection*) _tmp12_);
409 				_tmp14_ = _tmp13_;
410 				_param_size = _tmp14_;
411 				_param_index = -1;
412 				while (TRUE) {
413 					gint _tmp15_;
414 					gint _tmp16_;
415 					ValadocApiNode* param = NULL;
416 					ValaList* _tmp17_;
417 					gpointer _tmp18_;
418 					ValadocApiNode* _tmp19_;
419 					gboolean _tmp20_;
420 					gboolean _tmp21_;
421 					_param_index = _param_index + 1;
422 					_tmp15_ = _param_index;
423 					_tmp16_ = _param_size;
424 					if (!(_tmp15_ < _tmp16_)) {
425 						break;
426 					}
427 					_tmp17_ = _param_list;
428 					_tmp18_ = vala_list_get (_tmp17_, _param_index);
429 					param = (ValadocApiNode*) _tmp18_;
430 					_tmp19_ = param;
431 					_tmp20_ = valadoc_api_parameter_get_ellipsis (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, VALADOC_API_TYPE_PARAMETER, ValadocApiParameter));
432 					_tmp21_ = _tmp20_;
433 					if (_tmp21_) {
434 						ValadocApiNode* _tmp22_;
435 						gint _tmp23_ = 0;
436 						_tmp22_ = param;
437 						valadoc_taglets_param_set_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol));
438 						if (has_instance) {
439 							ValaList* _tmp24_;
440 							gint _tmp25_;
441 							gint _tmp26_;
442 							_tmp24_ = params;
443 							_tmp25_ = vala_collection_get_size ((ValaCollection*) _tmp24_);
444 							_tmp26_ = _tmp25_;
445 							_tmp23_ = _tmp26_;
446 						} else {
447 							ValaList* _tmp27_;
448 							gint _tmp28_;
449 							gint _tmp29_;
450 							_tmp27_ = params;
451 							_tmp28_ = vala_collection_get_size ((ValaCollection*) _tmp27_);
452 							_tmp29_ = _tmp28_;
453 							_tmp23_ = _tmp29_ - 1;
454 						}
455 						valadoc_taglets_param_set_position (self, _tmp23_);
456 						_g_object_unref0 (param);
457 						break;
458 					}
459 					_g_object_unref0 (param);
460 				}
461 				_vala_iterable_unref0 (_param_list);
462 			}
463 			_vala_iterable_unref0 (params);
464 		} else {
465 			ValaList* params = NULL;
466 			ValadocApiNodeType* _tmp30_;
467 			ValadocApiNodeType* _tmp31_;
468 			gint _tmp31__length1;
469 			ValaList* _tmp32_;
470 			ValaList* _tmp33_;
471 			gint _tmp34_ = 0;
472 			gint pos = 0;
473 			gboolean _tmp68_ = FALSE;
474 			ValadocApiSymbol* _tmp69_;
475 			_tmp30_ = g_new0 (ValadocApiNodeType, 2);
476 			_tmp30_[0] = VALADOC_API_NODE_TYPE_FORMAL_PARAMETER;
477 			_tmp30_[1] = VALADOC_API_NODE_TYPE_TYPE_PARAMETER;
478 			_tmp31_ = _tmp30_;
479 			_tmp31__length1 = 2;
480 			_tmp32_ = valadoc_api_node_get_children_by_types (container, _tmp31_, (gint) 2, FALSE);
481 			_tmp33_ = _tmp32_;
482 			_tmp31_ = (g_free (_tmp31_), NULL);
483 			params = _tmp33_;
484 			if (has_instance) {
485 				_tmp34_ = 1;
486 			} else {
487 				_tmp34_ = 0;
488 			}
489 			pos = _tmp34_;
490 			{
491 				ValaList* _param_list = NULL;
492 				ValaList* _tmp35_;
493 				ValaList* _tmp36_;
494 				gint _param_size = 0;
495 				ValaList* _tmp37_;
496 				gint _tmp38_;
497 				gint _tmp39_;
498 				gint _param_index = 0;
499 				_tmp35_ = params;
500 				_tmp36_ = _vala_iterable_ref0 (_tmp35_);
501 				_param_list = _tmp36_;
502 				_tmp37_ = _param_list;
503 				_tmp38_ = vala_collection_get_size ((ValaCollection*) _tmp37_);
504 				_tmp39_ = _tmp38_;
505 				_param_size = _tmp39_;
506 				_param_index = -1;
507 				while (TRUE) {
508 					gint _tmp40_;
509 					gint _tmp41_;
510 					ValadocApiNode* param = NULL;
511 					ValaList* _tmp42_;
512 					gpointer _tmp43_;
513 					ValadocApiNode* _tmp44_;
514 					const gchar* _tmp45_;
515 					const gchar* _tmp46_;
516 					const gchar* _tmp47_;
517 					ValadocApiParameter* formalparam = NULL;
518 					ValadocApiNode* _tmp49_;
519 					ValadocApiParameter* _tmp50_;
520 					gboolean _tmp51_ = FALSE;
521 					ValadocApiParameter* _tmp52_;
522 					gint _tmp67_;
523 					_param_index = _param_index + 1;
524 					_tmp40_ = _param_index;
525 					_tmp41_ = _param_size;
526 					if (!(_tmp40_ < _tmp41_)) {
527 						break;
528 					}
529 					_tmp42_ = _param_list;
530 					_tmp43_ = vala_list_get (_tmp42_, _param_index);
531 					param = (ValadocApiNode*) _tmp43_;
532 					_tmp44_ = param;
533 					_tmp45_ = valadoc_api_node_get_name (_tmp44_);
534 					_tmp46_ = _tmp45_;
535 					_tmp47_ = self->priv->_parameter_name;
536 					if (g_strcmp0 (_tmp46_, _tmp47_) == 0) {
537 						ValadocApiNode* _tmp48_;
538 						_tmp48_ = param;
539 						valadoc_taglets_param_set_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp48_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol));
540 						valadoc_taglets_param_set_position (self, pos);
541 						_g_object_unref0 (param);
542 						break;
543 					}
544 					_tmp49_ = param;
545 					_tmp50_ = _g_object_ref0 (VALADOC_API_IS_PARAMETER (_tmp49_) ? ((ValadocApiParameter*) _tmp49_) : NULL);
546 					formalparam = _tmp50_;
547 					_tmp52_ = formalparam;
548 					if (_tmp52_ != NULL) {
549 						gboolean _tmp53_ = FALSE;
550 						gboolean _tmp54_ = FALSE;
551 						ValadocApiParameter* _tmp55_;
552 						const gchar* _tmp56_;
553 						const gchar* _tmp57_;
554 						const gchar* _tmp58_;
555 						_tmp55_ = formalparam;
556 						_tmp56_ = valadoc_api_parameter_get_implicit_array_length_cparameter_name (_tmp55_);
557 						_tmp57_ = _tmp56_;
558 						_tmp58_ = self->priv->_parameter_name;
559 						if (g_strcmp0 (_tmp57_, _tmp58_) == 0) {
560 							_tmp54_ = TRUE;
561 						} else {
562 							ValadocApiParameter* _tmp59_;
563 							const gchar* _tmp60_;
564 							const gchar* _tmp61_;
565 							const gchar* _tmp62_;
566 							_tmp59_ = formalparam;
567 							_tmp60_ = valadoc_api_parameter_get_implicit_closure_cparameter_name (_tmp59_);
568 							_tmp61_ = _tmp60_;
569 							_tmp62_ = self->priv->_parameter_name;
570 							_tmp54_ = g_strcmp0 (_tmp61_, _tmp62_) == 0;
571 						}
572 						if (_tmp54_) {
573 							_tmp53_ = TRUE;
574 						} else {
575 							ValadocApiParameter* _tmp63_;
576 							const gchar* _tmp64_;
577 							const gchar* _tmp65_;
578 							const gchar* _tmp66_;
579 							_tmp63_ = formalparam;
580 							_tmp64_ = valadoc_api_parameter_get_implicit_destroy_cparameter_name (_tmp63_);
581 							_tmp65_ = _tmp64_;
582 							_tmp66_ = self->priv->_parameter_name;
583 							_tmp53_ = g_strcmp0 (_tmp65_, _tmp66_) == 0;
584 						}
585 						_tmp51_ = _tmp53_;
586 					} else {
587 						_tmp51_ = FALSE;
588 					}
589 					if (_tmp51_) {
590 						is_implicit = TRUE;
591 						_g_object_unref0 (formalparam);
592 						_g_object_unref0 (param);
593 						break;
594 					}
595 					_tmp67_ = pos;
596 					pos = _tmp67_ + 1;
597 					_g_object_unref0 (formalparam);
598 					_g_object_unref0 (param);
599 				}
600 				_vala_iterable_unref0 (_param_list);
601 			}
602 			_tmp69_ = self->priv->_parameter;
603 			if (_tmp69_ == NULL) {
604 				gboolean _tmp70_ = FALSE;
605 				gboolean _tmp71_ = FALSE;
606 				const gchar* _tmp72_;
607 				_tmp72_ = self->priv->_parameter_name;
608 				if (g_strcmp0 (_tmp72_, "error") == 0) {
609 					ValadocApiNodeType* _tmp73_;
610 					ValadocApiNodeType* _tmp74_;
611 					gint _tmp74__length1;
612 					_tmp73_ = g_new0 (ValadocApiNodeType, 2);
613 					_tmp73_[0] = VALADOC_API_NODE_TYPE_ERROR_DOMAIN;
614 					_tmp73_[1] = VALADOC_API_NODE_TYPE_CLASS;
615 					_tmp74_ = _tmp73_;
616 					_tmp74__length1 = 2;
617 					_tmp71_ = valadoc_api_node_has_children (container, _tmp74_, (gint) 2);
618 					_tmp74_ = (g_free (_tmp74_), NULL);
619 				} else {
620 					_tmp71_ = FALSE;
621 				}
622 				if (_tmp71_) {
623 					_tmp70_ = TRUE;
624 				} else {
625 					const gchar* _tmp75_;
626 					const gchar* _tmp76_;
627 					_tmp75_ = self->priv->_parameter_name;
628 					_tmp76_ = implicit_return_array_length;
629 					_tmp70_ = g_strcmp0 (_tmp75_, _tmp76_) == 0;
630 				}
631 				_tmp68_ = _tmp70_;
632 			} else {
633 				_tmp68_ = FALSE;
634 			}
635 			if (_tmp68_) {
636 				is_implicit = TRUE;
637 			}
638 			_vala_iterable_unref0 (params);
639 		}
640 	}
641 	_tmp77_ = self->priv->_parameter;
642 	if (_tmp77_ == NULL) {
643 		if (is_implicit) {
644 			gchar* _tmp78_;
645 			gchar* _tmp79_;
646 			gchar* _tmp80_;
647 			gchar* _tmp81_;
648 			const gchar* _tmp82_;
649 			_tmp78_ = valadoc_api_node_get_full_name (container);
650 			_tmp79_ = _tmp78_;
651 			_tmp80_ = g_strdup_printf ("%s: %s: @param", file_path, _tmp79_);
652 			_tmp81_ = _tmp80_;
653 			_tmp82_ = self->priv->_parameter_name;
654 			valadoc_error_reporter_simple_note (reporter, _tmp81_, "Implicit parameter `%s' exposed in documentation", _tmp82_);
655 			_g_free0 (_tmp81_);
656 			_g_free0 (_tmp79_);
657 		} else {
658 			gboolean _tmp83_;
659 			_tmp83_ = self->priv->_is_c_self_param;
660 			if (!_tmp83_) {
661 				gchar* _tmp84_;
662 				gchar* _tmp85_;
663 				gchar* _tmp86_;
664 				gchar* _tmp87_;
665 				const gchar* _tmp88_;
666 				_tmp84_ = valadoc_api_node_get_full_name (container);
667 				_tmp85_ = _tmp84_;
668 				_tmp86_ = g_strdup_printf ("%s: %s: @param", file_path, _tmp85_);
669 				_tmp87_ = _tmp86_;
670 				_tmp88_ = self->priv->_parameter_name;
671 				valadoc_error_reporter_simple_warning (reporter, _tmp87_, "Unknown parameter `%s'", _tmp88_);
672 				_g_free0 (_tmp87_);
673 				_g_free0 (_tmp85_);
674 			}
675 		}
676 	}
677 	VALADOC_CONTENT_CONTENT_ELEMENT_CLASS (valadoc_taglets_param_parent_class)->check ((ValadocContentContentElement*) G_TYPE_CHECK_INSTANCE_CAST (self, VALADOC_CONTENT_TYPE_BLOCK_CONTENT, ValadocContentBlockContent), api_root, container, file_path, reporter, settings);
678 }
679 
680 static gboolean
valadoc_taglets_param_has_instance(ValadocTagletsParam * self,ValadocApiItem * element)681 valadoc_taglets_param_has_instance (ValadocTagletsParam* self,
682                                     ValadocApiItem* element)
683 {
684 	gboolean result = FALSE;
685 	g_return_val_if_fail (self != NULL, FALSE);
686 	g_return_val_if_fail (element != NULL, FALSE);
687 	if (VALADOC_API_IS_METHOD (element)) {
688 		gboolean _tmp0_;
689 		gboolean _tmp1_;
690 		_tmp0_ = valadoc_api_method_get_is_static (G_TYPE_CHECK_INSTANCE_CAST (element, VALADOC_API_TYPE_METHOD, ValadocApiMethod));
691 		_tmp1_ = _tmp0_;
692 		result = !_tmp1_;
693 		return result;
694 	}
695 	result = FALSE;
696 	return result;
697 }
698 
699 static void
valadoc_taglets_param_real_accept(ValadocContentContentElement * base,ValadocContentContentVisitor * visitor)700 valadoc_taglets_param_real_accept (ValadocContentContentElement* base,
701                                    ValadocContentContentVisitor* visitor)
702 {
703 	ValadocTagletsParam * self;
704 	self = (ValadocTagletsParam*) base;
705 	g_return_if_fail (visitor != NULL);
706 	valadoc_content_content_visitor_visit_taglet (visitor, (ValadocContentTaglet*) self);
707 }
708 
709 static ValaList*
valadoc_taglets_param_real_get_inheritable_documentation(ValadocContentTaglet * base)710 valadoc_taglets_param_real_get_inheritable_documentation (ValadocContentTaglet* base)
711 {
712 	ValadocTagletsParam * self;
713 	ValaList* _tmp0_;
714 	ValaList* _tmp1_;
715 	ValaList* _tmp2_;
716 	ValaList* result = NULL;
717 	self = (ValadocTagletsParam*) base;
718 	_tmp0_ = valadoc_content_block_content_get_content ((ValadocContentBlockContent*) self);
719 	_tmp1_ = _tmp0_;
720 	_tmp2_ = _vala_iterable_ref0 (_tmp1_);
721 	result = _tmp2_;
722 	return result;
723 }
724 
725 static gboolean
valadoc_taglets_param_real_inheritable(ValadocContentTaglet * base,ValadocContentTaglet * taglet)726 valadoc_taglets_param_real_inheritable (ValadocContentTaglet* base,
727                                         ValadocContentTaglet* taglet)
728 {
729 	ValadocTagletsParam * self;
730 	ValadocTagletsParam* t = NULL;
731 	ValadocTagletsParam* _tmp0_;
732 	gboolean _tmp1_ = FALSE;
733 	ValadocApiSymbol* _tmp2_;
734 	ValadocTagletsParam* _tmp3_;
735 	ValadocApiSymbol* _tmp4_;
736 	gboolean result = FALSE;
737 	self = (ValadocTagletsParam*) base;
738 	g_return_val_if_fail (taglet != NULL, FALSE);
739 	if (VALADOC_TAGLETS_IS_PARAM (taglet) == FALSE) {
740 		result = FALSE;
741 		return result;
742 	}
743 	_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (taglet, VALADOC_TAGLETS_TYPE_PARAM, ValadocTagletsParam));
744 	t = _tmp0_;
745 	_tmp2_ = self->priv->_parameter;
746 	_tmp3_ = t;
747 	_tmp4_ = _tmp3_->priv->_parameter;
748 	if (_tmp2_ == _tmp4_) {
749 		_tmp1_ = TRUE;
750 	} else {
751 		const gchar* _tmp5_;
752 		ValadocTagletsParam* _tmp6_;
753 		const gchar* _tmp7_;
754 		_tmp5_ = self->priv->_parameter_name;
755 		_tmp6_ = t;
756 		_tmp7_ = _tmp6_->priv->_parameter_name;
757 		_tmp1_ = g_strcmp0 (_tmp5_, _tmp7_) == 0;
758 	}
759 	result = _tmp1_;
760 	_g_object_unref0 (t);
761 	return result;
762 }
763 
764 static ValadocContentContentElement*
valadoc_taglets_param_real_copy(ValadocContentContentElement * base,ValadocContentContentElement * new_parent)765 valadoc_taglets_param_real_copy (ValadocContentContentElement* base,
766                                  ValadocContentContentElement* new_parent)
767 {
768 	ValadocTagletsParam * self;
769 	ValadocTagletsParam* param = NULL;
770 	ValadocTagletsParam* _tmp0_;
771 	ValadocTagletsParam* _tmp1_;
772 	ValadocTagletsParam* _tmp2_;
773 	const gchar* _tmp3_;
774 	ValadocTagletsParam* _tmp4_;
775 	ValadocApiSymbol* _tmp5_;
776 	ValadocTagletsParam* _tmp6_;
777 	gint _tmp7_;
778 	ValadocContentContentElement* result = NULL;
779 	self = (ValadocTagletsParam*) base;
780 	_tmp0_ = valadoc_taglets_param_new ();
781 	param = _tmp0_;
782 	_tmp1_ = param;
783 	valadoc_content_content_element_set_parent ((ValadocContentContentElement*) _tmp1_, new_parent);
784 	_tmp2_ = param;
785 	_tmp3_ = self->priv->_parameter_name;
786 	valadoc_taglets_param_set_parameter_name (_tmp2_, _tmp3_);
787 	_tmp4_ = param;
788 	_tmp5_ = self->priv->_parameter;
789 	valadoc_taglets_param_set_parameter (_tmp4_, _tmp5_);
790 	_tmp6_ = param;
791 	_tmp7_ = self->priv->_position;
792 	valadoc_taglets_param_set_position (_tmp6_, _tmp7_);
793 	{
794 		ValaList* _element_list = NULL;
795 		ValaList* _tmp8_;
796 		ValaList* _tmp9_;
797 		ValaList* _tmp10_;
798 		gint _element_size = 0;
799 		ValaList* _tmp11_;
800 		gint _tmp12_;
801 		gint _tmp13_;
802 		gint _element_index = 0;
803 		_tmp8_ = valadoc_content_block_content_get_content ((ValadocContentBlockContent*) self);
804 		_tmp9_ = _tmp8_;
805 		_tmp10_ = _vala_iterable_ref0 (_tmp9_);
806 		_element_list = _tmp10_;
807 		_tmp11_ = _element_list;
808 		_tmp12_ = vala_collection_get_size ((ValaCollection*) _tmp11_);
809 		_tmp13_ = _tmp12_;
810 		_element_size = _tmp13_;
811 		_element_index = -1;
812 		while (TRUE) {
813 			gint _tmp14_;
814 			gint _tmp15_;
815 			ValadocContentBlock* element = NULL;
816 			ValaList* _tmp16_;
817 			gpointer _tmp17_;
818 			ValadocContentBlock* copy = NULL;
819 			ValadocContentBlock* _tmp18_;
820 			ValadocTagletsParam* _tmp19_;
821 			ValadocContentContentElement* _tmp20_;
822 			ValadocContentBlock* _tmp21_;
823 			ValadocTagletsParam* _tmp22_;
824 			ValaList* _tmp23_;
825 			ValaList* _tmp24_;
826 			ValadocContentBlock* _tmp25_;
827 			_element_index = _element_index + 1;
828 			_tmp14_ = _element_index;
829 			_tmp15_ = _element_size;
830 			if (!(_tmp14_ < _tmp15_)) {
831 				break;
832 			}
833 			_tmp16_ = _element_list;
834 			_tmp17_ = vala_list_get (_tmp16_, _element_index);
835 			element = (ValadocContentBlock*) _tmp17_;
836 			_tmp18_ = element;
837 			_tmp19_ = param;
838 			_tmp20_ = valadoc_content_content_element_copy ((ValadocContentContentElement*) _tmp18_, (ValadocContentContentElement*) _tmp19_);
839 			_tmp21_ = VALADOC_CONTENT_IS_BLOCK (_tmp20_) ? ((ValadocContentBlock*) _tmp20_) : NULL;
840 			if (_tmp21_ == NULL) {
841 				_g_object_unref0 (_tmp20_);
842 			}
843 			copy = _tmp21_;
844 			_tmp22_ = param;
845 			_tmp23_ = valadoc_content_block_content_get_content ((ValadocContentBlockContent*) _tmp22_);
846 			_tmp24_ = _tmp23_;
847 			_tmp25_ = copy;
848 			vala_collection_add ((ValaCollection*) _tmp24_, _tmp25_);
849 			_g_object_unref0 (copy);
850 			_g_object_unref0 (element);
851 		}
852 		_vala_iterable_unref0 (_element_list);
853 	}
854 	result = (ValadocContentContentElement*) param;
855 	return result;
856 }
857 
858 ValadocTagletsParam*
valadoc_taglets_param_construct(GType object_type)859 valadoc_taglets_param_construct (GType object_type)
860 {
861 	ValadocTagletsParam * self = NULL;
862 	self = (ValadocTagletsParam*) valadoc_content_block_content_construct (object_type);
863 	return self;
864 }
865 
866 ValadocTagletsParam*
valadoc_taglets_param_new(void)867 valadoc_taglets_param_new (void)
868 {
869 	return valadoc_taglets_param_construct (VALADOC_TAGLETS_TYPE_PARAM);
870 }
871 
872 static void
valadoc_taglets_param_class_init(ValadocTagletsParamClass * klass,gpointer klass_data)873 valadoc_taglets_param_class_init (ValadocTagletsParamClass * klass,
874                                   gpointer klass_data)
875 {
876 	valadoc_taglets_param_parent_class = g_type_class_peek_parent (klass);
877 	g_type_class_adjust_private_offset (klass, &ValadocTagletsParam_private_offset);
878 	((ValadocContentContentElementClass *) klass)->check = (void (*) (ValadocContentContentElement*, ValadocApiTree*, ValadocApiNode*, const gchar*, ValadocErrorReporter*, ValadocSettings*)) valadoc_taglets_param_real_check;
879 	((ValadocContentContentElementClass *) klass)->accept = (void (*) (ValadocContentContentElement*, ValadocContentContentVisitor*)) valadoc_taglets_param_real_accept;
880 	((ValadocContentContentElementClass *) klass)->copy = (ValadocContentContentElement* (*) (ValadocContentContentElement*, ValadocContentContentElement*)) valadoc_taglets_param_real_copy;
881 	G_OBJECT_CLASS (klass)->get_property = _vala_valadoc_taglets_param_get_property;
882 	G_OBJECT_CLASS (klass)->set_property = _vala_valadoc_taglets_param_set_property;
883 	G_OBJECT_CLASS (klass)->finalize = valadoc_taglets_param_finalize;
884 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY] = g_param_spec_string ("parameter-name", "parameter-name", "parameter-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
885 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY] = g_param_spec_object ("parameter", "parameter", "parameter", VALADOC_API_TYPE_SYMBOL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
886 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_TAGLETS_PARAM_POSITION_PROPERTY, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_POSITION_PROPERTY] = g_param_spec_int ("position", "position", "position", G_MININT, G_MAXINT, -1, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
887 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY] = g_param_spec_boolean ("is-c-self-param", "is-c-self-param", "is-c-self-param", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
888 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY] = g_param_spec_boolean ("is-this", "is-this", "is-this", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
889 }
890 
891 static void
valadoc_taglets_param_valadoc_content_taglet_interface_init(ValadocContentTagletIface * iface,gpointer iface_data)892 valadoc_taglets_param_valadoc_content_taglet_interface_init (ValadocContentTagletIface * iface,
893                                                              gpointer iface_data)
894 {
895 	valadoc_taglets_param_valadoc_content_taglet_parent_iface = g_type_interface_peek_parent (iface);
896 	iface->get_parser_rule = (ValadocRule* (*) (ValadocContentTaglet*, ValadocRule*)) valadoc_taglets_param_real_get_parser_rule;
897 	iface->get_inheritable_documentation = (ValaList* (*) (ValadocContentTaglet*)) valadoc_taglets_param_real_get_inheritable_documentation;
898 	iface->inheritable = (gboolean (*) (ValadocContentTaglet*, ValadocContentTaglet*)) valadoc_taglets_param_real_inheritable;
899 }
900 
901 static void
valadoc_taglets_param_valadoc_content_block_interface_init(ValadocContentBlockIface * iface,gpointer iface_data)902 valadoc_taglets_param_valadoc_content_block_interface_init (ValadocContentBlockIface * iface,
903                                                             gpointer iface_data)
904 {
905 	valadoc_taglets_param_valadoc_content_block_parent_iface = g_type_interface_peek_parent (iface);
906 }
907 
908 static void
valadoc_taglets_param_instance_init(ValadocTagletsParam * self,gpointer klass)909 valadoc_taglets_param_instance_init (ValadocTagletsParam * self,
910                                      gpointer klass)
911 {
912 	self->priv = valadoc_taglets_param_get_instance_private (self);
913 	self->priv->_position = -1;
914 }
915 
916 static void
valadoc_taglets_param_finalize(GObject * obj)917 valadoc_taglets_param_finalize (GObject * obj)
918 {
919 	ValadocTagletsParam * self;
920 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALADOC_TAGLETS_TYPE_PARAM, ValadocTagletsParam);
921 	_g_free0 (self->priv->_parameter_name);
922 	G_OBJECT_CLASS (valadoc_taglets_param_parent_class)->finalize (obj);
923 }
924 
925 static GType
valadoc_taglets_param_get_type_once(void)926 valadoc_taglets_param_get_type_once (void)
927 {
928 	static const GTypeInfo g_define_type_info = { sizeof (ValadocTagletsParamClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_taglets_param_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocTagletsParam), 0, (GInstanceInitFunc) valadoc_taglets_param_instance_init, NULL };
929 	static const GInterfaceInfo valadoc_content_taglet_info = { (GInterfaceInitFunc) valadoc_taglets_param_valadoc_content_taglet_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
930 	static const GInterfaceInfo valadoc_content_block_info = { (GInterfaceInitFunc) valadoc_taglets_param_valadoc_content_block_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
931 	GType valadoc_taglets_param_type_id;
932 	valadoc_taglets_param_type_id = g_type_register_static (VALADOC_CONTENT_TYPE_BLOCK_CONTENT, "ValadocTagletsParam", &g_define_type_info, 0);
933 	g_type_add_interface_static (valadoc_taglets_param_type_id, VALADOC_CONTENT_TYPE_TAGLET, &valadoc_content_taglet_info);
934 	g_type_add_interface_static (valadoc_taglets_param_type_id, VALADOC_CONTENT_TYPE_BLOCK, &valadoc_content_block_info);
935 	ValadocTagletsParam_private_offset = g_type_add_instance_private (valadoc_taglets_param_type_id, sizeof (ValadocTagletsParamPrivate));
936 	return valadoc_taglets_param_type_id;
937 }
938 
939 GType
valadoc_taglets_param_get_type(void)940 valadoc_taglets_param_get_type (void)
941 {
942 	static volatile gsize valadoc_taglets_param_type_id__volatile = 0;
943 	if (g_once_init_enter (&valadoc_taglets_param_type_id__volatile)) {
944 		GType valadoc_taglets_param_type_id;
945 		valadoc_taglets_param_type_id = valadoc_taglets_param_get_type_once ();
946 		g_once_init_leave (&valadoc_taglets_param_type_id__volatile, valadoc_taglets_param_type_id);
947 	}
948 	return valadoc_taglets_param_type_id__volatile;
949 }
950 
951 static void
_vala_valadoc_taglets_param_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)952 _vala_valadoc_taglets_param_get_property (GObject * object,
953                                           guint property_id,
954                                           GValue * value,
955                                           GParamSpec * pspec)
956 {
957 	ValadocTagletsParam * self;
958 	self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_TAGLETS_TYPE_PARAM, ValadocTagletsParam);
959 	switch (property_id) {
960 		case VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY:
961 		g_value_set_string (value, valadoc_taglets_param_get_parameter_name (self));
962 		break;
963 		case VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY:
964 		g_value_set_object (value, valadoc_taglets_param_get_parameter (self));
965 		break;
966 		case VALADOC_TAGLETS_PARAM_POSITION_PROPERTY:
967 		g_value_set_int (value, valadoc_taglets_param_get_position (self));
968 		break;
969 		case VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY:
970 		g_value_set_boolean (value, valadoc_taglets_param_get_is_c_self_param (self));
971 		break;
972 		case VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY:
973 		g_value_set_boolean (value, valadoc_taglets_param_get_is_this (self));
974 		break;
975 		default:
976 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
977 		break;
978 	}
979 }
980 
981 static void
_vala_valadoc_taglets_param_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)982 _vala_valadoc_taglets_param_set_property (GObject * object,
983                                           guint property_id,
984                                           const GValue * value,
985                                           GParamSpec * pspec)
986 {
987 	ValadocTagletsParam * self;
988 	self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_TAGLETS_TYPE_PARAM, ValadocTagletsParam);
989 	switch (property_id) {
990 		case VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY:
991 		valadoc_taglets_param_set_parameter_name (self, g_value_get_string (value));
992 		break;
993 		case VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY:
994 		valadoc_taglets_param_set_parameter (self, g_value_get_object (value));
995 		break;
996 		case VALADOC_TAGLETS_PARAM_POSITION_PROPERTY:
997 		valadoc_taglets_param_set_position (self, g_value_get_int (value));
998 		break;
999 		case VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY:
1000 		valadoc_taglets_param_set_is_c_self_param (self, g_value_get_boolean (value));
1001 		break;
1002 		case VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY:
1003 		valadoc_taglets_param_set_is_this (self, g_value_get_boolean (value));
1004 		break;
1005 		default:
1006 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1007 		break;
1008 	}
1009 }
1010 
1011 static void
_vala_array_destroy(gpointer array,gint array_length,GDestroyNotify destroy_func)1012 _vala_array_destroy (gpointer array,
1013                      gint array_length,
1014                      GDestroyNotify destroy_func)
1015 {
1016 	if ((array != NULL) && (destroy_func != NULL)) {
1017 		gint i;
1018 		for (i = 0; i < array_length; i = i + 1) {
1019 			if (((gpointer*) array)[i] != NULL) {
1020 				destroy_func (((gpointer*) array)[i]);
1021 			}
1022 		}
1023 	}
1024 }
1025 
1026 static void
_vala_array_free(gpointer array,gint array_length,GDestroyNotify destroy_func)1027 _vala_array_free (gpointer array,
1028                   gint array_length,
1029                   GDestroyNotify destroy_func)
1030 {
1031 	_vala_array_destroy (array, array_length, destroy_func);
1032 	g_free (array);
1033 }
1034 
1035