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

« back to all changes in this revision

Viewing changes to vala/valastruct.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:
91
91
typedef struct _ValaSymbol ValaSymbol;
92
92
typedef struct _ValaSymbolClass ValaSymbolClass;
93
93
 
 
94
#define VALA_TYPE_VARIABLE (vala_variable_get_type ())
 
95
#define VALA_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VARIABLE, ValaVariable))
 
96
#define VALA_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VARIABLE, ValaVariableClass))
 
97
#define VALA_IS_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VARIABLE))
 
98
#define VALA_IS_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VARIABLE))
 
99
#define VALA_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VARIABLE, ValaVariableClass))
 
100
 
 
101
typedef struct _ValaVariable ValaVariable;
 
102
typedef struct _ValaVariableClass ValaVariableClass;
 
103
 
94
104
#define VALA_TYPE_LOCAL_VARIABLE (vala_local_variable_get_type ())
95
105
#define VALA_LOCAL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariable))
96
106
#define VALA_LOCAL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariableClass))
144
154
typedef struct _ValaTypeParameter ValaTypeParameter;
145
155
typedef struct _ValaTypeParameterClass ValaTypeParameterClass;
146
156
 
147
 
#define VALA_TYPE_MEMBER (vala_member_get_type ())
148
 
#define VALA_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MEMBER, ValaMember))
149
 
#define VALA_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MEMBER, ValaMemberClass))
150
 
#define VALA_IS_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MEMBER))
151
 
#define VALA_IS_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MEMBER))
152
 
#define VALA_MEMBER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MEMBER, ValaMemberClass))
153
 
 
154
 
typedef struct _ValaMember ValaMember;
155
 
typedef struct _ValaMemberClass ValaMemberClass;
156
 
 
157
157
#define VALA_TYPE_CONSTANT (vala_constant_get_type ())
158
158
#define VALA_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTANT, ValaConstant))
159
159
#define VALA_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTANT, ValaConstantClass))
451
451
GType vala_data_type_get_type (void) G_GNUC_CONST;
452
452
GType vala_expression_get_type (void) G_GNUC_CONST;
453
453
GType vala_symbol_get_type (void) G_GNUC_CONST;
 
454
GType vala_variable_get_type (void) G_GNUC_CONST;
454
455
GType vala_local_variable_get_type (void) G_GNUC_CONST;
455
456
GType vala_attribute_get_type (void) G_GNUC_CONST;
456
457
GType vala_typesymbol_get_type (void) G_GNUC_CONST;
457
458
GType vala_struct_get_type (void) G_GNUC_CONST;
458
459
GType vala_typeparameter_get_type (void) G_GNUC_CONST;
459
 
GType vala_member_get_type (void) G_GNUC_CONST;
460
460
GType vala_constant_get_type (void) G_GNUC_CONST;
461
461
GType vala_field_get_type (void) G_GNUC_CONST;
462
462
GType vala_method_get_type (void) G_GNUC_CONST;
504
504
MemberBinding vala_method_get_binding (ValaMethod* self);
505
505
GType vala_creation_method_get_type (void) G_GNUC_CONST;
506
506
ValaDataType* vala_semantic_analyzer_get_data_type_for_symbol (ValaTypeSymbol* sym);
507
 
ValaFormalParameter* vala_formal_parameter_new (const char* name, ValaDataType* parameter_type, ValaSourceReference* source_reference);
508
 
ValaFormalParameter* vala_formal_parameter_construct (GType object_type, const char* name, ValaDataType* parameter_type, ValaSourceReference* source_reference);
 
507
ValaFormalParameter* vala_formal_parameter_new (const char* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
 
508
ValaFormalParameter* vala_formal_parameter_construct (GType object_type, const char* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
509
509
GType vala_formal_parameter_get_type (void) G_GNUC_CONST;
510
510
void vala_method_set_this_parameter (ValaMethod* self, ValaFormalParameter* value);
511
511
ValaFormalParameter* vala_method_get_this_parameter (ValaMethod* self);
570
570
gint vala_struct_get_rank (ValaStruct* self);
571
571
void vala_struct_set_rank (ValaStruct* self, gint rank);
572
572
gboolean vala_attribute_has_argument (ValaAttribute* self, const char* name);
573
 
void vala_typesymbol_add_cheader_filename (ValaTypeSymbol* self, const char* filename);
 
573
void vala_symbol_add_cheader_filename (ValaSymbol* self, const char* filename);
574
574
gboolean vala_attribute_get_bool (ValaAttribute* self, const char* name);
575
575
void vala_struct_set_has_type_id (ValaStruct* self, gboolean value);
576
576
void vala_struct_set_type_id (ValaStruct* self, const char* name);
623
623
char* vala_struct_get_default_destroy_function (ValaStruct* self);
624
624
static char* vala_struct_real_get_destroy_function (ValaTypeSymbol* base);
625
625
MemberBinding vala_field_get_binding (ValaField* self);
626
 
ValaDataType* vala_field_get_field_type (ValaField* self);
 
626
ValaDataType* vala_variable_get_variable_type (ValaVariable* self);
627
627
gboolean vala_data_type_is_disposable (ValaDataType* self);
628
628
gboolean vala_struct_is_disposable (ValaStruct* self);
629
629
GType vala_value_type_get_type (void) G_GNUC_CONST;
648
648
void vala_semantic_analyzer_set_current_symbol (ValaSemanticAnalyzer* self, ValaSymbol* value);
649
649
gboolean vala_code_node_check (ValaCodeNode* self, ValaSemanticAnalyzer* analyzer);
650
650
char* vala_code_node_to_string (ValaCodeNode* self);
651
 
ValaExpression* vala_field_get_initializer (ValaField* self);
 
651
ValaExpression* vala_variable_get_initializer (ValaVariable* self);
652
652
gboolean vala_symbol_get_external (ValaSymbol* self);
653
653
static gboolean vala_struct_real_check (ValaCodeNode* base, ValaSemanticAnalyzer* analyzer);
654
654
void vala_code_node_set_parent_node (ValaCodeNode* self, ValaCodeNode* value);
666
666
 
667
667
 
668
668
 
 
669
/**
 
670
 * Creates a new struct.
 
671
 *
 
672
 * @param name             type name
 
673
 * @param source_reference reference to source code
 
674
 * @return                 newly created struct
 
675
 */
669
676
ValaStruct* vala_struct_construct (GType object_type, const char* name, ValaSourceReference* source_reference, ValaComment* comment) {
670
677
        ValaStruct* self;
671
678
        g_return_val_if_fail (name != NULL, NULL);
679
686
}
680
687
 
681
688
 
 
689
/**
 
690
 * Appends the specified parameter to the list of type parameters.
 
691
 *
 
692
 * @param p a type parameter
 
693
 */
682
694
void vala_struct_add_type_parameter (ValaStruct* self, ValaTypeParameter* p) {
683
695
        g_return_if_fail (self != NULL);
684
696
        g_return_if_fail (p != NULL);
692
704
}
693
705
 
694
706
 
 
707
/**
 
708
 * Returns a copy of the type parameter list.
 
709
 *
 
710
 * @return list of type parameters
 
711
 */
695
712
ValaList* vala_struct_get_type_parameters (ValaStruct* self) {
696
713
        ValaList* result = NULL;
697
714
        g_return_val_if_fail (self != NULL, NULL);
700
717
}
701
718
 
702
719
 
 
720
/**
 
721
 * Adds the specified constant as a member to this struct.
 
722
 *
 
723
 * @param c a constant
 
724
 */
703
725
void vala_struct_add_constant (ValaStruct* self, ValaConstant* c) {
704
726
        g_return_if_fail (self != NULL);
705
727
        g_return_if_fail (c != NULL);
708
730
}
709
731
 
710
732
 
 
733
/**
 
734
 * Adds the specified field as a member to this struct.
 
735
 *
 
736
 * @param f a field
 
737
 */
711
738
void vala_struct_add_field (ValaStruct* self, ValaField* f) {
712
739
        g_return_if_fail (self != NULL);
713
740
        g_return_if_fail (f != NULL);
717
744
}
718
745
 
719
746
 
 
747
/**
 
748
 * Returns a copy of the list of fields.
 
749
 *
 
750
 * @return list of fields
 
751
 */
720
752
ValaList* vala_struct_get_fields (ValaStruct* self) {
721
753
        ValaList* result = NULL;
722
754
        g_return_val_if_fail (self != NULL, NULL);
725
757
}
726
758
 
727
759
 
 
760
/**
 
761
 * Returns a copy of the list of constants.
 
762
 *
 
763
 * @return list of constants
 
764
 */
728
765
ValaList* vala_struct_get_constants (ValaStruct* self) {
729
766
        ValaList* result = NULL;
730
767
        g_return_val_if_fail (self != NULL, NULL);
738
775
}
739
776
 
740
777
 
 
778
/**
 
779
 * Adds the specified method as a member to this struct.
 
780
 *
 
781
 * @param m a method
 
782
 */
741
783
void vala_struct_add_method (ValaStruct* self, ValaMethod* m) {
742
784
        gboolean _tmp0_ = FALSE;
743
785
        gboolean _tmp3_ = FALSE;
810
852
}
811
853
 
812
854
 
 
855
/**
 
856
 * Returns a copy of the list of methods.
 
857
 *
 
858
 * @return list of methods
 
859
 */
813
860
ValaList* vala_struct_get_methods (ValaStruct* self) {
814
861
        ValaList* result = NULL;
815
862
        g_return_val_if_fail (self != NULL, NULL);
818
865
}
819
866
 
820
867
 
 
868
/**
 
869
 * Adds the specified property as a member to this struct.
 
870
 *
 
871
 * @param prop a property
 
872
 */
821
873
void vala_struct_add_property (ValaStruct* self, ValaProperty* prop) {
822
874
        ValaFormalParameter* _tmp1_;
823
875
        ValaDataType* _tmp0_;
835
887
}
836
888
 
837
889
 
 
890
/**
 
891
 * Returns a copy of the list of properties.
 
892
 *
 
893
 * @return list of properties
 
894
 */
838
895
ValaList* vala_struct_get_properties (ValaStruct* self) {
839
896
        ValaList* result = NULL;
840
897
        g_return_val_if_fail (self != NULL, NULL);
971
1028
}
972
1029
 
973
1030
 
 
1031
/**
 
1032
 * Returns the default name of this struct as it is used in C code.
 
1033
 *
 
1034
 * @return the name to be used in C code by default
 
1035
 */
974
1036
char* vala_struct_get_default_cname (ValaStruct* self) {
975
1037
        char* result = NULL;
976
1038
        g_return_val_if_fail (self != NULL, NULL);
1047
1109
}
1048
1110
 
1049
1111
 
 
1112
/**
 
1113
 * Returns whether this is a boolean type.
 
1114
 *
 
1115
 * @return true if this is a boolean type, false otherwise
 
1116
 */
1050
1117
gboolean vala_struct_is_boolean_type (ValaStruct* self) {
1051
1118
        gboolean result = FALSE;
1052
1119
        g_return_val_if_fail (self != NULL, FALSE);
1071
1138
}
1072
1139
 
1073
1140
 
 
1141
/**
 
1142
 * Returns whether this is an integer type.
 
1143
 *
 
1144
 * @return true if this is an integer type, false otherwise
 
1145
 */
1074
1146
gboolean vala_struct_is_integer_type (ValaStruct* self) {
1075
1147
        gboolean result = FALSE;
1076
1148
        g_return_val_if_fail (self != NULL, FALSE);
1095
1167
}
1096
1168
 
1097
1169
 
 
1170
/**
 
1171
 * Returns whether this is a floating point type.
 
1172
 *
 
1173
 * @return true if this is a floating point type, false otherwise
 
1174
 */
1098
1175
gboolean vala_struct_is_floating_type (ValaStruct* self) {
1099
1176
        gboolean result = FALSE;
1100
1177
        g_return_val_if_fail (self != NULL, FALSE);
1143
1220
}
1144
1221
 
1145
1222
 
 
1223
/**
 
1224
 * Returns the rank of this integer or floating point type.
 
1225
 *
 
1226
 * @return the rank if this is an integer or floating point type
 
1227
 */
1146
1228
gint vala_struct_get_rank (ValaStruct* self) {
1147
1229
        gint result = 0;
1148
1230
        g_return_val_if_fail (self != NULL, 0);
1151
1233
}
1152
1234
 
1153
1235
 
 
1236
/**
 
1237
 * Sets the rank of this integer or floating point type.
 
1238
 *
 
1239
 * @return the rank if this is an integer or floating point type
 
1240
 */
1154
1241
void vala_struct_set_rank (ValaStruct* self, gint rank) {
1155
1242
        g_return_if_fail (self != NULL);
1156
1243
        self->priv->rank = rank;
1183
1270
                                char* filename;
1184
1271
                                filename = g_strdup (filename_collection[filename_it]);
1185
1272
                                {
1186
 
                                        vala_typesymbol_add_cheader_filename ((ValaTypeSymbol*) self, filename);
 
1273
                                        vala_symbol_add_cheader_filename ((ValaSymbol*) self, filename);
1187
1274
                                        _g_free0 (filename);
1188
1275
                                }
1189
1276
                        }
1277
1364
}
1278
1365
 
1279
1366
 
 
1367
/**
 
1368
 * Process all associated attributes.
 
1369
 */
1280
1370
void vala_struct_process_attributes (ValaStruct* self) {
1281
1371
        g_return_if_fail (self != NULL);
1282
1372
        {
1562
1652
}
1563
1653
 
1564
1654
 
 
1655
/**
 
1656
 * Returns whether this struct is a simple type, i.e. whether
 
1657
 * instances are passed by value.
 
1658
 */
1565
1659
gboolean vala_struct_is_simple_type (ValaStruct* self) {
1566
1660
        gboolean result = FALSE;
1567
1661
        ValaAttribute* _tmp1_;
1618
1712
}
1619
1713
 
1620
1714
 
 
1715
/**
 
1716
 * Marks this struct as simple type, i.e. instances will be passed by
 
1717
 * value.
 
1718
 */
1621
1719
void vala_struct_set_simple_type (ValaStruct* self, gboolean simple_type) {
1622
1720
        g_return_if_fail (self != NULL);
1623
1721
        ((ValaCodeNode*) self)->attributes = g_list_append (((ValaCodeNode*) self)->attributes, vala_attribute_new ("SimpleType", NULL));
1773
1871
                        }
1774
1872
                        f = (ValaField*) vala_iterator_get (_f_it);
1775
1873
                        if (vala_field_get_binding (f) == MEMBER_BINDING_INSTANCE) {
1776
 
                                _tmp0_ = vala_data_type_is_disposable (vala_field_get_field_type (f));
 
1874
                                _tmp0_ = vala_data_type_is_disposable (vala_variable_get_variable_type ((ValaVariable*) f));
1777
1875
                        } else {
1778
1876
                                _tmp0_ = FALSE;
1779
1877
                        }
1825
1923
                                }
1826
1924
                                f = (ValaField*) vala_iterator_get (_f_it);
1827
1925
                                if (vala_field_get_binding (f) == MEMBER_BINDING_INSTANCE) {
1828
 
                                        _tmp2_ = vala_struct_is_recursive_value_type (self, vala_field_get_field_type (f));
 
1926
                                        _tmp2_ = vala_struct_is_recursive_value_type (self, vala_variable_get_variable_type ((ValaVariable*) f));
1829
1927
                                } else {
1830
1928
                                        _tmp2_ = FALSE;
1831
1929
                                }
1918
2016
                        f = (ValaField*) vala_iterator_get (_f_it);
1919
2017
                        vala_code_node_check ((ValaCodeNode*) f, analyzer);
1920
2018
                        if (vala_field_get_binding (f) == MEMBER_BINDING_INSTANCE) {
1921
 
                                _tmp3_ = vala_struct_is_recursive_value_type (self, vala_field_get_field_type (f));
 
2019
                                _tmp3_ = vala_struct_is_recursive_value_type (self, vala_variable_get_variable_type ((ValaVariable*) f));
1922
2020
                        } else {
1923
2021
                                _tmp3_ = FALSE;
1924
2022
                        }
1933
2031
                                return result;
1934
2032
                        }
1935
2033
                        if (vala_field_get_binding (f) == MEMBER_BINDING_INSTANCE) {
1936
 
                                _tmp4_ = vala_field_get_initializer (f) != NULL;
 
2034
                                _tmp4_ = vala_variable_get_initializer ((ValaVariable*) f) != NULL;
1937
2035
                        } else {
1938
2036
                                _tmp4_ = FALSE;
1939
2037
                        }
2259
2357
}
2260
2358
 
2261
2359
 
 
2360
/**
 
2361
 * Represents a struct declaration in the source code.
 
2362
 */
2262
2363
GType vala_struct_get_type (void) {
2263
2364
        static volatile gsize vala_struct_type_id__volatile = 0;
2264
2365
        if (g_once_init_enter (&vala_struct_type_id__volatile)) {