~ubuntu-branches/ubuntu/raring/vala-0.20/raring-proposed

« back to all changes in this revision

Viewing changes to vala/valabasicblock.c

  • Committer: Package Import Robot
  • Author(s): Sebastien Bacher
  • Date: 2013-04-05 13:45:05 UTC
  • Revision ID: package-import@ubuntu.com-20130405134505-yyk3rec9904i7p8o
Tags: upstream-0.20.1
ImportĀ upstreamĀ versionĀ 0.20.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* valabasicblock.c generated by valac, the Vala compiler
 
2
 * generated from valabasicblock.vala, do not modify */
 
3
 
 
4
/* valabasicblock.vala
 
5
 *
 
6
 * Copyright (C) 2008  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 <glib.h>
 
27
#include <glib-object.h>
 
28
#include <valagee.h>
 
29
#include <gobject/gvaluecollector.h>
 
30
 
 
31
 
 
32
#define VALA_TYPE_BASIC_BLOCK (vala_basic_block_get_type ())
 
33
#define VALA_BASIC_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BASIC_BLOCK, ValaBasicBlock))
 
34
#define VALA_BASIC_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BASIC_BLOCK, ValaBasicBlockClass))
 
35
#define VALA_IS_BASIC_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BASIC_BLOCK))
 
36
#define VALA_IS_BASIC_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BASIC_BLOCK))
 
37
#define VALA_BASIC_BLOCK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BASIC_BLOCK, ValaBasicBlockClass))
 
38
 
 
39
typedef struct _ValaBasicBlock ValaBasicBlock;
 
40
typedef struct _ValaBasicBlockClass ValaBasicBlockClass;
 
41
typedef struct _ValaBasicBlockPrivate ValaBasicBlockPrivate;
 
42
 
 
43
#define VALA_TYPE_CODE_NODE (vala_code_node_get_type ())
 
44
#define VALA_CODE_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CODE_NODE, ValaCodeNode))
 
45
#define VALA_CODE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CODE_NODE, ValaCodeNodeClass))
 
46
#define VALA_IS_CODE_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CODE_NODE))
 
47
#define VALA_IS_CODE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CODE_NODE))
 
48
#define VALA_CODE_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CODE_NODE, ValaCodeNodeClass))
 
49
 
 
50
typedef struct _ValaCodeNode ValaCodeNode;
 
51
typedef struct _ValaCodeNodeClass ValaCodeNodeClass;
 
52
 
 
53
#define VALA_TYPE_PHI_FUNCTION (vala_phi_function_get_type ())
 
54
#define VALA_PHI_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_PHI_FUNCTION, ValaPhiFunction))
 
55
#define VALA_PHI_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_PHI_FUNCTION, ValaPhiFunctionClass))
 
56
#define VALA_IS_PHI_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_PHI_FUNCTION))
 
57
#define VALA_IS_PHI_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_PHI_FUNCTION))
 
58
#define VALA_PHI_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_PHI_FUNCTION, ValaPhiFunctionClass))
 
59
 
 
60
typedef struct _ValaPhiFunction ValaPhiFunction;
 
61
typedef struct _ValaPhiFunctionClass ValaPhiFunctionClass;
 
62
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
 
63
#define _vala_basic_block_unref0(var) ((var == NULL) ? NULL : (var = (vala_basic_block_unref (var), NULL)))
 
64
typedef struct _ValaParamSpecBasicBlock ValaParamSpecBasicBlock;
 
65
 
 
66
struct _ValaBasicBlock {
 
67
        GTypeInstance parent_instance;
 
68
        volatile int ref_count;
 
69
        ValaBasicBlockPrivate * priv;
 
70
};
 
71
 
 
72
struct _ValaBasicBlockClass {
 
73
        GTypeClass parent_class;
 
74
        void (*finalize) (ValaBasicBlock *self);
 
75
};
 
76
 
 
77
struct _ValaBasicBlockPrivate {
 
78
        ValaList* nodes;
 
79
        ValaList* predecessors;
 
80
        ValaList* successors;
 
81
        ValaBasicBlock* _parent;
 
82
        ValaList* children;
 
83
        ValaSet* df;
 
84
        ValaSet* phi_functions;
 
85
        gboolean _postorder_visited;
 
86
        gint _postorder_number;
 
87
};
 
88
 
 
89
struct _ValaParamSpecBasicBlock {
 
90
        GParamSpec parent_instance;
 
91
};
 
92
 
 
93
 
 
94
static gpointer vala_basic_block_parent_class = NULL;
 
95
 
 
96
gpointer vala_basic_block_ref (gpointer instance);
 
97
void vala_basic_block_unref (gpointer instance);
 
98
GParamSpec* vala_param_spec_basic_block (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
 
99
void vala_value_set_basic_block (GValue* value, gpointer v_object);
 
100
void vala_value_take_basic_block (GValue* value, gpointer v_object);
 
101
gpointer vala_value_get_basic_block (const GValue* value);
 
102
GType vala_basic_block_get_type (void) G_GNUC_CONST;
 
103
gpointer vala_code_node_ref (gpointer instance);
 
104
void vala_code_node_unref (gpointer instance);
 
105
GParamSpec* vala_param_spec_code_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
 
106
void vala_value_set_code_node (GValue* value, gpointer v_object);
 
107
void vala_value_take_code_node (GValue* value, gpointer v_object);
 
108
gpointer vala_value_get_code_node (const GValue* value);
 
109
GType vala_code_node_get_type (void) G_GNUC_CONST;
 
110
gpointer vala_phi_function_ref (gpointer instance);
 
111
void vala_phi_function_unref (gpointer instance);
 
112
GParamSpec* vala_param_spec_phi_function (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
 
113
void vala_value_set_phi_function (GValue* value, gpointer v_object);
 
114
void vala_value_take_phi_function (GValue* value, gpointer v_object);
 
115
gpointer vala_value_get_phi_function (const GValue* value);
 
116
GType vala_phi_function_get_type (void) G_GNUC_CONST;
 
117
#define VALA_BASIC_BLOCK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_BASIC_BLOCK, ValaBasicBlockPrivate))
 
118
enum  {
 
119
        VALA_BASIC_BLOCK_DUMMY_PROPERTY
 
120
};
 
121
ValaBasicBlock* vala_basic_block_new (void);
 
122
ValaBasicBlock* vala_basic_block_construct (GType object_type);
 
123
ValaBasicBlock* vala_basic_block_new_entry (void);
 
124
ValaBasicBlock* vala_basic_block_construct_entry (GType object_type);
 
125
ValaBasicBlock* vala_basic_block_new_exit (void);
 
126
ValaBasicBlock* vala_basic_block_construct_exit (GType object_type);
 
127
void vala_basic_block_add_node (ValaBasicBlock* self, ValaCodeNode* node);
 
128
ValaList* vala_basic_block_get_nodes (ValaBasicBlock* self);
 
129
void vala_basic_block_connect (ValaBasicBlock* self, ValaBasicBlock* target);
 
130
ValaList* vala_basic_block_get_predecessors (ValaBasicBlock* self);
 
131
ValaList* vala_basic_block_get_successors (ValaBasicBlock* self);
 
132
void vala_basic_block_add_child (ValaBasicBlock* self, ValaBasicBlock* block);
 
133
static void vala_basic_block_set_parent (ValaBasicBlock* self, ValaBasicBlock* value);
 
134
ValaList* vala_basic_block_get_children (ValaBasicBlock* self);
 
135
void vala_basic_block_add_dominator_frontier (ValaBasicBlock* self, ValaBasicBlock* block);
 
136
ValaSet* vala_basic_block_get_dominator_frontier (ValaBasicBlock* self);
 
137
void vala_basic_block_add_phi_function (ValaBasicBlock* self, ValaPhiFunction* phi);
 
138
ValaSet* vala_basic_block_get_phi_functions (ValaBasicBlock* self);
 
139
ValaBasicBlock* vala_basic_block_get_parent (ValaBasicBlock* self);
 
140
gboolean vala_basic_block_get_postorder_visited (ValaBasicBlock* self);
 
141
void vala_basic_block_set_postorder_visited (ValaBasicBlock* self, gboolean value);
 
142
gint vala_basic_block_get_postorder_number (ValaBasicBlock* self);
 
143
void vala_basic_block_set_postorder_number (ValaBasicBlock* self, gint value);
 
144
static void vala_basic_block_finalize (ValaBasicBlock* obj);
 
145
 
 
146
 
 
147
ValaBasicBlock* vala_basic_block_construct (GType object_type) {
 
148
        ValaBasicBlock* self = NULL;
 
149
        self = (ValaBasicBlock*) g_type_create_instance (object_type);
 
150
        return self;
 
151
}
 
152
 
 
153
 
 
154
ValaBasicBlock* vala_basic_block_new (void) {
 
155
        return vala_basic_block_construct (VALA_TYPE_BASIC_BLOCK);
 
156
}
 
157
 
 
158
 
 
159
ValaBasicBlock* vala_basic_block_construct_entry (GType object_type) {
 
160
        ValaBasicBlock* self = NULL;
 
161
        self = (ValaBasicBlock*) g_type_create_instance (object_type);
 
162
        return self;
 
163
}
 
164
 
 
165
 
 
166
ValaBasicBlock* vala_basic_block_new_entry (void) {
 
167
        return vala_basic_block_construct_entry (VALA_TYPE_BASIC_BLOCK);
 
168
}
 
169
 
 
170
 
 
171
ValaBasicBlock* vala_basic_block_construct_exit (GType object_type) {
 
172
        ValaBasicBlock* self = NULL;
 
173
        self = (ValaBasicBlock*) g_type_create_instance (object_type);
 
174
        return self;
 
175
}
 
176
 
 
177
 
 
178
ValaBasicBlock* vala_basic_block_new_exit (void) {
 
179
        return vala_basic_block_construct_exit (VALA_TYPE_BASIC_BLOCK);
 
180
}
 
181
 
 
182
 
 
183
void vala_basic_block_add_node (ValaBasicBlock* self, ValaCodeNode* node) {
 
184
        ValaList* _tmp0_;
 
185
        ValaCodeNode* _tmp1_;
 
186
        g_return_if_fail (self != NULL);
 
187
        g_return_if_fail (node != NULL);
 
188
        _tmp0_ = self->priv->nodes;
 
189
        _tmp1_ = node;
 
190
        vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_);
 
191
}
 
192
 
 
193
 
 
194
static gpointer _vala_iterable_ref0 (gpointer self) {
 
195
        return self ? vala_iterable_ref (self) : NULL;
 
196
}
 
197
 
 
198
 
 
199
ValaList* vala_basic_block_get_nodes (ValaBasicBlock* self) {
 
200
        ValaList* result = NULL;
 
201
        ValaList* _tmp0_;
 
202
        ValaList* _tmp1_;
 
203
        g_return_val_if_fail (self != NULL, NULL);
 
204
        _tmp0_ = self->priv->nodes;
 
205
        _tmp1_ = _vala_iterable_ref0 (_tmp0_);
 
206
        result = _tmp1_;
 
207
        return result;
 
208
}
 
209
 
 
210
 
 
211
void vala_basic_block_connect (ValaBasicBlock* self, ValaBasicBlock* target) {
 
212
        ValaList* _tmp0_;
 
213
        ValaBasicBlock* _tmp1_;
 
214
        gboolean _tmp2_ = FALSE;
 
215
        ValaBasicBlock* _tmp5_;
 
216
        ValaList* _tmp6_;
 
217
        gboolean _tmp7_ = FALSE;
 
218
        g_return_if_fail (self != NULL);
 
219
        g_return_if_fail (target != NULL);
 
220
        _tmp0_ = self->priv->successors;
 
221
        _tmp1_ = target;
 
222
        _tmp2_ = vala_collection_contains ((ValaCollection*) _tmp0_, _tmp1_);
 
223
        if (!_tmp2_) {
 
224
                ValaList* _tmp3_;
 
225
                ValaBasicBlock* _tmp4_;
 
226
                _tmp3_ = self->priv->successors;
 
227
                _tmp4_ = target;
 
228
                vala_collection_add ((ValaCollection*) _tmp3_, _tmp4_);
 
229
        }
 
230
        _tmp5_ = target;
 
231
        _tmp6_ = _tmp5_->priv->predecessors;
 
232
        _tmp7_ = vala_collection_contains ((ValaCollection*) _tmp6_, self);
 
233
        if (!_tmp7_) {
 
234
                ValaBasicBlock* _tmp8_;
 
235
                ValaList* _tmp9_;
 
236
                _tmp8_ = target;
 
237
                _tmp9_ = _tmp8_->priv->predecessors;
 
238
                vala_collection_add ((ValaCollection*) _tmp9_, self);
 
239
        }
 
240
}
 
241
 
 
242
 
 
243
ValaList* vala_basic_block_get_predecessors (ValaBasicBlock* self) {
 
244
        ValaList* result = NULL;
 
245
        ValaList* _tmp0_;
 
246
        ValaList* _tmp1_;
 
247
        g_return_val_if_fail (self != NULL, NULL);
 
248
        _tmp0_ = self->priv->predecessors;
 
249
        _tmp1_ = _vala_iterable_ref0 (_tmp0_);
 
250
        result = _tmp1_;
 
251
        return result;
 
252
}
 
253
 
 
254
 
 
255
ValaList* vala_basic_block_get_successors (ValaBasicBlock* self) {
 
256
        ValaList* result = NULL;
 
257
        ValaList* _tmp0_;
 
258
        ValaList* _tmp1_;
 
259
        g_return_val_if_fail (self != NULL, NULL);
 
260
        _tmp0_ = self->priv->successors;
 
261
        _tmp1_ = _vala_iterable_ref0 (_tmp0_);
 
262
        result = _tmp1_;
 
263
        return result;
 
264
}
 
265
 
 
266
 
 
267
void vala_basic_block_add_child (ValaBasicBlock* self, ValaBasicBlock* block) {
 
268
        ValaList* _tmp0_;
 
269
        ValaBasicBlock* _tmp1_;
 
270
        ValaBasicBlock* _tmp2_;
 
271
        g_return_if_fail (self != NULL);
 
272
        g_return_if_fail (block != NULL);
 
273
        _tmp0_ = self->priv->children;
 
274
        _tmp1_ = block;
 
275
        vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_);
 
276
        _tmp2_ = block;
 
277
        vala_basic_block_set_parent (_tmp2_, self);
 
278
}
 
279
 
 
280
 
 
281
ValaList* vala_basic_block_get_children (ValaBasicBlock* self) {
 
282
        ValaList* result = NULL;
 
283
        ValaList* _tmp0_;
 
284
        ValaList* _tmp1_;
 
285
        g_return_val_if_fail (self != NULL, NULL);
 
286
        _tmp0_ = self->priv->children;
 
287
        _tmp1_ = _vala_iterable_ref0 (_tmp0_);
 
288
        result = _tmp1_;
 
289
        return result;
 
290
}
 
291
 
 
292
 
 
293
void vala_basic_block_add_dominator_frontier (ValaBasicBlock* self, ValaBasicBlock* block) {
 
294
        ValaSet* _tmp0_;
 
295
        ValaBasicBlock* _tmp1_;
 
296
        g_return_if_fail (self != NULL);
 
297
        g_return_if_fail (block != NULL);
 
298
        _tmp0_ = self->priv->df;
 
299
        _tmp1_ = block;
 
300
        vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_);
 
301
}
 
302
 
 
303
 
 
304
ValaSet* vala_basic_block_get_dominator_frontier (ValaBasicBlock* self) {
 
305
        ValaSet* result = NULL;
 
306
        ValaSet* _tmp0_;
 
307
        ValaSet* _tmp1_;
 
308
        g_return_val_if_fail (self != NULL, NULL);
 
309
        _tmp0_ = self->priv->df;
 
310
        _tmp1_ = _vala_iterable_ref0 (_tmp0_);
 
311
        result = _tmp1_;
 
312
        return result;
 
313
}
 
314
 
 
315
 
 
316
void vala_basic_block_add_phi_function (ValaBasicBlock* self, ValaPhiFunction* phi) {
 
317
        ValaSet* _tmp0_;
 
318
        ValaPhiFunction* _tmp1_;
 
319
        g_return_if_fail (self != NULL);
 
320
        g_return_if_fail (phi != NULL);
 
321
        _tmp0_ = self->priv->phi_functions;
 
322
        _tmp1_ = phi;
 
323
        vala_collection_add ((ValaCollection*) _tmp0_, _tmp1_);
 
324
}
 
325
 
 
326
 
 
327
ValaSet* vala_basic_block_get_phi_functions (ValaBasicBlock* self) {
 
328
        ValaSet* result = NULL;
 
329
        ValaSet* _tmp0_;
 
330
        ValaSet* _tmp1_;
 
331
        g_return_val_if_fail (self != NULL, NULL);
 
332
        _tmp0_ = self->priv->phi_functions;
 
333
        _tmp1_ = _vala_iterable_ref0 (_tmp0_);
 
334
        result = _tmp1_;
 
335
        return result;
 
336
}
 
337
 
 
338
 
 
339
ValaBasicBlock* vala_basic_block_get_parent (ValaBasicBlock* self) {
 
340
        ValaBasicBlock* result;
 
341
        ValaBasicBlock* _tmp0_;
 
342
        g_return_val_if_fail (self != NULL, NULL);
 
343
        _tmp0_ = self->priv->_parent;
 
344
        result = _tmp0_;
 
345
        return result;
 
346
}
 
347
 
 
348
 
 
349
static gpointer _vala_basic_block_ref0 (gpointer self) {
 
350
        return self ? vala_basic_block_ref (self) : NULL;
 
351
}
 
352
 
 
353
 
 
354
static void vala_basic_block_set_parent (ValaBasicBlock* self, ValaBasicBlock* value) {
 
355
        ValaBasicBlock* _tmp0_;
 
356
        ValaBasicBlock* _tmp1_;
 
357
        g_return_if_fail (self != NULL);
 
358
        _tmp0_ = value;
 
359
        _tmp1_ = _vala_basic_block_ref0 (_tmp0_);
 
360
        _vala_basic_block_unref0 (self->priv->_parent);
 
361
        self->priv->_parent = _tmp1_;
 
362
}
 
363
 
 
364
 
 
365
gboolean vala_basic_block_get_postorder_visited (ValaBasicBlock* self) {
 
366
        gboolean result;
 
367
        gboolean _tmp0_;
 
368
        g_return_val_if_fail (self != NULL, FALSE);
 
369
        _tmp0_ = self->priv->_postorder_visited;
 
370
        result = _tmp0_;
 
371
        return result;
 
372
}
 
373
 
 
374
 
 
375
void vala_basic_block_set_postorder_visited (ValaBasicBlock* self, gboolean value) {
 
376
        gboolean _tmp0_;
 
377
        g_return_if_fail (self != NULL);
 
378
        _tmp0_ = value;
 
379
        self->priv->_postorder_visited = _tmp0_;
 
380
}
 
381
 
 
382
 
 
383
gint vala_basic_block_get_postorder_number (ValaBasicBlock* self) {
 
384
        gint result;
 
385
        gint _tmp0_;
 
386
        g_return_val_if_fail (self != NULL, 0);
 
387
        _tmp0_ = self->priv->_postorder_number;
 
388
        result = _tmp0_;
 
389
        return result;
 
390
}
 
391
 
 
392
 
 
393
void vala_basic_block_set_postorder_number (ValaBasicBlock* self, gint value) {
 
394
        gint _tmp0_;
 
395
        g_return_if_fail (self != NULL);
 
396
        _tmp0_ = value;
 
397
        self->priv->_postorder_number = _tmp0_;
 
398
}
 
399
 
 
400
 
 
401
static void vala_value_basic_block_init (GValue* value) {
 
402
        value->data[0].v_pointer = NULL;
 
403
}
 
404
 
 
405
 
 
406
static void vala_value_basic_block_free_value (GValue* value) {
 
407
        if (value->data[0].v_pointer) {
 
408
                vala_basic_block_unref (value->data[0].v_pointer);
 
409
        }
 
410
}
 
411
 
 
412
 
 
413
static void vala_value_basic_block_copy_value (const GValue* src_value, GValue* dest_value) {
 
414
        if (src_value->data[0].v_pointer) {
 
415
                dest_value->data[0].v_pointer = vala_basic_block_ref (src_value->data[0].v_pointer);
 
416
        } else {
 
417
                dest_value->data[0].v_pointer = NULL;
 
418
        }
 
419
}
 
420
 
 
421
 
 
422
static gpointer vala_value_basic_block_peek_pointer (const GValue* value) {
 
423
        return value->data[0].v_pointer;
 
424
}
 
425
 
 
426
 
 
427
static gchar* vala_value_basic_block_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
 
428
        if (collect_values[0].v_pointer) {
 
429
                ValaBasicBlock* object;
 
430
                object = collect_values[0].v_pointer;
 
431
                if (object->parent_instance.g_class == NULL) {
 
432
                        return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
 
433
                } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
 
434
                        return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
 
435
                }
 
436
                value->data[0].v_pointer = vala_basic_block_ref (object);
 
437
        } else {
 
438
                value->data[0].v_pointer = NULL;
 
439
        }
 
440
        return NULL;
 
441
}
 
442
 
 
443
 
 
444
static gchar* vala_value_basic_block_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
 
445
        ValaBasicBlock** object_p;
 
446
        object_p = collect_values[0].v_pointer;
 
447
        if (!object_p) {
 
448
                return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
 
449
        }
 
450
        if (!value->data[0].v_pointer) {
 
451
                *object_p = NULL;
 
452
        } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
 
453
                *object_p = value->data[0].v_pointer;
 
454
        } else {
 
455
                *object_p = vala_basic_block_ref (value->data[0].v_pointer);
 
456
        }
 
457
        return NULL;
 
458
}
 
459
 
 
460
 
 
461
GParamSpec* vala_param_spec_basic_block (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
 
462
        ValaParamSpecBasicBlock* spec;
 
463
        g_return_val_if_fail (g_type_is_a (object_type, VALA_TYPE_BASIC_BLOCK), NULL);
 
464
        spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
 
465
        G_PARAM_SPEC (spec)->value_type = object_type;
 
466
        return G_PARAM_SPEC (spec);
 
467
}
 
468
 
 
469
 
 
470
gpointer vala_value_get_basic_block (const GValue* value) {
 
471
        g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_TYPE_BASIC_BLOCK), NULL);
 
472
        return value->data[0].v_pointer;
 
473
}
 
474
 
 
475
 
 
476
void vala_value_set_basic_block (GValue* value, gpointer v_object) {
 
477
        ValaBasicBlock* old;
 
478
        g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_TYPE_BASIC_BLOCK));
 
479
        old = value->data[0].v_pointer;
 
480
        if (v_object) {
 
481
                g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALA_TYPE_BASIC_BLOCK));
 
482
                g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
 
483
                value->data[0].v_pointer = v_object;
 
484
                vala_basic_block_ref (value->data[0].v_pointer);
 
485
        } else {
 
486
                value->data[0].v_pointer = NULL;
 
487
        }
 
488
        if (old) {
 
489
                vala_basic_block_unref (old);
 
490
        }
 
491
}
 
492
 
 
493
 
 
494
void vala_value_take_basic_block (GValue* value, gpointer v_object) {
 
495
        ValaBasicBlock* old;
 
496
        g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_TYPE_BASIC_BLOCK));
 
497
        old = value->data[0].v_pointer;
 
498
        if (v_object) {
 
499
                g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALA_TYPE_BASIC_BLOCK));
 
500
                g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
 
501
                value->data[0].v_pointer = v_object;
 
502
        } else {
 
503
                value->data[0].v_pointer = NULL;
 
504
        }
 
505
        if (old) {
 
506
                vala_basic_block_unref (old);
 
507
        }
 
508
}
 
509
 
 
510
 
 
511
static void vala_basic_block_class_init (ValaBasicBlockClass * klass) {
 
512
        vala_basic_block_parent_class = g_type_class_peek_parent (klass);
 
513
        VALA_BASIC_BLOCK_CLASS (klass)->finalize = vala_basic_block_finalize;
 
514
        g_type_class_add_private (klass, sizeof (ValaBasicBlockPrivate));
 
515
}
 
516
 
 
517
 
 
518
static void vala_basic_block_instance_init (ValaBasicBlock * self) {
 
519
        GEqualFunc _tmp0_;
 
520
        ValaArrayList* _tmp1_;
 
521
        GEqualFunc _tmp2_;
 
522
        ValaArrayList* _tmp3_;
 
523
        GEqualFunc _tmp4_;
 
524
        ValaArrayList* _tmp5_;
 
525
        GEqualFunc _tmp6_;
 
526
        ValaArrayList* _tmp7_;
 
527
        GHashFunc _tmp8_;
 
528
        GEqualFunc _tmp9_;
 
529
        ValaHashSet* _tmp10_;
 
530
        GHashFunc _tmp11_;
 
531
        GEqualFunc _tmp12_;
 
532
        ValaHashSet* _tmp13_;
 
533
        self->priv = VALA_BASIC_BLOCK_GET_PRIVATE (self);
 
534
        _tmp0_ = g_direct_equal;
 
535
        _tmp1_ = vala_array_list_new (VALA_TYPE_CODE_NODE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp0_);
 
536
        self->priv->nodes = (ValaList*) _tmp1_;
 
537
        _tmp2_ = g_direct_equal;
 
538
        _tmp3_ = vala_array_list_new (VALA_TYPE_BASIC_BLOCK, NULL, NULL, _tmp2_);
 
539
        self->priv->predecessors = (ValaList*) _tmp3_;
 
540
        _tmp4_ = g_direct_equal;
 
541
        _tmp5_ = vala_array_list_new (VALA_TYPE_BASIC_BLOCK, (GBoxedCopyFunc) vala_basic_block_ref, vala_basic_block_unref, _tmp4_);
 
542
        self->priv->successors = (ValaList*) _tmp5_;
 
543
        _tmp6_ = g_direct_equal;
 
544
        _tmp7_ = vala_array_list_new (VALA_TYPE_BASIC_BLOCK, (GBoxedCopyFunc) vala_basic_block_ref, vala_basic_block_unref, _tmp6_);
 
545
        self->priv->children = (ValaList*) _tmp7_;
 
546
        _tmp8_ = g_direct_hash;
 
547
        _tmp9_ = g_direct_equal;
 
548
        _tmp10_ = vala_hash_set_new (VALA_TYPE_BASIC_BLOCK, (GBoxedCopyFunc) vala_basic_block_ref, vala_basic_block_unref, _tmp8_, _tmp9_);
 
549
        self->priv->df = (ValaSet*) _tmp10_;
 
550
        _tmp11_ = g_direct_hash;
 
551
        _tmp12_ = g_direct_equal;
 
552
        _tmp13_ = vala_hash_set_new (VALA_TYPE_PHI_FUNCTION, (GBoxedCopyFunc) vala_phi_function_ref, vala_phi_function_unref, _tmp11_, _tmp12_);
 
553
        self->priv->phi_functions = (ValaSet*) _tmp13_;
 
554
        self->ref_count = 1;
 
555
}
 
556
 
 
557
 
 
558
static void vala_basic_block_finalize (ValaBasicBlock* obj) {
 
559
        ValaBasicBlock * self;
 
560
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_BASIC_BLOCK, ValaBasicBlock);
 
561
        _vala_iterable_unref0 (self->priv->nodes);
 
562
        _vala_iterable_unref0 (self->priv->predecessors);
 
563
        _vala_iterable_unref0 (self->priv->successors);
 
564
        _vala_basic_block_unref0 (self->priv->_parent);
 
565
        _vala_iterable_unref0 (self->priv->children);
 
566
        _vala_iterable_unref0 (self->priv->df);
 
567
        _vala_iterable_unref0 (self->priv->phi_functions);
 
568
}
 
569
 
 
570
 
 
571
/**
 
572
 * Represents a basic block, i.e. a straight-line piece of code without any
 
573
 * jumps or jump targets.
 
574
 */
 
575
GType vala_basic_block_get_type (void) {
 
576
        static volatile gsize vala_basic_block_type_id__volatile = 0;
 
577
        if (g_once_init_enter (&vala_basic_block_type_id__volatile)) {
 
578
                static const GTypeValueTable g_define_type_value_table = { vala_value_basic_block_init, vala_value_basic_block_free_value, vala_value_basic_block_copy_value, vala_value_basic_block_peek_pointer, "p", vala_value_basic_block_collect_value, "p", vala_value_basic_block_lcopy_value };
 
579
                static const GTypeInfo g_define_type_info = { sizeof (ValaBasicBlockClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_basic_block_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaBasicBlock), 0, (GInstanceInitFunc) vala_basic_block_instance_init, &g_define_type_value_table };
 
580
                static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
 
581
                GType vala_basic_block_type_id;
 
582
                vala_basic_block_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ValaBasicBlock", &g_define_type_info, &g_define_type_fundamental_info, 0);
 
583
                g_once_init_leave (&vala_basic_block_type_id__volatile, vala_basic_block_type_id);
 
584
        }
 
585
        return vala_basic_block_type_id__volatile;
 
586
}
 
587
 
 
588
 
 
589
gpointer vala_basic_block_ref (gpointer instance) {
 
590
        ValaBasicBlock* self;
 
591
        self = instance;
 
592
        g_atomic_int_inc (&self->ref_count);
 
593
        return instance;
 
594
}
 
595
 
 
596
 
 
597
void vala_basic_block_unref (gpointer instance) {
 
598
        ValaBasicBlock* self;
 
599
        self = instance;
 
600
        if (g_atomic_int_dec_and_test (&self->ref_count)) {
 
601
                VALA_BASIC_BLOCK_GET_CLASS (self)->finalize (self);
 
602
                g_type_free_instance ((GTypeInstance *) self);
 
603
        }
 
604
}
 
605
 
 
606
 
 
607