1 /* valanamedargument.c generated by valac, the Vala compiler
2  * generated from valanamedargument.vala, do not modify */
3 
4 /* valanamedargument.vala
5  *
6  * Copyright (C) 2009-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 <stdlib.h>
28 #include <string.h>
29 #include <glib.h>
30 #include <valagee.h>
31 #include <glib-object.h>
32 
33 #define _g_free0(var) (var = (g_free (var), NULL))
34 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
35 
36 struct _ValaNamedArgumentPrivate {
37 	gchar* _name;
38 	ValaExpression* _inner;
39 };
40 
41 static gint ValaNamedArgument_private_offset;
42 static gpointer vala_named_argument_parent_class = NULL;
43 
44 static void vala_named_argument_real_accept (ValaCodeNode* base,
45                                       ValaCodeVisitor* visitor);
46 static void vala_named_argument_real_accept_children (ValaCodeNode* base,
47                                                ValaCodeVisitor* visitor);
48 static void vala_named_argument_real_replace_expression (ValaCodeNode* base,
49                                                   ValaExpression* old_node,
50                                                   ValaExpression* new_node);
51 static gboolean vala_named_argument_real_is_pure (ValaExpression* base);
52 static gboolean vala_named_argument_real_check (ValaCodeNode* base,
53                                          ValaCodeContext* context);
54 static void vala_named_argument_real_emit (ValaCodeNode* base,
55                                     ValaCodeGenerator* codegen);
56 static void vala_named_argument_real_get_defined_variables (ValaCodeNode* base,
57                                                      ValaCollection* collection);
58 static void vala_named_argument_real_get_used_variables (ValaCodeNode* base,
59                                                   ValaCollection* collection);
60 static void vala_named_argument_finalize (ValaCodeNode * obj);
61 static GType vala_named_argument_get_type_once (void);
62 
63 static inline gpointer
vala_named_argument_get_instance_private(ValaNamedArgument * self)64 vala_named_argument_get_instance_private (ValaNamedArgument* self)
65 {
66 	return G_STRUCT_MEMBER_P (self, ValaNamedArgument_private_offset);
67 }
68 
69 const gchar*
vala_named_argument_get_name(ValaNamedArgument * self)70 vala_named_argument_get_name (ValaNamedArgument* self)
71 {
72 	const gchar* result;
73 	const gchar* _tmp0_;
74 	g_return_val_if_fail (self != NULL, NULL);
75 	_tmp0_ = self->priv->_name;
76 	result = _tmp0_;
77 	return result;
78 }
79 
80 void
vala_named_argument_set_name(ValaNamedArgument * self,const gchar * value)81 vala_named_argument_set_name (ValaNamedArgument* self,
82                               const gchar* value)
83 {
84 	gchar* _tmp0_;
85 	g_return_if_fail (self != NULL);
86 	_tmp0_ = g_strdup (value);
87 	_g_free0 (self->priv->_name);
88 	self->priv->_name = _tmp0_;
89 }
90 
91 ValaExpression*
vala_named_argument_get_inner(ValaNamedArgument * self)92 vala_named_argument_get_inner (ValaNamedArgument* self)
93 {
94 	ValaExpression* result;
95 	ValaExpression* _tmp0_;
96 	g_return_val_if_fail (self != NULL, NULL);
97 	_tmp0_ = self->priv->_inner;
98 	result = _tmp0_;
99 	return result;
100 }
101 
102 static gpointer
_vala_code_node_ref0(gpointer self)103 _vala_code_node_ref0 (gpointer self)
104 {
105 	return self ? vala_code_node_ref (self) : NULL;
106 }
107 
108 void
vala_named_argument_set_inner(ValaNamedArgument * self,ValaExpression * value)109 vala_named_argument_set_inner (ValaNamedArgument* self,
110                                ValaExpression* value)
111 {
112 	ValaExpression* _tmp0_;
113 	ValaExpression* _tmp1_;
114 	g_return_if_fail (self != NULL);
115 	_tmp0_ = _vala_code_node_ref0 (value);
116 	_vala_code_node_unref0 (self->priv->_inner);
117 	self->priv->_inner = _tmp0_;
118 	_tmp1_ = self->priv->_inner;
119 	vala_code_node_set_parent_node ((ValaCodeNode*) _tmp1_, (ValaCodeNode*) self);
120 }
121 
122 ValaNamedArgument*
vala_named_argument_construct(GType object_type,const gchar * name,ValaExpression * inner,ValaSourceReference * source_reference)123 vala_named_argument_construct (GType object_type,
124                                const gchar* name,
125                                ValaExpression* inner,
126                                ValaSourceReference* source_reference)
127 {
128 	ValaNamedArgument* self = NULL;
129 	g_return_val_if_fail (name != NULL, NULL);
130 	g_return_val_if_fail (inner != NULL, NULL);
131 	self = (ValaNamedArgument*) vala_expression_construct (object_type);
132 	vala_named_argument_set_name (self, name);
133 	vala_named_argument_set_inner (self, inner);
134 	vala_code_node_set_source_reference ((ValaCodeNode*) self, source_reference);
135 	return self;
136 }
137 
138 ValaNamedArgument*
vala_named_argument_new(const gchar * name,ValaExpression * inner,ValaSourceReference * source_reference)139 vala_named_argument_new (const gchar* name,
140                          ValaExpression* inner,
141                          ValaSourceReference* source_reference)
142 {
143 	return vala_named_argument_construct (VALA_TYPE_NAMED_ARGUMENT, name, inner, source_reference);
144 }
145 
146 static void
vala_named_argument_real_accept(ValaCodeNode * base,ValaCodeVisitor * visitor)147 vala_named_argument_real_accept (ValaCodeNode* base,
148                                  ValaCodeVisitor* visitor)
149 {
150 	ValaNamedArgument * self;
151 	self = (ValaNamedArgument*) base;
152 	g_return_if_fail (visitor != NULL);
153 	vala_code_visitor_visit_named_argument (visitor, self);
154 	vala_code_visitor_visit_expression (visitor, (ValaExpression*) self);
155 }
156 
157 static void
vala_named_argument_real_accept_children(ValaCodeNode * base,ValaCodeVisitor * visitor)158 vala_named_argument_real_accept_children (ValaCodeNode* base,
159                                           ValaCodeVisitor* visitor)
160 {
161 	ValaNamedArgument * self;
162 	ValaExpression* _tmp0_;
163 	ValaExpression* _tmp1_;
164 	self = (ValaNamedArgument*) base;
165 	g_return_if_fail (visitor != NULL);
166 	_tmp0_ = vala_named_argument_get_inner (self);
167 	_tmp1_ = _tmp0_;
168 	vala_code_node_accept ((ValaCodeNode*) _tmp1_, visitor);
169 }
170 
171 static void
vala_named_argument_real_replace_expression(ValaCodeNode * base,ValaExpression * old_node,ValaExpression * new_node)172 vala_named_argument_real_replace_expression (ValaCodeNode* base,
173                                              ValaExpression* old_node,
174                                              ValaExpression* new_node)
175 {
176 	ValaNamedArgument * self;
177 	ValaExpression* _tmp0_;
178 	ValaExpression* _tmp1_;
179 	self = (ValaNamedArgument*) base;
180 	g_return_if_fail (old_node != NULL);
181 	g_return_if_fail (new_node != NULL);
182 	_tmp0_ = vala_named_argument_get_inner (self);
183 	_tmp1_ = _tmp0_;
184 	if (_tmp1_ == old_node) {
185 		vala_named_argument_set_inner (self, new_node);
186 	}
187 }
188 
189 static gboolean
vala_named_argument_real_is_pure(ValaExpression * base)190 vala_named_argument_real_is_pure (ValaExpression* base)
191 {
192 	ValaNamedArgument * self;
193 	ValaExpression* _tmp0_;
194 	ValaExpression* _tmp1_;
195 	gboolean result = FALSE;
196 	self = (ValaNamedArgument*) base;
197 	_tmp0_ = vala_named_argument_get_inner (self);
198 	_tmp1_ = _tmp0_;
199 	result = vala_expression_is_pure (_tmp1_);
200 	return result;
201 }
202 
203 static gboolean
vala_named_argument_real_check(ValaCodeNode * base,ValaCodeContext * context)204 vala_named_argument_real_check (ValaCodeNode* base,
205                                 ValaCodeContext* context)
206 {
207 	ValaNamedArgument * self;
208 	gboolean _tmp0_;
209 	gboolean _tmp1_;
210 	ValaExpression* _tmp4_;
211 	ValaExpression* _tmp5_;
212 	ValaDataType* _tmp6_;
213 	ValaDataType* _tmp7_;
214 	ValaExpression* _tmp8_;
215 	ValaExpression* _tmp9_;
216 	ValaExpression* _tmp10_;
217 	ValaExpression* _tmp11_;
218 	ValaExpression* _tmp12_;
219 	ValaExpression* _tmp13_;
220 	ValaDataType* _tmp14_;
221 	ValaDataType* _tmp15_;
222 	ValaExpression* _tmp16_;
223 	ValaExpression* _tmp17_;
224 	ValaDataType* _tmp18_;
225 	ValaDataType* _tmp19_;
226 	gboolean _tmp20_;
227 	gboolean _tmp21_;
228 	gboolean result = FALSE;
229 	self = (ValaNamedArgument*) base;
230 	g_return_val_if_fail (context != NULL, FALSE);
231 	_tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
232 	_tmp1_ = _tmp0_;
233 	if (_tmp1_) {
234 		gboolean _tmp2_;
235 		gboolean _tmp3_;
236 		_tmp2_ = vala_code_node_get_error ((ValaCodeNode*) self);
237 		_tmp3_ = _tmp2_;
238 		result = !_tmp3_;
239 		return result;
240 	}
241 	vala_code_node_set_checked ((ValaCodeNode*) self, TRUE);
242 	_tmp4_ = vala_named_argument_get_inner (self);
243 	_tmp5_ = _tmp4_;
244 	_tmp6_ = vala_expression_get_target_type ((ValaExpression*) self);
245 	_tmp7_ = _tmp6_;
246 	vala_expression_set_target_type (_tmp5_, _tmp7_);
247 	_tmp8_ = vala_named_argument_get_inner (self);
248 	_tmp9_ = _tmp8_;
249 	if (!vala_code_node_check ((ValaCodeNode*) _tmp9_, context)) {
250 		vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
251 		result = FALSE;
252 		return result;
253 	}
254 	_tmp10_ = vala_named_argument_get_inner (self);
255 	_tmp11_ = _tmp10_;
256 	_tmp12_ = vala_named_argument_get_inner (self);
257 	_tmp13_ = _tmp12_;
258 	_tmp14_ = vala_expression_get_value_type (_tmp13_);
259 	_tmp15_ = _tmp14_;
260 	vala_expression_set_target_type (_tmp11_, _tmp15_);
261 	_tmp16_ = vala_named_argument_get_inner (self);
262 	_tmp17_ = _tmp16_;
263 	_tmp18_ = vala_expression_get_value_type (_tmp17_);
264 	_tmp19_ = _tmp18_;
265 	vala_expression_set_value_type ((ValaExpression*) self, _tmp19_);
266 	_tmp20_ = vala_code_node_get_error ((ValaCodeNode*) self);
267 	_tmp21_ = _tmp20_;
268 	result = !_tmp21_;
269 	return result;
270 }
271 
272 static void
vala_named_argument_real_emit(ValaCodeNode * base,ValaCodeGenerator * codegen)273 vala_named_argument_real_emit (ValaCodeNode* base,
274                                ValaCodeGenerator* codegen)
275 {
276 	ValaNamedArgument * self;
277 	ValaExpression* _tmp0_;
278 	ValaExpression* _tmp1_;
279 	self = (ValaNamedArgument*) base;
280 	g_return_if_fail (codegen != NULL);
281 	_tmp0_ = vala_named_argument_get_inner (self);
282 	_tmp1_ = _tmp0_;
283 	vala_code_node_emit ((ValaCodeNode*) _tmp1_, codegen);
284 	vala_code_visitor_visit_named_argument ((ValaCodeVisitor*) codegen, self);
285 	vala_code_visitor_visit_expression ((ValaCodeVisitor*) codegen, (ValaExpression*) self);
286 }
287 
288 static void
vala_named_argument_real_get_defined_variables(ValaCodeNode * base,ValaCollection * collection)289 vala_named_argument_real_get_defined_variables (ValaCodeNode* base,
290                                                 ValaCollection* collection)
291 {
292 	ValaNamedArgument * self;
293 	ValaExpression* _tmp0_;
294 	ValaExpression* _tmp1_;
295 	self = (ValaNamedArgument*) base;
296 	g_return_if_fail (collection != NULL);
297 	_tmp0_ = vala_named_argument_get_inner (self);
298 	_tmp1_ = _tmp0_;
299 	vala_code_node_get_defined_variables ((ValaCodeNode*) _tmp1_, collection);
300 }
301 
302 static void
vala_named_argument_real_get_used_variables(ValaCodeNode * base,ValaCollection * collection)303 vala_named_argument_real_get_used_variables (ValaCodeNode* base,
304                                              ValaCollection* collection)
305 {
306 	ValaNamedArgument * self;
307 	ValaExpression* _tmp0_;
308 	ValaExpression* _tmp1_;
309 	self = (ValaNamedArgument*) base;
310 	g_return_if_fail (collection != NULL);
311 	_tmp0_ = vala_named_argument_get_inner (self);
312 	_tmp1_ = _tmp0_;
313 	vala_code_node_get_used_variables ((ValaCodeNode*) _tmp1_, collection);
314 }
315 
316 static void
vala_named_argument_class_init(ValaNamedArgumentClass * klass,gpointer klass_data)317 vala_named_argument_class_init (ValaNamedArgumentClass * klass,
318                                 gpointer klass_data)
319 {
320 	vala_named_argument_parent_class = g_type_class_peek_parent (klass);
321 	((ValaCodeNodeClass *) klass)->finalize = vala_named_argument_finalize;
322 	g_type_class_adjust_private_offset (klass, &ValaNamedArgument_private_offset);
323 	((ValaCodeNodeClass *) klass)->accept = (void (*) (ValaCodeNode*, ValaCodeVisitor*)) vala_named_argument_real_accept;
324 	((ValaCodeNodeClass *) klass)->accept_children = (void (*) (ValaCodeNode*, ValaCodeVisitor*)) vala_named_argument_real_accept_children;
325 	((ValaCodeNodeClass *) klass)->replace_expression = (void (*) (ValaCodeNode*, ValaExpression*, ValaExpression*)) vala_named_argument_real_replace_expression;
326 	((ValaExpressionClass *) klass)->is_pure = (gboolean (*) (ValaExpression*)) vala_named_argument_real_is_pure;
327 	((ValaCodeNodeClass *) klass)->check = (gboolean (*) (ValaCodeNode*, ValaCodeContext*)) vala_named_argument_real_check;
328 	((ValaCodeNodeClass *) klass)->emit = (void (*) (ValaCodeNode*, ValaCodeGenerator*)) vala_named_argument_real_emit;
329 	((ValaCodeNodeClass *) klass)->get_defined_variables = (void (*) (ValaCodeNode*, ValaCollection*)) vala_named_argument_real_get_defined_variables;
330 	((ValaCodeNodeClass *) klass)->get_used_variables = (void (*) (ValaCodeNode*, ValaCollection*)) vala_named_argument_real_get_used_variables;
331 }
332 
333 static void
vala_named_argument_instance_init(ValaNamedArgument * self,gpointer klass)334 vala_named_argument_instance_init (ValaNamedArgument * self,
335                                    gpointer klass)
336 {
337 	self->priv = vala_named_argument_get_instance_private (self);
338 }
339 
340 static void
vala_named_argument_finalize(ValaCodeNode * obj)341 vala_named_argument_finalize (ValaCodeNode * obj)
342 {
343 	ValaNamedArgument * self;
344 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_NAMED_ARGUMENT, ValaNamedArgument);
345 	_g_free0 (self->priv->_name);
346 	_vala_code_node_unref0 (self->priv->_inner);
347 	VALA_CODE_NODE_CLASS (vala_named_argument_parent_class)->finalize (obj);
348 }
349 
350 static GType
vala_named_argument_get_type_once(void)351 vala_named_argument_get_type_once (void)
352 {
353 	static const GTypeInfo g_define_type_info = { sizeof (ValaNamedArgumentClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_named_argument_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaNamedArgument), 0, (GInstanceInitFunc) vala_named_argument_instance_init, NULL };
354 	GType vala_named_argument_type_id;
355 	vala_named_argument_type_id = g_type_register_static (VALA_TYPE_EXPRESSION, "ValaNamedArgument", &g_define_type_info, 0);
356 	ValaNamedArgument_private_offset = g_type_add_instance_private (vala_named_argument_type_id, sizeof (ValaNamedArgumentPrivate));
357 	return vala_named_argument_type_id;
358 }
359 
360 GType
vala_named_argument_get_type(void)361 vala_named_argument_get_type (void)
362 {
363 	static volatile gsize vala_named_argument_type_id__volatile = 0;
364 	if (g_once_init_enter (&vala_named_argument_type_id__volatile)) {
365 		GType vala_named_argument_type_id;
366 		vala_named_argument_type_id = vala_named_argument_get_type_once ();
367 		g_once_init_leave (&vala_named_argument_type_id__volatile, vala_named_argument_type_id);
368 	}
369 	return vala_named_argument_type_id__volatile;
370 }
371 
372