92
88
* @param param a formal parameter
94
void vala_signal_add_parameter (ValaSignal* self, ValaFormalParameter* param)
90
void vala_signal_add_parameter (ValaSignal* self, ValaFormalParameter* param) {
96
91
g_return_if_fail (VALA_IS_SIGNAL (self));
97
92
g_return_if_fail (VALA_IS_FORMAL_PARAMETER (param));
98
93
gee_collection_add (GEE_COLLECTION (self->priv->parameters), param);
99
vala_scope_add (vala_symbol_get_scope (((ValaSymbol*) self)), vala_symbol_get_name (((ValaSymbol*) param)), VALA_SYMBOL (param));
94
vala_scope_add (vala_symbol_get_scope (VALA_SYMBOL (self)), vala_symbol_get_name (VALA_SYMBOL (param)), VALA_SYMBOL (param));
103
static GeeCollection* vala_signal_real_get_parameters (ValaInvokable* base)
98
static GeeCollection* vala_signal_real_get_parameters (ValaInvokable* base) {
105
99
ValaSignal * self;
106
self = ((ValaSignal*) base);
100
self = VALA_SIGNAL (base);
107
101
return GEE_COLLECTION (gee_read_only_collection_new (g_object_ref, g_object_unref, GEE_COLLECTION (self->priv->parameters)));
111
static ValaTypeReference* vala_signal_real_get_return_type (ValaInvokable* base)
105
static ValaTypeReference* vala_signal_real_get_return_type (ValaInvokable* base) {
113
106
ValaSignal * self;
114
self = ((ValaSignal*) base);
107
self = VALA_SIGNAL (base);
115
108
return g_object_ref (vala_signal_get_return_type (self));
119
static gboolean vala_signal_real_is_invokable (ValaInvokable* base)
112
static gboolean vala_signal_real_is_invokable (ValaInvokable* base) {
121
113
ValaSignal * self;
122
self = ((ValaSignal*) base);
114
self = VALA_SIGNAL (base);
130
122
* @return callback
132
ValaCallback* vala_signal_get_callback (ValaSignal* self)
134
ValaCallback* __temp4;
124
ValaCallback* vala_signal_get_callback (ValaSignal* self) {
135
126
g_return_val_if_fail (VALA_IS_SIGNAL (self), NULL);
136
127
if (self->priv->generated_callback == NULL) {
137
ValaCallback* __temp3;
138
129
ValaTypeReference* sender_type;
139
130
ValaFormalParameter* sender_param;
141
self->priv->generated_callback = (__temp3 = vala_callback_new (NULL, vala_signal_get_return_type (self), NULL), (self->priv->generated_callback == NULL ? NULL : (self->priv->generated_callback = (g_object_unref (self->priv->generated_callback), NULL))), __temp3);
132
self->priv->generated_callback = (_tmp0 = vala_callback_new (NULL, vala_signal_get_return_type (self), NULL), (self->priv->generated_callback == NULL ? NULL : (self->priv->generated_callback = (g_object_unref (self->priv->generated_callback), NULL))), _tmp0);
142
133
vala_callback_set_instance (self->priv->generated_callback, TRUE);
143
134
sender_type = vala_type_reference_new ();
144
vala_type_reference_set_data_type (sender_type, VALA_DATA_TYPE (vala_symbol_get_parent_symbol (((ValaSymbol*) self))));
135
vala_type_reference_set_data_type (sender_type, VALA_DATA_TYPE (vala_symbol_get_parent_symbol (VALA_SYMBOL (self))));
145
136
sender_param = vala_formal_parameter_new ("sender", sender_type, NULL);
146
137
vala_callback_add_parameter (self->priv->generated_callback, sender_param);
173
164
* @return the name to be used in C code
175
char* vala_signal_get_cname (ValaSignal* self)
166
char* vala_signal_get_cname (ValaSignal* self) {
178
168
g_return_val_if_fail (VALA_IS_SIGNAL (self), NULL);
179
169
if (self->priv->cname == NULL) {
184
self->priv->cname = (__temp7 = (__temp6 = vala_symbol_get_name (((ValaSymbol*) self)), (__temp6 == NULL ? NULL : g_strdup (__temp6))), (self->priv->cname = (g_free (self->priv->cname), NULL)), __temp7);
174
self->priv->cname = (_tmp1 = (_tmp0 = vala_symbol_get_name (VALA_SYMBOL (self)), (_tmp0 == NULL ? NULL : g_strdup (_tmp0))), (self->priv->cname = (g_free (self->priv->cname), NULL)), _tmp1);
187
return (__temp8 = self->priv->cname, (__temp8 == NULL ? NULL : g_strdup (__temp8)));
177
return (_tmp2 = self->priv->cname, (_tmp2 == NULL ? NULL : g_strdup (_tmp2)));
191
void vala_signal_set_cname (ValaSignal* self, const char* cname)
194
const char* __temp10;
181
void vala_signal_set_cname (ValaSignal* self, const char* cname) {
195
184
g_return_if_fail (VALA_IS_SIGNAL (self));
198
self->priv->cname = (__temp11 = (__temp10 = cname, (__temp10 == NULL ? NULL : g_strdup (__temp10))), (self->priv->cname = (g_free (self->priv->cname), NULL)), __temp11);
187
self->priv->cname = (_tmp1 = (_tmp0 = cname, (_tmp0 == NULL ? NULL : g_strdup (_tmp0))), (self->priv->cname = (g_free (self->priv->cname), NULL)), _tmp1);
205
194
* @return string literal to be used in C code
207
ValaCCodeConstant* vala_signal_get_canonical_cconstant (ValaSignal* self)
196
ValaCCodeConstant* vala_signal_get_canonical_cconstant (ValaSignal* self) {
210
const char* __temp12;
212
ValaCCodeConstant* __temp15;
200
ValaCCodeConstant* _tmp3;
213
201
g_return_val_if_fail (VALA_IS_SIGNAL (self), NULL);
214
202
str = g_string_new ("\"");
216
i = (__temp12 = vala_symbol_get_name (((ValaSymbol*) self)), (__temp12 == NULL ? NULL : g_strdup (__temp12)));
204
i = (_tmp0 = vala_symbol_get_name (VALA_SYMBOL (self)), (_tmp0 == NULL ? NULL : g_strdup (_tmp0)));
217
205
while (g_utf8_strlen (i, -1) > 0) {
220
const char* __temp13;
221
209
c = g_utf8_get_char (i);
223
211
g_string_append_c (str, '-');
225
213
g_string_append_unichar (str, c);
229
i = (__temp14 = (__temp13 = g_utf8_next_char (i), (__temp13 == NULL ? NULL : g_strdup (__temp13))), (i = (g_free (i), NULL)), __temp14);
217
i = (_tmp2 = (_tmp1 = g_utf8_next_char (i), (_tmp1 == NULL ? NULL : g_strdup (_tmp1))), (i = (g_free (i), NULL)), _tmp2);
231
219
g_string_append_c (str, '"');
233
return (__temp15 = vala_ccode_constant_new (str->str), (str == NULL ? NULL : (str = (g_string_free (str, TRUE), NULL))), (i = (g_free (i), NULL)), __temp15);
221
return (_tmp3 = vala_ccode_constant_new (str->str), (str == NULL ? NULL : (str = (g_string_free (str, TRUE), NULL))), (i = (g_free (i), NULL)), _tmp3);
234
222
(str == NULL ? NULL : (str = (g_string_free (str, TRUE), NULL)));
235
223
(i = (g_free (i), NULL));
239
static void vala_signal_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor)
227
static void vala_signal_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor) {
241
228
ValaSignal * self;
242
self = ((ValaSignal*) base);
229
self = VALA_SIGNAL (base);
243
230
g_return_if_fail (VALA_IS_CODE_VISITOR (visitor));
244
231
vala_code_visitor_visit_member (visitor, VALA_MEMBER (self));
245
232
vala_code_visitor_visit_signal (visitor, self);
249
static void vala_signal_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor)
236
static void vala_signal_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor) {
251
237
ValaSignal * self;
252
self = ((ValaSignal*) base);
238
self = VALA_SIGNAL (base);
253
239
g_return_if_fail (VALA_IS_CODE_VISITOR (visitor));
254
240
vala_code_node_accept (VALA_CODE_NODE (vala_signal_get_return_type (self)), visitor);
274
260
* Process all associated attributes.
276
void vala_signal_process_attributes (ValaSignal* self)
262
void vala_signal_process_attributes (ValaSignal* self) {
278
263
g_return_if_fail (VALA_IS_SIGNAL (self));
280
265
GList* a_collection;
282
a_collection = ((ValaCodeNode*) self)->attributes;
267
a_collection = VALA_CODE_NODE (self)->attributes;
283
268
for (a_it = a_collection; a_it != NULL; a_it = a_it->next) {
284
ValaAttribute* __temp16;
269
ValaAttribute* _tmp0;
285
270
ValaAttribute* a;
287
a = (__temp16 = a_it->data, (__temp16 == NULL ? NULL : g_object_ref (__temp16)));
272
a = (_tmp0 = a_it->data, (_tmp0 == NULL ? NULL : g_object_ref (_tmp0)));
289
274
if (g_utf8_collate (vala_attribute_get_name (a), "HasEmitter") == 0) {
290
275
vala_signal_set_has_emitter (self, TRUE);
299
static gboolean vala_signal_real_get_lock_used (ValaLockable* base)
284
static gboolean vala_signal_real_get_lock_used (ValaLockable* base) {
301
285
ValaSignal * self;
302
self = ((ValaSignal*) base);
286
self = VALA_SIGNAL (base);
303
287
return self->priv->lock_used;
307
static void vala_signal_real_set_lock_used (ValaLockable* base, gboolean used)
291
static void vala_signal_real_set_lock_used (ValaLockable* base, gboolean used) {
309
292
ValaSignal * self;
310
self = ((ValaSignal*) base);
293
self = VALA_SIGNAL (base);
311
294
self->priv->lock_used = used;
315
ValaTypeReference* vala_signal_get_return_type (ValaSignal* self)
298
ValaTypeReference* vala_signal_get_return_type (ValaSignal* self) {
317
299
g_return_val_if_fail (VALA_IS_SIGNAL (self), NULL);
318
300
return self->priv->_return_type;
322
void vala_signal_set_return_type (ValaSignal* self, ValaTypeReference* value)
324
ValaTypeReference* __temp19;
325
g_return_if_fail (VALA_IS_SIGNAL (self));
327
self->priv->_return_type = (__temp19 = g_object_ref (value), (self->priv->_return_type == NULL ? NULL : (self->priv->_return_type = (g_object_unref (self->priv->_return_type), NULL))), __temp19);
331
ValaMemberAccessibility vala_signal_get_access (ValaSignal* self)
333
g_return_val_if_fail (VALA_IS_SIGNAL (self), 0);
334
return self->priv->_access;
338
void vala_signal_set_access (ValaSignal* self, ValaMemberAccessibility value)
340
g_return_if_fail (VALA_IS_SIGNAL (self));
341
self->priv->_access = value;
345
gboolean vala_signal_get_has_emitter (ValaSignal* self)
304
void vala_signal_set_return_type (ValaSignal* self, ValaTypeReference* value) {
305
ValaTypeReference* _tmp1;
306
g_return_if_fail (VALA_IS_SIGNAL (self));
308
self->priv->_return_type = (_tmp1 = g_object_ref (value), (self->priv->_return_type == NULL ? NULL : (self->priv->_return_type = (g_object_unref (self->priv->_return_type), NULL))), _tmp1);
312
gboolean vala_signal_get_has_emitter (ValaSignal* self) {
347
313
g_return_val_if_fail (VALA_IS_SIGNAL (self), FALSE);
348
314
return self->priv->_has_emitter;
352
void vala_signal_set_has_emitter (ValaSignal* self, gboolean value)
318
void vala_signal_set_has_emitter (ValaSignal* self, gboolean value) {
354
319
g_return_if_fail (VALA_IS_SIGNAL (self));
355
320
self->priv->_has_emitter = value;
359
static void vala_signal_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec)
324
static void vala_signal_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
361
325
ValaSignal * self;
362
326
self = VALA_SIGNAL (object);
363
327
switch (property_id) {
364
328
case VALA_SIGNAL_RETURN_TYPE:
365
329
g_value_set_object (value, vala_signal_get_return_type (self));
367
case VALA_SIGNAL_ACCESS:
368
g_value_set_int (value, vala_signal_get_access (self));
370
331
case VALA_SIGNAL_HAS_EMITTER:
371
332
g_value_set_boolean (value, vala_signal_get_has_emitter (self));
335
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
377
static void vala_signal_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec)
341
static void vala_signal_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
379
342
ValaSignal * self;
380
343
self = VALA_SIGNAL (object);
381
344
switch (property_id) {
382
345
case VALA_SIGNAL_RETURN_TYPE:
383
346
vala_signal_set_return_type (self, g_value_get_object (value));
385
case VALA_SIGNAL_ACCESS:
386
vala_signal_set_access (self, g_value_get_int (value));
388
348
case VALA_SIGNAL_HAS_EMITTER:
389
349
vala_signal_set_has_emitter (self, g_value_get_boolean (value));
352
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
395
static void vala_signal_class_init (ValaSignalClass * klass)
358
static void vala_signal_class_init (ValaSignalClass * klass) {
397
359
vala_signal_parent_class = g_type_class_peek_parent (klass);
398
360
g_type_class_add_private (klass, sizeof (ValaSignalPrivate));
399
361
G_OBJECT_CLASS (klass)->get_property = vala_signal_get_property;
401
363
G_OBJECT_CLASS (klass)->dispose = vala_signal_dispose;
402
364
VALA_CODE_NODE_CLASS (klass)->accept = vala_signal_real_accept;
403
365
VALA_CODE_NODE_CLASS (klass)->accept_children = vala_signal_real_accept_children;
404
g_object_class_install_property (G_OBJECT_CLASS (klass), VALA_SIGNAL_RETURN_TYPE, g_param_spec_object ("return-type", "foo", "bar", VALA_TYPE_TYPE_REFERENCE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
405
g_object_class_install_property (G_OBJECT_CLASS (klass), VALA_SIGNAL_ACCESS, g_param_spec_int ("access", "foo", "bar", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
406
g_object_class_install_property (G_OBJECT_CLASS (klass), VALA_SIGNAL_HAS_EMITTER, g_param_spec_boolean ("has-emitter", "foo", "bar", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
366
g_object_class_install_property (G_OBJECT_CLASS (klass), VALA_SIGNAL_RETURN_TYPE, g_param_spec_object ("return-type", "return-type", "return-type", VALA_TYPE_TYPE_REFERENCE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
367
g_object_class_install_property (G_OBJECT_CLASS (klass), VALA_SIGNAL_HAS_EMITTER, g_param_spec_boolean ("has-emitter", "has-emitter", "has-emitter", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
410
static void vala_signal_vala_invokable_interface_init (ValaInvokableIface * iface)
371
static void vala_signal_vala_invokable_interface_init (ValaInvokableIface * iface) {
412
372
vala_signal_vala_invokable_parent_iface = g_type_interface_peek_parent (iface);
413
373
iface->get_parameters = vala_signal_real_get_parameters;
414
374
iface->get_return_type = vala_signal_real_get_return_type;
419
static void vala_signal_vala_lockable_interface_init (ValaLockableIface * iface)
379
static void vala_signal_vala_lockable_interface_init (ValaLockableIface * iface) {
421
380
vala_signal_vala_lockable_parent_iface = g_type_interface_peek_parent (iface);
422
381
iface->get_lock_used = vala_signal_real_get_lock_used;
423
382
iface->set_lock_used = vala_signal_real_set_lock_used;
427
static void vala_signal_init (ValaSignal * self)
386
static void vala_signal_init (ValaSignal * self) {
429
387
self->priv = VALA_SIGNAL_GET_PRIVATE (self);
430
388
self->priv->parameters = GEE_LIST (gee_array_list_new (g_object_ref, g_object_unref, g_direct_equal));
431
389
self->priv->lock_used = FALSE;
435
static void vala_signal_dispose (GObject * obj)
393
static void vala_signal_dispose (GObject * obj) {
437
394
ValaSignal * self;
438
ValaSignalClass * klass;
439
GObjectClass * parent_class;
440
395
self = VALA_SIGNAL (obj);
441
396
(self->priv->_return_type == NULL ? NULL : (self->priv->_return_type = (g_object_unref (self->priv->_return_type), NULL)));
442
397
(self->priv->parameters == NULL ? NULL : (self->priv->parameters = (g_object_unref (self->priv->parameters), NULL)));
443
398
(self->priv->generated_callback == NULL ? NULL : (self->priv->generated_callback = (g_object_unref (self->priv->generated_callback), NULL)));
444
399
(self->priv->cname = (g_free (self->priv->cname), NULL));
445
klass = VALA_SIGNAL_CLASS (g_type_class_peek (VALA_TYPE_SIGNAL));
446
parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass));
447
parent_class->dispose (obj);
400
G_OBJECT_CLASS (vala_signal_parent_class)->dispose (obj);
451
GType vala_signal_get_type (void)
404
GType vala_signal_get_type (void) {
453
405
static GType vala_signal_type_id = 0;
454
406
if (G_UNLIKELY (vala_signal_type_id == 0)) {
455
407
static const GTypeInfo g_define_type_info = { sizeof (ValaSignalClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_signal_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaSignal), 0, (GInstanceInitFunc) vala_signal_init };