~ubuntu-branches/ubuntu/vivid/vala/vivid

« back to all changes in this revision

Viewing changes to vala/valasignal.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Dröge
  • Date: 2010-07-28 07:58:01 UTC
  • mfrom: (1.5.5 upstream) (7.3.14 experimental)
  • Revision ID: james.westby@ubuntu.com-20100728075801-18u9cg5hv5oety6m
Tags: 0.9.4-1
New upstream development release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
94
94
typedef struct _ValaSymbol ValaSymbol;
95
95
typedef struct _ValaSymbolClass ValaSymbolClass;
96
96
 
 
97
#define VALA_TYPE_VARIABLE (vala_variable_get_type ())
 
98
#define VALA_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VARIABLE, ValaVariable))
 
99
#define VALA_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VARIABLE, ValaVariableClass))
 
100
#define VALA_IS_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VARIABLE))
 
101
#define VALA_IS_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VARIABLE))
 
102
#define VALA_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VARIABLE, ValaVariableClass))
 
103
 
 
104
typedef struct _ValaVariable ValaVariable;
 
105
typedef struct _ValaVariableClass ValaVariableClass;
 
106
 
97
107
#define VALA_TYPE_LOCAL_VARIABLE (vala_local_variable_get_type ())
98
108
#define VALA_LOCAL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariable))
99
109
#define VALA_LOCAL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariableClass))
115
125
typedef struct _ValaAttributeClass ValaAttributeClass;
116
126
typedef struct _ValaSymbolPrivate ValaSymbolPrivate;
117
127
 
118
 
#define VALA_TYPE_MEMBER (vala_member_get_type ())
119
 
#define VALA_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MEMBER, ValaMember))
120
 
#define VALA_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MEMBER, ValaMemberClass))
121
 
#define VALA_IS_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MEMBER))
122
 
#define VALA_IS_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MEMBER))
123
 
#define VALA_MEMBER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MEMBER, ValaMemberClass))
124
 
 
125
 
typedef struct _ValaMember ValaMember;
126
 
typedef struct _ValaMemberClass ValaMemberClass;
127
 
typedef struct _ValaMemberPrivate ValaMemberPrivate;
128
 
 
129
128
#define VALA_TYPE_LOCKABLE (vala_lockable_get_type ())
130
129
#define VALA_LOCKABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOCKABLE, ValaLockable))
131
130
#define VALA_IS_LOCKABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LOCKABLE))
287
286
        void (*process_deprecated_attribute) (ValaSymbol* self, ValaAttribute* attr);
288
287
};
289
288
 
290
 
struct _ValaMember {
291
 
        ValaSymbol parent_instance;
292
 
        ValaMemberPrivate * priv;
293
 
};
294
 
 
295
 
struct _ValaMemberClass {
296
 
        ValaSymbolClass parent_class;
297
 
};
298
 
 
299
289
struct _ValaLockableIface {
300
290
        GTypeInterface parent_iface;
301
291
        gboolean (*get_lock_used) (ValaLockable* self);
303
293
};
304
294
 
305
295
struct _ValaSignal {
306
 
        ValaMember parent_instance;
 
296
        ValaSymbol parent_instance;
307
297
        ValaSignalPrivate * priv;
308
298
};
309
299
 
310
300
struct _ValaSignalClass {
311
 
        ValaMemberClass parent_class;
 
301
        ValaSymbolClass parent_class;
312
302
};
313
303
 
314
304
struct _ValaSignalPrivate {
356
346
GType vala_data_type_get_type (void) G_GNUC_CONST;
357
347
GType vala_expression_get_type (void) G_GNUC_CONST;
358
348
GType vala_symbol_get_type (void) G_GNUC_CONST;
 
349
GType vala_variable_get_type (void) G_GNUC_CONST;
359
350
GType vala_local_variable_get_type (void) G_GNUC_CONST;
360
351
GType vala_attribute_get_type (void) G_GNUC_CONST;
361
 
GType vala_member_get_type (void) G_GNUC_CONST;
362
352
GType vala_lockable_get_type (void) G_GNUC_CONST;
363
353
GType vala_signal_get_type (void) G_GNUC_CONST;
364
354
GType vala_formal_parameter_get_type (void) G_GNUC_CONST;
382
372
void vala_value_take_comment (GValue* value, gpointer v_object);
383
373
gpointer vala_value_get_comment (const GValue* value);
384
374
GType vala_comment_get_type (void) G_GNUC_CONST;
385
 
ValaMember* vala_member_construct (GType object_type, const char* name, ValaSourceReference* source_reference, ValaComment* comment);
 
375
ValaSymbol* vala_symbol_construct (GType object_type, const char* name, ValaSourceReference* source_reference, ValaComment* comment);
386
376
void vala_signal_set_return_type (ValaSignal* self, ValaDataType* value);
387
377
void vala_signal_set_run_type (ValaSignal* self, const char* value);
388
378
ValaSignal* vala_signal_new (const char* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment);
420
410
void vala_data_type_set_nullable (ValaDataType* self, gboolean value);
421
411
void vala_delegate_set_sender_type (ValaDelegate* self, ValaDataType* value);
422
412
ValaFormalParameter* vala_formal_parameter_copy (ValaFormalParameter* self);
423
 
ValaDataType* vala_formal_parameter_get_parameter_type (ValaFormalParameter* self);
424
 
void vala_formal_parameter_set_parameter_type (ValaFormalParameter* self, ValaDataType* value);
 
413
ValaDataType* vala_variable_get_variable_type (ValaVariable* self);
 
414
void vala_variable_set_variable_type (ValaVariable* self, ValaDataType* value);
425
415
void vala_delegate_add_parameter (ValaDelegate* self, ValaFormalParameter* param);
426
416
ValaDelegate* vala_signal_get_delegate (ValaSignal* self, ValaDataType* sender_type, ValaCodeNode* node_reference);
427
417
char* vala_symbol_camel_case_to_lower_case (const char* camel_case);
428
418
char* vala_signal_get_cname (ValaSignal* self);
429
419
void vala_signal_set_cname (ValaSignal* self, const char* cname);
430
420
ValaCCodeConstant* vala_signal_get_canonical_cconstant (ValaSignal* self, const char* detail);
431
 
void vala_code_visitor_visit_member (ValaCodeVisitor* self, ValaMember* m);
432
421
void vala_code_visitor_visit_signal (ValaCodeVisitor* self, ValaSignal* sig);
433
422
static void vala_signal_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor);
434
423
void vala_code_node_accept (ValaCodeNode* self, ValaCodeVisitor* visitor);
473
462
GType vala_object_type_symbol_get_type (void) G_GNUC_CONST;
474
463
void vala_object_type_symbol_add_hidden_method (ValaObjectTypeSymbol* self, ValaMethod* m);
475
464
gboolean vala_symbol_get_external_package (ValaSymbol* self);
476
 
gboolean vala_member_get_hides (ValaMember* self);
477
 
ValaSymbol* vala_member_get_hidden_member (ValaMember* self);
 
465
gboolean vala_symbol_get_hides (ValaSymbol* self);
 
466
ValaSymbol* vala_symbol_get_hidden_member (ValaSymbol* self);
478
467
void vala_report_warning (ValaSourceReference* source, const char* message);
479
468
char* vala_symbol_get_full_name (ValaSymbol* self);
480
469
static gboolean vala_signal_real_check (ValaCodeNode* base, ValaSemanticAnalyzer* analyzer);
492
481
 
493
482
 
494
483
 
 
484
/**
 
485
 * Creates a new signal.
 
486
 *
 
487
 * @param name        signal name
 
488
 * @param return_type signal return type
 
489
 * @param source      reference to source code
 
490
 * @return            newly created signal
 
491
 */
495
492
ValaSignal* vala_signal_construct (GType object_type, const char* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment) {
496
493
        ValaSignal* self;
497
494
        g_return_val_if_fail (name != NULL, NULL);
498
495
        g_return_val_if_fail (return_type != NULL, NULL);
499
 
        self = (ValaSignal*) vala_member_construct (object_type, name, source_reference, comment);
 
496
        self = (ValaSignal*) vala_symbol_construct (object_type, name, source_reference, comment);
500
497
        vala_signal_set_return_type (self, return_type);
501
498
        vala_signal_set_run_type (self, "last");
502
499
        return self;
508
505
}
509
506
 
510
507
 
 
508
/**
 
509
 * Appends parameter to signal handler.
 
510
 *
 
511
 * @param param a formal parameter
 
512
 */
511
513
void vala_signal_add_parameter (ValaSignal* self, ValaFormalParameter* param) {
512
514
        g_return_if_fail (self != NULL);
513
515
        g_return_if_fail (param != NULL);
533
535
}
534
536
 
535
537
 
 
538
/**
 
539
 * Returns generated delegate to be used for signal handlers.
 
540
 *
 
541
 * @return delegate
 
542
 */
536
543
ValaDelegate* vala_signal_get_delegate (ValaSignal* self, ValaDataType* sender_type, ValaCodeNode* node_reference) {
537
544
        ValaDelegate* result = NULL;
538
545
        ValaDataType* actual_return_type;
562
569
                        }
563
570
                        param = (ValaFormalParameter*) vala_iterator_get (_param_it);
564
571
                        actual_param = vala_formal_parameter_copy (param);
565
 
                        vala_formal_parameter_set_parameter_type (actual_param, _tmp0_ = vala_data_type_get_actual_type (vala_formal_parameter_get_parameter_type (actual_param), sender_type, NULL, node_reference));
 
572
                        vala_variable_set_variable_type ((ValaVariable*) actual_param, _tmp0_ = vala_data_type_get_actual_type (vala_variable_get_variable_type ((ValaVariable*) actual_param), sender_type, NULL, node_reference));
566
573
                        _vala_code_node_unref0 (_tmp0_);
567
574
                        vala_delegate_add_parameter (generated_delegate, actual_param);
568
575
                        _vala_code_node_unref0 (actual_param);
578
585
}
579
586
 
580
587
 
 
588
/**
 
589
 * Returns the name of this signal as it is used in C code.
 
590
 *
 
591
 * @return the name to be used in C code
 
592
 */
581
593
char* vala_signal_get_cname (ValaSignal* self) {
582
594
        char* result = NULL;
583
595
        g_return_val_if_fail (self != NULL, NULL);
598
610
}
599
611
 
600
612
 
 
613
/**
 
614
 * Returns the string literal of this signal to be used in C code.
 
615
 *
 
616
 * @return string literal to be used in C code
 
617
 */
601
618
ValaCCodeConstant* vala_signal_get_canonical_cconstant (ValaSignal* self, const char* detail) {
602
619
        ValaCCodeConstant* result = NULL;
603
620
        GString* str;
635
652
        ValaSignal * self;
636
653
        self = (ValaSignal*) base;
637
654
        g_return_if_fail (visitor != NULL);
638
 
        vala_code_visitor_visit_member (visitor, (ValaMember*) self);
639
655
        vala_code_visitor_visit_signal (visitor, self);
640
656
}
641
657
 
704
720
}
705
721
 
706
722
 
 
723
/**
 
724
 * Process all associated attributes.
 
725
 */
707
726
void vala_signal_process_attributes (ValaSignal* self) {
708
727
        g_return_if_fail (self != NULL);
709
728
        {
829
848
                _vala_code_node_unref0 (cl);
830
849
        }
831
850
        if (!vala_symbol_get_external_package ((ValaSymbol*) self)) {
832
 
                _tmp4_ = !vala_member_get_hides ((ValaMember*) self);
 
851
                _tmp4_ = !vala_symbol_get_hides ((ValaSymbol*) self);
833
852
        } else {
834
853
                _tmp4_ = FALSE;
835
854
        }
836
855
        if (_tmp4_) {
837
856
                ValaSymbol* _tmp5_;
838
 
                _tmp3_ = (_tmp5_ = vala_member_get_hidden_member ((ValaMember*) self)) != NULL;
 
857
                _tmp3_ = (_tmp5_ = vala_symbol_get_hidden_member ((ValaSymbol*) self)) != NULL;
839
858
                _vala_code_node_unref0 (_tmp5_);
840
859
        } else {
841
860
                _tmp3_ = FALSE;
846
865
                ValaSymbol* _tmp7_;
847
866
                char* _tmp6_;
848
867
                vala_report_warning (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp9_ = g_strdup_printf ("%s hides inherited signal `%s'. Use the `new' keyword if hiding was in" \
849
 
"tentional", _tmp6_ = vala_symbol_get_full_name ((ValaSymbol*) self), _tmp8_ = vala_symbol_get_full_name (_tmp7_ = vala_member_get_hidden_member ((ValaMember*) self))));
 
868
"tentional", _tmp6_ = vala_symbol_get_full_name ((ValaSymbol*) self), _tmp8_ = vala_symbol_get_full_name (_tmp7_ = vala_symbol_get_hidden_member ((ValaSymbol*) self))));
850
869
                _g_free0 (_tmp9_);
851
870
                _g_free0 (_tmp8_);
852
871
                _vala_code_node_unref0 (_tmp7_);
1043
1062
}
1044
1063
 
1045
1064
 
 
1065
/**
 
1066
 * Represents an object signal. Signals enable objects to provide notifications.
 
1067
 */
1046
1068
GType vala_signal_get_type (void) {
1047
1069
        static volatile gsize vala_signal_type_id__volatile = 0;
1048
1070
        if (g_once_init_enter (&vala_signal_type_id__volatile)) {
1049
1071
                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_instance_init, NULL };
1050
1072
                static const GInterfaceInfo vala_lockable_info = { (GInterfaceInitFunc) vala_signal_vala_lockable_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
1051
1073
                GType vala_signal_type_id;
1052
 
                vala_signal_type_id = g_type_register_static (VALA_TYPE_MEMBER, "ValaSignal", &g_define_type_info, 0);
 
1074
                vala_signal_type_id = g_type_register_static (VALA_TYPE_SYMBOL, "ValaSignal", &g_define_type_info, 0);
1053
1075
                g_type_add_interface_static (vala_signal_type_id, VALA_TYPE_LOCKABLE, &vala_lockable_info);
1054
1076
                g_once_init_leave (&vala_signal_type_id__volatile, vala_signal_type_id);
1055
1077
        }