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_, "%")) {
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_, "@")) {
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_, " ")) {
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_, """)) {
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_, "'")) {
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_, "(")) {
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_, ")")) {
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_, "#")) {
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_, "&")) {
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_, "*")) {
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_, "π")) {
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_, "<")) {
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_, ">")) {
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