1 /* valaobjecttype.c generated by valac, the Vala compiler
2 * generated from valaobjecttype.vala, do not modify */
3
4 /* valaobjecttype.vala
5 *
6 * Copyright (C) 2007-2010 Jürg Billeter
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 *
22 * Author:
23 * Jürg Billeter <j@bitron.ch>
24 */
25
26 #include "vala.h"
27 #include <glib.h>
28 #include <valagee.h>
29 #include <glib-object.h>
30
31 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
32 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
33
34 static gpointer vala_object_type_parent_class = NULL;
35
36 static ValaDataType* vala_object_type_real_copy (ValaDataType* base);
37 static gboolean vala_object_type_real_stricter (ValaDataType* base,
38 ValaDataType* target_type);
39 static gboolean vala_object_type_real_is_invokable (ValaDataType* base);
40 static ValaDataType* vala_object_type_real_get_return_type (ValaDataType* base);
41 static ValaList* vala_object_type_real_get_parameters (ValaDataType* base);
42 static gboolean vala_object_type_real_check (ValaCodeNode* base,
43 ValaCodeContext* context);
44 static GType vala_object_type_get_type_once (void);
45
46 ValaObjectTypeSymbol*
vala_object_type_get_object_type_symbol(ValaObjectType * self)47 vala_object_type_get_object_type_symbol (ValaObjectType* self)
48 {
49 ValaObjectTypeSymbol* result;
50 ValaSymbol* _tmp0_;
51 ValaSymbol* _tmp1_;
52 g_return_val_if_fail (self != NULL, NULL);
53 _tmp0_ = vala_data_type_get_symbol ((ValaDataType*) self);
54 _tmp1_ = _tmp0_;
55 result = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol);
56 return result;
57 }
58
59 ValaObjectType*
vala_object_type_construct(GType object_type,ValaObjectTypeSymbol * type_symbol)60 vala_object_type_construct (GType object_type,
61 ValaObjectTypeSymbol* type_symbol)
62 {
63 ValaObjectType* self = NULL;
64 g_return_val_if_fail (type_symbol != NULL, NULL);
65 self = (ValaObjectType*) vala_reference_type_construct (object_type, (ValaSymbol*) type_symbol);
66 return self;
67 }
68
69 ValaObjectType*
vala_object_type_new(ValaObjectTypeSymbol * type_symbol)70 vala_object_type_new (ValaObjectTypeSymbol* type_symbol)
71 {
72 return vala_object_type_construct (VALA_TYPE_OBJECT_TYPE, type_symbol);
73 }
74
75 static gpointer
_vala_iterable_ref0(gpointer self)76 _vala_iterable_ref0 (gpointer self)
77 {
78 return self ? vala_iterable_ref (self) : NULL;
79 }
80
81 static ValaDataType*
vala_object_type_real_copy(ValaDataType * base)82 vala_object_type_real_copy (ValaDataType* base)
83 {
84 ValaObjectType * self;
85 ValaObjectType* _result_ = NULL;
86 ValaObjectTypeSymbol* _tmp0_;
87 ValaObjectTypeSymbol* _tmp1_;
88 ValaObjectType* _tmp2_;
89 ValaObjectType* _tmp3_;
90 ValaSourceReference* _tmp4_;
91 ValaSourceReference* _tmp5_;
92 ValaObjectType* _tmp6_;
93 gboolean _tmp7_;
94 gboolean _tmp8_;
95 ValaObjectType* _tmp9_;
96 gboolean _tmp10_;
97 gboolean _tmp11_;
98 ValaObjectType* _tmp12_;
99 gboolean _tmp13_;
100 gboolean _tmp14_;
101 ValaObjectType* _tmp15_;
102 gboolean _tmp16_;
103 gboolean _tmp17_;
104 ValaDataType* result = NULL;
105 self = (ValaObjectType*) base;
106 _tmp0_ = vala_object_type_get_object_type_symbol (self);
107 _tmp1_ = _tmp0_;
108 _tmp2_ = vala_object_type_new (_tmp1_);
109 _result_ = _tmp2_;
110 _tmp3_ = _result_;
111 _tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
112 _tmp5_ = _tmp4_;
113 vala_code_node_set_source_reference ((ValaCodeNode*) _tmp3_, _tmp5_);
114 _tmp6_ = _result_;
115 _tmp7_ = vala_data_type_get_value_owned ((ValaDataType*) self);
116 _tmp8_ = _tmp7_;
117 vala_data_type_set_value_owned ((ValaDataType*) _tmp6_, _tmp8_);
118 _tmp9_ = _result_;
119 _tmp10_ = vala_data_type_get_nullable ((ValaDataType*) self);
120 _tmp11_ = _tmp10_;
121 vala_data_type_set_nullable ((ValaDataType*) _tmp9_, _tmp11_);
122 _tmp12_ = _result_;
123 _tmp13_ = vala_data_type_get_is_dynamic ((ValaDataType*) self);
124 _tmp14_ = _tmp13_;
125 vala_data_type_set_is_dynamic ((ValaDataType*) _tmp12_, _tmp14_);
126 _tmp15_ = _result_;
127 _tmp16_ = vala_data_type_get_floating_reference ((ValaDataType*) self);
128 _tmp17_ = _tmp16_;
129 vala_data_type_set_floating_reference ((ValaDataType*) _tmp15_, _tmp17_);
130 {
131 ValaList* _arg_list = NULL;
132 ValaList* _tmp18_;
133 ValaList* _tmp19_;
134 gint _arg_size = 0;
135 ValaList* _tmp20_;
136 gint _tmp21_;
137 gint _tmp22_;
138 gint _arg_index = 0;
139 _tmp18_ = vala_data_type_get_type_arguments ((ValaDataType*) self);
140 _tmp19_ = _vala_iterable_ref0 (_tmp18_);
141 _arg_list = _tmp19_;
142 _tmp20_ = _arg_list;
143 _tmp21_ = vala_collection_get_size ((ValaCollection*) _tmp20_);
144 _tmp22_ = _tmp21_;
145 _arg_size = _tmp22_;
146 _arg_index = -1;
147 while (TRUE) {
148 gint _tmp23_;
149 gint _tmp24_;
150 ValaDataType* arg = NULL;
151 ValaList* _tmp25_;
152 gpointer _tmp26_;
153 ValaObjectType* _tmp27_;
154 ValaDataType* _tmp28_;
155 ValaDataType* _tmp29_;
156 ValaDataType* _tmp30_;
157 _arg_index = _arg_index + 1;
158 _tmp23_ = _arg_index;
159 _tmp24_ = _arg_size;
160 if (!(_tmp23_ < _tmp24_)) {
161 break;
162 }
163 _tmp25_ = _arg_list;
164 _tmp26_ = vala_list_get (_tmp25_, _arg_index);
165 arg = (ValaDataType*) _tmp26_;
166 _tmp27_ = _result_;
167 _tmp28_ = arg;
168 _tmp29_ = vala_data_type_copy (_tmp28_);
169 _tmp30_ = _tmp29_;
170 vala_data_type_add_type_argument ((ValaDataType*) _tmp27_, _tmp30_);
171 _vala_code_node_unref0 (_tmp30_);
172 _vala_code_node_unref0 (arg);
173 }
174 _vala_iterable_unref0 (_arg_list);
175 }
176 result = (ValaDataType*) _result_;
177 return result;
178 }
179
180 static gboolean
vala_object_type_real_stricter(ValaDataType * base,ValaDataType * target_type)181 vala_object_type_real_stricter (ValaDataType* base,
182 ValaDataType* target_type)
183 {
184 ValaObjectType * self;
185 ValaObjectType* obj_target_type = NULL;
186 ValaObjectType* _tmp0_;
187 gboolean _tmp1_;
188 gboolean _tmp2_;
189 gboolean _tmp3_;
190 gboolean _tmp4_;
191 gboolean _tmp5_ = FALSE;
192 gboolean _tmp6_;
193 gboolean _tmp7_;
194 ValaTypeSymbol* _tmp10_;
195 ValaTypeSymbol* _tmp11_;
196 ValaObjectType* _tmp12_;
197 ValaTypeSymbol* _tmp13_;
198 ValaTypeSymbol* _tmp14_;
199 gboolean result = FALSE;
200 self = (ValaObjectType*) base;
201 g_return_val_if_fail (target_type != NULL, FALSE);
202 obj_target_type = VALA_IS_OBJECT_TYPE (target_type) ? ((ValaObjectType*) target_type) : NULL;
203 _tmp0_ = obj_target_type;
204 if (_tmp0_ == NULL) {
205 result = FALSE;
206 return result;
207 }
208 _tmp1_ = vala_data_type_get_value_owned ((ValaDataType*) self);
209 _tmp2_ = _tmp1_;
210 _tmp3_ = vala_data_type_get_value_owned (target_type);
211 _tmp4_ = _tmp3_;
212 if (_tmp2_ != _tmp4_) {
213 result = FALSE;
214 return result;
215 }
216 _tmp6_ = vala_data_type_get_nullable ((ValaDataType*) self);
217 _tmp7_ = _tmp6_;
218 if (_tmp7_) {
219 gboolean _tmp8_;
220 gboolean _tmp9_;
221 _tmp8_ = vala_data_type_get_nullable (target_type);
222 _tmp9_ = _tmp8_;
223 _tmp5_ = !_tmp9_;
224 } else {
225 _tmp5_ = FALSE;
226 }
227 if (_tmp5_) {
228 result = FALSE;
229 return result;
230 }
231 _tmp10_ = vala_data_type_get_type_symbol ((ValaDataType*) self);
232 _tmp11_ = _tmp10_;
233 _tmp12_ = obj_target_type;
234 _tmp13_ = vala_data_type_get_type_symbol ((ValaDataType*) _tmp12_);
235 _tmp14_ = _tmp13_;
236 result = vala_typesymbol_is_subtype_of (_tmp11_, _tmp14_);
237 return result;
238 }
239
240 static gboolean
vala_object_type_real_is_invokable(ValaDataType * base)241 vala_object_type_real_is_invokable (ValaDataType* base)
242 {
243 ValaObjectType * self;
244 ValaClass* cl = NULL;
245 ValaTypeSymbol* _tmp0_;
246 ValaTypeSymbol* _tmp1_;
247 gboolean _tmp2_ = FALSE;
248 ValaClass* _tmp3_;
249 gboolean result = FALSE;
250 self = (ValaObjectType*) base;
251 _tmp0_ = vala_data_type_get_type_symbol ((ValaDataType*) self);
252 _tmp1_ = _tmp0_;
253 cl = VALA_IS_CLASS (_tmp1_) ? ((ValaClass*) _tmp1_) : NULL;
254 _tmp3_ = cl;
255 if (_tmp3_ != NULL) {
256 ValaClass* _tmp4_;
257 ValaCreationMethod* _tmp5_;
258 ValaCreationMethod* _tmp6_;
259 _tmp4_ = cl;
260 _tmp5_ = vala_class_get_default_construction_method (_tmp4_);
261 _tmp6_ = _tmp5_;
262 _tmp2_ = _tmp6_ != NULL;
263 } else {
264 _tmp2_ = FALSE;
265 }
266 if (_tmp2_) {
267 result = TRUE;
268 return result;
269 } else {
270 result = FALSE;
271 return result;
272 }
273 }
274
275 static ValaDataType*
vala_object_type_real_get_return_type(ValaDataType * base)276 vala_object_type_real_get_return_type (ValaDataType* base)
277 {
278 ValaObjectType * self;
279 ValaClass* cl = NULL;
280 ValaTypeSymbol* _tmp0_;
281 ValaTypeSymbol* _tmp1_;
282 gboolean _tmp2_ = FALSE;
283 ValaClass* _tmp3_;
284 ValaDataType* result = NULL;
285 self = (ValaObjectType*) base;
286 _tmp0_ = vala_data_type_get_type_symbol ((ValaDataType*) self);
287 _tmp1_ = _tmp0_;
288 cl = VALA_IS_CLASS (_tmp1_) ? ((ValaClass*) _tmp1_) : NULL;
289 _tmp3_ = cl;
290 if (_tmp3_ != NULL) {
291 ValaClass* _tmp4_;
292 ValaCreationMethod* _tmp5_;
293 ValaCreationMethod* _tmp6_;
294 _tmp4_ = cl;
295 _tmp5_ = vala_class_get_default_construction_method (_tmp4_);
296 _tmp6_ = _tmp5_;
297 _tmp2_ = _tmp6_ != NULL;
298 } else {
299 _tmp2_ = FALSE;
300 }
301 if (_tmp2_) {
302 ValaClass* _tmp7_;
303 ValaCreationMethod* _tmp8_;
304 ValaCreationMethod* _tmp9_;
305 ValaDataType* _tmp10_;
306 ValaDataType* _tmp11_;
307 _tmp7_ = cl;
308 _tmp8_ = vala_class_get_default_construction_method (_tmp7_);
309 _tmp9_ = _tmp8_;
310 _tmp10_ = vala_callable_get_return_type ((ValaCallable*) _tmp9_);
311 _tmp11_ = _tmp10_;
312 result = _tmp11_;
313 return result;
314 } else {
315 result = NULL;
316 return result;
317 }
318 }
319
320 static ValaList*
vala_object_type_real_get_parameters(ValaDataType * base)321 vala_object_type_real_get_parameters (ValaDataType* base)
322 {
323 ValaObjectType * self;
324 ValaClass* cl = NULL;
325 ValaTypeSymbol* _tmp0_;
326 ValaTypeSymbol* _tmp1_;
327 gboolean _tmp2_ = FALSE;
328 ValaClass* _tmp3_;
329 ValaList* result = NULL;
330 self = (ValaObjectType*) base;
331 _tmp0_ = vala_data_type_get_type_symbol ((ValaDataType*) self);
332 _tmp1_ = _tmp0_;
333 cl = VALA_IS_CLASS (_tmp1_) ? ((ValaClass*) _tmp1_) : NULL;
334 _tmp3_ = cl;
335 if (_tmp3_ != NULL) {
336 ValaClass* _tmp4_;
337 ValaCreationMethod* _tmp5_;
338 ValaCreationMethod* _tmp6_;
339 _tmp4_ = cl;
340 _tmp5_ = vala_class_get_default_construction_method (_tmp4_);
341 _tmp6_ = _tmp5_;
342 _tmp2_ = _tmp6_ != NULL;
343 } else {
344 _tmp2_ = FALSE;
345 }
346 if (_tmp2_) {
347 ValaClass* _tmp7_;
348 ValaCreationMethod* _tmp8_;
349 ValaCreationMethod* _tmp9_;
350 ValaList* _tmp10_;
351 _tmp7_ = cl;
352 _tmp8_ = vala_class_get_default_construction_method (_tmp7_);
353 _tmp9_ = _tmp8_;
354 _tmp10_ = vala_callable_get_parameters ((ValaCallable*) _tmp9_);
355 result = _tmp10_;
356 return result;
357 } else {
358 result = NULL;
359 return result;
360 }
361 }
362
363 static gboolean
vala_object_type_real_check(ValaCodeNode * base,ValaCodeContext * context)364 vala_object_type_real_check (ValaCodeNode* base,
365 ValaCodeContext* context)
366 {
367 ValaObjectType * self;
368 ValaTypeSymbol* _tmp0_;
369 ValaTypeSymbol* _tmp1_;
370 gboolean result = FALSE;
371 self = (ValaObjectType*) base;
372 g_return_val_if_fail (context != NULL, FALSE);
373 _tmp0_ = vala_data_type_get_type_symbol ((ValaDataType*) self);
374 _tmp1_ = _tmp0_;
375 if (!vala_code_node_check ((ValaCodeNode*) _tmp1_, context)) {
376 result = FALSE;
377 return result;
378 }
379 if (!vala_data_type_check_type_arguments ((ValaDataType*) self, context, TRUE)) {
380 result = FALSE;
381 return result;
382 }
383 result = TRUE;
384 return result;
385 }
386
387 static void
vala_object_type_class_init(ValaObjectTypeClass * klass,gpointer klass_data)388 vala_object_type_class_init (ValaObjectTypeClass * klass,
389 gpointer klass_data)
390 {
391 vala_object_type_parent_class = g_type_class_peek_parent (klass);
392 ((ValaDataTypeClass *) klass)->copy = (ValaDataType* (*) (ValaDataType*)) vala_object_type_real_copy;
393 ((ValaDataTypeClass *) klass)->stricter = (gboolean (*) (ValaDataType*, ValaDataType*)) vala_object_type_real_stricter;
394 ((ValaDataTypeClass *) klass)->is_invokable = (gboolean (*) (ValaDataType*)) vala_object_type_real_is_invokable;
395 ((ValaDataTypeClass *) klass)->get_return_type = (ValaDataType* (*) (ValaDataType*)) vala_object_type_real_get_return_type;
396 ((ValaDataTypeClass *) klass)->get_parameters = (ValaList* (*) (ValaDataType*)) vala_object_type_real_get_parameters;
397 ((ValaCodeNodeClass *) klass)->check = (gboolean (*) (ValaCodeNode*, ValaCodeContext*)) vala_object_type_real_check;
398 }
399
400 static void
vala_object_type_instance_init(ValaObjectType * self,gpointer klass)401 vala_object_type_instance_init (ValaObjectType * self,
402 gpointer klass)
403 {
404 }
405
406 /**
407 * A class type.
408 */
409 static GType
vala_object_type_get_type_once(void)410 vala_object_type_get_type_once (void)
411 {
412 static const GTypeInfo g_define_type_info = { sizeof (ValaObjectTypeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_object_type_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaObjectType), 0, (GInstanceInitFunc) vala_object_type_instance_init, NULL };
413 GType vala_object_type_type_id;
414 vala_object_type_type_id = g_type_register_static (VALA_TYPE_REFERENCE_TYPE, "ValaObjectType", &g_define_type_info, 0);
415 return vala_object_type_type_id;
416 }
417
418 GType
vala_object_type_get_type(void)419 vala_object_type_get_type (void)
420 {
421 static volatile gsize vala_object_type_type_id__volatile = 0;
422 if (g_once_init_enter (&vala_object_type_type_id__volatile)) {
423 GType vala_object_type_type_id;
424 vala_object_type_type_id = vala_object_type_get_type_once ();
425 g_once_init_leave (&vala_object_type_type_id__volatile, vala_object_type_type_id);
426 }
427 return vala_object_type_type_id__volatile;
428 }
429
430