1 /* valaerrortype.c generated by valac, the Vala compiler
2  * generated from valaerrortype.vala, do not modify */
3 
4 /* valaerrortype.vala
5  *
6  * Copyright (C) 2008-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  *	Raffaele Sandrini <raffaele@sandrini.ch>
25  */
26 
27 #include "vala.h"
28 #include <glib.h>
29 #include <stdlib.h>
30 #include <string.h>
31 
32 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
33 #define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))
34 #define _g_free0(var) (var = (g_free (var), NULL))
35 
36 struct _ValaErrorTypePrivate {
37 	ValaErrorCode* _error_code;
38 	gboolean _dynamic_error;
39 };
40 
41 static gint ValaErrorType_private_offset;
42 static gpointer vala_error_type_parent_class = NULL;
43 
44 static gboolean vala_error_type_real_compatible (ValaDataType* base,
45                                           ValaDataType* target_type);
46 static gchar* vala_error_type_real_to_qualified_string (ValaDataType* base,
47                                                  ValaScope* scope);
48 static ValaDataType* vala_error_type_real_copy (ValaDataType* base);
49 static gboolean vala_error_type_real_equals (ValaDataType* base,
50                                       ValaDataType* type2);
51 static ValaSymbol* vala_error_type_real_get_member (ValaDataType* base,
52                                              const gchar* member_name);
53 static gboolean vala_error_type_real_is_reference_type_or_type_parameter (ValaDataType* base);
54 static gboolean vala_error_type_real_check (ValaCodeNode* base,
55                                      ValaCodeContext* context);
56 static void vala_error_type_finalize (ValaCodeNode * obj);
57 static GType vala_error_type_get_type_once (void);
58 
59 static inline gpointer
vala_error_type_get_instance_private(ValaErrorType * self)60 vala_error_type_get_instance_private (ValaErrorType* self)
61 {
62 	return G_STRUCT_MEMBER_P (self, ValaErrorType_private_offset);
63 }
64 
65 ValaErrorDomain*
vala_error_type_get_error_domain(ValaErrorType * self)66 vala_error_type_get_error_domain (ValaErrorType* self)
67 {
68 	ValaErrorDomain* result;
69 	ValaSymbol* _tmp0_;
70 	ValaSymbol* _tmp1_;
71 	g_return_val_if_fail (self != NULL, NULL);
72 	_tmp0_ = vala_data_type_get_symbol ((ValaDataType*) self);
73 	_tmp1_ = _tmp0_;
74 	result = VALA_IS_ERROR_DOMAIN (_tmp1_) ? ((ValaErrorDomain*) _tmp1_) : NULL;
75 	return result;
76 }
77 
78 ValaErrorCode*
vala_error_type_get_error_code(ValaErrorType * self)79 vala_error_type_get_error_code (ValaErrorType* self)
80 {
81 	ValaErrorCode* result;
82 	ValaErrorCode* _tmp0_;
83 	g_return_val_if_fail (self != NULL, NULL);
84 	_tmp0_ = self->priv->_error_code;
85 	result = _tmp0_;
86 	return result;
87 }
88 
89 void
vala_error_type_set_error_code(ValaErrorType * self,ValaErrorCode * value)90 vala_error_type_set_error_code (ValaErrorType* self,
91                                 ValaErrorCode* value)
92 {
93 	g_return_if_fail (self != NULL);
94 	self->priv->_error_code = value;
95 }
96 
97 gboolean
vala_error_type_get_dynamic_error(ValaErrorType * self)98 vala_error_type_get_dynamic_error (ValaErrorType* self)
99 {
100 	gboolean result;
101 	g_return_val_if_fail (self != NULL, FALSE);
102 	result = self->priv->_dynamic_error;
103 	return result;
104 }
105 
106 void
vala_error_type_set_dynamic_error(ValaErrorType * self,gboolean value)107 vala_error_type_set_dynamic_error (ValaErrorType* self,
108                                    gboolean value)
109 {
110 	g_return_if_fail (self != NULL);
111 	self->priv->_dynamic_error = value;
112 }
113 
114 static gpointer
_vala_code_node_ref0(gpointer self)115 _vala_code_node_ref0 (gpointer self)
116 {
117 	return self ? vala_code_node_ref (self) : NULL;
118 }
119 
120 ValaErrorType*
vala_error_type_construct(GType object_type,ValaErrorDomain * error_domain,ValaErrorCode * error_code,ValaSourceReference * source_reference)121 vala_error_type_construct (GType object_type,
122                            ValaErrorDomain* error_domain,
123                            ValaErrorCode* error_code,
124                            ValaSourceReference* source_reference)
125 {
126 	ValaErrorType* self = NULL;
127 	ValaSymbol* _tmp0_ = NULL;
128 	ValaSymbol* _tmp1_;
129 	_tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (error_domain, VALA_TYPE_SYMBOL, ValaSymbol));
130 	_tmp0_ = _tmp1_;
131 	if (_tmp0_ == NULL) {
132 		ValaCodeContext* _tmp2_;
133 		ValaCodeContext* _tmp3_;
134 		ValaNamespace* _tmp4_;
135 		ValaNamespace* _tmp5_;
136 		ValaScope* _tmp6_;
137 		ValaScope* _tmp7_;
138 		ValaSymbol* _tmp8_;
139 		ValaSymbol* _tmp9_;
140 		ValaScope* _tmp10_;
141 		ValaScope* _tmp11_;
142 		ValaSymbol* _tmp12_;
143 		_tmp2_ = vala_code_context_get ();
144 		_tmp3_ = _tmp2_;
145 		_tmp4_ = vala_code_context_get_root (_tmp3_);
146 		_tmp5_ = _tmp4_;
147 		_tmp6_ = vala_symbol_get_scope ((ValaSymbol*) _tmp5_);
148 		_tmp7_ = _tmp6_;
149 		_tmp8_ = vala_scope_lookup (_tmp7_, "GLib");
150 		_tmp9_ = _tmp8_;
151 		_tmp10_ = vala_symbol_get_scope (_tmp9_);
152 		_tmp11_ = _tmp10_;
153 		_tmp12_ = vala_scope_lookup (_tmp11_, "Error");
154 		_vala_code_node_unref0 (_tmp0_);
155 		_tmp0_ = _tmp12_;
156 		_vala_code_node_unref0 (_tmp9_);
157 		_vala_code_context_unref0 (_tmp3_);
158 	}
159 	self = (ValaErrorType*) vala_reference_type_construct (object_type, _tmp0_);
160 	vala_error_type_set_error_code (self, error_code);
161 	vala_code_node_set_source_reference ((ValaCodeNode*) self, source_reference);
162 	_vala_code_node_unref0 (_tmp0_);
163 	return self;
164 }
165 
166 ValaErrorType*
vala_error_type_new(ValaErrorDomain * error_domain,ValaErrorCode * error_code,ValaSourceReference * source_reference)167 vala_error_type_new (ValaErrorDomain* error_domain,
168                      ValaErrorCode* error_code,
169                      ValaSourceReference* source_reference)
170 {
171 	return vala_error_type_construct (VALA_TYPE_ERROR_TYPE, error_domain, error_code, source_reference);
172 }
173 
174 static gboolean
vala_error_type_real_compatible(ValaDataType * base,ValaDataType * target_type)175 vala_error_type_real_compatible (ValaDataType* base,
176                                  ValaDataType* target_type)
177 {
178 	ValaErrorType * self;
179 	ValaErrorType* et = NULL;
180 	ValaErrorType* _tmp0_;
181 	ValaErrorType* _tmp1_;
182 	ValaErrorDomain* _tmp2_;
183 	ValaErrorDomain* _tmp3_;
184 	ValaErrorType* _tmp4_;
185 	ValaErrorDomain* _tmp5_;
186 	ValaErrorDomain* _tmp6_;
187 	ValaErrorDomain* _tmp7_;
188 	ValaErrorDomain* _tmp8_;
189 	ValaErrorType* _tmp9_;
190 	ValaErrorCode* _tmp10_;
191 	ValaErrorType* _tmp11_;
192 	ValaErrorCode* _tmp12_;
193 	ValaErrorCode* _tmp13_;
194 	gboolean result = FALSE;
195 	self = (ValaErrorType*) base;
196 	g_return_val_if_fail (target_type != NULL, FALSE);
197 	if (VALA_IS_GENERIC_TYPE (target_type)) {
198 		result = TRUE;
199 		return result;
200 	}
201 	et = VALA_IS_ERROR_TYPE (target_type) ? ((ValaErrorType*) target_type) : NULL;
202 	_tmp0_ = et;
203 	if (_tmp0_ == NULL) {
204 		result = FALSE;
205 		return result;
206 	}
207 	_tmp1_ = et;
208 	_tmp2_ = vala_error_type_get_error_domain (_tmp1_);
209 	_tmp3_ = _tmp2_;
210 	if (_tmp3_ == NULL) {
211 		result = TRUE;
212 		return result;
213 	}
214 	_tmp4_ = et;
215 	_tmp5_ = vala_error_type_get_error_domain (_tmp4_);
216 	_tmp6_ = _tmp5_;
217 	_tmp7_ = vala_error_type_get_error_domain (self);
218 	_tmp8_ = _tmp7_;
219 	if (_tmp6_ != _tmp8_) {
220 		result = FALSE;
221 		return result;
222 	}
223 	_tmp9_ = et;
224 	_tmp10_ = _tmp9_->priv->_error_code;
225 	if (_tmp10_ == NULL) {
226 		result = TRUE;
227 		return result;
228 	}
229 	_tmp11_ = et;
230 	_tmp12_ = _tmp11_->priv->_error_code;
231 	_tmp13_ = self->priv->_error_code;
232 	result = _tmp12_ == _tmp13_;
233 	return result;
234 }
235 
236 static gchar*
vala_error_type_real_to_qualified_string(ValaDataType * base,ValaScope * scope)237 vala_error_type_real_to_qualified_string (ValaDataType* base,
238                                           ValaScope* scope)
239 {
240 	ValaErrorType * self;
241 	gchar* _result_ = NULL;
242 	ValaErrorDomain* _tmp0_;
243 	ValaErrorDomain* _tmp1_;
244 	gboolean _tmp6_;
245 	gboolean _tmp7_;
246 	gchar* result = NULL;
247 	self = (ValaErrorType*) base;
248 	_tmp0_ = vala_error_type_get_error_domain (self);
249 	_tmp1_ = _tmp0_;
250 	if (_tmp1_ == NULL) {
251 		gchar* _tmp2_;
252 		_tmp2_ = g_strdup ("GLib.Error");
253 		_g_free0 (_result_);
254 		_result_ = _tmp2_;
255 	} else {
256 		ValaErrorDomain* _tmp3_;
257 		ValaErrorDomain* _tmp4_;
258 		gchar* _tmp5_;
259 		_tmp3_ = vala_error_type_get_error_domain (self);
260 		_tmp4_ = _tmp3_;
261 		_tmp5_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp4_);
262 		_g_free0 (_result_);
263 		_result_ = _tmp5_;
264 	}
265 	_tmp6_ = vala_data_type_get_nullable ((ValaDataType*) self);
266 	_tmp7_ = _tmp6_;
267 	if (_tmp7_) {
268 		const gchar* _tmp8_;
269 		gchar* _tmp9_;
270 		_tmp8_ = _result_;
271 		_tmp9_ = g_strconcat (_tmp8_, "?", NULL);
272 		_g_free0 (_result_);
273 		_result_ = _tmp9_;
274 	}
275 	result = _result_;
276 	return result;
277 }
278 
279 static ValaDataType*
vala_error_type_real_copy(ValaDataType * base)280 vala_error_type_real_copy (ValaDataType* base)
281 {
282 	ValaErrorType * self;
283 	ValaErrorType* _result_ = NULL;
284 	ValaErrorDomain* _tmp0_;
285 	ValaErrorDomain* _tmp1_;
286 	ValaErrorCode* _tmp2_;
287 	ValaSourceReference* _tmp3_;
288 	ValaSourceReference* _tmp4_;
289 	ValaErrorType* _tmp5_;
290 	gboolean _tmp6_;
291 	gboolean _tmp7_;
292 	gboolean _tmp8_;
293 	gboolean _tmp9_;
294 	gboolean _tmp10_;
295 	ValaDataType* result = NULL;
296 	self = (ValaErrorType*) base;
297 	_tmp0_ = vala_error_type_get_error_domain (self);
298 	_tmp1_ = _tmp0_;
299 	_tmp2_ = self->priv->_error_code;
300 	_tmp3_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
301 	_tmp4_ = _tmp3_;
302 	_tmp5_ = vala_error_type_new (_tmp1_, _tmp2_, _tmp4_);
303 	_result_ = _tmp5_;
304 	_tmp6_ = vala_data_type_get_value_owned ((ValaDataType*) self);
305 	_tmp7_ = _tmp6_;
306 	vala_data_type_set_value_owned ((ValaDataType*) _result_, _tmp7_);
307 	_tmp8_ = vala_data_type_get_nullable ((ValaDataType*) self);
308 	_tmp9_ = _tmp8_;
309 	vala_data_type_set_nullable ((ValaDataType*) _result_, _tmp9_);
310 	_tmp10_ = self->priv->_dynamic_error;
311 	vala_error_type_set_dynamic_error (_result_, _tmp10_);
312 	result = (ValaDataType*) _result_;
313 	return result;
314 }
315 
316 static gboolean
vala_error_type_real_equals(ValaDataType * base,ValaDataType * type2)317 vala_error_type_real_equals (ValaDataType* base,
318                              ValaDataType* type2)
319 {
320 	ValaErrorType * self;
321 	ValaErrorType* et = NULL;
322 	ValaErrorType* _tmp0_;
323 	ValaErrorDomain* _tmp1_;
324 	ValaErrorDomain* _tmp2_;
325 	ValaErrorType* _tmp3_;
326 	ValaErrorDomain* _tmp4_;
327 	ValaErrorDomain* _tmp5_;
328 	gboolean result = FALSE;
329 	self = (ValaErrorType*) base;
330 	g_return_val_if_fail (type2 != NULL, FALSE);
331 	et = VALA_IS_ERROR_TYPE (type2) ? ((ValaErrorType*) type2) : NULL;
332 	_tmp0_ = et;
333 	if (_tmp0_ == NULL) {
334 		result = FALSE;
335 		return result;
336 	}
337 	_tmp1_ = vala_error_type_get_error_domain (self);
338 	_tmp2_ = _tmp1_;
339 	_tmp3_ = et;
340 	_tmp4_ = vala_error_type_get_error_domain (_tmp3_);
341 	_tmp5_ = _tmp4_;
342 	result = _tmp2_ == _tmp5_;
343 	return result;
344 }
345 
346 static ValaSymbol*
vala_error_type_real_get_member(ValaDataType * base,const gchar * member_name)347 vala_error_type_real_get_member (ValaDataType* base,
348                                  const gchar* member_name)
349 {
350 	ValaErrorType * self;
351 	ValaSymbol* gerror_symbol = NULL;
352 	ValaCodeContext* _tmp0_;
353 	ValaCodeContext* _tmp1_;
354 	ValaNamespace* _tmp2_;
355 	ValaNamespace* _tmp3_;
356 	ValaScope* _tmp4_;
357 	ValaScope* _tmp5_;
358 	ValaSymbol* _tmp6_;
359 	ValaSymbol* _tmp7_;
360 	ValaScope* _tmp8_;
361 	ValaScope* _tmp9_;
362 	ValaSymbol* _tmp10_;
363 	ValaSymbol* _tmp11_;
364 	ValaScope* _tmp12_;
365 	ValaScope* _tmp13_;
366 	ValaSymbol* _tmp14_;
367 	ValaSymbol* result = NULL;
368 	self = (ValaErrorType*) base;
369 	g_return_val_if_fail (member_name != NULL, NULL);
370 	_tmp0_ = vala_code_context_get ();
371 	_tmp1_ = _tmp0_;
372 	_tmp2_ = vala_code_context_get_root (_tmp1_);
373 	_tmp3_ = _tmp2_;
374 	_tmp4_ = vala_symbol_get_scope ((ValaSymbol*) _tmp3_);
375 	_tmp5_ = _tmp4_;
376 	_tmp6_ = vala_scope_lookup (_tmp5_, "GLib");
377 	_tmp7_ = _tmp6_;
378 	_tmp8_ = vala_symbol_get_scope (_tmp7_);
379 	_tmp9_ = _tmp8_;
380 	_tmp10_ = vala_scope_lookup (_tmp9_, "Error");
381 	_tmp11_ = _tmp10_;
382 	_vala_code_node_unref0 (_tmp7_);
383 	_vala_code_context_unref0 (_tmp1_);
384 	gerror_symbol = _tmp11_;
385 	_tmp12_ = vala_symbol_get_scope (gerror_symbol);
386 	_tmp13_ = _tmp12_;
387 	_tmp14_ = vala_scope_lookup (_tmp13_, member_name);
388 	result = _tmp14_;
389 	_vala_code_node_unref0 (gerror_symbol);
390 	return result;
391 }
392 
393 static gboolean
vala_error_type_real_is_reference_type_or_type_parameter(ValaDataType * base)394 vala_error_type_real_is_reference_type_or_type_parameter (ValaDataType* base)
395 {
396 	ValaErrorType * self;
397 	gboolean result = FALSE;
398 	self = (ValaErrorType*) base;
399 	result = TRUE;
400 	return result;
401 }
402 
403 static gboolean
vala_error_type_real_check(ValaCodeNode * base,ValaCodeContext * context)404 vala_error_type_real_check (ValaCodeNode* base,
405                             ValaCodeContext* context)
406 {
407 	ValaErrorType * self;
408 	ValaErrorDomain* _tmp0_;
409 	ValaErrorDomain* _tmp1_;
410 	gboolean result = FALSE;
411 	self = (ValaErrorType*) base;
412 	g_return_val_if_fail (context != NULL, FALSE);
413 	_tmp0_ = vala_error_type_get_error_domain (self);
414 	_tmp1_ = _tmp0_;
415 	if (_tmp1_ != NULL) {
416 		ValaErrorDomain* _tmp2_;
417 		ValaErrorDomain* _tmp3_;
418 		_tmp2_ = vala_error_type_get_error_domain (self);
419 		_tmp3_ = _tmp2_;
420 		result = vala_code_node_check ((ValaCodeNode*) _tmp3_, context);
421 		return result;
422 	}
423 	result = TRUE;
424 	return result;
425 }
426 
427 static void
vala_error_type_class_init(ValaErrorTypeClass * klass,gpointer klass_data)428 vala_error_type_class_init (ValaErrorTypeClass * klass,
429                             gpointer klass_data)
430 {
431 	vala_error_type_parent_class = g_type_class_peek_parent (klass);
432 	((ValaCodeNodeClass *) klass)->finalize = vala_error_type_finalize;
433 	g_type_class_adjust_private_offset (klass, &ValaErrorType_private_offset);
434 	((ValaDataTypeClass *) klass)->compatible = (gboolean (*) (ValaDataType*, ValaDataType*)) vala_error_type_real_compatible;
435 	((ValaDataTypeClass *) klass)->to_qualified_string = (gchar* (*) (ValaDataType*, ValaScope*)) vala_error_type_real_to_qualified_string;
436 	((ValaDataTypeClass *) klass)->copy = (ValaDataType* (*) (ValaDataType*)) vala_error_type_real_copy;
437 	((ValaDataTypeClass *) klass)->equals = (gboolean (*) (ValaDataType*, ValaDataType*)) vala_error_type_real_equals;
438 	((ValaDataTypeClass *) klass)->get_member = (ValaSymbol* (*) (ValaDataType*, const gchar*)) vala_error_type_real_get_member;
439 	((ValaDataTypeClass *) klass)->is_reference_type_or_type_parameter = (gboolean (*) (ValaDataType*)) vala_error_type_real_is_reference_type_or_type_parameter;
440 	((ValaCodeNodeClass *) klass)->check = (gboolean (*) (ValaCodeNode*, ValaCodeContext*)) vala_error_type_real_check;
441 }
442 
443 static void
vala_error_type_instance_init(ValaErrorType * self,gpointer klass)444 vala_error_type_instance_init (ValaErrorType * self,
445                                gpointer klass)
446 {
447 	self->priv = vala_error_type_get_instance_private (self);
448 }
449 
450 static void
vala_error_type_finalize(ValaCodeNode * obj)451 vala_error_type_finalize (ValaCodeNode * obj)
452 {
453 	ValaErrorType * self;
454 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_ERROR_TYPE, ValaErrorType);
455 	VALA_CODE_NODE_CLASS (vala_error_type_parent_class)->finalize (obj);
456 }
457 
458 /**
459  * A class type.
460  */
461 static GType
vala_error_type_get_type_once(void)462 vala_error_type_get_type_once (void)
463 {
464 	static const GTypeInfo g_define_type_info = { sizeof (ValaErrorTypeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_error_type_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaErrorType), 0, (GInstanceInitFunc) vala_error_type_instance_init, NULL };
465 	GType vala_error_type_type_id;
466 	vala_error_type_type_id = g_type_register_static (VALA_TYPE_REFERENCE_TYPE, "ValaErrorType", &g_define_type_info, 0);
467 	ValaErrorType_private_offset = g_type_add_instance_private (vala_error_type_type_id, sizeof (ValaErrorTypePrivate));
468 	return vala_error_type_type_id;
469 }
470 
471 GType
vala_error_type_get_type(void)472 vala_error_type_get_type (void)
473 {
474 	static volatile gsize vala_error_type_type_id__volatile = 0;
475 	if (g_once_init_enter (&vala_error_type_type_id__volatile)) {
476 		GType vala_error_type_type_id;
477 		vala_error_type_type_id = vala_error_type_get_type_once ();
478 		g_once_init_leave (&vala_error_type_type_id__volatile, vala_error_type_type_id);
479 	}
480 	return vala_error_type_type_id__volatile;
481 }
482 
483