add user flags

This commit is contained in:
David Rose 2004-07-01 23:17:42 +00:00
parent 9222e02084
commit 2504d41baa
2 changed files with 149 additions and 145 deletions

View File

@ -99,6 +99,13 @@ public:
F_clrecv = 0x0040, F_clrecv = 0x0040,
F_ownsend = 0x0080, F_ownsend = 0x0080,
F_airecv = 0x0100, F_airecv = 0x0100,
// These are reserved for client code use; they are not set or
// cleared by any code in this module.
F_user_1 = 0x1000,
F_user_2 = 0x2000,
F_user_3 = 0x4000,
F_user_4 = 0x8000,
}; };
void add_flag(enum Flags flag); void add_flag(enum Flags flag);
void set_flags(int flags); void set_flags(int flags);

View File

@ -85,7 +85,6 @@ static DCClass *current_class = (DCClass *)NULL;
static DCSwitch *current_switch = (DCSwitch *)NULL; static DCSwitch *current_switch = (DCSwitch *)NULL;
static DCAtomicField *current_atomic = (DCAtomicField *)NULL; static DCAtomicField *current_atomic = (DCAtomicField *)NULL;
static DCMolecularField *current_molecular = (DCMolecularField *)NULL; static DCMolecularField *current_molecular = (DCMolecularField *)NULL;
static DCAtomicField::ElementType atomic_element(new DCSimpleParameter(ST_invalid));
static DCParameter *current_parameter = (DCParameter *)NULL; static DCParameter *current_parameter = (DCParameter *)NULL;
static DCPacker default_packer; static DCPacker default_packer;
static DCPacker *current_packer; static DCPacker *current_packer;
@ -244,23 +243,23 @@ static const short yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] = static const short yyrline[] =
{ {
0, 150, 152, 155, 157, 158, 169, 175, 176, 179, 0, 149, 151, 154, 156, 157, 168, 174, 175, 178,
181, 187, 189, 195, 200, 200, 207, 209, 215, 220, 180, 186, 188, 194, 199, 199, 206, 208, 214, 219,
226, 242, 244, 247, 247, 260, 277, 279, 282, 289, 225, 241, 243, 246, 246, 259, 276, 278, 281, 288,
297, 299, 300, 308, 314, 315, 320, 327, 327, 340, 296, 298, 299, 307, 313, 314, 319, 326, 326, 339,
357, 359, 362, 369, 377, 379, 380, 388, 390, 391, 356, 358, 361, 368, 376, 378, 379, 387, 389, 390,
395, 401, 401, 414, 416, 419, 421, 424, 430, 430, 394, 400, 400, 413, 415, 418, 420, 423, 428, 428,
455, 455, 466, 470, 472, 475, 480, 488, 499, 513, 452, 452, 463, 467, 469, 472, 477, 485, 496, 510,
527, 556, 562, 570, 575, 582, 589, 598, 604, 610, 524, 553, 559, 567, 572, 579, 586, 595, 601, 607,
620, 625, 632, 639, 645, 653, 655, 661, 667, 681, 617, 622, 629, 636, 642, 650, 652, 658, 664, 678,
687, 697, 700, 711, 715, 719, 724, 728, 731, 741, 684, 694, 697, 708, 712, 716, 721, 725, 728, 738,
745, 750, 754, 758, 762, 766, 766, 774, 774, 782, 742, 747, 751, 755, 759, 763, 763, 771, 771, 779,
782, 790, 796, 802, 808, 816, 818, 821, 823, 826, 779, 787, 793, 799, 805, 813, 815, 818, 820, 823,
828, 831, 836, 840, 844, 848, 852, 856, 860, 864, 825, 828, 833, 837, 841, 845, 849, 853, 857, 861,
868, 872, 876, 880, 884, 888, 892, 896, 900, 904, 865, 869, 873, 877, 881, 885, 889, 893, 897, 901,
908, 914, 919, 923, 927, 931, 935, 939, 943, 947, 905, 911, 916, 920, 924, 928, 932, 936, 940, 944,
951, 957, 957, 968, 984, 991, 1004, 1009, 1012, 1012, 948, 954, 954, 965, 981, 988, 1001, 1006, 1009, 1009,
1026, 1028, 1029, 1030, 1040, 1040, 1057, 1062, 1068 1023, 1025, 1026, 1027, 1037, 1037, 1054, 1059, 1065
}; };
#endif #endif
@ -1207,7 +1206,7 @@ yyreduce:
switch (yyn) { switch (yyn) {
case 5: case 5:
#line 159 "dcParser.yxx" #line 158 "dcParser.yxx"
{ {
if (!dc_file->add_class(yyvsp[0].u.dclass)) { if (!dc_file->add_class(yyvsp[0].u.dclass)) {
DCClass *old_class = dc_file->get_class_by_name(yyvsp[0].u.dclass->get_name()); DCClass *old_class = dc_file->get_class_by_name(yyvsp[0].u.dclass->get_name());
@ -1220,7 +1219,7 @@ case 5:
} }
break; break;
case 6: case 6:
#line 170 "dcParser.yxx" #line 169 "dcParser.yxx"
{ {
if (!dc_file->add_switch(yyvsp[0].u.dswitch)) { if (!dc_file->add_switch(yyvsp[0].u.dswitch)) {
yyerror("Duplicate class name: " + yyvsp[0].u.dswitch->get_name()); yyerror("Duplicate class name: " + yyvsp[0].u.dswitch->get_name());
@ -1228,49 +1227,49 @@ case 6:
} }
break; break;
case 10: case 10:
#line 182 "dcParser.yxx" #line 181 "dcParser.yxx"
{ {
yyval.str = yyvsp[-2].str + string("/") + yyvsp[0].str; yyval.str = yyvsp[-2].str + string("/") + yyvsp[0].str;
} }
break; break;
case 12: case 12:
#line 190 "dcParser.yxx" #line 189 "dcParser.yxx"
{ {
yyval.str = yyvsp[-2].str + string(".") + yyvsp[0].str; yyval.str = yyvsp[-2].str + string(".") + yyvsp[0].str;
} }
break; break;
case 13: case 13:
#line 197 "dcParser.yxx" #line 196 "dcParser.yxx"
{ {
dc_file->add_import_module(yyvsp[0].str); dc_file->add_import_module(yyvsp[0].str);
} }
break; break;
case 14: case 14:
#line 201 "dcParser.yxx" #line 200 "dcParser.yxx"
{ {
dc_file->add_import_module(yyvsp[-1].str); dc_file->add_import_module(yyvsp[-1].str);
} }
break; break;
case 17: case 17:
#line 210 "dcParser.yxx" #line 209 "dcParser.yxx"
{ {
dc_file->add_import_symbol("*"); dc_file->add_import_symbol("*");
} }
break; break;
case 18: case 18:
#line 217 "dcParser.yxx" #line 216 "dcParser.yxx"
{ {
dc_file->add_import_symbol(yyvsp[0].str); dc_file->add_import_symbol(yyvsp[0].str);
} }
break; break;
case 19: case 19:
#line 221 "dcParser.yxx" #line 220 "dcParser.yxx"
{ {
dc_file->add_import_symbol(yyvsp[0].str); dc_file->add_import_symbol(yyvsp[0].str);
} }
break; break;
case 20: case 20:
#line 228 "dcParser.yxx" #line 227 "dcParser.yxx"
{ {
DCTypedef *dtypedef = new DCTypedef(yyvsp[0].u.parameter); DCTypedef *dtypedef = new DCTypedef(yyvsp[0].u.parameter);
@ -1285,21 +1284,21 @@ case 20:
} }
break; break;
case 23: case 23:
#line 249 "dcParser.yxx" #line 248 "dcParser.yxx"
{ {
yyval.u.dclass = current_class; yyval.u.dclass = current_class;
current_class = new DCClass(yyvsp[0].str, false, false); current_class = new DCClass(yyvsp[0].str, false, false);
} }
break; break;
case 24: case 24:
#line 254 "dcParser.yxx" #line 253 "dcParser.yxx"
{ {
yyval.u.dclass = current_class; yyval.u.dclass = current_class;
current_class = yyvsp[-4].u.dclass; current_class = yyvsp[-4].u.dclass;
} }
break; break;
case 25: case 25:
#line 262 "dcParser.yxx" #line 261 "dcParser.yxx"
{ {
DCClass *dclass = dc_file->get_class_by_name(yyvsp[0].str); DCClass *dclass = dc_file->get_class_by_name(yyvsp[0].str);
if (dclass == (DCClass *)NULL) { if (dclass == (DCClass *)NULL) {
@ -1315,7 +1314,7 @@ case 25:
} }
break; break;
case 28: case 28:
#line 284 "dcParser.yxx" #line 283 "dcParser.yxx"
{ {
if (yyvsp[0].u.dclass != (DCClass *)NULL) { if (yyvsp[0].u.dclass != (DCClass *)NULL) {
current_class->add_parent(yyvsp[0].u.dclass); current_class->add_parent(yyvsp[0].u.dclass);
@ -1323,7 +1322,7 @@ case 28:
} }
break; break;
case 29: case 29:
#line 290 "dcParser.yxx" #line 289 "dcParser.yxx"
{ {
if (yyvsp[0].u.dclass != (DCClass *)NULL) { if (yyvsp[0].u.dclass != (DCClass *)NULL) {
current_class->add_parent(yyvsp[0].u.dclass); current_class->add_parent(yyvsp[0].u.dclass);
@ -1331,7 +1330,7 @@ case 29:
} }
break; break;
case 32: case 32:
#line 301 "dcParser.yxx" #line 300 "dcParser.yxx"
{ {
if (!current_class->add_field(yyvsp[0].u.field)) { if (!current_class->add_field(yyvsp[0].u.field)) {
yyerror("Duplicate field name: " + yyvsp[0].u.field->get_name()); yyerror("Duplicate field name: " + yyvsp[0].u.field->get_name());
@ -1339,42 +1338,42 @@ case 32:
} }
break; break;
case 33: case 33:
#line 310 "dcParser.yxx" #line 309 "dcParser.yxx"
{ {
yyval.u.field = yyvsp[-1].u.field; yyval.u.field = yyvsp[-1].u.field;
yyval.u.field->set_flags(yyvsp[0].u.s_int); yyval.u.field->set_flags(yyvsp[0].u.s_int);
} }
break; break;
case 35: case 35:
#line 316 "dcParser.yxx" #line 315 "dcParser.yxx"
{ {
yyval.u.field = yyvsp[-2].u.parameter; yyval.u.field = yyvsp[-2].u.parameter;
yyval.u.field->set_flags(yyvsp[-1].u.s_int); yyval.u.field->set_flags(yyvsp[-1].u.s_int);
} }
break; break;
case 36: case 36:
#line 321 "dcParser.yxx" #line 320 "dcParser.yxx"
{ {
yyval.u.field = yyvsp[-1].u.parameter; yyval.u.field = yyvsp[-1].u.parameter;
yyval.u.field->set_flags(yyvsp[0].u.s_int); yyval.u.field->set_flags(yyvsp[0].u.s_int);
} }
break; break;
case 37: case 37:
#line 329 "dcParser.yxx" #line 328 "dcParser.yxx"
{ {
yyval.u.dclass = current_class; yyval.u.dclass = current_class;
current_class = new DCClass(yyvsp[0].str, true, false); current_class = new DCClass(yyvsp[0].str, true, false);
} }
break; break;
case 38: case 38:
#line 334 "dcParser.yxx" #line 333 "dcParser.yxx"
{ {
yyval.u.dclass = current_class; yyval.u.dclass = current_class;
current_class = yyvsp[-4].u.dclass; current_class = yyvsp[-4].u.dclass;
} }
break; break;
case 39: case 39:
#line 342 "dcParser.yxx" #line 341 "dcParser.yxx"
{ {
DCClass *dstruct = dc_file->get_class_by_name(yyvsp[0].str); DCClass *dstruct = dc_file->get_class_by_name(yyvsp[0].str);
if (dstruct == (DCClass *)NULL) { if (dstruct == (DCClass *)NULL) {
@ -1390,7 +1389,7 @@ case 39:
} }
break; break;
case 42: case 42:
#line 364 "dcParser.yxx" #line 363 "dcParser.yxx"
{ {
if (yyvsp[0].u.dclass != (DCClass *)NULL) { if (yyvsp[0].u.dclass != (DCClass *)NULL) {
current_class->add_parent(yyvsp[0].u.dclass); current_class->add_parent(yyvsp[0].u.dclass);
@ -1398,7 +1397,7 @@ case 42:
} }
break; break;
case 43: case 43:
#line 370 "dcParser.yxx" #line 369 "dcParser.yxx"
{ {
if (yyvsp[0].u.dclass != (DCClass *)NULL) { if (yyvsp[0].u.dclass != (DCClass *)NULL) {
current_class->add_parent(yyvsp[0].u.dclass); current_class->add_parent(yyvsp[0].u.dclass);
@ -1406,7 +1405,7 @@ case 43:
} }
break; break;
case 46: case 46:
#line 381 "dcParser.yxx" #line 380 "dcParser.yxx"
{ {
if (!current_class->add_field(yyvsp[0].u.field)) { if (!current_class->add_field(yyvsp[0].u.field)) {
yyerror("Duplicate field name: " + yyvsp[0].u.field->get_name()); yyerror("Duplicate field name: " + yyvsp[0].u.field->get_name());
@ -1414,40 +1413,39 @@ case 46:
} }
break; break;
case 49: case 49:
#line 392 "dcParser.yxx" #line 391 "dcParser.yxx"
{ {
yyval.u.field = yyvsp[-1].u.parameter; yyval.u.field = yyvsp[-1].u.parameter;
} }
break; break;
case 50: case 50:
#line 396 "dcParser.yxx" #line 395 "dcParser.yxx"
{ {
yyval.u.field = yyvsp[0].u.parameter; yyval.u.field = yyvsp[0].u.parameter;
} }
break; break;
case 51: case 51:
#line 403 "dcParser.yxx" #line 402 "dcParser.yxx"
{ {
yyval.u.field = current_atomic; yyval.u.field = current_atomic;
current_atomic = new DCAtomicField(yyvsp[-1].str); current_atomic = new DCAtomicField(yyvsp[-1].str);
} }
break; break;
case 52: case 52:
#line 408 "dcParser.yxx" #line 407 "dcParser.yxx"
{ {
yyval.u.field = current_atomic; yyval.u.field = current_atomic;
current_atomic = yyvsp[-2].u.atomic; current_atomic = yyvsp[-2].u.atomic;
} }
break; break;
case 57: case 57:
#line 426 "dcParser.yxx" #line 425 "dcParser.yxx"
{ {
atomic_element = DCAtomicField::ElementType(yyvsp[0].u.parameter); current_atomic->add_element(yyvsp[0].u.parameter);
current_atomic->add_element(atomic_element);
} }
break; break;
case 58: case 58:
#line 431 "dcParser.yxx" #line 429 "dcParser.yxx"
{ {
current_packer = &default_packer; current_packer = &default_packer;
current_packer->clear_data(); current_packer->clear_data();
@ -1455,12 +1453,11 @@ case 58:
} }
break; break;
case 59: case 59:
#line 437 "dcParser.yxx" #line 435 "dcParser.yxx"
{ {
bool is_valid = yyvsp[-3].u.parameter->is_valid(); bool is_valid = yyvsp[-3].u.parameter->is_valid();
atomic_element = DCAtomicField::ElementType(yyvsp[-3].u.parameter);
if (current_packer->end_pack()) { if (current_packer->end_pack()) {
atomic_element.set_default_value(current_packer->get_string()); yyvsp[-3].u.parameter->set_default_value(current_packer->get_string());
} else { } else {
if (is_valid) { if (is_valid) {
@ -1470,29 +1467,29 @@ case 59:
// error (there's no way for us to validate the syntax). So we'll // error (there's no way for us to validate the syntax). So we'll
// just ignore the default value in this case. // just ignore the default value in this case.
} }
current_atomic->add_element(atomic_element); current_atomic->add_element(yyvsp[-3].u.parameter);
} }
break; break;
case 60: case 60:
#line 457 "dcParser.yxx" #line 454 "dcParser.yxx"
{ {
current_parameter = yyvsp[0].u.parameter; current_parameter = yyvsp[0].u.parameter;
} }
break; break;
case 61: case 61:
#line 461 "dcParser.yxx" #line 458 "dcParser.yxx"
{ {
yyval.u.parameter = yyvsp[0].u.parameter; yyval.u.parameter = yyvsp[0].u.parameter;
} }
break; break;
case 65: case 65:
#line 477 "dcParser.yxx" #line 474 "dcParser.yxx"
{ {
yyval.u.parameter = new DCSimpleParameter(yyvsp[0].u.subatomic); yyval.u.parameter = new DCSimpleParameter(yyvsp[0].u.subatomic);
} }
break; break;
case 66: case 66:
#line 481 "dcParser.yxx" #line 478 "dcParser.yxx"
{ {
DCSimpleParameter *simple_param = new DCSimpleParameter(yyvsp[-3].u.subatomic); DCSimpleParameter *simple_param = new DCSimpleParameter(yyvsp[-3].u.subatomic);
if (!simple_param->set_range(double_range)) { if (!simple_param->set_range(double_range)) {
@ -1502,7 +1499,7 @@ case 66:
} }
break; break;
case 67: case 67:
#line 489 "dcParser.yxx" #line 486 "dcParser.yxx"
{ {
DCSimpleParameter *simple_param = new DCSimpleParameter(yyvsp[-2].u.subatomic); DCSimpleParameter *simple_param = new DCSimpleParameter(yyvsp[-2].u.subatomic);
if (yyvsp[0].u.s_uint == 0) { if (yyvsp[0].u.s_uint == 0) {
@ -1515,7 +1512,7 @@ case 67:
} }
break; break;
case 68: case 68:
#line 500 "dcParser.yxx" #line 497 "dcParser.yxx"
{ {
DCSimpleParameter *simple_param = new DCSimpleParameter(yyvsp[-5].u.subatomic); DCSimpleParameter *simple_param = new DCSimpleParameter(yyvsp[-5].u.subatomic);
if (yyvsp[-3].u.s_uint == 0) { if (yyvsp[-3].u.s_uint == 0) {
@ -1531,7 +1528,7 @@ case 68:
} }
break; break;
case 69: case 69:
#line 514 "dcParser.yxx" #line 511 "dcParser.yxx"
{ {
DCSimpleParameter *simple_param = new DCSimpleParameter(yyvsp[-5].u.subatomic); DCSimpleParameter *simple_param = new DCSimpleParameter(yyvsp[-5].u.subatomic);
if (yyvsp[0].u.s_uint == 0) { if (yyvsp[0].u.s_uint == 0) {
@ -1547,7 +1544,7 @@ case 69:
} }
break; break;
case 70: case 70:
#line 528 "dcParser.yxx" #line 525 "dcParser.yxx"
{ {
DCTypedef *dtypedef = dc_file->get_typedef_by_name(yyvsp[0].str); DCTypedef *dtypedef = dc_file->get_typedef_by_name(yyvsp[0].str);
if (dtypedef == (DCTypedef *)NULL) { if (dtypedef == (DCTypedef *)NULL) {
@ -1578,7 +1575,7 @@ case 70:
} }
break; break;
case 71: case 71:
#line 557 "dcParser.yxx" #line 554 "dcParser.yxx"
{ {
// This is an inline struct definition. // This is an inline struct definition.
dc_file->add_thing_to_delete(yyvsp[0].u.dclass); dc_file->add_thing_to_delete(yyvsp[0].u.dclass);
@ -1586,7 +1583,7 @@ case 71:
} }
break; break;
case 72: case 72:
#line 563 "dcParser.yxx" #line 560 "dcParser.yxx"
{ {
// This is an inline switch definition. // This is an inline switch definition.
dc_file->add_thing_to_delete(yyvsp[0].u.dswitch); dc_file->add_thing_to_delete(yyvsp[0].u.dswitch);
@ -1594,13 +1591,13 @@ case 72:
} }
break; break;
case 73: case 73:
#line 572 "dcParser.yxx" #line 569 "dcParser.yxx"
{ {
double_range.clear(); double_range.clear();
} }
break; break;
case 74: case 74:
#line 576 "dcParser.yxx" #line 573 "dcParser.yxx"
{ {
double_range.clear(); double_range.clear();
if (!double_range.add_range(yyvsp[0].u.real, yyvsp[0].u.real)) { if (!double_range.add_range(yyvsp[0].u.real, yyvsp[0].u.real)) {
@ -1609,7 +1606,7 @@ case 74:
} }
break; break;
case 75: case 75:
#line 583 "dcParser.yxx" #line 580 "dcParser.yxx"
{ {
double_range.clear(); double_range.clear();
if (!double_range.add_range(yyvsp[-2].u.real, yyvsp[0].u.real)) { if (!double_range.add_range(yyvsp[-2].u.real, yyvsp[0].u.real)) {
@ -1618,7 +1615,7 @@ case 75:
} }
break; break;
case 76: case 76:
#line 590 "dcParser.yxx" #line 587 "dcParser.yxx"
{ {
double_range.clear(); double_range.clear();
if (yyvsp[0].u.real >= 0) { if (yyvsp[0].u.real >= 0) {
@ -1629,7 +1626,7 @@ case 76:
} }
break; break;
case 77: case 77:
#line 599 "dcParser.yxx" #line 596 "dcParser.yxx"
{ {
if (!double_range.add_range(yyvsp[0].u.real, yyvsp[0].u.real)) { if (!double_range.add_range(yyvsp[0].u.real, yyvsp[0].u.real)) {
yyerror("Overlapping range"); yyerror("Overlapping range");
@ -1637,7 +1634,7 @@ case 77:
} }
break; break;
case 78: case 78:
#line 605 "dcParser.yxx" #line 602 "dcParser.yxx"
{ {
if (!double_range.add_range(yyvsp[-2].u.real, yyvsp[0].u.real)) { if (!double_range.add_range(yyvsp[-2].u.real, yyvsp[0].u.real)) {
yyerror("Overlapping range"); yyerror("Overlapping range");
@ -1645,7 +1642,7 @@ case 78:
} }
break; break;
case 79: case 79:
#line 611 "dcParser.yxx" #line 608 "dcParser.yxx"
{ {
if (yyvsp[0].u.real >= 0) { if (yyvsp[0].u.real >= 0) {
yyerror("Syntax error"); yyerror("Syntax error");
@ -1655,13 +1652,13 @@ case 79:
} }
break; break;
case 80: case 80:
#line 622 "dcParser.yxx" #line 619 "dcParser.yxx"
{ {
uint_range.clear(); uint_range.clear();
} }
break; break;
case 81: case 81:
#line 626 "dcParser.yxx" #line 623 "dcParser.yxx"
{ {
uint_range.clear(); uint_range.clear();
if (!uint_range.add_range(yyvsp[0].u.s_uint, yyvsp[0].u.s_uint)) { if (!uint_range.add_range(yyvsp[0].u.s_uint, yyvsp[0].u.s_uint)) {
@ -1670,7 +1667,7 @@ case 81:
} }
break; break;
case 82: case 82:
#line 633 "dcParser.yxx" #line 630 "dcParser.yxx"
{ {
uint_range.clear(); uint_range.clear();
if (!uint_range.add_range(yyvsp[-2].u.s_uint, yyvsp[0].u.s_uint)) { if (!uint_range.add_range(yyvsp[-2].u.s_uint, yyvsp[0].u.s_uint)) {
@ -1679,7 +1676,7 @@ case 82:
} }
break; break;
case 83: case 83:
#line 640 "dcParser.yxx" #line 637 "dcParser.yxx"
{ {
if (!uint_range.add_range(yyvsp[0].u.s_uint, yyvsp[0].u.s_uint)) { if (!uint_range.add_range(yyvsp[0].u.s_uint, yyvsp[0].u.s_uint)) {
yyerror("Overlapping range"); yyerror("Overlapping range");
@ -1687,7 +1684,7 @@ case 83:
} }
break; break;
case 84: case 84:
#line 646 "dcParser.yxx" #line 643 "dcParser.yxx"
{ {
if (!uint_range.add_range(yyvsp[-2].u.s_uint, yyvsp[0].u.s_uint)) { if (!uint_range.add_range(yyvsp[-2].u.s_uint, yyvsp[0].u.s_uint)) {
yyerror("Overlapping range"); yyerror("Overlapping range");
@ -1695,20 +1692,20 @@ case 84:
} }
break; break;
case 86: case 86:
#line 656 "dcParser.yxx" #line 653 "dcParser.yxx"
{ {
yyval.u.parameter = new DCArrayParameter(yyvsp[-3].u.parameter, uint_range); yyval.u.parameter = new DCArrayParameter(yyvsp[-3].u.parameter, uint_range);
} }
break; break;
case 87: case 87:
#line 663 "dcParser.yxx" #line 660 "dcParser.yxx"
{ {
current_parameter->set_name(yyvsp[0].str); current_parameter->set_name(yyvsp[0].str);
yyval.u.parameter = current_parameter; yyval.u.parameter = current_parameter;
} }
break; break;
case 88: case 88:
#line 668 "dcParser.yxx" #line 665 "dcParser.yxx"
{ {
if (yyvsp[0].u.s_uint == 0) { if (yyvsp[0].u.s_uint == 0) {
yyerror("Invalid divisor."); yyerror("Invalid divisor.");
@ -1724,13 +1721,13 @@ case 88:
} }
break; break;
case 89: case 89:
#line 682 "dcParser.yxx" #line 679 "dcParser.yxx"
{ {
yyval.u.parameter = new DCArrayParameter(yyvsp[-3].u.parameter, uint_range); yyval.u.parameter = new DCArrayParameter(yyvsp[-3].u.parameter, uint_range);
} }
break; break;
case 90: case 90:
#line 689 "dcParser.yxx" #line 686 "dcParser.yxx"
{ {
if (yyvsp[0].str.length() != 1) { if (yyvsp[0].str.length() != 1) {
yyerror("Single character required."); yyerror("Single character required.");
@ -1741,7 +1738,7 @@ case 90:
} }
break; break;
case 92: case 92:
#line 702 "dcParser.yxx" #line 699 "dcParser.yxx"
{ {
yyval.u.s_uint = (unsigned int)yyvsp[0].u.uint64; yyval.u.s_uint = (unsigned int)yyvsp[0].u.uint64;
if (yyval.u.s_uint != yyvsp[0].u.uint64) { if (yyval.u.s_uint != yyvsp[0].u.uint64) {
@ -1751,19 +1748,19 @@ case 92:
} }
break; break;
case 95: case 95:
#line 721 "dcParser.yxx" #line 718 "dcParser.yxx"
{ {
yyval.u.real = (double)yyvsp[0].u.uint64; yyval.u.real = (double)yyvsp[0].u.uint64;
} }
break; break;
case 96: case 96:
#line 725 "dcParser.yxx" #line 722 "dcParser.yxx"
{ {
yyval.u.real = (double)yyvsp[0].u.int64; yyval.u.real = (double)yyvsp[0].u.int64;
} }
break; break;
case 98: case 98:
#line 733 "dcParser.yxx" #line 730 "dcParser.yxx"
{ {
if (yyvsp[0].str.length() != 1) { if (yyvsp[0].str.length() != 1) {
yyerror("Single character required."); yyerror("Single character required.");
@ -1774,73 +1771,73 @@ case 98:
} }
break; break;
case 100: case 100:
#line 747 "dcParser.yxx" #line 744 "dcParser.yxx"
{ {
current_packer->pack_int64(yyvsp[0].u.int64); current_packer->pack_int64(yyvsp[0].u.int64);
} }
break; break;
case 101: case 101:
#line 751 "dcParser.yxx" #line 748 "dcParser.yxx"
{ {
current_packer->pack_uint64(yyvsp[0].u.uint64); current_packer->pack_uint64(yyvsp[0].u.uint64);
} }
break; break;
case 102: case 102:
#line 755 "dcParser.yxx" #line 752 "dcParser.yxx"
{ {
current_packer->pack_double(yyvsp[0].u.real); current_packer->pack_double(yyvsp[0].u.real);
} }
break; break;
case 103: case 103:
#line 759 "dcParser.yxx" #line 756 "dcParser.yxx"
{ {
current_packer->pack_string(yyvsp[0].str); current_packer->pack_string(yyvsp[0].str);
} }
break; break;
case 104: case 104:
#line 763 "dcParser.yxx" #line 760 "dcParser.yxx"
{ {
current_packer->pack_literal_value(yyvsp[0].str); current_packer->pack_literal_value(yyvsp[0].str);
} }
break; break;
case 105: case 105:
#line 767 "dcParser.yxx" #line 764 "dcParser.yxx"
{ {
current_packer->push(); current_packer->push();
} }
break; break;
case 106: case 106:
#line 771 "dcParser.yxx" #line 768 "dcParser.yxx"
{ {
current_packer->pop(); current_packer->pop();
} }
break; break;
case 107: case 107:
#line 775 "dcParser.yxx" #line 772 "dcParser.yxx"
{ {
current_packer->push(); current_packer->push();
} }
break; break;
case 108: case 108:
#line 779 "dcParser.yxx" #line 776 "dcParser.yxx"
{ {
current_packer->pop(); current_packer->pop();
} }
break; break;
case 109: case 109:
#line 783 "dcParser.yxx" #line 780 "dcParser.yxx"
{ {
current_packer->push(); current_packer->push();
} }
break; break;
case 110: case 110:
#line 787 "dcParser.yxx" #line 784 "dcParser.yxx"
{ {
current_packer->pop(); current_packer->pop();
} }
break; break;
case 111: case 111:
#line 791 "dcParser.yxx" #line 788 "dcParser.yxx"
{ {
for (unsigned int i = 0; i < yyvsp[0].u.s_uint; i++) { for (unsigned int i = 0; i < yyvsp[0].u.s_uint; i++) {
current_packer->pack_int64(yyvsp[-2].u.int64); current_packer->pack_int64(yyvsp[-2].u.int64);
@ -1848,7 +1845,7 @@ case 111:
} }
break; break;
case 112: case 112:
#line 797 "dcParser.yxx" #line 794 "dcParser.yxx"
{ {
for (unsigned int i = 0; i < yyvsp[0].u.s_uint; i++) { for (unsigned int i = 0; i < yyvsp[0].u.s_uint; i++) {
current_packer->pack_uint64(yyvsp[-2].u.uint64); current_packer->pack_uint64(yyvsp[-2].u.uint64);
@ -1856,7 +1853,7 @@ case 112:
} }
break; break;
case 113: case 113:
#line 803 "dcParser.yxx" #line 800 "dcParser.yxx"
{ {
for (unsigned int i = 0; i < yyvsp[0].u.s_uint; i++) { for (unsigned int i = 0; i < yyvsp[0].u.s_uint; i++) {
current_packer->pack_double(yyvsp[-2].u.real); current_packer->pack_double(yyvsp[-2].u.real);
@ -1864,7 +1861,7 @@ case 113:
} }
break; break;
case 114: case 114:
#line 809 "dcParser.yxx" #line 806 "dcParser.yxx"
{ {
for (unsigned int i = 0; i < yyvsp[0].u.s_uint; i++) { for (unsigned int i = 0; i < yyvsp[0].u.s_uint; i++) {
current_packer->pack_literal_value(yyvsp[-2].str); current_packer->pack_literal_value(yyvsp[-2].str);
@ -1872,199 +1869,199 @@ case 114:
} }
break; break;
case 121: case 121:
#line 833 "dcParser.yxx" #line 830 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_int8; yyval.u.subatomic = ST_int8;
} }
break; break;
case 122: case 122:
#line 837 "dcParser.yxx" #line 834 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_int16; yyval.u.subatomic = ST_int16;
} }
break; break;
case 123: case 123:
#line 841 "dcParser.yxx" #line 838 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_int32; yyval.u.subatomic = ST_int32;
} }
break; break;
case 124: case 124:
#line 845 "dcParser.yxx" #line 842 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_int64; yyval.u.subatomic = ST_int64;
} }
break; break;
case 125: case 125:
#line 849 "dcParser.yxx" #line 846 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_uint8; yyval.u.subatomic = ST_uint8;
} }
break; break;
case 126: case 126:
#line 853 "dcParser.yxx" #line 850 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_uint16; yyval.u.subatomic = ST_uint16;
} }
break; break;
case 127: case 127:
#line 857 "dcParser.yxx" #line 854 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_uint32; yyval.u.subatomic = ST_uint32;
} }
break; break;
case 128: case 128:
#line 861 "dcParser.yxx" #line 858 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_uint64; yyval.u.subatomic = ST_uint64;
} }
break; break;
case 129: case 129:
#line 865 "dcParser.yxx" #line 862 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_float64; yyval.u.subatomic = ST_float64;
} }
break; break;
case 130: case 130:
#line 869 "dcParser.yxx" #line 866 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_string; yyval.u.subatomic = ST_string;
} }
break; break;
case 131: case 131:
#line 873 "dcParser.yxx" #line 870 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_blob; yyval.u.subatomic = ST_blob;
} }
break; break;
case 132: case 132:
#line 877 "dcParser.yxx" #line 874 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_blob32; yyval.u.subatomic = ST_blob32;
} }
break; break;
case 133: case 133:
#line 881 "dcParser.yxx" #line 878 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_int8array; yyval.u.subatomic = ST_int8array;
} }
break; break;
case 134: case 134:
#line 885 "dcParser.yxx" #line 882 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_int16array; yyval.u.subatomic = ST_int16array;
} }
break; break;
case 135: case 135:
#line 889 "dcParser.yxx" #line 886 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_int32array; yyval.u.subatomic = ST_int32array;
} }
break; break;
case 136: case 136:
#line 893 "dcParser.yxx" #line 890 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_uint8array; yyval.u.subatomic = ST_uint8array;
} }
break; break;
case 137: case 137:
#line 897 "dcParser.yxx" #line 894 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_uint16array; yyval.u.subatomic = ST_uint16array;
} }
break; break;
case 138: case 138:
#line 901 "dcParser.yxx" #line 898 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_uint32array; yyval.u.subatomic = ST_uint32array;
} }
break; break;
case 139: case 139:
#line 905 "dcParser.yxx" #line 902 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_uint32uint8array; yyval.u.subatomic = ST_uint32uint8array;
} }
break; break;
case 140: case 140:
#line 909 "dcParser.yxx" #line 906 "dcParser.yxx"
{ {
yyval.u.subatomic = ST_char; yyval.u.subatomic = ST_char;
} }
break; break;
case 141: case 141:
#line 916 "dcParser.yxx" #line 913 "dcParser.yxx"
{ {
yyval.u.s_int = 0; yyval.u.s_int = 0;
} }
break; break;
case 142: case 142:
#line 920 "dcParser.yxx" #line 917 "dcParser.yxx"
{ {
yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_required; yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_required;
} }
break; break;
case 143: case 143:
#line 924 "dcParser.yxx" #line 921 "dcParser.yxx"
{ {
yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_broadcast; yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_broadcast;
} }
break; break;
case 144: case 144:
#line 928 "dcParser.yxx" #line 925 "dcParser.yxx"
{ {
yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_p2p; yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_p2p;
} }
break; break;
case 145: case 145:
#line 932 "dcParser.yxx" #line 929 "dcParser.yxx"
{ {
yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_ram; yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_ram;
} }
break; break;
case 146: case 146:
#line 936 "dcParser.yxx" #line 933 "dcParser.yxx"
{ {
yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_db; yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_db;
} }
break; break;
case 147: case 147:
#line 940 "dcParser.yxx" #line 937 "dcParser.yxx"
{ {
yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_clsend; yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_clsend;
} }
break; break;
case 148: case 148:
#line 944 "dcParser.yxx" #line 941 "dcParser.yxx"
{ {
yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_clrecv; yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_clrecv;
} }
break; break;
case 149: case 149:
#line 948 "dcParser.yxx" #line 945 "dcParser.yxx"
{ {
yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_ownsend; yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_ownsend;
} }
break; break;
case 150: case 150:
#line 952 "dcParser.yxx" #line 949 "dcParser.yxx"
{ {
yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_airecv; yyval.u.s_int = yyvsp[-1].u.s_int | DCAtomicField::F_airecv;
} }
break; break;
case 151: case 151:
#line 959 "dcParser.yxx" #line 956 "dcParser.yxx"
{ {
current_molecular = new DCMolecularField(yyvsp[-1].str); current_molecular = new DCMolecularField(yyvsp[-1].str);
} }
break; break;
case 152: case 152:
#line 963 "dcParser.yxx" #line 960 "dcParser.yxx"
{ {
yyval.u.field = current_molecular; yyval.u.field = current_molecular;
} }
break; break;
case 153: case 153:
#line 970 "dcParser.yxx" #line 967 "dcParser.yxx"
{ {
DCField *field = current_class->get_field_by_name(yyvsp[0].str); DCField *field = current_class->get_field_by_name(yyvsp[0].str);
yyval.u.atomic = (DCAtomicField *)NULL; yyval.u.atomic = (DCAtomicField *)NULL;
@ -2079,7 +2076,7 @@ case 153:
} }
break; break;
case 154: case 154:
#line 986 "dcParser.yxx" #line 983 "dcParser.yxx"
{ {
if (yyvsp[0].u.atomic != (DCAtomicField *)NULL) { if (yyvsp[0].u.atomic != (DCAtomicField *)NULL) {
current_molecular->add_atomic(yyvsp[0].u.atomic); current_molecular->add_atomic(yyvsp[0].u.atomic);
@ -2087,7 +2084,7 @@ case 154:
} }
break; break;
case 155: case 155:
#line 992 "dcParser.yxx" #line 989 "dcParser.yxx"
{ {
if (yyvsp[0].u.atomic != (DCAtomicField *)NULL) { if (yyvsp[0].u.atomic != (DCAtomicField *)NULL) {
current_molecular->add_atomic(yyvsp[0].u.atomic); current_molecular->add_atomic(yyvsp[0].u.atomic);
@ -2100,27 +2097,27 @@ case 155:
} }
break; break;
case 156: case 156:
#line 1006 "dcParser.yxx" #line 1003 "dcParser.yxx"
{ {
yyval.str = ""; yyval.str = "";
} }
break; break;
case 158: case 158:
#line 1014 "dcParser.yxx" #line 1011 "dcParser.yxx"
{ {
yyval.u.dswitch = current_switch; yyval.u.dswitch = current_switch;
current_switch = new DCSwitch(yyvsp[-4].str, yyvsp[-2].u.parameter); current_switch = new DCSwitch(yyvsp[-4].str, yyvsp[-2].u.parameter);
} }
break; break;
case 159: case 159:
#line 1019 "dcParser.yxx" #line 1016 "dcParser.yxx"
{ {
yyval.u.dswitch = current_switch; yyval.u.dswitch = current_switch;
current_switch = (DCSwitch *)yyvsp[-2].u.parameter; current_switch = (DCSwitch *)yyvsp[-2].u.parameter;
} }
break; break;
case 163: case 163:
#line 1031 "dcParser.yxx" #line 1028 "dcParser.yxx"
{ {
if (current_switch->get_num_cases() == 0) { if (current_switch->get_num_cases() == 0) {
yyerror("case declaration required before first element"); yyerror("case declaration required before first element");
@ -2130,7 +2127,7 @@ case 163:
} }
break; break;
case 164: case 164:
#line 1042 "dcParser.yxx" #line 1039 "dcParser.yxx"
{ {
current_packer = &default_packer; current_packer = &default_packer;
current_packer->clear_data(); current_packer->clear_data();
@ -2138,7 +2135,7 @@ case 164:
} }
break; break;
case 165: case 165:
#line 1048 "dcParser.yxx" #line 1045 "dcParser.yxx"
{ {
if (!current_packer->end_pack()) { if (!current_packer->end_pack()) {
yyerror("Invalid value for switch parameter"); yyerror("Invalid value for switch parameter");
@ -2148,13 +2145,13 @@ case 165:
} }
break; break;
case 166: case 166:
#line 1059 "dcParser.yxx" #line 1056 "dcParser.yxx"
{ {
yyval.u.field = yyvsp[-1].u.parameter; yyval.u.field = yyvsp[-1].u.parameter;
} }
break; break;
case 167: case 167:
#line 1063 "dcParser.yxx" #line 1060 "dcParser.yxx"
{ {
yyval.u.field = yyvsp[0].u.parameter; yyval.u.field = yyvsp[0].u.parameter;
} }
@ -2392,4 +2389,4 @@ yyreturn:
#endif #endif
return yyresult; return yyresult;
} }
#line 1071 "dcParser.yxx" #line 1068 "dcParser.yxx"