1 /* valaenumvaluetype.c generated by valac, the Vala compiler
2  * generated from valaenumvaluetype.vala, do not modify */
3 
4 /* valaenumvaluetype.vala
5  *
6  * Copyright (C) 2009-2011  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 <stdlib.h>
28 #include <string.h>
29 #include <glib.h>
30 
31 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
32 #define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))
33 
34 struct _ValaEnumValueTypePrivate {
35 	ValaMethod* to_string_method;
36 };
37 
38 static gint ValaEnumValueType_private_offset;
39 static gpointer vala_enum_value_type_parent_class = NULL;
40 
41 static ValaDataType* vala_enum_value_type_real_copy (ValaDataType* base);
42 static ValaSymbol* vala_enum_value_type_real_get_member (ValaDataType* base,
43                                                   const gchar* member_name);
44 static void vala_enum_value_type_finalize (ValaCodeNode * obj);
45 static GType vala_enum_value_type_get_type_once (void);
46 
47 static inline gpointer
vala_enum_value_type_get_instance_private(ValaEnumValueType * self)48 vala_enum_value_type_get_instance_private (ValaEnumValueType* self)
49 {
50 	return G_STRUCT_MEMBER_P (self, ValaEnumValueType_private_offset);
51 }
52 
53 ValaEnumValueType*
vala_enum_value_type_construct(GType object_type,ValaEnum * type_symbol)54 vala_enum_value_type_construct (GType object_type,
55                                 ValaEnum* type_symbol)
56 {
57 	ValaEnumValueType* self = NULL;
58 	g_return_val_if_fail (type_symbol != NULL, NULL);
59 	self = (ValaEnumValueType*) vala_value_type_construct (object_type, (ValaTypeSymbol*) type_symbol);
60 	return self;
61 }
62 
63 ValaEnumValueType*
vala_enum_value_type_new(ValaEnum * type_symbol)64 vala_enum_value_type_new (ValaEnum* type_symbol)
65 {
66 	return vala_enum_value_type_construct (VALA_TYPE_ENUM_VALUE_TYPE, type_symbol);
67 }
68 
69 static ValaDataType*
vala_enum_value_type_real_copy(ValaDataType * base)70 vala_enum_value_type_real_copy (ValaDataType* base)
71 {
72 	ValaEnumValueType * self;
73 	ValaEnumValueType* _result_ = NULL;
74 	ValaTypeSymbol* _tmp0_;
75 	ValaTypeSymbol* _tmp1_;
76 	ValaEnumValueType* _tmp2_;
77 	ValaSourceReference* _tmp3_;
78 	ValaSourceReference* _tmp4_;
79 	gboolean _tmp5_;
80 	gboolean _tmp6_;
81 	gboolean _tmp7_;
82 	gboolean _tmp8_;
83 	ValaDataType* result = NULL;
84 	self = (ValaEnumValueType*) base;
85 	_tmp0_ = vala_data_type_get_type_symbol ((ValaDataType*) self);
86 	_tmp1_ = _tmp0_;
87 	_tmp2_ = vala_enum_value_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_ENUM, ValaEnum));
88 	_result_ = _tmp2_;
89 	_tmp3_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
90 	_tmp4_ = _tmp3_;
91 	vala_code_node_set_source_reference ((ValaCodeNode*) _result_, _tmp4_);
92 	_tmp5_ = vala_data_type_get_value_owned ((ValaDataType*) self);
93 	_tmp6_ = _tmp5_;
94 	vala_data_type_set_value_owned ((ValaDataType*) _result_, _tmp6_);
95 	_tmp7_ = vala_data_type_get_nullable ((ValaDataType*) self);
96 	_tmp8_ = _tmp7_;
97 	vala_data_type_set_nullable ((ValaDataType*) _result_, _tmp8_);
98 	result = (ValaDataType*) _result_;
99 	return result;
100 }
101 
102 ValaMethod*
vala_enum_value_type_get_to_string_method(ValaEnumValueType * self)103 vala_enum_value_type_get_to_string_method (ValaEnumValueType* self)
104 {
105 	ValaMethod* _tmp0_;
106 	ValaMethod* _tmp44_;
107 	ValaMethod* result = NULL;
108 	g_return_val_if_fail (self != NULL, NULL);
109 	_tmp0_ = self->priv->to_string_method;
110 	if (_tmp0_ == NULL) {
111 		ValaObjectType* string_type = NULL;
112 		ValaCodeContext* _tmp1_;
113 		ValaCodeContext* _tmp2_;
114 		ValaNamespace* _tmp3_;
115 		ValaNamespace* _tmp4_;
116 		ValaScope* _tmp5_;
117 		ValaScope* _tmp6_;
118 		ValaSymbol* _tmp7_;
119 		ValaClass* _tmp8_;
120 		ValaObjectType* _tmp9_;
121 		ValaObjectType* _tmp10_;
122 		ValaObjectType* _tmp11_;
123 		ValaObjectType* _tmp12_;
124 		ValaMethod* _tmp13_;
125 		ValaMethod* _tmp14_;
126 		ValaMethod* _tmp15_;
127 		ValaCodeContext* _tmp16_;
128 		ValaCodeContext* _tmp17_;
129 		ValaProfile _tmp18_;
130 		ValaProfile _tmp19_;
131 		gboolean _tmp20_;
132 		ValaMethod* _tmp23_;
133 		ValaTypeSymbol* _tmp24_;
134 		ValaTypeSymbol* _tmp25_;
135 		ValaScope* _tmp26_;
136 		ValaScope* _tmp27_;
137 		ValaMethod* _tmp28_;
138 		ValaDataType* _tmp29_;
139 		ValaDataType* _tmp30_;
140 		ValaParameter* _tmp31_;
141 		ValaParameter* _tmp32_;
142 		ValaMethod* _tmp33_;
143 		ValaScope* _tmp34_;
144 		ValaScope* _tmp35_;
145 		ValaMethod* _tmp36_;
146 		ValaParameter* _tmp37_;
147 		ValaParameter* _tmp38_;
148 		const gchar* _tmp39_;
149 		const gchar* _tmp40_;
150 		ValaMethod* _tmp41_;
151 		ValaParameter* _tmp42_;
152 		ValaParameter* _tmp43_;
153 		_tmp1_ = vala_code_context_get ();
154 		_tmp2_ = _tmp1_;
155 		_tmp3_ = vala_code_context_get_root (_tmp2_);
156 		_tmp4_ = _tmp3_;
157 		_tmp5_ = vala_symbol_get_scope ((ValaSymbol*) _tmp4_);
158 		_tmp6_ = _tmp5_;
159 		_tmp7_ = vala_scope_lookup (_tmp6_, "string");
160 		_tmp8_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, VALA_TYPE_CLASS, ValaClass);
161 		_tmp9_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp8_);
162 		_tmp10_ = _tmp9_;
163 		_vala_code_node_unref0 (_tmp8_);
164 		_vala_code_context_unref0 (_tmp2_);
165 		string_type = _tmp10_;
166 		_tmp11_ = string_type;
167 		vala_data_type_set_value_owned ((ValaDataType*) _tmp11_, FALSE);
168 		_tmp12_ = string_type;
169 		_tmp13_ = vala_method_new ("to_string", (ValaDataType*) _tmp12_, NULL, NULL);
170 		_vala_code_node_unref0 (self->priv->to_string_method);
171 		self->priv->to_string_method = _tmp13_;
172 		_tmp14_ = self->priv->to_string_method;
173 		vala_symbol_set_access ((ValaSymbol*) _tmp14_, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
174 		_tmp15_ = self->priv->to_string_method;
175 		vala_symbol_set_is_extern ((ValaSymbol*) _tmp15_, TRUE);
176 		_tmp16_ = vala_code_context_get ();
177 		_tmp17_ = _tmp16_;
178 		_tmp18_ = vala_code_context_get_profile (_tmp17_);
179 		_tmp19_ = _tmp18_;
180 		_tmp20_ = _tmp19_ == VALA_PROFILE_POSIX;
181 		_vala_code_context_unref0 (_tmp17_);
182 		if (_tmp20_) {
183 			ValaMethod* _tmp21_;
184 			_tmp21_ = self->priv->to_string_method;
185 			vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp21_, "CCode", "cheader_filename", "stdlib.h", NULL);
186 		} else {
187 			ValaMethod* _tmp22_;
188 			_tmp22_ = self->priv->to_string_method;
189 			vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp22_, "CCode", "cheader_filename", "glib-object.h", NULL);
190 		}
191 		_tmp23_ = self->priv->to_string_method;
192 		_tmp24_ = vala_data_type_get_type_symbol ((ValaDataType*) self);
193 		_tmp25_ = _tmp24_;
194 		_tmp26_ = vala_symbol_get_scope ((ValaSymbol*) _tmp25_);
195 		_tmp27_ = _tmp26_;
196 		vala_symbol_set_owner ((ValaSymbol*) _tmp23_, _tmp27_);
197 		_tmp28_ = self->priv->to_string_method;
198 		_tmp29_ = vala_data_type_copy ((ValaDataType*) self);
199 		_tmp30_ = _tmp29_;
200 		_tmp31_ = vala_parameter_new ("this", _tmp30_, NULL);
201 		_tmp32_ = _tmp31_;
202 		vala_method_set_this_parameter (_tmp28_, _tmp32_);
203 		_vala_code_node_unref0 (_tmp32_);
204 		_vala_code_node_unref0 (_tmp30_);
205 		_tmp33_ = self->priv->to_string_method;
206 		_tmp34_ = vala_symbol_get_scope ((ValaSymbol*) _tmp33_);
207 		_tmp35_ = _tmp34_;
208 		_tmp36_ = self->priv->to_string_method;
209 		_tmp37_ = vala_method_get_this_parameter (_tmp36_);
210 		_tmp38_ = _tmp37_;
211 		_tmp39_ = vala_symbol_get_name ((ValaSymbol*) _tmp38_);
212 		_tmp40_ = _tmp39_;
213 		_tmp41_ = self->priv->to_string_method;
214 		_tmp42_ = vala_method_get_this_parameter (_tmp41_);
215 		_tmp43_ = _tmp42_;
216 		vala_scope_add (_tmp35_, _tmp40_, (ValaSymbol*) _tmp43_);
217 		_vala_code_node_unref0 (string_type);
218 	}
219 	_tmp44_ = self->priv->to_string_method;
220 	result = _tmp44_;
221 	return result;
222 }
223 
224 static gpointer
_vala_code_node_ref0(gpointer self)225 _vala_code_node_ref0 (gpointer self)
226 {
227 	return self ? vala_code_node_ref (self) : NULL;
228 }
229 
230 static ValaSymbol*
vala_enum_value_type_real_get_member(ValaDataType * base,const gchar * member_name)231 vala_enum_value_type_real_get_member (ValaDataType* base,
232                                       const gchar* member_name)
233 {
234 	ValaEnumValueType * self;
235 	ValaSymbol* _result_ = NULL;
236 	ValaSymbol* _tmp0_;
237 	gboolean _tmp1_ = FALSE;
238 	ValaSymbol* _tmp2_;
239 	ValaSymbol* result = NULL;
240 	self = (ValaEnumValueType*) base;
241 	g_return_val_if_fail (member_name != NULL, NULL);
242 	_tmp0_ = VALA_DATA_TYPE_CLASS (vala_enum_value_type_parent_class)->get_member ((ValaDataType*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_VALUE_TYPE, ValaValueType), member_name);
243 	_result_ = _tmp0_;
244 	_tmp2_ = _result_;
245 	if (_tmp2_ == NULL) {
246 		_tmp1_ = g_strcmp0 (member_name, "to_string") == 0;
247 	} else {
248 		_tmp1_ = FALSE;
249 	}
250 	if (_tmp1_) {
251 		ValaMethod* _tmp3_;
252 		ValaSymbol* _tmp4_;
253 		_tmp3_ = vala_enum_value_type_get_to_string_method (self);
254 		_tmp4_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp3_);
255 		result = _tmp4_;
256 		_vala_code_node_unref0 (_result_);
257 		return result;
258 	}
259 	result = _result_;
260 	return result;
261 }
262 
263 static void
vala_enum_value_type_class_init(ValaEnumValueTypeClass * klass,gpointer klass_data)264 vala_enum_value_type_class_init (ValaEnumValueTypeClass * klass,
265                                  gpointer klass_data)
266 {
267 	vala_enum_value_type_parent_class = g_type_class_peek_parent (klass);
268 	((ValaCodeNodeClass *) klass)->finalize = vala_enum_value_type_finalize;
269 	g_type_class_adjust_private_offset (klass, &ValaEnumValueType_private_offset);
270 	((ValaDataTypeClass *) klass)->copy = (ValaDataType* (*) (ValaDataType*)) vala_enum_value_type_real_copy;
271 	((ValaDataTypeClass *) klass)->get_member = (ValaSymbol* (*) (ValaDataType*, const gchar*)) vala_enum_value_type_real_get_member;
272 }
273 
274 static void
vala_enum_value_type_instance_init(ValaEnumValueType * self,gpointer klass)275 vala_enum_value_type_instance_init (ValaEnumValueType * self,
276                                     gpointer klass)
277 {
278 	self->priv = vala_enum_value_type_get_instance_private (self);
279 }
280 
281 static void
vala_enum_value_type_finalize(ValaCodeNode * obj)282 vala_enum_value_type_finalize (ValaCodeNode * obj)
283 {
284 	ValaEnumValueType * self;
285 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_ENUM_VALUE_TYPE, ValaEnumValueType);
286 	_vala_code_node_unref0 (self->priv->to_string_method);
287 	VALA_CODE_NODE_CLASS (vala_enum_value_type_parent_class)->finalize (obj);
288 }
289 
290 /**
291  * An enum value type.
292  */
293 static GType
vala_enum_value_type_get_type_once(void)294 vala_enum_value_type_get_type_once (void)
295 {
296 	static const GTypeInfo g_define_type_info = { sizeof (ValaEnumValueTypeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_enum_value_type_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaEnumValueType), 0, (GInstanceInitFunc) vala_enum_value_type_instance_init, NULL };
297 	GType vala_enum_value_type_type_id;
298 	vala_enum_value_type_type_id = g_type_register_static (VALA_TYPE_VALUE_TYPE, "ValaEnumValueType", &g_define_type_info, 0);
299 	ValaEnumValueType_private_offset = g_type_add_instance_private (vala_enum_value_type_type_id, sizeof (ValaEnumValueTypePrivate));
300 	return vala_enum_value_type_type_id;
301 }
302 
303 GType
vala_enum_value_type_get_type(void)304 vala_enum_value_type_get_type (void)
305 {
306 	static volatile gsize vala_enum_value_type_type_id__volatile = 0;
307 	if (g_once_init_enter (&vala_enum_value_type_type_id__volatile)) {
308 		GType vala_enum_value_type_type_id;
309 		vala_enum_value_type_type_id = vala_enum_value_type_get_type_once ();
310 		g_once_init_leave (&vala_enum_value_type_type_id__volatile, vala_enum_value_type_type_id);
311 	}
312 	return vala_enum_value_type_type_id__volatile;
313 }
314 
315