95
95
typedef struct _ValaSymbol ValaSymbol;
96
96
typedef struct _ValaSymbolClass ValaSymbolClass;
98
#define VALA_TYPE_VARIABLE (vala_variable_get_type ())
99
#define VALA_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VARIABLE, ValaVariable))
100
#define VALA_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VARIABLE, ValaVariableClass))
101
#define VALA_IS_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VARIABLE))
102
#define VALA_IS_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VARIABLE))
103
#define VALA_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VARIABLE, ValaVariableClass))
105
typedef struct _ValaVariable ValaVariable;
106
typedef struct _ValaVariableClass ValaVariableClass;
98
108
#define VALA_TYPE_LOCAL_VARIABLE (vala_local_variable_get_type ())
99
109
#define VALA_LOCAL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariable))
100
110
#define VALA_LOCAL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariableClass))
141
151
typedef struct _ValaSourceReference ValaSourceReference;
142
152
typedef struct _ValaSourceReferenceClass ValaSourceReferenceClass;
154
#define VALA_TYPE_COMMENT (vala_comment_get_type ())
155
#define VALA_COMMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_COMMENT, ValaComment))
156
#define VALA_COMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_COMMENT, ValaCommentClass))
157
#define VALA_IS_COMMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_COMMENT))
158
#define VALA_IS_COMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_COMMENT))
159
#define VALA_COMMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_COMMENT, ValaCommentClass))
161
typedef struct _ValaComment ValaComment;
162
typedef struct _ValaCommentClass ValaCommentClass;
144
164
#define VALA_TYPE_SYMBOL_ACCESSIBILITY (vala_symbol_accessibility_get_type ())
165
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
146
167
#define VALA_TYPE_SOURCE_FILE (vala_source_file_get_type ())
147
168
#define VALA_SOURCE_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SOURCE_FILE, ValaSourceFile))
230
251
void (*process_deprecated_attribute) (ValaSymbol* self, ValaAttribute* attr);
254
struct _ValaVariable {
255
ValaSymbol parent_instance;
256
ValaVariablePrivate * priv;
259
struct _ValaVariableClass {
260
ValaSymbolClass parent_class;
233
263
struct _ValaFormalParameter {
234
ValaSymbol parent_instance;
264
ValaVariable parent_instance;
235
265
ValaFormalParameterPrivate * priv;
238
268
struct _ValaFormalParameterClass {
239
ValaSymbolClass parent_class;
269
ValaVariableClass parent_class;
305
334
void vala_value_take_source_reference (GValue* value, gpointer v_object);
306
335
gpointer vala_value_get_source_reference (const GValue* value);
307
336
GType vala_source_reference_get_type (void) G_GNUC_CONST;
308
ValaSymbol* vala_symbol_construct (GType object_type, const char* name, ValaSourceReference* source_reference);
309
void vala_formal_parameter_set_parameter_type (ValaFormalParameter* self, ValaDataType* value);
337
gpointer vala_comment_ref (gpointer instance);
338
void vala_comment_unref (gpointer instance);
339
GParamSpec* vala_param_spec_comment (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
340
void vala_value_set_comment (GValue* value, gpointer v_object);
341
void vala_value_take_comment (GValue* value, gpointer v_object);
342
gpointer vala_value_get_comment (const GValue* value);
343
GType vala_comment_get_type (void) G_GNUC_CONST;
344
ValaVariable* vala_variable_new (ValaDataType* variable_type, const char* name, ValaExpression* initializer, ValaSourceReference* source_reference, ValaComment* comment);
345
ValaVariable* vala_variable_construct (GType object_type, ValaDataType* variable_type, const char* name, ValaExpression* initializer, ValaSourceReference* source_reference, ValaComment* comment);
310
346
GType vala_symbol_accessibility_get_type (void) G_GNUC_CONST;
311
347
void vala_symbol_set_access (ValaSymbol* self, ValaSymbolAccessibility value);
312
ValaFormalParameter* vala_formal_parameter_new (const char* name, ValaDataType* parameter_type, ValaSourceReference* source_reference);
313
ValaFormalParameter* vala_formal_parameter_construct (GType object_type, const char* name, ValaDataType* parameter_type, ValaSourceReference* source_reference);
348
ValaFormalParameter* vala_formal_parameter_new (const char* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
349
ValaFormalParameter* vala_formal_parameter_construct (GType object_type, const char* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
314
350
void vala_formal_parameter_set_ellipsis (ValaFormalParameter* self, gboolean value);
315
351
ValaFormalParameter* vala_formal_parameter_new_with_ellipsis (ValaSourceReference* source_reference);
316
352
ValaFormalParameter* vala_formal_parameter_construct_with_ellipsis (GType object_type, ValaSourceReference* source_reference);
317
353
void vala_code_visitor_visit_formal_parameter (ValaCodeVisitor* self, ValaFormalParameter* p);
318
354
static void vala_formal_parameter_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor);
319
355
gboolean vala_formal_parameter_get_ellipsis (ValaFormalParameter* self);
320
ValaDataType* vala_formal_parameter_get_parameter_type (ValaFormalParameter* self);
356
ValaDataType* vala_variable_get_variable_type (ValaVariable* self);
321
357
void vala_code_node_accept (ValaCodeNode* self, ValaCodeVisitor* visitor);
322
ValaExpression* vala_formal_parameter_get_default_expression (ValaFormalParameter* self);
358
ValaExpression* vala_variable_get_initializer (ValaVariable* self);
323
359
static void vala_formal_parameter_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor);
360
void vala_variable_set_variable_type (ValaVariable* self, ValaDataType* value);
324
361
static void vala_formal_parameter_real_replace_type (ValaCodeNode* base, ValaDataType* old_type, ValaDataType* new_type);
325
void vala_formal_parameter_set_default_expression (ValaFormalParameter* self, ValaExpression* value);
362
void vala_variable_set_initializer (ValaVariable* self, ValaExpression* value);
326
363
static void vala_formal_parameter_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node);
327
364
gboolean vala_attribute_has_argument (ValaAttribute* self, const char* name);
328
365
char* vala_attribute_get_string (ValaAttribute* self, const char* name);
375
412
gboolean vala_semantic_analyzer_is_type_accessible (ValaSemanticAnalyzer* self, ValaSymbol* sym, ValaDataType* type);
376
413
char* vala_symbol_get_full_name (ValaSymbol* self);
377
414
static gboolean vala_formal_parameter_real_check (ValaCodeNode* base, ValaSemanticAnalyzer* analyzer);
378
void vala_code_node_set_parent_node (ValaCodeNode* self, ValaCodeNode* value);
379
415
gboolean vala_formal_parameter_get_no_array_length (ValaFormalParameter* self);
380
416
gboolean vala_formal_parameter_get_array_null_terminated (ValaFormalParameter* self);
381
417
const char* vala_formal_parameter_get_array_length_type (ValaFormalParameter* self);
394
ValaFormalParameter* vala_formal_parameter_construct (GType object_type, const char* name, ValaDataType* parameter_type, ValaSourceReference* source_reference) {
431
* Creates a new formal parameter.
433
* @param name parameter name
434
* @param type parameter type
435
* @param source reference to source code
436
* @return newly created formal parameter
438
ValaFormalParameter* vala_formal_parameter_construct (GType object_type, const char* name, ValaDataType* variable_type, ValaSourceReference* source_reference) {
395
439
ValaFormalParameter* self;
396
440
g_return_val_if_fail (name != NULL, NULL);
397
g_return_val_if_fail (parameter_type != NULL, NULL);
398
self = (ValaFormalParameter*) vala_symbol_construct (object_type, name, source_reference);
399
vala_formal_parameter_set_parameter_type (self, parameter_type);
441
g_return_val_if_fail (variable_type != NULL, NULL);
442
self = (ValaFormalParameter*) vala_variable_construct (object_type, variable_type, name, NULL, source_reference, NULL);
400
443
vala_symbol_set_access ((ValaSymbol*) self, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
405
ValaFormalParameter* vala_formal_parameter_new (const char* name, ValaDataType* parameter_type, ValaSourceReference* source_reference) {
406
return vala_formal_parameter_construct (VALA_TYPE_FORMAL_PARAMETER, name, parameter_type, source_reference);
448
ValaFormalParameter* vala_formal_parameter_new (const char* name, ValaDataType* variable_type, ValaSourceReference* source_reference) {
449
return vala_formal_parameter_construct (VALA_TYPE_FORMAL_PARAMETER, name, variable_type, source_reference);
454
* Creates a new ellipsis parameter representing an indefinite number of
410
457
ValaFormalParameter* vala_formal_parameter_construct_with_ellipsis (GType object_type, ValaSourceReference* source_reference) {
411
458
ValaFormalParameter* self;
412
self = (ValaFormalParameter*) vala_symbol_construct (object_type, NULL, source_reference);
459
self = (ValaFormalParameter*) vala_variable_construct (object_type, NULL, NULL, NULL, source_reference, NULL);
413
460
vala_formal_parameter_set_ellipsis (self, TRUE);
414
461
vala_symbol_set_access ((ValaSymbol*) self, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
434
481
self = (ValaFormalParameter*) base;
435
482
g_return_if_fail (visitor != NULL);
436
483
if (!self->priv->_ellipsis) {
437
vala_code_node_accept ((ValaCodeNode*) vala_formal_parameter_get_parameter_type (self), visitor);
438
if (vala_formal_parameter_get_default_expression (self) != NULL) {
439
vala_code_node_accept ((ValaCodeNode*) vala_formal_parameter_get_default_expression (self), visitor);
484
vala_code_node_accept ((ValaCodeNode*) vala_variable_get_variable_type ((ValaVariable*) self), visitor);
485
if (vala_variable_get_initializer ((ValaVariable*) self) != NULL) {
486
vala_code_node_accept ((ValaCodeNode*) vala_variable_get_initializer ((ValaVariable*) self), visitor);
528
578
g_return_val_if_fail (self != NULL, NULL);
529
579
if (!self->priv->_ellipsis) {
530
580
ValaFormalParameter* _result_;
531
_result_ = vala_formal_parameter_new (vala_symbol_get_name ((ValaSymbol*) self), vala_formal_parameter_get_parameter_type (self), vala_code_node_get_source_reference ((ValaCodeNode*) self));
581
_result_ = vala_formal_parameter_new (vala_symbol_get_name ((ValaSymbol*) self), vala_variable_get_variable_type ((ValaVariable*) self), vala_code_node_get_source_reference ((ValaCodeNode*) self));
532
582
vala_formal_parameter_set_params_array (_result_, self->priv->_params_array);
533
583
vala_formal_parameter_set_direction (_result_, self->priv->_direction);
534
vala_formal_parameter_set_default_expression (_result_, vala_formal_parameter_get_default_expression (self));
584
vala_variable_set_initializer ((ValaVariable*) _result_, vala_variable_get_initializer ((ValaVariable*) self));
535
585
result = _result_;
565
615
vala_semantic_analyzer_set_current_source_file (analyzer, vala_source_reference_get_file (vala_code_node_get_source_reference ((ValaCodeNode*) self)));
567
617
vala_semantic_analyzer_set_current_symbol (analyzer, vala_symbol_get_parent_symbol ((ValaSymbol*) self));
568
if (vala_formal_parameter_get_parameter_type (self) != NULL) {
569
vala_code_node_check ((ValaCodeNode*) vala_formal_parameter_get_parameter_type (self), analyzer);
618
if (vala_variable_get_variable_type ((ValaVariable*) self) != NULL) {
619
vala_code_node_check ((ValaCodeNode*) vala_variable_get_variable_type ((ValaVariable*) self), analyzer);
571
621
if (!self->priv->_ellipsis) {
572
622
gboolean _tmp0_ = FALSE;
573
vala_code_node_check ((ValaCodeNode*) vala_formal_parameter_get_parameter_type (self), analyzer);
623
vala_code_node_check ((ValaCodeNode*) vala_variable_get_variable_type ((ValaVariable*) self), analyzer);
574
624
if (self->priv->_params_array) {
575
_tmp0_ = !VALA_IS_ARRAY_TYPE (vala_formal_parameter_get_parameter_type (self));
625
_tmp0_ = !VALA_IS_ARRAY_TYPE (vala_variable_get_variable_type ((ValaVariable*) self));
584
634
_vala_source_file_unref0 (old_source_file);
587
if (vala_formal_parameter_get_default_expression (self) != NULL) {
588
vala_code_node_check ((ValaCodeNode*) vala_formal_parameter_get_default_expression (self), analyzer);
637
if (vala_variable_get_initializer ((ValaVariable*) self) != NULL) {
638
vala_code_node_check ((ValaCodeNode*) vala_variable_get_initializer ((ValaVariable*) self), analyzer);
591
if (vala_formal_parameter_get_default_expression (self) != NULL) {
641
if (vala_variable_get_initializer ((ValaVariable*) self) != NULL) {
592
642
gboolean _tmp1_ = FALSE;
593
643
gboolean _tmp2_ = FALSE;
594
if (VALA_IS_NULL_LITERAL (vala_formal_parameter_get_default_expression (self))) {
595
_tmp2_ = !vala_data_type_get_nullable (vala_formal_parameter_get_parameter_type (self));
644
if (VALA_IS_NULL_LITERAL (vala_variable_get_initializer ((ValaVariable*) self))) {
645
_tmp2_ = !vala_data_type_get_nullable (vala_variable_get_variable_type ((ValaVariable*) self));
607
vala_report_warning (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp4_ = g_strdup_printf ("`null' incompatible with parameter type `%s`", _tmp3_ = vala_code_node_to_string ((ValaCodeNode*) vala_formal_parameter_get_parameter_type (self))));
657
vala_report_warning (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp4_ = g_strdup_printf ("`null' incompatible with parameter type `%s`", _tmp3_ = vala_code_node_to_string ((ValaCodeNode*) vala_variable_get_variable_type ((ValaVariable*) self))));
608
658
_g_free0 (_tmp4_);
609
659
_g_free0 (_tmp3_);
612
662
if (!self->priv->_ellipsis) {
613
if (!vala_semantic_analyzer_is_type_accessible (analyzer, (ValaSymbol*) self, vala_formal_parameter_get_parameter_type (self))) {
663
if (!vala_semantic_analyzer_is_type_accessible (analyzer, (ValaSymbol*) self, vala_variable_get_variable_type ((ValaVariable*) self))) {
617
667
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
618
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp7_ = g_strdup_printf ("parameter type `%s` is less accessible than method `%s`", _tmp5_ = vala_code_node_to_string ((ValaCodeNode*) vala_formal_parameter_get_parameter_type (self)), _tmp6_ = vala_symbol_get_full_name (vala_symbol_get_parent_symbol ((ValaSymbol*) self))));
668
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp7_ = g_strdup_printf ("parameter type `%s` is less accessible than method `%s`", _tmp5_ = vala_code_node_to_string ((ValaCodeNode*) vala_variable_get_variable_type ((ValaVariable*) self)), _tmp6_ = vala_symbol_get_full_name (vala_symbol_get_parent_symbol ((ValaSymbol*) self))));
619
669
_g_free0 (_tmp7_);
620
670
_g_free0 (_tmp6_);
621
671
_g_free0 (_tmp5_);
633
ValaDataType* vala_formal_parameter_get_parameter_type (ValaFormalParameter* self) {
634
ValaDataType* result;
635
g_return_val_if_fail (self != NULL, NULL);
636
result = self->priv->_data_type;
641
void vala_formal_parameter_set_parameter_type (ValaFormalParameter* self, ValaDataType* value) {
642
ValaDataType* _tmp0_;
643
g_return_if_fail (self != NULL);
644
self->priv->_data_type = (_tmp0_ = _vala_code_node_ref0 (value), _vala_code_node_unref0 (self->priv->_data_type), _tmp0_);
645
vala_code_node_set_parent_node ((ValaCodeNode*) self->priv->_data_type, (ValaCodeNode*) self);
649
683
ValaParameterDirection vala_formal_parameter_get_direction (ValaFormalParameter* self) {
650
684
ValaParameterDirection result;
651
685
g_return_val_if_fail (self != NULL, 0);
691
ValaExpression* vala_formal_parameter_get_default_expression (ValaFormalParameter* self) {
692
ValaExpression* result;
693
g_return_val_if_fail (self != NULL, NULL);
694
result = self->priv->_default_expression;
699
void vala_formal_parameter_set_default_expression (ValaFormalParameter* self, ValaExpression* value) {
700
ValaExpression* _tmp0_;
701
g_return_if_fail (self != NULL);
702
self->priv->_default_expression = (_tmp0_ = _vala_code_node_ref0 (value), _vala_code_node_unref0 (self->priv->_default_expression), _tmp0_);
703
if (self->priv->_default_expression != NULL) {
704
vala_code_node_set_parent_node ((ValaCodeNode*) self->priv->_default_expression, (ValaCodeNode*) self);
709
725
gboolean vala_formal_parameter_get_no_array_length (ValaFormalParameter* self) {
711
727
g_return_val_if_fail (self != NULL, FALSE);
858
874
self = VALA_FORMAL_PARAMETER (obj);
859
875
_g_free0 (self->priv->_array_length_type);
860
876
_g_free0 (self->priv->_ctype);
861
_vala_code_node_unref0 (self->priv->_data_type);
862
_vala_code_node_unref0 (self->priv->_default_expression);
863
877
VALA_CODE_NODE_CLASS (vala_formal_parameter_parent_class)->finalize (obj);
882
* Represents a formal parameter in method and callback signatures.
867
884
GType vala_formal_parameter_get_type (void) {
868
885
static volatile gsize vala_formal_parameter_type_id__volatile = 0;
869
886
if (g_once_init_enter (&vala_formal_parameter_type_id__volatile)) {
870
887
static const GTypeInfo g_define_type_info = { sizeof (ValaFormalParameterClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_formal_parameter_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaFormalParameter), 0, (GInstanceInitFunc) vala_formal_parameter_instance_init, NULL };
871
888
GType vala_formal_parameter_type_id;
872
vala_formal_parameter_type_id = g_type_register_static (VALA_TYPE_SYMBOL, "ValaFormalParameter", &g_define_type_info, 0);
889
vala_formal_parameter_type_id = g_type_register_static (VALA_TYPE_VARIABLE, "ValaFormalParameter", &g_define_type_info, 0);
873
890
g_once_init_leave (&vala_formal_parameter_type_id__volatile, vala_formal_parameter_type_id);
875
892
return vala_formal_parameter_type_id__volatile;