1 /* valaccodeunaryexpression.c generated by valac, the Vala compiler
2  * generated from valaccodeunaryexpression.vala, do not modify */
3 
4 /* valaccodeunaryexpression.vala
5  *
6  * Copyright (C) 2006-2009  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 "valaccode.h"
27 #include <glib.h>
28 
29 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
30 
31 struct _ValaCCodeUnaryExpressionPrivate {
32 	ValaCCodeUnaryOperator _operator;
33 	ValaCCodeExpression* _inner;
34 };
35 
36 static gint ValaCCodeUnaryExpression_private_offset;
37 static gpointer vala_ccode_unary_expression_parent_class = NULL;
38 
39 static void vala_ccode_unary_expression_real_write (ValaCCodeNode* base,
40                                              ValaCCodeWriter* writer);
41 static void vala_ccode_unary_expression_real_write_inner (ValaCCodeExpression* base,
42                                                    ValaCCodeWriter* writer);
43 static void vala_ccode_unary_expression_finalize (ValaCCodeNode * obj);
44 static GType vala_ccode_unary_expression_get_type_once (void);
45 
46 static inline gpointer
vala_ccode_unary_expression_get_instance_private(ValaCCodeUnaryExpression * self)47 vala_ccode_unary_expression_get_instance_private (ValaCCodeUnaryExpression* self)
48 {
49 	return G_STRUCT_MEMBER_P (self, ValaCCodeUnaryExpression_private_offset);
50 }
51 
52 ValaCCodeUnaryOperator
vala_ccode_unary_expression_get_operator(ValaCCodeUnaryExpression * self)53 vala_ccode_unary_expression_get_operator (ValaCCodeUnaryExpression* self)
54 {
55 	ValaCCodeUnaryOperator result;
56 	ValaCCodeUnaryOperator _tmp0_;
57 	g_return_val_if_fail (self != NULL, 0);
58 	_tmp0_ = self->priv->_operator;
59 	result = _tmp0_;
60 	return result;
61 }
62 
63 void
vala_ccode_unary_expression_set_operator(ValaCCodeUnaryExpression * self,ValaCCodeUnaryOperator value)64 vala_ccode_unary_expression_set_operator (ValaCCodeUnaryExpression* self,
65                                           ValaCCodeUnaryOperator value)
66 {
67 	g_return_if_fail (self != NULL);
68 	self->priv->_operator = value;
69 }
70 
71 ValaCCodeExpression*
vala_ccode_unary_expression_get_inner(ValaCCodeUnaryExpression * self)72 vala_ccode_unary_expression_get_inner (ValaCCodeUnaryExpression* self)
73 {
74 	ValaCCodeExpression* result;
75 	ValaCCodeExpression* _tmp0_;
76 	g_return_val_if_fail (self != NULL, NULL);
77 	_tmp0_ = self->priv->_inner;
78 	result = _tmp0_;
79 	return result;
80 }
81 
82 static gpointer
_vala_ccode_node_ref0(gpointer self)83 _vala_ccode_node_ref0 (gpointer self)
84 {
85 	return self ? vala_ccode_node_ref (self) : NULL;
86 }
87 
88 void
vala_ccode_unary_expression_set_inner(ValaCCodeUnaryExpression * self,ValaCCodeExpression * value)89 vala_ccode_unary_expression_set_inner (ValaCCodeUnaryExpression* self,
90                                        ValaCCodeExpression* value)
91 {
92 	ValaCCodeExpression* _tmp0_;
93 	g_return_if_fail (self != NULL);
94 	_tmp0_ = _vala_ccode_node_ref0 (value);
95 	_vala_ccode_node_unref0 (self->priv->_inner);
96 	self->priv->_inner = _tmp0_;
97 }
98 
99 ValaCCodeUnaryExpression*
vala_ccode_unary_expression_construct(GType object_type,ValaCCodeUnaryOperator op,ValaCCodeExpression * expr)100 vala_ccode_unary_expression_construct (GType object_type,
101                                        ValaCCodeUnaryOperator op,
102                                        ValaCCodeExpression* expr)
103 {
104 	ValaCCodeUnaryExpression* self = NULL;
105 	g_return_val_if_fail (expr != NULL, NULL);
106 	self = (ValaCCodeUnaryExpression*) vala_ccode_expression_construct (object_type);
107 	vala_ccode_unary_expression_set_operator (self, op);
108 	vala_ccode_unary_expression_set_inner (self, expr);
109 	return self;
110 }
111 
112 ValaCCodeUnaryExpression*
vala_ccode_unary_expression_new(ValaCCodeUnaryOperator op,ValaCCodeExpression * expr)113 vala_ccode_unary_expression_new (ValaCCodeUnaryOperator op,
114                                  ValaCCodeExpression* expr)
115 {
116 	return vala_ccode_unary_expression_construct (VALA_TYPE_CCODE_UNARY_EXPRESSION, op, expr);
117 }
118 
119 static void
vala_ccode_unary_expression_real_write(ValaCCodeNode * base,ValaCCodeWriter * writer)120 vala_ccode_unary_expression_real_write (ValaCCodeNode* base,
121                                         ValaCCodeWriter* writer)
122 {
123 	ValaCCodeUnaryExpression * self;
124 	ValaCCodeUnaryOperator _tmp0_;
125 	self = (ValaCCodeUnaryExpression*) base;
126 	g_return_if_fail (writer != NULL);
127 	_tmp0_ = self->priv->_operator;
128 	switch (_tmp0_) {
129 		case VALA_CCODE_UNARY_OPERATOR_PLUS:
130 		{
131 			ValaCCodeExpression* _tmp1_;
132 			vala_ccode_writer_write_string (writer, "+");
133 			_tmp1_ = self->priv->_inner;
134 			vala_ccode_expression_write_inner (_tmp1_, writer);
135 			break;
136 		}
137 		case VALA_CCODE_UNARY_OPERATOR_MINUS:
138 		{
139 			ValaCCodeExpression* _tmp2_;
140 			vala_ccode_writer_write_string (writer, "-");
141 			_tmp2_ = self->priv->_inner;
142 			vala_ccode_expression_write_inner (_tmp2_, writer);
143 			break;
144 		}
145 		case VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION:
146 		{
147 			ValaCCodeExpression* _tmp3_;
148 			vala_ccode_writer_write_string (writer, "!");
149 			_tmp3_ = self->priv->_inner;
150 			vala_ccode_expression_write_inner (_tmp3_, writer);
151 			break;
152 		}
153 		case VALA_CCODE_UNARY_OPERATOR_BITWISE_COMPLEMENT:
154 		{
155 			ValaCCodeExpression* _tmp4_;
156 			vala_ccode_writer_write_string (writer, "~");
157 			_tmp4_ = self->priv->_inner;
158 			vala_ccode_expression_write_inner (_tmp4_, writer);
159 			break;
160 		}
161 		case VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION:
162 		{
163 			ValaCCodeUnaryExpression* inner_unary = NULL;
164 			ValaCCodeExpression* _tmp5_;
165 			ValaCCodeUnaryExpression* _tmp6_;
166 			gboolean _tmp7_ = FALSE;
167 			ValaCCodeUnaryExpression* _tmp8_;
168 			ValaCCodeExpression* _tmp13_;
169 			_tmp5_ = self->priv->_inner;
170 			_tmp6_ = _vala_ccode_node_ref0 (VALA_IS_CCODE_UNARY_EXPRESSION (_tmp5_) ? ((ValaCCodeUnaryExpression*) _tmp5_) : NULL);
171 			inner_unary = _tmp6_;
172 			_tmp8_ = inner_unary;
173 			if (_tmp8_ != NULL) {
174 				ValaCCodeUnaryExpression* _tmp9_;
175 				ValaCCodeUnaryOperator _tmp10_;
176 				_tmp9_ = inner_unary;
177 				_tmp10_ = _tmp9_->priv->_operator;
178 				_tmp7_ = _tmp10_ == VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF;
179 			} else {
180 				_tmp7_ = FALSE;
181 			}
182 			if (_tmp7_) {
183 				ValaCCodeUnaryExpression* _tmp11_;
184 				ValaCCodeExpression* _tmp12_;
185 				_tmp11_ = inner_unary;
186 				_tmp12_ = _tmp11_->priv->_inner;
187 				vala_ccode_node_write ((ValaCCodeNode*) _tmp12_, writer);
188 				_vala_ccode_node_unref0 (inner_unary);
189 				return;
190 			}
191 			vala_ccode_writer_write_string (writer, "*");
192 			_tmp13_ = self->priv->_inner;
193 			vala_ccode_expression_write_inner (_tmp13_, writer);
194 			_vala_ccode_node_unref0 (inner_unary);
195 			break;
196 		}
197 		case VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF:
198 		{
199 			ValaCCodeUnaryExpression* inner_unary = NULL;
200 			ValaCCodeExpression* _tmp14_;
201 			ValaCCodeUnaryExpression* _tmp15_;
202 			gboolean _tmp16_ = FALSE;
203 			ValaCCodeUnaryExpression* _tmp17_;
204 			ValaCCodeExpression* _tmp22_;
205 			_tmp14_ = self->priv->_inner;
206 			_tmp15_ = _vala_ccode_node_ref0 (VALA_IS_CCODE_UNARY_EXPRESSION (_tmp14_) ? ((ValaCCodeUnaryExpression*) _tmp14_) : NULL);
207 			inner_unary = _tmp15_;
208 			_tmp17_ = inner_unary;
209 			if (_tmp17_ != NULL) {
210 				ValaCCodeUnaryExpression* _tmp18_;
211 				ValaCCodeUnaryOperator _tmp19_;
212 				_tmp18_ = inner_unary;
213 				_tmp19_ = _tmp18_->priv->_operator;
214 				_tmp16_ = _tmp19_ == VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION;
215 			} else {
216 				_tmp16_ = FALSE;
217 			}
218 			if (_tmp16_) {
219 				ValaCCodeUnaryExpression* _tmp20_;
220 				ValaCCodeExpression* _tmp21_;
221 				_tmp20_ = inner_unary;
222 				_tmp21_ = _tmp20_->priv->_inner;
223 				vala_ccode_node_write ((ValaCCodeNode*) _tmp21_, writer);
224 				_vala_ccode_node_unref0 (inner_unary);
225 				return;
226 			}
227 			vala_ccode_writer_write_string (writer, "&");
228 			_tmp22_ = self->priv->_inner;
229 			vala_ccode_expression_write_inner (_tmp22_, writer);
230 			_vala_ccode_node_unref0 (inner_unary);
231 			break;
232 		}
233 		case VALA_CCODE_UNARY_OPERATOR_PREFIX_INCREMENT:
234 		{
235 			vala_ccode_writer_write_string (writer, "++");
236 			break;
237 		}
238 		case VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT:
239 		{
240 			vala_ccode_writer_write_string (writer, "--");
241 			break;
242 		}
243 		case VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT:
244 		{
245 			ValaCCodeExpression* _tmp23_;
246 			_tmp23_ = self->priv->_inner;
247 			vala_ccode_expression_write_inner (_tmp23_, writer);
248 			vala_ccode_writer_write_string (writer, "++");
249 			break;
250 		}
251 		case VALA_CCODE_UNARY_OPERATOR_POSTFIX_DECREMENT:
252 		{
253 			ValaCCodeExpression* _tmp24_;
254 			_tmp24_ = self->priv->_inner;
255 			vala_ccode_expression_write_inner (_tmp24_, writer);
256 			vala_ccode_writer_write_string (writer, "--");
257 			break;
258 		}
259 		default:
260 		{
261 			g_assert_not_reached ();
262 		}
263 	}
264 }
265 
266 static void
vala_ccode_unary_expression_real_write_inner(ValaCCodeExpression * base,ValaCCodeWriter * writer)267 vala_ccode_unary_expression_real_write_inner (ValaCCodeExpression* base,
268                                               ValaCCodeWriter* writer)
269 {
270 	ValaCCodeUnaryExpression * self;
271 	self = (ValaCCodeUnaryExpression*) base;
272 	g_return_if_fail (writer != NULL);
273 	vala_ccode_writer_write_string (writer, "(");
274 	vala_ccode_node_write ((ValaCCodeNode*) self, writer);
275 	vala_ccode_writer_write_string (writer, ")");
276 }
277 
278 static void
vala_ccode_unary_expression_class_init(ValaCCodeUnaryExpressionClass * klass,gpointer klass_data)279 vala_ccode_unary_expression_class_init (ValaCCodeUnaryExpressionClass * klass,
280                                         gpointer klass_data)
281 {
282 	vala_ccode_unary_expression_parent_class = g_type_class_peek_parent (klass);
283 	((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_unary_expression_finalize;
284 	g_type_class_adjust_private_offset (klass, &ValaCCodeUnaryExpression_private_offset);
285 	((ValaCCodeNodeClass *) klass)->write = (void (*) (ValaCCodeNode*, ValaCCodeWriter*)) vala_ccode_unary_expression_real_write;
286 	((ValaCCodeExpressionClass *) klass)->write_inner = (void (*) (ValaCCodeExpression*, ValaCCodeWriter*)) vala_ccode_unary_expression_real_write_inner;
287 }
288 
289 static void
vala_ccode_unary_expression_instance_init(ValaCCodeUnaryExpression * self,gpointer klass)290 vala_ccode_unary_expression_instance_init (ValaCCodeUnaryExpression * self,
291                                            gpointer klass)
292 {
293 	self->priv = vala_ccode_unary_expression_get_instance_private (self);
294 }
295 
296 static void
vala_ccode_unary_expression_finalize(ValaCCodeNode * obj)297 vala_ccode_unary_expression_finalize (ValaCCodeNode * obj)
298 {
299 	ValaCCodeUnaryExpression * self;
300 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CCODE_UNARY_EXPRESSION, ValaCCodeUnaryExpression);
301 	_vala_ccode_node_unref0 (self->priv->_inner);
302 	VALA_CCODE_NODE_CLASS (vala_ccode_unary_expression_parent_class)->finalize (obj);
303 }
304 
305 /**
306  * Represents an expression with one operand in the C code.
307  */
308 static GType
vala_ccode_unary_expression_get_type_once(void)309 vala_ccode_unary_expression_get_type_once (void)
310 {
311 	static const GTypeInfo g_define_type_info = { sizeof (ValaCCodeUnaryExpressionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_ccode_unary_expression_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaCCodeUnaryExpression), 0, (GInstanceInitFunc) vala_ccode_unary_expression_instance_init, NULL };
312 	GType vala_ccode_unary_expression_type_id;
313 	vala_ccode_unary_expression_type_id = g_type_register_static (VALA_TYPE_CCODE_EXPRESSION, "ValaCCodeUnaryExpression", &g_define_type_info, 0);
314 	ValaCCodeUnaryExpression_private_offset = g_type_add_instance_private (vala_ccode_unary_expression_type_id, sizeof (ValaCCodeUnaryExpressionPrivate));
315 	return vala_ccode_unary_expression_type_id;
316 }
317 
318 GType
vala_ccode_unary_expression_get_type(void)319 vala_ccode_unary_expression_get_type (void)
320 {
321 	static volatile gsize vala_ccode_unary_expression_type_id__volatile = 0;
322 	if (g_once_init_enter (&vala_ccode_unary_expression_type_id__volatile)) {
323 		GType vala_ccode_unary_expression_type_id;
324 		vala_ccode_unary_expression_type_id = vala_ccode_unary_expression_get_type_once ();
325 		g_once_init_leave (&vala_ccode_unary_expression_type_id__volatile, vala_ccode_unary_expression_type_id);
326 	}
327 	return vala_ccode_unary_expression_type_id__volatile;
328 }
329 
330 static GType
vala_ccode_unary_operator_get_type_once(void)331 vala_ccode_unary_operator_get_type_once (void)
332 {
333 	static const GEnumValue values[] = {{VALA_CCODE_UNARY_OPERATOR_PLUS, "VALA_CCODE_UNARY_OPERATOR_PLUS", "plus"}, {VALA_CCODE_UNARY_OPERATOR_MINUS, "VALA_CCODE_UNARY_OPERATOR_MINUS", "minus"}, {VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, "VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION", "logical-negation"}, {VALA_CCODE_UNARY_OPERATOR_BITWISE_COMPLEMENT, "VALA_CCODE_UNARY_OPERATOR_BITWISE_COMPLEMENT", "bitwise-complement"}, {VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, "VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION", "pointer-indirection"}, {VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, "VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF", "address-of"}, {VALA_CCODE_UNARY_OPERATOR_PREFIX_INCREMENT, "VALA_CCODE_UNARY_OPERATOR_PREFIX_INCREMENT", "prefix-increment"}, {VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT, "VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT", "prefix-decrement"}, {VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, "VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT", "postfix-increment"}, {VALA_CCODE_UNARY_OPERATOR_POSTFIX_DECREMENT, "VALA_CCODE_UNARY_OPERATOR_POSTFIX_DECREMENT", "postfix-decrement"}, {0, NULL, NULL}};
334 	GType vala_ccode_unary_operator_type_id;
335 	vala_ccode_unary_operator_type_id = g_enum_register_static ("ValaCCodeUnaryOperator", values);
336 	return vala_ccode_unary_operator_type_id;
337 }
338 
339 GType
vala_ccode_unary_operator_get_type(void)340 vala_ccode_unary_operator_get_type (void)
341 {
342 	static volatile gsize vala_ccode_unary_operator_type_id__volatile = 0;
343 	if (g_once_init_enter (&vala_ccode_unary_operator_type_id__volatile)) {
344 		GType vala_ccode_unary_operator_type_id;
345 		vala_ccode_unary_operator_type_id = vala_ccode_unary_operator_get_type_once ();
346 		g_once_init_leave (&vala_ccode_unary_operator_type_id__volatile, vala_ccode_unary_operator_type_id);
347 	}
348 	return vala_ccode_unary_operator_type_id__volatile;
349 }
350 
351