1 /* girwriter.c generated by valac, the Vala compiler
2  * generated from girwriter.vala, do not modify */
3 
4 /* girwriter.vala
5  *
6  * Copyright (C) 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 <valacodegen.h>
27 #include <glib-object.h>
28 #include <valadoc.h>
29 #include <vala.h>
30 #include <stdlib.h>
31 #include <string.h>
32 #include <glib.h>
33 #include <valagee.h>
34 
35 #define VALADOC_TYPE_GIR_WRITER (valadoc_gir_writer_get_type ())
36 #define VALADOC_GIR_WRITER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALADOC_TYPE_GIR_WRITER, ValadocGirWriter))
37 #define VALADOC_GIR_WRITER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALADOC_TYPE_GIR_WRITER, ValadocGirWriterClass))
38 #define VALADOC_IS_GIR_WRITER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALADOC_TYPE_GIR_WRITER))
39 #define VALADOC_IS_GIR_WRITER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALADOC_TYPE_GIR_WRITER))
40 #define VALADOC_GIR_WRITER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALADOC_TYPE_GIR_WRITER, ValadocGirWriterClass))
41 
42 typedef struct _ValadocGirWriter ValadocGirWriter;
43 typedef struct _ValadocGirWriterClass ValadocGirWriterClass;
44 typedef struct _ValadocGirWriterPrivate ValadocGirWriterPrivate;
45 
46 #define VALADOC_TYPE_SYMBOL_RESOLVER (valadoc_symbol_resolver_get_type ())
47 #define VALADOC_SYMBOL_RESOLVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALADOC_TYPE_SYMBOL_RESOLVER, ValadocSymbolResolver))
48 #define VALADOC_SYMBOL_RESOLVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALADOC_TYPE_SYMBOL_RESOLVER, ValadocSymbolResolverClass))
49 #define VALADOC_IS_SYMBOL_RESOLVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALADOC_TYPE_SYMBOL_RESOLVER))
50 #define VALADOC_IS_SYMBOL_RESOLVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALADOC_TYPE_SYMBOL_RESOLVER))
51 #define VALADOC_SYMBOL_RESOLVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALADOC_TYPE_SYMBOL_RESOLVER, ValadocSymbolResolverClass))
52 
53 typedef struct _ValadocSymbolResolver ValadocSymbolResolver;
54 typedef struct _ValadocSymbolResolverClass ValadocSymbolResolverClass;
55 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
56 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
57 
58 struct _ValadocGirWriter {
59 	ValaGIRWriter parent_instance;
60 	ValadocGirWriterPrivate * priv;
61 };
62 
63 struct _ValadocGirWriterClass {
64 	ValaGIRWriterClass parent_class;
65 };
66 
67 struct _ValadocGirWriterPrivate {
68 	ValadocGtkdocRenderer* renderer;
69 	ValadocSymbolResolver* resolver;
70 };
71 
72 static gint ValadocGirWriter_private_offset;
73 static gpointer valadoc_gir_writer_parent_class = NULL;
74 
75 GType valadoc_gir_writer_get_type (void) G_GNUC_CONST;
76 G_DEFINE_AUTOPTR_CLEANUP_FUNC (ValadocGirWriter, vala_code_visitor_unref)
77 GType valadoc_symbol_resolver_get_type (void) G_GNUC_CONST;
78 G_DEFINE_AUTOPTR_CLEANUP_FUNC (ValadocSymbolResolver, g_object_unref)
79 ValadocGirWriter* valadoc_gir_writer_new (ValadocSymbolResolver* resolver);
80 ValadocGirWriter* valadoc_gir_writer_construct (GType object_type,
81                                                 ValadocSymbolResolver* resolver);
82 static gchar* valadoc_gir_writer_translate (ValadocGirWriter* self,
83                                      ValadocContentComment* documentation);
84 static gchar* valadoc_gir_writer_translate_taglet (ValadocGirWriter* self,
85                                             ValadocContentTaglet* taglet);
86 static gchar* valadoc_gir_writer_real_get_interface_comment (ValaGIRWriter* base,
87                                                       ValaInterface* viface);
88 ValadocApiSymbol* valadoc_symbol_resolver_resolve (ValadocSymbolResolver* self,
89                                                    ValaSymbol* symbol);
90 static gchar* valadoc_gir_writer_real_get_struct_comment (ValaGIRWriter* base,
91                                                    ValaStruct* vst);
92 static gchar* valadoc_gir_writer_real_get_enum_comment (ValaGIRWriter* base,
93                                                  ValaEnum* ven);
94 static gchar* valadoc_gir_writer_real_get_class_comment (ValaGIRWriter* base,
95                                                   ValaClass* vc);
96 static gchar* valadoc_gir_writer_real_get_error_code_comment (ValaGIRWriter* base,
97                                                        ValaErrorCode* vecode);
98 static gchar* valadoc_gir_writer_real_get_enum_value_comment (ValaGIRWriter* base,
99                                                        ValaEnumValue* vev);
100 static gchar* valadoc_gir_writer_real_get_constant_comment (ValaGIRWriter* base,
101                                                      ValaConstant* vc);
102 static gchar* valadoc_gir_writer_real_get_error_domain_comment (ValaGIRWriter* base,
103                                                          ValaErrorDomain* vedomain);
104 static gchar* valadoc_gir_writer_real_get_field_comment (ValaGIRWriter* base,
105                                                   ValaField* vf);
106 static gchar* valadoc_gir_writer_real_get_delegate_comment (ValaGIRWriter* base,
107                                                      ValaDelegate* vcb);
108 static gchar* valadoc_gir_writer_real_get_method_comment (ValaGIRWriter* base,
109                                                    ValaMethod* vm);
110 static gchar* valadoc_gir_writer_real_get_property_comment (ValaGIRWriter* base,
111                                                      ValaProperty* vprop);
112 static gchar* valadoc_gir_writer_real_get_delegate_return_comment (ValaGIRWriter* base,
113                                                             ValaDelegate* vcb);
114 static gchar* valadoc_gir_writer_real_get_signal_return_comment (ValaGIRWriter* base,
115                                                           ValaSignal* vsig);
116 static gchar* valadoc_gir_writer_real_get_method_return_comment (ValaGIRWriter* base,
117                                                           ValaMethod* vm);
118 static gchar* valadoc_gir_writer_real_get_signal_comment (ValaGIRWriter* base,
119                                                    ValaSignal* vsig);
120 static gchar* valadoc_gir_writer_real_get_parameter_comment (ValaGIRWriter* base,
121                                                       ValaParameter* param);
122 static void valadoc_gir_writer_finalize (ValaCodeVisitor * obj);
123 static GType valadoc_gir_writer_get_type_once (void);
124 
125 static inline gpointer
valadoc_gir_writer_get_instance_private(ValadocGirWriter * self)126 valadoc_gir_writer_get_instance_private (ValadocGirWriter* self)
127 {
128 	return G_STRUCT_MEMBER_P (self, ValadocGirWriter_private_offset);
129 }
130 
131 static gpointer
_g_object_ref0(gpointer self)132 _g_object_ref0 (gpointer self)
133 {
134 	return self ? g_object_ref (self) : NULL;
135 }
136 
137 ValadocGirWriter*
valadoc_gir_writer_construct(GType object_type,ValadocSymbolResolver * resolver)138 valadoc_gir_writer_construct (GType object_type,
139                               ValadocSymbolResolver* resolver)
140 {
141 	ValadocGirWriter* self = NULL;
142 	ValadocGtkdocRenderer* _tmp0_;
143 	ValadocSymbolResolver* _tmp1_;
144 	g_return_val_if_fail (resolver != NULL, NULL);
145 	self = (ValadocGirWriter*) vala_gir_writer_construct (object_type);
146 	_tmp0_ = valadoc_gtkdoc_renderer_new ();
147 	_g_object_unref0 (self->priv->renderer);
148 	self->priv->renderer = _tmp0_;
149 	_tmp1_ = _g_object_ref0 (resolver);
150 	_g_object_unref0 (self->priv->resolver);
151 	self->priv->resolver = _tmp1_;
152 	return self;
153 }
154 
155 ValadocGirWriter*
valadoc_gir_writer_new(ValadocSymbolResolver * resolver)156 valadoc_gir_writer_new (ValadocSymbolResolver* resolver)
157 {
158 	return valadoc_gir_writer_construct (VALADOC_TYPE_GIR_WRITER, resolver);
159 }
160 
161 static gchar*
valadoc_gir_writer_translate(ValadocGirWriter * self,ValadocContentComment * documentation)162 valadoc_gir_writer_translate (ValadocGirWriter* self,
163                               ValadocContentComment* documentation)
164 {
165 	ValadocGtkdocRenderer* _tmp0_;
166 	ValadocGtkdocRenderer* _tmp1_;
167 	const gchar* _tmp2_;
168 	const gchar* _tmp3_;
169 	gchar* _tmp4_;
170 	gchar* result = NULL;
171 	g_return_val_if_fail (self != NULL, NULL);
172 	if (documentation == NULL) {
173 		result = NULL;
174 		return result;
175 	}
176 	_tmp0_ = self->priv->renderer;
177 	valadoc_gtkdoc_renderer_render_symbol (_tmp0_, documentation);
178 	_tmp1_ = self->priv->renderer;
179 	_tmp2_ = valadoc_gtkdoc_renderer_get_content (_tmp1_);
180 	_tmp3_ = _tmp2_;
181 	_tmp4_ = valadoc_markup_writer_escape (_tmp3_);
182 	result = _tmp4_;
183 	return result;
184 }
185 
186 static gchar*
valadoc_gir_writer_translate_taglet(ValadocGirWriter * self,ValadocContentTaglet * taglet)187 valadoc_gir_writer_translate_taglet (ValadocGirWriter* self,
188                                      ValadocContentTaglet* taglet)
189 {
190 	ValadocGtkdocRenderer* _tmp0_;
191 	ValadocGtkdocRenderer* _tmp1_;
192 	const gchar* _tmp2_;
193 	const gchar* _tmp3_;
194 	gchar* _tmp4_;
195 	gchar* result = NULL;
196 	g_return_val_if_fail (self != NULL, NULL);
197 	if (taglet == NULL) {
198 		result = NULL;
199 		return result;
200 	}
201 	_tmp0_ = self->priv->renderer;
202 	valadoc_content_content_renderer_render_children ((ValadocContentContentRenderer*) _tmp0_, (ValadocContentContentElement*) taglet);
203 	_tmp1_ = self->priv->renderer;
204 	_tmp2_ = valadoc_gtkdoc_renderer_get_content (_tmp1_);
205 	_tmp3_ = _tmp2_;
206 	_tmp4_ = valadoc_markup_writer_escape (_tmp3_);
207 	result = _tmp4_;
208 	return result;
209 }
210 
211 static gchar*
valadoc_gir_writer_real_get_interface_comment(ValaGIRWriter * base,ValaInterface * viface)212 valadoc_gir_writer_real_get_interface_comment (ValaGIRWriter* base,
213                                                ValaInterface* viface)
214 {
215 	ValadocGirWriter * self;
216 	ValadocApiInterface* iface = NULL;
217 	ValadocSymbolResolver* _tmp0_;
218 	ValadocApiSymbol* _tmp1_;
219 	ValadocApiInterface* _tmp2_;
220 	ValadocContentComment* _tmp3_;
221 	ValadocContentComment* _tmp4_;
222 	gchar* _tmp5_;
223 	gchar* result = NULL;
224 	self = (ValadocGirWriter*) base;
225 	g_return_val_if_fail (viface != NULL, NULL);
226 	_tmp0_ = self->priv->resolver;
227 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) viface);
228 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_INTERFACE) ? ((ValadocApiInterface*) _tmp1_) : NULL;
229 	if (_tmp2_ == NULL) {
230 		_g_object_unref0 (_tmp1_);
231 	}
232 	iface = _tmp2_;
233 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) iface);
234 	_tmp4_ = _tmp3_;
235 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
236 	result = _tmp5_;
237 	_g_object_unref0 (iface);
238 	return result;
239 }
240 
241 static gchar*
valadoc_gir_writer_real_get_struct_comment(ValaGIRWriter * base,ValaStruct * vst)242 valadoc_gir_writer_real_get_struct_comment (ValaGIRWriter* base,
243                                             ValaStruct* vst)
244 {
245 	ValadocGirWriter * self;
246 	ValadocApiStruct* st = NULL;
247 	ValadocSymbolResolver* _tmp0_;
248 	ValadocApiSymbol* _tmp1_;
249 	ValadocApiStruct* _tmp2_;
250 	ValadocContentComment* _tmp3_;
251 	ValadocContentComment* _tmp4_;
252 	gchar* _tmp5_;
253 	gchar* result = NULL;
254 	self = (ValadocGirWriter*) base;
255 	g_return_val_if_fail (vst != NULL, NULL);
256 	_tmp0_ = self->priv->resolver;
257 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vst);
258 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_STRUCT) ? ((ValadocApiStruct*) _tmp1_) : NULL;
259 	if (_tmp2_ == NULL) {
260 		_g_object_unref0 (_tmp1_);
261 	}
262 	st = _tmp2_;
263 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) st);
264 	_tmp4_ = _tmp3_;
265 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
266 	result = _tmp5_;
267 	_g_object_unref0 (st);
268 	return result;
269 }
270 
271 static gchar*
valadoc_gir_writer_real_get_enum_comment(ValaGIRWriter * base,ValaEnum * ven)272 valadoc_gir_writer_real_get_enum_comment (ValaGIRWriter* base,
273                                           ValaEnum* ven)
274 {
275 	ValadocGirWriter * self;
276 	ValadocApiEnum* en = NULL;
277 	ValadocSymbolResolver* _tmp0_;
278 	ValadocApiSymbol* _tmp1_;
279 	ValadocApiEnum* _tmp2_;
280 	ValadocContentComment* _tmp3_;
281 	ValadocContentComment* _tmp4_;
282 	gchar* _tmp5_;
283 	gchar* result = NULL;
284 	self = (ValadocGirWriter*) base;
285 	g_return_val_if_fail (ven != NULL, NULL);
286 	_tmp0_ = self->priv->resolver;
287 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) ven);
288 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_ENUM) ? ((ValadocApiEnum*) _tmp1_) : NULL;
289 	if (_tmp2_ == NULL) {
290 		_g_object_unref0 (_tmp1_);
291 	}
292 	en = _tmp2_;
293 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) en);
294 	_tmp4_ = _tmp3_;
295 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
296 	result = _tmp5_;
297 	_g_object_unref0 (en);
298 	return result;
299 }
300 
301 static gchar*
valadoc_gir_writer_real_get_class_comment(ValaGIRWriter * base,ValaClass * vc)302 valadoc_gir_writer_real_get_class_comment (ValaGIRWriter* base,
303                                            ValaClass* vc)
304 {
305 	ValadocGirWriter * self;
306 	ValadocApiClass* c = NULL;
307 	ValadocSymbolResolver* _tmp0_;
308 	ValadocApiSymbol* _tmp1_;
309 	ValadocApiClass* _tmp2_;
310 	ValadocContentComment* _tmp3_;
311 	ValadocContentComment* _tmp4_;
312 	gchar* _tmp5_;
313 	gchar* result = NULL;
314 	self = (ValadocGirWriter*) base;
315 	g_return_val_if_fail (vc != NULL, NULL);
316 	_tmp0_ = self->priv->resolver;
317 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vc);
318 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_CLASS) ? ((ValadocApiClass*) _tmp1_) : NULL;
319 	if (_tmp2_ == NULL) {
320 		_g_object_unref0 (_tmp1_);
321 	}
322 	c = _tmp2_;
323 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) c);
324 	_tmp4_ = _tmp3_;
325 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
326 	result = _tmp5_;
327 	_g_object_unref0 (c);
328 	return result;
329 }
330 
331 static gchar*
valadoc_gir_writer_real_get_error_code_comment(ValaGIRWriter * base,ValaErrorCode * vecode)332 valadoc_gir_writer_real_get_error_code_comment (ValaGIRWriter* base,
333                                                 ValaErrorCode* vecode)
334 {
335 	ValadocGirWriter * self;
336 	ValadocApiErrorCode* ecode = NULL;
337 	ValadocSymbolResolver* _tmp0_;
338 	ValadocApiSymbol* _tmp1_;
339 	ValadocApiErrorCode* _tmp2_;
340 	ValadocContentComment* _tmp3_;
341 	ValadocContentComment* _tmp4_;
342 	gchar* _tmp5_;
343 	gchar* result = NULL;
344 	self = (ValadocGirWriter*) base;
345 	g_return_val_if_fail (vecode != NULL, NULL);
346 	_tmp0_ = self->priv->resolver;
347 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vecode);
348 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_ERROR_CODE) ? ((ValadocApiErrorCode*) _tmp1_) : NULL;
349 	if (_tmp2_ == NULL) {
350 		_g_object_unref0 (_tmp1_);
351 	}
352 	ecode = _tmp2_;
353 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) ecode);
354 	_tmp4_ = _tmp3_;
355 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
356 	result = _tmp5_;
357 	_g_object_unref0 (ecode);
358 	return result;
359 }
360 
361 static gchar*
valadoc_gir_writer_real_get_enum_value_comment(ValaGIRWriter * base,ValaEnumValue * vev)362 valadoc_gir_writer_real_get_enum_value_comment (ValaGIRWriter* base,
363                                                 ValaEnumValue* vev)
364 {
365 	ValadocGirWriter * self;
366 	ValadocApiEnumValue* ev = NULL;
367 	ValadocSymbolResolver* _tmp0_;
368 	ValadocApiSymbol* _tmp1_;
369 	ValadocApiEnumValue* _tmp2_;
370 	ValadocContentComment* _tmp3_;
371 	ValadocContentComment* _tmp4_;
372 	gchar* _tmp5_;
373 	gchar* result = NULL;
374 	self = (ValadocGirWriter*) base;
375 	g_return_val_if_fail (vev != NULL, NULL);
376 	_tmp0_ = self->priv->resolver;
377 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vev);
378 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_ENUM_VALUE) ? ((ValadocApiEnumValue*) _tmp1_) : NULL;
379 	if (_tmp2_ == NULL) {
380 		_g_object_unref0 (_tmp1_);
381 	}
382 	ev = _tmp2_;
383 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) ev);
384 	_tmp4_ = _tmp3_;
385 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
386 	result = _tmp5_;
387 	_g_object_unref0 (ev);
388 	return result;
389 }
390 
391 static gchar*
valadoc_gir_writer_real_get_constant_comment(ValaGIRWriter * base,ValaConstant * vc)392 valadoc_gir_writer_real_get_constant_comment (ValaGIRWriter* base,
393                                               ValaConstant* vc)
394 {
395 	ValadocGirWriter * self;
396 	ValadocApiConstant* c = NULL;
397 	ValadocSymbolResolver* _tmp0_;
398 	ValadocApiSymbol* _tmp1_;
399 	ValadocApiConstant* _tmp2_;
400 	ValadocContentComment* _tmp3_;
401 	ValadocContentComment* _tmp4_;
402 	gchar* _tmp5_;
403 	gchar* result = NULL;
404 	self = (ValadocGirWriter*) base;
405 	g_return_val_if_fail (vc != NULL, NULL);
406 	_tmp0_ = self->priv->resolver;
407 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vc);
408 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_CONSTANT) ? ((ValadocApiConstant*) _tmp1_) : NULL;
409 	if (_tmp2_ == NULL) {
410 		_g_object_unref0 (_tmp1_);
411 	}
412 	c = _tmp2_;
413 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) c);
414 	_tmp4_ = _tmp3_;
415 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
416 	result = _tmp5_;
417 	_g_object_unref0 (c);
418 	return result;
419 }
420 
421 static gchar*
valadoc_gir_writer_real_get_error_domain_comment(ValaGIRWriter * base,ValaErrorDomain * vedomain)422 valadoc_gir_writer_real_get_error_domain_comment (ValaGIRWriter* base,
423                                                   ValaErrorDomain* vedomain)
424 {
425 	ValadocGirWriter * self;
426 	ValadocApiErrorDomain* edomain = NULL;
427 	ValadocSymbolResolver* _tmp0_;
428 	ValadocApiSymbol* _tmp1_;
429 	ValadocApiErrorDomain* _tmp2_;
430 	ValadocContentComment* _tmp3_;
431 	ValadocContentComment* _tmp4_;
432 	gchar* _tmp5_;
433 	gchar* result = NULL;
434 	self = (ValadocGirWriter*) base;
435 	g_return_val_if_fail (vedomain != NULL, NULL);
436 	_tmp0_ = self->priv->resolver;
437 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vedomain);
438 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_ERROR_DOMAIN) ? ((ValadocApiErrorDomain*) _tmp1_) : NULL;
439 	if (_tmp2_ == NULL) {
440 		_g_object_unref0 (_tmp1_);
441 	}
442 	edomain = _tmp2_;
443 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) edomain);
444 	_tmp4_ = _tmp3_;
445 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
446 	result = _tmp5_;
447 	_g_object_unref0 (edomain);
448 	return result;
449 }
450 
451 static gchar*
valadoc_gir_writer_real_get_field_comment(ValaGIRWriter * base,ValaField * vf)452 valadoc_gir_writer_real_get_field_comment (ValaGIRWriter* base,
453                                            ValaField* vf)
454 {
455 	ValadocGirWriter * self;
456 	ValadocApiField* f = NULL;
457 	ValadocSymbolResolver* _tmp0_;
458 	ValadocApiSymbol* _tmp1_;
459 	ValadocApiField* _tmp2_;
460 	ValadocContentComment* _tmp3_;
461 	ValadocContentComment* _tmp4_;
462 	gchar* _tmp5_;
463 	gchar* result = NULL;
464 	self = (ValadocGirWriter*) base;
465 	g_return_val_if_fail (vf != NULL, NULL);
466 	_tmp0_ = self->priv->resolver;
467 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vf);
468 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_FIELD) ? ((ValadocApiField*) _tmp1_) : NULL;
469 	if (_tmp2_ == NULL) {
470 		_g_object_unref0 (_tmp1_);
471 	}
472 	f = _tmp2_;
473 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) f);
474 	_tmp4_ = _tmp3_;
475 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
476 	result = _tmp5_;
477 	_g_object_unref0 (f);
478 	return result;
479 }
480 
481 static gchar*
valadoc_gir_writer_real_get_delegate_comment(ValaGIRWriter * base,ValaDelegate * vcb)482 valadoc_gir_writer_real_get_delegate_comment (ValaGIRWriter* base,
483                                               ValaDelegate* vcb)
484 {
485 	ValadocGirWriter * self;
486 	ValadocApiDelegate* cb = NULL;
487 	ValadocSymbolResolver* _tmp0_;
488 	ValadocApiSymbol* _tmp1_;
489 	ValadocApiDelegate* _tmp2_;
490 	ValadocContentComment* _tmp3_;
491 	ValadocContentComment* _tmp4_;
492 	gchar* _tmp5_;
493 	gchar* result = NULL;
494 	self = (ValadocGirWriter*) base;
495 	g_return_val_if_fail (vcb != NULL, NULL);
496 	_tmp0_ = self->priv->resolver;
497 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vcb);
498 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_DELEGATE) ? ((ValadocApiDelegate*) _tmp1_) : NULL;
499 	if (_tmp2_ == NULL) {
500 		_g_object_unref0 (_tmp1_);
501 	}
502 	cb = _tmp2_;
503 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) cb);
504 	_tmp4_ = _tmp3_;
505 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
506 	result = _tmp5_;
507 	_g_object_unref0 (cb);
508 	return result;
509 }
510 
511 static gchar*
valadoc_gir_writer_real_get_method_comment(ValaGIRWriter * base,ValaMethod * vm)512 valadoc_gir_writer_real_get_method_comment (ValaGIRWriter* base,
513                                             ValaMethod* vm)
514 {
515 	ValadocGirWriter * self;
516 	ValadocApiMethod* m = NULL;
517 	ValadocSymbolResolver* _tmp0_;
518 	ValadocApiSymbol* _tmp1_;
519 	ValadocApiMethod* _tmp2_;
520 	ValadocContentComment* _tmp3_;
521 	ValadocContentComment* _tmp4_;
522 	gchar* _tmp5_;
523 	gchar* result = NULL;
524 	self = (ValadocGirWriter*) base;
525 	g_return_val_if_fail (vm != NULL, NULL);
526 	_tmp0_ = self->priv->resolver;
527 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vm);
528 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_METHOD) ? ((ValadocApiMethod*) _tmp1_) : NULL;
529 	if (_tmp2_ == NULL) {
530 		_g_object_unref0 (_tmp1_);
531 	}
532 	m = _tmp2_;
533 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) m);
534 	_tmp4_ = _tmp3_;
535 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
536 	result = _tmp5_;
537 	_g_object_unref0 (m);
538 	return result;
539 }
540 
541 static gchar*
valadoc_gir_writer_real_get_property_comment(ValaGIRWriter * base,ValaProperty * vprop)542 valadoc_gir_writer_real_get_property_comment (ValaGIRWriter* base,
543                                               ValaProperty* vprop)
544 {
545 	ValadocGirWriter * self;
546 	ValadocApiProperty* prop = NULL;
547 	ValadocSymbolResolver* _tmp0_;
548 	ValadocApiSymbol* _tmp1_;
549 	ValadocApiProperty* _tmp2_;
550 	ValadocContentComment* _tmp3_;
551 	ValadocContentComment* _tmp4_;
552 	gchar* _tmp5_;
553 	gchar* result = NULL;
554 	self = (ValadocGirWriter*) base;
555 	g_return_val_if_fail (vprop != NULL, NULL);
556 	_tmp0_ = self->priv->resolver;
557 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vprop);
558 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_PROPERTY) ? ((ValadocApiProperty*) _tmp1_) : NULL;
559 	if (_tmp2_ == NULL) {
560 		_g_object_unref0 (_tmp1_);
561 	}
562 	prop = _tmp2_;
563 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) prop);
564 	_tmp4_ = _tmp3_;
565 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
566 	result = _tmp5_;
567 	_g_object_unref0 (prop);
568 	return result;
569 }
570 
571 static gpointer
_vala_iterable_ref0(gpointer self)572 _vala_iterable_ref0 (gpointer self)
573 {
574 	return self ? vala_iterable_ref (self) : NULL;
575 }
576 
577 static gchar*
valadoc_gir_writer_real_get_delegate_return_comment(ValaGIRWriter * base,ValaDelegate * vcb)578 valadoc_gir_writer_real_get_delegate_return_comment (ValaGIRWriter* base,
579                                                      ValaDelegate* vcb)
580 {
581 	ValadocGirWriter * self;
582 	ValadocApiDelegate* cb = NULL;
583 	ValadocSymbolResolver* _tmp0_;
584 	ValadocApiSymbol* _tmp1_;
585 	ValadocApiDelegate* _tmp2_;
586 	ValadocApiDelegate* _tmp3_;
587 	ValadocContentComment* _tmp4_;
588 	ValadocContentComment* _tmp5_;
589 	ValadocContentComment* documentation = NULL;
590 	ValadocApiDelegate* _tmp6_;
591 	ValadocContentComment* _tmp7_;
592 	ValadocContentComment* _tmp8_;
593 	ValadocContentComment* _tmp9_;
594 	ValadocContentComment* _tmp10_;
595 	ValaList* taglets = NULL;
596 	ValadocContentComment* _tmp11_;
597 	ValadocApiDelegate* _tmp12_;
598 	ValaList* _tmp13_;
599 	gchar* result = NULL;
600 	self = (ValadocGirWriter*) base;
601 	g_return_val_if_fail (vcb != NULL, NULL);
602 	_tmp0_ = self->priv->resolver;
603 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vcb);
604 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_DELEGATE) ? ((ValadocApiDelegate*) _tmp1_) : NULL;
605 	if (_tmp2_ == NULL) {
606 		_g_object_unref0 (_tmp1_);
607 	}
608 	cb = _tmp2_;
609 	_tmp3_ = cb;
610 	_tmp4_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp3_);
611 	_tmp5_ = _tmp4_;
612 	if (_tmp5_ == NULL) {
613 		result = NULL;
614 		_g_object_unref0 (cb);
615 		return result;
616 	}
617 	_tmp6_ = cb;
618 	_tmp7_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp6_);
619 	_tmp8_ = _tmp7_;
620 	_tmp9_ = _g_object_ref0 (_tmp8_);
621 	documentation = _tmp9_;
622 	_tmp10_ = documentation;
623 	if (_tmp10_ == NULL) {
624 		result = NULL;
625 		_g_object_unref0 (documentation);
626 		_g_object_unref0 (cb);
627 		return result;
628 	}
629 	_tmp11_ = documentation;
630 	_tmp12_ = cb;
631 	_tmp13_ = valadoc_content_comment_find_taglets (_tmp11_, (ValadocApiNode*) _tmp12_, VALADOC_TAGLETS_TYPE_RETURN);
632 	taglets = _tmp13_;
633 	{
634 		ValaList* _taglet_list = NULL;
635 		ValaList* _tmp14_;
636 		ValaList* _tmp15_;
637 		gint _taglet_size = 0;
638 		ValaList* _tmp16_;
639 		gint _tmp17_;
640 		gint _tmp18_;
641 		gint _taglet_index = 0;
642 		_tmp14_ = taglets;
643 		_tmp15_ = _vala_iterable_ref0 (_tmp14_);
644 		_taglet_list = _tmp15_;
645 		_tmp16_ = _taglet_list;
646 		_tmp17_ = vala_collection_get_size ((ValaCollection*) _tmp16_);
647 		_tmp18_ = _tmp17_;
648 		_taglet_size = _tmp18_;
649 		_taglet_index = -1;
650 		while (TRUE) {
651 			gint _tmp19_;
652 			gint _tmp20_;
653 			ValadocContentTaglet* taglet = NULL;
654 			ValaList* _tmp21_;
655 			gpointer _tmp22_;
656 			ValadocContentTaglet* _tmp23_;
657 			gchar* _tmp24_;
658 			_taglet_index = _taglet_index + 1;
659 			_tmp19_ = _taglet_index;
660 			_tmp20_ = _taglet_size;
661 			if (!(_tmp19_ < _tmp20_)) {
662 				break;
663 			}
664 			_tmp21_ = _taglet_list;
665 			_tmp22_ = vala_list_get (_tmp21_, _taglet_index);
666 			taglet = (ValadocContentTaglet*) _tmp22_;
667 			_tmp23_ = taglet;
668 			_tmp24_ = valadoc_gir_writer_translate_taglet (self, _tmp23_);
669 			result = _tmp24_;
670 			_g_object_unref0 (taglet);
671 			_vala_iterable_unref0 (_taglet_list);
672 			_vala_iterable_unref0 (taglets);
673 			_g_object_unref0 (documentation);
674 			_g_object_unref0 (cb);
675 			return result;
676 		}
677 		_vala_iterable_unref0 (_taglet_list);
678 	}
679 	result = NULL;
680 	_vala_iterable_unref0 (taglets);
681 	_g_object_unref0 (documentation);
682 	_g_object_unref0 (cb);
683 	return result;
684 }
685 
686 static gchar*
valadoc_gir_writer_real_get_signal_return_comment(ValaGIRWriter * base,ValaSignal * vsig)687 valadoc_gir_writer_real_get_signal_return_comment (ValaGIRWriter* base,
688                                                    ValaSignal* vsig)
689 {
690 	ValadocGirWriter * self;
691 	ValadocApiSignal* sig = NULL;
692 	ValadocSymbolResolver* _tmp0_;
693 	ValadocApiSymbol* _tmp1_;
694 	ValadocApiSignal* _tmp2_;
695 	ValadocApiSignal* _tmp3_;
696 	ValadocContentComment* _tmp4_;
697 	ValadocContentComment* _tmp5_;
698 	ValadocContentComment* documentation = NULL;
699 	ValadocApiSignal* _tmp6_;
700 	ValadocContentComment* _tmp7_;
701 	ValadocContentComment* _tmp8_;
702 	ValadocContentComment* _tmp9_;
703 	ValadocContentComment* _tmp10_;
704 	ValaList* taglets = NULL;
705 	ValadocContentComment* _tmp11_;
706 	ValadocApiSignal* _tmp12_;
707 	ValaList* _tmp13_;
708 	gchar* result = NULL;
709 	self = (ValadocGirWriter*) base;
710 	g_return_val_if_fail (vsig != NULL, NULL);
711 	_tmp0_ = self->priv->resolver;
712 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vsig);
713 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_SIGNAL) ? ((ValadocApiSignal*) _tmp1_) : NULL;
714 	if (_tmp2_ == NULL) {
715 		_g_object_unref0 (_tmp1_);
716 	}
717 	sig = _tmp2_;
718 	_tmp3_ = sig;
719 	_tmp4_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp3_);
720 	_tmp5_ = _tmp4_;
721 	if (_tmp5_ == NULL) {
722 		result = NULL;
723 		_g_object_unref0 (sig);
724 		return result;
725 	}
726 	_tmp6_ = sig;
727 	_tmp7_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp6_);
728 	_tmp8_ = _tmp7_;
729 	_tmp9_ = _g_object_ref0 (_tmp8_);
730 	documentation = _tmp9_;
731 	_tmp10_ = documentation;
732 	if (_tmp10_ == NULL) {
733 		result = NULL;
734 		_g_object_unref0 (documentation);
735 		_g_object_unref0 (sig);
736 		return result;
737 	}
738 	_tmp11_ = documentation;
739 	_tmp12_ = sig;
740 	_tmp13_ = valadoc_content_comment_find_taglets (_tmp11_, (ValadocApiNode*) _tmp12_, VALADOC_TAGLETS_TYPE_RETURN);
741 	taglets = _tmp13_;
742 	{
743 		ValaList* _taglet_list = NULL;
744 		ValaList* _tmp14_;
745 		ValaList* _tmp15_;
746 		gint _taglet_size = 0;
747 		ValaList* _tmp16_;
748 		gint _tmp17_;
749 		gint _tmp18_;
750 		gint _taglet_index = 0;
751 		_tmp14_ = taglets;
752 		_tmp15_ = _vala_iterable_ref0 (_tmp14_);
753 		_taglet_list = _tmp15_;
754 		_tmp16_ = _taglet_list;
755 		_tmp17_ = vala_collection_get_size ((ValaCollection*) _tmp16_);
756 		_tmp18_ = _tmp17_;
757 		_taglet_size = _tmp18_;
758 		_taglet_index = -1;
759 		while (TRUE) {
760 			gint _tmp19_;
761 			gint _tmp20_;
762 			ValadocContentTaglet* taglet = NULL;
763 			ValaList* _tmp21_;
764 			gpointer _tmp22_;
765 			ValadocContentTaglet* _tmp23_;
766 			gchar* _tmp24_;
767 			_taglet_index = _taglet_index + 1;
768 			_tmp19_ = _taglet_index;
769 			_tmp20_ = _taglet_size;
770 			if (!(_tmp19_ < _tmp20_)) {
771 				break;
772 			}
773 			_tmp21_ = _taglet_list;
774 			_tmp22_ = vala_list_get (_tmp21_, _taglet_index);
775 			taglet = (ValadocContentTaglet*) _tmp22_;
776 			_tmp23_ = taglet;
777 			_tmp24_ = valadoc_gir_writer_translate_taglet (self, _tmp23_);
778 			result = _tmp24_;
779 			_g_object_unref0 (taglet);
780 			_vala_iterable_unref0 (_taglet_list);
781 			_vala_iterable_unref0 (taglets);
782 			_g_object_unref0 (documentation);
783 			_g_object_unref0 (sig);
784 			return result;
785 		}
786 		_vala_iterable_unref0 (_taglet_list);
787 	}
788 	result = NULL;
789 	_vala_iterable_unref0 (taglets);
790 	_g_object_unref0 (documentation);
791 	_g_object_unref0 (sig);
792 	return result;
793 }
794 
795 static gchar*
valadoc_gir_writer_real_get_method_return_comment(ValaGIRWriter * base,ValaMethod * vm)796 valadoc_gir_writer_real_get_method_return_comment (ValaGIRWriter* base,
797                                                    ValaMethod* vm)
798 {
799 	ValadocGirWriter * self;
800 	ValadocApiMethod* m = NULL;
801 	ValadocSymbolResolver* _tmp0_;
802 	ValadocApiSymbol* _tmp1_;
803 	ValadocApiMethod* _tmp2_;
804 	ValadocApiMethod* _tmp3_;
805 	ValadocContentComment* _tmp4_;
806 	ValadocContentComment* _tmp5_;
807 	ValadocContentComment* documentation = NULL;
808 	ValadocApiMethod* _tmp6_;
809 	ValadocContentComment* _tmp7_;
810 	ValadocContentComment* _tmp8_;
811 	ValadocContentComment* _tmp9_;
812 	ValadocContentComment* _tmp10_;
813 	ValaList* taglets = NULL;
814 	ValadocContentComment* _tmp11_;
815 	ValadocApiMethod* _tmp12_;
816 	ValaList* _tmp13_;
817 	gchar* result = NULL;
818 	self = (ValadocGirWriter*) base;
819 	g_return_val_if_fail (vm != NULL, NULL);
820 	_tmp0_ = self->priv->resolver;
821 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vm);
822 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_METHOD) ? ((ValadocApiMethod*) _tmp1_) : NULL;
823 	if (_tmp2_ == NULL) {
824 		_g_object_unref0 (_tmp1_);
825 	}
826 	m = _tmp2_;
827 	_tmp3_ = m;
828 	_tmp4_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp3_);
829 	_tmp5_ = _tmp4_;
830 	if (_tmp5_ == NULL) {
831 		result = NULL;
832 		_g_object_unref0 (m);
833 		return result;
834 	}
835 	_tmp6_ = m;
836 	_tmp7_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp6_);
837 	_tmp8_ = _tmp7_;
838 	_tmp9_ = _g_object_ref0 (_tmp8_);
839 	documentation = _tmp9_;
840 	_tmp10_ = documentation;
841 	if (_tmp10_ == NULL) {
842 		result = NULL;
843 		_g_object_unref0 (documentation);
844 		_g_object_unref0 (m);
845 		return result;
846 	}
847 	_tmp11_ = documentation;
848 	_tmp12_ = m;
849 	_tmp13_ = valadoc_content_comment_find_taglets (_tmp11_, (ValadocApiNode*) _tmp12_, VALADOC_TAGLETS_TYPE_RETURN);
850 	taglets = _tmp13_;
851 	{
852 		ValaList* _taglet_list = NULL;
853 		ValaList* _tmp14_;
854 		ValaList* _tmp15_;
855 		gint _taglet_size = 0;
856 		ValaList* _tmp16_;
857 		gint _tmp17_;
858 		gint _tmp18_;
859 		gint _taglet_index = 0;
860 		_tmp14_ = taglets;
861 		_tmp15_ = _vala_iterable_ref0 (_tmp14_);
862 		_taglet_list = _tmp15_;
863 		_tmp16_ = _taglet_list;
864 		_tmp17_ = vala_collection_get_size ((ValaCollection*) _tmp16_);
865 		_tmp18_ = _tmp17_;
866 		_taglet_size = _tmp18_;
867 		_taglet_index = -1;
868 		while (TRUE) {
869 			gint _tmp19_;
870 			gint _tmp20_;
871 			ValadocContentTaglet* taglet = NULL;
872 			ValaList* _tmp21_;
873 			gpointer _tmp22_;
874 			ValadocContentTaglet* _tmp23_;
875 			gchar* _tmp24_;
876 			_taglet_index = _taglet_index + 1;
877 			_tmp19_ = _taglet_index;
878 			_tmp20_ = _taglet_size;
879 			if (!(_tmp19_ < _tmp20_)) {
880 				break;
881 			}
882 			_tmp21_ = _taglet_list;
883 			_tmp22_ = vala_list_get (_tmp21_, _taglet_index);
884 			taglet = (ValadocContentTaglet*) _tmp22_;
885 			_tmp23_ = taglet;
886 			_tmp24_ = valadoc_gir_writer_translate_taglet (self, _tmp23_);
887 			result = _tmp24_;
888 			_g_object_unref0 (taglet);
889 			_vala_iterable_unref0 (_taglet_list);
890 			_vala_iterable_unref0 (taglets);
891 			_g_object_unref0 (documentation);
892 			_g_object_unref0 (m);
893 			return result;
894 		}
895 		_vala_iterable_unref0 (_taglet_list);
896 	}
897 	result = NULL;
898 	_vala_iterable_unref0 (taglets);
899 	_g_object_unref0 (documentation);
900 	_g_object_unref0 (m);
901 	return result;
902 }
903 
904 static gchar*
valadoc_gir_writer_real_get_signal_comment(ValaGIRWriter * base,ValaSignal * vsig)905 valadoc_gir_writer_real_get_signal_comment (ValaGIRWriter* base,
906                                             ValaSignal* vsig)
907 {
908 	ValadocGirWriter * self;
909 	ValadocApiSignal* sig = NULL;
910 	ValadocSymbolResolver* _tmp0_;
911 	ValadocApiSymbol* _tmp1_;
912 	ValadocApiSignal* _tmp2_;
913 	ValadocContentComment* _tmp3_;
914 	ValadocContentComment* _tmp4_;
915 	gchar* _tmp5_;
916 	gchar* result = NULL;
917 	self = (ValadocGirWriter*) base;
918 	g_return_val_if_fail (vsig != NULL, NULL);
919 	_tmp0_ = self->priv->resolver;
920 	_tmp1_ = valadoc_symbol_resolver_resolve (_tmp0_, (ValaSymbol*) vsig);
921 	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALADOC_API_TYPE_SIGNAL) ? ((ValadocApiSignal*) _tmp1_) : NULL;
922 	if (_tmp2_ == NULL) {
923 		_g_object_unref0 (_tmp1_);
924 	}
925 	sig = _tmp2_;
926 	_tmp3_ = valadoc_api_node_get_documentation ((ValadocApiNode*) sig);
927 	_tmp4_ = _tmp3_;
928 	_tmp5_ = valadoc_gir_writer_translate (self, _tmp4_);
929 	result = _tmp5_;
930 	_g_object_unref0 (sig);
931 	return result;
932 }
933 
934 static gchar*
valadoc_gir_writer_real_get_parameter_comment(ValaGIRWriter * base,ValaParameter * param)935 valadoc_gir_writer_real_get_parameter_comment (ValaGIRWriter* base,
936                                                ValaParameter* param)
937 {
938 	ValadocGirWriter * self;
939 	ValadocApiSymbol* symbol = NULL;
940 	ValadocSymbolResolver* _tmp0_;
941 	ValaSymbol* _tmp1_;
942 	ValaSymbol* _tmp2_;
943 	ValadocApiSymbol* _tmp3_;
944 	ValadocApiSymbol* _tmp4_;
945 	ValadocContentComment* documentation = NULL;
946 	ValadocApiSymbol* _tmp5_;
947 	ValadocContentComment* _tmp6_;
948 	ValadocContentComment* _tmp7_;
949 	ValadocContentComment* _tmp8_;
950 	ValadocContentComment* _tmp9_;
951 	ValaList* taglets = NULL;
952 	ValadocContentComment* _tmp10_;
953 	ValadocApiSymbol* _tmp11_;
954 	ValaList* _tmp12_;
955 	gchar* result = NULL;
956 	self = (ValadocGirWriter*) base;
957 	g_return_val_if_fail (param != NULL, NULL);
958 	_tmp0_ = self->priv->resolver;
959 	_tmp1_ = vala_symbol_get_parent_symbol ((ValaSymbol*) param);
960 	_tmp2_ = _tmp1_;
961 	_tmp3_ = valadoc_symbol_resolver_resolve (_tmp0_, G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_SYMBOL, ValaSymbol));
962 	symbol = _tmp3_;
963 	_tmp4_ = symbol;
964 	if (_tmp4_ == NULL) {
965 		result = NULL;
966 		_g_object_unref0 (symbol);
967 		return result;
968 	}
969 	_tmp5_ = symbol;
970 	_tmp6_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp5_);
971 	_tmp7_ = _tmp6_;
972 	_tmp8_ = _g_object_ref0 (_tmp7_);
973 	documentation = _tmp8_;
974 	_tmp9_ = documentation;
975 	if (_tmp9_ == NULL) {
976 		result = NULL;
977 		_g_object_unref0 (documentation);
978 		_g_object_unref0 (symbol);
979 		return result;
980 	}
981 	_tmp10_ = documentation;
982 	_tmp11_ = symbol;
983 	_tmp12_ = valadoc_content_comment_find_taglets (_tmp10_, (ValadocApiNode*) _tmp11_, VALADOC_TAGLETS_TYPE_PARAM);
984 	taglets = _tmp12_;
985 	{
986 		ValaList* __taglet_list = NULL;
987 		ValaList* _tmp13_;
988 		ValaList* _tmp14_;
989 		gint __taglet_size = 0;
990 		ValaList* _tmp15_;
991 		gint _tmp16_;
992 		gint _tmp17_;
993 		gint __taglet_index = 0;
994 		_tmp13_ = taglets;
995 		_tmp14_ = _vala_iterable_ref0 (_tmp13_);
996 		__taglet_list = _tmp14_;
997 		_tmp15_ = __taglet_list;
998 		_tmp16_ = vala_collection_get_size ((ValaCollection*) _tmp15_);
999 		_tmp17_ = _tmp16_;
1000 		__taglet_size = _tmp17_;
1001 		__taglet_index = -1;
1002 		while (TRUE) {
1003 			gint _tmp18_;
1004 			gint _tmp19_;
1005 			ValadocContentTaglet* _taglet = NULL;
1006 			ValaList* _tmp20_;
1007 			gpointer _tmp21_;
1008 			ValadocTagletsParam* taglet = NULL;
1009 			ValadocContentTaglet* _tmp22_;
1010 			ValadocTagletsParam* _tmp23_;
1011 			ValadocTagletsParam* _tmp24_;
1012 			const gchar* _tmp25_;
1013 			const gchar* _tmp26_;
1014 			const gchar* _tmp27_;
1015 			const gchar* _tmp28_;
1016 			__taglet_index = __taglet_index + 1;
1017 			_tmp18_ = __taglet_index;
1018 			_tmp19_ = __taglet_size;
1019 			if (!(_tmp18_ < _tmp19_)) {
1020 				break;
1021 			}
1022 			_tmp20_ = __taglet_list;
1023 			_tmp21_ = vala_list_get (_tmp20_, __taglet_index);
1024 			_taglet = (ValadocContentTaglet*) _tmp21_;
1025 			_tmp22_ = _taglet;
1026 			_tmp23_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, VALADOC_TAGLETS_TYPE_PARAM, ValadocTagletsParam));
1027 			taglet = _tmp23_;
1028 			_tmp24_ = taglet;
1029 			_tmp25_ = valadoc_taglets_param_get_parameter_name (_tmp24_);
1030 			_tmp26_ = _tmp25_;
1031 			_tmp27_ = vala_symbol_get_name ((ValaSymbol*) param);
1032 			_tmp28_ = _tmp27_;
1033 			if (g_strcmp0 (_tmp26_, _tmp28_) == 0) {
1034 				ValadocTagletsParam* _tmp29_;
1035 				gchar* _tmp30_;
1036 				_tmp29_ = taglet;
1037 				_tmp30_ = valadoc_gir_writer_translate_taglet (self, (ValadocContentTaglet*) _tmp29_);
1038 				result = _tmp30_;
1039 				_g_object_unref0 (taglet);
1040 				_g_object_unref0 (_taglet);
1041 				_vala_iterable_unref0 (__taglet_list);
1042 				_vala_iterable_unref0 (taglets);
1043 				_g_object_unref0 (documentation);
1044 				_g_object_unref0 (symbol);
1045 				return result;
1046 			}
1047 			_g_object_unref0 (taglet);
1048 			_g_object_unref0 (_taglet);
1049 		}
1050 		_vala_iterable_unref0 (__taglet_list);
1051 	}
1052 	result = NULL;
1053 	_vala_iterable_unref0 (taglets);
1054 	_g_object_unref0 (documentation);
1055 	_g_object_unref0 (symbol);
1056 	return result;
1057 }
1058 
1059 static void
valadoc_gir_writer_class_init(ValadocGirWriterClass * klass,gpointer klass_data)1060 valadoc_gir_writer_class_init (ValadocGirWriterClass * klass,
1061                                gpointer klass_data)
1062 {
1063 	valadoc_gir_writer_parent_class = g_type_class_peek_parent (klass);
1064 	((ValaCodeVisitorClass *) klass)->finalize = valadoc_gir_writer_finalize;
1065 	g_type_class_adjust_private_offset (klass, &ValadocGirWriter_private_offset);
1066 	((ValaGIRWriterClass *) klass)->get_interface_comment = (gchar* (*) (ValaGIRWriter*, ValaInterface*)) valadoc_gir_writer_real_get_interface_comment;
1067 	((ValaGIRWriterClass *) klass)->get_struct_comment = (gchar* (*) (ValaGIRWriter*, ValaStruct*)) valadoc_gir_writer_real_get_struct_comment;
1068 	((ValaGIRWriterClass *) klass)->get_enum_comment = (gchar* (*) (ValaGIRWriter*, ValaEnum*)) valadoc_gir_writer_real_get_enum_comment;
1069 	((ValaGIRWriterClass *) klass)->get_class_comment = (gchar* (*) (ValaGIRWriter*, ValaClass*)) valadoc_gir_writer_real_get_class_comment;
1070 	((ValaGIRWriterClass *) klass)->get_error_code_comment = (gchar* (*) (ValaGIRWriter*, ValaErrorCode*)) valadoc_gir_writer_real_get_error_code_comment;
1071 	((ValaGIRWriterClass *) klass)->get_enum_value_comment = (gchar* (*) (ValaGIRWriter*, ValaEnumValue*)) valadoc_gir_writer_real_get_enum_value_comment;
1072 	((ValaGIRWriterClass *) klass)->get_constant_comment = (gchar* (*) (ValaGIRWriter*, ValaConstant*)) valadoc_gir_writer_real_get_constant_comment;
1073 	((ValaGIRWriterClass *) klass)->get_error_domain_comment = (gchar* (*) (ValaGIRWriter*, ValaErrorDomain*)) valadoc_gir_writer_real_get_error_domain_comment;
1074 	((ValaGIRWriterClass *) klass)->get_field_comment = (gchar* (*) (ValaGIRWriter*, ValaField*)) valadoc_gir_writer_real_get_field_comment;
1075 	((ValaGIRWriterClass *) klass)->get_delegate_comment = (gchar* (*) (ValaGIRWriter*, ValaDelegate*)) valadoc_gir_writer_real_get_delegate_comment;
1076 	((ValaGIRWriterClass *) klass)->get_method_comment = (gchar* (*) (ValaGIRWriter*, ValaMethod*)) valadoc_gir_writer_real_get_method_comment;
1077 	((ValaGIRWriterClass *) klass)->get_property_comment = (gchar* (*) (ValaGIRWriter*, ValaProperty*)) valadoc_gir_writer_real_get_property_comment;
1078 	((ValaGIRWriterClass *) klass)->get_delegate_return_comment = (gchar* (*) (ValaGIRWriter*, ValaDelegate*)) valadoc_gir_writer_real_get_delegate_return_comment;
1079 	((ValaGIRWriterClass *) klass)->get_signal_return_comment = (gchar* (*) (ValaGIRWriter*, ValaSignal*)) valadoc_gir_writer_real_get_signal_return_comment;
1080 	((ValaGIRWriterClass *) klass)->get_method_return_comment = (gchar* (*) (ValaGIRWriter*, ValaMethod*)) valadoc_gir_writer_real_get_method_return_comment;
1081 	((ValaGIRWriterClass *) klass)->get_signal_comment = (gchar* (*) (ValaGIRWriter*, ValaSignal*)) valadoc_gir_writer_real_get_signal_comment;
1082 	((ValaGIRWriterClass *) klass)->get_parameter_comment = (gchar* (*) (ValaGIRWriter*, ValaParameter*)) valadoc_gir_writer_real_get_parameter_comment;
1083 }
1084 
1085 static void
valadoc_gir_writer_instance_init(ValadocGirWriter * self,gpointer klass)1086 valadoc_gir_writer_instance_init (ValadocGirWriter * self,
1087                                   gpointer klass)
1088 {
1089 	self->priv = valadoc_gir_writer_get_instance_private (self);
1090 }
1091 
1092 static void
valadoc_gir_writer_finalize(ValaCodeVisitor * obj)1093 valadoc_gir_writer_finalize (ValaCodeVisitor * obj)
1094 {
1095 	ValadocGirWriter * self;
1096 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALADOC_TYPE_GIR_WRITER, ValadocGirWriter);
1097 	_g_object_unref0 (self->priv->renderer);
1098 	_g_object_unref0 (self->priv->resolver);
1099 	VALA_CODE_VISITOR_CLASS (valadoc_gir_writer_parent_class)->finalize (obj);
1100 }
1101 
1102 /**
1103  * Code visitor generating .gir file for the public interface.
1104  */
1105 static GType
valadoc_gir_writer_get_type_once(void)1106 valadoc_gir_writer_get_type_once (void)
1107 {
1108 	static const GTypeInfo g_define_type_info = { sizeof (ValadocGirWriterClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_gir_writer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocGirWriter), 0, (GInstanceInitFunc) valadoc_gir_writer_instance_init, NULL };
1109 	GType valadoc_gir_writer_type_id;
1110 	valadoc_gir_writer_type_id = g_type_register_static (VALA_TYPE_GIR_WRITER, "ValadocGirWriter", &g_define_type_info, 0);
1111 	ValadocGirWriter_private_offset = g_type_add_instance_private (valadoc_gir_writer_type_id, sizeof (ValadocGirWriterPrivate));
1112 	return valadoc_gir_writer_type_id;
1113 }
1114 
1115 GType
valadoc_gir_writer_get_type(void)1116 valadoc_gir_writer_get_type (void)
1117 {
1118 	static volatile gsize valadoc_gir_writer_type_id__volatile = 0;
1119 	if (g_once_init_enter (&valadoc_gir_writer_type_id__volatile)) {
1120 		GType valadoc_gir_writer_type_id;
1121 		valadoc_gir_writer_type_id = valadoc_gir_writer_get_type_once ();
1122 		g_once_init_leave (&valadoc_gir_writer_type_id__volatile, valadoc_gir_writer_type_id);
1123 	}
1124 	return valadoc_gir_writer_type_id__volatile;
1125 }
1126 
1127