1 /* gtkdoccommentscanner.c generated by valac, the Vala compiler
2  * generated from gtkdoccommentscanner.vala, do not modify */
3 
4 /* gtkcommentscanner.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 "valadoc.h"
27 #include <stdlib.h>
28 #include <string.h>
29 #include <glib.h>
30 #include <valagee.h>
31 #include <glib-object.h>
32 #include <gobject/gvaluecollector.h>
33 
34 #define _g_free0(var) (var = (g_free (var), NULL))
35 #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
36 typedef struct _ValadocGtkdocParamSpecToken ValadocGtkdocParamSpecToken;
37 #define _valadoc_gtkdoc_token_unref0(var) ((var == NULL) ? NULL : (var = (valadoc_gtkdoc_token_unref (var), NULL)))
38 #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
39 typedef struct _ValadocGtkdocParamSpecScanner ValadocGtkdocParamSpecScanner;
40 
41 struct _ValadocGtkdocParamSpecToken {
42 	GParamSpec parent_instance;
43 };
44 
45 struct _ValadocGtkdocScannerPrivate {
46 	const gchar* content;
47 	const gchar* pos;
48 	gint column;
49 	gint line;
50 	ValadocGtkdocToken* tmp_token;
51 };
52 
53 struct _ValadocGtkdocParamSpecScanner {
54 	GParamSpec parent_instance;
55 };
56 
57 static gpointer valadoc_gtkdoc_token_parent_class = NULL;
58 static gint ValadocGtkdocScanner_private_offset;
59 static gpointer valadoc_gtkdoc_scanner_parent_class = NULL;
60 
61 static void valadoc_gtkdoc_token_finalize (ValadocGtkdocToken * obj);
62 static GType valadoc_gtkdoc_token_get_type_once (void);
63 static inline gunichar valadoc_gtkdoc_scanner_next_char (ValadocGtkdocScanner* self);
64 static inline gunichar valadoc_gtkdoc_scanner_get (ValadocGtkdocScanner* self);
65 static inline gboolean valadoc_gtkdoc_scanner_letter (ValadocGtkdocScanner* self,
66                                         gunichar c);
67 static inline gboolean valadoc_gtkdoc_scanner_letter_or_number (ValadocGtkdocScanner* self,
68                                                   gunichar c);
69 static inline gboolean valadoc_gtkdoc_scanner_space (ValadocGtkdocScanner* self,
70                                        gunichar c);
71 static inline gboolean valadoc_gtkdoc_scanner_space_or_newline (ValadocGtkdocScanner* self,
72                                                   gunichar c);
73 static inline gint valadoc_gtkdoc_scanner_offset (ValadocGtkdocScanner* self,
74                                     const gchar* a,
75                                     const gchar* b);
76 static inline gint valadoc_gtkdoc_scanner_vararg_prefix (ValadocGtkdocScanner* self);
77 static inline gint valadoc_gtkdoc_scanner_id_prefix (ValadocGtkdocScanner* self);
78 static inline gint valadoc_gtkdoc_scanner_g_id_prefix (ValadocGtkdocScanner* self);
79 static inline gint valadoc_gtkdoc_scanner_skip_spaces_and_newlines (ValadocGtkdocScanner* self);
80 static inline ValadocGtkdocToken* valadoc_gtkdoc_scanner_function_prefix (ValadocGtkdocScanner* self);
81 static ValadocGtkdocToken* valadoc_gtkdoc_scanner_space_prefix (ValadocGtkdocScanner* self);
82 static inline ValadocGtkdocToken* valadoc_gtkdoc_scanner_gtkdoc_symbolic_link_prefix (ValadocGtkdocScanner* self,
83                                                                         gunichar c,
84                                                                         ValadocGtkdocTokenType type);
85 static inline ValadocGtkdocToken* valadoc_gtkdoc_scanner_gtkdoc_property_prefix (ValadocGtkdocScanner* self);
86 static inline ValadocGtkdocToken* valadoc_gtkdoc_scanner_gtkdoc_signal_prefix (ValadocGtkdocScanner* self);
87 static inline ValadocGtkdocToken* valadoc_gtkdoc_scanner_gtkdoc_const_prefix (ValadocGtkdocScanner* self);
88 static inline ValadocGtkdocToken* valadoc_gtkdoc_scanner_gtkdoc_param_prefix (ValadocGtkdocScanner* self);
89 static inline ValadocGtkdocToken* valadoc_gtkdoc_scanner_gtkdoc_type_prefix (ValadocGtkdocScanner* self);
90 static inline ValadocGtkdocToken* valadoc_gtkdoc_scanner_xml_prefix (ValadocGtkdocScanner* self);
91 static ValadocGtkdocToken* valadoc_gtkdoc_scanner_newline_prefix (ValadocGtkdocScanner* self);
92 static ValadocGtkdocToken* valadoc_gtkdoc_scanner_eof_prefix (ValadocGtkdocScanner* self);
93 static ValadocGtkdocToken* valadoc_gtkdoc_scanner_word_prefix (ValadocGtkdocScanner* self);
94 static ValadocGtkdocToken* valadoc_gtkdoc_scanner_gtkdoc_source_open_prefix (ValadocGtkdocScanner* self);
95 static ValadocGtkdocToken* valadoc_gtkdoc_scanner_gtkdoc_source_close_prefix (ValadocGtkdocScanner* self);
96 static void valadoc_gtkdoc_scanner_finalize (ValadocGtkdocScanner * obj);
97 static GType valadoc_gtkdoc_scanner_get_type_once (void);
98 
99 static GType
valadoc_gtkdoc_token_type_get_type_once(void)100 valadoc_gtkdoc_token_type_get_type_once (void)
101 {
102 	static const GEnumValue values[] = {{VALADOC_GTKDOC_TOKEN_TYPE_XML_OPEN, "VALADOC_GTKDOC_TOKEN_TYPE_XML_OPEN", "xml-open"}, {VALADOC_GTKDOC_TOKEN_TYPE_XML_CLOSE, "VALADOC_GTKDOC_TOKEN_TYPE_XML_CLOSE", "xml-close"}, {VALADOC_GTKDOC_TOKEN_TYPE_XML_COMMENT, "VALADOC_GTKDOC_TOKEN_TYPE_XML_COMMENT", "xml-comment"}, {VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_FUNCTION, "VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_FUNCTION", "gtkdoc-function"}, {VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_CONST, "VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_CONST", "gtkdoc-const"}, {VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_TYPE, "VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_TYPE", "gtkdoc-type"}, {VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PARAM, "VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PARAM", "gtkdoc-param"}, {VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SOURCE_OPEN, "VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SOURCE_OPEN", "gtkdoc-source-open"}, {VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SOURCE_CLOSE, "VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SOURCE_CLOSE", "gtkdoc-source-close"}, {VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SIGNAL, "VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SIGNAL", "gtkdoc-signal"}, {VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PROPERTY, "VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PROPERTY", "gtkdoc-property"}, {VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PARAGRAPH, "VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PARAGRAPH", "gtkdoc-paragraph"}, {VALADOC_GTKDOC_TOKEN_TYPE_NEWLINE, "VALADOC_GTKDOC_TOKEN_TYPE_NEWLINE", "newline"}, {VALADOC_GTKDOC_TOKEN_TYPE_SPACE, "VALADOC_GTKDOC_TOKEN_TYPE_SPACE", "space"}, {VALADOC_GTKDOC_TOKEN_TYPE_WORD, "VALADOC_GTKDOC_TOKEN_TYPE_WORD", "word"}, {VALADOC_GTKDOC_TOKEN_TYPE_EOF, "VALADOC_GTKDOC_TOKEN_TYPE_EOF", "eof"}, {0, NULL, NULL}};
103 	GType valadoc_gtkdoc_token_type_type_id;
104 	valadoc_gtkdoc_token_type_type_id = g_enum_register_static ("ValadocGtkdocTokenType", values);
105 	return valadoc_gtkdoc_token_type_type_id;
106 }
107 
108 GType
valadoc_gtkdoc_token_type_get_type(void)109 valadoc_gtkdoc_token_type_get_type (void)
110 {
111 	static volatile gsize valadoc_gtkdoc_token_type_type_id__volatile = 0;
112 	if (g_once_init_enter (&valadoc_gtkdoc_token_type_type_id__volatile)) {
113 		GType valadoc_gtkdoc_token_type_type_id;
114 		valadoc_gtkdoc_token_type_type_id = valadoc_gtkdoc_token_type_get_type_once ();
115 		g_once_init_leave (&valadoc_gtkdoc_token_type_type_id__volatile, valadoc_gtkdoc_token_type_type_id);
116 	}
117 	return valadoc_gtkdoc_token_type_type_id__volatile;
118 }
119 
120 static gpointer
_vala_map_ref0(gpointer self)121 _vala_map_ref0 (gpointer self)
122 {
123 	return self ? vala_map_ref (self) : NULL;
124 }
125 
126 ValadocGtkdocToken*
valadoc_gtkdoc_token_construct(GType object_type,ValadocGtkdocTokenType type,const gchar * content,ValaHashMap * attributes,const gchar * start,gint length,gint line,gint first_column,gint last_column)127 valadoc_gtkdoc_token_construct (GType object_type,
128                                 ValadocGtkdocTokenType type,
129                                 const gchar* content,
130                                 ValaHashMap* attributes,
131                                 const gchar* start,
132                                 gint length,
133                                 gint line,
134                                 gint first_column,
135                                 gint last_column)
136 {
137 	ValadocGtkdocToken* self = NULL;
138 	ValaHashMap* _tmp0_;
139 	gchar* _tmp1_;
140 	g_return_val_if_fail (content != NULL, NULL);
141 	g_return_val_if_fail (start != NULL, NULL);
142 	self = (ValadocGtkdocToken*) g_type_create_instance (object_type);
143 	_tmp0_ = _vala_map_ref0 (attributes);
144 	_vala_map_unref0 (self->attributes);
145 	self->attributes = _tmp0_;
146 	_tmp1_ = g_strdup (content);
147 	_g_free0 (self->content);
148 	self->content = _tmp1_;
149 	self->length = length;
150 	self->start = start;
151 	self->type = type;
152 	self->line = line;
153 	self->first_column = first_column;
154 	self->last_column = last_column;
155 	return self;
156 }
157 
158 ValadocGtkdocToken*
valadoc_gtkdoc_token_new(ValadocGtkdocTokenType type,const gchar * content,ValaHashMap * attributes,const gchar * start,gint length,gint line,gint first_column,gint last_column)159 valadoc_gtkdoc_token_new (ValadocGtkdocTokenType type,
160                           const gchar* content,
161                           ValaHashMap* attributes,
162                           const gchar* start,
163                           gint length,
164                           gint line,
165                           gint first_column,
166                           gint last_column)
167 {
168 	return valadoc_gtkdoc_token_construct (VALADOC_GTKDOC_TYPE_TOKEN, type, content, attributes, start, length, line, first_column, last_column);
169 }
170 
171 gchar*
valadoc_gtkdoc_token_to_string(ValadocGtkdocToken * self)172 valadoc_gtkdoc_token_to_string (ValadocGtkdocToken* self)
173 {
174 	ValadocGtkdocTokenType _tmp0_;
175 	gchar* result = NULL;
176 	g_return_val_if_fail (self != NULL, NULL);
177 	_tmp0_ = self->type;
178 	switch (_tmp0_) {
179 		case VALADOC_GTKDOC_TOKEN_TYPE_XML_OPEN:
180 		{
181 			const gchar* _tmp1_;
182 			gchar* _tmp2_;
183 			_tmp1_ = self->content;
184 			_tmp2_ = g_strdup_printf ("`<%s>'", _tmp1_);
185 			result = _tmp2_;
186 			return result;
187 		}
188 		case VALADOC_GTKDOC_TOKEN_TYPE_XML_CLOSE:
189 		{
190 			const gchar* _tmp3_;
191 			gchar* _tmp4_;
192 			_tmp3_ = self->content;
193 			_tmp4_ = g_strdup_printf ("`</%s>'", _tmp3_);
194 			result = _tmp4_;
195 			return result;
196 		}
197 		case VALADOC_GTKDOC_TOKEN_TYPE_XML_COMMENT:
198 		{
199 			gchar* _tmp5_;
200 			_tmp5_ = g_strdup ("<XML-COMMENT>");
201 			result = _tmp5_;
202 			return result;
203 		}
204 		case VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_FUNCTION:
205 		{
206 			const gchar* _tmp6_;
207 			gchar* _tmp7_;
208 			_tmp6_ = self->content;
209 			_tmp7_ = g_strdup_printf ("`%s ()'", _tmp6_);
210 			result = _tmp7_;
211 			return result;
212 		}
213 		case VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_CONST:
214 		{
215 			const gchar* _tmp8_;
216 			gchar* _tmp9_;
217 			_tmp8_ = self->content;
218 			_tmp9_ = g_strdup_printf ("`%%%s'", _tmp8_);
219 			result = _tmp9_;
220 			return result;
221 		}
222 		case VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_TYPE:
223 		{
224 			const gchar* _tmp10_;
225 			gchar* _tmp11_;
226 			_tmp10_ = self->content;
227 			_tmp11_ = g_strdup_printf ("`#%s'", _tmp10_);
228 			result = _tmp11_;
229 			return result;
230 		}
231 		case VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PARAM:
232 		{
233 			gchar* _tmp12_;
234 			_tmp12_ = g_strdup ("<GTKDOC-PARAM>");
235 			result = _tmp12_;
236 			return result;
237 		}
238 		case VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SOURCE_OPEN:
239 		{
240 			gchar* _tmp13_;
241 			_tmp13_ = g_strdup ("[|");
242 			result = _tmp13_;
243 			return result;
244 		}
245 		case VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SOURCE_CLOSE:
246 		{
247 			gchar* _tmp14_;
248 			_tmp14_ = g_strdup ("|]");
249 			result = _tmp14_;
250 			return result;
251 		}
252 		case VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SIGNAL:
253 		{
254 			const gchar* _tmp15_;
255 			gchar* _tmp16_;
256 			_tmp15_ = self->content;
257 			_tmp16_ = g_strdup_printf ("`::%s'", _tmp15_);
258 			result = _tmp16_;
259 			return result;
260 		}
261 		case VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PROPERTY:
262 		{
263 			const gchar* _tmp17_;
264 			gchar* _tmp18_;
265 			_tmp17_ = self->content;
266 			_tmp18_ = g_strdup_printf ("`:%s'", _tmp17_);
267 			result = _tmp18_;
268 			return result;
269 		}
270 		case VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PARAGRAPH:
271 		{
272 			gchar* _tmp19_;
273 			_tmp19_ = g_strdup ("<GKTDOC-PARAGRAPH>");
274 			result = _tmp19_;
275 			return result;
276 		}
277 		case VALADOC_GTKDOC_TOKEN_TYPE_NEWLINE:
278 		{
279 			gchar* _tmp20_;
280 			_tmp20_ = g_strdup ("<NEWLNIE>");
281 			result = _tmp20_;
282 			return result;
283 		}
284 		case VALADOC_GTKDOC_TOKEN_TYPE_SPACE:
285 		{
286 			gchar* _tmp21_;
287 			_tmp21_ = g_strdup ("<SPACE>");
288 			result = _tmp21_;
289 			return result;
290 		}
291 		case VALADOC_GTKDOC_TOKEN_TYPE_WORD:
292 		{
293 			const gchar* _tmp22_;
294 			gchar* _tmp23_;
295 			_tmp22_ = self->content;
296 			_tmp23_ = g_strdup_printf ("`%s'", _tmp22_);
297 			result = _tmp23_;
298 			return result;
299 		}
300 		case VALADOC_GTKDOC_TOKEN_TYPE_EOF:
301 		{
302 			gchar* _tmp24_;
303 			_tmp24_ = g_strdup ("<EOF>");
304 			result = _tmp24_;
305 			return result;
306 		}
307 		default:
308 		{
309 			g_assert_not_reached ();
310 		}
311 	}
312 }
313 
314 static void
valadoc_gtkdoc_value_token_init(GValue * value)315 valadoc_gtkdoc_value_token_init (GValue* value)
316 {
317 	value->data[0].v_pointer = NULL;
318 }
319 
320 static void
valadoc_gtkdoc_value_token_free_value(GValue * value)321 valadoc_gtkdoc_value_token_free_value (GValue* value)
322 {
323 	if (value->data[0].v_pointer) {
324 		valadoc_gtkdoc_token_unref (value->data[0].v_pointer);
325 	}
326 }
327 
328 static void
valadoc_gtkdoc_value_token_copy_value(const GValue * src_value,GValue * dest_value)329 valadoc_gtkdoc_value_token_copy_value (const GValue* src_value,
330                                        GValue* dest_value)
331 {
332 	if (src_value->data[0].v_pointer) {
333 		dest_value->data[0].v_pointer = valadoc_gtkdoc_token_ref (src_value->data[0].v_pointer);
334 	} else {
335 		dest_value->data[0].v_pointer = NULL;
336 	}
337 }
338 
339 static gpointer
valadoc_gtkdoc_value_token_peek_pointer(const GValue * value)340 valadoc_gtkdoc_value_token_peek_pointer (const GValue* value)
341 {
342 	return value->data[0].v_pointer;
343 }
344 
345 static gchar*
valadoc_gtkdoc_value_token_collect_value(GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)346 valadoc_gtkdoc_value_token_collect_value (GValue* value,
347                                           guint n_collect_values,
348                                           GTypeCValue* collect_values,
349                                           guint collect_flags)
350 {
351 	if (collect_values[0].v_pointer) {
352 		ValadocGtkdocToken * object;
353 		object = collect_values[0].v_pointer;
354 		if (object->parent_instance.g_class == NULL) {
355 			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
356 		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
357 			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
358 		}
359 		value->data[0].v_pointer = valadoc_gtkdoc_token_ref (object);
360 	} else {
361 		value->data[0].v_pointer = NULL;
362 	}
363 	return NULL;
364 }
365 
366 static gchar*
valadoc_gtkdoc_value_token_lcopy_value(const GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)367 valadoc_gtkdoc_value_token_lcopy_value (const GValue* value,
368                                         guint n_collect_values,
369                                         GTypeCValue* collect_values,
370                                         guint collect_flags)
371 {
372 	ValadocGtkdocToken ** object_p;
373 	object_p = collect_values[0].v_pointer;
374 	if (!object_p) {
375 		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
376 	}
377 	if (!value->data[0].v_pointer) {
378 		*object_p = NULL;
379 	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
380 		*object_p = value->data[0].v_pointer;
381 	} else {
382 		*object_p = valadoc_gtkdoc_token_ref (value->data[0].v_pointer);
383 	}
384 	return NULL;
385 }
386 
387 GParamSpec*
valadoc_gtkdoc_param_spec_token(const gchar * name,const gchar * nick,const gchar * blurb,GType object_type,GParamFlags flags)388 valadoc_gtkdoc_param_spec_token (const gchar* name,
389                                  const gchar* nick,
390                                  const gchar* blurb,
391                                  GType object_type,
392                                  GParamFlags flags)
393 {
394 	ValadocGtkdocParamSpecToken* spec;
395 	g_return_val_if_fail (g_type_is_a (object_type, VALADOC_GTKDOC_TYPE_TOKEN), NULL);
396 	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
397 	G_PARAM_SPEC (spec)->value_type = object_type;
398 	return G_PARAM_SPEC (spec);
399 }
400 
401 gpointer
valadoc_gtkdoc_value_get_token(const GValue * value)402 valadoc_gtkdoc_value_get_token (const GValue* value)
403 {
404 	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALADOC_GTKDOC_TYPE_TOKEN), NULL);
405 	return value->data[0].v_pointer;
406 }
407 
408 void
valadoc_gtkdoc_value_set_token(GValue * value,gpointer v_object)409 valadoc_gtkdoc_value_set_token (GValue* value,
410                                 gpointer v_object)
411 {
412 	ValadocGtkdocToken * old;
413 	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALADOC_GTKDOC_TYPE_TOKEN));
414 	old = value->data[0].v_pointer;
415 	if (v_object) {
416 		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALADOC_GTKDOC_TYPE_TOKEN));
417 		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
418 		value->data[0].v_pointer = v_object;
419 		valadoc_gtkdoc_token_ref (value->data[0].v_pointer);
420 	} else {
421 		value->data[0].v_pointer = NULL;
422 	}
423 	if (old) {
424 		valadoc_gtkdoc_token_unref (old);
425 	}
426 }
427 
428 void
valadoc_gtkdoc_value_take_token(GValue * value,gpointer v_object)429 valadoc_gtkdoc_value_take_token (GValue* value,
430                                  gpointer v_object)
431 {
432 	ValadocGtkdocToken * old;
433 	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALADOC_GTKDOC_TYPE_TOKEN));
434 	old = value->data[0].v_pointer;
435 	if (v_object) {
436 		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALADOC_GTKDOC_TYPE_TOKEN));
437 		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
438 		value->data[0].v_pointer = v_object;
439 	} else {
440 		value->data[0].v_pointer = NULL;
441 	}
442 	if (old) {
443 		valadoc_gtkdoc_token_unref (old);
444 	}
445 }
446 
447 static void
valadoc_gtkdoc_token_class_init(ValadocGtkdocTokenClass * klass,gpointer klass_data)448 valadoc_gtkdoc_token_class_init (ValadocGtkdocTokenClass * klass,
449                                  gpointer klass_data)
450 {
451 	valadoc_gtkdoc_token_parent_class = g_type_class_peek_parent (klass);
452 	((ValadocGtkdocTokenClass *) klass)->finalize = valadoc_gtkdoc_token_finalize;
453 }
454 
455 static void
valadoc_gtkdoc_token_instance_init(ValadocGtkdocToken * self,gpointer klass)456 valadoc_gtkdoc_token_instance_init (ValadocGtkdocToken * self,
457                                     gpointer klass)
458 {
459 	self->ref_count = 1;
460 }
461 
462 static void
valadoc_gtkdoc_token_finalize(ValadocGtkdocToken * obj)463 valadoc_gtkdoc_token_finalize (ValadocGtkdocToken * obj)
464 {
465 	ValadocGtkdocToken * self;
466 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALADOC_GTKDOC_TYPE_TOKEN, ValadocGtkdocToken);
467 	g_signal_handlers_destroy (self);
468 	_g_free0 (self->content);
469 	_vala_map_unref0 (self->attributes);
470 }
471 
472 static GType
valadoc_gtkdoc_token_get_type_once(void)473 valadoc_gtkdoc_token_get_type_once (void)
474 {
475 	static const GTypeValueTable g_define_type_value_table = { valadoc_gtkdoc_value_token_init, valadoc_gtkdoc_value_token_free_value, valadoc_gtkdoc_value_token_copy_value, valadoc_gtkdoc_value_token_peek_pointer, "p", valadoc_gtkdoc_value_token_collect_value, "p", valadoc_gtkdoc_value_token_lcopy_value };
476 	static const GTypeInfo g_define_type_info = { sizeof (ValadocGtkdocTokenClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_gtkdoc_token_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocGtkdocToken), 0, (GInstanceInitFunc) valadoc_gtkdoc_token_instance_init, &g_define_type_value_table };
477 	static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
478 	GType valadoc_gtkdoc_token_type_id;
479 	valadoc_gtkdoc_token_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ValadocGtkdocToken", &g_define_type_info, &g_define_type_fundamental_info, 0);
480 	return valadoc_gtkdoc_token_type_id;
481 }
482 
483 GType
valadoc_gtkdoc_token_get_type(void)484 valadoc_gtkdoc_token_get_type (void)
485 {
486 	static volatile gsize valadoc_gtkdoc_token_type_id__volatile = 0;
487 	if (g_once_init_enter (&valadoc_gtkdoc_token_type_id__volatile)) {
488 		GType valadoc_gtkdoc_token_type_id;
489 		valadoc_gtkdoc_token_type_id = valadoc_gtkdoc_token_get_type_once ();
490 		g_once_init_leave (&valadoc_gtkdoc_token_type_id__volatile, valadoc_gtkdoc_token_type_id);
491 	}
492 	return valadoc_gtkdoc_token_type_id__volatile;
493 }
494 
495 gpointer
valadoc_gtkdoc_token_ref(gpointer instance)496 valadoc_gtkdoc_token_ref (gpointer instance)
497 {
498 	ValadocGtkdocToken * self;
499 	self = instance;
500 	g_atomic_int_inc (&self->ref_count);
501 	return instance;
502 }
503 
504 void
valadoc_gtkdoc_token_unref(gpointer instance)505 valadoc_gtkdoc_token_unref (gpointer instance)
506 {
507 	ValadocGtkdocToken * self;
508 	self = instance;
509 	if (g_atomic_int_dec_and_test (&self->ref_count)) {
510 		VALADOC_GTKDOC_TOKEN_GET_CLASS (self)->finalize (self);
511 		g_type_free_instance ((GTypeInstance *) self);
512 	}
513 }
514 
515 static inline gpointer
valadoc_gtkdoc_scanner_get_instance_private(ValadocGtkdocScanner * self)516 valadoc_gtkdoc_scanner_get_instance_private (ValadocGtkdocScanner* self)
517 {
518 	return G_STRUCT_MEMBER_P (self, ValadocGtkdocScanner_private_offset);
519 }
520 
521 ValadocGtkdocScanner*
valadoc_gtkdoc_scanner_construct(GType object_type)522 valadoc_gtkdoc_scanner_construct (GType object_type)
523 {
524 	ValadocGtkdocScanner* self = NULL;
525 	self = (ValadocGtkdocScanner*) g_type_create_instance (object_type);
526 	return self;
527 }
528 
529 ValadocGtkdocScanner*
valadoc_gtkdoc_scanner_new(void)530 valadoc_gtkdoc_scanner_new (void)
531 {
532 	return valadoc_gtkdoc_scanner_construct (VALADOC_GTKDOC_TYPE_SCANNER);
533 }
534 
535 static gunichar
string_get_char(const gchar * self,glong index)536 string_get_char (const gchar* self,
537                  glong index)
538 {
539 	gunichar result = 0U;
540 	g_return_val_if_fail (self != NULL, 0U);
541 	result = g_utf8_get_char (((gchar*) self) + index);
542 	return result;
543 }
544 
545 gchar*
valadoc_gtkdoc_scanner_unescape(const gchar * txt)546 valadoc_gtkdoc_scanner_unescape (const gchar* txt)
547 {
548 	GString* builder = NULL;
549 	GString* _tmp0_;
550 	const gchar* start = NULL;
551 	const gchar* pos = NULL;
552 	gunichar c = 0U;
553 	gchar* result = NULL;
554 	g_return_val_if_fail (txt != NULL, NULL);
555 	_tmp0_ = g_string_new ("");
556 	builder = _tmp0_;
557 	start = txt;
558 	{
559 		gboolean _tmp1_ = FALSE;
560 		pos = txt;
561 		_tmp1_ = TRUE;
562 		while (TRUE) {
563 			const gchar* _tmp4_;
564 			if (!_tmp1_) {
565 				const gchar* _tmp2_;
566 				const gchar* _tmp3_;
567 				_tmp2_ = pos;
568 				_tmp3_ = g_utf8_next_char (_tmp2_);
569 				pos = _tmp3_;
570 			}
571 			_tmp1_ = FALSE;
572 			_tmp4_ = pos;
573 			c = string_get_char (_tmp4_, (glong) 0);
574 			if (!(c != ((gunichar) '\0'))) {
575 				break;
576 			}
577 			if (c == ((gunichar) '&')) {
578 				const gchar* _tmp5_;
579 				_tmp5_ = pos;
580 				if (g_str_has_prefix (_tmp5_, "&solidus;")) {
581 					GString* _tmp6_;
582 					const gchar* _tmp7_;
583 					const gchar* _tmp8_;
584 					const gchar* _tmp9_;
585 					const gchar* _tmp10_;
586 					const gchar* _tmp11_;
587 					GString* _tmp12_;
588 					_tmp6_ = builder;
589 					_tmp7_ = start;
590 					_tmp8_ = pos;
591 					_tmp9_ = start;
592 					g_string_append_len (_tmp6_, _tmp7_, (gssize) (((gchar*) _tmp8_) - ((gchar*) _tmp9_)));
593 					_tmp10_ = pos;
594 					start = (const gchar*) (((gchar*) _tmp10_) + 9);
595 					_tmp11_ = pos;
596 					pos = (const gchar*) (((gchar*) _tmp11_) + 8);
597 					_tmp12_ = builder;
598 					g_string_append_unichar (_tmp12_, 8260U);
599 				} else {
600 					const gchar* _tmp13_;
601 					_tmp13_ = pos;
602 					if (g_str_has_prefix (_tmp13_, "&percnt;")) {
603 						GString* _tmp14_;
604 						const gchar* _tmp15_;
605 						const gchar* _tmp16_;
606 						const gchar* _tmp17_;
607 						const gchar* _tmp18_;
608 						const gchar* _tmp19_;
609 						GString* _tmp20_;
610 						_tmp14_ = builder;
611 						_tmp15_ = start;
612 						_tmp16_ = pos;
613 						_tmp17_ = start;
614 						g_string_append_len (_tmp14_, _tmp15_, (gssize) (((gchar*) _tmp16_) - ((gchar*) _tmp17_)));
615 						_tmp18_ = pos;
616 						start = (const gchar*) (((gchar*) _tmp18_) + 8);
617 						_tmp19_ = pos;
618 						pos = (const gchar*) (((gchar*) _tmp19_) + 7);
619 						_tmp20_ = builder;
620 						g_string_append_c (_tmp20_, '%');
621 					} else {
622 						const gchar* _tmp21_;
623 						_tmp21_ = pos;
624 						if (g_str_has_prefix (_tmp21_, "&commat;")) {
625 							GString* _tmp22_;
626 							const gchar* _tmp23_;
627 							const gchar* _tmp24_;
628 							const gchar* _tmp25_;
629 							const gchar* _tmp26_;
630 							const gchar* _tmp27_;
631 							GString* _tmp28_;
632 							_tmp22_ = builder;
633 							_tmp23_ = start;
634 							_tmp24_ = pos;
635 							_tmp25_ = start;
636 							g_string_append_len (_tmp22_, _tmp23_, (gssize) (((gchar*) _tmp24_) - ((gchar*) _tmp25_)));
637 							_tmp26_ = pos;
638 							start = (const gchar*) (((gchar*) _tmp26_) + 8);
639 							_tmp27_ = pos;
640 							pos = (const gchar*) (((gchar*) _tmp27_) + 7);
641 							_tmp28_ = builder;
642 							g_string_append_c (_tmp28_, '@');
643 						} else {
644 							const gchar* _tmp29_;
645 							_tmp29_ = pos;
646 							if (g_str_has_prefix (_tmp29_, "&nbsp;")) {
647 								GString* _tmp30_;
648 								const gchar* _tmp31_;
649 								const gchar* _tmp32_;
650 								const gchar* _tmp33_;
651 								const gchar* _tmp34_;
652 								const gchar* _tmp35_;
653 								GString* _tmp36_;
654 								_tmp30_ = builder;
655 								_tmp31_ = start;
656 								_tmp32_ = pos;
657 								_tmp33_ = start;
658 								g_string_append_len (_tmp30_, _tmp31_, (gssize) (((gchar*) _tmp32_) - ((gchar*) _tmp33_)));
659 								_tmp34_ = pos;
660 								start = (const gchar*) (((gchar*) _tmp34_) + 6);
661 								_tmp35_ = pos;
662 								pos = (const gchar*) (((gchar*) _tmp35_) + 5);
663 								_tmp36_ = builder;
664 								g_string_append_c (_tmp36_, ' ');
665 							} else {
666 								const gchar* _tmp37_;
667 								_tmp37_ = pos;
668 								if (g_str_has_prefix (_tmp37_, "&quot;")) {
669 									GString* _tmp38_;
670 									const gchar* _tmp39_;
671 									const gchar* _tmp40_;
672 									const gchar* _tmp41_;
673 									const gchar* _tmp42_;
674 									const gchar* _tmp43_;
675 									GString* _tmp44_;
676 									_tmp38_ = builder;
677 									_tmp39_ = start;
678 									_tmp40_ = pos;
679 									_tmp41_ = start;
680 									g_string_append_len (_tmp38_, _tmp39_, (gssize) (((gchar*) _tmp40_) - ((gchar*) _tmp41_)));
681 									_tmp42_ = pos;
682 									start = (const gchar*) (((gchar*) _tmp42_) + 6);
683 									_tmp43_ = pos;
684 									pos = (const gchar*) (((gchar*) _tmp43_) + 5);
685 									_tmp44_ = builder;
686 									g_string_append_c (_tmp44_, '"');
687 								} else {
688 									const gchar* _tmp45_;
689 									_tmp45_ = pos;
690 									if (g_str_has_prefix (_tmp45_, "&apos;")) {
691 										GString* _tmp46_;
692 										const gchar* _tmp47_;
693 										const gchar* _tmp48_;
694 										const gchar* _tmp49_;
695 										const gchar* _tmp50_;
696 										const gchar* _tmp51_;
697 										GString* _tmp52_;
698 										_tmp46_ = builder;
699 										_tmp47_ = start;
700 										_tmp48_ = pos;
701 										_tmp49_ = start;
702 										g_string_append_len (_tmp46_, _tmp47_, (gssize) (((gchar*) _tmp48_) - ((gchar*) _tmp49_)));
703 										_tmp50_ = pos;
704 										start = (const gchar*) (((gchar*) _tmp50_) + 6);
705 										_tmp51_ = pos;
706 										pos = (const gchar*) (((gchar*) _tmp51_) + 5);
707 										_tmp52_ = builder;
708 										g_string_append_c (_tmp52_, '\'');
709 									} else {
710 										const gchar* _tmp53_;
711 										_tmp53_ = pos;
712 										if (g_str_has_prefix (_tmp53_, "&lpar;")) {
713 											GString* _tmp54_;
714 											const gchar* _tmp55_;
715 											const gchar* _tmp56_;
716 											const gchar* _tmp57_;
717 											const gchar* _tmp58_;
718 											const gchar* _tmp59_;
719 											GString* _tmp60_;
720 											_tmp54_ = builder;
721 											_tmp55_ = start;
722 											_tmp56_ = pos;
723 											_tmp57_ = start;
724 											g_string_append_len (_tmp54_, _tmp55_, (gssize) (((gchar*) _tmp56_) - ((gchar*) _tmp57_)));
725 											_tmp58_ = pos;
726 											start = (const gchar*) (((gchar*) _tmp58_) + 6);
727 											_tmp59_ = pos;
728 											pos = (const gchar*) (((gchar*) _tmp59_) + 5);
729 											_tmp60_ = builder;
730 											g_string_append_c (_tmp60_, '(');
731 										} else {
732 											const gchar* _tmp61_;
733 											_tmp61_ = pos;
734 											if (g_str_has_prefix (_tmp61_, "&rpar;")) {
735 												GString* _tmp62_;
736 												const gchar* _tmp63_;
737 												const gchar* _tmp64_;
738 												const gchar* _tmp65_;
739 												const gchar* _tmp66_;
740 												const gchar* _tmp67_;
741 												GString* _tmp68_;
742 												_tmp62_ = builder;
743 												_tmp63_ = start;
744 												_tmp64_ = pos;
745 												_tmp65_ = start;
746 												g_string_append_len (_tmp62_, _tmp63_, (gssize) (((gchar*) _tmp64_) - ((gchar*) _tmp65_)));
747 												_tmp66_ = pos;
748 												start = (const gchar*) (((gchar*) _tmp66_) + 6);
749 												_tmp67_ = pos;
750 												pos = (const gchar*) (((gchar*) _tmp67_) + 5);
751 												_tmp68_ = builder;
752 												g_string_append_c (_tmp68_, ')');
753 											} else {
754 												const gchar* _tmp69_;
755 												_tmp69_ = pos;
756 												if (g_str_has_prefix (_tmp69_, "&num;")) {
757 													GString* _tmp70_;
758 													const gchar* _tmp71_;
759 													const gchar* _tmp72_;
760 													const gchar* _tmp73_;
761 													const gchar* _tmp74_;
762 													const gchar* _tmp75_;
763 													GString* _tmp76_;
764 													_tmp70_ = builder;
765 													_tmp71_ = start;
766 													_tmp72_ = pos;
767 													_tmp73_ = start;
768 													g_string_append_len (_tmp70_, _tmp71_, (gssize) (((gchar*) _tmp72_) - ((gchar*) _tmp73_)));
769 													_tmp74_ = pos;
770 													start = (const gchar*) (((gchar*) _tmp74_) + 5);
771 													_tmp75_ = pos;
772 													pos = (const gchar*) (((gchar*) _tmp75_) + 4);
773 													_tmp76_ = builder;
774 													g_string_append_c (_tmp76_, '#');
775 												} else {
776 													const gchar* _tmp77_;
777 													_tmp77_ = pos;
778 													if (g_str_has_prefix (_tmp77_, "&amp;")) {
779 														GString* _tmp78_;
780 														const gchar* _tmp79_;
781 														const gchar* _tmp80_;
782 														const gchar* _tmp81_;
783 														const gchar* _tmp82_;
784 														const gchar* _tmp83_;
785 														GString* _tmp84_;
786 														_tmp78_ = builder;
787 														_tmp79_ = start;
788 														_tmp80_ = pos;
789 														_tmp81_ = start;
790 														g_string_append_len (_tmp78_, _tmp79_, (gssize) (((gchar*) _tmp80_) - ((gchar*) _tmp81_)));
791 														_tmp82_ = pos;
792 														start = (const gchar*) (((gchar*) _tmp82_) + 5);
793 														_tmp83_ = pos;
794 														pos = (const gchar*) (((gchar*) _tmp83_) + 4);
795 														_tmp84_ = builder;
796 														g_string_append_c (_tmp84_, '&');
797 													} else {
798 														const gchar* _tmp85_;
799 														_tmp85_ = pos;
800 														if (g_str_has_prefix (_tmp85_, "&ast;")) {
801 															GString* _tmp86_;
802 															const gchar* _tmp87_;
803 															const gchar* _tmp88_;
804 															const gchar* _tmp89_;
805 															const gchar* _tmp90_;
806 															const gchar* _tmp91_;
807 															GString* _tmp92_;
808 															_tmp86_ = builder;
809 															_tmp87_ = start;
810 															_tmp88_ = pos;
811 															_tmp89_ = start;
812 															g_string_append_len (_tmp86_, _tmp87_, (gssize) (((gchar*) _tmp88_) - ((gchar*) _tmp89_)));
813 															_tmp90_ = pos;
814 															start = (const gchar*) (((gchar*) _tmp90_) + 5);
815 															_tmp91_ = pos;
816 															pos = (const gchar*) (((gchar*) _tmp91_) + 4);
817 															_tmp92_ = builder;
818 															g_string_append_c (_tmp92_, '*');
819 														} else {
820 															const gchar* _tmp93_;
821 															_tmp93_ = pos;
822 															if (g_str_has_prefix (_tmp93_, "&pi;")) {
823 																GString* _tmp94_;
824 																const gchar* _tmp95_;
825 																const gchar* _tmp96_;
826 																const gchar* _tmp97_;
827 																const gchar* _tmp98_;
828 																const gchar* _tmp99_;
829 																GString* _tmp100_;
830 																_tmp94_ = builder;
831 																_tmp95_ = start;
832 																_tmp96_ = pos;
833 																_tmp97_ = start;
834 																g_string_append_len (_tmp94_, _tmp95_, (gssize) (((gchar*) _tmp96_) - ((gchar*) _tmp97_)));
835 																_tmp98_ = pos;
836 																start = (const gchar*) (((gchar*) _tmp98_) + 4);
837 																_tmp99_ = pos;
838 																pos = (const gchar*) (((gchar*) _tmp99_) + 3);
839 																_tmp100_ = builder;
840 																g_string_append_unichar (_tmp100_, 960U);
841 															} else {
842 																const gchar* _tmp101_;
843 																_tmp101_ = pos;
844 																if (g_str_has_prefix (_tmp101_, "&lt;")) {
845 																	GString* _tmp102_;
846 																	const gchar* _tmp103_;
847 																	const gchar* _tmp104_;
848 																	const gchar* _tmp105_;
849 																	const gchar* _tmp106_;
850 																	const gchar* _tmp107_;
851 																	GString* _tmp108_;
852 																	_tmp102_ = builder;
853 																	_tmp103_ = start;
854 																	_tmp104_ = pos;
855 																	_tmp105_ = start;
856 																	g_string_append_len (_tmp102_, _tmp103_, (gssize) (((gchar*) _tmp104_) - ((gchar*) _tmp105_)));
857 																	_tmp106_ = pos;
858 																	start = (const gchar*) (((gchar*) _tmp106_) + 4);
859 																	_tmp107_ = pos;
860 																	pos = (const gchar*) (((gchar*) _tmp107_) + 3);
861 																	_tmp108_ = builder;
862 																	g_string_append_c (_tmp108_, '<');
863 																} else {
864 																	const gchar* _tmp109_;
865 																	_tmp109_ = pos;
866 																	if (g_str_has_prefix (_tmp109_, "&gt;")) {
867 																		GString* _tmp110_;
868 																		const gchar* _tmp111_;
869 																		const gchar* _tmp112_;
870 																		const gchar* _tmp113_;
871 																		const gchar* _tmp114_;
872 																		const gchar* _tmp115_;
873 																		GString* _tmp116_;
874 																		_tmp110_ = builder;
875 																		_tmp111_ = start;
876 																		_tmp112_ = pos;
877 																		_tmp113_ = start;
878 																		g_string_append_len (_tmp110_, _tmp111_, (gssize) (((gchar*) _tmp112_) - ((gchar*) _tmp113_)));
879 																		_tmp114_ = pos;
880 																		start = (const gchar*) (((gchar*) _tmp114_) + 4);
881 																		_tmp115_ = pos;
882 																		pos = (const gchar*) (((gchar*) _tmp115_) + 3);
883 																		_tmp116_ = builder;
884 																		g_string_append_c (_tmp116_, '>');
885 																	}
886 																}
887 															}
888 														}
889 													}
890 												}
891 											}
892 										}
893 									}
894 								}
895 							}
896 						}
897 					}
898 				}
899 			}
900 		}
901 	}
902 	if ((&txt) == (&start)) {
903 		gchar* _tmp117_;
904 		_tmp117_ = g_strdup (txt);
905 		result = _tmp117_;
906 		_g_string_free0 (builder);
907 		return result;
908 	} else {
909 		GString* _tmp118_;
910 		const gchar* _tmp119_;
911 		const gchar* _tmp120_;
912 		const gchar* _tmp121_;
913 		GString* _tmp122_;
914 		gchar* _tmp123_;
915 		_tmp118_ = builder;
916 		_tmp119_ = start;
917 		_tmp120_ = pos;
918 		_tmp121_ = start;
919 		g_string_append_len (_tmp118_, _tmp119_, (gssize) (((gchar*) _tmp120_) - ((gchar*) _tmp121_)));
920 		_tmp122_ = builder;
921 		_tmp123_ = _tmp122_->str;
922 		_tmp122_->str = NULL;
923 		result = _tmp123_;
924 		_g_string_free0 (builder);
925 		return result;
926 	}
927 	_g_string_free0 (builder);
928 }
929 
930 void
valadoc_gtkdoc_scanner_reset(ValadocGtkdocScanner * self,const gchar * content)931 valadoc_gtkdoc_scanner_reset (ValadocGtkdocScanner* self,
932                               const gchar* content)
933 {
934 	g_return_if_fail (self != NULL);
935 	g_return_if_fail (content != NULL);
936 	self->priv->content = content;
937 	_valadoc_gtkdoc_token_unref0 (self->priv->tmp_token);
938 	self->priv->tmp_token = NULL;
939 	self->priv->pos = content;
940 	self->priv->column = 0;
941 	self->priv->line = 0;
942 }
943 
944 static inline gunichar
valadoc_gtkdoc_scanner_next_char(ValadocGtkdocScanner * self)945 valadoc_gtkdoc_scanner_next_char (ValadocGtkdocScanner* self)
946 {
947 	const gchar* _tmp0_;
948 	const gchar* _tmp1_;
949 	gint _tmp2_;
950 	const gchar* _tmp3_;
951 	gunichar result = 0U;
952 	g_return_val_if_fail (self != NULL, 0U);
953 	_tmp0_ = self->priv->pos;
954 	_tmp1_ = g_utf8_next_char (_tmp0_);
955 	self->priv->pos = _tmp1_;
956 	_tmp2_ = self->priv->column;
957 	self->priv->column = _tmp2_ + 1;
958 	_tmp3_ = self->priv->pos;
959 	result = string_get_char (_tmp3_, (glong) 0);
960 	return result;
961 }
962 
963 static inline gunichar
valadoc_gtkdoc_scanner_get(ValadocGtkdocScanner * self)964 valadoc_gtkdoc_scanner_get (ValadocGtkdocScanner* self)
965 {
966 	const gchar* _tmp0_;
967 	gunichar result = 0U;
968 	g_return_val_if_fail (self != NULL, 0U);
969 	_tmp0_ = self->priv->pos;
970 	result = string_get_char (_tmp0_, (glong) 0);
971 	return result;
972 }
973 
974 static inline gboolean
valadoc_gtkdoc_scanner_letter(ValadocGtkdocScanner * self,gunichar c)975 valadoc_gtkdoc_scanner_letter (ValadocGtkdocScanner* self,
976                                gunichar c)
977 {
978 	gboolean _tmp0_ = FALSE;
979 	gboolean _tmp1_ = FALSE;
980 	gboolean result = FALSE;
981 	g_return_val_if_fail (self != NULL, FALSE);
982 	if (c >= ((gunichar) 'a')) {
983 		_tmp1_ = c <= ((gunichar) 'z');
984 	} else {
985 		_tmp1_ = FALSE;
986 	}
987 	if (_tmp1_) {
988 		_tmp0_ = TRUE;
989 	} else {
990 		gboolean _tmp2_ = FALSE;
991 		if (c >= ((gunichar) 'A')) {
992 			_tmp2_ = c <= ((gunichar) 'Z');
993 		} else {
994 			_tmp2_ = FALSE;
995 		}
996 		_tmp0_ = _tmp2_;
997 	}
998 	result = _tmp0_;
999 	return result;
1000 }
1001 
1002 static inline gboolean
valadoc_gtkdoc_scanner_letter_or_number(ValadocGtkdocScanner * self,gunichar c)1003 valadoc_gtkdoc_scanner_letter_or_number (ValadocGtkdocScanner* self,
1004                                          gunichar c)
1005 {
1006 	gboolean _tmp0_ = FALSE;
1007 	gboolean _tmp1_ = FALSE;
1008 	gboolean _tmp2_ = FALSE;
1009 	gboolean result = FALSE;
1010 	g_return_val_if_fail (self != NULL, FALSE);
1011 	if (c >= ((gunichar) 'a')) {
1012 		_tmp2_ = c <= ((gunichar) 'z');
1013 	} else {
1014 		_tmp2_ = FALSE;
1015 	}
1016 	if (_tmp2_) {
1017 		_tmp1_ = TRUE;
1018 	} else {
1019 		gboolean _tmp3_ = FALSE;
1020 		if (c >= ((gunichar) 'A')) {
1021 			_tmp3_ = c <= ((gunichar) 'Z');
1022 		} else {
1023 			_tmp3_ = FALSE;
1024 		}
1025 		_tmp1_ = _tmp3_;
1026 	}
1027 	if (_tmp1_) {
1028 		_tmp0_ = TRUE;
1029 	} else {
1030 		gboolean _tmp4_ = FALSE;
1031 		if (c >= ((gunichar) '0')) {
1032 			_tmp4_ = c <= ((gunichar) '9');
1033 		} else {
1034 			_tmp4_ = FALSE;
1035 		}
1036 		_tmp0_ = _tmp4_;
1037 	}
1038 	result = _tmp0_;
1039 	return result;
1040 }
1041 
1042 static inline gboolean
valadoc_gtkdoc_scanner_space(ValadocGtkdocScanner * self,gunichar c)1043 valadoc_gtkdoc_scanner_space (ValadocGtkdocScanner* self,
1044                               gunichar c)
1045 {
1046 	gboolean _tmp0_ = FALSE;
1047 	gboolean result = FALSE;
1048 	g_return_val_if_fail (self != NULL, FALSE);
1049 	if (c == ((gunichar) ' ')) {
1050 		_tmp0_ = TRUE;
1051 	} else {
1052 		_tmp0_ = c == ((gunichar) '\t');
1053 	}
1054 	result = _tmp0_;
1055 	return result;
1056 }
1057 
1058 static inline gboolean
valadoc_gtkdoc_scanner_space_or_newline(ValadocGtkdocScanner * self,gunichar c)1059 valadoc_gtkdoc_scanner_space_or_newline (ValadocGtkdocScanner* self,
1060                                          gunichar c)
1061 {
1062 	gboolean result = FALSE;
1063 	g_return_val_if_fail (self != NULL, FALSE);
1064 	if (c == ((gunichar) '\n')) {
1065 		gint _tmp0_;
1066 		_tmp0_ = self->priv->line;
1067 		self->priv->line = _tmp0_ + 1;
1068 		self->priv->column = 0;
1069 		result = TRUE;
1070 		return result;
1071 	}
1072 	result = valadoc_gtkdoc_scanner_space (self, c);
1073 	return result;
1074 }
1075 
1076 static inline gint
valadoc_gtkdoc_scanner_offset(ValadocGtkdocScanner * self,const gchar * a,const gchar * b)1077 valadoc_gtkdoc_scanner_offset (ValadocGtkdocScanner* self,
1078                                const gchar* a,
1079                                const gchar* b)
1080 {
1081 	gint result = 0;
1082 	g_return_val_if_fail (self != NULL, 0);
1083 	g_return_val_if_fail (a != NULL, 0);
1084 	g_return_val_if_fail (b != NULL, 0);
1085 	result = (gint) (((gchar*) a) - ((gchar*) b));
1086 	return result;
1087 }
1088 
1089 static inline gint
valadoc_gtkdoc_scanner_vararg_prefix(ValadocGtkdocScanner * self)1090 valadoc_gtkdoc_scanner_vararg_prefix (ValadocGtkdocScanner* self)
1091 {
1092 	const gchar* _tmp0_;
1093 	gint result = 0;
1094 	g_return_val_if_fail (self != NULL, 0);
1095 	_tmp0_ = self->priv->pos;
1096 	if (g_str_has_prefix (_tmp0_, "...")) {
1097 		valadoc_gtkdoc_scanner_next_char (self);
1098 		valadoc_gtkdoc_scanner_next_char (self);
1099 		valadoc_gtkdoc_scanner_next_char (self);
1100 		result = 3;
1101 		return result;
1102 	}
1103 	result = 0;
1104 	return result;
1105 }
1106 
1107 static inline gint
valadoc_gtkdoc_scanner_id_prefix(ValadocGtkdocScanner * self)1108 valadoc_gtkdoc_scanner_id_prefix (ValadocGtkdocScanner* self)
1109 {
1110 	gunichar c = 0U;
1111 	gboolean _tmp0_ = FALSE;
1112 	gint start = 0;
1113 	gint result = 0;
1114 	g_return_val_if_fail (self != NULL, 0);
1115 	c = valadoc_gtkdoc_scanner_get (self);
1116 	if (!valadoc_gtkdoc_scanner_letter (self, c)) {
1117 		_tmp0_ = c != ((gunichar) '_');
1118 	} else {
1119 		_tmp0_ = FALSE;
1120 	}
1121 	if (_tmp0_) {
1122 		result = 0;
1123 		return result;
1124 	}
1125 	start = self->priv->column;
1126 	while (TRUE) {
1127 		gboolean _tmp1_ = FALSE;
1128 		c = valadoc_gtkdoc_scanner_next_char (self);
1129 		if (c == ((gunichar) '_')) {
1130 			_tmp1_ = TRUE;
1131 		} else {
1132 			_tmp1_ = valadoc_gtkdoc_scanner_letter_or_number (self, c);
1133 		}
1134 		if (!_tmp1_) {
1135 			break;
1136 		}
1137 	}
1138 	result = self->priv->column - start;
1139 	return result;
1140 }
1141 
1142 static inline gint
valadoc_gtkdoc_scanner_g_id_prefix(ValadocGtkdocScanner * self)1143 valadoc_gtkdoc_scanner_g_id_prefix (ValadocGtkdocScanner* self)
1144 {
1145 	const gchar* start = NULL;
1146 	const gchar* _tmp0_;
1147 	gunichar c = 0U;
1148 	const gchar* _tmp3_;
1149 	const gchar* _tmp4_;
1150 	gint result = 0;
1151 	g_return_val_if_fail (self != NULL, 0);
1152 	_tmp0_ = self->priv->pos;
1153 	start = _tmp0_;
1154 	c = valadoc_gtkdoc_scanner_get (self);
1155 	if (!valadoc_gtkdoc_scanner_letter (self, c)) {
1156 		result = 0;
1157 		return result;
1158 	}
1159 	while (TRUE) {
1160 		gboolean _tmp1_ = FALSE;
1161 		gboolean _tmp2_ = FALSE;
1162 		c = valadoc_gtkdoc_scanner_next_char (self);
1163 		if (c == ((gunichar) '_')) {
1164 			_tmp2_ = TRUE;
1165 		} else {
1166 			_tmp2_ = c == ((gunichar) '-');
1167 		}
1168 		if (_tmp2_) {
1169 			_tmp1_ = TRUE;
1170 		} else {
1171 			_tmp1_ = valadoc_gtkdoc_scanner_letter_or_number (self, c);
1172 		}
1173 		if (!_tmp1_) {
1174 			break;
1175 		}
1176 	}
1177 	_tmp3_ = self->priv->pos;
1178 	_tmp4_ = start;
1179 	result = valadoc_gtkdoc_scanner_offset (self, _tmp3_, _tmp4_);
1180 	return result;
1181 }
1182 
1183 static inline gint
valadoc_gtkdoc_scanner_skip_spaces_and_newlines(ValadocGtkdocScanner * self)1184 valadoc_gtkdoc_scanner_skip_spaces_and_newlines (ValadocGtkdocScanner* self)
1185 {
1186 	const gchar* start = NULL;
1187 	const gchar* _tmp0_;
1188 	const gchar* _tmp1_;
1189 	const gchar* _tmp2_;
1190 	gint result = 0;
1191 	g_return_val_if_fail (self != NULL, 0);
1192 	_tmp0_ = self->priv->pos;
1193 	start = _tmp0_;
1194 	if (valadoc_gtkdoc_scanner_space_or_newline (self, valadoc_gtkdoc_scanner_get (self))) {
1195 		while (TRUE) {
1196 			if (!valadoc_gtkdoc_scanner_space_or_newline (self, valadoc_gtkdoc_scanner_next_char (self))) {
1197 				break;
1198 			}
1199 		}
1200 	}
1201 	_tmp1_ = self->priv->pos;
1202 	_tmp2_ = start;
1203 	result = valadoc_gtkdoc_scanner_offset (self, _tmp1_, _tmp2_);
1204 	return result;
1205 }
1206 
1207 static glong
string_strnlen(gchar * str,glong maxlen)1208 string_strnlen (gchar* str,
1209                 glong maxlen)
1210 {
1211 	gchar* end = NULL;
1212 	gchar* _tmp0_;
1213 	gchar* _tmp1_;
1214 	glong result = 0L;
1215 	_tmp0_ = memchr (str, 0, (gsize) maxlen);
1216 	end = _tmp0_;
1217 	_tmp1_ = end;
1218 	if (_tmp1_ == NULL) {
1219 		result = maxlen;
1220 		return result;
1221 	} else {
1222 		gchar* _tmp2_;
1223 		_tmp2_ = end;
1224 		result = (glong) (_tmp2_ - str);
1225 		return result;
1226 	}
1227 }
1228 
1229 static gchar*
string_substring(const gchar * self,glong offset,glong len)1230 string_substring (const gchar* self,
1231                   glong offset,
1232                   glong len)
1233 {
1234 	glong string_length = 0L;
1235 	gboolean _tmp0_ = FALSE;
1236 	gchar* _tmp3_;
1237 	gchar* result = NULL;
1238 	g_return_val_if_fail (self != NULL, NULL);
1239 	if (offset >= ((glong) 0)) {
1240 		_tmp0_ = len >= ((glong) 0);
1241 	} else {
1242 		_tmp0_ = FALSE;
1243 	}
1244 	if (_tmp0_) {
1245 		string_length = string_strnlen ((gchar*) self, offset + len);
1246 	} else {
1247 		gint _tmp1_;
1248 		gint _tmp2_;
1249 		_tmp1_ = strlen (self);
1250 		_tmp2_ = _tmp1_;
1251 		string_length = (glong) _tmp2_;
1252 	}
1253 	if (offset < ((glong) 0)) {
1254 		offset = string_length + offset;
1255 		g_return_val_if_fail (offset >= ((glong) 0), NULL);
1256 	} else {
1257 		g_return_val_if_fail (offset <= string_length, NULL);
1258 	}
1259 	if (len < ((glong) 0)) {
1260 		len = string_length - offset;
1261 	}
1262 	g_return_val_if_fail ((offset + len) <= string_length, NULL);
1263 	_tmp3_ = g_strndup (((gchar*) self) + offset, (gsize) len);
1264 	result = _tmp3_;
1265 	return result;
1266 }
1267 
1268 static inline ValadocGtkdocToken*
valadoc_gtkdoc_scanner_function_prefix(ValadocGtkdocScanner * self)1269 valadoc_gtkdoc_scanner_function_prefix (ValadocGtkdocScanner* self)
1270 {
1271 	const gchar* start = NULL;
1272 	const gchar* _tmp0_;
1273 	gint column_start = 0;
1274 	gint id_len = 0;
1275 	ValadocGtkdocToken* _tmp1_;
1276 	ValadocGtkdocToken* _tmp2_;
1277 	ValadocGtkdocToken* _tmp4_;
1278 	ValadocGtkdocToken* _tmp5_;
1279 	const gchar* _tmp7_;
1280 	gchar* _tmp8_;
1281 	gchar* _tmp9_;
1282 	const gchar* _tmp10_;
1283 	const gchar* _tmp11_;
1284 	const gchar* _tmp12_;
1285 	ValadocGtkdocToken* _tmp13_;
1286 	ValadocGtkdocToken* _tmp14_;
1287 	ValadocGtkdocToken* result = NULL;
1288 	g_return_val_if_fail (self != NULL, NULL);
1289 	_tmp0_ = self->priv->pos;
1290 	start = _tmp0_;
1291 	column_start = self->priv->column;
1292 	id_len = 0;
1293 	id_len = valadoc_gtkdoc_scanner_id_prefix (self);
1294 	if (id_len == 0) {
1295 		result = NULL;
1296 		return result;
1297 	}
1298 	_tmp1_ = valadoc_gtkdoc_scanner_space_prefix (self);
1299 	_tmp2_ = _tmp1_;
1300 	_valadoc_gtkdoc_token_unref0 (_tmp2_);
1301 	if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) '(')) {
1302 		const gchar* _tmp3_;
1303 		self->priv->column = column_start;
1304 		_tmp3_ = start;
1305 		self->priv->pos = _tmp3_;
1306 		result = NULL;
1307 		return result;
1308 	}
1309 	valadoc_gtkdoc_scanner_next_char (self);
1310 	_tmp4_ = valadoc_gtkdoc_scanner_space_prefix (self);
1311 	_tmp5_ = _tmp4_;
1312 	_valadoc_gtkdoc_token_unref0 (_tmp5_);
1313 	if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) ')')) {
1314 		const gchar* _tmp6_;
1315 		self->priv->column = column_start;
1316 		_tmp6_ = start;
1317 		self->priv->pos = _tmp6_;
1318 		result = NULL;
1319 		return result;
1320 	}
1321 	valadoc_gtkdoc_scanner_next_char (self);
1322 	_tmp7_ = start;
1323 	_tmp8_ = string_substring (_tmp7_, (glong) 0, (glong) id_len);
1324 	_tmp9_ = _tmp8_;
1325 	_tmp10_ = start;
1326 	_tmp11_ = self->priv->pos;
1327 	_tmp12_ = start;
1328 	_tmp13_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_FUNCTION, _tmp9_, NULL, _tmp10_, valadoc_gtkdoc_scanner_offset (self, _tmp11_, _tmp12_), self->priv->line, column_start, self->priv->column);
1329 	_tmp14_ = _tmp13_;
1330 	_g_free0 (_tmp9_);
1331 	result = _tmp14_;
1332 	return result;
1333 }
1334 
1335 static inline ValadocGtkdocToken*
valadoc_gtkdoc_scanner_gtkdoc_symbolic_link_prefix(ValadocGtkdocScanner * self,gunichar c,ValadocGtkdocTokenType type)1336 valadoc_gtkdoc_scanner_gtkdoc_symbolic_link_prefix (ValadocGtkdocScanner* self,
1337                                                     gunichar c,
1338                                                     ValadocGtkdocTokenType type)
1339 {
1340 	const gchar* start = NULL;
1341 	const gchar* _tmp0_;
1342 	gint column_start = 0;
1343 	gint id_len = 0;
1344 	const gchar* separator = NULL;
1345 	const gchar* _tmp3_;
1346 	const gchar* _tmp18_;
1347 	gchar* _tmp19_;
1348 	gchar* _tmp20_;
1349 	const gchar* _tmp21_;
1350 	const gchar* _tmp22_;
1351 	const gchar* _tmp23_;
1352 	ValadocGtkdocToken* _tmp24_;
1353 	ValadocGtkdocToken* _tmp25_;
1354 	ValadocGtkdocToken* result = NULL;
1355 	g_return_val_if_fail (self != NULL, NULL);
1356 	if (valadoc_gtkdoc_scanner_get (self) != c) {
1357 		result = NULL;
1358 		return result;
1359 	}
1360 	_tmp0_ = self->priv->pos;
1361 	start = _tmp0_;
1362 	column_start = self->priv->column;
1363 	valadoc_gtkdoc_scanner_next_char (self);
1364 	id_len = 0;
1365 	id_len = valadoc_gtkdoc_scanner_id_prefix (self);
1366 	if (id_len == 0) {
1367 		gboolean _tmp1_ = FALSE;
1368 		if (type == VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PARAM) {
1369 			id_len = valadoc_gtkdoc_scanner_vararg_prefix (self);
1370 			_tmp1_ = id_len == 0;
1371 		} else {
1372 			_tmp1_ = FALSE;
1373 		}
1374 		if (_tmp1_) {
1375 			const gchar* _tmp2_;
1376 			self->priv->column = column_start;
1377 			_tmp2_ = start;
1378 			self->priv->pos = _tmp2_;
1379 			result = NULL;
1380 			return result;
1381 		}
1382 	}
1383 	_tmp3_ = self->priv->pos;
1384 	separator = _tmp3_;
1385 	if (valadoc_gtkdoc_scanner_get (self) == ((gunichar) ':')) {
1386 		gint separator_len = 0;
1387 		gint id_len2 = 0;
1388 		separator_len = 1;
1389 		if (valadoc_gtkdoc_scanner_next_char (self) == ((gunichar) ':')) {
1390 			gint _tmp4_;
1391 			valadoc_gtkdoc_scanner_next_char (self);
1392 			_tmp4_ = separator_len;
1393 			separator_len = _tmp4_ + 1;
1394 		}
1395 		id_len2 = valadoc_gtkdoc_scanner_g_id_prefix (self);
1396 		if (id_len2 == 0) {
1397 			const gchar* _tmp5_;
1398 			_tmp5_ = separator;
1399 			self->priv->pos = _tmp5_;
1400 		} else {
1401 			id_len += id_len2 + separator_len;
1402 		}
1403 	} else {
1404 		gboolean _tmp6_ = FALSE;
1405 		const gchar* _tmp7_;
1406 		_tmp7_ = self->priv->pos;
1407 		if (g_str_has_prefix (_tmp7_, "->")) {
1408 			_tmp6_ = TRUE;
1409 		} else {
1410 			const gchar* _tmp8_;
1411 			_tmp8_ = self->priv->pos;
1412 			_tmp6_ = g_str_has_prefix (_tmp8_, ".");
1413 		}
1414 		if (_tmp6_) {
1415 			const gchar* sep_start = NULL;
1416 			const gchar* _tmp9_;
1417 			gint sep_column_start = 0;
1418 			gint separator_len = 0;
1419 			const gchar* _tmp10_;
1420 			ValadocGtkdocToken* func_token = NULL;
1421 			ValadocGtkdocToken* _tmp11_;
1422 			ValadocGtkdocToken* _tmp12_;
1423 			_tmp9_ = self->priv->pos;
1424 			sep_start = _tmp9_;
1425 			sep_column_start = self->priv->column;
1426 			separator_len = 1;
1427 			_tmp10_ = self->priv->pos;
1428 			if (g_str_has_prefix (_tmp10_, "->")) {
1429 				separator_len = 2;
1430 				valadoc_gtkdoc_scanner_next_char (self);
1431 			}
1432 			valadoc_gtkdoc_scanner_next_char (self);
1433 			_tmp11_ = valadoc_gtkdoc_scanner_function_prefix (self);
1434 			func_token = _tmp11_;
1435 			_tmp12_ = func_token;
1436 			if (_tmp12_ == NULL) {
1437 				gint id_len2 = 0;
1438 				id_len2 = valadoc_gtkdoc_scanner_id_prefix (self);
1439 				if (id_len2 > 0) {
1440 					id_len += separator_len + id_len2;
1441 				} else {
1442 					const gchar* _tmp13_;
1443 					self->priv->column = sep_column_start;
1444 					_tmp13_ = sep_start;
1445 					self->priv->pos = _tmp13_;
1446 				}
1447 			} else {
1448 				ValadocGtkdocToken* _tmp14_;
1449 				const gchar* _tmp15_;
1450 				gint _tmp16_;
1451 				gint _tmp17_;
1452 				_tmp14_ = func_token;
1453 				_tmp15_ = _tmp14_->content;
1454 				_tmp16_ = strlen (_tmp15_);
1455 				_tmp17_ = _tmp16_;
1456 				id_len += separator_len + _tmp17_;
1457 			}
1458 			_valadoc_gtkdoc_token_unref0 (func_token);
1459 		}
1460 	}
1461 	_tmp18_ = start;
1462 	_tmp19_ = string_substring (_tmp18_, (glong) 1, (glong) id_len);
1463 	_tmp20_ = _tmp19_;
1464 	_tmp21_ = start;
1465 	_tmp22_ = self->priv->pos;
1466 	_tmp23_ = start;
1467 	_tmp24_ = valadoc_gtkdoc_token_new (type, _tmp20_, NULL, _tmp21_, valadoc_gtkdoc_scanner_offset (self, _tmp22_, _tmp23_), self->priv->line, column_start, self->priv->column);
1468 	_tmp25_ = _tmp24_;
1469 	_g_free0 (_tmp20_);
1470 	result = _tmp25_;
1471 	return result;
1472 }
1473 
1474 static inline ValadocGtkdocToken*
valadoc_gtkdoc_scanner_gtkdoc_property_prefix(ValadocGtkdocScanner * self)1475 valadoc_gtkdoc_scanner_gtkdoc_property_prefix (ValadocGtkdocScanner* self)
1476 {
1477 	const gchar* start = NULL;
1478 	const gchar* _tmp0_;
1479 	gint column_start = 0;
1480 	gint id_len = 0;
1481 	const gchar* _tmp2_;
1482 	gchar* _tmp3_;
1483 	gchar* _tmp4_;
1484 	const gchar* _tmp5_;
1485 	const gchar* _tmp6_;
1486 	const gchar* _tmp7_;
1487 	ValadocGtkdocToken* _tmp8_;
1488 	ValadocGtkdocToken* _tmp9_;
1489 	ValadocGtkdocToken* result = NULL;
1490 	g_return_val_if_fail (self != NULL, NULL);
1491 	if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) ':')) {
1492 		result = NULL;
1493 		return result;
1494 	}
1495 	_tmp0_ = self->priv->pos;
1496 	start = _tmp0_;
1497 	column_start = self->priv->column;
1498 	valadoc_gtkdoc_scanner_next_char (self);
1499 	id_len = 0;
1500 	id_len = valadoc_gtkdoc_scanner_g_id_prefix (self);
1501 	if (id_len == 0) {
1502 		const gchar* _tmp1_;
1503 		self->priv->column = column_start;
1504 		_tmp1_ = start;
1505 		self->priv->pos = _tmp1_;
1506 		result = NULL;
1507 		return result;
1508 	}
1509 	_tmp2_ = start;
1510 	_tmp3_ = string_substring (_tmp2_, (glong) 1, (glong) id_len);
1511 	_tmp4_ = _tmp3_;
1512 	_tmp5_ = start;
1513 	_tmp6_ = self->priv->pos;
1514 	_tmp7_ = start;
1515 	_tmp8_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PROPERTY, _tmp4_, NULL, _tmp5_, valadoc_gtkdoc_scanner_offset (self, _tmp6_, _tmp7_), self->priv->line, column_start, self->priv->column);
1516 	_tmp9_ = _tmp8_;
1517 	_g_free0 (_tmp4_);
1518 	result = _tmp9_;
1519 	return result;
1520 }
1521 
1522 static inline ValadocGtkdocToken*
valadoc_gtkdoc_scanner_gtkdoc_signal_prefix(ValadocGtkdocScanner * self)1523 valadoc_gtkdoc_scanner_gtkdoc_signal_prefix (ValadocGtkdocScanner* self)
1524 {
1525 	const gchar* start = NULL;
1526 	const gchar* _tmp0_;
1527 	gint column_start = 0;
1528 	const gchar* _tmp2_;
1529 	gint id_len = 0;
1530 	const gchar* _tmp4_;
1531 	gchar* _tmp5_;
1532 	gchar* _tmp6_;
1533 	const gchar* _tmp7_;
1534 	const gchar* _tmp8_;
1535 	const gchar* _tmp9_;
1536 	ValadocGtkdocToken* _tmp10_;
1537 	ValadocGtkdocToken* _tmp11_;
1538 	ValadocGtkdocToken* result = NULL;
1539 	g_return_val_if_fail (self != NULL, NULL);
1540 	if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) ':')) {
1541 		result = NULL;
1542 		return result;
1543 	}
1544 	_tmp0_ = self->priv->pos;
1545 	start = _tmp0_;
1546 	column_start = self->priv->column;
1547 	if (valadoc_gtkdoc_scanner_next_char (self) != ((gunichar) ':')) {
1548 		const gchar* _tmp1_;
1549 		self->priv->column = column_start;
1550 		_tmp1_ = start;
1551 		self->priv->pos = _tmp1_;
1552 		result = NULL;
1553 		return result;
1554 	}
1555 	_tmp2_ = self->priv->pos;
1556 	start = _tmp2_;
1557 	valadoc_gtkdoc_scanner_next_char (self);
1558 	id_len = 0;
1559 	id_len = valadoc_gtkdoc_scanner_g_id_prefix (self);
1560 	if (id_len == 0) {
1561 		const gchar* _tmp3_;
1562 		self->priv->column = column_start;
1563 		_tmp3_ = start;
1564 		self->priv->pos = _tmp3_;
1565 		result = NULL;
1566 		return result;
1567 	}
1568 	_tmp4_ = start;
1569 	_tmp5_ = string_substring (_tmp4_, (glong) 1, (glong) id_len);
1570 	_tmp6_ = _tmp5_;
1571 	_tmp7_ = start;
1572 	_tmp8_ = self->priv->pos;
1573 	_tmp9_ = start;
1574 	_tmp10_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SIGNAL, _tmp6_, NULL, _tmp7_, valadoc_gtkdoc_scanner_offset (self, _tmp8_, _tmp9_), self->priv->line, column_start, self->priv->column);
1575 	_tmp11_ = _tmp10_;
1576 	_g_free0 (_tmp6_);
1577 	result = _tmp11_;
1578 	return result;
1579 }
1580 
1581 static inline ValadocGtkdocToken*
valadoc_gtkdoc_scanner_gtkdoc_const_prefix(ValadocGtkdocScanner * self)1582 valadoc_gtkdoc_scanner_gtkdoc_const_prefix (ValadocGtkdocScanner* self)
1583 {
1584 	ValadocGtkdocToken* _tmp0_;
1585 	ValadocGtkdocToken* result = NULL;
1586 	g_return_val_if_fail (self != NULL, NULL);
1587 	_tmp0_ = valadoc_gtkdoc_scanner_gtkdoc_symbolic_link_prefix (self, (gunichar) '%', VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_CONST);
1588 	result = _tmp0_;
1589 	return result;
1590 }
1591 
1592 static inline ValadocGtkdocToken*
valadoc_gtkdoc_scanner_gtkdoc_param_prefix(ValadocGtkdocScanner * self)1593 valadoc_gtkdoc_scanner_gtkdoc_param_prefix (ValadocGtkdocScanner* self)
1594 {
1595 	ValadocGtkdocToken* _tmp0_;
1596 	ValadocGtkdocToken* result = NULL;
1597 	g_return_val_if_fail (self != NULL, NULL);
1598 	_tmp0_ = valadoc_gtkdoc_scanner_gtkdoc_symbolic_link_prefix (self, (gunichar) '@', VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PARAM);
1599 	result = _tmp0_;
1600 	return result;
1601 }
1602 
1603 static inline ValadocGtkdocToken*
valadoc_gtkdoc_scanner_gtkdoc_type_prefix(ValadocGtkdocScanner * self)1604 valadoc_gtkdoc_scanner_gtkdoc_type_prefix (ValadocGtkdocScanner* self)
1605 {
1606 	ValadocGtkdocToken* _tmp0_;
1607 	ValadocGtkdocToken* result = NULL;
1608 	g_return_val_if_fail (self != NULL, NULL);
1609 	_tmp0_ = valadoc_gtkdoc_scanner_gtkdoc_symbolic_link_prefix (self, (gunichar) '#', VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_TYPE);
1610 	result = _tmp0_;
1611 	return result;
1612 }
1613 
1614 static inline ValadocGtkdocToken*
valadoc_gtkdoc_scanner_xml_prefix(ValadocGtkdocScanner * self)1615 valadoc_gtkdoc_scanner_xml_prefix (ValadocGtkdocScanner* self)
1616 {
1617 	const gchar* start = NULL;
1618 	const gchar* _tmp0_;
1619 	gint line_start = 0;
1620 	gint column_start = 0;
1621 	gboolean close = FALSE;
1622 	const gchar* id_start = NULL;
1623 	const gchar* _tmp26_;
1624 	gint id_len = 0;
1625 	ValaHashMap* map = NULL;
1626 	GHashFunc _tmp28_;
1627 	GEqualFunc _tmp29_;
1628 	GEqualFunc _tmp30_;
1629 	ValaHashMap* _tmp31_;
1630 	gboolean open_and_close = FALSE;
1631 	gboolean _tmp47_ = FALSE;
1632 	ValadocGtkdocToken* result = NULL;
1633 	g_return_val_if_fail (self != NULL, NULL);
1634 	if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) '<')) {
1635 		result = NULL;
1636 		return result;
1637 	}
1638 	_tmp0_ = self->priv->pos;
1639 	start = _tmp0_;
1640 	line_start = self->priv->line;
1641 	column_start = self->priv->column;
1642 	valadoc_gtkdoc_scanner_next_char (self);
1643 	if (valadoc_gtkdoc_scanner_get (self) == ((gunichar) '!')) {
1644 		const gchar* _tmp25_;
1645 		if (valadoc_gtkdoc_scanner_next_char (self) == ((gunichar) '-')) {
1646 			if (valadoc_gtkdoc_scanner_next_char (self) != ((gunichar) '-')) {
1647 				const gchar* _tmp1_;
1648 				self->priv->column = column_start;
1649 				_tmp1_ = start;
1650 				self->priv->pos = _tmp1_;
1651 				result = NULL;
1652 				return result;
1653 			}
1654 			{
1655 				gunichar c = 0U;
1656 				c = valadoc_gtkdoc_scanner_next_char (self);
1657 				{
1658 					gboolean _tmp2_ = FALSE;
1659 					_tmp2_ = TRUE;
1660 					while (TRUE) {
1661 						if (!_tmp2_) {
1662 							c = valadoc_gtkdoc_scanner_next_char (self);
1663 						}
1664 						_tmp2_ = FALSE;
1665 						if (!(c != ((gunichar) '\0'))) {
1666 							break;
1667 						}
1668 						if (c == ((gunichar) '\n')) {
1669 							gint _tmp3_;
1670 							_tmp3_ = self->priv->line;
1671 							self->priv->line = _tmp3_ + 1;
1672 							self->priv->column = 0;
1673 						} else {
1674 							const gchar* _tmp4_;
1675 							_tmp4_ = self->priv->pos;
1676 							if (g_str_has_prefix (_tmp4_, "-->")) {
1677 								const gchar* _tmp5_;
1678 								const gchar* _tmp6_;
1679 								const gchar* _tmp7_;
1680 								ValadocGtkdocToken* _tmp8_;
1681 								valadoc_gtkdoc_scanner_next_char (self);
1682 								valadoc_gtkdoc_scanner_next_char (self);
1683 								valadoc_gtkdoc_scanner_next_char (self);
1684 								_tmp5_ = start;
1685 								_tmp6_ = self->priv->pos;
1686 								_tmp7_ = start;
1687 								_tmp8_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_XML_COMMENT, "", NULL, _tmp5_, valadoc_gtkdoc_scanner_offset (self, _tmp6_, _tmp7_), self->priv->line, column_start, self->priv->column);
1688 								result = _tmp8_;
1689 								return result;
1690 							}
1691 						}
1692 					}
1693 				}
1694 			}
1695 		} else {
1696 			const gchar* _tmp9_;
1697 			_tmp9_ = self->priv->pos;
1698 			if (g_str_has_prefix (_tmp9_, "[CDATA[")) {
1699 				valadoc_gtkdoc_scanner_next_char (self);
1700 				valadoc_gtkdoc_scanner_next_char (self);
1701 				valadoc_gtkdoc_scanner_next_char (self);
1702 				valadoc_gtkdoc_scanner_next_char (self);
1703 				valadoc_gtkdoc_scanner_next_char (self);
1704 				valadoc_gtkdoc_scanner_next_char (self);
1705 				{
1706 					gunichar c = 0U;
1707 					c = valadoc_gtkdoc_scanner_next_char (self);
1708 					{
1709 						gboolean _tmp10_ = FALSE;
1710 						_tmp10_ = TRUE;
1711 						while (TRUE) {
1712 							if (!_tmp10_) {
1713 								c = valadoc_gtkdoc_scanner_next_char (self);
1714 							}
1715 							_tmp10_ = FALSE;
1716 							if (!(c != ((gunichar) '\0'))) {
1717 								break;
1718 							}
1719 							if (c == ((gunichar) '\n')) {
1720 								gint _tmp11_;
1721 								_tmp11_ = self->priv->line;
1722 								self->priv->line = _tmp11_ + 1;
1723 								self->priv->column = 0;
1724 							} else {
1725 								const gchar* _tmp12_;
1726 								_tmp12_ = self->priv->pos;
1727 								if (g_str_has_prefix (_tmp12_, "]]>")) {
1728 									gchar* content = NULL;
1729 									const gchar* _tmp13_;
1730 									const gchar* _tmp14_;
1731 									const gchar* _tmp15_;
1732 									gchar* _tmp16_;
1733 									const gchar* _tmp17_;
1734 									gchar* _tmp18_;
1735 									gchar* _tmp19_;
1736 									const gchar* _tmp20_;
1737 									const gchar* _tmp21_;
1738 									const gchar* _tmp22_;
1739 									ValadocGtkdocToken* _tmp23_;
1740 									ValadocGtkdocToken* _tmp24_;
1741 									_tmp13_ = start;
1742 									_tmp14_ = self->priv->pos;
1743 									_tmp15_ = start;
1744 									_tmp16_ = string_substring (_tmp13_, (glong) 9, (glong) (valadoc_gtkdoc_scanner_offset (self, _tmp14_, _tmp15_) - 9));
1745 									content = _tmp16_;
1746 									valadoc_gtkdoc_scanner_next_char (self);
1747 									valadoc_gtkdoc_scanner_next_char (self);
1748 									valadoc_gtkdoc_scanner_next_char (self);
1749 									_tmp17_ = content;
1750 									_tmp18_ = valadoc_gtkdoc_scanner_unescape (_tmp17_);
1751 									_tmp19_ = _tmp18_;
1752 									_tmp20_ = start;
1753 									_tmp21_ = self->priv->pos;
1754 									_tmp22_ = start;
1755 									_tmp23_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_WORD, _tmp19_, NULL, _tmp20_, valadoc_gtkdoc_scanner_offset (self, _tmp21_, _tmp22_), self->priv->line, column_start, self->priv->column);
1756 									_tmp24_ = _tmp23_;
1757 									_g_free0 (_tmp19_);
1758 									result = _tmp24_;
1759 									_g_free0 (content);
1760 									return result;
1761 								}
1762 							}
1763 						}
1764 					}
1765 				}
1766 			}
1767 		}
1768 		_tmp25_ = start;
1769 		self->priv->pos = _tmp25_;
1770 		self->priv->column = column_start;
1771 		self->priv->line = line_start;
1772 		result = NULL;
1773 		return result;
1774 	}
1775 	close = FALSE;
1776 	if (valadoc_gtkdoc_scanner_get (self) == ((gunichar) '/')) {
1777 		valadoc_gtkdoc_scanner_next_char (self);
1778 		close = TRUE;
1779 	}
1780 	_tmp26_ = self->priv->pos;
1781 	id_start = _tmp26_;
1782 	id_len = 0;
1783 	id_len = valadoc_gtkdoc_scanner_id_prefix (self);
1784 	if (id_len == 0) {
1785 		const gchar* _tmp27_;
1786 		self->priv->column = column_start;
1787 		_tmp27_ = start;
1788 		self->priv->pos = _tmp27_;
1789 		result = NULL;
1790 		return result;
1791 	}
1792 	_tmp28_ = g_str_hash;
1793 	_tmp29_ = g_str_equal;
1794 	_tmp30_ = g_direct_equal;
1795 	_tmp31_ = vala_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, _tmp28_, _tmp29_, _tmp30_);
1796 	map = _tmp31_;
1797 	while (TRUE) {
1798 		gboolean _tmp32_ = FALSE;
1799 		gchar* name = NULL;
1800 		gchar* val = NULL;
1801 		const gchar* att_pos = NULL;
1802 		const gchar* _tmp33_;
1803 		gint att_id_len = 0;
1804 		const gchar* _tmp34_;
1805 		gchar* _tmp35_;
1806 		gunichar c = 0U;
1807 		const gchar* _tmp36_;
1808 		const gchar* _tmp40_;
1809 		const gchar* _tmp41_;
1810 		const gchar* _tmp42_;
1811 		gchar* _tmp43_;
1812 		ValaHashMap* _tmp44_;
1813 		const gchar* _tmp45_;
1814 		const gchar* _tmp46_;
1815 		if (close == FALSE) {
1816 			_tmp32_ = valadoc_gtkdoc_scanner_skip_spaces_and_newlines (self) > 0;
1817 		} else {
1818 			_tmp32_ = FALSE;
1819 		}
1820 		if (!_tmp32_) {
1821 			break;
1822 		}
1823 		_tmp33_ = self->priv->pos;
1824 		att_pos = _tmp33_;
1825 		att_id_len = 0;
1826 		att_id_len = valadoc_gtkdoc_scanner_id_prefix (self);
1827 		if (att_id_len == 0) {
1828 			_g_free0 (val);
1829 			_g_free0 (name);
1830 			break;
1831 		}
1832 		_tmp34_ = att_pos;
1833 		_tmp35_ = string_substring (_tmp34_, (glong) 0, (glong) att_id_len);
1834 		_g_free0 (name);
1835 		name = _tmp35_;
1836 		if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) '=')) {
1837 			_g_free0 (val);
1838 			_g_free0 (name);
1839 			break;
1840 		}
1841 		valadoc_gtkdoc_scanner_next_char (self);
1842 		valadoc_gtkdoc_scanner_skip_spaces_and_newlines (self);
1843 		if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) '"')) {
1844 			_g_free0 (val);
1845 			_g_free0 (name);
1846 			break;
1847 		}
1848 		c = valadoc_gtkdoc_scanner_next_char (self);
1849 		_tmp36_ = self->priv->pos;
1850 		att_pos = _tmp36_;
1851 		{
1852 			gboolean _tmp37_ = FALSE;
1853 			_tmp37_ = TRUE;
1854 			while (TRUE) {
1855 				gboolean _tmp38_ = FALSE;
1856 				gboolean _tmp39_ = FALSE;
1857 				if (!_tmp37_) {
1858 					c = valadoc_gtkdoc_scanner_next_char (self);
1859 				}
1860 				_tmp37_ = FALSE;
1861 				if (c != ((gunichar) '\0')) {
1862 					_tmp39_ = c != ((gunichar) '\n');
1863 				} else {
1864 					_tmp39_ = FALSE;
1865 				}
1866 				if (_tmp39_) {
1867 					_tmp38_ = c != ((gunichar) '"');
1868 				} else {
1869 					_tmp38_ = FALSE;
1870 				}
1871 				if (!_tmp38_) {
1872 					break;
1873 				}
1874 			}
1875 		}
1876 		_tmp40_ = att_pos;
1877 		_tmp41_ = self->priv->pos;
1878 		_tmp42_ = att_pos;
1879 		_tmp43_ = string_substring (_tmp40_, (glong) 0, (glong) valadoc_gtkdoc_scanner_offset (self, _tmp41_, _tmp42_));
1880 		_g_free0 (val);
1881 		val = _tmp43_;
1882 		if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) '"')) {
1883 			_g_free0 (val);
1884 			_g_free0 (name);
1885 			break;
1886 		}
1887 		valadoc_gtkdoc_scanner_next_char (self);
1888 		_tmp44_ = map;
1889 		_tmp45_ = name;
1890 		_tmp46_ = val;
1891 		vala_map_set ((ValaMap*) _tmp44_, _tmp45_, _tmp46_);
1892 		_g_free0 (val);
1893 		_g_free0 (name);
1894 	}
1895 	valadoc_gtkdoc_scanner_skip_spaces_and_newlines (self);
1896 	open_and_close = FALSE;
1897 	if (!close) {
1898 		_tmp47_ = valadoc_gtkdoc_scanner_get (self) == ((gunichar) '/');
1899 	} else {
1900 		_tmp47_ = FALSE;
1901 	}
1902 	if (_tmp47_) {
1903 		open_and_close = TRUE;
1904 		valadoc_gtkdoc_scanner_next_char (self);
1905 	}
1906 	if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) '>')) {
1907 		const gchar* _tmp48_;
1908 		self->priv->line = line_start;
1909 		self->priv->column = column_start;
1910 		_tmp48_ = start;
1911 		self->priv->pos = _tmp48_;
1912 		result = NULL;
1913 		_vala_map_unref0 (map);
1914 		return result;
1915 	}
1916 	valadoc_gtkdoc_scanner_next_char (self);
1917 	if (open_and_close) {
1918 		const gchar* _tmp49_;
1919 		gchar* _tmp50_;
1920 		gchar* _tmp51_;
1921 		const gchar* _tmp52_;
1922 		const gchar* _tmp53_;
1923 		const gchar* _tmp54_;
1924 		ValadocGtkdocToken* _tmp55_;
1925 		_tmp49_ = id_start;
1926 		_tmp50_ = string_substring (_tmp49_, (glong) 0, (glong) id_len);
1927 		_tmp51_ = _tmp50_;
1928 		_tmp52_ = start;
1929 		_tmp53_ = self->priv->pos;
1930 		_tmp54_ = start;
1931 		_tmp55_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_XML_CLOSE, _tmp51_, NULL, _tmp52_, valadoc_gtkdoc_scanner_offset (self, _tmp53_, _tmp54_), self->priv->line, column_start, self->priv->column);
1932 		_valadoc_gtkdoc_token_unref0 (self->priv->tmp_token);
1933 		self->priv->tmp_token = _tmp55_;
1934 		_g_free0 (_tmp51_);
1935 	}
1936 	if (close) {
1937 		const gchar* _tmp56_;
1938 		gchar* _tmp57_;
1939 		gchar* _tmp58_;
1940 		const gchar* _tmp59_;
1941 		const gchar* _tmp60_;
1942 		const gchar* _tmp61_;
1943 		ValadocGtkdocToken* _tmp62_;
1944 		ValadocGtkdocToken* _tmp63_;
1945 		_tmp56_ = id_start;
1946 		_tmp57_ = string_substring (_tmp56_, (glong) 0, (glong) id_len);
1947 		_tmp58_ = _tmp57_;
1948 		_tmp59_ = start;
1949 		_tmp60_ = self->priv->pos;
1950 		_tmp61_ = start;
1951 		_tmp62_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_XML_CLOSE, _tmp58_, NULL, _tmp59_, valadoc_gtkdoc_scanner_offset (self, _tmp60_, _tmp61_), self->priv->line, column_start, self->priv->column);
1952 		_tmp63_ = _tmp62_;
1953 		_g_free0 (_tmp58_);
1954 		result = _tmp63_;
1955 		_vala_map_unref0 (map);
1956 		return result;
1957 	} else {
1958 		const gchar* _tmp64_;
1959 		gchar* _tmp65_;
1960 		gchar* _tmp66_;
1961 		ValaHashMap* _tmp67_;
1962 		const gchar* _tmp68_;
1963 		const gchar* _tmp69_;
1964 		const gchar* _tmp70_;
1965 		ValadocGtkdocToken* _tmp71_;
1966 		ValadocGtkdocToken* _tmp72_;
1967 		_tmp64_ = id_start;
1968 		_tmp65_ = string_substring (_tmp64_, (glong) 0, (glong) id_len);
1969 		_tmp66_ = _tmp65_;
1970 		_tmp67_ = map;
1971 		_tmp68_ = start;
1972 		_tmp69_ = self->priv->pos;
1973 		_tmp70_ = start;
1974 		_tmp71_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_XML_OPEN, _tmp66_, _tmp67_, _tmp68_, valadoc_gtkdoc_scanner_offset (self, _tmp69_, _tmp70_), self->priv->line, column_start, self->priv->column);
1975 		_tmp72_ = _tmp71_;
1976 		_g_free0 (_tmp66_);
1977 		result = _tmp72_;
1978 		_vala_map_unref0 (map);
1979 		return result;
1980 	}
1981 	_vala_map_unref0 (map);
1982 }
1983 
1984 static ValadocGtkdocToken*
valadoc_gtkdoc_scanner_newline_prefix(ValadocGtkdocScanner * self)1985 valadoc_gtkdoc_scanner_newline_prefix (ValadocGtkdocScanner* self)
1986 {
1987 	const gchar* start = NULL;
1988 	const gchar* _tmp0_;
1989 	gint _tmp1_;
1990 	ValadocGtkdocToken* result = NULL;
1991 	g_return_val_if_fail (self != NULL, NULL);
1992 	if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) '\n')) {
1993 		result = NULL;
1994 		return result;
1995 	}
1996 	_tmp0_ = self->priv->pos;
1997 	start = _tmp0_;
1998 	_tmp1_ = self->priv->line;
1999 	self->priv->line = _tmp1_ + 1;
2000 	self->priv->column = 0;
2001 	{
2002 		gunichar c = 0U;
2003 		c = valadoc_gtkdoc_scanner_next_char (self);
2004 		{
2005 			gboolean _tmp2_ = FALSE;
2006 			_tmp2_ = TRUE;
2007 			while (TRUE) {
2008 				gboolean _tmp3_ = FALSE;
2009 				if (!_tmp2_) {
2010 					c = valadoc_gtkdoc_scanner_next_char (self);
2011 				}
2012 				_tmp2_ = FALSE;
2013 				if (c == ((gunichar) ' ')) {
2014 					_tmp3_ = TRUE;
2015 				} else {
2016 					_tmp3_ = c == ((gunichar) '\t');
2017 				}
2018 				if (!_tmp3_) {
2019 					break;
2020 				}
2021 			}
2022 		}
2023 	}
2024 	if (valadoc_gtkdoc_scanner_get (self) == ((gunichar) '\n')) {
2025 		gint _tmp4_;
2026 		const gchar* _tmp5_;
2027 		const gchar* _tmp6_;
2028 		const gchar* _tmp7_;
2029 		ValadocGtkdocToken* _tmp8_;
2030 		valadoc_gtkdoc_scanner_next_char (self);
2031 		_tmp4_ = self->priv->line;
2032 		self->priv->line = _tmp4_ + 1;
2033 		self->priv->column = 0;
2034 		_tmp5_ = start;
2035 		_tmp6_ = self->priv->pos;
2036 		_tmp7_ = start;
2037 		_tmp8_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_PARAGRAPH, "\n\n", NULL, _tmp5_, valadoc_gtkdoc_scanner_offset (self, _tmp6_, _tmp7_), self->priv->line, self->priv->column, self->priv->column);
2038 		result = _tmp8_;
2039 		return result;
2040 	} else {
2041 		const gchar* _tmp9_;
2042 		const gchar* _tmp10_;
2043 		const gchar* _tmp11_;
2044 		ValadocGtkdocToken* _tmp12_;
2045 		_tmp9_ = start;
2046 		_tmp10_ = self->priv->pos;
2047 		_tmp11_ = start;
2048 		_tmp12_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_NEWLINE, "\n", NULL, _tmp9_, valadoc_gtkdoc_scanner_offset (self, _tmp10_, _tmp11_), self->priv->line, self->priv->column, self->priv->column);
2049 		result = _tmp12_;
2050 		return result;
2051 	}
2052 }
2053 
2054 static ValadocGtkdocToken*
valadoc_gtkdoc_scanner_eof_prefix(ValadocGtkdocScanner * self)2055 valadoc_gtkdoc_scanner_eof_prefix (ValadocGtkdocScanner* self)
2056 {
2057 	const gchar* _tmp0_;
2058 	ValadocGtkdocToken* _tmp1_;
2059 	ValadocGtkdocToken* result = NULL;
2060 	g_return_val_if_fail (self != NULL, NULL);
2061 	if (valadoc_gtkdoc_scanner_get (self) != ((gunichar) '\0')) {
2062 		result = NULL;
2063 		return result;
2064 	}
2065 	_tmp0_ = self->priv->pos;
2066 	_tmp1_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_EOF, "", NULL, _tmp0_, 1, self->priv->line, self->priv->column, self->priv->column);
2067 	result = _tmp1_;
2068 	return result;
2069 }
2070 
2071 static ValadocGtkdocToken*
valadoc_gtkdoc_scanner_space_prefix(ValadocGtkdocScanner * self)2072 valadoc_gtkdoc_scanner_space_prefix (ValadocGtkdocScanner* self)
2073 {
2074 	const gchar* start = NULL;
2075 	const gchar* _tmp0_;
2076 	gint column_start = 0;
2077 	gint len = 0;
2078 	const gchar* _tmp3_;
2079 	const gchar* _tmp4_;
2080 	const gchar* _tmp6_;
2081 	gchar* _tmp7_;
2082 	gchar* _tmp8_;
2083 	const gchar* _tmp9_;
2084 	const gchar* _tmp10_;
2085 	const gchar* _tmp11_;
2086 	ValadocGtkdocToken* _tmp12_;
2087 	ValadocGtkdocToken* _tmp13_;
2088 	ValadocGtkdocToken* result = NULL;
2089 	g_return_val_if_fail (self != NULL, NULL);
2090 	_tmp0_ = self->priv->pos;
2091 	start = _tmp0_;
2092 	column_start = self->priv->column;
2093 	{
2094 		gunichar c = 0U;
2095 		c = valadoc_gtkdoc_scanner_get (self);
2096 		{
2097 			gboolean _tmp1_ = FALSE;
2098 			_tmp1_ = TRUE;
2099 			while (TRUE) {
2100 				gboolean _tmp2_ = FALSE;
2101 				if (!_tmp1_) {
2102 					c = valadoc_gtkdoc_scanner_next_char (self);
2103 				}
2104 				_tmp1_ = FALSE;
2105 				if (c == ((gunichar) ' ')) {
2106 					_tmp2_ = TRUE;
2107 				} else {
2108 					_tmp2_ = c == ((gunichar) '\t');
2109 				}
2110 				if (!_tmp2_) {
2111 					break;
2112 				}
2113 			}
2114 		}
2115 	}
2116 	_tmp3_ = self->priv->pos;
2117 	_tmp4_ = start;
2118 	len = valadoc_gtkdoc_scanner_offset (self, _tmp3_, _tmp4_);
2119 	if (len == 0) {
2120 		const gchar* _tmp5_;
2121 		self->priv->column = column_start;
2122 		_tmp5_ = start;
2123 		self->priv->pos = _tmp5_;
2124 		result = NULL;
2125 		return result;
2126 	}
2127 	_tmp6_ = start;
2128 	_tmp7_ = string_substring (_tmp6_, (glong) 0, (glong) len);
2129 	_tmp8_ = _tmp7_;
2130 	_tmp9_ = start;
2131 	_tmp10_ = self->priv->pos;
2132 	_tmp11_ = start;
2133 	_tmp12_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_SPACE, _tmp8_, NULL, _tmp9_, valadoc_gtkdoc_scanner_offset (self, _tmp10_, _tmp11_), self->priv->line, column_start, self->priv->column);
2134 	_tmp13_ = _tmp12_;
2135 	_g_free0 (_tmp8_);
2136 	result = _tmp13_;
2137 	return result;
2138 }
2139 
2140 static ValadocGtkdocToken*
valadoc_gtkdoc_scanner_word_prefix(ValadocGtkdocScanner * self)2141 valadoc_gtkdoc_scanner_word_prefix (ValadocGtkdocScanner* self)
2142 {
2143 	const gchar* start = NULL;
2144 	const gchar* _tmp0_;
2145 	gint column_start = 0;
2146 	gunichar c = 0U;
2147 	gboolean _tmp1_ = FALSE;
2148 	gint len = 0;
2149 	const gchar* _tmp8_;
2150 	const gchar* _tmp9_;
2151 	const gchar* _tmp11_;
2152 	gchar* _tmp12_;
2153 	gchar* _tmp13_;
2154 	gchar* _tmp14_;
2155 	gchar* _tmp15_;
2156 	const gchar* _tmp16_;
2157 	const gchar* _tmp17_;
2158 	const gchar* _tmp18_;
2159 	ValadocGtkdocToken* _tmp19_;
2160 	ValadocGtkdocToken* _tmp20_;
2161 	ValadocGtkdocToken* result = NULL;
2162 	g_return_val_if_fail (self != NULL, NULL);
2163 	_tmp0_ = self->priv->pos;
2164 	start = _tmp0_;
2165 	column_start = self->priv->column;
2166 	c = valadoc_gtkdoc_scanner_get (self);
2167 	if (c == ((gunichar) '<')) {
2168 		_tmp1_ = TRUE;
2169 	} else {
2170 		_tmp1_ = c == ((gunichar) '@');
2171 	}
2172 	if (_tmp1_) {
2173 		valadoc_gtkdoc_scanner_next_char (self);
2174 	}
2175 	{
2176 		gboolean _tmp2_ = FALSE;
2177 		c = valadoc_gtkdoc_scanner_get (self);
2178 		_tmp2_ = TRUE;
2179 		while (TRUE) {
2180 			gboolean _tmp3_ = FALSE;
2181 			gboolean _tmp4_ = FALSE;
2182 			gboolean _tmp5_ = FALSE;
2183 			gboolean _tmp6_ = FALSE;
2184 			gboolean _tmp7_ = FALSE;
2185 			if (!_tmp2_) {
2186 				c = valadoc_gtkdoc_scanner_next_char (self);
2187 			}
2188 			_tmp2_ = FALSE;
2189 			if (c != ((gunichar) ' ')) {
2190 				_tmp7_ = c != ((gunichar) '\t');
2191 			} else {
2192 				_tmp7_ = FALSE;
2193 			}
2194 			if (_tmp7_) {
2195 				_tmp6_ = c != ((gunichar) '\n');
2196 			} else {
2197 				_tmp6_ = FALSE;
2198 			}
2199 			if (_tmp6_) {
2200 				_tmp5_ = c != ((gunichar) '\0');
2201 			} else {
2202 				_tmp5_ = FALSE;
2203 			}
2204 			if (_tmp5_) {
2205 				_tmp4_ = c != ((gunichar) '<');
2206 			} else {
2207 				_tmp4_ = FALSE;
2208 			}
2209 			if (_tmp4_) {
2210 				_tmp3_ = c != ((gunichar) '@');
2211 			} else {
2212 				_tmp3_ = FALSE;
2213 			}
2214 			if (!_tmp3_) {
2215 				break;
2216 			}
2217 		}
2218 	}
2219 	_tmp8_ = self->priv->pos;
2220 	_tmp9_ = start;
2221 	len = valadoc_gtkdoc_scanner_offset (self, _tmp8_, _tmp9_);
2222 	if (len == 0) {
2223 		const gchar* _tmp10_;
2224 		self->priv->column = column_start;
2225 		_tmp10_ = start;
2226 		self->priv->pos = _tmp10_;
2227 		result = NULL;
2228 		return result;
2229 	}
2230 	_tmp11_ = start;
2231 	_tmp12_ = string_substring (_tmp11_, (glong) 0, (glong) len);
2232 	_tmp13_ = _tmp12_;
2233 	_tmp14_ = valadoc_gtkdoc_scanner_unescape (_tmp13_);
2234 	_tmp15_ = _tmp14_;
2235 	_tmp16_ = start;
2236 	_tmp17_ = self->priv->pos;
2237 	_tmp18_ = start;
2238 	_tmp19_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_WORD, _tmp15_, NULL, _tmp16_, valadoc_gtkdoc_scanner_offset (self, _tmp17_, _tmp18_), self->priv->line, column_start, self->priv->column);
2239 	_tmp20_ = _tmp19_;
2240 	_g_free0 (_tmp15_);
2241 	_g_free0 (_tmp13_);
2242 	result = _tmp20_;
2243 	return result;
2244 }
2245 
2246 static ValadocGtkdocToken*
valadoc_gtkdoc_scanner_gtkdoc_source_open_prefix(ValadocGtkdocScanner * self)2247 valadoc_gtkdoc_scanner_gtkdoc_source_open_prefix (ValadocGtkdocScanner* self)
2248 {
2249 	const gchar* _tmp0_;
2250 	const gchar* start = NULL;
2251 	const gchar* _tmp1_;
2252 	gint column_start = 0;
2253 	const gchar* _tmp2_;
2254 	const gchar* _tmp3_;
2255 	const gchar* _tmp4_;
2256 	ValadocGtkdocToken* _tmp5_;
2257 	ValadocGtkdocToken* result = NULL;
2258 	g_return_val_if_fail (self != NULL, NULL);
2259 	_tmp0_ = self->priv->pos;
2260 	if (!g_str_has_prefix (_tmp0_, "|[")) {
2261 		result = NULL;
2262 		return result;
2263 	}
2264 	_tmp1_ = self->priv->pos;
2265 	start = _tmp1_;
2266 	column_start = self->priv->column;
2267 	valadoc_gtkdoc_scanner_next_char (self);
2268 	valadoc_gtkdoc_scanner_next_char (self);
2269 	_tmp2_ = start;
2270 	_tmp3_ = self->priv->pos;
2271 	_tmp4_ = start;
2272 	_tmp5_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SOURCE_OPEN, "|[", NULL, _tmp2_, valadoc_gtkdoc_scanner_offset (self, _tmp3_, _tmp4_), self->priv->line, column_start, self->priv->column);
2273 	result = _tmp5_;
2274 	return result;
2275 }
2276 
2277 static ValadocGtkdocToken*
valadoc_gtkdoc_scanner_gtkdoc_source_close_prefix(ValadocGtkdocScanner * self)2278 valadoc_gtkdoc_scanner_gtkdoc_source_close_prefix (ValadocGtkdocScanner* self)
2279 {
2280 	const gchar* _tmp0_;
2281 	const gchar* start = NULL;
2282 	const gchar* _tmp1_;
2283 	gint column_start = 0;
2284 	const gchar* _tmp2_;
2285 	const gchar* _tmp3_;
2286 	const gchar* _tmp4_;
2287 	ValadocGtkdocToken* _tmp5_;
2288 	ValadocGtkdocToken* result = NULL;
2289 	g_return_val_if_fail (self != NULL, NULL);
2290 	_tmp0_ = self->priv->pos;
2291 	if (!g_str_has_prefix (_tmp0_, "]|")) {
2292 		result = NULL;
2293 		return result;
2294 	}
2295 	_tmp1_ = self->priv->pos;
2296 	start = _tmp1_;
2297 	column_start = self->priv->column;
2298 	valadoc_gtkdoc_scanner_next_char (self);
2299 	valadoc_gtkdoc_scanner_next_char (self);
2300 	_tmp2_ = start;
2301 	_tmp3_ = self->priv->pos;
2302 	_tmp4_ = start;
2303 	_tmp5_ = valadoc_gtkdoc_token_new (VALADOC_GTKDOC_TOKEN_TYPE_GTKDOC_SOURCE_CLOSE, "]|", NULL, _tmp2_, valadoc_gtkdoc_scanner_offset (self, _tmp3_, _tmp4_), self->priv->line, column_start, self->priv->column);
2304 	result = _tmp5_;
2305 	return result;
2306 }
2307 
2308 static gpointer
_valadoc_gtkdoc_token_ref0(gpointer self)2309 _valadoc_gtkdoc_token_ref0 (gpointer self)
2310 {
2311 	return self ? valadoc_gtkdoc_token_ref (self) : NULL;
2312 }
2313 
2314 ValadocGtkdocToken*
valadoc_gtkdoc_scanner_next(ValadocGtkdocScanner * self)2315 valadoc_gtkdoc_scanner_next (ValadocGtkdocScanner* self)
2316 {
2317 	ValadocGtkdocToken* _tmp0_;
2318 	ValadocGtkdocToken* token = NULL;
2319 	ValadocGtkdocToken* _tmp3_;
2320 	ValadocGtkdocToken* _tmp4_;
2321 	ValadocGtkdocToken* _tmp5_;
2322 	ValadocGtkdocToken* _tmp6_;
2323 	ValadocGtkdocToken* _tmp7_;
2324 	ValadocGtkdocToken* _tmp8_;
2325 	ValadocGtkdocToken* _tmp9_;
2326 	ValadocGtkdocToken* _tmp10_;
2327 	ValadocGtkdocToken* _tmp11_;
2328 	ValadocGtkdocToken* _tmp12_;
2329 	ValadocGtkdocToken* _tmp13_;
2330 	ValadocGtkdocToken* _tmp14_;
2331 	ValadocGtkdocToken* _tmp15_;
2332 	ValadocGtkdocToken* _tmp16_;
2333 	ValadocGtkdocToken* _tmp17_;
2334 	ValadocGtkdocToken* _tmp18_;
2335 	ValadocGtkdocToken* _tmp19_;
2336 	ValadocGtkdocToken* _tmp20_;
2337 	ValadocGtkdocToken* _tmp21_;
2338 	ValadocGtkdocToken* _tmp22_;
2339 	ValadocGtkdocToken* _tmp23_;
2340 	ValadocGtkdocToken* _tmp24_;
2341 	ValadocGtkdocToken* _tmp25_;
2342 	ValadocGtkdocToken* _tmp26_;
2343 	ValadocGtkdocToken* _tmp27_;
2344 	ValadocGtkdocToken* _tmp28_;
2345 	ValadocGtkdocToken* result = NULL;
2346 	g_return_val_if_fail (self != NULL, NULL);
2347 	_tmp0_ = self->priv->tmp_token;
2348 	if (_tmp0_ != NULL) {
2349 		ValadocGtkdocToken* tmp = NULL;
2350 		ValadocGtkdocToken* _tmp1_;
2351 		ValadocGtkdocToken* _tmp2_;
2352 		_tmp1_ = self->priv->tmp_token;
2353 		_tmp2_ = _valadoc_gtkdoc_token_ref0 (_tmp1_);
2354 		tmp = _tmp2_;
2355 		_valadoc_gtkdoc_token_unref0 (self->priv->tmp_token);
2356 		self->priv->tmp_token = NULL;
2357 		result = tmp;
2358 		return result;
2359 	}
2360 	_tmp3_ = valadoc_gtkdoc_scanner_function_prefix (self);
2361 	token = _tmp3_;
2362 	_tmp4_ = token;
2363 	if (_tmp4_ != NULL) {
2364 		result = token;
2365 		return result;
2366 	}
2367 	_tmp5_ = valadoc_gtkdoc_scanner_xml_prefix (self);
2368 	_valadoc_gtkdoc_token_unref0 (token);
2369 	token = _tmp5_;
2370 	_tmp6_ = token;
2371 	if (_tmp6_ != NULL) {
2372 		result = token;
2373 		return result;
2374 	}
2375 	_tmp7_ = valadoc_gtkdoc_scanner_gtkdoc_param_prefix (self);
2376 	_valadoc_gtkdoc_token_unref0 (token);
2377 	token = _tmp7_;
2378 	_tmp8_ = token;
2379 	if (_tmp8_ != NULL) {
2380 		result = token;
2381 		return result;
2382 	}
2383 	_tmp9_ = valadoc_gtkdoc_scanner_gtkdoc_const_prefix (self);
2384 	_valadoc_gtkdoc_token_unref0 (token);
2385 	token = _tmp9_;
2386 	_tmp10_ = token;
2387 	if (_tmp10_ != NULL) {
2388 		result = token;
2389 		return result;
2390 	}
2391 	_tmp11_ = valadoc_gtkdoc_scanner_gtkdoc_type_prefix (self);
2392 	_valadoc_gtkdoc_token_unref0 (token);
2393 	token = _tmp11_;
2394 	_tmp12_ = token;
2395 	if (_tmp12_ != NULL) {
2396 		result = token;
2397 		return result;
2398 	}
2399 	_tmp13_ = valadoc_gtkdoc_scanner_space_prefix (self);
2400 	_valadoc_gtkdoc_token_unref0 (token);
2401 	token = _tmp13_;
2402 	_tmp14_ = token;
2403 	if (_tmp14_ != NULL) {
2404 		result = token;
2405 		return result;
2406 	}
2407 	_tmp15_ = valadoc_gtkdoc_scanner_newline_prefix (self);
2408 	_valadoc_gtkdoc_token_unref0 (token);
2409 	token = _tmp15_;
2410 	_tmp16_ = token;
2411 	if (_tmp16_ != NULL) {
2412 		result = token;
2413 		return result;
2414 	}
2415 	_tmp17_ = valadoc_gtkdoc_scanner_gtkdoc_signal_prefix (self);
2416 	_valadoc_gtkdoc_token_unref0 (token);
2417 	token = _tmp17_;
2418 	_tmp18_ = token;
2419 	if (_tmp18_ != NULL) {
2420 		result = token;
2421 		return result;
2422 	}
2423 	_tmp19_ = valadoc_gtkdoc_scanner_gtkdoc_property_prefix (self);
2424 	_valadoc_gtkdoc_token_unref0 (token);
2425 	token = _tmp19_;
2426 	_tmp20_ = token;
2427 	if (_tmp20_ != NULL) {
2428 		result = token;
2429 		return result;
2430 	}
2431 	_tmp21_ = valadoc_gtkdoc_scanner_gtkdoc_source_open_prefix (self);
2432 	_valadoc_gtkdoc_token_unref0 (token);
2433 	token = _tmp21_;
2434 	_tmp22_ = token;
2435 	if (_tmp22_ != NULL) {
2436 		result = token;
2437 		return result;
2438 	}
2439 	_tmp23_ = valadoc_gtkdoc_scanner_gtkdoc_source_close_prefix (self);
2440 	_valadoc_gtkdoc_token_unref0 (token);
2441 	token = _tmp23_;
2442 	_tmp24_ = token;
2443 	if (_tmp24_ != NULL) {
2444 		result = token;
2445 		return result;
2446 	}
2447 	_tmp25_ = valadoc_gtkdoc_scanner_eof_prefix (self);
2448 	_valadoc_gtkdoc_token_unref0 (token);
2449 	token = _tmp25_;
2450 	_tmp26_ = token;
2451 	if (_tmp26_ != NULL) {
2452 		result = token;
2453 		return result;
2454 	}
2455 	_tmp27_ = valadoc_gtkdoc_scanner_word_prefix (self);
2456 	_valadoc_gtkdoc_token_unref0 (token);
2457 	token = _tmp27_;
2458 	_tmp28_ = token;
2459 	if (_tmp28_ != NULL) {
2460 		result = token;
2461 		return result;
2462 	}
2463 	g_assert_not_reached ();
2464 	_valadoc_gtkdoc_token_unref0 (token);
2465 }
2466 
2467 static void
valadoc_gtkdoc_value_scanner_init(GValue * value)2468 valadoc_gtkdoc_value_scanner_init (GValue* value)
2469 {
2470 	value->data[0].v_pointer = NULL;
2471 }
2472 
2473 static void
valadoc_gtkdoc_value_scanner_free_value(GValue * value)2474 valadoc_gtkdoc_value_scanner_free_value (GValue* value)
2475 {
2476 	if (value->data[0].v_pointer) {
2477 		valadoc_gtkdoc_scanner_unref (value->data[0].v_pointer);
2478 	}
2479 }
2480 
2481 static void
valadoc_gtkdoc_value_scanner_copy_value(const GValue * src_value,GValue * dest_value)2482 valadoc_gtkdoc_value_scanner_copy_value (const GValue* src_value,
2483                                          GValue* dest_value)
2484 {
2485 	if (src_value->data[0].v_pointer) {
2486 		dest_value->data[0].v_pointer = valadoc_gtkdoc_scanner_ref (src_value->data[0].v_pointer);
2487 	} else {
2488 		dest_value->data[0].v_pointer = NULL;
2489 	}
2490 }
2491 
2492 static gpointer
valadoc_gtkdoc_value_scanner_peek_pointer(const GValue * value)2493 valadoc_gtkdoc_value_scanner_peek_pointer (const GValue* value)
2494 {
2495 	return value->data[0].v_pointer;
2496 }
2497 
2498 static gchar*
valadoc_gtkdoc_value_scanner_collect_value(GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)2499 valadoc_gtkdoc_value_scanner_collect_value (GValue* value,
2500                                             guint n_collect_values,
2501                                             GTypeCValue* collect_values,
2502                                             guint collect_flags)
2503 {
2504 	if (collect_values[0].v_pointer) {
2505 		ValadocGtkdocScanner * object;
2506 		object = collect_values[0].v_pointer;
2507 		if (object->parent_instance.g_class == NULL) {
2508 			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
2509 		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
2510 			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
2511 		}
2512 		value->data[0].v_pointer = valadoc_gtkdoc_scanner_ref (object);
2513 	} else {
2514 		value->data[0].v_pointer = NULL;
2515 	}
2516 	return NULL;
2517 }
2518 
2519 static gchar*
valadoc_gtkdoc_value_scanner_lcopy_value(const GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)2520 valadoc_gtkdoc_value_scanner_lcopy_value (const GValue* value,
2521                                           guint n_collect_values,
2522                                           GTypeCValue* collect_values,
2523                                           guint collect_flags)
2524 {
2525 	ValadocGtkdocScanner ** object_p;
2526 	object_p = collect_values[0].v_pointer;
2527 	if (!object_p) {
2528 		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
2529 	}
2530 	if (!value->data[0].v_pointer) {
2531 		*object_p = NULL;
2532 	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
2533 		*object_p = value->data[0].v_pointer;
2534 	} else {
2535 		*object_p = valadoc_gtkdoc_scanner_ref (value->data[0].v_pointer);
2536 	}
2537 	return NULL;
2538 }
2539 
2540 GParamSpec*
valadoc_gtkdoc_param_spec_scanner(const gchar * name,const gchar * nick,const gchar * blurb,GType object_type,GParamFlags flags)2541 valadoc_gtkdoc_param_spec_scanner (const gchar* name,
2542                                    const gchar* nick,
2543                                    const gchar* blurb,
2544                                    GType object_type,
2545                                    GParamFlags flags)
2546 {
2547 	ValadocGtkdocParamSpecScanner* spec;
2548 	g_return_val_if_fail (g_type_is_a (object_type, VALADOC_GTKDOC_TYPE_SCANNER), NULL);
2549 	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
2550 	G_PARAM_SPEC (spec)->value_type = object_type;
2551 	return G_PARAM_SPEC (spec);
2552 }
2553 
2554 gpointer
valadoc_gtkdoc_value_get_scanner(const GValue * value)2555 valadoc_gtkdoc_value_get_scanner (const GValue* value)
2556 {
2557 	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALADOC_GTKDOC_TYPE_SCANNER), NULL);
2558 	return value->data[0].v_pointer;
2559 }
2560 
2561 void
valadoc_gtkdoc_value_set_scanner(GValue * value,gpointer v_object)2562 valadoc_gtkdoc_value_set_scanner (GValue* value,
2563                                   gpointer v_object)
2564 {
2565 	ValadocGtkdocScanner * old;
2566 	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALADOC_GTKDOC_TYPE_SCANNER));
2567 	old = value->data[0].v_pointer;
2568 	if (v_object) {
2569 		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALADOC_GTKDOC_TYPE_SCANNER));
2570 		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
2571 		value->data[0].v_pointer = v_object;
2572 		valadoc_gtkdoc_scanner_ref (value->data[0].v_pointer);
2573 	} else {
2574 		value->data[0].v_pointer = NULL;
2575 	}
2576 	if (old) {
2577 		valadoc_gtkdoc_scanner_unref (old);
2578 	}
2579 }
2580 
2581 void
valadoc_gtkdoc_value_take_scanner(GValue * value,gpointer v_object)2582 valadoc_gtkdoc_value_take_scanner (GValue* value,
2583                                    gpointer v_object)
2584 {
2585 	ValadocGtkdocScanner * old;
2586 	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALADOC_GTKDOC_TYPE_SCANNER));
2587 	old = value->data[0].v_pointer;
2588 	if (v_object) {
2589 		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALADOC_GTKDOC_TYPE_SCANNER));
2590 		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
2591 		value->data[0].v_pointer = v_object;
2592 	} else {
2593 		value->data[0].v_pointer = NULL;
2594 	}
2595 	if (old) {
2596 		valadoc_gtkdoc_scanner_unref (old);
2597 	}
2598 }
2599 
2600 static void
valadoc_gtkdoc_scanner_class_init(ValadocGtkdocScannerClass * klass,gpointer klass_data)2601 valadoc_gtkdoc_scanner_class_init (ValadocGtkdocScannerClass * klass,
2602                                    gpointer klass_data)
2603 {
2604 	valadoc_gtkdoc_scanner_parent_class = g_type_class_peek_parent (klass);
2605 	((ValadocGtkdocScannerClass *) klass)->finalize = valadoc_gtkdoc_scanner_finalize;
2606 	g_type_class_adjust_private_offset (klass, &ValadocGtkdocScanner_private_offset);
2607 }
2608 
2609 static void
valadoc_gtkdoc_scanner_instance_init(ValadocGtkdocScanner * self,gpointer klass)2610 valadoc_gtkdoc_scanner_instance_init (ValadocGtkdocScanner * self,
2611                                       gpointer klass)
2612 {
2613 	self->priv = valadoc_gtkdoc_scanner_get_instance_private (self);
2614 	self->ref_count = 1;
2615 }
2616 
2617 static void
valadoc_gtkdoc_scanner_finalize(ValadocGtkdocScanner * obj)2618 valadoc_gtkdoc_scanner_finalize (ValadocGtkdocScanner * obj)
2619 {
2620 	ValadocGtkdocScanner * self;
2621 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALADOC_GTKDOC_TYPE_SCANNER, ValadocGtkdocScanner);
2622 	g_signal_handlers_destroy (self);
2623 	_valadoc_gtkdoc_token_unref0 (self->priv->tmp_token);
2624 }
2625 
2626 static GType
valadoc_gtkdoc_scanner_get_type_once(void)2627 valadoc_gtkdoc_scanner_get_type_once (void)
2628 {
2629 	static const GTypeValueTable g_define_type_value_table = { valadoc_gtkdoc_value_scanner_init, valadoc_gtkdoc_value_scanner_free_value, valadoc_gtkdoc_value_scanner_copy_value, valadoc_gtkdoc_value_scanner_peek_pointer, "p", valadoc_gtkdoc_value_scanner_collect_value, "p", valadoc_gtkdoc_value_scanner_lcopy_value };
2630 	static const GTypeInfo g_define_type_info = { sizeof (ValadocGtkdocScannerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_gtkdoc_scanner_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocGtkdocScanner), 0, (GInstanceInitFunc) valadoc_gtkdoc_scanner_instance_init, &g_define_type_value_table };
2631 	static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
2632 	GType valadoc_gtkdoc_scanner_type_id;
2633 	valadoc_gtkdoc_scanner_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ValadocGtkdocScanner", &g_define_type_info, &g_define_type_fundamental_info, 0);
2634 	ValadocGtkdocScanner_private_offset = g_type_add_instance_private (valadoc_gtkdoc_scanner_type_id, sizeof (ValadocGtkdocScannerPrivate));
2635 	return valadoc_gtkdoc_scanner_type_id;
2636 }
2637 
2638 GType
valadoc_gtkdoc_scanner_get_type(void)2639 valadoc_gtkdoc_scanner_get_type (void)
2640 {
2641 	static volatile gsize valadoc_gtkdoc_scanner_type_id__volatile = 0;
2642 	if (g_once_init_enter (&valadoc_gtkdoc_scanner_type_id__volatile)) {
2643 		GType valadoc_gtkdoc_scanner_type_id;
2644 		valadoc_gtkdoc_scanner_type_id = valadoc_gtkdoc_scanner_get_type_once ();
2645 		g_once_init_leave (&valadoc_gtkdoc_scanner_type_id__volatile, valadoc_gtkdoc_scanner_type_id);
2646 	}
2647 	return valadoc_gtkdoc_scanner_type_id__volatile;
2648 }
2649 
2650 gpointer
valadoc_gtkdoc_scanner_ref(gpointer instance)2651 valadoc_gtkdoc_scanner_ref (gpointer instance)
2652 {
2653 	ValadocGtkdocScanner * self;
2654 	self = instance;
2655 	g_atomic_int_inc (&self->ref_count);
2656 	return instance;
2657 }
2658 
2659 void
valadoc_gtkdoc_scanner_unref(gpointer instance)2660 valadoc_gtkdoc_scanner_unref (gpointer instance)
2661 {
2662 	ValadocGtkdocScanner * self;
2663 	self = instance;
2664 	if (g_atomic_int_dec_and_test (&self->ref_count)) {
2665 		VALADOC_GTKDOC_SCANNER_GET_CLASS (self)->finalize (self);
2666 		g_type_free_instance ((GTypeInstance *) self);
2667 	}
2668 }
2669 
2670