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