1
/* valagirwriter.c generated by valac, the Vala compiler
2
* generated from valagirwriter.vala, do not modify */
6
* Copyright (C) 2008-2012 JĆ¼rg Billeter
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.
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.
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
23
* JĆ¼rg Billeter <j@bitron.ch>
27
#include <glib-object.h>
33
#include <glib/gstdio.h>
36
#define VALA_TYPE_GIR_WRITER (vala_gir_writer_get_type ())
37
#define VALA_GIR_WRITER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GIR_WRITER, ValaGIRWriter))
38
#define VALA_GIR_WRITER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GIR_WRITER, ValaGIRWriterClass))
39
#define VALA_IS_GIR_WRITER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GIR_WRITER))
40
#define VALA_IS_GIR_WRITER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GIR_WRITER))
41
#define VALA_GIR_WRITER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GIR_WRITER, ValaGIRWriterClass))
43
typedef struct _ValaGIRWriter ValaGIRWriter;
44
typedef struct _ValaGIRWriterClass ValaGIRWriterClass;
45
typedef struct _ValaGIRWriterPrivate ValaGIRWriterPrivate;
47
#define VALA_GIR_WRITER_TYPE_GIR_NAMESPACE (vala_gir_writer_gir_namespace_get_type ())
48
typedef struct _ValaGIRWriterGIRNamespace ValaGIRWriterGIRNamespace;
49
#define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))
50
#define _g_free0(var) (var = (g_free (var), NULL))
51
#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
52
#define _fclose0(var) ((var == NULL) ? NULL : (var = (fclose (var), NULL)))
53
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
54
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
55
#define _vala_gir_writer_gir_namespace_free0(var) ((var == NULL) ? NULL : (var = (vala_gir_writer_gir_namespace_free (var), NULL)))
56
#define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))
57
#define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
58
#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
59
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
61
struct _ValaGIRWriter {
62
ValaCodeVisitor parent_instance;
63
ValaGIRWriterPrivate * priv;
66
struct _ValaGIRWriterClass {
67
ValaCodeVisitorClass parent_class;
68
gchar* (*get_interface_comment) (ValaGIRWriter* self, ValaInterface* iface);
69
gchar* (*get_struct_comment) (ValaGIRWriter* self, ValaStruct* st);
70
gchar* (*get_enum_comment) (ValaGIRWriter* self, ValaEnum* en);
71
gchar* (*get_class_comment) (ValaGIRWriter* self, ValaClass* c);
72
gchar* (*get_error_code_comment) (ValaGIRWriter* self, ValaErrorCode* ecode);
73
gchar* (*get_enum_value_comment) (ValaGIRWriter* self, ValaEnumValue* ev);
74
gchar* (*get_constant_comment) (ValaGIRWriter* self, ValaConstant* c);
75
gchar* (*get_error_domain_comment) (ValaGIRWriter* self, ValaErrorDomain* edomain);
76
gchar* (*get_field_comment) (ValaGIRWriter* self, ValaField* f);
77
gchar* (*get_delegate_comment) (ValaGIRWriter* self, ValaDelegate* cb);
78
gchar* (*get_method_comment) (ValaGIRWriter* self, ValaMethod* m);
79
gchar* (*get_property_comment) (ValaGIRWriter* self, ValaProperty* prop);
80
gchar* (*get_delegate_return_comment) (ValaGIRWriter* self, ValaDelegate* cb);
81
gchar* (*get_signal_return_comment) (ValaGIRWriter* self, ValaSignal* sig);
82
gchar* (*get_method_return_comment) (ValaGIRWriter* self, ValaMethod* m);
83
gchar* (*get_signal_comment) (ValaGIRWriter* self, ValaSignal* sig);
84
gchar* (*get_parameter_comment) (ValaGIRWriter* self, ValaParameter* param);
87
struct _ValaGIRWriterGIRNamespace {
92
struct _ValaGIRWriterPrivate {
93
ValaCodeContext* context;
99
ValaHashSet* unannotated_namespaces;
100
ValaHashSet* our_namespaces;
101
ValaArrayList* hierarchy;
102
ValaArrayList* deferred;
104
ValaTypeSymbol* gobject_type;
105
ValaTypeSymbol* ginitiallyunowned_type;
106
ValaArrayList* externals;
111
static gpointer vala_gir_writer_parent_class = NULL;
113
GType vala_gir_writer_get_type (void) G_GNUC_CONST;
114
static GType vala_gir_writer_gir_namespace_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
115
static ValaGIRWriterGIRNamespace* vala_gir_writer_gir_namespace_dup (const ValaGIRWriterGIRNamespace* self);
116
static void vala_gir_writer_gir_namespace_free (ValaGIRWriterGIRNamespace* self);
117
static void vala_gir_writer_gir_namespace_copy (const ValaGIRWriterGIRNamespace* self, ValaGIRWriterGIRNamespace* dest);
118
static void vala_gir_writer_gir_namespace_destroy (ValaGIRWriterGIRNamespace* self);
119
#define VALA_GIR_WRITER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_GIR_WRITER, ValaGIRWriterPrivate))
121
VALA_GIR_WRITER_DUMMY_PROPERTY
123
static gboolean vala_gir_writer_gir_namespace_equal (ValaGIRWriterGIRNamespace *self, ValaGIRWriterGIRNamespace* g);
124
gchar* vala_gir_writer_get_interface_comment (ValaGIRWriter* self, ValaInterface* iface);
125
static gchar* vala_gir_writer_real_get_interface_comment (ValaGIRWriter* self, ValaInterface* iface);
126
gchar* vala_gir_writer_get_struct_comment (ValaGIRWriter* self, ValaStruct* st);
127
static gchar* vala_gir_writer_real_get_struct_comment (ValaGIRWriter* self, ValaStruct* st);
128
gchar* vala_gir_writer_get_enum_comment (ValaGIRWriter* self, ValaEnum* en);
129
static gchar* vala_gir_writer_real_get_enum_comment (ValaGIRWriter* self, ValaEnum* en);
130
gchar* vala_gir_writer_get_class_comment (ValaGIRWriter* self, ValaClass* c);
131
static gchar* vala_gir_writer_real_get_class_comment (ValaGIRWriter* self, ValaClass* c);
132
gchar* vala_gir_writer_get_error_code_comment (ValaGIRWriter* self, ValaErrorCode* ecode);
133
static gchar* vala_gir_writer_real_get_error_code_comment (ValaGIRWriter* self, ValaErrorCode* ecode);
134
gchar* vala_gir_writer_get_enum_value_comment (ValaGIRWriter* self, ValaEnumValue* ev);
135
static gchar* vala_gir_writer_real_get_enum_value_comment (ValaGIRWriter* self, ValaEnumValue* ev);
136
gchar* vala_gir_writer_get_constant_comment (ValaGIRWriter* self, ValaConstant* c);
137
static gchar* vala_gir_writer_real_get_constant_comment (ValaGIRWriter* self, ValaConstant* c);
138
gchar* vala_gir_writer_get_error_domain_comment (ValaGIRWriter* self, ValaErrorDomain* edomain);
139
static gchar* vala_gir_writer_real_get_error_domain_comment (ValaGIRWriter* self, ValaErrorDomain* edomain);
140
gchar* vala_gir_writer_get_field_comment (ValaGIRWriter* self, ValaField* f);
141
static gchar* vala_gir_writer_real_get_field_comment (ValaGIRWriter* self, ValaField* f);
142
gchar* vala_gir_writer_get_delegate_comment (ValaGIRWriter* self, ValaDelegate* cb);
143
static gchar* vala_gir_writer_real_get_delegate_comment (ValaGIRWriter* self, ValaDelegate* cb);
144
gchar* vala_gir_writer_get_method_comment (ValaGIRWriter* self, ValaMethod* m);
145
static gchar* vala_gir_writer_real_get_method_comment (ValaGIRWriter* self, ValaMethod* m);
146
gchar* vala_gir_writer_get_property_comment (ValaGIRWriter* self, ValaProperty* prop);
147
static gchar* vala_gir_writer_real_get_property_comment (ValaGIRWriter* self, ValaProperty* prop);
148
gchar* vala_gir_writer_get_delegate_return_comment (ValaGIRWriter* self, ValaDelegate* cb);
149
static gchar* vala_gir_writer_real_get_delegate_return_comment (ValaGIRWriter* self, ValaDelegate* cb);
150
gchar* vala_gir_writer_get_signal_return_comment (ValaGIRWriter* self, ValaSignal* sig);
151
static gchar* vala_gir_writer_real_get_signal_return_comment (ValaGIRWriter* self, ValaSignal* sig);
152
gchar* vala_gir_writer_get_method_return_comment (ValaGIRWriter* self, ValaMethod* m);
153
static gchar* vala_gir_writer_real_get_method_return_comment (ValaGIRWriter* self, ValaMethod* m);
154
gchar* vala_gir_writer_get_signal_comment (ValaGIRWriter* self, ValaSignal* sig);
155
static gchar* vala_gir_writer_real_get_signal_comment (ValaGIRWriter* self, ValaSignal* sig);
156
gchar* vala_gir_writer_get_parameter_comment (ValaGIRWriter* self, ValaParameter* param);
157
static gchar* vala_gir_writer_real_get_parameter_comment (ValaGIRWriter* self, ValaParameter* param);
158
void vala_gir_writer_write_includes (ValaGIRWriter* self);
159
static void vala_gir_writer_write_indent_stream (ValaGIRWriter* self);
160
void vala_gir_writer_write_file (ValaGIRWriter* self, ValaCodeContext* context, const gchar* directory, const gchar* gir_namespace, const gchar* gir_version, const gchar* package);
161
static void vala_gir_writer_write_package (ValaGIRWriter* self, const gchar* package);
162
static void vala_gir_writer_write_doc (ValaGIRWriter* self, const gchar* comment);
163
static void vala_gir_writer_write_indent (ValaGIRWriter* self);
164
static void vala_gir_writer_write_c_includes (ValaGIRWriter* self, ValaNamespace* ns);
165
gchar* vala_ccode_base_module_get_ccode_header_filenames (ValaSymbol* sym);
166
static void vala_gir_writer_write_c_include (ValaGIRWriter* self, const gchar* name);
167
static void vala_gir_writer_real_visit_namespace (ValaCodeVisitor* base, ValaNamespace* ns);
168
gchar* vala_ccode_base_module_get_ccode_prefix (ValaSymbol* sym);
169
static void vala_gir_writer_write_annotations (ValaGIRWriter* self, ValaCodeNode* node);
170
static void vala_gir_writer_visit_deferred (ValaGIRWriter* self);
171
static void vala_gir_writer_write_symbol_attributes (ValaGIRWriter* self, ValaSymbol* symbol);
172
static void vala_gir_writer_real_visit_class (ValaCodeVisitor* base, ValaClass* cl);
173
static gboolean vala_gir_writer_check_accessibility (ValaGIRWriter* self, ValaSymbol* sym);
174
static gchar* vala_gir_writer_get_gir_name (ValaGIRWriter* self, ValaSymbol* symbol);
175
static void vala_gir_writer_write_gtype_attributes (ValaGIRWriter* self, ValaTypeSymbol* symbol);
176
static gchar* vala_gir_writer_gi_type_name (ValaGIRWriter* self, ValaTypeSymbol* type_symbol);
177
gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
178
static void vala_gir_writer_write_ctype_attributes (ValaGIRWriter* self, ValaTypeSymbol* symbol, const gchar* suffix);
179
static void vala_gir_writer_do_write_signature (ValaGIRWriter* self, ValaMethod* m, const gchar* tag_name, gboolean instance, const gchar* name, const gchar* cname, ValaList* params, ValaDataType* return_type, gboolean can_fail, gboolean write_comment);
180
gchar* vala_ccode_base_module_get_ccode_finish_name (ValaMethod* m);
181
static void vala_gir_writer_write_signature (ValaGIRWriter* self, ValaMethod* m, const gchar* tag_name, gboolean write_doc, gboolean instance);
182
static void vala_gir_writer_real_visit_struct (ValaCodeVisitor* base, ValaStruct* st);
183
static void vala_gir_writer_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface);
184
static void vala_gir_writer_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en);
185
static void vala_gir_writer_real_visit_enum_value (ValaCodeVisitor* base, ValaEnumValue* ev);
186
static gchar* vala_gir_writer_literal_expression_to_value_string (ValaGIRWriter* self, ValaExpression* literal);
187
static void vala_gir_writer_real_visit_error_domain (ValaCodeVisitor* base, ValaErrorDomain* edomain);
188
gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym);
189
static void vala_gir_writer_real_visit_error_code (ValaCodeVisitor* base, ValaErrorCode* ecode);
190
static void vala_gir_writer_real_visit_constant (ValaCodeVisitor* base, ValaConstant* c);
191
static void vala_gir_writer_write_type (ValaGIRWriter* self, ValaDataType* type, gint index);
192
static void vala_gir_writer_real_visit_field (ValaCodeVisitor* base, ValaField* f);
193
static void vala_gir_writer_write_implicit_params (ValaGIRWriter* self, ValaDataType* type, gint* index, gboolean has_array_length, const gchar* name, ValaParameterDirection direction);
194
static void vala_gir_writer_write_param_or_return (ValaGIRWriter* self, ValaDataType* type, gboolean is_parameter, gint* index, gboolean has_array_length, const gchar* name, const gchar* comment, ValaParameterDirection direction, gboolean constructor, gboolean caller_allocates);
195
static void vala_gir_writer_skip_implicit_params (ValaGIRWriter* self, ValaDataType* type, gint* index, gboolean has_array_length);
196
static void vala_gir_writer_write_params_and_return (ValaGIRWriter* self, ValaList* params, ValaDataType* return_type, gboolean return_array_length, const gchar* return_comment, gboolean constructor, ValaDataType* instance_type, gboolean user_data);
197
gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node);
198
static void vala_gir_writer_real_visit_delegate (ValaCodeVisitor* base, ValaDelegate* cb);
199
static void vala_gir_writer_real_visit_method (ValaCodeVisitor* base, ValaMethod* m);
200
static gboolean vala_gir_writer_check_signature (ValaGIRWriter* self, ValaMethod* m);
201
static gboolean vala_gir_writer_check_type (ValaGIRWriter* self, ValaDataType* type);
202
ValaDataType* vala_ccode_base_module_get_data_type_for_symbol (ValaTypeSymbol* sym);
203
static void vala_gir_writer_real_visit_creation_method (ValaCodeVisitor* base, ValaCreationMethod* m);
204
static void vala_gir_writer_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop);
205
static void vala_gir_writer_real_visit_signal (ValaCodeVisitor* base, ValaSignal* sig);
206
static gchar* vala_gir_writer_camel_case_to_canonical (ValaGIRWriter* self, const gchar* name);
207
static gchar* vala_gir_writer_get_full_gir_name (ValaGIRWriter* self, ValaSymbol* sym);
208
static void vala_gir_writer_gir_namespace_init (ValaGIRWriterGIRNamespace *self, const gchar* ns, const gchar* version);
209
ValaGIRWriter* vala_gir_writer_new (void);
210
ValaGIRWriter* vala_gir_writer_construct (GType object_type);
211
static void vala_gir_writer_finalize (ValaCodeVisitor* obj);
212
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
213
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
214
static gint _vala_array_length (gpointer array);
217
static gchar* vala_gir_writer_real_get_interface_comment (ValaGIRWriter* self, ValaInterface* iface) {
218
gchar* result = NULL;
219
g_return_val_if_fail (iface != NULL, NULL);
225
gchar* vala_gir_writer_get_interface_comment (ValaGIRWriter* self, ValaInterface* iface) {
226
g_return_val_if_fail (self != NULL, NULL);
227
return VALA_GIR_WRITER_GET_CLASS (self)->get_interface_comment (self, iface);
231
static gchar* vala_gir_writer_real_get_struct_comment (ValaGIRWriter* self, ValaStruct* st) {
232
gchar* result = NULL;
233
g_return_val_if_fail (st != NULL, NULL);
239
gchar* vala_gir_writer_get_struct_comment (ValaGIRWriter* self, ValaStruct* st) {
240
g_return_val_if_fail (self != NULL, NULL);
241
return VALA_GIR_WRITER_GET_CLASS (self)->get_struct_comment (self, st);
245
static gchar* vala_gir_writer_real_get_enum_comment (ValaGIRWriter* self, ValaEnum* en) {
246
gchar* result = NULL;
247
g_return_val_if_fail (en != NULL, NULL);
253
gchar* vala_gir_writer_get_enum_comment (ValaGIRWriter* self, ValaEnum* en) {
254
g_return_val_if_fail (self != NULL, NULL);
255
return VALA_GIR_WRITER_GET_CLASS (self)->get_enum_comment (self, en);
259
static gchar* vala_gir_writer_real_get_class_comment (ValaGIRWriter* self, ValaClass* c) {
260
gchar* result = NULL;
261
g_return_val_if_fail (c != NULL, NULL);
267
gchar* vala_gir_writer_get_class_comment (ValaGIRWriter* self, ValaClass* c) {
268
g_return_val_if_fail (self != NULL, NULL);
269
return VALA_GIR_WRITER_GET_CLASS (self)->get_class_comment (self, c);
273
static gchar* vala_gir_writer_real_get_error_code_comment (ValaGIRWriter* self, ValaErrorCode* ecode) {
274
gchar* result = NULL;
275
g_return_val_if_fail (ecode != NULL, NULL);
281
gchar* vala_gir_writer_get_error_code_comment (ValaGIRWriter* self, ValaErrorCode* ecode) {
282
g_return_val_if_fail (self != NULL, NULL);
283
return VALA_GIR_WRITER_GET_CLASS (self)->get_error_code_comment (self, ecode);
287
static gchar* vala_gir_writer_real_get_enum_value_comment (ValaGIRWriter* self, ValaEnumValue* ev) {
288
gchar* result = NULL;
289
g_return_val_if_fail (ev != NULL, NULL);
295
gchar* vala_gir_writer_get_enum_value_comment (ValaGIRWriter* self, ValaEnumValue* ev) {
296
g_return_val_if_fail (self != NULL, NULL);
297
return VALA_GIR_WRITER_GET_CLASS (self)->get_enum_value_comment (self, ev);
301
static gchar* vala_gir_writer_real_get_constant_comment (ValaGIRWriter* self, ValaConstant* c) {
302
gchar* result = NULL;
303
g_return_val_if_fail (c != NULL, NULL);
309
gchar* vala_gir_writer_get_constant_comment (ValaGIRWriter* self, ValaConstant* c) {
310
g_return_val_if_fail (self != NULL, NULL);
311
return VALA_GIR_WRITER_GET_CLASS (self)->get_constant_comment (self, c);
315
static gchar* vala_gir_writer_real_get_error_domain_comment (ValaGIRWriter* self, ValaErrorDomain* edomain) {
316
gchar* result = NULL;
317
g_return_val_if_fail (edomain != NULL, NULL);
323
gchar* vala_gir_writer_get_error_domain_comment (ValaGIRWriter* self, ValaErrorDomain* edomain) {
324
g_return_val_if_fail (self != NULL, NULL);
325
return VALA_GIR_WRITER_GET_CLASS (self)->get_error_domain_comment (self, edomain);
329
static gchar* vala_gir_writer_real_get_field_comment (ValaGIRWriter* self, ValaField* f) {
330
gchar* result = NULL;
331
g_return_val_if_fail (f != NULL, NULL);
337
gchar* vala_gir_writer_get_field_comment (ValaGIRWriter* self, ValaField* f) {
338
g_return_val_if_fail (self != NULL, NULL);
339
return VALA_GIR_WRITER_GET_CLASS (self)->get_field_comment (self, f);
343
static gchar* vala_gir_writer_real_get_delegate_comment (ValaGIRWriter* self, ValaDelegate* cb) {
344
gchar* result = NULL;
345
g_return_val_if_fail (cb != NULL, NULL);
351
gchar* vala_gir_writer_get_delegate_comment (ValaGIRWriter* self, ValaDelegate* cb) {
352
g_return_val_if_fail (self != NULL, NULL);
353
return VALA_GIR_WRITER_GET_CLASS (self)->get_delegate_comment (self, cb);
357
static gchar* vala_gir_writer_real_get_method_comment (ValaGIRWriter* self, ValaMethod* m) {
358
gchar* result = NULL;
359
g_return_val_if_fail (m != NULL, NULL);
365
gchar* vala_gir_writer_get_method_comment (ValaGIRWriter* self, ValaMethod* m) {
366
g_return_val_if_fail (self != NULL, NULL);
367
return VALA_GIR_WRITER_GET_CLASS (self)->get_method_comment (self, m);
371
static gchar* vala_gir_writer_real_get_property_comment (ValaGIRWriter* self, ValaProperty* prop) {
372
gchar* result = NULL;
373
g_return_val_if_fail (prop != NULL, NULL);
379
gchar* vala_gir_writer_get_property_comment (ValaGIRWriter* self, ValaProperty* prop) {
380
g_return_val_if_fail (self != NULL, NULL);
381
return VALA_GIR_WRITER_GET_CLASS (self)->get_property_comment (self, prop);
385
static gchar* vala_gir_writer_real_get_delegate_return_comment (ValaGIRWriter* self, ValaDelegate* cb) {
386
gchar* result = NULL;
387
g_return_val_if_fail (cb != NULL, NULL);
393
gchar* vala_gir_writer_get_delegate_return_comment (ValaGIRWriter* self, ValaDelegate* cb) {
394
g_return_val_if_fail (self != NULL, NULL);
395
return VALA_GIR_WRITER_GET_CLASS (self)->get_delegate_return_comment (self, cb);
399
static gchar* vala_gir_writer_real_get_signal_return_comment (ValaGIRWriter* self, ValaSignal* sig) {
400
gchar* result = NULL;
401
g_return_val_if_fail (sig != NULL, NULL);
407
gchar* vala_gir_writer_get_signal_return_comment (ValaGIRWriter* self, ValaSignal* sig) {
408
g_return_val_if_fail (self != NULL, NULL);
409
return VALA_GIR_WRITER_GET_CLASS (self)->get_signal_return_comment (self, sig);
413
static gchar* vala_gir_writer_real_get_method_return_comment (ValaGIRWriter* self, ValaMethod* m) {
414
gchar* result = NULL;
415
g_return_val_if_fail (m != NULL, NULL);
421
gchar* vala_gir_writer_get_method_return_comment (ValaGIRWriter* self, ValaMethod* m) {
422
g_return_val_if_fail (self != NULL, NULL);
423
return VALA_GIR_WRITER_GET_CLASS (self)->get_method_return_comment (self, m);
427
static gchar* vala_gir_writer_real_get_signal_comment (ValaGIRWriter* self, ValaSignal* sig) {
428
gchar* result = NULL;
429
g_return_val_if_fail (sig != NULL, NULL);
435
gchar* vala_gir_writer_get_signal_comment (ValaGIRWriter* self, ValaSignal* sig) {
436
g_return_val_if_fail (self != NULL, NULL);
437
return VALA_GIR_WRITER_GET_CLASS (self)->get_signal_comment (self, sig);
441
static gchar* vala_gir_writer_real_get_parameter_comment (ValaGIRWriter* self, ValaParameter* param) {
442
gchar* result = NULL;
443
g_return_val_if_fail (param != NULL, NULL);
449
gchar* vala_gir_writer_get_parameter_comment (ValaGIRWriter* self, ValaParameter* param) {
450
g_return_val_if_fail (self != NULL, NULL);
451
return VALA_GIR_WRITER_GET_CLASS (self)->get_parameter_comment (self, param);
455
static gpointer _vala_iterable_ref0 (gpointer self) {
456
return self ? vala_iterable_ref (self) : NULL;
460
void vala_gir_writer_write_includes (ValaGIRWriter* self) {
461
g_return_if_fail (self != NULL);
463
ValaArrayList* _tmp0_;
464
ValaArrayList* _tmp1_;
465
ValaArrayList* _i_list;
466
ValaArrayList* _tmp2_;
471
_tmp0_ = self->priv->externals;
472
_tmp1_ = _vala_iterable_ref0 (_tmp0_);
475
_tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
483
ValaArrayList* _tmp8_;
485
gpointer _tmp10_ = NULL;
486
ValaGIRWriterGIRNamespace* i;
487
ValaGIRWriterGIRNamespace* _tmp11_;
488
const gchar* _tmp12_;
489
const gchar* _tmp13_;
491
_i_index = _tmp5_ + 1;
494
if (!(_tmp6_ < _tmp7_)) {
499
_tmp10_ = vala_list_get ((ValaList*) _tmp8_, _tmp9_);
500
i = (ValaGIRWriterGIRNamespace*) _tmp10_;
502
_tmp12_ = (*_tmp11_).ns;
503
_tmp13_ = self->priv->gir_namespace;
504
if (g_strcmp0 (_tmp12_, _tmp13_) != 0) {
506
ValaGIRWriterGIRNamespace* _tmp15_;
507
const gchar* _tmp16_;
508
ValaGIRWriterGIRNamespace* _tmp17_;
509
const gchar* _tmp18_;
510
vala_gir_writer_write_indent_stream (self);
511
_tmp14_ = self->priv->stream;
513
_tmp16_ = (*_tmp15_).ns;
515
_tmp18_ = (*_tmp17_).version;
516
fprintf (_tmp14_, "<include name=\"%s\" version=\"%s\"/>\n", _tmp16_, _tmp18_);
518
_vala_gir_writer_gir_namespace_free0 (i);
520
_vala_iterable_unref0 (_i_list);
526
* Writes the public interface of the specified code context into the
529
* @param context a code context
530
* @param filename a relative or absolute filename
532
static gpointer _vala_code_context_ref0 (gpointer self) {
533
return self ? vala_code_context_ref (self) : NULL;
537
static gpointer _vala_code_node_ref0 (gpointer self) {
538
return self ? vala_code_node_ref (self) : NULL;
542
void vala_gir_writer_write_file (ValaGIRWriter* self, ValaCodeContext* context, const gchar* directory, const gchar* gir_namespace, const gchar* gir_version, const gchar* package) {
543
ValaCodeContext* _tmp0_;
544
ValaCodeContext* _tmp1_;
551
ValaCodeContext* _tmp8_;
552
ValaNamespace* _tmp9_;
553
ValaNamespace* _tmp10_;
554
ValaNamespace* _tmp11_;
555
ValaNamespace* root_symbol;
556
ValaNamespace* _tmp12_;
559
ValaSymbol* _tmp15_ = NULL;
564
ValaSymbol* _tmp19_ = NULL;
568
ValaSymbol* _tmp23_ = NULL;
569
const gchar* _tmp24_;
570
ValaCodeContext* _tmp25_;
573
const gchar* _tmp28_;
574
const gchar* _tmp29_;
575
const gchar* _tmp30_;
576
gchar* _tmp31_ = NULL;
578
const gchar* _tmp32_;
579
FILE* _tmp33_ = NULL;
591
const gchar* _tmp48_;
592
ValaHashSet* _tmp84_;
595
g_return_if_fail (self != NULL);
596
g_return_if_fail (context != NULL);
597
g_return_if_fail (directory != NULL);
598
g_return_if_fail (gir_namespace != NULL);
599
g_return_if_fail (gir_version != NULL);
600
g_return_if_fail (package != NULL);
602
_tmp1_ = _vala_code_context_ref0 (_tmp0_);
603
_vala_code_context_unref0 (self->priv->context);
604
self->priv->context = _tmp1_;
606
_tmp3_ = g_strdup (_tmp2_);
607
_g_free0 (self->priv->directory);
608
self->priv->directory = _tmp3_;
609
_tmp4_ = gir_namespace;
610
_tmp5_ = g_strdup (_tmp4_);
611
_g_free0 (self->priv->gir_namespace);
612
self->priv->gir_namespace = _tmp5_;
613
_tmp6_ = gir_version;
614
_tmp7_ = g_strdup (_tmp6_);
615
_g_free0 (self->priv->gir_version);
616
self->priv->gir_version = _tmp7_;
618
_tmp9_ = vala_code_context_get_root (_tmp8_);
620
_tmp11_ = _vala_code_node_ref0 (_tmp10_);
621
root_symbol = _tmp11_;
622
_tmp12_ = root_symbol;
623
_tmp13_ = vala_symbol_get_scope ((ValaSymbol*) _tmp12_);
625
_tmp15_ = vala_scope_lookup (_tmp14_, "GLib");
628
_tmp17_ = vala_symbol_get_scope (_tmp16_);
630
_tmp19_ = vala_scope_lookup (_tmp18_, "Object");
631
_vala_code_node_unref0 (self->priv->gobject_type);
632
self->priv->gobject_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
634
_tmp21_ = vala_symbol_get_scope (_tmp20_);
636
_tmp23_ = vala_scope_lookup (_tmp22_, "InitiallyUnowned");
637
_vala_code_node_unref0 (self->priv->ginitiallyunowned_type);
638
self->priv->ginitiallyunowned_type = G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
640
vala_gir_writer_write_package (self, _tmp24_);
642
vala_code_context_accept (_tmp25_, (ValaCodeVisitor*) self);
643
_tmp26_ = self->priv->indent;
644
self->priv->indent = _tmp26_ - 1;
645
_tmp27_ = self->priv->buffer;
646
g_string_append_printf (_tmp27_, "</repository>\n");
648
_tmp29_ = gir_namespace;
649
_tmp30_ = gir_version;
650
_tmp31_ = g_strdup_printf ("%s%c%s-%s.gir", _tmp28_, (gint) G_DIR_SEPARATOR, _tmp29_, _tmp30_);
653
_tmp33_ = g_fopen (_tmp32_, "w");
654
_fclose0 (self->priv->stream);
655
self->priv->stream = _tmp33_;
656
_tmp34_ = self->priv->stream;
657
if (_tmp34_ == NULL) {
658
const gchar* _tmp35_;
659
gchar* _tmp36_ = NULL;
662
_tmp36_ = g_strdup_printf ("unable to open `%s' for writing", _tmp35_);
664
vala_report_error (NULL, _tmp37_);
667
_vala_code_node_unref0 (glib_ns);
668
_vala_code_node_unref0 (root_symbol);
671
_tmp38_ = self->priv->stream;
672
fprintf (_tmp38_, "<?xml version=\"1.0\"?>\n");
673
_tmp39_ = self->priv->stream;
674
fprintf (_tmp39_, "<repository version=\"1.2\"");
675
_tmp40_ = self->priv->stream;
676
fprintf (_tmp40_, " xmlns=\"http://www.gtk.org/introspection/core/1.0\"");
677
_tmp41_ = self->priv->stream;
678
fprintf (_tmp41_, " xmlns:c=\"http://www.gtk.org/introspection/c/1.0\"");
679
_tmp42_ = self->priv->stream;
680
fprintf (_tmp42_, " xmlns:glib=\"http://www.gtk.org/introspection/glib/1.0\"");
681
_tmp43_ = self->priv->stream;
682
fprintf (_tmp43_, ">\n");
683
_tmp44_ = self->priv->indent;
684
self->priv->indent = _tmp44_ + 1;
685
vala_gir_writer_write_includes (self);
686
_tmp45_ = self->priv->indent;
687
self->priv->indent = _tmp45_ - 1;
688
_tmp46_ = self->priv->stream;
689
_tmp47_ = self->priv->buffer;
690
_tmp48_ = _tmp47_->str;
691
fputs (_tmp48_, _tmp46_);
692
_fclose0 (self->priv->stream);
693
self->priv->stream = NULL;
695
ValaHashSet* _tmp49_;
696
ValaIterator* _tmp50_ = NULL;
697
ValaIterator* _ns_it;
698
_tmp49_ = self->priv->unannotated_namespaces;
699
_tmp50_ = vala_iterable_iterator ((ValaIterable*) _tmp49_);
702
ValaIterator* _tmp51_;
703
gboolean _tmp52_ = FALSE;
704
ValaIterator* _tmp53_;
705
gpointer _tmp54_ = NULL;
707
ValaHashSet* _tmp55_;
708
ValaNamespace* _tmp56_;
709
gboolean _tmp57_ = FALSE;
711
_tmp52_ = vala_iterator_next (_tmp51_);
716
_tmp54_ = vala_iterator_get (_tmp53_);
717
ns = (ValaNamespace*) _tmp54_;
718
_tmp55_ = self->priv->our_namespaces;
720
_tmp57_ = vala_collection_contains ((ValaCollection*) _tmp55_, _tmp56_);
722
ValaNamespace* _tmp58_;
723
ValaSourceReference* _tmp59_;
724
ValaSourceReference* _tmp60_;
725
ValaNamespace* _tmp61_;
726
const gchar* _tmp62_;
727
const gchar* _tmp63_;
728
gchar* _tmp64_ = NULL;
731
_tmp59_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp58_);
734
_tmp62_ = vala_symbol_get_name ((ValaSymbol*) _tmp61_);
736
_tmp64_ = g_strdup_printf ("Namespace %s does not have a GIR namespace and version annotation", _tmp63_);
738
vala_report_warning (_tmp60_, _tmp65_);
741
_vala_code_node_unref0 (ns);
743
_vala_iterator_unref0 (_ns_it);
746
ValaHashSet* _tmp66_;
747
ValaIterator* _tmp67_ = NULL;
748
ValaIterator* _ns_it;
749
_tmp66_ = self->priv->our_namespaces;
750
_tmp67_ = vala_iterable_iterator ((ValaIterable*) _tmp66_);
753
ValaIterator* _tmp68_;
754
gboolean _tmp69_ = FALSE;
755
ValaIterator* _tmp70_;
756
gpointer _tmp71_ = NULL;
758
ValaNamespace* _tmp72_;
759
ValaSourceReference* _tmp73_;
760
ValaSourceReference* _tmp74_;
761
ValaSourceFile* _tmp75_;
762
ValaSourceFile* _tmp76_;
763
const gchar* _tmp77_;
764
ValaNamespace* _tmp78_;
765
ValaSourceReference* _tmp79_;
766
ValaSourceReference* _tmp80_;
767
ValaSourceFile* _tmp81_;
768
ValaSourceFile* _tmp82_;
769
const gchar* _tmp83_;
771
_tmp69_ = vala_iterator_next (_tmp68_);
776
_tmp71_ = vala_iterator_get (_tmp70_);
777
ns = (ValaNamespace*) _tmp71_;
779
_tmp73_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp72_);
781
_tmp75_ = vala_source_reference_get_file (_tmp74_);
783
_tmp77_ = gir_namespace;
784
vala_source_file_set_gir_namespace (_tmp76_, _tmp77_);
786
_tmp79_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp78_);
788
_tmp81_ = vala_source_reference_get_file (_tmp80_);
790
_tmp83_ = gir_version;
791
vala_source_file_set_gir_version (_tmp82_, _tmp83_);
792
_vala_code_node_unref0 (ns);
794
_vala_iterator_unref0 (_ns_it);
796
_tmp84_ = self->priv->our_namespaces;
797
_tmp85_ = vala_collection_get_size ((ValaCollection*) _tmp84_);
800
vala_report_error (NULL, "No suitable namespace found to export for GIR");
803
_vala_code_node_unref0 (glib_ns);
804
_vala_code_node_unref0 (root_symbol);
808
static void vala_gir_writer_write_doc (ValaGIRWriter* self, const gchar* comment) {
810
g_return_if_fail (self != NULL);
812
if (_tmp0_ != NULL) {
817
vala_gir_writer_write_indent (self);
818
_tmp1_ = self->priv->buffer;
819
g_string_append (_tmp1_, "<doc xml:whitespace=\"preserve\">");
820
_tmp2_ = self->priv->buffer;
822
g_string_append (_tmp2_, _tmp3_);
823
_tmp4_ = self->priv->buffer;
824
g_string_append (_tmp4_, "</doc>\n");
829
static void vala_gir_writer_write_package (ValaGIRWriter* self, const gchar* package) {
832
g_return_if_fail (self != NULL);
833
g_return_if_fail (package != NULL);
834
vala_gir_writer_write_indent (self);
835
_tmp0_ = self->priv->buffer;
837
g_string_append_printf (_tmp0_, "<package name=\"%s\"/>\n", _tmp1_);
841
static void vala_gir_writer_write_c_includes (ValaGIRWriter* self, ValaNamespace* ns) {
845
ValaSet* header_filenames;
846
ValaNamespace* _tmp3_;
847
gchar* _tmp4_ = NULL;
850
gchar** _tmp7_ = NULL;
853
g_return_if_fail (self != NULL);
854
g_return_if_fail (ns != NULL);
856
_tmp1_ = g_str_equal;
857
_tmp2_ = vala_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp0_, _tmp1_);
858
header_filenames = (ValaSet*) _tmp2_;
860
_tmp4_ = vala_ccode_base_module_get_ccode_header_filenames ((ValaSymbol*) _tmp3_);
862
_tmp7_ = _tmp6_ = g_strsplit (_tmp5_, ",", 0);
864
_tmp8__length1 = _vala_array_length (_tmp6_);
867
gchar** c_header_filename_collection = NULL;
868
gint c_header_filename_collection_length1 = 0;
869
gint _c_header_filename_collection_size_ = 0;
870
gint c_header_filename_it = 0;
871
c_header_filename_collection = _tmp8_;
872
c_header_filename_collection_length1 = _tmp8__length1;
873
for (c_header_filename_it = 0; c_header_filename_it < _tmp8__length1; c_header_filename_it = c_header_filename_it + 1) {
875
gchar* c_header_filename = NULL;
876
_tmp9_ = g_strdup (c_header_filename_collection[c_header_filename_it]);
877
c_header_filename = _tmp9_;
880
const gchar* _tmp11_;
881
_tmp10_ = header_filenames;
882
_tmp11_ = c_header_filename;
883
vala_collection_add ((ValaCollection*) _tmp10_, _tmp11_);
884
_g_free0 (c_header_filename);
887
c_header_filename_collection = (_vala_array_free (c_header_filename_collection, c_header_filename_collection_length1, (GDestroyNotify) g_free), NULL);
890
ValaNamespace* _tmp12_;
893
ValaMap* _tmp15_ = NULL;
895
ValaCollection* _tmp17_ = NULL;
896
ValaCollection* _tmp18_;
897
ValaIterator* _tmp19_ = NULL;
898
ValaIterator* _tmp20_;
899
ValaIterator* _symbol_it;
901
_tmp13_ = vala_symbol_get_scope ((ValaSymbol*) _tmp12_);
903
_tmp15_ = vala_scope_get_symbol_table (_tmp14_);
905
_tmp17_ = vala_map_get_values (_tmp16_);
907
_tmp19_ = vala_iterable_iterator ((ValaIterable*) _tmp18_);
909
_vala_iterable_unref0 (_tmp18_);
910
_vala_map_unref0 (_tmp16_);
911
_symbol_it = _tmp20_;
913
ValaIterator* _tmp21_;
914
gboolean _tmp22_ = FALSE;
915
ValaIterator* _tmp23_;
916
gpointer _tmp24_ = NULL;
919
gchar* _tmp26_ = NULL;
922
gchar** _tmp29_ = NULL;
924
gint _tmp30__length1;
925
_tmp21_ = _symbol_it;
926
_tmp22_ = vala_iterator_next (_tmp21_);
930
_tmp23_ = _symbol_it;
931
_tmp24_ = vala_iterator_get (_tmp23_);
932
symbol = (ValaSymbol*) _tmp24_;
934
_tmp26_ = vala_ccode_base_module_get_ccode_header_filenames (_tmp25_);
936
_tmp29_ = _tmp28_ = g_strsplit (_tmp27_, ",", 0);
938
_tmp30__length1 = _vala_array_length (_tmp28_);
941
gchar** c_header_filename_collection = NULL;
942
gint c_header_filename_collection_length1 = 0;
943
gint _c_header_filename_collection_size_ = 0;
944
gint c_header_filename_it = 0;
945
c_header_filename_collection = _tmp30_;
946
c_header_filename_collection_length1 = _tmp30__length1;
947
for (c_header_filename_it = 0; c_header_filename_it < _tmp30__length1; c_header_filename_it = c_header_filename_it + 1) {
949
gchar* c_header_filename = NULL;
950
_tmp31_ = g_strdup (c_header_filename_collection[c_header_filename_it]);
951
c_header_filename = _tmp31_;
954
const gchar* _tmp33_;
955
_tmp32_ = header_filenames;
956
_tmp33_ = c_header_filename;
957
vala_collection_add ((ValaCollection*) _tmp32_, _tmp33_);
958
_g_free0 (c_header_filename);
961
c_header_filename_collection = (_vala_array_free (c_header_filename_collection, c_header_filename_collection_length1, (GDestroyNotify) g_free), NULL);
963
_vala_code_node_unref0 (symbol);
965
_vala_iterator_unref0 (_symbol_it);
969
ValaIterator* _tmp35_ = NULL;
970
ValaIterator* _c_header_filename_it;
971
_tmp34_ = header_filenames;
972
_tmp35_ = vala_iterable_iterator ((ValaIterable*) _tmp34_);
973
_c_header_filename_it = _tmp35_;
975
ValaIterator* _tmp36_;
976
gboolean _tmp37_ = FALSE;
977
ValaIterator* _tmp38_;
978
gpointer _tmp39_ = NULL;
979
gchar* c_header_filename;
980
const gchar* _tmp40_;
981
_tmp36_ = _c_header_filename_it;
982
_tmp37_ = vala_iterator_next (_tmp36_);
986
_tmp38_ = _c_header_filename_it;
987
_tmp39_ = vala_iterator_get (_tmp38_);
988
c_header_filename = (gchar*) _tmp39_;
989
_tmp40_ = c_header_filename;
990
vala_gir_writer_write_c_include (self, _tmp40_);
991
_g_free0 (c_header_filename);
993
_vala_iterator_unref0 (_c_header_filename_it);
995
_vala_iterable_unref0 (header_filenames);
999
static void vala_gir_writer_write_c_include (ValaGIRWriter* self, const gchar* name) {
1001
const gchar* _tmp1_;
1002
g_return_if_fail (self != NULL);
1003
g_return_if_fail (name != NULL);
1004
vala_gir_writer_write_indent (self);
1005
_tmp0_ = self->priv->buffer;
1007
g_string_append_printf (_tmp0_, "<c:include name=\"%s\"/>\n", _tmp1_);
1011
static void vala_gir_writer_real_visit_namespace (ValaCodeVisitor* base, ValaNamespace* ns) {
1012
ValaGIRWriter * self;
1013
ValaNamespace* _tmp0_;
1016
ValaNamespace* _tmp3_;
1017
const gchar* _tmp4_;
1018
const gchar* _tmp5_;
1019
ValaNamespace* _tmp10_;
1020
ValaSymbol* _tmp11_;
1021
ValaSymbol* _tmp12_;
1022
const gchar* _tmp13_;
1023
const gchar* _tmp14_;
1024
ValaNamespace* _tmp16_;
1026
const gchar* _tmp18_;
1027
const gchar* _tmp19_;
1028
ValaNamespace* _tmp20_;
1029
gchar* _tmp21_ = NULL;
1031
const gchar* _tmp22_;
1034
ValaNamespace* _tmp27_;
1035
ValaArrayList* _tmp28_;
1036
ValaNamespace* _tmp29_;
1037
ValaNamespace* _tmp30_;
1038
ValaArrayList* _tmp31_;
1041
ValaHashSet* _tmp34_;
1042
ValaNamespace* _tmp35_;
1043
self = (ValaGIRWriter*) base;
1044
g_return_if_fail (ns != NULL);
1046
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
1052
_tmp4_ = vala_symbol_get_name ((ValaSymbol*) _tmp3_);
1054
if (_tmp5_ == NULL) {
1055
ValaArrayList* _tmp6_;
1056
ValaNamespace* _tmp7_;
1057
ValaNamespace* _tmp8_;
1058
ValaArrayList* _tmp9_;
1059
_tmp6_ = self->priv->hierarchy;
1061
vala_list_insert ((ValaList*) _tmp6_, 0, (ValaSymbol*) _tmp7_);
1063
vala_code_node_accept_children ((ValaCodeNode*) _tmp8_, (ValaCodeVisitor*) self);
1064
_tmp9_ = self->priv->hierarchy;
1065
vala_list_remove_at ((ValaList*) _tmp9_, 0);
1069
_tmp11_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp10_);
1071
_tmp13_ = vala_symbol_get_name (_tmp12_);
1073
if (_tmp14_ != NULL) {
1074
ValaNamespace* _tmp15_;
1076
vala_code_node_accept_children ((ValaCodeNode*) _tmp15_, (ValaCodeVisitor*) self);
1080
vala_gir_writer_write_c_includes (self, _tmp16_);
1081
vala_gir_writer_write_indent (self);
1082
_tmp17_ = self->priv->buffer;
1083
_tmp18_ = self->priv->gir_namespace;
1084
_tmp19_ = self->priv->gir_version;
1085
g_string_append_printf (_tmp17_, "<namespace name=\"%s\" version=\"%s\"", _tmp18_, _tmp19_);
1087
_tmp21_ = vala_ccode_base_module_get_ccode_prefix ((ValaSymbol*) _tmp20_);
1090
if (_tmp22_ != NULL) {
1092
const gchar* _tmp24_;
1093
_tmp23_ = self->priv->buffer;
1095
g_string_append_printf (_tmp23_, " c:prefix=\"%s\"", _tmp24_);
1097
_tmp25_ = self->priv->buffer;
1098
g_string_append_printf (_tmp25_, ">\n");
1099
_tmp26_ = self->priv->indent;
1100
self->priv->indent = _tmp26_ + 1;
1102
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp27_);
1103
_tmp28_ = self->priv->hierarchy;
1105
vala_list_insert ((ValaList*) _tmp28_, 0, (ValaSymbol*) _tmp29_);
1107
vala_code_node_accept_children ((ValaCodeNode*) _tmp30_, (ValaCodeVisitor*) self);
1108
_tmp31_ = self->priv->hierarchy;
1109
vala_list_remove_at ((ValaList*) _tmp31_, 0);
1110
_tmp32_ = self->priv->indent;
1111
self->priv->indent = _tmp32_ - 1;
1112
vala_gir_writer_write_indent (self);
1113
_tmp33_ = self->priv->buffer;
1114
g_string_append_printf (_tmp33_, "</namespace>\n");
1115
_tmp34_ = self->priv->our_namespaces;
1117
vala_collection_add ((ValaCollection*) _tmp34_, _tmp35_);
1118
vala_gir_writer_visit_deferred (self);
1123
static void vala_gir_writer_write_symbol_attributes (ValaGIRWriter* self, ValaSymbol* symbol) {
1127
g_return_if_fail (self != NULL);
1128
g_return_if_fail (symbol != NULL);
1130
_tmp1_ = vala_symbol_get_deprecated (_tmp0_);
1133
gchar* _tmp3_ = NULL;
1140
const gchar* _tmp16_;
1141
ValaSymbol* _tmp17_;
1147
_tmp5_ = vala_symbol_get_replacement (_tmp4_);
1150
_tmp8_ = _tmp7_ == NULL;
1154
_tmp9_ = g_strdup ("");
1158
ValaSymbol* _tmp10_;
1162
gchar* _tmp14_ = NULL;
1164
_tmp11_ = vala_symbol_get_replacement (_tmp10_);
1167
_tmp14_ = g_strdup_printf ("Use %s", _tmp13_);
1172
_tmp15_ = self->priv->buffer;
1174
g_string_append_printf (_tmp15_, " deprecated=\"%s\"", _tmp16_);
1176
_tmp18_ = vala_symbol_get_deprecated_since (_tmp17_);
1179
_tmp21_ = _tmp20_ != NULL;
1183
ValaSymbol* _tmp23_;
1187
_tmp22_ = self->priv->buffer;
1189
_tmp24_ = vala_symbol_get_deprecated_since (_tmp23_);
1192
g_string_append_printf (_tmp22_, " deprecated-version=\"%s\"", _tmp26_);
1200
static glong string_strnlen (gchar* str, glong maxlen) {
1204
gchar* _tmp2_ = NULL;
1209
_tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_);
1212
if (_tmp3_ == NULL) {
1222
result = (glong) (_tmp5_ - _tmp6_);
1228
static gchar* string_substring (const gchar* self, glong offset, glong len) {
1229
gchar* result = NULL;
1230
glong string_length = 0L;
1231
gboolean _tmp0_ = FALSE;
1241
gchar* _tmp23_ = NULL;
1242
g_return_val_if_fail (self != NULL, NULL);
1244
if (_tmp1_ >= ((glong) 0)) {
1247
_tmp0_ = _tmp2_ >= ((glong) 0);
1258
_tmp6_ = string_strnlen ((gchar*) self, _tmp4_ + _tmp5_);
1259
string_length = _tmp6_;
1263
_tmp7_ = strlen (self);
1265
string_length = (glong) _tmp8_;
1268
if (_tmp9_ < ((glong) 0)) {
1272
_tmp10_ = string_length;
1274
offset = _tmp10_ + _tmp11_;
1276
g_return_val_if_fail (_tmp12_ >= ((glong) 0), NULL);
1281
_tmp14_ = string_length;
1282
g_return_val_if_fail (_tmp13_ <= _tmp14_, NULL);
1285
if (_tmp15_ < ((glong) 0)) {
1288
_tmp16_ = string_length;
1290
len = _tmp16_ - _tmp17_;
1294
_tmp20_ = string_length;
1295
g_return_val_if_fail ((_tmp18_ + _tmp19_) <= _tmp20_, NULL);
1298
_tmp23_ = g_strndup (((gchar*) self) + _tmp21_, (gsize) _tmp22_);
1304
static void vala_gir_writer_real_visit_class (ValaCodeVisitor* base, ValaClass* cl) {
1305
ValaGIRWriter * self;
1310
gboolean _tmp4_ = FALSE;
1311
ValaArrayList* _tmp5_;
1312
gpointer _tmp6_ = NULL;
1316
ValaTypeSymbol* _tmp12_;
1317
gboolean _tmp13_ = FALSE;
1318
self = (ValaGIRWriter*) base;
1319
g_return_if_fail (cl != NULL);
1321
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
1327
_tmp4_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp3_);
1331
_tmp5_ = self->priv->hierarchy;
1332
_tmp6_ = vala_list_get ((ValaList*) _tmp5_, 0);
1333
_tmp7_ = (ValaSymbol*) _tmp6_;
1334
_tmp8_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_NAMESPACE);
1335
_vala_code_node_unref0 (_tmp7_);
1337
ValaArrayList* _tmp9_;
1339
_tmp9_ = self->priv->deferred;
1341
vala_collection_add ((ValaCollection*) _tmp9_, (ValaCodeNode*) _tmp10_);
1345
_tmp12_ = self->priv->gobject_type;
1346
_tmp13_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp11_, _tmp12_);
1349
gchar* _tmp15_ = NULL;
1353
gchar* gtype_struct_name;
1356
gchar* _tmp21_ = NULL;
1360
const gchar* _tmp25_;
1365
gchar* _tmp30_ = NULL;
1374
gchar* _tmp40_ = NULL;
1383
gchar* _tmp71_ = NULL;
1388
gchar* _tmp76_ = NULL;
1396
const gchar* _tmp84_;
1397
const gchar* _tmp85_;
1399
gchar* _tmp87_ = NULL;
1403
ValaArrayList* _tmp91_;
1406
ValaArrayList* _tmp94_;
1410
const gchar* _tmp98_;
1413
ValaClass* _tmp101_;
1414
const gchar* _tmp102_;
1415
const gchar* _tmp103_;
1421
ValaClass* _tmp109_;
1422
ValaClass* _tmp110_;
1423
ValaClass* _tmp111_;
1424
gchar* _tmp112_ = NULL;
1426
ValaClass* _tmp114_;
1427
ValaClass* _tmp115_;
1428
ValaClass* _tmp116_;
1429
gchar* _tmp117_ = NULL;
1436
ValaClass* _tmp246_;
1437
const gchar* _tmp247_;
1438
const gchar* _tmp248_;
1439
ValaClass* _tmp249_;
1440
gchar* _tmp250_ = NULL;
1443
_tmp15_ = vala_gir_writer_get_gir_name (self, (ValaSymbol*) _tmp14_);
1445
_tmp17_ = g_strconcat (_tmp16_, "Class", NULL);
1448
gtype_struct_name = _tmp18_;
1449
vala_gir_writer_write_indent (self);
1450
_tmp19_ = self->priv->buffer;
1452
_tmp21_ = vala_gir_writer_get_gir_name (self, (ValaSymbol*) _tmp20_);
1454
g_string_append_printf (_tmp19_, "<class name=\"%s\"", _tmp22_);
1457
vala_gir_writer_write_gtype_attributes (self, (ValaTypeSymbol*) _tmp23_);
1458
_tmp24_ = self->priv->buffer;
1459
_tmp25_ = gtype_struct_name;
1460
g_string_append_printf (_tmp24_, " glib:type-struct=\"%s\"", _tmp25_);
1461
_tmp26_ = self->priv->buffer;
1463
_tmp28_ = vala_class_get_base_class (_tmp27_);
1465
_tmp30_ = vala_gir_writer_gi_type_name (self, (ValaTypeSymbol*) _tmp29_);
1467
g_string_append_printf (_tmp26_, " parent=\"%s\"", _tmp31_);
1470
_tmp33_ = vala_class_get_is_abstract (_tmp32_);
1474
_tmp35_ = self->priv->buffer;
1475
g_string_append_printf (_tmp35_, " abstract=\"1\"");
1478
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp36_);
1479
_tmp37_ = self->priv->buffer;
1480
g_string_append_printf (_tmp37_, ">\n");
1481
_tmp38_ = self->priv->indent;
1482
self->priv->indent = _tmp38_ + 1;
1484
_tmp40_ = vala_gir_writer_get_class_comment (self, _tmp39_);
1486
vala_gir_writer_write_doc (self, _tmp41_);
1490
ValaList* _tmp43_ = NULL;
1491
ValaList* _base_type_list;
1495
gint _base_type_size;
1496
gint _base_type_index;
1498
_tmp43_ = vala_class_get_base_types (_tmp42_);
1499
_base_type_list = _tmp43_;
1500
_tmp44_ = _base_type_list;
1501
_tmp45_ = vala_collection_get_size ((ValaCollection*) _tmp44_);
1503
_base_type_size = _tmp46_;
1504
_base_type_index = -1;
1511
gpointer _tmp52_ = NULL;
1512
ValaDataType* base_type;
1513
ValaDataType* _tmp53_;
1514
ValaObjectType* _tmp54_;
1515
ValaObjectType* object_type;
1516
ValaObjectType* _tmp55_;
1517
ValaObjectTypeSymbol* _tmp56_;
1518
ValaObjectTypeSymbol* _tmp57_;
1519
_tmp47_ = _base_type_index;
1520
_base_type_index = _tmp47_ + 1;
1521
_tmp48_ = _base_type_index;
1522
_tmp49_ = _base_type_size;
1523
if (!(_tmp48_ < _tmp49_)) {
1526
_tmp50_ = _base_type_list;
1527
_tmp51_ = _base_type_index;
1528
_tmp52_ = vala_list_get (_tmp50_, _tmp51_);
1529
base_type = (ValaDataType*) _tmp52_;
1530
_tmp53_ = base_type;
1531
_tmp54_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp53_, VALA_TYPE_OBJECT_TYPE, ValaObjectType));
1532
object_type = _tmp54_;
1533
_tmp55_ = object_type;
1534
_tmp56_ = vala_object_type_get_type_symbol (_tmp55_);
1536
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp57_, VALA_TYPE_INTERFACE)) {
1538
ValaObjectType* _tmp59_;
1539
ValaObjectTypeSymbol* _tmp60_;
1540
ValaObjectTypeSymbol* _tmp61_;
1541
gchar* _tmp62_ = NULL;
1543
vala_gir_writer_write_indent (self);
1544
_tmp58_ = self->priv->buffer;
1545
_tmp59_ = object_type;
1546
_tmp60_ = vala_object_type_get_type_symbol (_tmp59_);
1548
_tmp62_ = vala_gir_writer_gi_type_name (self, (ValaTypeSymbol*) _tmp61_);
1550
g_string_append_printf (_tmp58_, "<implements name=\"%s\"/>\n", _tmp63_);
1553
_vala_code_node_unref0 (object_type);
1554
_vala_code_node_unref0 (base_type);
1556
_vala_iterable_unref0 (_base_type_list);
1559
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp64_);
1560
vala_gir_writer_write_indent (self);
1561
_tmp65_ = self->priv->buffer;
1562
g_string_append_printf (_tmp65_, "<field name=\"parent_instance\">\n");
1563
_tmp66_ = self->priv->indent;
1564
self->priv->indent = _tmp66_ + 1;
1565
vala_gir_writer_write_indent (self);
1566
_tmp67_ = self->priv->buffer;
1568
_tmp69_ = vala_class_get_base_class (_tmp68_);
1570
_tmp71_ = vala_gir_writer_gi_type_name (self, (ValaTypeSymbol*) _tmp70_);
1573
_tmp74_ = vala_class_get_base_class (_tmp73_);
1575
_tmp76_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp75_);
1577
g_string_append_printf (_tmp67_, "<type name=\"%s\" c:type=\"%s\"/>\n", _tmp72_, _tmp77_);
1580
_tmp78_ = self->priv->indent;
1581
self->priv->indent = _tmp78_ - 1;
1582
vala_gir_writer_write_indent (self);
1583
_tmp79_ = self->priv->buffer;
1584
g_string_append_printf (_tmp79_, "</field>\n");
1585
vala_gir_writer_write_indent (self);
1586
_tmp80_ = self->priv->buffer;
1587
g_string_append_printf (_tmp80_, "<field name=\"priv\">\n");
1588
_tmp81_ = self->priv->indent;
1589
self->priv->indent = _tmp81_ + 1;
1590
vala_gir_writer_write_indent (self);
1591
_tmp82_ = self->priv->buffer;
1593
_tmp84_ = vala_symbol_get_name ((ValaSymbol*) _tmp83_);
1596
_tmp87_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp86_);
1598
g_string_append_printf (_tmp82_, "<type name=\"%sPrivate\" c:type=\"%sPrivate*\"/>\n", _tmp85_, _tmp88_);
1600
_tmp89_ = self->priv->indent;
1601
self->priv->indent = _tmp89_ - 1;
1602
vala_gir_writer_write_indent (self);
1603
_tmp90_ = self->priv->buffer;
1604
g_string_append_printf (_tmp90_, "</field>\n");
1605
_tmp91_ = self->priv->hierarchy;
1607
vala_list_insert ((ValaList*) _tmp91_, 0, (ValaSymbol*) _tmp92_);
1609
vala_code_node_accept_children ((ValaCodeNode*) _tmp93_, (ValaCodeVisitor*) self);
1610
_tmp94_ = self->priv->hierarchy;
1611
vala_list_remove_at ((ValaList*) _tmp94_, 0);
1612
_tmp95_ = self->priv->indent;
1613
self->priv->indent = _tmp95_ - 1;
1614
vala_gir_writer_write_indent (self);
1615
_tmp96_ = self->priv->buffer;
1616
g_string_append_printf (_tmp96_, "</class>\n");
1617
vala_gir_writer_write_indent (self);
1618
_tmp97_ = self->priv->buffer;
1619
_tmp98_ = gtype_struct_name;
1620
g_string_append_printf (_tmp97_, "<record name=\"%s\"", _tmp98_);
1622
vala_gir_writer_write_ctype_attributes (self, (ValaTypeSymbol*) _tmp99_, "Class");
1623
_tmp100_ = self->priv->buffer;
1625
_tmp102_ = vala_symbol_get_name ((ValaSymbol*) _tmp101_);
1626
_tmp103_ = _tmp102_;
1627
g_string_append_printf (_tmp100_, " glib:is-gtype-struct-for=\"%s\"", _tmp103_);
1628
_tmp104_ = self->priv->buffer;
1629
g_string_append_printf (_tmp104_, ">\n");
1630
_tmp105_ = self->priv->indent;
1631
self->priv->indent = _tmp105_ + 1;
1632
vala_gir_writer_write_indent (self);
1633
_tmp106_ = self->priv->buffer;
1634
g_string_append_printf (_tmp106_, "<field name=\"parent_class\">\n");
1635
_tmp107_ = self->priv->indent;
1636
self->priv->indent = _tmp107_ + 1;
1637
vala_gir_writer_write_indent (self);
1638
_tmp108_ = self->priv->buffer;
1640
_tmp110_ = vala_class_get_base_class (_tmp109_);
1641
_tmp111_ = _tmp110_;
1642
_tmp112_ = vala_gir_writer_gi_type_name (self, (ValaTypeSymbol*) _tmp111_);
1643
_tmp113_ = _tmp112_;
1645
_tmp115_ = vala_class_get_base_class (_tmp114_);
1646
_tmp116_ = _tmp115_;
1647
_tmp117_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp116_);
1648
_tmp118_ = _tmp117_;
1649
g_string_append_printf (_tmp108_, "<type name=\"%sClass\" c:type=\"%sClass\"/>\n", _tmp113_, _tmp118_);
1650
_g_free0 (_tmp118_);
1651
_g_free0 (_tmp113_);
1652
_tmp119_ = self->priv->indent;
1653
self->priv->indent = _tmp119_ - 1;
1654
vala_gir_writer_write_indent (self);
1655
_tmp120_ = self->priv->buffer;
1656
g_string_append_printf (_tmp120_, "</field>\n");
1658
ValaClass* _tmp121_;
1659
ValaList* _tmp122_ = NULL;
1667
_tmp122_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp121_);
1670
_tmp124_ = vala_collection_get_size ((ValaCollection*) _tmp123_);
1671
_tmp125_ = _tmp124_;
1680
gpointer _tmp131_ = NULL;
1682
gboolean _tmp132_ = FALSE;
1683
ValaMethod* _tmp133_;
1687
_tmp126_ = _m_index;
1688
_m_index = _tmp126_ + 1;
1689
_tmp127_ = _m_index;
1691
if (!(_tmp127_ < _tmp128_)) {
1695
_tmp130_ = _m_index;
1696
_tmp131_ = vala_list_get (_tmp129_, _tmp130_);
1697
m = (ValaMethod*) _tmp131_;
1699
_tmp134_ = vala_method_get_is_abstract (_tmp133_);
1700
_tmp135_ = _tmp134_;
1704
ValaMethod* _tmp136_;
1708
_tmp137_ = vala_method_get_is_virtual (_tmp136_);
1709
_tmp138_ = _tmp137_;
1710
_tmp132_ = _tmp138_;
1712
_tmp139_ = _tmp132_;
1714
ValaMethod* _tmp140_;
1717
vala_gir_writer_write_indent (self);
1719
_tmp141_ = vala_method_get_coroutine (_tmp140_);
1720
_tmp142_ = _tmp141_;
1722
ValaMethod* _tmp143_;
1723
const gchar* _tmp144_;
1724
const gchar* _tmp145_;
1727
const gchar* _tmp147_;
1728
gboolean _tmp148_ = FALSE;
1729
const gchar* _tmp156_;
1732
ValaMethod* _tmp159_;
1733
const gchar* _tmp160_;
1734
const gchar* _tmp161_;
1736
ValaMethod* _tmp163_;
1737
ValaMethod* _tmp164_;
1738
const gchar* _tmp165_;
1739
const gchar* _tmp166_;
1740
ValaMethod* _tmp167_;
1741
gchar* _tmp168_ = NULL;
1743
ValaMethod* _tmp170_;
1744
ValaList* _tmp171_ = NULL;
1746
ValaVoidType* _tmp173_;
1747
ValaVoidType* _tmp174_;
1751
const gchar* _tmp178_;
1753
ValaMethod* _tmp180_;
1754
const gchar* _tmp181_;
1755
ValaMethod* _tmp182_;
1756
gchar* _tmp183_ = NULL;
1758
ValaMethod* _tmp185_;
1759
ValaList* _tmp186_ = NULL;
1761
ValaMethod* _tmp188_;
1762
ValaDataType* _tmp189_;
1763
ValaDataType* _tmp190_;
1764
ValaMethod* _tmp191_;
1770
_tmp144_ = vala_symbol_get_name ((ValaSymbol*) _tmp143_);
1771
_tmp145_ = _tmp144_;
1772
_tmp146_ = g_strdup (_tmp145_);
1773
finish_name = _tmp146_;
1774
_tmp147_ = finish_name;
1775
_tmp148_ = g_str_has_suffix (_tmp147_, "_async");
1777
const gchar* _tmp149_;
1778
const gchar* _tmp150_;
1783
gchar* _tmp155_ = NULL;
1784
_tmp149_ = finish_name;
1785
_tmp150_ = finish_name;
1786
_tmp151_ = strlen (_tmp150_);
1787
_tmp152_ = _tmp151_;
1788
_tmp153_ = strlen ("_async");
1789
_tmp154_ = _tmp153_;
1790
_tmp155_ = string_substring (_tmp149_, (glong) 0, (glong) (_tmp152_ - _tmp154_));
1791
_g_free0 (finish_name);
1792
finish_name = _tmp155_;
1794
_tmp156_ = finish_name;
1795
_tmp157_ = g_strconcat (_tmp156_, "_finish", NULL);
1796
_g_free0 (finish_name);
1797
finish_name = _tmp157_;
1798
vala_gir_writer_write_indent (self);
1799
_tmp158_ = self->priv->buffer;
1801
_tmp160_ = vala_symbol_get_name ((ValaSymbol*) _tmp159_);
1802
_tmp161_ = _tmp160_;
1803
g_string_append_printf (_tmp158_, "<field name=\"%s\">\n", _tmp161_);
1804
_tmp162_ = self->priv->indent;
1805
self->priv->indent = _tmp162_ + 1;
1808
_tmp165_ = vala_symbol_get_name ((ValaSymbol*) _tmp164_);
1809
_tmp166_ = _tmp165_;
1811
_tmp168_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp167_);
1812
_tmp169_ = _tmp168_;
1814
_tmp171_ = vala_method_get_async_begin_parameters (_tmp170_);
1815
_tmp172_ = _tmp171_;
1816
_tmp173_ = vala_void_type_new (NULL);
1817
_tmp174_ = _tmp173_;
1818
vala_gir_writer_do_write_signature (self, _tmp163_, "callback", TRUE, _tmp166_, _tmp169_, _tmp172_, (ValaDataType*) _tmp174_, FALSE, FALSE);
1819
_vala_code_node_unref0 (_tmp174_);
1820
_vala_iterable_unref0 (_tmp172_);
1821
_g_free0 (_tmp169_);
1822
_tmp175_ = self->priv->indent;
1823
self->priv->indent = _tmp175_ - 1;
1824
vala_gir_writer_write_indent (self);
1825
_tmp176_ = self->priv->buffer;
1826
g_string_append_printf (_tmp176_, "</field>\n");
1827
vala_gir_writer_write_indent (self);
1828
_tmp177_ = self->priv->buffer;
1829
_tmp178_ = finish_name;
1830
g_string_append_printf (_tmp177_, "<field name=\"%s\">\n", _tmp178_);
1831
_tmp179_ = self->priv->indent;
1832
self->priv->indent = _tmp179_ + 1;
1834
_tmp181_ = finish_name;
1836
_tmp183_ = vala_ccode_base_module_get_ccode_finish_name (_tmp182_);
1837
_tmp184_ = _tmp183_;
1839
_tmp186_ = vala_method_get_async_end_parameters (_tmp185_);
1840
_tmp187_ = _tmp186_;
1842
_tmp189_ = vala_method_get_return_type (_tmp188_);
1843
_tmp190_ = _tmp189_;
1845
_tmp192_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp191_);
1846
_tmp193_ = _tmp192_;
1847
vala_gir_writer_do_write_signature (self, _tmp180_, "callback", TRUE, _tmp181_, _tmp184_, _tmp187_, _tmp190_, _tmp193_, FALSE);
1848
_vala_iterable_unref0 (_tmp187_);
1849
_g_free0 (_tmp184_);
1850
_tmp194_ = self->priv->indent;
1851
self->priv->indent = _tmp194_ - 1;
1852
vala_gir_writer_write_indent (self);
1853
_tmp195_ = self->priv->buffer;
1854
g_string_append_printf (_tmp195_, "</field>\n");
1855
_g_free0 (finish_name);
1858
ValaMethod* _tmp197_;
1859
const gchar* _tmp198_;
1860
const gchar* _tmp199_;
1862
ValaMethod* _tmp201_;
1863
ValaMethod* _tmp202_;
1864
const gchar* _tmp203_;
1865
const gchar* _tmp204_;
1866
ValaMethod* _tmp205_;
1867
gchar* _tmp206_ = NULL;
1869
ValaMethod* _tmp208_;
1870
ValaList* _tmp209_ = NULL;
1872
ValaMethod* _tmp211_;
1873
ValaDataType* _tmp212_;
1874
ValaDataType* _tmp213_;
1875
ValaMethod* _tmp214_;
1880
vala_gir_writer_write_indent (self);
1881
_tmp196_ = self->priv->buffer;
1883
_tmp198_ = vala_symbol_get_name ((ValaSymbol*) _tmp197_);
1884
_tmp199_ = _tmp198_;
1885
g_string_append_printf (_tmp196_, "<field name=\"%s\">\n", _tmp199_);
1886
_tmp200_ = self->priv->indent;
1887
self->priv->indent = _tmp200_ + 1;
1890
_tmp203_ = vala_symbol_get_name ((ValaSymbol*) _tmp202_);
1891
_tmp204_ = _tmp203_;
1893
_tmp206_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp205_);
1894
_tmp207_ = _tmp206_;
1896
_tmp209_ = vala_method_get_parameters (_tmp208_);
1897
_tmp210_ = _tmp209_;
1899
_tmp212_ = vala_method_get_return_type (_tmp211_);
1900
_tmp213_ = _tmp212_;
1902
_tmp215_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp214_);
1903
_tmp216_ = _tmp215_;
1904
vala_gir_writer_do_write_signature (self, _tmp201_, "callback", TRUE, _tmp204_, _tmp207_, _tmp210_, _tmp213_, _tmp216_, FALSE);
1905
_vala_iterable_unref0 (_tmp210_);
1906
_g_free0 (_tmp207_);
1907
_tmp217_ = self->priv->indent;
1908
self->priv->indent = _tmp217_ - 1;
1909
vala_gir_writer_write_indent (self);
1910
_tmp218_ = self->priv->buffer;
1911
g_string_append_printf (_tmp218_, "</field>\n");
1914
_vala_code_node_unref0 (m);
1916
_vala_iterable_unref0 (_m_list);
1919
ValaClass* _tmp219_;
1920
ValaList* _tmp220_ = NULL;
1921
ValaList* _sig_list;
1928
_tmp220_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp219_);
1929
_sig_list = _tmp220_;
1930
_tmp221_ = _sig_list;
1931
_tmp222_ = vala_collection_get_size ((ValaCollection*) _tmp221_);
1932
_tmp223_ = _tmp222_;
1933
_sig_size = _tmp223_;
1941
gpointer _tmp229_ = NULL;
1943
ValaSignal* _tmp230_;
1944
ValaMethod* _tmp231_;
1945
ValaMethod* _tmp232_;
1946
_tmp224_ = _sig_index;
1947
_sig_index = _tmp224_ + 1;
1948
_tmp225_ = _sig_index;
1949
_tmp226_ = _sig_size;
1950
if (!(_tmp225_ < _tmp226_)) {
1953
_tmp227_ = _sig_list;
1954
_tmp228_ = _sig_index;
1955
_tmp229_ = vala_list_get (_tmp227_, _tmp228_);
1956
sig = (ValaSignal*) _tmp229_;
1958
_tmp231_ = vala_signal_get_default_handler (_tmp230_);
1959
_tmp232_ = _tmp231_;
1960
if (_tmp232_ != NULL) {
1962
ValaSignal* _tmp234_;
1963
const gchar* _tmp235_;
1964
const gchar* _tmp236_;
1966
ValaSignal* _tmp238_;
1967
ValaMethod* _tmp239_;
1968
ValaMethod* _tmp240_;
1971
vala_gir_writer_write_indent (self);
1972
_tmp233_ = self->priv->buffer;
1974
_tmp235_ = vala_symbol_get_name ((ValaSymbol*) _tmp234_);
1975
_tmp236_ = _tmp235_;
1976
g_string_append_printf (_tmp233_, "<field name=\"%s\">\n", _tmp236_);
1977
_tmp237_ = self->priv->indent;
1978
self->priv->indent = _tmp237_ + 1;
1980
_tmp239_ = vala_signal_get_default_handler (_tmp238_);
1981
_tmp240_ = _tmp239_;
1982
vala_gir_writer_write_signature (self, _tmp240_, "callback", FALSE, TRUE);
1983
_tmp241_ = self->priv->indent;
1984
self->priv->indent = _tmp241_ - 1;
1985
vala_gir_writer_write_indent (self);
1986
_tmp242_ = self->priv->buffer;
1987
g_string_append_printf (_tmp242_, "</field>\n");
1989
_vala_code_node_unref0 (sig);
1991
_vala_iterable_unref0 (_sig_list);
1993
_tmp243_ = self->priv->indent;
1994
self->priv->indent = _tmp243_ - 1;
1995
vala_gir_writer_write_indent (self);
1996
_tmp244_ = self->priv->buffer;
1997
g_string_append_printf (_tmp244_, "</record>\n");
1998
vala_gir_writer_write_indent (self);
1999
_tmp245_ = self->priv->buffer;
2001
_tmp247_ = vala_symbol_get_name ((ValaSymbol*) _tmp246_);
2002
_tmp248_ = _tmp247_;
2004
_tmp250_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp249_);
2005
_tmp251_ = _tmp250_;
2006
g_string_append_printf (_tmp245_, "<record name=\"%sPrivate\" c:type=\"%sPrivate\" disguised=\"1\"/>\n", _tmp248_, _tmp251_);
2007
_g_free0 (_tmp251_);
2008
_g_free0 (gtype_struct_name);
2011
ValaClass* _tmp253_;
2012
gchar* _tmp254_ = NULL;
2014
ValaClass* _tmp256_;
2017
ValaClass* _tmp259_;
2018
gchar* _tmp260_ = NULL;
2020
ValaClass* _tmp262_;
2021
ValaArrayList* _tmp263_;
2022
ValaClass* _tmp264_;
2023
ValaClass* _tmp265_;
2024
ValaArrayList* _tmp266_;
2027
vala_gir_writer_write_indent (self);
2028
_tmp252_ = self->priv->buffer;
2030
_tmp254_ = vala_gir_writer_get_gir_name (self, (ValaSymbol*) _tmp253_);
2031
_tmp255_ = _tmp254_;
2032
g_string_append_printf (_tmp252_, "<record name=\"%s\"", _tmp255_);
2033
_g_free0 (_tmp255_);
2035
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp256_);
2036
_tmp257_ = self->priv->buffer;
2037
g_string_append_printf (_tmp257_, ">\n");
2038
_tmp258_ = self->priv->indent;
2039
self->priv->indent = _tmp258_ + 1;
2041
_tmp260_ = vala_gir_writer_get_class_comment (self, _tmp259_);
2042
_tmp261_ = _tmp260_;
2043
vala_gir_writer_write_doc (self, _tmp261_);
2044
_g_free0 (_tmp261_);
2046
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp262_);
2047
_tmp263_ = self->priv->hierarchy;
2049
vala_list_insert ((ValaList*) _tmp263_, 0, (ValaSymbol*) _tmp264_);
2051
vala_code_node_accept_children ((ValaCodeNode*) _tmp265_, (ValaCodeVisitor*) self);
2052
_tmp266_ = self->priv->hierarchy;
2053
vala_list_remove_at ((ValaList*) _tmp266_, 0);
2054
_tmp267_ = self->priv->indent;
2055
self->priv->indent = _tmp267_ - 1;
2056
vala_gir_writer_write_indent (self);
2057
_tmp268_ = self->priv->buffer;
2058
g_string_append_printf (_tmp268_, "</record>\n");
2060
vala_gir_writer_visit_deferred (self);
2064
static void vala_gir_writer_real_visit_struct (ValaCodeVisitor* base, ValaStruct* st) {
2065
ValaGIRWriter * self;
2070
gboolean _tmp4_ = FALSE;
2071
ValaArrayList* _tmp5_;
2072
gpointer _tmp6_ = NULL;
2076
ValaStruct* _tmp12_;
2077
gchar* _tmp13_ = NULL;
2079
ValaStruct* _tmp15_;
2082
ValaStruct* _tmp18_;
2083
gchar* _tmp19_ = NULL;
2085
ValaStruct* _tmp21_;
2086
ValaArrayList* _tmp22_;
2087
ValaStruct* _tmp23_;
2088
ValaStruct* _tmp24_;
2089
ValaArrayList* _tmp25_;
2092
self = (ValaGIRWriter*) base;
2093
g_return_if_fail (st != NULL);
2095
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
2101
_tmp4_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp3_);
2105
_tmp5_ = self->priv->hierarchy;
2106
_tmp6_ = vala_list_get ((ValaList*) _tmp5_, 0);
2107
_tmp7_ = (ValaSymbol*) _tmp6_;
2108
_tmp8_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_NAMESPACE);
2109
_vala_code_node_unref0 (_tmp7_);
2111
ValaArrayList* _tmp9_;
2112
ValaStruct* _tmp10_;
2113
_tmp9_ = self->priv->deferred;
2115
vala_collection_add ((ValaCollection*) _tmp9_, (ValaCodeNode*) _tmp10_);
2118
vala_gir_writer_write_indent (self);
2119
_tmp11_ = self->priv->buffer;
2121
_tmp13_ = vala_gir_writer_get_gir_name (self, (ValaSymbol*) _tmp12_);
2123
g_string_append_printf (_tmp11_, "<record name=\"%s\"", _tmp14_);
2126
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp15_);
2127
_tmp16_ = self->priv->buffer;
2128
g_string_append_printf (_tmp16_, ">\n");
2129
_tmp17_ = self->priv->indent;
2130
self->priv->indent = _tmp17_ + 1;
2132
_tmp19_ = vala_gir_writer_get_struct_comment (self, _tmp18_);
2134
vala_gir_writer_write_doc (self, _tmp20_);
2137
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp21_);
2138
_tmp22_ = self->priv->hierarchy;
2140
vala_list_insert ((ValaList*) _tmp22_, 0, (ValaSymbol*) _tmp23_);
2142
vala_code_node_accept_children ((ValaCodeNode*) _tmp24_, (ValaCodeVisitor*) self);
2143
_tmp25_ = self->priv->hierarchy;
2144
vala_list_remove_at ((ValaList*) _tmp25_, 0);
2145
_tmp26_ = self->priv->indent;
2146
self->priv->indent = _tmp26_ - 1;
2147
vala_gir_writer_write_indent (self);
2148
_tmp27_ = self->priv->buffer;
2149
g_string_append_printf (_tmp27_, "</record>\n");
2150
vala_gir_writer_visit_deferred (self);
2154
static void vala_gir_writer_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface) {
2155
ValaGIRWriter * self;
2156
ValaInterface* _tmp0_;
2159
ValaInterface* _tmp3_;
2160
gboolean _tmp4_ = FALSE;
2161
ValaArrayList* _tmp5_;
2162
gpointer _tmp6_ = NULL;
2165
ValaInterface* _tmp11_;
2166
const gchar* _tmp12_;
2167
const gchar* _tmp13_;
2169
gchar* gtype_struct_name;
2171
ValaInterface* _tmp16_;
2172
gchar* _tmp17_ = NULL;
2174
ValaInterface* _tmp19_;
2176
const gchar* _tmp21_;
2177
ValaInterface* _tmp22_;
2180
ValaInterface* _tmp25_;
2181
gchar* _tmp26_ = NULL;
2183
ValaInterface* _tmp28_;
2184
ValaList* _tmp29_ = NULL;
2189
ValaInterface* _tmp51_;
2190
ValaArrayList* _tmp52_;
2191
ValaInterface* _tmp53_;
2192
ValaInterface* _tmp54_;
2193
ValaArrayList* _tmp55_;
2197
const gchar* _tmp59_;
2198
ValaInterface* _tmp60_;
2200
ValaInterface* _tmp62_;
2201
const gchar* _tmp63_;
2202
const gchar* _tmp64_;
2212
self = (ValaGIRWriter*) base;
2213
g_return_if_fail (iface != NULL);
2215
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
2221
_tmp4_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp3_);
2225
_tmp5_ = self->priv->hierarchy;
2226
_tmp6_ = vala_list_get ((ValaList*) _tmp5_, 0);
2227
_tmp7_ = (ValaSymbol*) _tmp6_;
2228
_tmp8_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_NAMESPACE);
2229
_vala_code_node_unref0 (_tmp7_);
2231
ValaArrayList* _tmp9_;
2232
ValaInterface* _tmp10_;
2233
_tmp9_ = self->priv->deferred;
2235
vala_collection_add ((ValaCollection*) _tmp9_, (ValaCodeNode*) _tmp10_);
2239
_tmp12_ = vala_symbol_get_name ((ValaSymbol*) _tmp11_);
2241
_tmp14_ = g_strconcat (_tmp13_, "Iface", NULL);
2242
gtype_struct_name = _tmp14_;
2243
vala_gir_writer_write_indent (self);
2244
_tmp15_ = self->priv->buffer;
2246
_tmp17_ = vala_gir_writer_get_gir_name (self, (ValaSymbol*) _tmp16_);
2248
g_string_append_printf (_tmp15_, "<interface name=\"%s\"", _tmp18_);
2251
vala_gir_writer_write_gtype_attributes (self, (ValaTypeSymbol*) _tmp19_);
2252
_tmp20_ = self->priv->buffer;
2253
_tmp21_ = gtype_struct_name;
2254
g_string_append_printf (_tmp20_, " glib:type-struct=\"%s\"", _tmp21_);
2256
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp22_);
2257
_tmp23_ = self->priv->buffer;
2258
g_string_append_printf (_tmp23_, ">\n");
2259
_tmp24_ = self->priv->indent;
2260
self->priv->indent = _tmp24_ + 1;
2262
_tmp26_ = vala_gir_writer_get_interface_comment (self, _tmp25_);
2264
vala_gir_writer_write_doc (self, _tmp27_);
2267
_tmp29_ = vala_interface_get_prerequisites (_tmp28_);
2269
_tmp31_ = vala_collection_get_size ((ValaCollection*) _tmp30_);
2271
_tmp33_ = _tmp32_ > 0;
2272
_vala_iterable_unref0 (_tmp30_);
2275
ValaInterface* _tmp34_;
2276
ValaList* _tmp35_ = NULL;
2277
ValaList* _base_type_list;
2281
gint _base_type_size;
2282
gint _base_type_index;
2284
_tmp35_ = vala_interface_get_prerequisites (_tmp34_);
2285
_base_type_list = _tmp35_;
2286
_tmp36_ = _base_type_list;
2287
_tmp37_ = vala_collection_get_size ((ValaCollection*) _tmp36_);
2289
_base_type_size = _tmp38_;
2290
_base_type_index = -1;
2297
gpointer _tmp44_ = NULL;
2298
ValaDataType* base_type;
2300
ValaDataType* _tmp46_;
2301
ValaObjectTypeSymbol* _tmp47_;
2302
ValaObjectTypeSymbol* _tmp48_;
2303
gchar* _tmp49_ = NULL;
2305
_tmp39_ = _base_type_index;
2306
_base_type_index = _tmp39_ + 1;
2307
_tmp40_ = _base_type_index;
2308
_tmp41_ = _base_type_size;
2309
if (!(_tmp40_ < _tmp41_)) {
2312
_tmp42_ = _base_type_list;
2313
_tmp43_ = _base_type_index;
2314
_tmp44_ = vala_list_get (_tmp42_, _tmp43_);
2315
base_type = (ValaDataType*) _tmp44_;
2316
vala_gir_writer_write_indent (self);
2317
_tmp45_ = self->priv->buffer;
2318
_tmp46_ = base_type;
2319
_tmp47_ = vala_object_type_get_type_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp46_, VALA_TYPE_OBJECT_TYPE, ValaObjectType));
2321
_tmp49_ = vala_gir_writer_gi_type_name (self, (ValaTypeSymbol*) _tmp48_);
2323
g_string_append_printf (_tmp45_, "<prerequisite name=\"%s\"/>\n", _tmp50_);
2325
_vala_code_node_unref0 (base_type);
2327
_vala_iterable_unref0 (_base_type_list);
2331
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp51_);
2332
_tmp52_ = self->priv->hierarchy;
2334
vala_list_insert ((ValaList*) _tmp52_, 0, (ValaSymbol*) _tmp53_);
2336
vala_code_node_accept_children ((ValaCodeNode*) _tmp54_, (ValaCodeVisitor*) self);
2337
_tmp55_ = self->priv->hierarchy;
2338
vala_list_remove_at ((ValaList*) _tmp55_, 0);
2339
_tmp56_ = self->priv->indent;
2340
self->priv->indent = _tmp56_ - 1;
2341
vala_gir_writer_write_indent (self);
2342
_tmp57_ = self->priv->buffer;
2343
g_string_append_printf (_tmp57_, "</interface>\n");
2344
vala_gir_writer_write_indent (self);
2345
_tmp58_ = self->priv->buffer;
2346
_tmp59_ = gtype_struct_name;
2347
g_string_append_printf (_tmp58_, "<record name=\"%s\"", _tmp59_);
2349
vala_gir_writer_write_ctype_attributes (self, (ValaTypeSymbol*) _tmp60_, "Iface");
2350
_tmp61_ = self->priv->buffer;
2352
_tmp63_ = vala_symbol_get_name ((ValaSymbol*) _tmp62_);
2354
g_string_append_printf (_tmp61_, " glib:is-gtype-struct-for=\"%s\"", _tmp64_);
2355
_tmp65_ = self->priv->buffer;
2356
g_string_append_printf (_tmp65_, ">\n");
2357
_tmp66_ = self->priv->indent;
2358
self->priv->indent = _tmp66_ + 1;
2359
vala_gir_writer_write_indent (self);
2360
_tmp67_ = self->priv->buffer;
2361
g_string_append_printf (_tmp67_, "<field name=\"parent_iface\">\n");
2362
_tmp68_ = self->priv->indent;
2363
self->priv->indent = _tmp68_ + 1;
2364
vala_gir_writer_write_indent (self);
2365
_tmp69_ = self->priv->buffer;
2366
g_string_append_printf (_tmp69_, "<type name=\"GObject.TypeInterface\" c:type=\"GTypeInterface\"/>\n");
2367
_tmp70_ = self->priv->indent;
2368
self->priv->indent = _tmp70_ - 1;
2369
vala_gir_writer_write_indent (self);
2370
_tmp71_ = self->priv->buffer;
2371
g_string_append_printf (_tmp71_, "</field>\n");
2373
ValaInterface* _tmp72_;
2374
ValaList* _tmp73_ = NULL;
2382
_tmp73_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp72_);
2385
_tmp75_ = vala_collection_get_size ((ValaCollection*) _tmp74_);
2395
gpointer _tmp82_ = NULL;
2397
gboolean _tmp83_ = FALSE;
2398
ValaMethod* _tmp84_;
2403
_m_index = _tmp77_ + 1;
2406
if (!(_tmp78_ < _tmp79_)) {
2411
_tmp82_ = vala_list_get (_tmp80_, _tmp81_);
2412
m = (ValaMethod*) _tmp82_;
2414
_tmp85_ = vala_method_get_is_abstract (_tmp84_);
2419
ValaMethod* _tmp87_;
2423
_tmp88_ = vala_method_get_is_virtual (_tmp87_);
2429
ValaMethod* _tmp91_;
2433
_tmp92_ = vala_method_get_coroutine (_tmp91_);
2436
ValaMethod* _tmp94_;
2437
const gchar* _tmp95_;
2438
const gchar* _tmp96_;
2441
const gchar* _tmp98_;
2442
gboolean _tmp99_ = FALSE;
2443
const gchar* _tmp107_;
2446
ValaMethod* _tmp110_;
2447
const gchar* _tmp111_;
2448
const gchar* _tmp112_;
2450
ValaMethod* _tmp114_;
2451
ValaMethod* _tmp115_;
2452
const gchar* _tmp116_;
2453
const gchar* _tmp117_;
2454
ValaMethod* _tmp118_;
2455
gchar* _tmp119_ = NULL;
2457
ValaMethod* _tmp121_;
2458
ValaList* _tmp122_ = NULL;
2460
ValaVoidType* _tmp124_;
2461
ValaVoidType* _tmp125_;
2465
const gchar* _tmp129_;
2467
ValaMethod* _tmp131_;
2468
const gchar* _tmp132_;
2469
ValaMethod* _tmp133_;
2470
gchar* _tmp134_ = NULL;
2472
ValaMethod* _tmp136_;
2473
ValaList* _tmp137_ = NULL;
2475
ValaMethod* _tmp139_;
2476
ValaDataType* _tmp140_;
2477
ValaDataType* _tmp141_;
2478
ValaMethod* _tmp142_;
2484
_tmp95_ = vala_symbol_get_name ((ValaSymbol*) _tmp94_);
2486
_tmp97_ = g_strdup (_tmp96_);
2487
finish_name = _tmp97_;
2488
_tmp98_ = finish_name;
2489
_tmp99_ = g_str_has_suffix (_tmp98_, "_async");
2491
const gchar* _tmp100_;
2492
const gchar* _tmp101_;
2497
gchar* _tmp106_ = NULL;
2498
_tmp100_ = finish_name;
2499
_tmp101_ = finish_name;
2500
_tmp102_ = strlen (_tmp101_);
2501
_tmp103_ = _tmp102_;
2502
_tmp104_ = strlen ("_async");
2503
_tmp105_ = _tmp104_;
2504
_tmp106_ = string_substring (_tmp100_, (glong) 0, (glong) (_tmp103_ - _tmp105_));
2505
_g_free0 (finish_name);
2506
finish_name = _tmp106_;
2508
_tmp107_ = finish_name;
2509
_tmp108_ = g_strconcat (_tmp107_, "_finish", NULL);
2510
_g_free0 (finish_name);
2511
finish_name = _tmp108_;
2512
vala_gir_writer_write_indent (self);
2513
_tmp109_ = self->priv->buffer;
2515
_tmp111_ = vala_symbol_get_name ((ValaSymbol*) _tmp110_);
2516
_tmp112_ = _tmp111_;
2517
g_string_append_printf (_tmp109_, "<field name=\"%s\">\n", _tmp112_);
2518
_tmp113_ = self->priv->indent;
2519
self->priv->indent = _tmp113_ + 1;
2522
_tmp116_ = vala_symbol_get_name ((ValaSymbol*) _tmp115_);
2523
_tmp117_ = _tmp116_;
2525
_tmp119_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp118_);
2526
_tmp120_ = _tmp119_;
2528
_tmp122_ = vala_method_get_async_begin_parameters (_tmp121_);
2529
_tmp123_ = _tmp122_;
2530
_tmp124_ = vala_void_type_new (NULL);
2531
_tmp125_ = _tmp124_;
2532
vala_gir_writer_do_write_signature (self, _tmp114_, "callback", TRUE, _tmp117_, _tmp120_, _tmp123_, (ValaDataType*) _tmp125_, FALSE, FALSE);
2533
_vala_code_node_unref0 (_tmp125_);
2534
_vala_iterable_unref0 (_tmp123_);
2535
_g_free0 (_tmp120_);
2536
_tmp126_ = self->priv->indent;
2537
self->priv->indent = _tmp126_ - 1;
2538
vala_gir_writer_write_indent (self);
2539
_tmp127_ = self->priv->buffer;
2540
g_string_append_printf (_tmp127_, "</field>\n");
2541
vala_gir_writer_write_indent (self);
2542
_tmp128_ = self->priv->buffer;
2543
_tmp129_ = finish_name;
2544
g_string_append_printf (_tmp128_, "<field name=\"%s\">\n", _tmp129_);
2545
_tmp130_ = self->priv->indent;
2546
self->priv->indent = _tmp130_ + 1;
2548
_tmp132_ = finish_name;
2550
_tmp134_ = vala_ccode_base_module_get_ccode_finish_name (_tmp133_);
2551
_tmp135_ = _tmp134_;
2553
_tmp137_ = vala_method_get_async_end_parameters (_tmp136_);
2554
_tmp138_ = _tmp137_;
2556
_tmp140_ = vala_method_get_return_type (_tmp139_);
2557
_tmp141_ = _tmp140_;
2559
_tmp143_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp142_);
2560
_tmp144_ = _tmp143_;
2561
vala_gir_writer_do_write_signature (self, _tmp131_, "callback", TRUE, _tmp132_, _tmp135_, _tmp138_, _tmp141_, _tmp144_, FALSE);
2562
_vala_iterable_unref0 (_tmp138_);
2563
_g_free0 (_tmp135_);
2564
_tmp145_ = self->priv->indent;
2565
self->priv->indent = _tmp145_ - 1;
2566
vala_gir_writer_write_indent (self);
2567
_tmp146_ = self->priv->buffer;
2568
g_string_append_printf (_tmp146_, "</field>\n");
2569
_g_free0 (finish_name);
2572
ValaMethod* _tmp148_;
2573
const gchar* _tmp149_;
2574
const gchar* _tmp150_;
2576
ValaMethod* _tmp152_;
2577
ValaMethod* _tmp153_;
2578
const gchar* _tmp154_;
2579
const gchar* _tmp155_;
2580
ValaMethod* _tmp156_;
2581
gchar* _tmp157_ = NULL;
2583
ValaMethod* _tmp159_;
2584
ValaList* _tmp160_ = NULL;
2586
ValaMethod* _tmp162_;
2587
ValaDataType* _tmp163_;
2588
ValaDataType* _tmp164_;
2589
ValaMethod* _tmp165_;
2594
vala_gir_writer_write_indent (self);
2595
_tmp147_ = self->priv->buffer;
2597
_tmp149_ = vala_symbol_get_name ((ValaSymbol*) _tmp148_);
2598
_tmp150_ = _tmp149_;
2599
g_string_append_printf (_tmp147_, "<field name=\"%s\">\n", _tmp150_);
2600
_tmp151_ = self->priv->indent;
2601
self->priv->indent = _tmp151_ + 1;
2604
_tmp154_ = vala_symbol_get_name ((ValaSymbol*) _tmp153_);
2605
_tmp155_ = _tmp154_;
2607
_tmp157_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp156_);
2608
_tmp158_ = _tmp157_;
2610
_tmp160_ = vala_method_get_parameters (_tmp159_);
2611
_tmp161_ = _tmp160_;
2613
_tmp163_ = vala_method_get_return_type (_tmp162_);
2614
_tmp164_ = _tmp163_;
2616
_tmp166_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp165_);
2617
_tmp167_ = _tmp166_;
2618
vala_gir_writer_do_write_signature (self, _tmp152_, "callback", TRUE, _tmp155_, _tmp158_, _tmp161_, _tmp164_, _tmp167_, FALSE);
2619
_vala_iterable_unref0 (_tmp161_);
2620
_g_free0 (_tmp158_);
2621
_tmp168_ = self->priv->indent;
2622
self->priv->indent = _tmp168_ - 1;
2623
vala_gir_writer_write_indent (self);
2624
_tmp169_ = self->priv->buffer;
2625
g_string_append_printf (_tmp169_, "</field>\n");
2628
_vala_code_node_unref0 (m);
2630
_vala_iterable_unref0 (_m_list);
2632
_tmp170_ = self->priv->indent;
2633
self->priv->indent = _tmp170_ - 1;
2634
vala_gir_writer_write_indent (self);
2635
_tmp171_ = self->priv->buffer;
2636
g_string_append_printf (_tmp171_, "</record>\n");
2637
vala_gir_writer_visit_deferred (self);
2638
_g_free0 (gtype_struct_name);
2642
static void vala_gir_writer_visit_deferred (ValaGIRWriter* self) {
2643
ValaArrayList* _tmp0_;
2644
ValaArrayList* _tmp1_;
2645
ValaArrayList* nodes;
2647
ValaArrayList* _tmp3_;
2648
g_return_if_fail (self != NULL);
2649
_tmp0_ = self->priv->deferred;
2650
_tmp1_ = _vala_iterable_ref0 (_tmp0_);
2652
_tmp2_ = g_direct_equal;
2653
_tmp3_ = vala_array_list_new (VALA_TYPE_CODE_NODE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp2_);
2654
_vala_iterable_unref0 (self->priv->deferred);
2655
self->priv->deferred = _tmp3_;
2657
ValaArrayList* _tmp4_;
2658
ValaArrayList* _tmp5_;
2659
ValaArrayList* _node_list;
2660
ValaArrayList* _tmp6_;
2666
_tmp5_ = _vala_iterable_ref0 (_tmp4_);
2667
_node_list = _tmp5_;
2668
_tmp6_ = _node_list;
2669
_tmp7_ = vala_collection_get_size ((ValaCollection*) _tmp6_);
2671
_node_size = _tmp8_;
2677
ValaArrayList* _tmp12_;
2679
gpointer _tmp14_ = NULL;
2681
ValaCodeNode* _tmp15_;
2682
_tmp9_ = _node_index;
2683
_node_index = _tmp9_ + 1;
2684
_tmp10_ = _node_index;
2685
_tmp11_ = _node_size;
2686
if (!(_tmp10_ < _tmp11_)) {
2689
_tmp12_ = _node_list;
2690
_tmp13_ = _node_index;
2691
_tmp14_ = vala_list_get ((ValaList*) _tmp12_, _tmp13_);
2692
node = (ValaCodeNode*) _tmp14_;
2694
vala_code_node_accept (_tmp15_, (ValaCodeVisitor*) self);
2695
_vala_code_node_unref0 (node);
2697
_vala_iterable_unref0 (_node_list);
2699
_vala_iterable_unref0 (nodes);
2703
static gchar* vala_gir_writer_get_gir_name (ValaGIRWriter* self, ValaSymbol* symbol) {
2704
gchar* result = NULL;
2706
ValaArrayList* _tmp0_;
2707
gpointer _tmp1_ = NULL;
2709
g_return_val_if_fail (self != NULL, NULL);
2710
g_return_val_if_fail (symbol != NULL, NULL);
2712
_tmp0_ = self->priv->hierarchy;
2713
_tmp1_ = vala_list_get ((ValaList*) _tmp0_, 0);
2714
h0 = (ValaSymbol*) _tmp1_;
2718
ValaSymbol* cur_sym;
2720
_tmp3_ = _vala_code_node_ref0 (_tmp2_);
2727
ValaSymbol* _tmp10_;
2728
ValaSymbol* _tmp11_;
2729
ValaSymbol* _tmp12_;
2730
ValaSymbol* _tmp13_;
2731
gchar* _tmp14_ = NULL;
2733
const gchar* _tmp15_;
2734
const gchar* _tmp20_;
2735
const gchar* _tmp21_;
2736
gchar* _tmp22_ = NULL;
2744
_tmp7_ = vala_symbol_get_parent_symbol (_tmp6_);
2746
_tmp9_ = _vala_code_node_ref0 (_tmp8_);
2747
_vala_code_node_unref0 (cur_sym);
2752
if (!(_tmp10_ != NULL)) {
2757
if (_tmp11_ == _tmp12_) {
2761
_tmp14_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp13_, "GIR", "name");
2764
if (_tmp15_ == NULL) {
2765
ValaSymbol* _tmp16_;
2766
const gchar* _tmp17_;
2767
const gchar* _tmp18_;
2770
_tmp17_ = vala_symbol_get_name (_tmp16_);
2772
_tmp19_ = g_strdup (_tmp18_);
2773
_g_free0 (cur_name);
2778
_tmp22_ = g_strconcat (_tmp20_, _tmp21_, NULL);
2779
_g_free0 (gir_name);
2781
_g_free0 (cur_name);
2784
_vala_code_node_unref0 (cur_sym);
2787
_vala_code_node_unref0 (h0);
2792
static void vala_gir_writer_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en) {
2793
ValaGIRWriter * self;
2798
gboolean _tmp4_ = FALSE;
2799
ValaArrayList* _tmp5_;
2800
gpointer _tmp6_ = NULL;
2803
const gchar* _tmp11_ = NULL;
2807
const gchar* _tmp15_;
2809
gchar* element_name;
2811
const gchar* _tmp18_;
2813
gchar* _tmp20_ = NULL;
2820
gchar* _tmp27_ = NULL;
2823
ValaArrayList* _tmp30_;
2826
ValaArrayList* _tmp33_;
2829
const gchar* _tmp36_;
2830
self = (ValaGIRWriter*) base;
2831
g_return_if_fail (en != NULL);
2833
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
2839
_tmp4_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp3_);
2843
_tmp5_ = self->priv->hierarchy;
2844
_tmp6_ = vala_list_get ((ValaList*) _tmp5_, 0);
2845
_tmp7_ = (ValaSymbol*) _tmp6_;
2846
_tmp8_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_NAMESPACE);
2847
_vala_code_node_unref0 (_tmp7_);
2849
ValaArrayList* _tmp9_;
2851
_tmp9_ = self->priv->deferred;
2853
vala_collection_add ((ValaCollection*) _tmp9_, (ValaCodeNode*) _tmp10_);
2857
_tmp13_ = vala_enum_get_is_flags (_tmp12_);
2860
_tmp11_ = "bitfield";
2862
_tmp11_ = "enumeration";
2865
_tmp16_ = g_strdup (_tmp15_);
2866
element_name = _tmp16_;
2867
vala_gir_writer_write_indent (self);
2868
_tmp17_ = self->priv->buffer;
2869
_tmp18_ = element_name;
2871
_tmp20_ = vala_gir_writer_get_gir_name (self, (ValaSymbol*) _tmp19_);
2873
g_string_append_printf (_tmp17_, "<%s name=\"%s\"", _tmp18_, _tmp21_);
2876
vala_gir_writer_write_gtype_attributes (self, (ValaTypeSymbol*) _tmp22_);
2878
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp23_);
2879
_tmp24_ = self->priv->buffer;
2880
g_string_append_printf (_tmp24_, ">\n");
2881
_tmp25_ = self->priv->indent;
2882
self->priv->indent = _tmp25_ + 1;
2884
_tmp27_ = vala_gir_writer_get_enum_comment (self, _tmp26_);
2886
vala_gir_writer_write_doc (self, _tmp28_);
2889
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp29_);
2890
self->priv->enum_value = 0;
2891
_tmp30_ = self->priv->hierarchy;
2893
vala_list_insert ((ValaList*) _tmp30_, 0, (ValaSymbol*) _tmp31_);
2895
vala_code_node_accept_children ((ValaCodeNode*) _tmp32_, (ValaCodeVisitor*) self);
2896
_tmp33_ = self->priv->hierarchy;
2897
vala_list_remove_at ((ValaList*) _tmp33_, 0);
2898
_tmp34_ = self->priv->indent;
2899
self->priv->indent = _tmp34_ - 1;
2900
vala_gir_writer_write_indent (self);
2901
_tmp35_ = self->priv->buffer;
2902
_tmp36_ = element_name;
2903
g_string_append_printf (_tmp35_, "</%s>\n", _tmp36_);
2904
vala_gir_writer_visit_deferred (self);
2905
_g_free0 (element_name);
2909
static void vala_gir_writer_real_visit_enum_value (ValaCodeVisitor* base, ValaEnumValue* ev) {
2910
ValaGIRWriter * self;
2911
ValaArrayList* _tmp0_;
2912
gpointer _tmp1_ = NULL;
2915
ValaEnumValue* _tmp3_;
2916
const gchar* _tmp4_;
2917
const gchar* _tmp5_;
2918
gchar* _tmp6_ = NULL;
2920
ValaEnumValue* _tmp8_;
2921
gchar* _tmp9_ = NULL;
2923
ValaEnumValue* _tmp11_;
2924
ValaExpression* _tmp12_;
2925
ValaExpression* _tmp13_;
2926
ValaEnumValue* _tmp27_;
2927
ValaEnumValue* _tmp28_;
2928
gchar* _tmp29_ = NULL;
2930
const gchar* _tmp30_;
2931
self = (ValaGIRWriter*) base;
2932
g_return_if_fail (ev != NULL);
2933
vala_gir_writer_write_indent (self);
2934
_tmp0_ = self->priv->hierarchy;
2935
_tmp1_ = vala_list_get ((ValaList*) _tmp0_, 0);
2936
en = G_TYPE_CHECK_INSTANCE_CAST ((ValaSymbol*) _tmp1_, VALA_TYPE_ENUM, ValaEnum);
2937
_tmp2_ = self->priv->buffer;
2939
_tmp4_ = vala_symbol_get_name ((ValaSymbol*) _tmp3_);
2941
_tmp6_ = g_utf8_strdown (_tmp5_, (gssize) (-1));
2944
_tmp9_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp8_);
2946
g_string_append_printf (_tmp2_, "<member name=\"%s\" c:identifier=\"%s\"", _tmp7_, _tmp10_);
2950
_tmp12_ = vala_constant_get_value ((ValaConstant*) _tmp11_);
2952
if (_tmp13_ != NULL) {
2953
ValaEnumValue* _tmp14_;
2954
ValaExpression* _tmp15_;
2955
ValaExpression* _tmp16_;
2956
gchar* _tmp17_ = NULL;
2959
const gchar* _tmp19_;
2961
_tmp15_ = vala_constant_get_value ((ValaConstant*) _tmp14_);
2963
_tmp17_ = vala_gir_writer_literal_expression_to_value_string (self, _tmp16_);
2965
_tmp18_ = self->priv->buffer;
2967
g_string_append_printf (_tmp18_, " value=\"%s\"", _tmp19_);
2974
_tmp21_ = vala_enum_get_is_flags (_tmp20_);
2979
_tmp23_ = self->priv->buffer;
2980
_tmp24_ = self->priv->enum_value;
2981
self->priv->enum_value = _tmp24_ + 1;
2982
g_string_append_printf (_tmp23_, " value=\"%d\"", 1 << _tmp24_);
2986
_tmp25_ = self->priv->buffer;
2987
_tmp26_ = self->priv->enum_value;
2988
self->priv->enum_value = _tmp26_ + 1;
2989
g_string_append_printf (_tmp25_, " value=\"%d\"", _tmp26_);
2993
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp27_);
2995
_tmp29_ = vala_gir_writer_get_enum_value_comment (self, _tmp28_);
2998
if (_tmp30_ == NULL) {
3000
_tmp31_ = self->priv->buffer;
3001
g_string_append_printf (_tmp31_, "/>\n");
3005
const gchar* _tmp34_;
3008
_tmp32_ = self->priv->buffer;
3009
g_string_append_printf (_tmp32_, ">\n");
3010
_tmp33_ = self->priv->indent;
3011
self->priv->indent = _tmp33_ + 1;
3013
vala_gir_writer_write_doc (self, _tmp34_);
3014
_tmp35_ = self->priv->indent;
3015
self->priv->indent = _tmp35_ - 1;
3016
vala_gir_writer_write_indent (self);
3017
_tmp36_ = self->priv->buffer;
3018
g_string_append_printf (_tmp36_, "</member>\n");
3021
_vala_code_node_unref0 (en);
3025
static void vala_gir_writer_real_visit_error_domain (ValaCodeVisitor* base, ValaErrorDomain* edomain) {
3026
ValaGIRWriter * self;
3027
ValaErrorDomain* _tmp0_;
3030
ValaErrorDomain* _tmp3_;
3031
gboolean _tmp4_ = FALSE;
3033
ValaErrorDomain* _tmp6_;
3034
const gchar* _tmp7_;
3035
const gchar* _tmp8_;
3037
ValaErrorDomain* _tmp10_;
3038
gchar* _tmp11_ = NULL;
3041
ValaErrorDomain* _tmp14_;
3042
const gchar* _tmp15_;
3043
const gchar* _tmp16_;
3044
ValaErrorDomain* _tmp17_;
3046
ValaErrorDomain* _tmp19_;
3049
ValaErrorDomain* _tmp22_;
3050
const gchar* _tmp23_;
3051
const gchar* _tmp24_;
3052
ValaErrorDomain* _tmp25_;
3055
ValaErrorDomain* _tmp28_;
3056
gchar* _tmp29_ = NULL;
3058
ValaArrayList* _tmp31_;
3059
ValaErrorDomain* _tmp32_;
3060
ValaErrorDomain* _tmp33_;
3061
ValaArrayList* _tmp34_;
3064
self = (ValaGIRWriter*) base;
3065
g_return_if_fail (edomain != NULL);
3067
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
3073
_tmp4_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp3_);
3077
vala_gir_writer_write_indent (self);
3078
_tmp5_ = self->priv->buffer;
3080
_tmp7_ = vala_symbol_get_name ((ValaSymbol*) _tmp6_);
3082
g_string_append_printf (_tmp5_, "<errordomain name=\"%s\"", _tmp8_);
3083
_tmp9_ = self->priv->buffer;
3085
_tmp11_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp10_);
3087
g_string_append_printf (_tmp9_, " get-quark=\"%squark\"", _tmp12_);
3089
_tmp13_ = self->priv->buffer;
3091
_tmp15_ = vala_symbol_get_name ((ValaSymbol*) _tmp14_);
3093
g_string_append_printf (_tmp13_, " codes=\"%s\"", _tmp16_);
3095
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp17_);
3096
_tmp18_ = self->priv->buffer;
3097
g_string_append_printf (_tmp18_, ">\n");
3099
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp19_);
3100
_tmp20_ = self->priv->buffer;
3101
g_string_append_printf (_tmp20_, "</errordomain>\n");
3102
vala_gir_writer_write_indent (self);
3103
_tmp21_ = self->priv->buffer;
3105
_tmp23_ = vala_symbol_get_name ((ValaSymbol*) _tmp22_);
3107
g_string_append_printf (_tmp21_, "<enumeration name=\"%s\"", _tmp24_);
3109
vala_gir_writer_write_ctype_attributes (self, (ValaTypeSymbol*) _tmp25_, "");
3110
_tmp26_ = self->priv->buffer;
3111
g_string_append_printf (_tmp26_, ">\n");
3112
_tmp27_ = self->priv->indent;
3113
self->priv->indent = _tmp27_ + 1;
3115
_tmp29_ = vala_gir_writer_get_error_domain_comment (self, _tmp28_);
3117
vala_gir_writer_write_doc (self, _tmp30_);
3119
self->priv->enum_value = 0;
3120
_tmp31_ = self->priv->hierarchy;
3122
vala_list_insert ((ValaList*) _tmp31_, 0, (ValaSymbol*) _tmp32_);
3124
vala_code_node_accept_children ((ValaCodeNode*) _tmp33_, (ValaCodeVisitor*) self);
3125
_tmp34_ = self->priv->hierarchy;
3126
vala_list_remove_at ((ValaList*) _tmp34_, 0);
3127
_tmp35_ = self->priv->indent;
3128
self->priv->indent = _tmp35_ - 1;
3129
vala_gir_writer_write_indent (self);
3130
_tmp36_ = self->priv->buffer;
3131
g_string_append_printf (_tmp36_, "</enumeration>\n");
3132
vala_gir_writer_visit_deferred (self);
3136
static void vala_gir_writer_real_visit_error_code (ValaCodeVisitor* base, ValaErrorCode* ecode) {
3137
ValaGIRWriter * self;
3139
ValaErrorCode* _tmp1_;
3140
const gchar* _tmp2_;
3141
const gchar* _tmp3_;
3142
gchar* _tmp4_ = NULL;
3144
ValaErrorCode* _tmp6_;
3145
gchar* _tmp7_ = NULL;
3147
ValaErrorCode* _tmp9_;
3148
ValaExpression* _tmp10_;
3149
ValaExpression* _tmp11_;
3150
ValaErrorCode* _tmp20_;
3151
ValaErrorCode* _tmp21_;
3152
gchar* _tmp22_ = NULL;
3154
const gchar* _tmp23_;
3155
self = (ValaGIRWriter*) base;
3156
g_return_if_fail (ecode != NULL);
3157
vala_gir_writer_write_indent (self);
3158
_tmp0_ = self->priv->buffer;
3160
_tmp2_ = vala_symbol_get_name ((ValaSymbol*) _tmp1_);
3162
_tmp4_ = g_utf8_strdown (_tmp3_, (gssize) (-1));
3165
_tmp7_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp6_);
3167
g_string_append_printf (_tmp0_, "<member name=\"%s\" c:identifier=\"%s\"", _tmp5_, _tmp8_);
3171
_tmp10_ = vala_error_code_get_value (_tmp9_);
3173
if (_tmp11_ != NULL) {
3174
ValaErrorCode* _tmp12_;
3175
ValaExpression* _tmp13_;
3176
ValaExpression* _tmp14_;
3177
gchar* _tmp15_ = NULL;
3180
const gchar* _tmp17_;
3182
_tmp13_ = vala_error_code_get_value (_tmp12_);
3184
_tmp15_ = vala_gir_writer_literal_expression_to_value_string (self, _tmp14_);
3186
_tmp16_ = self->priv->buffer;
3188
g_string_append_printf (_tmp16_, " value=\"%s\"", _tmp17_);
3193
_tmp18_ = self->priv->buffer;
3194
_tmp19_ = self->priv->enum_value;
3195
self->priv->enum_value = _tmp19_ + 1;
3196
g_string_append_printf (_tmp18_, " value=\"%d\"", _tmp19_);
3199
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp20_);
3201
_tmp22_ = vala_gir_writer_get_error_code_comment (self, _tmp21_);
3204
if (_tmp23_ == NULL) {
3206
_tmp24_ = self->priv->buffer;
3207
g_string_append_printf (_tmp24_, "/>\n");
3211
const gchar* _tmp27_;
3214
_tmp25_ = self->priv->buffer;
3215
g_string_append_printf (_tmp25_, ">\n");
3216
_tmp26_ = self->priv->indent;
3217
self->priv->indent = _tmp26_ + 1;
3219
vala_gir_writer_write_doc (self, _tmp27_);
3220
_tmp28_ = self->priv->indent;
3221
self->priv->indent = _tmp28_ - 1;
3222
vala_gir_writer_write_indent (self);
3223
_tmp29_ = self->priv->buffer;
3224
g_string_append_printf (_tmp29_, "</member>\n");
3230
static void vala_gir_writer_real_visit_constant (ValaCodeVisitor* base, ValaConstant* c) {
3231
ValaGIRWriter * self;
3232
ValaConstant* _tmp0_;
3235
ValaConstant* _tmp3_;
3236
gboolean _tmp4_ = FALSE;
3237
ValaConstant* _tmp5_;
3238
ValaExpression* _tmp6_;
3239
ValaExpression* _tmp7_;
3240
ValaExpression* _tmp8_;
3241
ValaExpression* initializer;
3242
ValaExpression* _tmp9_;
3243
gchar* _tmp10_ = NULL;
3246
ValaConstant* _tmp12_;
3247
const gchar* _tmp13_;
3248
const gchar* _tmp14_;
3249
ValaConstant* _tmp15_;
3250
gchar* _tmp16_ = NULL;
3253
const gchar* _tmp19_;
3254
ValaConstant* _tmp20_;
3257
ValaConstant* _tmp23_;
3258
gchar* _tmp24_ = NULL;
3260
ValaExpression* _tmp26_;
3261
ValaDataType* _tmp27_;
3262
ValaDataType* _tmp28_;
3265
self = (ValaGIRWriter*) base;
3266
g_return_if_fail (c != NULL);
3268
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
3274
_tmp4_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp3_);
3279
_tmp6_ = vala_constant_get_value (_tmp5_);
3281
_tmp8_ = _vala_code_node_ref0 (_tmp7_);
3282
initializer = _tmp8_;
3283
_tmp9_ = initializer;
3284
_tmp10_ = vala_gir_writer_literal_expression_to_value_string (self, _tmp9_);
3286
vala_gir_writer_write_indent (self);
3287
_tmp11_ = self->priv->buffer;
3289
_tmp13_ = vala_symbol_get_name ((ValaSymbol*) _tmp12_);
3292
_tmp16_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp15_);
3294
g_string_append_printf (_tmp11_, "<constant name=\"%s\" c:identifier=\"%s\"", _tmp14_, _tmp17_);
3296
_tmp18_ = self->priv->buffer;
3298
g_string_append_printf (_tmp18_, " value=\"%s\"", _tmp19_);
3300
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp20_);
3301
_tmp21_ = self->priv->buffer;
3302
g_string_append_printf (_tmp21_, ">\n");
3303
_tmp22_ = self->priv->indent;
3304
self->priv->indent = _tmp22_ + 1;
3306
_tmp24_ = vala_gir_writer_get_constant_comment (self, _tmp23_);
3308
vala_gir_writer_write_doc (self, _tmp25_);
3310
_tmp26_ = initializer;
3311
_tmp27_ = vala_expression_get_value_type (_tmp26_);
3313
vala_gir_writer_write_type (self, _tmp28_, -1);
3314
_tmp29_ = self->priv->indent;
3315
self->priv->indent = _tmp29_ - 1;
3316
vala_gir_writer_write_indent (self);
3317
_tmp30_ = self->priv->buffer;
3318
g_string_append_printf (_tmp30_, "</constant>\n");
3320
_vala_code_node_unref0 (initializer);
3324
static void vala_gir_writer_real_visit_field (ValaCodeVisitor* base, ValaField* f) {
3325
ValaGIRWriter * self;
3330
gboolean _tmp4_ = FALSE;
3333
gchar* _tmp7_ = NULL;
3336
ValaDataType* _tmp10_;
3337
ValaDataType* _tmp11_;
3344
gchar* _tmp19_ = NULL;
3348
ValaDataType* _tmp23_;
3349
ValaDataType* _tmp24_;
3352
self = (ValaGIRWriter*) base;
3353
g_return_if_fail (f != NULL);
3355
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
3361
_tmp4_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp3_);
3365
vala_gir_writer_write_indent (self);
3366
_tmp5_ = self->priv->buffer;
3368
_tmp7_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp6_);
3370
g_string_append_printf (_tmp5_, "<field name=\"%s\"", _tmp8_);
3373
_tmp10_ = vala_variable_get_variable_type ((ValaVariable*) _tmp9_);
3375
_tmp12_ = vala_data_type_get_nullable (_tmp11_);
3379
_tmp14_ = self->priv->buffer;
3380
g_string_append_printf (_tmp14_, " allow-none=\"1\"");
3383
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp15_);
3384
_tmp16_ = self->priv->buffer;
3385
g_string_append_printf (_tmp16_, ">\n");
3386
_tmp17_ = self->priv->indent;
3387
self->priv->indent = _tmp17_ + 1;
3389
_tmp19_ = vala_gir_writer_get_field_comment (self, _tmp18_);
3391
vala_gir_writer_write_doc (self, _tmp20_);
3394
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp21_);
3396
_tmp23_ = vala_variable_get_variable_type ((ValaVariable*) _tmp22_);
3398
vala_gir_writer_write_type (self, _tmp24_, -1);
3399
_tmp25_ = self->priv->indent;
3400
self->priv->indent = _tmp25_ - 1;
3401
vala_gir_writer_write_indent (self);
3402
_tmp26_ = self->priv->buffer;
3403
g_string_append_printf (_tmp26_, "</field>\n");
3407
static void vala_gir_writer_write_implicit_params (ValaGIRWriter* self, ValaDataType* type, gint* index, gboolean has_array_length, const gchar* name, ValaParameterDirection direction) {
3408
gboolean _tmp0_ = FALSE;
3409
ValaDataType* _tmp1_;
3411
g_return_if_fail (self != NULL);
3412
g_return_if_fail (type != NULL);
3413
g_return_if_fail (name != NULL);
3415
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_ARRAY_TYPE)) {
3417
_tmp2_ = has_array_length;
3424
ValaCodeContext* _tmp4_ = NULL;
3425
ValaCodeContext* _tmp5_;
3426
ValaNamespace* _tmp6_;
3427
ValaNamespace* _tmp7_;
3430
ValaSymbol* _tmp10_ = NULL;
3431
ValaStruct* _tmp11_;
3432
ValaStruct* _tmp12_;
3433
ValaIntegerType* _tmp13_;
3434
ValaIntegerType* _tmp14_;
3435
ValaIntegerType* int_type;
3436
ValaIntegerType* _tmp15_;
3438
const gchar* _tmp17_;
3439
gchar* _tmp18_ = NULL;
3441
ValaParameterDirection _tmp20_;
3442
_tmp4_ = vala_code_context_get ();
3444
_tmp6_ = vala_code_context_get_root (_tmp5_);
3446
_tmp8_ = vala_symbol_get_scope ((ValaSymbol*) _tmp7_);
3448
_tmp10_ = vala_scope_lookup (_tmp9_, "int");
3449
_tmp11_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp10_) : NULL;
3450
if (_tmp11_ == NULL) {
3451
_vala_code_node_unref0 (_tmp10_);
3454
_tmp13_ = vala_integer_type_new (_tmp12_, NULL, NULL);
3456
_vala_code_node_unref0 (_tmp12_);
3457
_vala_code_context_unref0 (_tmp5_);
3460
_tmp16_ = has_array_length;
3462
_tmp18_ = g_strdup_printf ("%s_length1", _tmp17_);
3464
_tmp20_ = direction;
3465
vala_gir_writer_write_param_or_return (self, (ValaDataType*) _tmp15_, TRUE, index, _tmp16_, _tmp19_, NULL, _tmp20_, FALSE, FALSE);
3467
_vala_code_node_unref0 (int_type);
3469
ValaDataType* _tmp21_;
3471
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_DELEGATE_TYPE)) {
3472
ValaVoidType* _tmp22_;
3473
ValaVoidType* _tmp23_;
3474
ValaPointerType* _tmp24_;
3475
ValaPointerType* _tmp25_;
3476
ValaPointerType* data_type;
3477
ValaPointerType* _tmp26_;
3478
const gchar* _tmp27_;
3479
gchar* _tmp28_ = NULL;
3481
ValaParameterDirection _tmp30_;
3482
ValaDataType* _tmp31_;
3485
_tmp22_ = vala_void_type_new (NULL);
3487
_tmp24_ = vala_pointer_type_new ((ValaDataType*) _tmp23_, NULL);
3489
_vala_code_node_unref0 (_tmp23_);
3490
data_type = _tmp25_;
3491
_tmp26_ = data_type;
3493
_tmp28_ = g_strdup_printf ("%s_target", _tmp27_);
3495
_tmp30_ = direction;
3496
vala_gir_writer_write_param_or_return (self, (ValaDataType*) _tmp26_, TRUE, index, FALSE, _tmp29_, NULL, _tmp30_, FALSE, FALSE);
3499
_tmp32_ = vala_data_type_get_value_owned (_tmp31_);
3502
ValaCodeContext* _tmp34_ = NULL;
3503
ValaCodeContext* _tmp35_;
3504
ValaNamespace* _tmp36_;
3505
ValaNamespace* _tmp37_;
3508
ValaSymbol* _tmp40_ = NULL;
3509
ValaSymbol* _tmp41_;
3512
ValaSymbol* _tmp44_ = NULL;
3513
ValaDelegate* _tmp45_;
3514
ValaDelegate* _tmp46_;
3515
ValaDelegateType* _tmp47_;
3516
ValaDelegateType* _tmp48_;
3517
ValaDelegateType* notify_type;
3518
ValaDelegateType* _tmp49_;
3519
const gchar* _tmp50_;
3520
gchar* _tmp51_ = NULL;
3522
ValaParameterDirection _tmp53_;
3523
_tmp34_ = vala_code_context_get ();
3525
_tmp36_ = vala_code_context_get_root (_tmp35_);
3527
_tmp38_ = vala_symbol_get_scope ((ValaSymbol*) _tmp37_);
3529
_tmp40_ = vala_scope_lookup (_tmp39_, "GLib");
3531
_tmp42_ = vala_symbol_get_scope (_tmp41_);
3533
_tmp44_ = vala_scope_lookup (_tmp43_, "DestroyNotify");
3534
_tmp45_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp44_, VALA_TYPE_DELEGATE) ? ((ValaDelegate*) _tmp44_) : NULL;
3535
if (_tmp45_ == NULL) {
3536
_vala_code_node_unref0 (_tmp44_);
3539
_tmp47_ = vala_delegate_type_new (_tmp46_);
3541
_vala_code_node_unref0 (_tmp46_);
3542
_vala_code_node_unref0 (_tmp41_);
3543
_vala_code_context_unref0 (_tmp35_);
3544
notify_type = _tmp48_;
3545
_tmp49_ = notify_type;
3547
_tmp51_ = g_strdup_printf ("%s_target_destroy_notify", _tmp50_);
3549
_tmp53_ = direction;
3550
vala_gir_writer_write_param_or_return (self, (ValaDataType*) _tmp49_, TRUE, index, FALSE, _tmp52_, NULL, _tmp53_, FALSE, FALSE);
3552
_vala_code_node_unref0 (notify_type);
3554
_vala_code_node_unref0 (data_type);
3560
static void vala_gir_writer_skip_implicit_params (ValaGIRWriter* self, ValaDataType* type, gint* index, gboolean has_array_length) {
3561
gboolean _tmp0_ = FALSE;
3562
ValaDataType* _tmp1_;
3564
g_return_if_fail (self != NULL);
3565
g_return_if_fail (type != NULL);
3567
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_ARRAY_TYPE)) {
3569
_tmp2_ = has_array_length;
3578
*index = _tmp4_ + 1;
3580
ValaDataType* _tmp5_;
3582
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_DELEGATE_TYPE)) {
3584
ValaDataType* _tmp7_;
3588
*index = _tmp6_ + 1;
3590
_tmp8_ = vala_data_type_get_value_owned (_tmp7_);
3595
*index = _tmp10_ + 1;
3602
static void vala_gir_writer_write_params_and_return (ValaGIRWriter* self, ValaList* params, ValaDataType* return_type, gboolean return_array_length, const gchar* return_comment, gboolean constructor, ValaDataType* instance_type, gboolean user_data) {
3604
gboolean _tmp0_ = FALSE;
3605
ValaDataType* _tmp1_;
3607
gboolean ret_is_struct;
3608
gboolean _tmp5_ = FALSE;
3609
gboolean _tmp6_ = FALSE;
3610
gboolean _tmp7_ = FALSE;
3611
gboolean _tmp8_ = FALSE;
3619
gboolean _tmp47_ = FALSE;
3620
ValaDataType* _tmp48_;
3622
gboolean _tmp59_ = FALSE;
3623
gboolean _tmp60_ = FALSE;
3624
gboolean _tmp61_ = FALSE;
3625
gboolean _tmp62_ = FALSE;
3633
g_return_if_fail (self != NULL);
3634
g_return_if_fail (params != NULL);
3636
_tmp1_ = return_type;
3637
if (_tmp1_ != NULL) {
3638
ValaDataType* _tmp2_;
3639
gboolean _tmp3_ = FALSE;
3640
_tmp2_ = return_type;
3641
_tmp3_ = vala_data_type_is_real_non_null_struct_type (_tmp2_);
3647
ret_is_struct = _tmp4_;
3649
_tmp10_ = vala_collection_get_size ((ValaCollection*) _tmp9_);
3654
ValaDataType* _tmp12_;
3655
_tmp12_ = instance_type;
3656
_tmp8_ = _tmp12_ != NULL;
3662
gboolean _tmp14_ = FALSE;
3663
ValaDataType* _tmp15_;
3665
_tmp15_ = return_type;
3666
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, VALA_TYPE_ARRAY_TYPE)) {
3668
_tmp16_ = return_array_length;
3680
ValaDataType* _tmp19_;
3681
_tmp19_ = return_type;
3682
_tmp6_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, VALA_TYPE_DELEGATE_TYPE);
3689
_tmp21_ = ret_is_struct;
3695
ValaDataType* _tmp23_;
3699
_tmp23_ = instance_type;
3700
if (_tmp23_ != NULL) {
3703
index = _tmp24_ + 1;
3708
ValaList* _param_list;
3715
_tmp26_ = _vala_iterable_ref0 (_tmp25_);
3716
_param_list = _tmp26_;
3717
_tmp27_ = _param_list;
3718
_tmp28_ = vala_collection_get_size ((ValaCollection*) _tmp27_);
3720
_param_size = _tmp29_;
3728
gpointer _tmp35_ = NULL;
3729
ValaParameter* param;
3731
ValaParameter* _tmp37_;
3732
ValaDataType* _tmp38_;
3733
ValaDataType* _tmp39_;
3734
ValaParameter* _tmp40_;
3735
gboolean _tmp41_ = FALSE;
3736
_tmp30_ = _param_index;
3737
_param_index = _tmp30_ + 1;
3738
_tmp31_ = _param_index;
3739
_tmp32_ = _param_size;
3740
if (!(_tmp31_ < _tmp32_)) {
3743
_tmp33_ = _param_list;
3744
_tmp34_ = _param_index;
3745
_tmp35_ = vala_list_get (_tmp33_, _tmp34_);
3746
param = (ValaParameter*) _tmp35_;
3748
index = _tmp36_ + 1;
3750
_tmp38_ = vala_variable_get_variable_type ((ValaVariable*) _tmp37_);
3753
_tmp41_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp40_);
3754
vala_gir_writer_skip_implicit_params (self, _tmp39_, &index, _tmp41_);
3755
_vala_code_node_unref0 (param);
3757
_vala_iterable_unref0 (_param_list);
3759
_tmp42_ = ret_is_struct;
3763
index = _tmp43_ + 1;
3765
ValaDataType* _tmp44_;
3767
_tmp44_ = return_type;
3768
_tmp45_ = return_array_length;
3769
vala_gir_writer_skip_implicit_params (self, _tmp44_, &index, _tmp45_);
3772
last_index = _tmp46_ - 1;
3774
_tmp48_ = return_type;
3775
if (_tmp48_ != NULL) {
3777
_tmp49_ = ret_is_struct;
3784
ValaDataType* _tmp51_;
3786
const gchar* _tmp53_;
3788
_tmp51_ = return_type;
3789
_tmp52_ = return_array_length;
3790
_tmp53_ = return_comment;
3791
_tmp54_ = constructor;
3792
vala_gir_writer_write_param_or_return (self, _tmp51_, FALSE, &last_index, _tmp52_, NULL, _tmp53_, VALA_PARAMETER_DIRECTION_IN, _tmp54_, FALSE);
3795
_tmp55_ = ret_is_struct;
3797
ValaVoidType* _tmp56_;
3798
ValaVoidType* _tmp57_;
3799
const gchar* _tmp58_;
3800
_tmp56_ = vala_void_type_new (NULL);
3802
_tmp58_ = return_comment;
3803
vala_gir_writer_write_param_or_return (self, (ValaDataType*) _tmp57_, FALSE, &last_index, FALSE, NULL, _tmp58_, VALA_PARAMETER_DIRECTION_IN, FALSE, FALSE);
3804
_vala_code_node_unref0 (_tmp57_);
3808
_tmp64_ = vala_collection_get_size ((ValaCollection*) _tmp63_);
3813
ValaDataType* _tmp66_;
3814
_tmp66_ = instance_type;
3815
_tmp62_ = _tmp66_ != NULL;
3821
gboolean _tmp68_ = FALSE;
3822
ValaDataType* _tmp69_;
3824
_tmp69_ = return_type;
3825
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp69_, VALA_TYPE_ARRAY_TYPE)) {
3827
_tmp70_ = return_array_length;
3839
ValaDataType* _tmp73_;
3840
_tmp73_ = return_type;
3841
_tmp60_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp73_, VALA_TYPE_DELEGATE_TYPE);
3848
_tmp75_ = ret_is_struct;
3856
ValaDataType* _tmp79_;
3861
vala_gir_writer_write_indent (self);
3862
_tmp77_ = self->priv->buffer;
3863
g_string_append_printf (_tmp77_, "<parameters>\n");
3864
_tmp78_ = self->priv->indent;
3865
self->priv->indent = _tmp78_ + 1;
3867
_tmp79_ = instance_type;
3868
if (_tmp79_ != NULL) {
3869
ValaDataType* _tmp80_;
3870
_tmp80_ = instance_type;
3871
vala_gir_writer_write_param_or_return (self, _tmp80_, TRUE, &index, FALSE, "self", NULL, VALA_PARAMETER_DIRECTION_IN, FALSE, FALSE);
3876
ValaList* _param_list;
3883
_tmp82_ = _vala_iterable_ref0 (_tmp81_);
3884
_param_list = _tmp82_;
3885
_tmp83_ = _param_list;
3886
_tmp84_ = vala_collection_get_size ((ValaCollection*) _tmp83_);
3888
_param_size = _tmp85_;
3896
gpointer _tmp91_ = NULL;
3897
ValaParameter* param;
3898
ValaParameter* _tmp92_;
3899
ValaDataType* _tmp93_;
3900
ValaDataType* _tmp94_;
3901
ValaParameter* _tmp95_;
3902
gboolean _tmp96_ = FALSE;
3903
ValaParameter* _tmp97_;
3904
const gchar* _tmp98_;
3905
const gchar* _tmp99_;
3906
ValaParameter* _tmp100_;
3907
gchar* _tmp101_ = NULL;
3909
ValaParameter* _tmp103_;
3910
ValaParameterDirection _tmp104_;
3911
ValaParameterDirection _tmp105_;
3912
ValaParameter* _tmp106_;
3913
ValaDataType* _tmp107_;
3914
ValaDataType* _tmp108_;
3915
ValaParameter* _tmp109_;
3916
gboolean _tmp110_ = FALSE;
3917
ValaParameter* _tmp111_;
3918
const gchar* _tmp112_;
3919
const gchar* _tmp113_;
3920
ValaParameter* _tmp114_;
3921
ValaParameterDirection _tmp115_;
3922
ValaParameterDirection _tmp116_;
3923
_tmp86_ = _param_index;
3924
_param_index = _tmp86_ + 1;
3925
_tmp87_ = _param_index;
3926
_tmp88_ = _param_size;
3927
if (!(_tmp87_ < _tmp88_)) {
3930
_tmp89_ = _param_list;
3931
_tmp90_ = _param_index;
3932
_tmp91_ = vala_list_get (_tmp89_, _tmp90_);
3933
param = (ValaParameter*) _tmp91_;
3935
_tmp93_ = vala_variable_get_variable_type ((ValaVariable*) _tmp92_);
3938
_tmp96_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp95_);
3940
_tmp98_ = vala_symbol_get_name ((ValaSymbol*) _tmp97_);
3943
_tmp101_ = vala_gir_writer_get_parameter_comment (self, _tmp100_);
3944
_tmp102_ = _tmp101_;
3946
_tmp104_ = vala_parameter_get_direction (_tmp103_);
3947
_tmp105_ = _tmp104_;
3948
vala_gir_writer_write_param_or_return (self, _tmp94_, TRUE, &index, _tmp96_, _tmp99_, _tmp102_, _tmp105_, FALSE, FALSE);
3949
_g_free0 (_tmp102_);
3951
_tmp107_ = vala_variable_get_variable_type ((ValaVariable*) _tmp106_);
3952
_tmp108_ = _tmp107_;
3954
_tmp110_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp109_);
3956
_tmp112_ = vala_symbol_get_name ((ValaSymbol*) _tmp111_);
3957
_tmp113_ = _tmp112_;
3959
_tmp115_ = vala_parameter_get_direction (_tmp114_);
3960
_tmp116_ = _tmp115_;
3961
vala_gir_writer_write_implicit_params (self, _tmp108_, &index, _tmp110_, _tmp113_, _tmp116_);
3962
_vala_code_node_unref0 (param);
3964
_vala_iterable_unref0 (_param_list);
3966
_tmp117_ = ret_is_struct;
3968
ValaDataType* _tmp118_;
3969
const gchar* _tmp119_;
3971
_tmp118_ = return_type;
3972
_tmp119_ = return_comment;
3973
_tmp120_ = constructor;
3974
vala_gir_writer_write_param_or_return (self, _tmp118_, TRUE, &index, FALSE, "result", _tmp119_, VALA_PARAMETER_DIRECTION_OUT, _tmp120_, TRUE);
3976
ValaDataType* _tmp121_;
3978
_tmp121_ = return_type;
3979
_tmp122_ = return_array_length;
3980
vala_gir_writer_write_implicit_params (self, _tmp121_, &index, _tmp122_, "result", VALA_PARAMETER_DIRECTION_OUT);
3982
_tmp123_ = user_data;
3990
vala_gir_writer_write_indent (self);
3991
_tmp124_ = self->priv->buffer;
3993
g_string_append_printf (_tmp124_, "<parameter name=\"user_data\" transfer-ownership=\"none\" closure=\"%d" \
3995
_tmp126_ = self->priv->indent;
3996
self->priv->indent = _tmp126_ + 1;
3997
vala_gir_writer_write_indent (self);
3998
_tmp127_ = self->priv->buffer;
3999
g_string_append_printf (_tmp127_, "<type name=\"gpointer\" c:type=\"void*\"/>\n");
4000
_tmp128_ = self->priv->indent;
4001
self->priv->indent = _tmp128_ - 1;
4002
vala_gir_writer_write_indent (self);
4003
_tmp129_ = self->priv->buffer;
4004
g_string_append_printf (_tmp129_, "</parameter>\n");
4006
_tmp130_ = self->priv->indent;
4007
self->priv->indent = _tmp130_ - 1;
4008
vala_gir_writer_write_indent (self);
4009
_tmp131_ = self->priv->buffer;
4010
g_string_append_printf (_tmp131_, "</parameters>\n");
4015
static void vala_gir_writer_real_visit_delegate (ValaCodeVisitor* base, ValaDelegate* cb) {
4016
ValaGIRWriter * self;
4017
ValaDelegate* _tmp0_;
4020
ValaDelegate* _tmp3_;
4021
gboolean _tmp4_ = FALSE;
4023
ValaDelegate* _tmp6_;
4024
const gchar* _tmp7_;
4025
const gchar* _tmp8_;
4027
ValaDelegate* _tmp10_;
4028
gchar* _tmp11_ = NULL;
4030
ValaDelegate* _tmp13_;
4033
ValaDelegate* _tmp17_;
4036
ValaDelegate* _tmp20_;
4037
gchar* _tmp21_ = NULL;
4039
ValaDelegate* _tmp23_;
4040
ValaDelegate* _tmp24_;
4041
ValaList* _tmp25_ = NULL;
4043
ValaDelegate* _tmp27_;
4044
ValaDataType* _tmp28_;
4045
ValaDataType* _tmp29_;
4046
ValaDelegate* _tmp30_;
4047
gboolean _tmp31_ = FALSE;
4048
ValaDelegate* _tmp32_;
4049
gchar* _tmp33_ = NULL;
4051
ValaDelegate* _tmp35_;
4056
self = (ValaGIRWriter*) base;
4057
g_return_if_fail (cb != NULL);
4059
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
4065
_tmp4_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp3_);
4069
vala_gir_writer_write_indent (self);
4070
_tmp5_ = self->priv->buffer;
4072
_tmp7_ = vala_symbol_get_name ((ValaSymbol*) _tmp6_);
4074
g_string_append_printf (_tmp5_, "<callback name=\"%s\"", _tmp8_);
4075
_tmp9_ = self->priv->buffer;
4077
_tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_);
4079
g_string_append_printf (_tmp9_, " c:type=\"%s\"", _tmp12_);
4082
_tmp14_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp13_);
4086
_tmp16_ = self->priv->buffer;
4087
g_string_append_printf (_tmp16_, " throws=\"1\"");
4090
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp17_);
4091
_tmp18_ = self->priv->buffer;
4092
g_string_append_printf (_tmp18_, ">\n");
4093
_tmp19_ = self->priv->indent;
4094
self->priv->indent = _tmp19_ + 1;
4096
_tmp21_ = vala_gir_writer_get_delegate_comment (self, _tmp20_);
4098
vala_gir_writer_write_doc (self, _tmp22_);
4101
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp23_);
4103
_tmp25_ = vala_delegate_get_parameters (_tmp24_);
4106
_tmp28_ = vala_delegate_get_return_type (_tmp27_);
4109
_tmp31_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp30_);
4111
_tmp33_ = vala_gir_writer_get_delegate_return_comment (self, _tmp32_);
4114
_tmp36_ = vala_delegate_get_has_target (_tmp35_);
4116
vala_gir_writer_write_params_and_return (self, _tmp26_, _tmp29_, _tmp31_, _tmp34_, FALSE, NULL, _tmp37_);
4118
_vala_iterable_unref0 (_tmp26_);
4119
_tmp38_ = self->priv->indent;
4120
self->priv->indent = _tmp38_ - 1;
4121
vala_gir_writer_write_indent (self);
4122
_tmp39_ = self->priv->buffer;
4123
g_string_append_printf (_tmp39_, "</callback>\n");
4127
static void vala_gir_writer_real_visit_method (ValaCodeVisitor* base, ValaMethod* m) {
4128
ValaGIRWriter * self;
4132
gboolean _tmp3_ = FALSE;
4133
gboolean _tmp4_ = FALSE;
4135
gboolean _tmp6_ = FALSE;
4138
ValaMethod* _tmp25_;
4139
gboolean _tmp26_ = FALSE;
4142
ValaArrayList* _tmp28_;
4143
gpointer _tmp29_ = NULL;
4145
ValaSymbol* _tmp30_;
4146
gboolean _tmp33_ = FALSE;
4147
gboolean _tmp34_ = FALSE;
4148
ValaSymbol* _tmp35_;
4151
ValaMethod* _tmp46_;
4152
const gchar* _tmp47_;
4153
gboolean _tmp48_ = FALSE;
4154
ValaMethod* _tmp49_;
4158
self = (ValaGIRWriter*) base;
4159
g_return_if_fail (m != NULL);
4161
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
4167
_tmp6_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp5_);
4175
_tmp8_ = vala_method_get_overrides (_tmp7_);
4183
gboolean _tmp11_ = FALSE;
4184
gboolean _tmp12_ = FALSE;
4185
ValaMethod* _tmp13_;
4186
ValaMethod* _tmp14_;
4187
ValaMethod* _tmp15_;
4191
_tmp14_ = vala_method_get_base_interface_method (_tmp13_);
4193
if (_tmp15_ != NULL) {
4194
ValaMethod* _tmp16_;
4198
_tmp17_ = vala_method_get_is_abstract (_tmp16_);
4206
ValaMethod* _tmp20_;
4210
_tmp21_ = vala_method_get_is_virtual (_tmp20_);
4224
_tmp26_ = vala_gir_writer_check_signature (self, _tmp25_);
4228
_tmp27_ = g_strdup ("method");
4230
_tmp28_ = self->priv->hierarchy;
4231
_tmp29_ = vala_list_get ((ValaList*) _tmp28_, 0);
4232
parent = (ValaSymbol*) _tmp29_;
4234
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp30_, VALA_TYPE_ENUM)) {
4235
ValaArrayList* _tmp31_;
4236
ValaMethod* _tmp32_;
4237
_tmp31_ = self->priv->deferred;
4239
vala_collection_add ((ValaCollection*) _tmp31_, (ValaCodeNode*) _tmp32_);
4240
_vala_code_node_unref0 (parent);
4241
_g_free0 (tag_name);
4245
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_NAMESPACE)) {
4248
ValaMethod* _tmp36_;
4249
ValaMemberBinding _tmp37_;
4250
ValaMemberBinding _tmp38_;
4252
_tmp37_ = vala_method_get_binding (_tmp36_);
4254
_tmp34_ = _tmp38_ == VALA_MEMBER_BINDING_STATIC;
4260
ValaSymbol* _tmp40_;
4261
ValaMethod* _tmp41_;
4262
ValaSymbol* _tmp42_;
4263
ValaSymbol* _tmp43_;
4266
_tmp42_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp41_);
4268
_tmp33_ = _tmp40_ != _tmp43_;
4273
_tmp45_ = g_strdup ("function");
4274
_g_free0 (tag_name);
4279
vala_gir_writer_write_signature (self, _tmp46_, _tmp47_, TRUE, FALSE);
4281
_tmp50_ = vala_method_get_is_abstract (_tmp49_);
4286
ValaMethod* _tmp52_;
4290
_tmp53_ = vala_method_get_is_virtual (_tmp52_);
4296
ValaMethod* _tmp56_;
4298
vala_gir_writer_write_signature (self, _tmp56_, "virtual-method", TRUE, FALSE);
4300
_vala_code_node_unref0 (parent);
4301
_g_free0 (tag_name);
4305
static gboolean vala_gir_writer_check_type (ValaGIRWriter* self, ValaDataType* type) {
4306
gboolean result = FALSE;
4307
ValaDataType* _tmp0_;
4308
gchar* _tmp1_ = NULL;
4311
g_return_val_if_fail (self != NULL, FALSE);
4312
g_return_val_if_fail (type != NULL, FALSE);
4314
_tmp1_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp0_);
4316
_tmp3_ = g_strcmp0 (_tmp2_, "va_list") == 0;
4327
static gboolean vala_gir_writer_check_signature (ValaGIRWriter* self, ValaMethod* m) {
4328
gboolean result = FALSE;
4330
ValaDataType* _tmp1_;
4331
ValaDataType* _tmp2_;
4332
gboolean _tmp3_ = FALSE;
4333
g_return_val_if_fail (self != NULL, FALSE);
4334
g_return_val_if_fail (m != NULL, FALSE);
4336
_tmp1_ = vala_method_get_return_type (_tmp0_);
4338
_tmp3_ = vala_gir_writer_check_type (self, _tmp2_);
4345
ValaList* _tmp5_ = NULL;
4346
ValaList* _param_list;
4353
_tmp5_ = vala_method_get_parameters (_tmp4_);
4354
_param_list = _tmp5_;
4355
_tmp6_ = _param_list;
4356
_tmp7_ = vala_collection_get_size ((ValaCollection*) _tmp6_);
4358
_param_size = _tmp8_;
4366
gpointer _tmp14_ = NULL;
4367
ValaParameter* param;
4368
gboolean _tmp15_ = FALSE;
4369
ValaParameter* _tmp16_;
4370
ValaDataType* _tmp17_;
4371
ValaDataType* _tmp18_;
4373
_tmp9_ = _param_index;
4374
_param_index = _tmp9_ + 1;
4375
_tmp10_ = _param_index;
4376
_tmp11_ = _param_size;
4377
if (!(_tmp10_ < _tmp11_)) {
4380
_tmp12_ = _param_list;
4381
_tmp13_ = _param_index;
4382
_tmp14_ = vala_list_get (_tmp12_, _tmp13_);
4383
param = (ValaParameter*) _tmp14_;
4385
_tmp17_ = vala_variable_get_variable_type ((ValaVariable*) _tmp16_);
4387
if (_tmp18_ == NULL) {
4390
ValaParameter* _tmp19_;
4391
ValaDataType* _tmp20_;
4392
ValaDataType* _tmp21_;
4393
gboolean _tmp22_ = FALSE;
4395
_tmp20_ = vala_variable_get_variable_type ((ValaVariable*) _tmp19_);
4397
_tmp22_ = vala_gir_writer_check_type (self, _tmp21_);
4403
_vala_code_node_unref0 (param);
4404
_vala_iterable_unref0 (_param_list);
4407
_vala_code_node_unref0 (param);
4409
_vala_iterable_unref0 (_param_list);
4416
static void vala_gir_writer_write_signature (ValaGIRWriter* self, ValaMethod* m, const gchar* tag_name, gboolean write_doc, gboolean instance) {
4417
ValaArrayList* _tmp0_;
4418
gpointer _tmp1_ = NULL;
4425
ValaMethod* _tmp22_;
4428
g_return_if_fail (self != NULL);
4429
g_return_if_fail (m != NULL);
4430
g_return_if_fail (tag_name != NULL);
4431
_tmp0_ = self->priv->hierarchy;
4432
_tmp1_ = vala_list_get ((ValaList*) _tmp0_, 0);
4433
parent = (ValaSymbol*) _tmp1_;
4435
_tmp3_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp2_);
4438
if (_tmp4_ != _tmp5_) {
4440
gchar* _tmp7_ = NULL;
4442
gchar* _tmp9_ = NULL;
4443
gchar* parent_prefix;
4444
const gchar* _tmp10_;
4445
const gchar* _tmp11_;
4446
gboolean _tmp12_ = FALSE;
4449
_tmp7_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp6_);
4453
_tmp9_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp8_);
4454
parent_prefix = _tmp9_;
4456
_tmp11_ = parent_prefix;
4457
_tmp12_ = g_str_has_prefix (_tmp10_, _tmp11_);
4459
const gchar* _tmp13_;
4460
const gchar* _tmp14_;
4463
gchar* _tmp17_ = NULL;
4465
_tmp14_ = parent_prefix;
4466
_tmp15_ = strlen (_tmp14_);
4468
_tmp17_ = string_substring (_tmp13_, (glong) _tmp16_, (glong) (-1));
4472
_g_free0 (parent_prefix);
4474
ValaMethod* _tmp18_;
4475
const gchar* _tmp19_;
4476
const gchar* _tmp20_;
4479
_tmp19_ = vala_symbol_get_name ((ValaSymbol*) _tmp18_);
4481
_tmp21_ = g_strdup (_tmp20_);
4486
_tmp23_ = vala_method_get_coroutine (_tmp22_);
4489
const gchar* _tmp25_;
4492
const gchar* _tmp27_;
4493
gboolean _tmp28_ = FALSE;
4494
const gchar* _tmp36_;
4496
ValaMethod* _tmp38_;
4497
const gchar* _tmp39_;
4499
const gchar* _tmp41_;
4500
ValaMethod* _tmp42_;
4501
gchar* _tmp43_ = NULL;
4503
ValaMethod* _tmp45_;
4504
ValaList* _tmp46_ = NULL;
4506
ValaVoidType* _tmp48_;
4507
ValaVoidType* _tmp49_;
4508
ValaMethod* _tmp50_;
4509
const gchar* _tmp51_;
4511
const gchar* _tmp53_;
4512
ValaMethod* _tmp54_;
4513
gchar* _tmp55_ = NULL;
4515
ValaMethod* _tmp57_;
4516
ValaList* _tmp58_ = NULL;
4518
ValaMethod* _tmp60_;
4519
ValaDataType* _tmp61_;
4520
ValaDataType* _tmp62_;
4521
ValaMethod* _tmp63_;
4525
_tmp26_ = g_strdup (_tmp25_);
4526
finish_name = _tmp26_;
4527
_tmp27_ = finish_name;
4528
_tmp28_ = g_str_has_suffix (_tmp27_, "_async");
4530
const gchar* _tmp29_;
4531
const gchar* _tmp30_;
4536
gchar* _tmp35_ = NULL;
4537
_tmp29_ = finish_name;
4538
_tmp30_ = finish_name;
4539
_tmp31_ = strlen (_tmp30_);
4541
_tmp33_ = strlen ("_async");
4543
_tmp35_ = string_substring (_tmp29_, (glong) 0, (glong) (_tmp32_ - _tmp34_));
4544
_g_free0 (finish_name);
4545
finish_name = _tmp35_;
4547
_tmp36_ = finish_name;
4548
_tmp37_ = g_strconcat (_tmp36_, "_finish", NULL);
4549
_g_free0 (finish_name);
4550
finish_name = _tmp37_;
4556
_tmp43_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp42_);
4559
_tmp46_ = vala_method_get_async_begin_parameters (_tmp45_);
4561
_tmp48_ = vala_void_type_new (NULL);
4563
vala_gir_writer_do_write_signature (self, _tmp38_, _tmp39_, _tmp40_, _tmp41_, _tmp44_, _tmp47_, (ValaDataType*) _tmp49_, FALSE, TRUE);
4564
_vala_code_node_unref0 (_tmp49_);
4565
_vala_iterable_unref0 (_tmp47_);
4570
_tmp53_ = finish_name;
4572
_tmp55_ = vala_ccode_base_module_get_ccode_finish_name (_tmp54_);
4575
_tmp58_ = vala_method_get_async_end_parameters (_tmp57_);
4578
_tmp61_ = vala_method_get_return_type (_tmp60_);
4581
_tmp64_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp63_);
4583
vala_gir_writer_do_write_signature (self, _tmp50_, _tmp51_, _tmp52_, _tmp53_, _tmp56_, _tmp59_, _tmp62_, _tmp65_, FALSE);
4584
_vala_iterable_unref0 (_tmp59_);
4586
_g_free0 (finish_name);
4588
ValaMethod* _tmp66_;
4589
const gchar* _tmp67_;
4591
const gchar* _tmp69_;
4592
ValaMethod* _tmp70_;
4593
gchar* _tmp71_ = NULL;
4595
ValaMethod* _tmp73_;
4596
ValaList* _tmp74_ = NULL;
4598
ValaMethod* _tmp76_;
4599
ValaDataType* _tmp77_;
4600
ValaDataType* _tmp78_;
4601
ValaMethod* _tmp79_;
4609
_tmp71_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp70_);
4612
_tmp74_ = vala_method_get_parameters (_tmp73_);
4615
_tmp77_ = vala_method_get_return_type (_tmp76_);
4618
_tmp80_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp79_);
4620
vala_gir_writer_do_write_signature (self, _tmp66_, _tmp67_, _tmp68_, _tmp69_, _tmp72_, _tmp75_, _tmp78_, _tmp81_, TRUE);
4621
_vala_iterable_unref0 (_tmp75_);
4625
_vala_code_node_unref0 (parent);
4629
static void vala_gir_writer_do_write_signature (ValaGIRWriter* self, ValaMethod* m, const gchar* tag_name, gboolean instance, const gchar* name, const gchar* cname, ValaList* params, ValaDataType* return_type, gboolean can_fail, gboolean write_comment) {
4631
const gchar* _tmp1_;
4632
const gchar* _tmp2_;
4633
const gchar* _tmp3_;
4635
ValaMethod* _tmp13_;
4638
gchar* return_comment;
4640
ValaMethod* _tmp22_;
4641
ValaDataType* instance_type;
4644
ValaDataType* _tmp29_;
4645
ValaMethod* _tmp30_;
4646
gboolean _tmp31_ = FALSE;
4647
const gchar* _tmp32_;
4648
ValaDataType* _tmp33_;
4651
const gchar* _tmp36_;
4652
g_return_if_fail (self != NULL);
4653
g_return_if_fail (m != NULL);
4654
g_return_if_fail (tag_name != NULL);
4655
g_return_if_fail (name != NULL);
4656
g_return_if_fail (cname != NULL);
4657
g_return_if_fail (params != NULL);
4658
g_return_if_fail (return_type != NULL);
4659
vala_gir_writer_write_indent (self);
4660
_tmp0_ = self->priv->buffer;
4663
g_string_append_printf (_tmp0_, "<%s name=\"%s\"", _tmp1_, _tmp2_);
4665
if (g_strcmp0 (_tmp3_, "virtual-method") == 0) {
4667
const gchar* _tmp5_;
4668
_tmp4_ = self->priv->buffer;
4670
g_string_append_printf (_tmp4_, " invoker=\"%s\"", _tmp5_);
4672
const gchar* _tmp6_;
4674
if (g_strcmp0 (_tmp6_, "callback") == 0) {
4676
const gchar* _tmp8_;
4677
_tmp7_ = self->priv->buffer;
4679
g_string_append_printf (_tmp7_, " c:type=\"%s\"", _tmp8_);
4682
const gchar* _tmp10_;
4683
_tmp9_ = self->priv->buffer;
4685
g_string_append_printf (_tmp9_, " c:identifier=\"%s\"", _tmp10_);
4691
_tmp12_ = self->priv->buffer;
4692
g_string_append_printf (_tmp12_, " throws=\"1\"");
4695
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp13_);
4696
_tmp14_ = self->priv->buffer;
4697
g_string_append_printf (_tmp14_, ">\n");
4698
_tmp15_ = self->priv->indent;
4699
self->priv->indent = _tmp15_ + 1;
4700
return_comment = NULL;
4701
_tmp16_ = write_comment;
4703
ValaMethod* _tmp17_;
4704
gchar* _tmp18_ = NULL;
4705
ValaMethod* _tmp19_;
4706
gchar* _tmp20_ = NULL;
4709
_tmp18_ = vala_gir_writer_get_method_return_comment (self, _tmp17_);
4710
_g_free0 (return_comment);
4711
return_comment = _tmp18_;
4713
_tmp20_ = vala_gir_writer_get_method_comment (self, _tmp19_);
4715
vala_gir_writer_write_doc (self, _tmp21_);
4719
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp22_);
4720
instance_type = NULL;
4723
ValaMethod* _tmp24_;
4724
ValaSymbol* _tmp25_;
4725
ValaSymbol* _tmp26_;
4726
ValaDataType* _tmp27_ = NULL;
4728
_tmp25_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp24_);
4730
_tmp27_ = vala_ccode_base_module_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
4731
_vala_code_node_unref0 (instance_type);
4732
instance_type = _tmp27_;
4735
_tmp29_ = return_type;
4737
_tmp31_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp30_);
4738
_tmp32_ = return_comment;
4739
_tmp33_ = instance_type;
4740
vala_gir_writer_write_params_and_return (self, _tmp28_, _tmp29_, _tmp31_, _tmp32_, FALSE, _tmp33_, FALSE);
4741
_tmp34_ = self->priv->indent;
4742
self->priv->indent = _tmp34_ - 1;
4743
vala_gir_writer_write_indent (self);
4744
_tmp35_ = self->priv->buffer;
4746
g_string_append_printf (_tmp35_, "</%s>\n", _tmp36_);
4747
_vala_code_node_unref0 (instance_type);
4748
_g_free0 (return_comment);
4752
static void vala_gir_writer_real_visit_creation_method (ValaCodeVisitor* base, ValaCreationMethod* m) {
4753
ValaGIRWriter * self;
4754
ValaCreationMethod* _tmp0_;
4757
ValaCreationMethod* _tmp3_;
4758
gboolean _tmp4_ = FALSE;
4759
gboolean _tmp5_ = FALSE;
4760
ValaCreationMethod* _tmp6_;
4764
ValaCreationMethod* _tmp15_;
4765
ValaSymbol* _tmp16_;
4766
ValaSymbol* _tmp17_;
4768
const gchar* _tmp18_ = NULL;
4770
const gchar* _tmp20_;
4773
gboolean _tmp22_ = FALSE;
4774
gboolean _tmp23_ = FALSE;
4775
ValaCreationMethod* _tmp24_;
4776
ValaSymbol* _tmp25_;
4777
ValaSymbol* _tmp26_;
4780
ValaCreationMethod* _tmp64_;
4785
ValaCreationMethod* _tmp70_;
4786
gchar* _tmp71_ = NULL;
4788
ValaCreationMethod* _tmp73_;
4789
ValaCreationMethod* _tmp74_;
4790
ValaSymbol* _tmp75_;
4791
ValaSymbol* _tmp76_;
4792
ValaDataType* _tmp77_ = NULL;
4793
ValaDataType* datatype;
4794
ValaCreationMethod* _tmp78_;
4795
ValaList* _tmp79_ = NULL;
4797
ValaDataType* _tmp81_;
4798
ValaCreationMethod* _tmp82_;
4799
gchar* _tmp83_ = NULL;
4803
const gchar* _tmp87_;
4804
self = (ValaGIRWriter*) base;
4805
g_return_if_fail (m != NULL);
4807
_tmp1_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp0_);
4813
_tmp4_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp3_);
4818
_tmp7_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp6_);
4820
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_CLASS)) {
4821
ValaCreationMethod* _tmp9_;
4822
ValaSymbol* _tmp10_;
4823
ValaSymbol* _tmp11_;
4827
_tmp10_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp9_);
4829
_tmp12_ = vala_class_get_is_abstract (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, VALA_TYPE_CLASS, ValaClass));
4839
vala_gir_writer_write_indent (self);
4841
_tmp16_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp15_);
4843
is_struct = G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, VALA_TYPE_STRUCT);
4844
_tmp19_ = is_struct;
4846
_tmp18_ = "function";
4848
_tmp18_ = "constructor";
4851
_tmp21_ = g_strdup (_tmp20_);
4854
_tmp25_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp24_);
4856
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, VALA_TYPE_CLASS)) {
4857
ValaCreationMethod* _tmp27_;
4858
ValaCreationMethod* _tmp28_;
4859
ValaSymbol* _tmp29_;
4860
ValaSymbol* _tmp30_;
4861
ValaMethod* _tmp31_;
4862
ValaMethod* _tmp32_;
4865
_tmp29_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp28_);
4867
_tmp31_ = vala_class_get_default_construction_method (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, VALA_TYPE_CLASS, ValaClass));
4869
_tmp23_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, VALA_TYPE_METHOD, ValaMethod) == _tmp32_;
4877
gboolean _tmp34_ = FALSE;
4878
ValaCreationMethod* _tmp35_;
4879
ValaSymbol* _tmp36_;
4880
ValaSymbol* _tmp37_;
4883
_tmp36_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp35_);
4885
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp37_, VALA_TYPE_STRUCT)) {
4886
ValaCreationMethod* _tmp38_;
4887
ValaCreationMethod* _tmp39_;
4888
ValaSymbol* _tmp40_;
4889
ValaSymbol* _tmp41_;
4890
ValaMethod* _tmp42_;
4891
ValaMethod* _tmp43_;
4894
_tmp40_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp39_);
4896
_tmp42_ = vala_struct_get_default_construction_method (G_TYPE_CHECK_INSTANCE_CAST (_tmp41_, VALA_TYPE_STRUCT, ValaStruct));
4898
_tmp34_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, VALA_TYPE_METHOD, ValaMethod) == _tmp43_;
4907
const gchar* _tmp46_ = NULL;
4909
const gchar* _tmp48_;
4913
const gchar* _tmp51_;
4914
const gchar* _tmp52_;
4915
ValaCreationMethod* _tmp53_;
4916
gchar* _tmp54_ = NULL;
4918
_tmp47_ = is_struct;
4925
_tmp49_ = g_strdup (_tmp48_);
4927
_tmp50_ = self->priv->buffer;
4931
_tmp54_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp53_);
4933
g_string_append_printf (_tmp50_, "<%s name=\"%s\" c:identifier=\"%s\"", _tmp51_, _tmp52_, _tmp55_);
4938
const gchar* _tmp57_;
4939
ValaCreationMethod* _tmp58_;
4940
const gchar* _tmp59_;
4941
const gchar* _tmp60_;
4942
ValaCreationMethod* _tmp61_;
4943
gchar* _tmp62_ = NULL;
4945
_tmp56_ = self->priv->buffer;
4948
_tmp59_ = vala_symbol_get_name ((ValaSymbol*) _tmp58_);
4951
_tmp62_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp61_);
4953
g_string_append_printf (_tmp56_, "<%s name=\"%s\" c:identifier=\"%s\"", _tmp57_, _tmp60_, _tmp63_);
4957
_tmp65_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp64_);
4961
_tmp67_ = self->priv->buffer;
4962
g_string_append_printf (_tmp67_, " throws=\"1\"");
4964
_tmp68_ = self->priv->buffer;
4965
g_string_append_printf (_tmp68_, ">\n");
4966
_tmp69_ = self->priv->indent;
4967
self->priv->indent = _tmp69_ + 1;
4969
_tmp71_ = vala_gir_writer_get_method_comment (self, (ValaMethod*) _tmp70_);
4971
vala_gir_writer_write_doc (self, _tmp72_);
4974
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp73_);
4976
_tmp75_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp74_);
4978
_tmp77_ = vala_ccode_base_module_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp76_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
4981
_tmp79_ = vala_method_get_parameters ((ValaMethod*) _tmp78_);
4985
_tmp83_ = vala_gir_writer_get_method_return_comment (self, (ValaMethod*) _tmp82_);
4987
vala_gir_writer_write_params_and_return (self, _tmp80_, _tmp81_, FALSE, _tmp84_, TRUE, NULL, FALSE);
4989
_vala_iterable_unref0 (_tmp80_);
4990
_tmp85_ = self->priv->indent;
4991
self->priv->indent = _tmp85_ - 1;
4992
vala_gir_writer_write_indent (self);
4993
_tmp86_ = self->priv->buffer;
4995
g_string_append_printf (_tmp86_, "</%s>\n", _tmp87_);
4996
_vala_code_node_unref0 (datatype);
4997
_g_free0 (tag_name);
5001
static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) {
5002
gchar* result = NULL;
5003
GError * _inner_error_ = NULL;
5004
g_return_val_if_fail (self != NULL, NULL);
5005
g_return_val_if_fail (old != NULL, NULL);
5006
g_return_val_if_fail (replacement != NULL, NULL);
5008
const gchar* _tmp0_;
5009
gchar* _tmp1_ = NULL;
5015
const gchar* _tmp6_;
5016
gchar* _tmp7_ = NULL;
5019
_tmp1_ = g_regex_escape_string (_tmp0_, -1);
5021
_tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_);
5025
if (_inner_error_ != NULL) {
5026
if (_inner_error_->domain == G_REGEX_ERROR) {
5027
goto __catch5_g_regex_error;
5029
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
5030
g_clear_error (&_inner_error_);
5034
_tmp6_ = replacement;
5035
_tmp7_ = g_regex_replace_literal (_tmp5_, self, (gssize) (-1), 0, _tmp6_, 0, &_inner_error_);
5037
if (_inner_error_ != NULL) {
5038
_g_regex_unref0 (regex);
5039
if (_inner_error_->domain == G_REGEX_ERROR) {
5040
goto __catch5_g_regex_error;
5042
_g_regex_unref0 (regex);
5043
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
5044
g_clear_error (&_inner_error_);
5048
_g_regex_unref0 (regex);
5052
__catch5_g_regex_error:
5056
_inner_error_ = NULL;
5057
g_assert_not_reached ();
5061
if (_inner_error_ != NULL) {
5062
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
5063
g_clear_error (&_inner_error_);
5069
static void vala_gir_writer_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop) {
5070
ValaGIRWriter * self;
5071
gboolean _tmp0_ = FALSE;
5072
gboolean _tmp1_ = FALSE;
5073
ValaProperty* _tmp2_;
5074
gboolean _tmp3_ = FALSE;
5078
ValaProperty* _tmp23_;
5079
const gchar* _tmp24_;
5080
const gchar* _tmp25_;
5081
gchar* _tmp26_ = NULL;
5083
ValaProperty* _tmp28_;
5084
ValaPropertyAccessor* _tmp29_;
5085
ValaPropertyAccessor* _tmp30_;
5086
ValaProperty* _tmp32_;
5087
ValaPropertyAccessor* _tmp33_;
5088
ValaPropertyAccessor* _tmp34_;
5089
ValaProperty* _tmp48_;
5092
ValaProperty* _tmp51_;
5093
gchar* _tmp52_ = NULL;
5095
ValaProperty* _tmp54_;
5096
ValaProperty* _tmp55_;
5097
ValaDataType* _tmp56_;
5098
ValaDataType* _tmp57_;
5101
self = (ValaGIRWriter*) base;
5102
g_return_if_fail (prop != NULL);
5104
_tmp3_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp2_);
5108
ValaProperty* _tmp4_;
5112
_tmp5_ = vala_property_get_overrides (_tmp4_);
5120
gboolean _tmp8_ = FALSE;
5121
gboolean _tmp9_ = FALSE;
5122
ValaProperty* _tmp10_;
5123
ValaProperty* _tmp11_;
5124
ValaProperty* _tmp12_;
5128
_tmp11_ = vala_property_get_base_interface_property (_tmp10_);
5130
if (_tmp12_ != NULL) {
5131
ValaProperty* _tmp13_;
5135
_tmp14_ = vala_property_get_is_abstract (_tmp13_);
5143
ValaProperty* _tmp17_;
5147
_tmp18_ = vala_property_get_is_virtual (_tmp17_);
5160
vala_gir_writer_write_indent (self);
5161
_tmp22_ = self->priv->buffer;
5163
_tmp24_ = vala_symbol_get_name ((ValaSymbol*) _tmp23_);
5165
_tmp26_ = string_replace (_tmp25_, "_", "-");
5167
g_string_append_printf (_tmp22_, "<property name=\"%s\"", _tmp27_);
5170
_tmp29_ = vala_property_get_get_accessor (_tmp28_);
5172
if (_tmp30_ == NULL) {
5174
_tmp31_ = self->priv->buffer;
5175
g_string_append_printf (_tmp31_, " readable=\"0\"");
5178
_tmp33_ = vala_property_get_set_accessor (_tmp32_);
5180
if (_tmp34_ != NULL) {
5182
ValaProperty* _tmp36_;
5183
ValaPropertyAccessor* _tmp37_;
5184
ValaPropertyAccessor* _tmp38_;
5187
_tmp35_ = self->priv->buffer;
5188
g_string_append_printf (_tmp35_, " writable=\"1\"");
5190
_tmp37_ = vala_property_get_set_accessor (_tmp36_);
5192
_tmp39_ = vala_property_accessor_get_construction (_tmp38_);
5195
ValaProperty* _tmp41_;
5196
ValaPropertyAccessor* _tmp42_;
5197
ValaPropertyAccessor* _tmp43_;
5201
_tmp42_ = vala_property_get_set_accessor (_tmp41_);
5203
_tmp44_ = vala_property_accessor_get_writable (_tmp43_);
5207
_tmp46_ = self->priv->buffer;
5208
g_string_append_printf (_tmp46_, " construct-only=\"1\"");
5211
_tmp47_ = self->priv->buffer;
5212
g_string_append_printf (_tmp47_, " construct=\"1\"");
5217
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp48_);
5218
_tmp49_ = self->priv->buffer;
5219
g_string_append_printf (_tmp49_, ">\n");
5220
_tmp50_ = self->priv->indent;
5221
self->priv->indent = _tmp50_ + 1;
5223
_tmp52_ = vala_gir_writer_get_property_comment (self, _tmp51_);
5225
vala_gir_writer_write_doc (self, _tmp53_);
5228
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp54_);
5230
_tmp56_ = vala_property_get_property_type (_tmp55_);
5232
vala_gir_writer_write_type (self, _tmp57_, -1);
5233
_tmp58_ = self->priv->indent;
5234
self->priv->indent = _tmp58_ - 1;
5235
vala_gir_writer_write_indent (self);
5236
_tmp59_ = self->priv->buffer;
5237
g_string_append_printf (_tmp59_, "</property>\n");
5241
static void vala_gir_writer_real_visit_signal (ValaCodeVisitor* base, ValaSignal* sig) {
5242
ValaGIRWriter * self;
5244
gboolean _tmp1_ = FALSE;
5247
gchar* _tmp4_ = NULL;
5253
gchar* _tmp10_ = NULL;
5255
ValaSignal* _tmp12_;
5256
ValaSignal* _tmp13_;
5257
ValaList* _tmp14_ = NULL;
5259
ValaSignal* _tmp16_;
5260
ValaDataType* _tmp17_;
5261
ValaDataType* _tmp18_;
5262
ValaSignal* _tmp19_;
5263
gchar* _tmp20_ = NULL;
5267
self = (ValaGIRWriter*) base;
5268
g_return_if_fail (sig != NULL);
5270
_tmp1_ = vala_gir_writer_check_accessibility (self, (ValaSymbol*) _tmp0_);
5274
vala_gir_writer_write_indent (self);
5275
_tmp2_ = self->priv->buffer;
5277
_tmp4_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp3_);
5279
g_string_append_printf (_tmp2_, "<glib:signal name=\"%s\"", _tmp5_);
5282
vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp6_);
5283
_tmp7_ = self->priv->buffer;
5284
g_string_append_printf (_tmp7_, ">\n");
5285
_tmp8_ = self->priv->indent;
5286
self->priv->indent = _tmp8_ + 1;
5288
_tmp10_ = vala_gir_writer_get_signal_comment (self, _tmp9_);
5290
vala_gir_writer_write_doc (self, _tmp11_);
5293
vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp12_);
5295
_tmp14_ = vala_signal_get_parameters (_tmp13_);
5298
_tmp17_ = vala_signal_get_return_type (_tmp16_);
5301
_tmp20_ = vala_gir_writer_get_signal_return_comment (self, _tmp19_);
5303
vala_gir_writer_write_params_and_return (self, _tmp15_, _tmp18_, FALSE, _tmp21_, FALSE, NULL, FALSE);
5305
_vala_iterable_unref0 (_tmp15_);
5306
_tmp22_ = self->priv->indent;
5307
self->priv->indent = _tmp22_ - 1;
5308
vala_gir_writer_write_indent (self);
5309
_tmp23_ = self->priv->buffer;
5310
g_string_append_printf (_tmp23_, "</glib:signal>\n");
5314
static void vala_gir_writer_write_indent (ValaGIRWriter* self) {
5316
g_return_if_fail (self != NULL);
5334
_tmp4_ = self->priv->indent;
5335
if (!(_tmp3_ < _tmp4_)) {
5338
_tmp5_ = self->priv->buffer;
5339
g_string_append_c (_tmp5_, '\t');
5345
static void vala_gir_writer_write_indent_stream (ValaGIRWriter* self) {
5347
g_return_if_fail (self != NULL);
5365
_tmp4_ = self->priv->indent;
5366
if (!(_tmp3_ < _tmp4_)) {
5369
_tmp5_ = self->priv->stream;
5370
fputc ('\t', _tmp5_);
5376
static void vala_gir_writer_write_param_or_return (ValaGIRWriter* self, ValaDataType* type, gboolean is_parameter, gint* index, gboolean has_array_length, const gchar* name, const gchar* comment, ValaParameterDirection direction, gboolean constructor, gboolean caller_allocates) {
5377
const gchar* _tmp0_ = NULL;
5379
const gchar* _tmp2_;
5383
const gchar* _tmp5_;
5384
const gchar* _tmp6_;
5385
ValaParameterDirection _tmp9_;
5386
ValaDataType* _tmp13_;
5387
ValaDelegateType* _tmp14_;
5388
ValaDelegateType* delegate_type;
5389
gboolean _tmp15_ = FALSE;
5390
gboolean _tmp16_ = FALSE;
5391
ValaDataType* _tmp17_;
5397
ValaDataType* _tmp35_;
5400
gboolean _tmp39_ = FALSE;
5401
ValaDelegateType* _tmp40_;
5405
const gchar* _tmp71_;
5406
gint length_param_index;
5408
ValaDataType* _tmp78_;
5412
const gchar* _tmp82_;
5414
g_return_if_fail (self != NULL);
5415
g_return_if_fail (type != NULL);
5416
vala_gir_writer_write_indent (self);
5417
_tmp1_ = is_parameter;
5419
_tmp0_ = "parameter";
5421
_tmp0_ = "return-value";
5424
_tmp3_ = g_strdup (_tmp2_);
5426
_tmp4_ = self->priv->buffer;
5428
g_string_append_printf (_tmp4_, "<%s", _tmp5_);
5430
if (_tmp6_ != NULL) {
5432
const gchar* _tmp8_;
5433
_tmp7_ = self->priv->buffer;
5435
g_string_append_printf (_tmp7_, " name=\"%s\"", _tmp8_);
5438
if (_tmp9_ == VALA_PARAMETER_DIRECTION_REF) {
5440
_tmp10_ = self->priv->buffer;
5441
g_string_append_printf (_tmp10_, " direction=\"inout\"");
5443
ValaParameterDirection _tmp11_;
5444
_tmp11_ = direction;
5445
if (_tmp11_ == VALA_PARAMETER_DIRECTION_OUT) {
5447
_tmp12_ = self->priv->buffer;
5448
g_string_append_printf (_tmp12_, " direction=\"out\"");
5452
_tmp14_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp13_) : NULL);
5453
delegate_type = _tmp14_;
5455
_tmp18_ = vala_data_type_get_value_owned (_tmp17_);
5458
ValaDelegateType* _tmp20_;
5459
_tmp20_ = delegate_type;
5460
_tmp16_ = _tmp20_ == NULL;
5468
gboolean _tmp22_ = FALSE;
5471
_tmp23_ = constructor;
5473
ValaDataType* _tmp24_;
5474
ValaTypeSymbol* _tmp25_;
5475
ValaTypeSymbol* _tmp26_;
5476
ValaTypeSymbol* _tmp27_;
5477
gboolean _tmp28_ = FALSE;
5479
_tmp25_ = vala_data_type_get_data_type (_tmp24_);
5481
_tmp27_ = self->priv->ginitiallyunowned_type;
5482
_tmp28_ = vala_typesymbol_is_subtype_of (_tmp26_, _tmp27_);
5493
_tmp31_ = self->priv->buffer;
5494
g_string_append_printf (_tmp31_, " transfer-ownership=\"full\"");
5497
_tmp32_ = self->priv->buffer;
5498
g_string_append_printf (_tmp32_, " transfer-ownership=\"none\"");
5500
_tmp33_ = caller_allocates;
5503
_tmp34_ = self->priv->buffer;
5504
g_string_append_printf (_tmp34_, " caller-allocates=\"1\"");
5507
_tmp36_ = vala_data_type_get_nullable (_tmp35_);
5511
_tmp38_ = self->priv->buffer;
5512
g_string_append_printf (_tmp38_, " allow-none=\"1\"");
5514
_tmp40_ = delegate_type;
5515
if (_tmp40_ != NULL) {
5516
ValaDelegateType* _tmp41_;
5517
ValaDelegate* _tmp42_;
5518
ValaDelegate* _tmp43_;
5521
_tmp41_ = delegate_type;
5522
_tmp42_ = vala_delegate_type_get_delegate_symbol (_tmp41_);
5524
_tmp44_ = vala_delegate_get_has_target (_tmp43_);
5538
ValaDataType* _tmp60_;
5541
ValaDelegateType* _tmp65_;
5544
_tmp48_ = is_parameter;
5548
_tmp47_ = _tmp49_ + 1;
5551
ValaDataType* _tmp51_;
5556
_tmp52_ = vala_data_type_get_value_owned (_tmp51_);
5561
_tmp50_ = _tmp54_ - 1;
5571
closure_index = _tmp57_;
5572
_tmp58_ = self->priv->buffer;
5573
_tmp59_ = closure_index;
5574
g_string_append_printf (_tmp58_, " closure=\"%i\"", _tmp59_);
5576
_tmp61_ = vala_data_type_get_value_owned (_tmp60_);
5581
_tmp63_ = self->priv->buffer;
5582
_tmp64_ = closure_index;
5583
g_string_append_printf (_tmp63_, " destroy=\"%i\"", _tmp64_ + 1);
5585
_tmp65_ = delegate_type;
5586
_tmp66_ = vala_delegate_type_get_is_called_once (_tmp65_);
5590
_tmp68_ = self->priv->buffer;
5591
g_string_append (_tmp68_, " scope=\"async\"");
5594
_tmp69_ = self->priv->buffer;
5595
g_string_append_printf (_tmp69_, ">\n");
5596
_tmp70_ = self->priv->indent;
5597
self->priv->indent = _tmp70_ + 1;
5599
vala_gir_writer_write_doc (self, _tmp71_);
5600
length_param_index = -1;
5601
_tmp72_ = has_array_length;
5606
_tmp74_ = is_parameter;
5610
_tmp73_ = _tmp75_ + 1;
5617
length_param_index = _tmp77_;
5620
_tmp79_ = length_param_index;
5621
vala_gir_writer_write_type (self, _tmp78_, _tmp79_);
5622
_tmp80_ = self->priv->indent;
5623
self->priv->indent = _tmp80_ - 1;
5624
vala_gir_writer_write_indent (self);
5625
_tmp81_ = self->priv->buffer;
5627
g_string_append_printf (_tmp81_, "</%s>\n", _tmp82_);
5629
*index = _tmp83_ + 1;
5630
_vala_code_node_unref0 (delegate_type);
5635
static void vala_gir_writer_write_ctype_attributes (ValaGIRWriter* self, ValaTypeSymbol* symbol, const gchar* suffix) {
5637
ValaTypeSymbol* _tmp1_;
5638
gchar* _tmp2_ = NULL;
5640
const gchar* _tmp4_;
5641
g_return_if_fail (self != NULL);
5642
g_return_if_fail (symbol != NULL);
5643
g_return_if_fail (suffix != NULL);
5644
_tmp0_ = self->priv->buffer;
5646
_tmp2_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp1_);
5649
g_string_append_printf (_tmp0_, " c:type=\"%s%s\"", _tmp3_, _tmp4_);
5654
static void vala_gir_writer_write_gtype_attributes (ValaGIRWriter* self, ValaTypeSymbol* symbol) {
5655
ValaTypeSymbol* _tmp0_;
5657
ValaTypeSymbol* _tmp2_;
5658
gchar* _tmp3_ = NULL;
5661
ValaTypeSymbol* _tmp6_;
5662
gchar* _tmp7_ = NULL;
5664
g_return_if_fail (self != NULL);
5665
g_return_if_fail (symbol != NULL);
5667
vala_gir_writer_write_ctype_attributes (self, _tmp0_, "");
5668
_tmp1_ = self->priv->buffer;
5670
_tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
5672
g_string_append_printf (_tmp1_, " glib:type-name=\"%s\"", _tmp4_);
5674
_tmp5_ = self->priv->buffer;
5676
_tmp7_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp6_);
5678
g_string_append_printf (_tmp5_, " glib:get-type=\"%sget_type\"", _tmp8_);
5683
static void vala_gir_writer_write_type (ValaGIRWriter* self, ValaDataType* type, gint index) {
5684
ValaDataType* _tmp0_;
5685
g_return_if_fail (self != NULL);
5686
g_return_if_fail (type != NULL);
5688
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ARRAY_TYPE)) {
5689
ValaDataType* _tmp1_;
5690
ValaArrayType* _tmp2_;
5691
ValaArrayType* array_type;
5693
ValaArrayType* _tmp4_;
5698
ValaArrayType* _tmp16_;
5699
ValaDataType* _tmp17_;
5700
ValaDataType* _tmp18_;
5704
_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
5705
array_type = _tmp2_;
5706
vala_gir_writer_write_indent (self);
5707
_tmp3_ = self->priv->buffer;
5708
g_string_append_printf (_tmp3_, "<array");
5709
_tmp4_ = array_type;
5710
_tmp5_ = vala_array_type_get_fixed_length (_tmp4_);
5714
ValaArrayType* _tmp8_;
5717
_tmp7_ = self->priv->buffer;
5718
_tmp8_ = array_type;
5719
_tmp9_ = vala_array_type_get_length (_tmp8_);
5721
g_string_append_printf (_tmp7_, " fixed-size=\"%i\"", _tmp10_);
5725
if (_tmp11_ != (-1)) {
5728
_tmp12_ = self->priv->buffer;
5730
g_string_append_printf (_tmp12_, " length=\"%i\"", _tmp13_);
5733
_tmp14_ = self->priv->buffer;
5734
g_string_append_printf (_tmp14_, ">\n");
5735
_tmp15_ = self->priv->indent;
5736
self->priv->indent = _tmp15_ + 1;
5737
_tmp16_ = array_type;
5738
_tmp17_ = vala_array_type_get_element_type (_tmp16_);
5740
vala_gir_writer_write_type (self, _tmp18_, -1);
5741
_tmp19_ = self->priv->indent;
5742
self->priv->indent = _tmp19_ - 1;
5743
vala_gir_writer_write_indent (self);
5744
_tmp20_ = self->priv->buffer;
5745
g_string_append_printf (_tmp20_, "</array>\n");
5746
_vala_code_node_unref0 (array_type);
5748
ValaDataType* _tmp21_;
5750
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_VOID_TYPE)) {
5752
vala_gir_writer_write_indent (self);
5753
_tmp22_ = self->priv->buffer;
5754
g_string_append_printf (_tmp22_, "<type name=\"none\"/>\n");
5756
ValaDataType* _tmp23_;
5758
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, VALA_TYPE_POINTER_TYPE)) {
5760
ValaDataType* _tmp25_;
5761
gchar* _tmp26_ = NULL;
5763
vala_gir_writer_write_indent (self);
5764
_tmp24_ = self->priv->buffer;
5766
_tmp26_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp25_);
5768
g_string_append_printf (_tmp24_, "<type name=\"gpointer\" c:type=\"%s\"/>\n", _tmp27_);
5771
ValaDataType* _tmp28_;
5772
ValaTypeSymbol* _tmp29_;
5773
ValaTypeSymbol* _tmp30_;
5775
_tmp29_ = vala_data_type_get_data_type (_tmp28_);
5777
if (_tmp30_ != NULL) {
5778
ValaDataType* _tmp31_;
5779
ValaTypeSymbol* _tmp32_;
5780
ValaTypeSymbol* _tmp33_;
5781
gchar* _tmp34_ = NULL;
5784
gboolean _tmp35_ = FALSE;
5785
const gchar* _tmp36_;
5787
const gchar* _tmp39_ = NULL;
5790
const gchar* _tmp42_;
5791
ValaDataType* _tmp43_;
5792
ValaTypeSymbol* _tmp44_;
5793
ValaTypeSymbol* _tmp45_;
5794
gchar* _tmp46_ = NULL;
5796
ValaDataType* _tmp48_;
5797
gchar* _tmp49_ = NULL;
5799
ValaDataType* _tmp51_;
5800
ValaList* _tmp52_ = NULL;
5801
ValaList* type_arguments;
5805
vala_gir_writer_write_indent (self);
5807
_tmp32_ = vala_data_type_get_data_type (_tmp31_);
5809
_tmp34_ = vala_gir_writer_gi_type_name (self, _tmp33_);
5810
type_name = _tmp34_;
5812
_tmp36_ = type_name;
5813
if (g_strcmp0 (_tmp36_, "GLib.Array") == 0) {
5816
const gchar* _tmp37_;
5817
_tmp37_ = type_name;
5818
_tmp35_ = g_strcmp0 (_tmp37_, "GLib.PtrArray") == 0;
5830
_tmp41_ = self->priv->buffer;
5833
_tmp44_ = vala_data_type_get_data_type (_tmp43_);
5835
_tmp46_ = vala_gir_writer_gi_type_name (self, _tmp45_);
5838
_tmp49_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp48_);
5840
g_string_append_printf (_tmp41_, "<%s name=\"%s\" c:type=\"%s\"", _tmp42_, _tmp47_, _tmp50_);
5844
_tmp52_ = vala_data_type_get_type_arguments (_tmp51_);
5845
type_arguments = _tmp52_;
5846
_tmp53_ = type_arguments;
5847
_tmp54_ = vala_collection_get_size ((ValaCollection*) _tmp53_);
5851
_tmp56_ = self->priv->buffer;
5852
g_string_append_printf (_tmp56_, "/>\n");
5857
const gchar* _tmp72_ = NULL;
5860
const gchar* _tmp75_;
5861
_tmp57_ = self->priv->buffer;
5862
g_string_append_printf (_tmp57_, ">\n");
5863
_tmp58_ = self->priv->indent;
5864
self->priv->indent = _tmp58_ + 1;
5868
ValaList* _type_argument_list;
5872
gint _type_argument_size;
5873
gint _type_argument_index;
5874
_tmp59_ = type_arguments;
5875
_tmp60_ = _vala_iterable_ref0 (_tmp59_);
5876
_type_argument_list = _tmp60_;
5877
_tmp61_ = _type_argument_list;
5878
_tmp62_ = vala_collection_get_size ((ValaCollection*) _tmp61_);
5880
_type_argument_size = _tmp63_;
5881
_type_argument_index = -1;
5888
gpointer _tmp69_ = NULL;
5889
ValaDataType* type_argument;
5890
ValaDataType* _tmp70_;
5891
_tmp64_ = _type_argument_index;
5892
_type_argument_index = _tmp64_ + 1;
5893
_tmp65_ = _type_argument_index;
5894
_tmp66_ = _type_argument_size;
5895
if (!(_tmp65_ < _tmp66_)) {
5898
_tmp67_ = _type_argument_list;
5899
_tmp68_ = _type_argument_index;
5900
_tmp69_ = vala_list_get (_tmp67_, _tmp68_);
5901
type_argument = (ValaDataType*) _tmp69_;
5902
_tmp70_ = type_argument;
5903
vala_gir_writer_write_type (self, _tmp70_, -1);
5904
_vala_code_node_unref0 (type_argument);
5906
_vala_iterable_unref0 (_type_argument_list);
5908
_tmp71_ = self->priv->indent;
5909
self->priv->indent = _tmp71_ - 1;
5910
vala_gir_writer_write_indent (self);
5917
_tmp74_ = self->priv->buffer;
5919
g_string_append_printf (_tmp74_, "</%s>\n", _tmp75_);
5921
_vala_iterable_unref0 (type_arguments);
5922
_g_free0 (type_name);
5924
ValaDataType* _tmp76_;
5926
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp76_, VALA_TYPE_DELEGATE_TYPE)) {
5927
ValaDataType* _tmp77_;
5928
ValaDelegateType* _tmp78_;
5929
ValaDelegateType* deleg_type;
5931
ValaDelegateType* _tmp80_;
5932
ValaDelegate* _tmp81_;
5933
ValaDelegate* _tmp82_;
5934
gchar* _tmp83_ = NULL;
5936
ValaDataType* _tmp85_;
5937
gchar* _tmp86_ = NULL;
5940
_tmp78_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp77_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
5941
deleg_type = _tmp78_;
5942
vala_gir_writer_write_indent (self);
5943
_tmp79_ = self->priv->buffer;
5944
_tmp80_ = deleg_type;
5945
_tmp81_ = vala_delegate_type_get_delegate_symbol (_tmp80_);
5947
_tmp83_ = vala_gir_writer_gi_type_name (self, (ValaTypeSymbol*) _tmp82_);
5950
_tmp86_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp85_);
5952
g_string_append_printf (_tmp79_, "<type name=\"%s\" c:type=\"%s\"/>\n", _tmp84_, _tmp87_);
5955
_vala_code_node_unref0 (deleg_type);
5957
ValaDataType* _tmp88_;
5959
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp88_, VALA_TYPE_GENERIC_TYPE)) {
5961
vala_gir_writer_write_indent (self);
5962
_tmp89_ = self->priv->buffer;
5963
g_string_append (_tmp89_, "<type name=\"gpointer\" c:type=\"gpointer\"/>\n");
5966
ValaDataType* _tmp91_;
5967
gchar* _tmp92_ = NULL;
5969
vala_gir_writer_write_indent (self);
5970
_tmp90_ = self->priv->buffer;
5972
_tmp92_ = vala_code_node_to_string ((ValaCodeNode*) _tmp91_);
5974
g_string_append_printf (_tmp90_, "<type name=\"%s\"/>\n", _tmp93_);
5985
static void vala_gir_writer_write_annotations (ValaGIRWriter* self, ValaCodeNode* node) {
5986
ValaCodeNode* _tmp0_;
5988
g_return_if_fail (self != NULL);
5989
g_return_if_fail (node != NULL);
5991
_tmp1_ = _tmp0_->attributes;
5993
GList* attr_collection = NULL;
5994
GList* attr_it = NULL;
5995
attr_collection = _tmp1_;
5996
for (attr_it = attr_collection; attr_it != NULL; attr_it = attr_it->next) {
5997
ValaAttribute* _tmp2_;
5998
ValaAttribute* attr = NULL;
5999
_tmp2_ = _vala_code_node_ref0 ((ValaAttribute*) attr_it->data);
6002
ValaAttribute* _tmp3_;
6003
const gchar* _tmp4_;
6004
const gchar* _tmp5_;
6005
gchar* _tmp6_ = NULL;
6008
_tmp4_ = vala_attribute_get_name (_tmp3_);
6010
_tmp6_ = vala_gir_writer_camel_case_to_canonical (self, _tmp5_);
6013
ValaAttribute* _tmp7_;
6015
ValaSet* _tmp9_ = NULL;
6017
ValaIterator* _tmp11_ = NULL;
6018
ValaIterator* _tmp12_;
6019
ValaIterator* _arg_name_it;
6021
_tmp8_ = _tmp7_->args;
6022
_tmp9_ = vala_map_get_keys (_tmp8_);
6024
_tmp11_ = vala_iterable_iterator ((ValaIterable*) _tmp10_);
6026
_vala_iterable_unref0 (_tmp10_);
6027
_arg_name_it = _tmp12_;
6029
ValaIterator* _tmp13_;
6030
gboolean _tmp14_ = FALSE;
6031
ValaIterator* _tmp15_;
6032
gpointer _tmp16_ = NULL;
6034
ValaAttribute* _tmp17_;
6036
const gchar* _tmp19_;
6037
gpointer _tmp20_ = NULL;
6039
const gchar* _tmp21_;
6040
gboolean _tmp22_ = FALSE;
6042
const gchar* _tmp27_;
6043
const gchar* _tmp28_;
6044
gchar* _tmp29_ = NULL;
6046
const gchar* _tmp31_;
6047
_tmp13_ = _arg_name_it;
6048
_tmp14_ = vala_iterator_next (_tmp13_);
6052
_tmp15_ = _arg_name_it;
6053
_tmp16_ = vala_iterator_get (_tmp15_);
6054
arg_name = (gchar*) _tmp16_;
6056
_tmp18_ = _tmp17_->args;
6058
_tmp20_ = vala_map_get (_tmp18_, _tmp19_);
6059
value = (gchar*) _tmp20_;
6061
_tmp22_ = g_str_has_prefix (_tmp21_, "\"");
6063
ValaAttribute* _tmp23_;
6064
const gchar* _tmp24_;
6065
gchar* _tmp25_ = NULL;
6068
_tmp25_ = vala_attribute_get_string (_tmp23_, _tmp24_);
6072
vala_gir_writer_write_indent (self);
6073
_tmp26_ = self->priv->buffer;
6076
_tmp29_ = vala_gir_writer_camel_case_to_canonical (self, _tmp28_);
6079
g_string_append_printf (_tmp26_, "<annotation key=\"%s.%s\" value=\"%s\"/>\n", _tmp27_, _tmp30_, _tmp31_);
6082
_g_free0 (arg_name);
6084
_vala_iterator_unref0 (_arg_name_it);
6087
_vala_code_node_unref0 (attr);
6094
static gboolean string_contains (const gchar* self, const gchar* needle) {
6095
gboolean result = FALSE;
6096
const gchar* _tmp0_;
6097
gchar* _tmp1_ = NULL;
6098
g_return_val_if_fail (self != NULL, FALSE);
6099
g_return_val_if_fail (needle != NULL, FALSE);
6101
_tmp1_ = strstr ((gchar*) self, (gchar*) _tmp0_);
6102
result = _tmp1_ != NULL;
6107
static gchar* vala_gir_writer_get_full_gir_name (ValaGIRWriter* self, ValaSymbol* sym) {
6108
gchar* result = NULL;
6110
gchar* _tmp1_ = NULL;
6112
const gchar* _tmp3_;
6113
const gchar* _tmp8_;
6116
ValaSymbol* _tmp10_;
6117
ValaSymbol* _tmp11_;
6118
ValaSymbol* _tmp12_;
6119
ValaSymbol* _tmp13_;
6120
const gchar* _tmp14_;
6121
const gchar* _tmp15_;
6122
ValaSymbol* _tmp20_;
6123
ValaSymbol* _tmp21_;
6124
ValaSymbol* _tmp22_;
6125
gchar* _tmp23_ = NULL;
6126
gchar* parent_gir_name;
6127
const gchar* _tmp24_;
6128
gchar* _tmp25_ = NULL;
6129
const gchar* _tmp26_;
6130
gboolean _tmp27_ = FALSE;
6131
const gchar* _tmp32_;
6133
gchar* self_gir_name;
6134
const gchar* _tmp34_;
6135
gboolean _tmp35_ = FALSE;
6136
g_return_val_if_fail (self != NULL, NULL);
6137
g_return_val_if_fail (sym != NULL, NULL);
6139
_tmp1_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp0_, "GIR", "name");
6142
if (_tmp3_ == NULL) {
6144
const gchar* _tmp5_;
6145
const gchar* _tmp6_;
6148
_tmp5_ = vala_symbol_get_name (_tmp4_);
6150
_tmp7_ = g_strdup (_tmp6_);
6155
_tmp9_ = g_strdup (_tmp8_);
6158
_tmp11_ = vala_symbol_get_parent_symbol (_tmp10_);
6160
if (_tmp12_ == NULL) {
6166
_tmp14_ = vala_symbol_get_name (_tmp13_);
6168
if (_tmp15_ == NULL) {
6169
ValaSymbol* _tmp16_;
6170
ValaSymbol* _tmp17_;
6171
ValaSymbol* _tmp18_;
6172
gchar* _tmp19_ = NULL;
6174
_tmp17_ = vala_symbol_get_parent_symbol (_tmp16_);
6176
_tmp19_ = vala_gir_writer_get_full_gir_name (self, _tmp18_);
6178
_g_free0 (gir_name);
6183
_tmp21_ = vala_symbol_get_parent_symbol (_tmp20_);
6185
_tmp23_ = vala_gir_writer_get_full_gir_name (self, _tmp22_);
6186
parent_gir_name = _tmp23_;
6187
_tmp24_ = parent_gir_name;
6188
if (_tmp24_ == NULL) {
6190
_g_free0 (parent_gir_name);
6195
_tmp27_ = g_str_has_prefix (_tmp26_, ".");
6197
const gchar* _tmp28_;
6198
gchar* _tmp29_ = NULL;
6200
_tmp29_ = string_substring (_tmp28_, (glong) 1, (glong) (-1));
6204
const gchar* _tmp30_;
6207
_tmp31_ = g_strdup (_tmp30_);
6212
_tmp33_ = g_strdup (_tmp32_);
6213
self_gir_name = _tmp33_;
6214
_tmp34_ = parent_gir_name;
6215
_tmp35_ = string_contains (_tmp34_, ".");
6217
const gchar* _tmp36_;
6218
const gchar* _tmp37_;
6219
gchar* _tmp38_ = NULL;
6220
_tmp36_ = parent_gir_name;
6221
_tmp37_ = self_gir_name;
6222
_tmp38_ = g_strdup_printf ("%s%s", _tmp36_, _tmp37_);
6224
_g_free0 (self_gir_name);
6226
_g_free0 (parent_gir_name);
6227
_g_free0 (gir_name);
6231
const gchar* _tmp39_;
6232
const gchar* _tmp40_;
6233
gchar* _tmp41_ = NULL;
6234
_tmp39_ = parent_gir_name;
6235
_tmp40_ = self_gir_name;
6236
_tmp41_ = g_strdup_printf ("%s.%s", _tmp39_, _tmp40_);
6238
_g_free0 (self_gir_name);
6240
_g_free0 (parent_gir_name);
6241
_g_free0 (gir_name);
6245
_g_free0 (self_gir_name);
6247
_g_free0 (parent_gir_name);
6248
_g_free0 (gir_name);
6253
static gchar* vala_gir_writer_gi_type_name (ValaGIRWriter* self, ValaTypeSymbol* type_symbol) {
6254
gchar* result = NULL;
6255
ValaTypeSymbol* _tmp0_;
6261
ValaTypeSymbol* _tmp65_;
6262
gchar* _tmp66_ = NULL;
6263
g_return_val_if_fail (self != NULL, NULL);
6264
g_return_val_if_fail (type_symbol != NULL, NULL);
6265
_tmp0_ = type_symbol;
6266
_tmp1_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp0_);
6268
_tmp3_ = _vala_code_node_ref0 (_tmp2_);
6271
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_NAMESPACE)) {
6273
ValaNamespace* _tmp6_;
6275
ValaNamespace* _tmp7_;
6276
gchar* _tmp8_ = NULL;
6278
const gchar* _tmp10_;
6279
const gchar* _tmp15_;
6282
const gchar* _tmp17_;
6284
_tmp6_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_NAMESPACE) ? ((ValaNamespace*) _tmp5_) : NULL);
6287
_tmp8_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp7_, "GIR", "name");
6290
if (_tmp10_ == NULL) {
6291
ValaNamespace* _tmp11_;
6292
const gchar* _tmp12_;
6293
const gchar* _tmp13_;
6296
_tmp12_ = vala_symbol_get_name ((ValaSymbol*) _tmp11_);
6298
_tmp14_ = g_strdup (_tmp13_);
6303
_tmp16_ = g_strdup (_tmp15_);
6304
ns_gir_name = _tmp16_;
6305
_tmp17_ = ns_gir_name;
6306
if (_tmp17_ != NULL) {
6307
ValaTypeSymbol* _tmp18_;
6308
ValaSourceReference* _tmp19_;
6309
ValaSourceReference* _tmp20_;
6310
ValaSourceFile* _tmp21_;
6311
ValaSourceFile* _tmp22_;
6312
const gchar* _tmp23_;
6313
const gchar* _tmp24_;
6314
_tmp18_ = type_symbol;
6315
_tmp19_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp18_);
6317
_tmp21_ = vala_source_reference_get_file (_tmp20_);
6319
_tmp23_ = vala_source_file_get_gir_namespace (_tmp22_);
6321
if (_tmp24_ != NULL) {
6322
ValaTypeSymbol* _tmp25_;
6323
ValaSourceReference* _tmp26_;
6324
ValaSourceReference* _tmp27_;
6325
ValaSourceFile* _tmp28_;
6326
ValaSourceFile* _tmp29_;
6327
const gchar* _tmp30_;
6328
const gchar* _tmp31_;
6329
ValaTypeSymbol* _tmp32_;
6330
ValaSourceReference* _tmp33_;
6331
ValaSourceReference* _tmp34_;
6332
ValaSourceFile* _tmp35_;
6333
ValaSourceFile* _tmp36_;
6334
const gchar* _tmp37_;
6335
const gchar* _tmp38_;
6336
ValaGIRWriterGIRNamespace external = {0};
6337
ValaArrayList* _tmp39_;
6338
ValaGIRWriterGIRNamespace _tmp40_;
6339
gboolean _tmp41_ = FALSE;
6340
ValaTypeSymbol* _tmp44_;
6341
gchar* _tmp45_ = NULL;
6343
const gchar* _tmp47_;
6344
const gchar* _tmp52_;
6347
ValaTypeSymbol* _tmp54_;
6348
ValaSourceReference* _tmp55_;
6349
ValaSourceReference* _tmp56_;
6350
ValaSourceFile* _tmp57_;
6351
ValaSourceFile* _tmp58_;
6352
const gchar* _tmp59_;
6353
const gchar* _tmp60_;
6354
const gchar* _tmp61_;
6355
gchar* _tmp62_ = NULL;
6356
_tmp25_ = type_symbol;
6357
_tmp26_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp25_);
6359
_tmp28_ = vala_source_reference_get_file (_tmp27_);
6361
_tmp30_ = vala_source_file_get_gir_namespace (_tmp29_);
6363
_tmp32_ = type_symbol;
6364
_tmp33_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp32_);
6366
_tmp35_ = vala_source_reference_get_file (_tmp34_);
6368
_tmp37_ = vala_source_file_get_gir_version (_tmp36_);
6370
vala_gir_writer_gir_namespace_init (&external, _tmp31_, _tmp38_);
6371
_tmp39_ = self->priv->externals;
6373
_tmp41_ = vala_collection_contains ((ValaCollection*) _tmp39_, &_tmp40_);
6375
ValaArrayList* _tmp42_;
6376
ValaGIRWriterGIRNamespace _tmp43_;
6377
_tmp42_ = self->priv->externals;
6379
vala_collection_add ((ValaCollection*) _tmp42_, &_tmp43_);
6381
_tmp44_ = type_symbol;
6382
_tmp45_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp44_, "GIR", "name");
6385
if (_tmp47_ == NULL) {
6386
ValaTypeSymbol* _tmp48_;
6387
const gchar* _tmp49_;
6388
const gchar* _tmp50_;
6390
_tmp48_ = type_symbol;
6391
_tmp49_ = vala_symbol_get_name ((ValaSymbol*) _tmp48_);
6393
_tmp51_ = g_strdup (_tmp50_);
6398
_tmp53_ = g_strdup (_tmp52_);
6399
type_name = _tmp53_;
6400
_tmp54_ = type_symbol;
6401
_tmp55_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp54_);
6403
_tmp57_ = vala_source_reference_get_file (_tmp56_);
6405
_tmp59_ = vala_source_file_get_gir_namespace (_tmp58_);
6407
_tmp61_ = type_name;
6408
_tmp62_ = g_strdup_printf ("%s.%s", _tmp60_, _tmp61_);
6410
_g_free0 (type_name);
6412
vala_gir_writer_gir_namespace_destroy (&external);
6413
_g_free0 (ns_gir_name);
6415
_vala_code_node_unref0 (ns);
6416
_vala_code_node_unref0 (parent);
6419
ValaHashSet* _tmp63_;
6420
ValaNamespace* _tmp64_;
6421
_tmp63_ = self->priv->unannotated_namespaces;
6423
vala_collection_add ((ValaCollection*) _tmp63_, _tmp64_);
6426
_g_free0 (ns_gir_name);
6428
_vala_code_node_unref0 (ns);
6430
_tmp65_ = type_symbol;
6431
_tmp66_ = vala_gir_writer_get_full_gir_name (self, (ValaSymbol*) _tmp65_);
6433
_vala_code_node_unref0 (parent);
6438
static gchar* vala_gir_writer_literal_expression_to_value_string (ValaGIRWriter* self, ValaExpression* literal) {
6439
gchar* result = NULL;
6440
ValaExpression* _tmp0_;
6441
g_return_val_if_fail (self != NULL, NULL);
6442
g_return_val_if_fail (literal != NULL, NULL);
6444
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_STRING_LITERAL)) {
6445
ValaExpression* _tmp1_;
6446
ValaStringLiteral* _tmp2_;
6447
ValaStringLiteral* lit;
6448
ValaStringLiteral* _tmp3_;
6450
_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_STRING_LITERAL) ? ((ValaStringLiteral*) _tmp1_) : NULL);
6453
if (_tmp3_ != NULL) {
6454
ValaStringLiteral* _tmp4_;
6455
gchar* _tmp5_ = NULL;
6457
gchar* _tmp7_ = NULL;
6460
_tmp5_ = vala_string_literal_eval (_tmp4_);
6462
_tmp7_ = g_markup_escape_text (_tmp6_, (gssize) (-1));
6466
_vala_code_node_unref0 (lit);
6469
_vala_code_node_unref0 (lit);
6471
ValaExpression* _tmp9_;
6473
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_CHARACTER_LITERAL)) {
6474
ValaExpression* _tmp10_;
6475
gunichar _tmp11_ = 0U;
6476
gchar* _tmp12_ = NULL;
6478
_tmp11_ = vala_character_literal_get_char (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, VALA_TYPE_CHARACTER_LITERAL, ValaCharacterLiteral));
6479
_tmp12_ = g_strdup_printf ("%c", (gint) ((gchar) _tmp11_));
6483
ValaExpression* _tmp13_;
6485
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, VALA_TYPE_BOOLEAN_LITERAL)) {
6486
const gchar* _tmp14_ = NULL;
6487
ValaExpression* _tmp15_;
6490
const gchar* _tmp18_;
6493
_tmp16_ = vala_boolean_literal_get_value (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, VALA_TYPE_BOOLEAN_LITERAL, ValaBooleanLiteral));
6501
_tmp19_ = g_strdup (_tmp18_);
6505
ValaExpression* _tmp20_;
6507
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp20_, VALA_TYPE_REAL_LITERAL)) {
6508
ValaExpression* _tmp21_;
6509
const gchar* _tmp22_;
6510
const gchar* _tmp23_;
6513
_tmp22_ = vala_real_literal_get_value (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, VALA_TYPE_REAL_LITERAL, ValaRealLiteral));
6515
_tmp24_ = g_strdup (_tmp23_);
6519
ValaExpression* _tmp25_;
6521
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_INTEGER_LITERAL)) {
6522
ValaExpression* _tmp26_;
6523
const gchar* _tmp27_;
6524
const gchar* _tmp28_;
6527
_tmp27_ = vala_integer_literal_get_value (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteral));
6529
_tmp29_ = g_strdup (_tmp28_);
6533
ValaExpression* _tmp30_;
6535
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp30_, VALA_TYPE_UNARY_EXPRESSION)) {
6536
ValaExpression* _tmp31_;
6537
ValaUnaryExpression* _tmp32_;
6538
ValaUnaryExpression* unary;
6539
ValaUnaryExpression* _tmp33_;
6540
ValaUnaryOperator _tmp34_;
6541
ValaUnaryOperator _tmp35_;
6543
_tmp32_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, VALA_TYPE_UNARY_EXPRESSION, ValaUnaryExpression));
6546
_tmp34_ = vala_unary_expression_get_operator (_tmp33_);
6548
if (_tmp35_ == VALA_UNARY_OPERATOR_MINUS) {
6549
ValaUnaryExpression* _tmp36_;
6550
ValaExpression* _tmp37_;
6551
ValaExpression* _tmp38_;
6553
_tmp37_ = vala_unary_expression_get_inner (_tmp36_);
6555
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp38_, VALA_TYPE_REAL_LITERAL)) {
6556
ValaUnaryExpression* _tmp39_;
6557
ValaExpression* _tmp40_;
6558
ValaExpression* _tmp41_;
6559
const gchar* _tmp42_;
6560
const gchar* _tmp43_;
6563
_tmp40_ = vala_unary_expression_get_inner (_tmp39_);
6565
_tmp42_ = vala_real_literal_get_value (G_TYPE_CHECK_INSTANCE_CAST (_tmp41_, VALA_TYPE_REAL_LITERAL, ValaRealLiteral));
6567
_tmp44_ = g_strconcat ("-", _tmp43_, NULL);
6569
_vala_code_node_unref0 (unary);
6572
ValaUnaryExpression* _tmp45_;
6573
ValaExpression* _tmp46_;
6574
ValaExpression* _tmp47_;
6576
_tmp46_ = vala_unary_expression_get_inner (_tmp45_);
6578
if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp47_, VALA_TYPE_INTEGER_LITERAL)) {
6579
ValaUnaryExpression* _tmp48_;
6580
ValaExpression* _tmp49_;
6581
ValaExpression* _tmp50_;
6582
const gchar* _tmp51_;
6583
const gchar* _tmp52_;
6586
_tmp49_ = vala_unary_expression_get_inner (_tmp48_);
6588
_tmp51_ = vala_integer_literal_get_value (G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteral));
6590
_tmp53_ = g_strconcat ("-", _tmp52_, NULL);
6592
_vala_code_node_unref0 (unary);
6597
_vala_code_node_unref0 (unary);
6609
static gchar* vala_gir_writer_camel_case_to_canonical (ValaGIRWriter* self, const gchar* name) {
6610
gchar* result = NULL;
6611
const gchar* _tmp0_;
6612
gchar* _tmp1_ = NULL;
6615
gchar** _tmp4_ = NULL;
6617
gint _tmp5__length1;
6621
gchar* _tmp6_ = NULL;
6622
g_return_val_if_fail (self != NULL, NULL);
6623
g_return_val_if_fail (name != NULL, NULL);
6625
_tmp1_ = vala_symbol_camel_case_to_lower_case (_tmp0_);
6627
_tmp4_ = _tmp3_ = g_strsplit (_tmp2_, "_", 0);
6629
_tmp5__length1 = _vala_array_length (_tmp3_);
6632
parts_length1 = _tmp5__length1;
6633
_parts_size_ = parts_length1;
6634
_tmp6_ = g_strjoinv ("-", parts);
6636
parts = (_vala_array_free (parts, parts_length1, (GDestroyNotify) g_free), NULL);
6641
static gboolean vala_gir_writer_check_accessibility (ValaGIRWriter* self, ValaSymbol* sym) {
6642
gboolean result = FALSE;
6643
gboolean _tmp0_ = FALSE;
6645
ValaSymbolAccessibility _tmp2_;
6646
ValaSymbolAccessibility _tmp3_;
6648
g_return_val_if_fail (self != NULL, FALSE);
6649
g_return_val_if_fail (sym != NULL, FALSE);
6651
_tmp2_ = vala_symbol_get_access (_tmp1_);
6653
if (_tmp3_ == VALA_SYMBOL_ACCESSIBILITY_PUBLIC) {
6657
ValaSymbolAccessibility _tmp5_;
6658
ValaSymbolAccessibility _tmp6_;
6660
_tmp5_ = vala_symbol_get_access (_tmp4_);
6662
_tmp0_ = _tmp6_ == VALA_SYMBOL_ACCESSIBILITY_PROTECTED;
6674
ValaGIRWriter* vala_gir_writer_construct (GType object_type) {
6675
ValaGIRWriter* self = NULL;
6676
self = (ValaGIRWriter*) vala_code_visitor_construct (object_type);
6681
ValaGIRWriter* vala_gir_writer_new (void) {
6682
return vala_gir_writer_construct (VALA_TYPE_GIR_WRITER);
6686
static void vala_gir_writer_gir_namespace_init (ValaGIRWriterGIRNamespace *self, const gchar* ns, const gchar* version) {
6687
const gchar* _tmp0_;
6689
const gchar* _tmp2_;
6691
g_return_if_fail (ns != NULL);
6692
g_return_if_fail (version != NULL);
6693
memset (self, 0, sizeof (ValaGIRWriterGIRNamespace));
6695
_tmp1_ = g_strdup (_tmp0_);
6696
_g_free0 ((*self).ns);
6697
(*self).ns = _tmp1_;
6699
_tmp3_ = g_strdup (_tmp2_);
6700
_g_free0 ((*self).version);
6701
(*self).version = _tmp3_;
6705
static gboolean vala_gir_writer_gir_namespace_equal (ValaGIRWriterGIRNamespace *self, ValaGIRWriterGIRNamespace* g) {
6706
gboolean result = FALSE;
6707
gboolean _tmp0_ = FALSE;
6708
const gchar* _tmp1_;
6709
ValaGIRWriterGIRNamespace _tmp2_;
6710
const gchar* _tmp3_;
6712
g_return_val_if_fail (g != NULL, FALSE);
6713
_tmp1_ = (*self).ns;
6716
if (g_strcmp0 (_tmp1_, _tmp3_) == 0) {
6717
const gchar* _tmp4_;
6718
ValaGIRWriterGIRNamespace _tmp5_;
6719
const gchar* _tmp6_;
6720
_tmp4_ = (*self).version;
6722
_tmp6_ = _tmp5_.version;
6723
_tmp0_ = g_strcmp0 (_tmp4_, _tmp6_) == 0;
6733
static void vala_gir_writer_gir_namespace_copy (const ValaGIRWriterGIRNamespace* self, ValaGIRWriterGIRNamespace* dest) {
6734
const gchar* _tmp0_;
6736
const gchar* _tmp2_;
6738
_tmp0_ = (*self).ns;
6739
_tmp1_ = g_strdup (_tmp0_);
6740
_g_free0 ((*dest).ns);
6741
(*dest).ns = _tmp1_;
6742
_tmp2_ = (*self).version;
6743
_tmp3_ = g_strdup (_tmp2_);
6744
_g_free0 ((*dest).version);
6745
(*dest).version = _tmp3_;
6749
static void vala_gir_writer_gir_namespace_destroy (ValaGIRWriterGIRNamespace* self) {
6750
_g_free0 ((*self).ns);
6751
_g_free0 ((*self).version);
6755
static ValaGIRWriterGIRNamespace* vala_gir_writer_gir_namespace_dup (const ValaGIRWriterGIRNamespace* self) {
6756
ValaGIRWriterGIRNamespace* dup;
6757
dup = g_new0 (ValaGIRWriterGIRNamespace, 1);
6758
vala_gir_writer_gir_namespace_copy (self, dup);
6763
static void vala_gir_writer_gir_namespace_free (ValaGIRWriterGIRNamespace* self) {
6764
vala_gir_writer_gir_namespace_destroy (self);
6769
static GType vala_gir_writer_gir_namespace_get_type (void) {
6770
static volatile gsize vala_gir_writer_gir_namespace_type_id__volatile = 0;
6771
if (g_once_init_enter (&vala_gir_writer_gir_namespace_type_id__volatile)) {
6772
GType vala_gir_writer_gir_namespace_type_id;
6773
vala_gir_writer_gir_namespace_type_id = g_boxed_type_register_static ("ValaGIRWriterGIRNamespace", (GBoxedCopyFunc) vala_gir_writer_gir_namespace_dup, (GBoxedFreeFunc) vala_gir_writer_gir_namespace_free);
6774
g_once_init_leave (&vala_gir_writer_gir_namespace_type_id__volatile, vala_gir_writer_gir_namespace_type_id);
6776
return vala_gir_writer_gir_namespace_type_id__volatile;
6780
static void vala_gir_writer_class_init (ValaGIRWriterClass * klass) {
6781
vala_gir_writer_parent_class = g_type_class_peek_parent (klass);
6782
VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_gir_writer_finalize;
6783
g_type_class_add_private (klass, sizeof (ValaGIRWriterPrivate));
6784
VALA_GIR_WRITER_CLASS (klass)->get_interface_comment = vala_gir_writer_real_get_interface_comment;
6785
VALA_GIR_WRITER_CLASS (klass)->get_struct_comment = vala_gir_writer_real_get_struct_comment;
6786
VALA_GIR_WRITER_CLASS (klass)->get_enum_comment = vala_gir_writer_real_get_enum_comment;
6787
VALA_GIR_WRITER_CLASS (klass)->get_class_comment = vala_gir_writer_real_get_class_comment;
6788
VALA_GIR_WRITER_CLASS (klass)->get_error_code_comment = vala_gir_writer_real_get_error_code_comment;
6789
VALA_GIR_WRITER_CLASS (klass)->get_enum_value_comment = vala_gir_writer_real_get_enum_value_comment;
6790
VALA_GIR_WRITER_CLASS (klass)->get_constant_comment = vala_gir_writer_real_get_constant_comment;
6791
VALA_GIR_WRITER_CLASS (klass)->get_error_domain_comment = vala_gir_writer_real_get_error_domain_comment;
6792
VALA_GIR_WRITER_CLASS (klass)->get_field_comment = vala_gir_writer_real_get_field_comment;
6793
VALA_GIR_WRITER_CLASS (klass)->get_delegate_comment = vala_gir_writer_real_get_delegate_comment;
6794
VALA_GIR_WRITER_CLASS (klass)->get_method_comment = vala_gir_writer_real_get_method_comment;
6795
VALA_GIR_WRITER_CLASS (klass)->get_property_comment = vala_gir_writer_real_get_property_comment;
6796
VALA_GIR_WRITER_CLASS (klass)->get_delegate_return_comment = vala_gir_writer_real_get_delegate_return_comment;
6797
VALA_GIR_WRITER_CLASS (klass)->get_signal_return_comment = vala_gir_writer_real_get_signal_return_comment;
6798
VALA_GIR_WRITER_CLASS (klass)->get_method_return_comment = vala_gir_writer_real_get_method_return_comment;
6799
VALA_GIR_WRITER_CLASS (klass)->get_signal_comment = vala_gir_writer_real_get_signal_comment;
6800
VALA_GIR_WRITER_CLASS (klass)->get_parameter_comment = vala_gir_writer_real_get_parameter_comment;
6801
VALA_CODE_VISITOR_CLASS (klass)->visit_namespace = vala_gir_writer_real_visit_namespace;
6802
VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_gir_writer_real_visit_class;
6803
VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_gir_writer_real_visit_struct;
6804
VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_gir_writer_real_visit_interface;
6805
VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_gir_writer_real_visit_enum;
6806
VALA_CODE_VISITOR_CLASS (klass)->visit_enum_value = vala_gir_writer_real_visit_enum_value;
6807
VALA_CODE_VISITOR_CLASS (klass)->visit_error_domain = vala_gir_writer_real_visit_error_domain;
6808
VALA_CODE_VISITOR_CLASS (klass)->visit_error_code = vala_gir_writer_real_visit_error_code;
6809
VALA_CODE_VISITOR_CLASS (klass)->visit_constant = vala_gir_writer_real_visit_constant;
6810
VALA_CODE_VISITOR_CLASS (klass)->visit_field = vala_gir_writer_real_visit_field;
6811
VALA_CODE_VISITOR_CLASS (klass)->visit_delegate = vala_gir_writer_real_visit_delegate;
6812
VALA_CODE_VISITOR_CLASS (klass)->visit_method = vala_gir_writer_real_visit_method;
6813
VALA_CODE_VISITOR_CLASS (klass)->visit_creation_method = vala_gir_writer_real_visit_creation_method;
6814
VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_gir_writer_real_visit_property;
6815
VALA_CODE_VISITOR_CLASS (klass)->visit_signal = vala_gir_writer_real_visit_signal;
6819
static void vala_gir_writer_instance_init (ValaGIRWriter * self) {
6823
ValaHashSet* _tmp3_;
6826
ValaHashSet* _tmp6_;
6828
ValaArrayList* _tmp8_;
6830
ValaArrayList* _tmp10_;
6831
ValaArrayList* _tmp11_;
6832
self->priv = VALA_GIR_WRITER_GET_PRIVATE (self);
6833
_tmp0_ = g_string_new ("");
6834
self->priv->buffer = _tmp0_;
6835
_tmp1_ = g_direct_hash;
6836
_tmp2_ = g_direct_equal;
6837
_tmp3_ = vala_hash_set_new (VALA_TYPE_NAMESPACE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp1_, _tmp2_);
6838
self->priv->unannotated_namespaces = _tmp3_;
6839
_tmp4_ = g_direct_hash;
6840
_tmp5_ = g_direct_equal;
6841
_tmp6_ = vala_hash_set_new (VALA_TYPE_NAMESPACE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp4_, _tmp5_);
6842
self->priv->our_namespaces = _tmp6_;
6843
_tmp7_ = g_direct_equal;
6844
_tmp8_ = vala_array_list_new (VALA_TYPE_SYMBOL, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp7_);
6845
self->priv->hierarchy = _tmp8_;
6846
_tmp9_ = g_direct_equal;
6847
_tmp10_ = vala_array_list_new (VALA_TYPE_CODE_NODE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp9_);
6848
self->priv->deferred = _tmp10_;
6849
_tmp11_ = vala_array_list_new (VALA_GIR_WRITER_TYPE_GIR_NAMESPACE, (GBoxedCopyFunc) vala_gir_writer_gir_namespace_dup, vala_gir_writer_gir_namespace_free, (GEqualFunc) vala_gir_writer_gir_namespace_equal);
6850
self->priv->externals = _tmp11_;
6854
static void vala_gir_writer_finalize (ValaCodeVisitor* obj) {
6855
ValaGIRWriter * self;
6856
self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_GIR_WRITER, ValaGIRWriter);
6857
_vala_code_context_unref0 (self->priv->context);
6858
_g_free0 (self->priv->directory);
6859
_g_free0 (self->priv->gir_namespace);
6860
_g_free0 (self->priv->gir_version);
6861
_g_string_free0 (self->priv->buffer);
6862
_fclose0 (self->priv->stream);
6863
_vala_iterable_unref0 (self->priv->unannotated_namespaces);
6864
_vala_iterable_unref0 (self->priv->our_namespaces);
6865
_vala_iterable_unref0 (self->priv->hierarchy);
6866
_vala_iterable_unref0 (self->priv->deferred);
6867
_vala_code_node_unref0 (self->priv->gobject_type);
6868
_vala_code_node_unref0 (self->priv->ginitiallyunowned_type);
6869
_vala_iterable_unref0 (self->priv->externals);
6870
VALA_CODE_VISITOR_CLASS (vala_gir_writer_parent_class)->finalize (obj);
6875
* Code visitor generating .gir file for the public interface.
6877
GType vala_gir_writer_get_type (void) {
6878
static volatile gsize vala_gir_writer_type_id__volatile = 0;
6879
if (g_once_init_enter (&vala_gir_writer_type_id__volatile)) {
6880
static const GTypeInfo g_define_type_info = { sizeof (ValaGIRWriterClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gir_writer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGIRWriter), 0, (GInstanceInitFunc) vala_gir_writer_instance_init, NULL };
6881
GType vala_gir_writer_type_id;
6882
vala_gir_writer_type_id = g_type_register_static (VALA_TYPE_CODE_VISITOR, "ValaGIRWriter", &g_define_type_info, 0);
6883
g_once_init_leave (&vala_gir_writer_type_id__volatile, vala_gir_writer_type_id);
6885
return vala_gir_writer_type_id__volatile;
6889
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
6890
if ((array != NULL) && (destroy_func != NULL)) {
6892
for (i = 0; i < array_length; i = i + 1) {
6893
if (((gpointer*) array)[i] != NULL) {
6894
destroy_func (((gpointer*) array)[i]);
6901
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
6902
_vala_array_destroy (array, array_length, destroy_func);
6907
static gint _vala_array_length (gpointer array) {
6911
while (((gpointer*) array)[length]) {