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