20
20
* Jürg Billeter <j@bitron.ch>
23
#include "valainterface.h"
23
#include <vala/valainterface.h>
24
24
#include <gee/arraylist.h>
25
25
#include <gee/list.h>
26
26
#include <gee/readonlycollection.h>
27
27
#include <vala/valasourcereference.h>
28
28
#include <vala/valasymbol.h>
29
29
#include <vala/valatypeparameter.h>
30
#include <vala/valainterface.h>
31
30
#include <vala/valascope.h>
32
31
#include <vala/valatypereference.h>
33
32
#include <vala/valamethod.h>
104
106
* @param p a type parameter
106
void vala_interface_add_type_parameter (ValaInterface* self, ValaTypeParameter* p)
108
void vala_interface_add_type_parameter (ValaInterface* self, ValaTypeParameter* p) {
108
109
g_return_if_fail (VALA_IS_INTERFACE (self));
109
110
g_return_if_fail (VALA_IS_TYPE_PARAMETER (p));
110
111
gee_collection_add (GEE_COLLECTION (self->priv->type_parameters), p);
111
112
p->type = VALA_DATA_TYPE (self);
112
vala_scope_add (vala_symbol_get_scope (((ValaSymbol*) self)), vala_symbol_get_name (((ValaSymbol*) p)), VALA_SYMBOL (p));
113
vala_scope_add (vala_symbol_get_scope (VALA_SYMBOL (self)), vala_symbol_get_name (VALA_SYMBOL (p)), VALA_SYMBOL (p));
171
168
* @param m a method
173
void vala_interface_add_method (ValaInterface* self, ValaMethod* m)
170
void vala_interface_add_method (ValaInterface* self, ValaMethod* m) {
175
171
g_return_if_fail (VALA_IS_INTERFACE (self));
176
172
g_return_if_fail (VALA_IS_METHOD (m));
177
173
if (VALA_IS_CREATION_METHOD (m)) {
178
vala_report_error (vala_code_node_get_source_reference (((ValaCodeNode*) m)), "construction methods may only be declared within classes and structs");
174
vala_report_error (vala_code_node_get_source_reference (VALA_CODE_NODE (m)), "construction methods may only be declared within classes and structs");
179
175
vala_code_node_set_error (VALA_CODE_NODE (m), TRUE);
182
178
if (vala_method_get_instance (m)) {
183
ValaFormalParameter* __temp3;
184
ValaTypeReference* __temp2;
187
vala_method_set_this_parameter (m, (__temp3 = vala_formal_parameter_new ("this", (__temp2 = vala_type_reference_new ()), NULL)));
188
(__temp3 == NULL ? NULL : (__temp3 = (g_object_unref (__temp3), NULL)));
189
(__temp2 == NULL ? NULL : (__temp2 = (g_object_unref (__temp2), NULL)));
179
ValaFormalParameter* _tmp1;
180
ValaTypeReference* _tmp0;
183
vala_method_set_this_parameter (m, (_tmp1 = vala_formal_parameter_new ("this", (_tmp0 = vala_type_reference_new ()), NULL)));
184
(_tmp1 == NULL ? NULL : (_tmp1 = (g_object_unref (_tmp1), NULL)));
185
(_tmp0 == NULL ? NULL : (_tmp0 = (g_object_unref (_tmp0), NULL)));
190
186
vala_type_reference_set_data_type (vala_formal_parameter_get_type_reference (vala_method_get_this_parameter (m)), VALA_DATA_TYPE (self));
191
vala_scope_add (vala_symbol_get_scope (((ValaSymbol*) m)), vala_symbol_get_name (((ValaSymbol*) vala_method_get_this_parameter (m))), VALA_SYMBOL (vala_method_get_this_parameter (m)));
187
vala_scope_add (vala_symbol_get_scope (VALA_SYMBOL (m)), vala_symbol_get_name (VALA_SYMBOL (vala_method_get_this_parameter (m))), VALA_SYMBOL (vala_method_get_this_parameter (m)));
193
189
gee_collection_add (GEE_COLLECTION (self->priv->methods), m);
194
vala_scope_add (vala_symbol_get_scope (((ValaSymbol*) self)), vala_symbol_get_name (((ValaSymbol*) m)), VALA_SYMBOL (m));
190
vala_scope_add (vala_symbol_get_scope (VALA_SYMBOL (self)), vala_symbol_get_name (VALA_SYMBOL (m)), VALA_SYMBOL (m));
214
209
* @param f a field
216
void vala_interface_add_field (ValaInterface* self, ValaField* f)
211
void vala_interface_add_field (ValaInterface* self, ValaField* f) {
218
212
g_return_if_fail (VALA_IS_INTERFACE (self));
219
213
g_return_if_fail (VALA_IS_FIELD (f));
220
214
/* non_null fields not yet supported due to initialization issues*/
221
215
vala_type_reference_set_non_null (vala_field_get_type_reference (f), FALSE);
222
216
gee_collection_add (GEE_COLLECTION (self->priv->fields), f);
223
vala_scope_add (vala_symbol_get_scope (((ValaSymbol*) self)), vala_symbol_get_name (((ValaSymbol*) f)), VALA_SYMBOL (f));
217
vala_scope_add (vala_symbol_get_scope (VALA_SYMBOL (self)), vala_symbol_get_name (VALA_SYMBOL (f)), VALA_SYMBOL (f));
242
235
* @param prop a property
244
void vala_interface_add_property (ValaInterface* self, ValaProperty* prop)
237
void vala_interface_add_property (ValaInterface* self, ValaProperty* prop) {
246
238
g_return_if_fail (VALA_IS_INTERFACE (self));
247
239
g_return_if_fail (VALA_IS_PROPERTY (prop));
248
240
gee_collection_add (GEE_COLLECTION (self->priv->properties), prop);
249
vala_scope_add (vala_symbol_get_scope (((ValaSymbol*) self)), vala_symbol_get_name (((ValaSymbol*) prop)), VALA_SYMBOL (prop));
241
vala_scope_add (vala_symbol_get_scope (VALA_SYMBOL (self)), vala_symbol_get_name (VALA_SYMBOL (prop)), VALA_SYMBOL (prop));
268
259
* @param sig a signal
270
void vala_interface_add_signal (ValaInterface* self, ValaSignal* sig)
261
void vala_interface_add_signal (ValaInterface* self, ValaSignal* sig) {
272
262
g_return_if_fail (VALA_IS_INTERFACE (self));
273
263
g_return_if_fail (VALA_IS_SIGNAL (sig));
274
264
gee_collection_add (GEE_COLLECTION (self->priv->signals), sig);
275
vala_scope_add (vala_symbol_get_scope (((ValaSymbol*) self)), vala_symbol_get_name (((ValaSymbol*) sig)), VALA_SYMBOL (sig));
265
vala_scope_add (vala_symbol_get_scope (VALA_SYMBOL (self)), vala_symbol_get_name (VALA_SYMBOL (sig)), VALA_SYMBOL (sig));
282
272
* @return list of signals
284
GeeCollection* vala_interface_get_signals (ValaInterface* self)
274
GeeCollection* vala_interface_get_signals (ValaInterface* self) {
286
275
g_return_val_if_fail (VALA_IS_INTERFACE (self), NULL);
287
276
return GEE_COLLECTION (gee_read_only_collection_new (g_object_ref, g_object_unref, GEE_COLLECTION (self->priv->signals)));
291
static char* vala_interface_real_get_cname (ValaDataType* base, gboolean const_type)
280
static char* vala_interface_real_get_cname (ValaDataType* base, gboolean const_type) {
293
281
ValaInterface * self;
294
const char* __temp10;
295
self = ((ValaInterface*) base);
283
self = VALA_INTERFACE (base);
296
284
if (self->priv->cname == NULL) {
301
self->priv->cname = (__temp9 = g_strdup_printf ("%s%s", (__temp8 = vala_symbol_get_cprefix (vala_symbol_get_parent_symbol (((ValaSymbol*) self)))), vala_symbol_get_name (((ValaSymbol*) self))), (self->priv->cname = (g_free (self->priv->cname), NULL)), __temp9);
302
(__temp8 = (g_free (__temp8), NULL));
289
self->priv->cname = (_tmp1 = g_strdup_printf ("%s%s", (_tmp0 = vala_symbol_get_cprefix (vala_symbol_get_parent_symbol (VALA_SYMBOL (self)))), vala_symbol_get_name (VALA_SYMBOL (self))), (self->priv->cname = (g_free (self->priv->cname), NULL)), _tmp1);
290
(_tmp0 = (g_free (_tmp0), NULL));
305
return (__temp10 = self->priv->cname, (__temp10 == NULL ? NULL : g_strdup (__temp10)));
293
return (_tmp2 = self->priv->cname, (_tmp2 == NULL ? NULL : g_strdup (_tmp2)));
313
301
* @return the suffix to be used in C code
315
char* vala_interface_get_lower_case_csuffix (ValaInterface* self)
317
const char* __temp13;
303
char* vala_interface_get_lower_case_csuffix (ValaInterface* self) {
318
305
g_return_val_if_fail (VALA_IS_INTERFACE (self), NULL);
319
306
if (self->priv->lower_case_csuffix == NULL) {
322
self->priv->lower_case_csuffix = (__temp12 = vala_symbol_camel_case_to_lower_case (vala_symbol_get_name (((ValaSymbol*) self))), (self->priv->lower_case_csuffix = (g_free (self->priv->lower_case_csuffix), NULL)), __temp12);
309
self->priv->lower_case_csuffix = (_tmp0 = vala_symbol_camel_case_to_lower_case (vala_symbol_get_name (VALA_SYMBOL (self))), (self->priv->lower_case_csuffix = (g_free (self->priv->lower_case_csuffix), NULL)), _tmp0);
325
return (__temp13 = self->priv->lower_case_csuffix, (__temp13 == NULL ? NULL : g_strdup (__temp13)));
312
return (_tmp1 = self->priv->lower_case_csuffix, (_tmp1 == NULL ? NULL : g_strdup (_tmp1)));
333
320
* @param csuffix the suffix to be used in C code
335
void vala_interface_set_lower_case_csuffix (ValaInterface* self, const char* csuffix)
322
void vala_interface_set_lower_case_csuffix (ValaInterface* self, const char* csuffix) {
338
324
g_return_if_fail (VALA_IS_INTERFACE (self));
339
325
g_return_if_fail (csuffix != NULL);
341
self->priv->lower_case_csuffix = (__temp15 = g_strdup (csuffix), (self->priv->lower_case_csuffix = (g_free (self->priv->lower_case_csuffix), NULL)), __temp15);
327
self->priv->lower_case_csuffix = (_tmp0 = g_strdup (csuffix), (self->priv->lower_case_csuffix = (g_free (self->priv->lower_case_csuffix), NULL)), _tmp0);
345
static char* vala_interface_real_get_lower_case_cname (ValaSymbol* base, const char* infix)
331
static char* vala_interface_real_get_lower_case_cname (ValaSymbol* base, const char* infix) {
347
332
ValaInterface * self;
351
self = ((ValaInterface*) base);
336
self = VALA_INTERFACE (base);
352
337
if (infix == NULL) {
358
return (__temp18 = g_strdup_printf ("%s%s%s", (__temp16 = vala_symbol_get_lower_case_cprefix (vala_symbol_get_parent_symbol (((ValaSymbol*) self)))), infix, (__temp17 = vala_interface_get_lower_case_csuffix (self))), (__temp17 = (g_free (__temp17), NULL)), (__temp16 = (g_free (__temp16), NULL)), __temp18);
362
static char* vala_interface_real_get_lower_case_cprefix (ValaSymbol* base)
364
ValaInterface * self;
367
self = ((ValaInterface*) base);
370
return (__temp21 = g_strdup_printf ("%s_", (__temp20 = vala_symbol_get_lower_case_cname (VALA_SYMBOL (self), NULL))), (__temp20 = (g_free (__temp20), NULL)), __temp21);
374
static char* vala_interface_real_get_upper_case_cname (ValaDataType* base, const char* infix)
376
ValaInterface * self;
379
self = ((ValaInterface*) base);
382
return (__temp24 = g_utf8_strup ((__temp23 = vala_symbol_get_lower_case_cname (VALA_SYMBOL (self), infix)), -1), (__temp23 = (g_free (__temp23), NULL)), __temp24);
386
static void vala_interface_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor)
388
ValaInterface * self;
389
self = ((ValaInterface*) base);
343
return (_tmp2 = g_strdup_printf ("%s%s%s", (_tmp0 = vala_symbol_get_lower_case_cprefix (vala_symbol_get_parent_symbol (VALA_SYMBOL (self)))), infix, (_tmp1 = vala_interface_get_lower_case_csuffix (self))), (_tmp1 = (g_free (_tmp1), NULL)), (_tmp0 = (g_free (_tmp0), NULL)), _tmp2);
347
static char* vala_interface_real_get_lower_case_cprefix (ValaSymbol* base) {
348
ValaInterface * self;
351
self = VALA_INTERFACE (base);
354
return (_tmp1 = g_strdup_printf ("%s_", (_tmp0 = vala_symbol_get_lower_case_cname (VALA_SYMBOL (self), NULL))), (_tmp0 = (g_free (_tmp0), NULL)), _tmp1);
358
static char* vala_interface_real_get_upper_case_cname (ValaDataType* base, const char* infix) {
359
ValaInterface * self;
362
self = VALA_INTERFACE (base);
365
return (_tmp1 = g_utf8_strup ((_tmp0 = vala_symbol_get_lower_case_cname (VALA_SYMBOL (self), infix)), -1), (_tmp0 = (g_free (_tmp0), NULL)), _tmp1);
369
static void vala_interface_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor) {
370
ValaInterface * self;
371
self = VALA_INTERFACE (base);
390
372
g_return_if_fail (VALA_IS_CODE_VISITOR (visitor));
391
373
vala_code_visitor_visit_interface (visitor, self);
395
static void vala_interface_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor)
377
static void vala_interface_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor) {
397
378
ValaInterface * self;
398
self = ((ValaInterface*) base);
379
self = VALA_INTERFACE (base);
399
380
g_return_if_fail (VALA_IS_CODE_VISITOR (visitor));
401
382
GeeList* type_collection;
493
static gboolean vala_interface_real_is_reference_type (ValaDataType* base)
495
ValaInterface * self;
496
self = ((ValaInterface*) base);
501
static gboolean vala_interface_real_is_reference_counting (ValaDataType* base)
503
ValaInterface * self;
504
self = ((ValaInterface*) base);
509
static char* vala_interface_real_get_ref_function (ValaDataType* base)
511
ValaInterface * self;
512
self = ((ValaInterface*) base);
474
static gboolean vala_interface_real_is_reference_type (ValaDataType* base) {
475
ValaInterface * self;
476
self = VALA_INTERFACE (base);
481
static gboolean vala_interface_real_is_reference_counting (ValaDataType* base) {
482
ValaInterface * self;
483
self = VALA_INTERFACE (base);
488
static char* vala_interface_real_get_ref_function (ValaDataType* base) {
489
ValaInterface * self;
490
self = VALA_INTERFACE (base);
513
491
return g_strdup ("g_object_ref");
517
static char* vala_interface_real_get_unref_function (ValaDataType* base)
495
static char* vala_interface_real_get_unref_function (ValaDataType* base) {
519
496
ValaInterface * self;
520
self = ((ValaInterface*) base);
497
self = VALA_INTERFACE (base);
521
498
return g_strdup ("g_object_unref");
525
static gboolean vala_interface_real_is_subtype_of (ValaDataType* base, ValaDataType* t)
502
static gboolean vala_interface_real_is_subtype_of (ValaDataType* base, ValaDataType* t) {
527
503
ValaInterface * self;
528
self = ((ValaInterface*) base);
504
self = VALA_INTERFACE (base);
529
505
g_return_val_if_fail (VALA_IS_DATA_TYPE (t), FALSE);
506
if (VALA_DATA_TYPE (self) == t) {
531
510
GeeList* prerequisite_collection;
532
511
GeeIterator* prerequisite_it;
536
515
ValaTypeReference* prerequisite;
537
516
prerequisite = gee_iterator_get (prerequisite_it);
539
if (vala_type_reference_get_data_type (prerequisite) == t || vala_data_type_is_subtype_of (vala_type_reference_get_data_type (prerequisite), t)) {
541
return (__temp30 = TRUE, (prerequisite == NULL ? NULL : (prerequisite = (g_object_unref (prerequisite), NULL))), (prerequisite_it == NULL ? NULL : (prerequisite_it = (g_object_unref (prerequisite_it), NULL))), __temp30);
518
if (vala_type_reference_get_data_type (prerequisite) != NULL && vala_data_type_is_subtype_of (vala_type_reference_get_data_type (prerequisite), t)) {
520
return (_tmp1 = TRUE, (prerequisite == NULL ? NULL : (prerequisite = (g_object_unref (prerequisite), NULL))), (prerequisite_it == NULL ? NULL : (prerequisite_it = (g_object_unref (prerequisite_it), NULL))), _tmp1);
543
522
(prerequisite == NULL ? NULL : (prerequisite = (g_object_unref (prerequisite), NULL)));
552
static void vala_interface_process_ccode_attribute (ValaInterface* self, ValaAttribute* a)
531
static void vala_interface_process_ccode_attribute (ValaInterface* self, ValaAttribute* a) {
554
532
g_return_if_fail (VALA_IS_INTERFACE (self));
555
533
g_return_if_fail (VALA_IS_ATTRIBUTE (a));
556
534
if (vala_attribute_has_argument (a, "type_cname")) {
559
vala_interface_set_type_cname (self, (__temp32 = vala_attribute_get_string (a, "type_cname")));
560
(__temp32 = (g_free (__temp32), NULL));
537
vala_interface_set_type_cname (self, (_tmp0 = vala_attribute_get_string (a, "type_cname")));
538
(_tmp0 = (g_free (_tmp0), NULL));
562
540
if (vala_attribute_has_argument (a, "cheader_filename")) {
566
544
char** filename_collection;
567
545
char** filename_it;
546
int filename_collection_length1;
568
547
filename_collection = g_strsplit (val, ",", 0);
548
filename_collection_length1 = -1;
569
549
for (filename_it = filename_collection; *filename_it != NULL; filename_it = filename_it + 1) {
570
const char* __temp33;
573
filename = (__temp33 = *filename_it, (__temp33 == NULL ? NULL : g_strdup (__temp33)));
553
filename = (_tmp1 = *filename_it, (_tmp1 == NULL ? NULL : g_strdup (_tmp1)));
575
555
vala_data_type_add_cheader_filename (VALA_DATA_TYPE (self), filename);
576
556
(filename = (g_free (filename), NULL));
579
(filename_collection = (g_strfreev (filename_collection), NULL));
559
(filename_collection = (_vala_array_free (filename_collection, filename_collection_length1, ((GDestroyNotify) g_free)), NULL));
581
561
(val = (g_free (val), NULL));
566
static void vala_interface_process_dbus_interface_attribute (ValaInterface* self, ValaAttribute* a) {
567
g_return_if_fail (VALA_IS_INTERFACE (self));
568
g_return_if_fail (VALA_IS_ATTRIBUTE (a));
569
if (vala_interface_get_declaration_only (self)) {
572
self->priv->cname = (_tmp0 = g_strdup ("DBusGProxy"), (self->priv->cname = (g_free (self->priv->cname), NULL)), _tmp0);
587
578
* Process all associated attributes.
589
void vala_interface_process_attributes (ValaInterface* self)
580
void vala_interface_process_attributes (ValaInterface* self) {
591
581
g_return_if_fail (VALA_IS_INTERFACE (self));
593
583
GList* a_collection;
595
a_collection = ((ValaCodeNode*) self)->attributes;
585
a_collection = VALA_CODE_NODE (self)->attributes;
596
586
for (a_it = a_collection; a_it != NULL; a_it = a_it->next) {
597
ValaAttribute* __temp34;
587
ValaAttribute* _tmp0;
598
588
ValaAttribute* a;
600
a = (__temp34 = a_it->data, (__temp34 == NULL ? NULL : g_object_ref (__temp34)));
590
a = (_tmp0 = a_it->data, (_tmp0 == NULL ? NULL : g_object_ref (_tmp0)));
602
592
if (g_utf8_collate (vala_attribute_get_name (a), "CCode") == 0) {
603
593
vala_interface_process_ccode_attribute (self, a);
595
if (g_utf8_collate (vala_attribute_get_name (a), "DBusInterface") == 0) {
596
vala_interface_process_dbus_interface_attribute (self, a);
605
599
(a == NULL ? NULL : (a = (g_object_unref (a), NULL)));
615
609
* @return the type struct name to be used in C code
617
char* vala_interface_get_type_cname (ValaInterface* self)
619
const char* __temp37;
611
char* vala_interface_get_type_cname (ValaInterface* self) {
620
613
g_return_val_if_fail (VALA_IS_INTERFACE (self), NULL);
621
614
if (self->priv->type_cname == NULL) {
626
self->priv->type_cname = (__temp36 = g_strdup_printf ("%sIface", (__temp35 = vala_data_type_get_cname (VALA_DATA_TYPE (self), FALSE))), (self->priv->type_cname = (g_free (self->priv->type_cname), NULL)), __temp36);
627
(__temp35 = (g_free (__temp35), NULL));
619
self->priv->type_cname = (_tmp1 = g_strdup_printf ("%sIface", (_tmp0 = vala_data_type_get_cname (VALA_DATA_TYPE (self), FALSE))), (self->priv->type_cname = (g_free (self->priv->type_cname), NULL)), _tmp1);
620
(_tmp0 = (g_free (_tmp0), NULL));
630
return (__temp37 = self->priv->type_cname, (__temp37 == NULL ? NULL : g_strdup (__temp37)));
623
return (_tmp2 = self->priv->type_cname, (_tmp2 == NULL ? NULL : g_strdup (_tmp2)));
637
630
* @param type_cname the type struct name to be used in C code
639
void vala_interface_set_type_cname (ValaInterface* self, const char* type_cname)
632
void vala_interface_set_type_cname (ValaInterface* self, const char* type_cname) {
642
634
g_return_if_fail (VALA_IS_INTERFACE (self));
643
635
g_return_if_fail (type_cname != NULL);
645
self->priv->type_cname = (__temp39 = g_strdup (type_cname), (self->priv->type_cname = (g_free (self->priv->type_cname), NULL)), __temp39);
637
self->priv->type_cname = (_tmp0 = g_strdup (type_cname), (self->priv->type_cname = (g_free (self->priv->type_cname), NULL)), _tmp0);
649
static char* vala_interface_real_get_marshaller_type_name (ValaDataType* base)
641
static char* vala_interface_real_get_marshaller_type_name (ValaDataType* base) {
651
642
ValaInterface * self;
652
self = ((ValaInterface*) base);
643
self = VALA_INTERFACE (base);
653
644
return g_strdup ("OBJECT");
657
static char* vala_interface_real_get_get_value_function (ValaDataType* base)
648
static char* vala_interface_real_get_get_value_function (ValaDataType* base) {
659
649
ValaInterface * self;
660
self = ((ValaInterface*) base);
650
self = VALA_INTERFACE (base);
661
651
return g_strdup ("g_value_get_object");
665
static char* vala_interface_real_get_set_value_function (ValaDataType* base)
655
static char* vala_interface_real_get_set_value_function (ValaDataType* base) {
667
656
ValaInterface * self;
668
self = ((ValaInterface*) base);
657
self = VALA_INTERFACE (base);
669
658
return g_strdup ("g_value_set_object");
673
static char* vala_interface_real_get_type_id (ValaDataType* base)
662
static char* vala_interface_real_get_type_id (ValaDataType* base) {
675
663
ValaInterface * self;
676
const char* __temp44;
677
self = ((ValaInterface*) base);
665
self = VALA_INTERFACE (base);
678
666
if (self->priv->type_id == NULL) {
681
self->priv->type_id = (__temp43 = vala_data_type_get_upper_case_cname (VALA_DATA_TYPE (self), "TYPE_"), (self->priv->type_id = (g_free (self->priv->type_id), NULL)), __temp43);
669
self->priv->type_id = (_tmp0 = vala_data_type_get_upper_case_cname (VALA_DATA_TYPE (self), "TYPE_"), (self->priv->type_id = (g_free (self->priv->type_id), NULL)), _tmp0);
684
return (__temp44 = self->priv->type_id, (__temp44 == NULL ? NULL : g_strdup (__temp44)));
672
return (_tmp1 = self->priv->type_id, (_tmp1 == NULL ? NULL : g_strdup (_tmp1)));
688
static gint vala_interface_real_get_type_parameter_index (ValaDataType* base, const char* name)
676
static gint vala_interface_real_get_type_parameter_index (ValaDataType* base, const char* name) {
690
677
ValaInterface * self;
692
self = ((ValaInterface*) base);
679
self = VALA_INTERFACE (base);
693
680
g_return_val_if_fail (name != NULL, 0);
701
688
ValaTypeParameter* parameter;
702
689
parameter = gee_iterator_get (parameter_it);
704
if (g_utf8_collate (vala_symbol_get_name (((ValaSymbol*) parameter)), name) == 0) {
706
return (__temp46 = i, (parameter == NULL ? NULL : (parameter = (g_object_unref (parameter), NULL))), (parameter_it == NULL ? NULL : (parameter_it = (g_object_unref (parameter_it), NULL))), __temp46);
691
if (g_utf8_collate (vala_symbol_get_name (VALA_SYMBOL (parameter)), name) == 0) {
693
return (_tmp0 = i, (parameter == NULL ? NULL : (parameter = (g_object_unref (parameter), NULL))), (parameter_it == NULL ? NULL : (parameter_it = (g_object_unref (parameter_it), NULL))), _tmp0);
709
696
(parameter == NULL ? NULL : (parameter = (g_object_unref (parameter), NULL)));
718
gboolean vala_interface_get_is_static (ValaInterface* self)
705
gboolean vala_interface_get_is_static (ValaInterface* self) {
720
706
g_return_val_if_fail (VALA_IS_INTERFACE (self), FALSE);
721
707
return self->priv->_is_static;
725
void vala_interface_set_is_static (ValaInterface* self, gboolean value)
711
void vala_interface_set_is_static (ValaInterface* self, gboolean value) {
727
712
g_return_if_fail (VALA_IS_INTERFACE (self));
728
713
self->priv->_is_static = value;
732
static void vala_interface_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec)
717
gboolean vala_interface_get_declaration_only (ValaInterface* self) {
718
g_return_val_if_fail (VALA_IS_INTERFACE (self), FALSE);
719
return self->priv->_declaration_only;
723
void vala_interface_set_declaration_only (ValaInterface* self, gboolean value) {
724
g_return_if_fail (VALA_IS_INTERFACE (self));
725
self->priv->_declaration_only = value;
729
static void vala_interface_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
734
730
ValaInterface * self;
735
731
self = VALA_INTERFACE (object);
736
732
switch (property_id) {
737
733
case VALA_INTERFACE_IS_STATIC:
738
734
g_value_set_boolean (value, vala_interface_get_is_static (self));
736
case VALA_INTERFACE_DECLARATION_ONLY:
737
g_value_set_boolean (value, vala_interface_get_declaration_only (self));
740
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
744
static void vala_interface_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec)
746
static void vala_interface_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
746
747
ValaInterface * self;
747
748
self = VALA_INTERFACE (object);
748
749
switch (property_id) {
749
750
case VALA_INTERFACE_IS_STATIC:
750
751
vala_interface_set_is_static (self, g_value_get_boolean (value));
753
case VALA_INTERFACE_DECLARATION_ONLY:
754
vala_interface_set_declaration_only (self, g_value_get_boolean (value));
757
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
756
static void vala_interface_class_init (ValaInterfaceClass * klass)
763
static void vala_interface_class_init (ValaInterfaceClass * klass) {
758
764
vala_interface_parent_class = g_type_class_peek_parent (klass);
759
765
g_type_class_add_private (klass, sizeof (ValaInterfacePrivate));
760
766
G_OBJECT_CLASS (klass)->get_property = vala_interface_get_property;
776
782
VALA_DATA_TYPE_CLASS (klass)->get_set_value_function = vala_interface_real_get_set_value_function;
777
783
VALA_DATA_TYPE_CLASS (klass)->get_type_id = vala_interface_real_get_type_id;
778
784
VALA_DATA_TYPE_CLASS (klass)->get_type_parameter_index = vala_interface_real_get_type_parameter_index;
779
g_object_class_install_property (G_OBJECT_CLASS (klass), VALA_INTERFACE_IS_STATIC, g_param_spec_boolean ("is-static", "foo", "bar", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
785
g_object_class_install_property (G_OBJECT_CLASS (klass), VALA_INTERFACE_IS_STATIC, g_param_spec_boolean ("is-static", "is-static", "is-static", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
786
g_object_class_install_property (G_OBJECT_CLASS (klass), VALA_INTERFACE_DECLARATION_ONLY, g_param_spec_boolean ("declaration-only", "declaration-only", "declaration-only", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
783
static void vala_interface_init (ValaInterface * self)
790
static void vala_interface_init (ValaInterface * self) {
785
791
self->priv = VALA_INTERFACE_GET_PRIVATE (self);
786
792
self->priv->type_parameters = GEE_LIST (gee_array_list_new (g_object_ref, g_object_unref, g_direct_equal));
787
793
self->priv->prerequisites = GEE_LIST (gee_array_list_new (g_object_ref, g_object_unref, g_direct_equal));
808
811
(self->priv->lower_case_csuffix = (g_free (self->priv->lower_case_csuffix), NULL));
809
812
(self->priv->type_cname = (g_free (self->priv->type_cname), NULL));
810
813
(self->priv->type_id = (g_free (self->priv->type_id), NULL));
811
klass = VALA_INTERFACE_CLASS (g_type_class_peek (VALA_TYPE_INTERFACE));
812
parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass));
813
parent_class->dispose (obj);
814
G_OBJECT_CLASS (vala_interface_parent_class)->dispose (obj);
817
GType vala_interface_get_type (void)
818
GType vala_interface_get_type (void) {
819
819
static GType vala_interface_type_id = 0;
820
820
if (G_UNLIKELY (vala_interface_type_id == 0)) {
821
821
static const GTypeInfo g_define_type_info = { sizeof (ValaInterfaceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_interface_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaInterface), 0, (GInstanceInitFunc) vala_interface_init };