~ubuntu-branches/ubuntu/maverick/vala/maverick

« back to all changes in this revision

Viewing changes to vala/valaswitchsection.c

  • Committer: Bazaar Package Importer
  • Author(s): Didier Roche
  • Date: 2010-04-02 10:10:55 UTC
  • mfrom: (1.4.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20100402101055-qbx3okzv0tnp3wpp
Tags: 0.8.0-0ubuntu1
* New upstream release:
  - Infer type arguments when calling generic methods.
  - Support `in' operator for arrays.
  - Add experimental support for regular expression literals.
  - Add experimental support for chained relational expressions.
  - Add va_list support.
  - Add clutter-gtk-0.10 bindings (Gordon Allott).
  - Add gdl-1.0 bindings (Nicolas Joseph).
  - Add gstreamer-app-0.10 bindings (Sebastian Dröge).
  - Add gstreamer-cdda-0.10 bindings (Sebastian Dröge).
  - Add gudev-1.0 bindings (Jim Nelson).
  - Add libgda-report-4.0 bindings (Shawn Ferris).
  - Add libgvc (graphviz) bindings (Martin Olsson).
  - Add purple bindings (Adrien Bustany).
  - Many bug fixes and binding updates.
* debian/patches/99_ltmain_as-needed.patch: refreshed

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
 
4
4
/* valaswitchsection.vala
5
5
 *
6
 
 * Copyright (C) 2006-2009  Jürg Billeter
 
6
 * Copyright (C) 2006-2010  Jürg Billeter
7
7
 *
8
8
 * This library is free software; you can redistribute it and/or
9
9
 * modify it under the terms of the GNU Lesser General Public
615
615
typedef struct _ValaLockStatement ValaLockStatement;
616
616
typedef struct _ValaLockStatementClass ValaLockStatementClass;
617
617
 
 
618
#define VALA_TYPE_UNLOCK_STATEMENT (vala_unlock_statement_get_type ())
 
619
#define VALA_UNLOCK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_UNLOCK_STATEMENT, ValaUnlockStatement))
 
620
#define VALA_UNLOCK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_UNLOCK_STATEMENT, ValaUnlockStatementClass))
 
621
#define VALA_IS_UNLOCK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_UNLOCK_STATEMENT))
 
622
#define VALA_IS_UNLOCK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_UNLOCK_STATEMENT))
 
623
#define VALA_UNLOCK_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_UNLOCK_STATEMENT, ValaUnlockStatementClass))
 
624
 
 
625
typedef struct _ValaUnlockStatement ValaUnlockStatement;
 
626
typedef struct _ValaUnlockStatementClass ValaUnlockStatementClass;
 
627
 
618
628
#define VALA_TYPE_DELETE_STATEMENT (vala_delete_statement_get_type ())
619
629
#define VALA_DELETE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DELETE_STATEMENT, ValaDeleteStatement))
620
630
#define VALA_DELETE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DELETE_STATEMENT, ValaDeleteStatementClass))
685
695
typedef struct _ValaRealLiteral ValaRealLiteral;
686
696
typedef struct _ValaRealLiteralClass ValaRealLiteralClass;
687
697
 
 
698
#define VALA_TYPE_REGEX_LITERAL (vala_regex_literal_get_type ())
 
699
#define VALA_REGEX_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_REGEX_LITERAL, ValaRegexLiteral))
 
700
#define VALA_REGEX_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_REGEX_LITERAL, ValaRegexLiteralClass))
 
701
#define VALA_IS_REGEX_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_REGEX_LITERAL))
 
702
#define VALA_IS_REGEX_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_REGEX_LITERAL))
 
703
#define VALA_REGEX_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_REGEX_LITERAL, ValaRegexLiteralClass))
 
704
 
 
705
typedef struct _ValaRegexLiteral ValaRegexLiteral;
 
706
typedef struct _ValaRegexLiteralClass ValaRegexLiteralClass;
 
707
 
688
708
#define VALA_TYPE_STRING_LITERAL (vala_string_literal_get_type ())
689
709
#define VALA_STRING_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_STRING_LITERAL, ValaStringLiteral))
690
710
#define VALA_STRING_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_STRING_LITERAL, ValaStringLiteralClass))
705
725
typedef struct _ValaTemplate ValaTemplate;
706
726
typedef struct _ValaTemplateClass ValaTemplateClass;
707
727
 
 
728
#define VALA_TYPE_LIST_LITERAL (vala_list_literal_get_type ())
 
729
#define VALA_LIST_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LIST_LITERAL, ValaListLiteral))
 
730
#define VALA_LIST_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LIST_LITERAL, ValaListLiteralClass))
 
731
#define VALA_IS_LIST_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LIST_LITERAL))
 
732
#define VALA_IS_LIST_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LIST_LITERAL))
 
733
#define VALA_LIST_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LIST_LITERAL, ValaListLiteralClass))
 
734
 
 
735
typedef struct _ValaListLiteral ValaListLiteral;
 
736
typedef struct _ValaListLiteralClass ValaListLiteralClass;
 
737
 
 
738
#define VALA_TYPE_SET_LITERAL (vala_set_literal_get_type ())
 
739
#define VALA_SET_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SET_LITERAL, ValaSetLiteral))
 
740
#define VALA_SET_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SET_LITERAL, ValaSetLiteralClass))
 
741
#define VALA_IS_SET_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SET_LITERAL))
 
742
#define VALA_IS_SET_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SET_LITERAL))
 
743
#define VALA_SET_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SET_LITERAL, ValaSetLiteralClass))
 
744
 
 
745
typedef struct _ValaSetLiteral ValaSetLiteral;
 
746
typedef struct _ValaSetLiteralClass ValaSetLiteralClass;
 
747
 
 
748
#define VALA_TYPE_MAP_LITERAL (vala_map_literal_get_type ())
 
749
#define VALA_MAP_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MAP_LITERAL, ValaMapLiteral))
 
750
#define VALA_MAP_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MAP_LITERAL, ValaMapLiteralClass))
 
751
#define VALA_IS_MAP_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MAP_LITERAL))
 
752
#define VALA_IS_MAP_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MAP_LITERAL))
 
753
#define VALA_MAP_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MAP_LITERAL, ValaMapLiteralClass))
 
754
 
 
755
typedef struct _ValaMapLiteral ValaMapLiteral;
 
756
typedef struct _ValaMapLiteralClass ValaMapLiteralClass;
 
757
 
 
758
#define VALA_TYPE_TUPLE (vala_tuple_get_type ())
 
759
#define VALA_TUPLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TUPLE, ValaTuple))
 
760
#define VALA_TUPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TUPLE, ValaTupleClass))
 
761
#define VALA_IS_TUPLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TUPLE))
 
762
#define VALA_IS_TUPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TUPLE))
 
763
#define VALA_TUPLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TUPLE, ValaTupleClass))
 
764
 
 
765
typedef struct _ValaTuple ValaTuple;
 
766
typedef struct _ValaTupleClass ValaTupleClass;
 
767
 
708
768
#define VALA_TYPE_NULL_LITERAL (vala_null_literal_get_type ())
709
769
#define VALA_NULL_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_NULL_LITERAL, ValaNullLiteral))
710
770
#define VALA_NULL_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_NULL_LITERAL, ValaNullLiteralClass))
1053
1113
        void (*visit_try_statement) (ValaCodeVisitor* self, ValaTryStatement* stmt);
1054
1114
        void (*visit_catch_clause) (ValaCodeVisitor* self, ValaCatchClause* clause);
1055
1115
        void (*visit_lock_statement) (ValaCodeVisitor* self, ValaLockStatement* stmt);
 
1116
        void (*visit_unlock_statement) (ValaCodeVisitor* self, ValaUnlockStatement* stmt);
1056
1117
        void (*visit_delete_statement) (ValaCodeVisitor* self, ValaDeleteStatement* stmt);
1057
1118
        void (*visit_expression) (ValaCodeVisitor* self, ValaExpression* expr);
1058
1119
        void (*visit_array_creation_expression) (ValaCodeVisitor* self, ValaArrayCreationExpression* expr);
1060
1121
        void (*visit_character_literal) (ValaCodeVisitor* self, ValaCharacterLiteral* lit);
1061
1122
        void (*visit_integer_literal) (ValaCodeVisitor* self, ValaIntegerLiteral* lit);
1062
1123
        void (*visit_real_literal) (ValaCodeVisitor* self, ValaRealLiteral* lit);
 
1124
        void (*visit_regex_literal) (ValaCodeVisitor* self, ValaRegexLiteral* lit);
1063
1125
        void (*visit_string_literal) (ValaCodeVisitor* self, ValaStringLiteral* lit);
1064
1126
        void (*visit_template) (ValaCodeVisitor* self, ValaTemplate* tmpl);
 
1127
        void (*visit_list_literal) (ValaCodeVisitor* self, ValaListLiteral* lit);
 
1128
        void (*visit_set_literal) (ValaCodeVisitor* self, ValaSetLiteral* lit);
 
1129
        void (*visit_map_literal) (ValaCodeVisitor* self, ValaMapLiteral* lit);
 
1130
        void (*visit_tuple) (ValaCodeVisitor* self, ValaTuple* tuple);
1065
1131
        void (*visit_null_literal) (ValaCodeVisitor* self, ValaNullLiteral* lit);
1066
1132
        void (*visit_member_access) (ValaCodeVisitor* self, ValaMemberAccess* expr);
1067
1133
        void (*visit_method_call) (ValaCodeVisitor* self, ValaMethodCall* expr);
1094
1160
        ValaDataType* void_type;
1095
1161
        ValaDataType* bool_type;
1096
1162
        ValaDataType* string_type;
 
1163
        ValaDataType* regex_type;
1097
1164
        ValaDataType* uchar_type;
1098
1165
        ValaDataType* short_type;
1099
1166
        ValaDataType* ushort_type;
1114
1181
        ValaDataType* garray_type;
1115
1182
        ValaDataType* gvaluearray_type;
1116
1183
        ValaClass* gerror_type;
 
1184
        ValaDataType* list_type;
 
1185
        ValaDataType* tuple_type;
1117
1186
        gint next_lambda_id;
1118
1187
        ValaList* replaced_nodes;
1119
1188
};
1129
1198
void vala_code_node_unref (gpointer instance);
1130
1199
GParamSpec* vala_param_spec_code_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
1131
1200
void vala_value_set_code_node (GValue* value, gpointer v_object);
 
1201
void vala_value_take_code_node (GValue* value, gpointer v_object);
1132
1202
gpointer vala_value_get_code_node (const GValue* value);
1133
1203
GType vala_code_node_get_type (void);
1134
1204
gpointer vala_code_visitor_ref (gpointer instance);
1135
1205
void vala_code_visitor_unref (gpointer instance);
1136
1206
GParamSpec* vala_param_spec_code_visitor (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
1137
1207
void vala_value_set_code_visitor (GValue* value, gpointer v_object);
 
1208
void vala_value_take_code_visitor (GValue* value, gpointer v_object);
1138
1209
gpointer vala_value_get_code_visitor (const GValue* value);
1139
1210
GType vala_code_visitor_get_type (void);
1140
1211
GType vala_semantic_analyzer_get_type (void);
1155
1226
void vala_source_reference_unref (gpointer instance);
1156
1227
GParamSpec* vala_param_spec_source_reference (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
1157
1228
void vala_value_set_source_reference (GValue* value, gpointer v_object);
 
1229
void vala_value_take_source_reference (GValue* value, gpointer v_object);
1158
1230
gpointer vala_value_get_source_reference (const GValue* value);
1159
1231
GType vala_source_reference_get_type (void);
1160
1232
ValaBlock* vala_block_new (ValaSourceReference* source_reference);
1180
1252
void vala_scope_unref (gpointer instance);
1181
1253
GParamSpec* vala_param_spec_scope (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
1182
1254
void vala_value_set_scope (GValue* value, gpointer v_object);
 
1255
void vala_value_take_scope (GValue* value, gpointer v_object);
1183
1256
gpointer vala_value_get_scope (const GValue* value);
1184
1257
GType vala_scope_get_type (void);
1185
1258
ValaScope* vala_symbol_get_scope (ValaSymbol* self);
1188
1261
void vala_source_file_unref (gpointer instance);
1189
1262
GParamSpec* vala_param_spec_source_file (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
1190
1263
void vala_value_set_source_file (GValue* value, gpointer v_object);
 
1264
void vala_value_take_source_file (GValue* value, gpointer v_object);
1191
1265
gpointer vala_value_get_source_file (const GValue* value);
1192
1266
GType vala_source_file_get_type (void);
1193
1267
GType vala_namespace_get_type (void);
1233
1307
GType vala_try_statement_get_type (void);
1234
1308
GType vala_catch_clause_get_type (void);
1235
1309
GType vala_lock_statement_get_type (void);
 
1310
GType vala_unlock_statement_get_type (void);
1236
1311
GType vala_delete_statement_get_type (void);
1237
1312
GType vala_array_creation_expression_get_type (void);
1238
1313
GType vala_literal_get_type (void);
1240
1315
GType vala_character_literal_get_type (void);
1241
1316
GType vala_integer_literal_get_type (void);
1242
1317
GType vala_real_literal_get_type (void);
 
1318
GType vala_regex_literal_get_type (void);
1243
1319
GType vala_string_literal_get_type (void);
1244
1320
GType vala_template_get_type (void);
 
1321
GType vala_list_literal_get_type (void);
 
1322
GType vala_set_literal_get_type (void);
 
1323
GType vala_map_literal_get_type (void);
 
1324
GType vala_tuple_get_type (void);
1245
1325
GType vala_null_literal_get_type (void);
1246
1326
GType vala_member_access_get_type (void);
1247
1327
GType vala_method_call_get_type (void);
1268
1348
void vala_semantic_analyzer_set_current_symbol (ValaSemanticAnalyzer* self, ValaSymbol* value);
1269
1349
ValaList* vala_block_get_local_variables (ValaBlock* self);
1270
1350
void vala_symbol_set_active (ValaSymbol* self, gboolean value);
 
1351
void vala_code_node_add_error_types (ValaCodeNode* self, ValaList* error_types);
 
1352
ValaList* vala_code_node_get_error_types (ValaCodeNode* self);
1271
1353
static gboolean vala_switch_section_real_check (ValaCodeNode* base, ValaSemanticAnalyzer* analyzer);
1272
1354
static void vala_switch_section_finalize (ValaCodeNode* obj);
1273
1355
 
1294
1376
}
1295
1377
 
1296
1378
 
 
1379
static gpointer _vala_collection_object_ref0 (gpointer self) {
 
1380
        return self ? vala_collection_object_ref (self) : NULL;
 
1381
}
 
1382
 
 
1383
 
1297
1384
ValaList* vala_switch_section_get_labels (ValaSwitchSection* self) {
1298
 
        ValaList* result;
 
1385
        ValaList* result = NULL;
1299
1386
        g_return_val_if_fail (self != NULL, NULL);
1300
 
        result = (ValaList*) vala_read_only_list_new (VALA_TYPE_SWITCH_LABEL, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, self->priv->labels);
 
1387
        result = _vala_collection_object_ref0 (self->priv->labels);
1301
1388
        return result;
1302
1389
}
1303
1390
 
1304
1391
 
1305
1392
gboolean vala_switch_section_has_default_label (ValaSwitchSection* self) {
1306
 
        gboolean result;
 
1393
        gboolean result = FALSE;
1307
1394
        g_return_val_if_fail (self != NULL, FALSE);
1308
1395
        {
1309
1396
                ValaIterator* _label_it;
1381
1468
 
1382
1469
static gboolean vala_switch_section_real_check (ValaCodeNode* base, ValaSemanticAnalyzer* analyzer) {
1383
1470
        ValaSwitchSection * self;
1384
 
        gboolean result;
 
1471
        gboolean result = FALSE;
1385
1472
        ValaSymbol* old_symbol;
1386
1473
        ValaBlock* old_insert_block;
1387
1474
        ValaBlock* _tmp2_;
1388
 
        ValaBlock* _tmp7_;
 
1475
        ValaBlock* _tmp10_;
1389
1476
        self = (ValaSwitchSection*) base;
1390
1477
        g_return_val_if_fail (analyzer != NULL, FALSE);
1391
1478
        if (vala_code_node_get_checked ((ValaCodeNode*) self)) {
1446
1533
                }
1447
1534
                _vala_collection_object_unref0 (_local_it);
1448
1535
        }
 
1536
        {
 
1537
                ValaList* _tmp7_;
 
1538
                ValaIterator* _tmp8_;
 
1539
                ValaIterator* _stmt_it;
 
1540
                _stmt_it = (_tmp8_ = vala_iterable_iterator ((ValaIterable*) (_tmp7_ = vala_block_get_statements ((ValaBlock*) self))), _vala_collection_object_unref0 (_tmp7_), _tmp8_);
 
1541
                while (TRUE) {
 
1542
                        ValaStatement* stmt;
 
1543
                        ValaList* _tmp9_;
 
1544
                        if (!vala_iterator_next (_stmt_it)) {
 
1545
                                break;
 
1546
                        }
 
1547
                        stmt = (ValaStatement*) vala_iterator_get (_stmt_it);
 
1548
                        vala_code_node_add_error_types ((ValaCodeNode*) self, _tmp9_ = vala_code_node_get_error_types ((ValaCodeNode*) stmt));
 
1549
                        _vala_collection_object_unref0 (_tmp9_);
 
1550
                        _vala_code_node_unref0 (stmt);
 
1551
                }
 
1552
                _vala_collection_object_unref0 (_stmt_it);
 
1553
        }
1449
1554
        vala_semantic_analyzer_set_current_symbol (analyzer, old_symbol);
1450
 
        analyzer->insert_block = (_tmp7_ = _vala_code_node_ref0 (old_insert_block), _vala_code_node_unref0 (analyzer->insert_block), _tmp7_);
 
1555
        analyzer->insert_block = (_tmp10_ = _vala_code_node_ref0 (old_insert_block), _vala_code_node_unref0 (analyzer->insert_block), _tmp10_);
1451
1556
        result = !vala_code_node_get_error ((ValaCodeNode*) self);
1452
1557
        _vala_code_node_unref0 (old_symbol);
1453
1558
        _vala_code_node_unref0 (old_insert_block);
1480
1585
 
1481
1586
 
1482
1587
GType vala_switch_section_get_type (void) {
1483
 
        static GType vala_switch_section_type_id = 0;
1484
 
        if (vala_switch_section_type_id == 0) {
 
1588
        static volatile gsize vala_switch_section_type_id__volatile = 0;
 
1589
        if (g_once_init_enter (&vala_switch_section_type_id__volatile)) {
1485
1590
                static const GTypeInfo g_define_type_info = { sizeof (ValaSwitchSectionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_switch_section_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaSwitchSection), 0, (GInstanceInitFunc) vala_switch_section_instance_init, NULL };
 
1591
                GType vala_switch_section_type_id;
1486
1592
                vala_switch_section_type_id = g_type_register_static (VALA_TYPE_BLOCK, "ValaSwitchSection", &g_define_type_info, 0);
 
1593
                g_once_init_leave (&vala_switch_section_type_id__volatile, vala_switch_section_type_id);
1487
1594
        }
1488
 
        return vala_switch_section_type_id;
 
1595
        return vala_switch_section_type_id__volatile;
1489
1596
}
1490
1597
 
1491
1598