diff --git a/Geo/GModelIO_GEO.cpp b/Geo/GModelIO_GEO.cpp index b7e6e9a5713f03927972ca170c50c61994cdc6da..6280783ffee5b220c1e76dd5ed3e03d99bedfdd8 100644 --- a/Geo/GModelIO_GEO.cpp +++ b/Geo/GModelIO_GEO.cpp @@ -301,6 +301,17 @@ void GEO_Internals::addPlaneSurface(int num, std::vector<int> wireTags) _changed = true; } +void GEO_Internals::addDiscreteSurface(int num) +{ + if(FindSurface(num)){ + Msg::Error("GEO face with tag %d already exists", num); + return; + } + Surface *s = Create_Surface(num, MSH_SURF_DISCRETE); + Tree_Add(Surfaces, &s); + _changed = true; +} + void GEO_Internals::addSurfaceFilling(int num, std::vector<int> wireTags, int sphereCenterTag) { @@ -563,6 +574,115 @@ void GEO_Internals::setTransfiniteVolume(int tag, std::vector<int> cornerTags) } } +void GEO_Internals::setTransfiniteVolumeQuadTri(int tag) +{ + if(!tag){ + List_T *tmp = Tree2List(Volumes); + for(int i = 0; i < List_Nbr(tmp); i++){ + Volume *v; + List_Read(tmp, i, &v); + v->QuadTri = TRANSFINITE_QUADTRI_1; + } + List_Delete(tmp); + } + else{ + Volume *v = FindVolume(tag); + if(v) + v->QuadTri = TRANSFINITE_QUADTRI_1; + } +} + +void GEO_Internals::setRecombine(int dim, int tag, double angle) +{ + if(dim == 2){ + if(!tag){ + List_T *tmp = Tree2List(Surfaces); + for(int i = 0; i < List_Nbr(tmp); i++){ + Surface *s; + List_Read(tmp, i, &s); + s->Recombine = 1; + s->RecombineAngle = angle; + } + List_Delete(tmp); + } + else{ + Surface *s = FindSurface(tag); + if(s){ + s->Recombine = 1; + s->RecombineAngle = angle; + } + } + } + else if(dim == 3){ + if(!tag){ + List_T *tmp = Tree2List(Volumes); + for(int i = 0; i < List_Nbr(tmp); i++){ + Volume *v; + List_Read(tmp, i, &v); + v->Recombine3D = 1; + } + List_Delete(tmp); + } + else{ + Volume *v = FindVolume(tag); + if(v){ + v->Recombine3D = 1; + } + } + } +} + +void GEO_Internals::setSmoothing(int tag, int val) +{ + if(!tag){ + List_T *tmp = Tree2List(Surfaces); + for(int i = 0; i < List_Nbr(tmp); i++){ + Surface *s; + List_Read(tmp, i, &s); + s->TransfiniteSmoothing = val; + } + List_Delete(tmp); + } + else{ + Surface *s = FindSurface(tag); + if(s) s->TransfiniteSmoothing = val; + } +} + +void GEO_Internals::setReverseMesh(int dim, int tag) +{ + if(dim == 1){ + if(!tag){ + List_T *tmp = Tree2List(Curves); + for(int i = 0; i < List_Nbr(tmp); i++){ + Curve *c; + List_Read(tmp, i, &c); + c->ReverseMesh = 1; + } + List_Delete(tmp); + } + else{ + Curve *c = FindCurve(tag); + if(c) c->ReverseMesh = 1; + } + } + else if(dim == 2){ + if(!tag){ + List_T *tmp = Tree2List(Surfaces); + for(int i = 0; i < List_Nbr(tmp); i++){ + Surface *s; + List_Read(tmp, i, &s); + s->ReverseMesh = 1; + } + List_Delete(tmp); + } + else{ + Surface *s = FindSurface(tag); + if(s) s->ReverseMesh = 1; + } + } +} + void GEO_Internals::synchronize(GModel *model) { Msg::Debug("Syncing GEO_Internals with GModel"); @@ -740,6 +860,9 @@ void GEO_Internals::synchronize(GModel *model) } List_Delete(volumes); } + + // we might want to store physical groups directly in GModel; but this is OK + // for efficiency for(int i = 0; i < List_Nbr(PhysicalGroups); i++){ PhysicalGroup *p; List_Read(PhysicalGroups, i, &p); @@ -762,7 +885,8 @@ void GEO_Internals::synchronize(GModel *model) } } - // this should not be stored in GEO_internals, but directly set in GModel + // we might want to store mesh compounds directly in GModel; but this is OK + // for efficiency for(std::multimap<int, std::vector<int> >::iterator it = meshCompounds.begin(); it != meshCompounds.end(); ++it){ int dim = it->first; diff --git a/Geo/GModelIO_GEO.h b/Geo/GModelIO_GEO.h index ac9d23f3eff323878728daf00153563e420ad480..ef2a815b8b5ebd82f7d8ca3635f6b36881064b96 100644 --- a/Geo/GModelIO_GEO.h +++ b/Geo/GModelIO_GEO.h @@ -44,6 +44,7 @@ class GEO_Internals{ void addCompoundLine(int num, std::vector<int> edgeTags); void addLineLoop(int num, std::vector<int> edgeTags); void addPlaneSurface(int num, std::vector<int> wireTags); + void addDiscreteSurface(int num); void addSurfaceFilling(int num, std::vector<int> wireTags, int sphereCenterTag=-1); void addSurfaceLoop(int num, std::vector<int> faceTags); void addCompoundSurface(int num, std::vector<int> faceTags, @@ -65,6 +66,10 @@ class GEO_Internals{ void setTransfiniteLine(int tag, int nPoints, int type, double coef); void setTransfiniteSurface(int tag, int arrangement, std::vector<int> cornerTags); void setTransfiniteVolume(int tag, std::vector<int> cornerTags); + void setTransfiniteVolumeQuadTri(int tag); + void setRecombine(int dim, int tag, double angle); + void setSmoothing(int tag, int val); + void setReverseMesh(int dim, int tag); // synchronize internal CAD data with the given GModel void synchronize(GModel *model); diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 8086076fd3e7b98a58214ebf7263e391f4ecc318..b27f3b1f44cba18370f23951c9ed143af4a1027b 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -1259,7 +1259,7 @@ static const yytype_int16 yyrhs[] = -1, 117, 92, 329, 315, 6, -1, 156, 329, 6, -1, 145, 90, 233, 331, 234, 7, 322, 6, -1, 139, 90, 329, 316, 6, -1, 139, 92, 329, 6, - -1, 140, 90, 328, 7, 322, 6, -1, 121, 87, + -1, 140, 90, 329, 7, 322, 6, -1, 121, 87, 233, 331, 234, 7, 233, 331, 234, 317, 6, -1, 121, 90, 233, 331, 234, 7, 233, 331, 234, 317, 6, -1, 121, 87, 233, 331, 234, 7, 233, 331, @@ -1419,32 +1419,32 @@ static const yytype_uint16 yyrline[] = 4136, 4135, 4149, 4148, 4162, 4161, 4175, 4174, 4188, 4187, 4201, 4200, 4214, 4213, 4227, 4226, 4240, 4239, 4256, 4259, 4265, 4277, 4297, 4320, 4324, 4328, 4332, 4336, 4340, 4344, - 4348, 4367, 4380, 4381, 4382, 4383, 4384, 4388, 4389, 4390, - 4393, 4427, 4453, 4477, 4480, 4496, 4499, 4516, 4519, 4525, - 4528, 4535, 4538, 4545, 4561, 4601, 4644, 4649, 4687, 4723, - 4732, 4777, 4818, 4840, 4872, 4899, 4925, 4951, 4977, 5003, - 5025, 5031, 5037, 5043, 5049, 5055, 5096, 5137, 5154, 5171, - 5188, 5200, 5206, 5212, 5224, 5228, 5238, 5249, 5250, 5251, - 5255, 5261, 5273, 5291, 5319, 5320, 5321, 5322, 5323, 5324, - 5325, 5326, 5327, 5334, 5335, 5336, 5337, 5338, 5339, 5340, - 5341, 5342, 5343, 5344, 5345, 5346, 5347, 5348, 5349, 5350, - 5351, 5352, 5353, 5354, 5355, 5356, 5357, 5358, 5359, 5360, - 5361, 5362, 5363, 5364, 5365, 5366, 5375, 5376, 5377, 5378, - 5379, 5380, 5381, 5382, 5383, 5384, 5385, 5390, 5389, 5397, - 5402, 5407, 5424, 5442, 5460, 5478, 5496, 5501, 5507, 5522, - 5541, 5561, 5581, 5601, 5624, 5629, 5634, 5644, 5654, 5659, - 5670, 5679, 5684, 5689, 5716, 5720, 5724, 5728, 5732, 5739, - 5743, 5747, 5751, 5758, 5763, 5770, 5775, 5779, 5784, 5788, - 5796, 5807, 5811, 5823, 5831, 5839, 5846, 5856, 5878, 5882, - 5886, 5890, 5894, 5898, 5902, 5906, 5910, 5941, 5972, 6003, - 6034, 6050, 6066, 6082, 6098, 6108, 6118, 6128, 6140, 6153, - 6165, 6169, 6173, 6177, 6181, 6199, 6217, 6225, 6233, 6262, - 6272, 6291, 6296, 6300, 6304, 6316, 6320, 6332, 6349, 6359, - 6363, 6378, 6383, 6390, 6394, 6407, 6421, 6435, 6449, 6463, - 6471, 6482, 6486, 6490, 6498, 6504, 6510, 6518, 6526, 6533, - 6541, 6556, 6570, 6584, 6596, 6612, 6621, 6630, 6640, 6651, - 6659, 6667, 6671, 6690, 6697, 6703, 6710, 6718, 6717, 6730, - 6735, 6741, 6750, 6763, 6766, 6770 + 4348, 4357, 4370, 4371, 4372, 4373, 4374, 4378, 4379, 4380, + 4383, 4417, 4443, 4467, 4470, 4486, 4489, 4506, 4509, 4515, + 4518, 4525, 4528, 4535, 4551, 4591, 4634, 4639, 4677, 4701, + 4710, 4739, 4764, 4789, 4821, 4848, 4874, 4900, 4926, 4952, + 4974, 4980, 4986, 4992, 4998, 5004, 5029, 5054, 5071, 5088, + 5105, 5117, 5123, 5129, 5141, 5145, 5155, 5166, 5167, 5168, + 5172, 5178, 5190, 5208, 5236, 5237, 5238, 5239, 5240, 5241, + 5242, 5243, 5244, 5251, 5252, 5253, 5254, 5255, 5256, 5257, + 5258, 5259, 5260, 5261, 5262, 5263, 5264, 5265, 5266, 5267, + 5268, 5269, 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5277, + 5278, 5279, 5280, 5281, 5282, 5283, 5292, 5293, 5294, 5295, + 5296, 5297, 5298, 5299, 5300, 5301, 5302, 5307, 5306, 5314, + 5319, 5324, 5341, 5359, 5377, 5395, 5413, 5418, 5424, 5439, + 5458, 5478, 5498, 5518, 5541, 5546, 5551, 5561, 5571, 5576, + 5587, 5596, 5601, 5606, 5633, 5637, 5641, 5645, 5649, 5656, + 5660, 5664, 5668, 5675, 5680, 5687, 5692, 5696, 5701, 5705, + 5713, 5724, 5728, 5740, 5748, 5756, 5763, 5773, 5795, 5799, + 5803, 5807, 5811, 5815, 5819, 5823, 5827, 5858, 5889, 5920, + 5951, 5967, 5983, 5999, 6015, 6025, 6035, 6045, 6057, 6070, + 6082, 6086, 6090, 6094, 6098, 6116, 6134, 6142, 6150, 6179, + 6189, 6208, 6213, 6217, 6221, 6233, 6237, 6249, 6266, 6276, + 6280, 6295, 6300, 6307, 6311, 6324, 6338, 6352, 6366, 6380, + 6388, 6399, 6403, 6407, 6415, 6421, 6427, 6435, 6443, 6450, + 6458, 6473, 6487, 6501, 6513, 6529, 6538, 6547, 6557, 6568, + 6576, 6584, 6588, 6607, 6614, 6620, 6627, 6635, 6634, 6647, + 6652, 6658, 6667, 6680, 6683, 6687 }; #endif @@ -1970,214 +1970,214 @@ static const yytype_int16 yypact[] = 6113, 6113, 933, 941, 951, 971, 972, 7463, 7688, 7913, 939, 9634, 1117, 6788, 21, 1003, 1021, -128, -128, -128, 11133, 11133, -182, -1819, -79, -128, 1050, 1051, 1060, 9859, - -65, 93, 1024, 1068, 1092, 1097, 1100, 1103, 1109, 11133, - 6113, 6113, 6788, 1113, 15, 1119, -1819, 891, 1241, 1345, - -1819, 1138, 1149, 1161, 6113, 6113, 1124, 1159, 1167, -1819, - 11133, -1819, 1369, 1391, 11133, 11133, 11133, -135, 11133, 1166, - -1819, 1230, 11133, 11133, 11133, -1819, -1819, 11133, 1169, 1399, - 1403, 1177, -1819, -1819, 1405, -1819, 1408, -1819, 647, 10223, - 432, 4343, 11133, -1819, -1819, 6788, 6788, 10556, 10775, 1182, - 1186, 2374, -1819, -1819, -1819, -1819, -1819, -1819, 6788, 1414, - 1193, 11133, 11133, 1422, 11133, 11133, 11133, 11133, 11133, 11133, + -65, 93, 1024, 1068, 1092, 1097, 1100, 1109, 1113, 11133, + 6113, 6113, 6113, 1121, 15, 1123, -1819, 891, 1241, 1346, + -1819, 1138, 1149, 1161, 6113, 6113, 1159, 1167, 1169, -1819, + 11133, -1819, 1369, 1393, 11133, 11133, 11133, -135, 11133, 1171, + -1819, 1230, 11133, 11133, 11133, -1819, -1819, 11133, 1170, 1403, + 1404, 1178, -1819, -1819, 1408, -1819, 1409, -1819, 647, 10223, + 432, 4343, 11133, -1819, -1819, 6788, 6788, 10556, 10775, 1186, + 1187, 2374, -1819, -1819, -1819, -1819, -1819, -1819, 6788, 1415, + 1198, 11133, 11133, 1424, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 4343, 4343, 4343, 4343, 4343, 4343, 4343, 4343, 4343, 4343, 6788, 4343, 4343, 11133, 4343, 4343, 4343, 4343, 4343, 11133, 2374, 11133, 4343, 4343, - 4343, 4343, 4343, 14, 2374, 14, 1203, 1203, 1203, 25, - 13226, 194, 4494, 265, 1204, 1445, 176, 1217, -1819, 1220, + 4343, 4343, 4343, 14, 2374, 14, 1209, 1209, 1209, 25, + 13226, 194, 4494, 265, 1220, 1445, 176, 1221, -1819, 1222, 5223, 11133, 9978, -1819, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, -1819, -1819, 11133, 11133, -1819, -1819, 1013, 746, 0, -1819, 591, - -1819, 405, 10607, -1819, 424, 196, 232, 1223, 1224, 13247, + -1819, 405, 10607, -1819, 424, 196, 232, 1223, 1225, 13247, 9978, 3043, -1819, 531, 13268, 13289, 11133, 13310, 575, 13331, 13352, 11133, 13373, 601, 13394, 13415, 13436, 13457, 13478, 13499, - 1232, 13520, 13541, 13562, 1450, 11133, 11133, 625, 1452, 1455, - 1457, 1237, 11133, 11133, 1461, 439, 8138, 8363, 11133, 11133, - 4343, 11133, -1819, 1404, 11133, -1819, 1406, -1819, 1407, -1819, - 1409, 6788, 43, 44, 45, 47, 9978, 9978, 1203, -1819, + 1232, 13520, 13541, 13562, 1451, 11133, 11133, 625, 1455, 1457, + 1458, 1238, 11133, 11133, 1462, 439, 8138, 8363, 11133, 11133, + 4343, 11133, -1819, 1405, 11133, -1819, 1406, -1819, 1407, -1819, + 1410, 6788, 43, 44, 45, 47, 9978, 9978, 1209, -1819, 13583, -1819, 638, 11133, 8588, 11133, 11133, 596, 13604, 649, - 11133, 11133, 11133, -1819, 1460, 1465, 1465, 11133, 10197, 10197, - 10197, 10197, 11133, 1483, 11133, 1484, 11133, 1485, 9978, 9978, - 10321, 1268, 1488, 1263, -1819, -1819, -84, -1819, -1819, 10679, + 11133, 11133, 11133, -1819, 1464, 1482, 1482, 11133, 10197, 10197, + 10197, 10197, 11133, 1484, 11133, 1485, 11133, 1488, 9978, 9978, + 10321, 1268, 1490, 1264, -1819, -1819, -84, -1819, -1819, 10679, 10721, -128, -128, 346, 346, 98, 11133, 11133, 11133, 9859, 9859, 11133, 840, 140, -1819, 11133, 11133, 11133, 11133, 11133, - 11133, 11133, 11133, 11133, 13625, 1490, 1500, 1495, 11133, 1501, - 11133, 11133, 2612, -1819, -1819, 9978, 9978, 9978, 1503, 1504, - 11133, 11133, 11133, 13646, -1819, -1819, 13667, 13688, 13709, 1341, - 10801, -1819, 1278, 3320, 13730, 13751, 11381, -1819, -1819, 9978, - -1819, 3191, -1819, 3277, 11133, 11133, -1819, 11133, 11133, 1283, - 13772, 4669, 1289, 705, 342, 13793, 360, 12881, 11133, 9978, - 1512, 1515, -1819, 11133, 13814, 12904, -64, 4155, 4155, 4155, + 11133, 11133, 11133, 11133, 13625, 1495, 1500, 1501, 11133, 1503, + 11133, 11133, 2612, -1819, -1819, 9978, 9978, 9978, 1504, 1505, + 11133, 11133, 11133, 13646, -1819, -1819, 13667, 13688, 13709, 1340, + 10801, -1819, 1279, 3320, 13730, 13751, 11381, -1819, -1819, 9978, + -1819, 3191, -1819, 3277, 11133, 11133, -1819, 11133, 11133, 1287, + 13772, 4669, 1291, 705, 342, 13793, 360, 12881, 11133, 9978, + 1515, 1516, -1819, 11133, 13814, 12904, -64, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 10898, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 10965, 11007, 11091, -88, - 595, -88, 1295, 1298, 1294, 737, 737, 1296, 737, 1297, - 1299, 1300, 11289, 737, 737, 737, 586, 737, 14570, -1819, - 1089, 1301, 1302, 1303, 679, 757, 1309, 1310, 1321, 1494, - 1508, 6788, 318, 1513, 1514, 6788, 97, 2374, 11133, 1521, - 1535, 24, 737, -1819, 133, 33, 41, 148, 1338, -33, + 595, -88, 1298, 1299, 1295, 737, 737, 1296, 737, 1297, + 1300, 1301, 11289, 737, 737, 737, 586, 737, 14570, -1819, + 1089, 1302, 1304, 1303, 679, 757, 1310, 1311, 1321, 1487, + 1508, 6788, 318, 1513, 1514, 6788, 97, 2374, 11133, 1533, + 1560, 24, 737, -1819, 133, 33, 41, 148, 1339, -33, 856, -1819, 3772, 792, 3549, 1502, 1551, 836, 836, 630, - 630, 630, 630, 1, 1, 1203, 1203, 1203, 1203, 13, - 13835, 12927, -1819, 11133, 11133, 1561, 9, 9978, 11133, 11133, - 1562, 9978, 11133, 1563, 4343, 1565, -1819, 14, 1566, 4343, - 11133, 2374, 1560, 9978, 9978, 1423, 1567, 1568, 13856, 1569, - 1424, 1588, 1590, 13877, 1591, 1429, 1596, 1597, 1598, 1603, - 1604, 1605, -1819, 1607, 1608, 1613, 11133, 13898, 4655, 1388, - -1819, -1819, -1819, 1619, 13919, 12950, 470, -1819, -1819, 9978, - -1819, 9978, 3043, 1400, 9978, 1397, 391, 11410, 11711, 737, - 11737, 1395, 4812, 1396, 1398, 1401, -1819, 9978, -1819, 9978, - -1819, 9978, -1819, 9978, 737, 798, 1623, -1819, 3568, 9978, - 1203, -1819, 13940, 12973, 9978, -1819, 1625, 1402, 13961, 13982, - 14003, 11133, 6788, 1629, 1632, 14024, 1412, 14570, 1410, 1416, - 14570, 1415, 1417, 14570, 1432, 1421, 14570, 1434, 14045, -1819, - 14066, -1819, 14087, -1819, 799, 826, 9978, 1411, -1819, -1819, - 3388, 3591, -128, 11133, 11133, -1819, -1819, 1433, 1435, 9859, - 11763, 11789, 11815, 10515, 1527, -29, -128, 4578, 14108, 4840, - 14129, 14150, 14171, 14192, 14213, 14234, 14255, 1663, 11133, 1666, + 630, 630, 630, 1, 1, 1209, 1209, 1209, 1209, 13, + 13835, 12927, -1819, 11133, 11133, 1563, 9, 9978, 11133, 11133, + 1562, 9978, 11133, 1565, 4343, 1566, -1819, 14, 1568, 4343, + 11133, 2374, 1569, 9978, 9978, 1399, 1586, 1587, 13856, 1588, + 1427, 1591, 1592, 13877, 1596, 1434, 1598, 1603, 1604, 1605, + 1607, 1608, -1819, 1613, 1614, 1618, 11133, 13898, 4655, 1342, + -1819, -1819, -1819, 1620, 13919, 12950, 470, -1819, -1819, 9978, + -1819, 9978, 3043, 1400, 9978, 1401, 391, 11410, 11711, 737, + 11737, 1395, 4812, 1396, 1398, 1402, -1819, 9978, -1819, 9978, + -1819, 9978, -1819, 9978, 737, 798, 1625, -1819, 3568, 9978, + 1209, -1819, 13940, 12973, 9978, -1819, 1626, 1411, 13961, 13982, + 14003, 11133, 6788, 1630, 1632, 14024, 1412, 14570, 1416, 1414, + 14570, 1417, 1420, 14570, 1432, 1439, 14570, 1435, 14045, -1819, + 14066, -1819, 14087, -1819, 799, 826, 9978, 1413, -1819, -1819, + 3388, 3591, -128, 11133, 11133, -1819, -1819, 1436, 1438, 9859, + 11763, 11789, 11815, 10515, 1520, -29, -128, 4578, 14108, 4840, + 14129, 14150, 14171, 14192, 14213, 14234, 14255, 1662, 11133, 1667, -1819, 11133, 14276, -1819, 12996, 13019, -1819, 831, 832, 837, - -1819, -1819, 13042, 13065, 11841, -1819, 1667, 1668, 1669, 1448, + -1819, -1819, 13042, 13065, 11841, -1819, 1668, 1669, 1672, 1444, 11133, 5111, 11133, 11133, -1819, -1819, 7, 848, -1819, -1819, - 11281, -1819, 1672, 10847, 1439, 1453, 6788, 1675, 1641, 1643, - 6788, 318, 1647, 1648, 6788, 318, 4868, 869, -1819, -1819, + 11281, -1819, 1674, 10847, 1452, 1454, 6788, 1679, 1634, 1647, + 6788, 318, 1648, 1649, 6788, 318, 4868, 869, -1819, -1819, 13088, 122, 130, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, 11133, -1819, -1819, -1819, -1819, -1819, -1819, -1819, 11133, 11133, 11133, -1819, 9978, -1819, -1819, -1819, -1819, 4343, -1819, -1819, 11133, -1819, 6788, 4343, 4343, 4343, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, 11133, 4343, -1819, 4343, -1819, 11133, -1819, -1819, -1819, -1819, 176, - 176, 1687, -1819, 11133, 1688, 176, 176, 1693, 26, 11133, - 1695, 1696, 1228, -1819, 1699, 1475, 21, 1702, -1819, 9978, - 9978, 9978, 9978, 11133, 1498, 1505, 1506, 1507, -1819, 737, - 11133, -1819, 1524, 1525, 1476, -1819, 1720, -1819, -1819, -1819, - -1819, -1819, 154, 303, 14297, 13111, -1819, -1819, 1516, 4343, + 176, 1688, -1819, 11133, 1693, 176, 176, 1695, 26, 11133, + 1696, 1697, 1228, -1819, 1699, 1480, 21, 1703, -1819, 9978, + 9978, 9978, 9978, 11133, 1498, 1506, 1507, 1524, -1819, 737, + 11133, -1819, 1525, 1526, 1493, -1819, 1722, -1819, -1819, -1819, + -1819, -1819, 154, 303, 14297, 13111, -1819, -1819, 1517, 4343, 633, 14318, 13134, -1819, 689, 11867, -1819, -1819, -1819, 59, -1819, -1819, 4155, 737, -128, 3043, -1819, 978, 6788, 6788, - 1721, 6788, 1017, 6788, 6788, 1723, 6788, 1642, 6788, 6788, - 6788, 6788, 6788, 6788, 6788, 6788, 6788, 1267, 1745, 1748, + 1724, 6788, 1017, 6788, 6788, 1727, 6788, 1637, 6788, 6788, + 6788, 6788, 6788, 6788, 6788, 6788, 6788, 1267, 1748, 1749, 9978, -1819, 470, 253, 880, 881, -1819, 885, -1819, -1819, 11133, 11133, -1819, 11133, 11133, -1819, 11133, 11133, 11133, 886, 893, 898, 924, -1819, -1819, 6788, 11133, 930, 470, 470, - 931, 6788, 9978, 1749, 1750, 1751, 3523, -1819, -1819, 1769, - -1819, 1770, 366, 11133, 366, 11133, 366, 11133, 366, 11133, - 1771, 1772, 1773, 1774, 1775, 934, 1779, 11320, -1819, -1819, + 931, 6788, 9978, 1750, 1751, 1768, 3523, -1819, -1819, 1771, + -1819, 1772, 366, 11133, 366, 11133, 366, 11133, 366, 11133, + 1773, 1774, 1775, 1776, 1779, 934, 1783, 11320, -1819, -1819, 152, 11893, 11919, -1819, -1819, 5043, -108, -128, -128, -128, - 1684, 1783, 11066, 1555, 1785, 1570, 48, 54, -32, -1819, - 159, -1819, -29, 1786, 1788, 1790, 1791, 1792, 1793, 1794, - 1795, 1797, 6788, 14570, -1819, 1371, 1559, 1789, 1800, 1801, - 1718, 1803, 1805, 1806, 11133, 6788, 6788, 6788, 1809, 11945, - -1819, 3624, 202, 1810, 1811, 1584, -1819, 1585, -1819, 1443, - 1586, 6788, 1587, -1819, 176, 176, 1814, 11133, 1816, 176, - 176, 1817, 11133, 1818, -1819, 737, 1819, -1819, 1822, -1819, - 1821, 4155, 4155, 4155, 4155, 763, 1599, 10430, 1601, 737, - 737, 1600, 788, 811, 14339, 1602, 737, 4155, 1496, 4343, - -1819, 1529, -1819, 1496, 4343, -1819, 328, 1606, 1826, 1671, + 1676, 1784, 11066, 1558, 1786, 1567, 48, 54, -32, -1819, + 159, -1819, -29, 1787, 1789, 1790, 1791, 1792, 1793, 1794, + 1795, 1797, 6788, 14570, -1819, 1371, 1573, 1801, 1802, 1804, + 1706, 1805, 1807, 1808, 11133, 6788, 6788, 6788, 1811, 11945, + -1819, 3624, 202, 1812, 1814, 1579, -1819, 1589, -1819, 1443, + 1590, 6788, 1585, -1819, 176, 176, 1815, 11133, 1818, 176, + 176, 1819, 11133, 1820, -1819, 737, 1821, -1819, 1816, -1819, + 1822, 4155, 4155, 4155, 4155, 763, 1597, 10430, 1606, 737, + 737, 1599, 788, 811, 14339, 1609, 737, 4155, 1496, 4343, + -1819, 1529, -1819, 1496, 4343, -1819, 328, 1602, 1827, 1671, -1819, -1819, -1819, 21, 11133, -1819, 946, -1819, 949, 952, 953, 961, 14360, 11133, 11133, 11133, 11133, 366, 14570, 1611, - 11133, 11133, 6788, 1609, -1819, -1819, -1819, -1819, 1610, -1819, - 1828, 23, -1819, -1819, 1832, 11133, 9263, 1612, 1614, 1835, - 1838, 77, 1615, 1616, 1730, 1730, 6788, 1840, 1618, 1620, - 1846, 1848, 6788, 1685, 1624, 1852, 1853, 1856, 1857, 1858, - 1859, 1860, 1862, 1864, -1819, 1866, 6788, 962, 1868, 737, - 1646, 1645, 11971, 11997, 12023, 12049, 12075, 12101, 12127, -1819, - -1819, -1819, -1819, 1869, 14570, -1819, 737, 1886, 983, 6788, - 6788, 6788, 1889, 1888, -1819, 6788, 6788, 14570, 6788, 14570, - 6788, 14570, 6788, 14570, 6788, 6788, 6788, 1664, 1670, 1892, - 185, -1819, 11133, 11133, 11133, 1673, 1674, -148, -140, -105, - 1676, 1677, -1819, 1953, 6788, -1819, 11133, -1819, 1895, -1819, - 1898, -1819, -1819, 9859, 477, 6338, -1819, 1678, 1679, 1680, - 1683, 1689, 1690, 8813, 1902, -1819, 9978, -1819, -1819, -1819, - 1691, 11133, -1819, -1819, 13157, 1904, 1911, 1752, -1819, 11133, - 11133, 11133, -1819, 1919, 835, 2374, -1819, -1819, -1819, 1697, - 1924, 1496, 4343, -1819, 2114, -1819, 1496, 4343, -1819, 2151, + 11133, 11133, 6788, 1610, -1819, -1819, -1819, -1819, 1612, -1819, + 1832, 23, -1819, -1819, 1833, 11133, 9263, 1617, 1616, 1834, + 1835, 77, 1615, 1619, 1731, 1731, 6788, 1843, 1621, 1622, + 1845, 1847, 6788, 1687, 1629, 1852, 1853, 1857, 1858, 1859, + 1860, 1862, 1864, 1865, -1819, 1867, 6788, 962, 1869, 737, + 1665, 1645, 11971, 11997, 12023, 12049, 12075, 12101, 12127, -1819, + -1819, -1819, -1819, 1887, 14570, -1819, 737, 1888, 983, 6788, + 6788, 6788, 1871, 1891, -1819, 6788, 6788, 14570, 6788, 14570, + 6788, 14570, 6788, 14570, 6788, 6788, 6788, 1666, 1670, 1894, + 185, -1819, 11133, 11133, 11133, 1673, 1675, -148, -140, -105, + 1677, 1681, -1819, 1953, 6788, -1819, 11133, -1819, 1898, -1819, + 1899, -1819, -1819, 9859, 477, 6338, -1819, 1678, 1680, 1683, + 1684, 1685, 1689, 8813, 1901, -1819, 9978, -1819, -1819, -1819, + 1690, 11133, -1819, -1819, 13157, 1906, 1918, 1759, -1819, 11133, + 11133, 11133, -1819, 1923, 835, 2374, -1819, -1819, -1819, 1698, + 1954, 1496, 4343, -1819, 2114, -1819, 1496, 4343, -1819, 2151, -1819, 366, -1819, 582, -1819, -1819, -1819, -1819, -1819, -1819, - 4343, 11133, -1819, -1819, -1819, -1819, 4343, 1956, -1819, -1819, - 17, -1819, -1819, -1819, -1819, -1819, -1819, 1955, -88, -88, - -1819, 1957, -88, -88, 2374, 11133, 1958, 1961, 24, -1819, - 1960, 13180, 21, -1819, 1962, 1963, 1968, 1969, 1623, 14381, + 4343, 11133, -1819, -1819, -1819, -1819, 4343, 1957, -1819, -1819, + 17, -1819, -1819, -1819, -1819, -1819, -1819, 1956, -88, -88, + -1819, 1958, -88, -88, 2374, 11133, 1959, 1962, 24, -1819, + 1961, 13180, 21, -1819, 1963, 1968, 1969, 1970, 1625, 14381, 14402, 14423, 14444, 6788, 11133, 12153, 12179, 984, -1819, 11133, - 1972, -1819, -1819, 4343, -1819, 12205, 5663, 14570, -1819, 1973, - 1974, -1819, -1819, -1819, 11133, 11133, -128, 1976, 1977, 1978, - -1819, 11133, 11133, -1819, -1819, 1979, 1874, 1981, 11133, -1819, - -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, 1983, 1986, - 1734, 470, -1819, -1819, -1819, 11133, 11133, 11133, 11133, 11133, - 11133, 11133, -1819, -1819, -1819, 1746, 1987, 1685, 1988, 11133, - -1819, 1989, 1992, 1994, 1996, 1997, 1999, 1231, 2002, 9978, + 1964, -1819, -1819, 4343, -1819, 12205, 5663, 14570, -1819, 1972, + 1973, -1819, -1819, -1819, 11133, 11133, -128, 1975, 1976, 1977, + -1819, 11133, 11133, -1819, -1819, 1978, 1875, 1979, 11133, -1819, + -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, 1982, 1986, + 1755, 470, -1819, -1819, -1819, 11133, 11133, 11133, 11133, 11133, + 11133, 11133, -1819, -1819, -1819, 1760, 1988, 1687, 1989, 11133, + -1819, 1992, 1994, 1996, 1997, 1999, 2002, 1231, 2004, 9978, 9978, 11133, -1819, 10197, 5155, 14465, 3912, 346, 346, -128, - 2004, -128, 2005, -128, 2006, 11133, 11133, -1819, 375, 1782, - 14486, -1819, -1819, 5183, 169, -1819, 2009, 2011, 6788, -128, - -128, -128, -128, -128, 1917, 2013, -1819, 1007, 11133, 2544, - 2014, -1819, -1819, 6788, 4354, 472, 14507, -1819, -1819, 9336, - 1799, 4669, 4669, 6788, -1819, 2015, -88, -88, -1819, 2016, - -88, -88, -1819, 6788, -1819, 1796, 4155, 737, 5888, 9561, - 2374, -1819, 2018, 2019, -1819, 2020, 2021, 2023, 2598, -1819, - 2025, 2028, -1819, 1807, -1819, -1819, -1819, -1819, -1819, 1751, - 1771, 1772, 1773, 2029, 730, 14570, 11133, 11133, 6788, 1808, - 1010, 14570, -1819, 2032, 11133, -1819, -1819, 1823, 1824, 5362, - 5601, 676, -1819, -1819, -1819, 5826, 6051, -1819, 1827, -1819, - 6276, 2034, -1819, 6788, 4155, 4155, 12231, 12257, 12283, 12309, + 2005, -128, 2006, -128, 2008, 11133, 11133, -1819, 375, 1785, + 14486, -1819, -1819, 5183, 169, -1819, 2009, 2013, 6788, -128, + -128, -128, -128, -128, 1917, 2014, -1819, 1007, 11133, 2544, + 2015, -1819, -1819, 6788, 4354, 472, 14507, -1819, -1819, 9336, + 1799, 4669, 4669, 6788, -1819, 2016, -88, -88, -1819, 2017, + -88, -88, -1819, 6788, -1819, 1798, 4155, 737, 5888, 9561, + 2374, -1819, 2018, 2020, -1819, 2021, 2023, 2026, 2598, -1819, + 2027, 2029, -1819, 1809, -1819, -1819, -1819, -1819, -1819, 1768, + 1773, 1774, 1775, 2031, 730, 14570, 11133, 11133, 6788, 1823, + 1010, 14570, -1819, 2032, 11133, -1819, -1819, 1824, 1826, 5362, + 5601, 676, -1819, -1819, -1819, 5826, 6051, -1819, 1829, -1819, + 6276, 2035, -1819, 6788, 4155, 4155, 12231, 12257, 12283, 12309, 12335, 11133, -1819, 2036, -1819, 14570, -1819, -1819, -1819, -1819, - -1819, -1819, 1829, -1819, -1819, 1011, 1014, 10388, 2675, 2049, - 1830, -1819, 11133, -1819, 1825, 1836, 191, -1819, 1839, 214, - -1819, 1841, 250, -1819, 1842, 6501, 13203, 2063, 6788, 2033, - 1843, 11133, -1819, -1819, 1023, 269, 293, 323, 327, 385, - 9038, 387, -1819, 2065, 6726, -1819, -1819, 1908, 11133, -1819, - 11133, -1819, -1819, 9978, 2715, 2071, 2374, 1844, 1845, 1847, - -1819, 2076, 2077, -1819, 2079, 2080, 2082, -1819, -1819, -1819, + -1819, -1819, 1830, -1819, -1819, 1011, 1014, 10388, 2675, 2049, + 1836, -1819, 11133, -1819, 1837, 1838, 191, -1819, 1840, 214, + -1819, 1841, 250, -1819, 1842, 6501, 13203, 2054, 6788, 2034, + 1844, 11133, -1819, -1819, 1023, 269, 293, 323, 327, 385, + 9038, 387, -1819, 2064, 6726, -1819, -1819, 1911, 11133, -1819, + 11133, -1819, -1819, 9978, 2715, 2072, 2374, 1848, 1849, 1851, + -1819, 2073, 2075, -1819, 2080, 2082, 2083, -1819, -1819, -1819, 5424, -1819, -1819, 4343, 14570, -1819, -1819, -1819, -1819, -1819, - -1819, -1819, -1819, 21, -1819, 1921, -1819, -1819, 11133, 12361, - 12387, -1819, 6788, 11133, 2084, -1819, 12413, -1819, -1819, 6788, - 6788, 2085, 2086, 2087, 2088, 11133, 2089, 2090, 1026, -1819, + -1819, -1819, -1819, 21, -1819, 1922, -1819, -1819, 11133, 12361, + 12387, -1819, 6788, 11133, 2085, -1819, 12413, -1819, -1819, 6788, + 6788, 2086, 2087, 2088, 2089, 11133, 2090, 2091, 1026, -1819, -1819, 11133, 11133, 11133, 11133, 11133, 6951, -1819, 6788, 581, 712, 9978, -1819, -1819, 346, 4627, -1819, -1819, 9859, -29, - 9859, -29, 9859, -29, -1819, 2091, -1819, 1027, 6788, -1819, - 7176, 2092, 9978, -128, -128, -128, -128, -128, -1819, -1819, - 11133, 7401, 7626, 1033, -1819, -1819, 1872, 1867, -1819, 2095, - -1819, -1819, -1819, -1819, -1819, 1034, 2041, 2096, 1037, 2098, - -1819, 1875, 14570, 11133, 11133, 1038, 14570, -1819, 11133, 1042, + 9859, -29, 9859, -29, -1819, 2092, -1819, 1027, 6788, -1819, + 7176, 2093, 9978, -128, -128, -128, -128, -128, -1819, -1819, + 11133, 7401, 7626, 1033, -1819, -1819, 1873, 1868, -1819, 2097, + -1819, -1819, -1819, -1819, -1819, 1034, 2041, 2098, 1037, 2102, + -1819, 1876, 14570, 11133, 11133, 1038, 14570, -1819, 11133, 1042, 1043, -1819, -1819, -1819, -1819, -1819, -1819, 7851, -1819, -1819, - 1876, 12439, 12465, 12491, 12517, 12543, -1819, 1047, 1877, -128, - 6788, 2099, 1883, -128, 2111, 1048, 1884, 11133, -1819, 8076, + 1877, 12439, 12465, 12491, 12517, 12543, -1819, 1047, 1883, -128, + 6788, 2111, 1885, -128, 2115, 1048, 1870, 11133, -1819, 8076, 395, 556, 8301, 423, 715, 8526, 425, 749, -1819, 6788, - 2115, 2000, 11375, 1890, -1819, 1057, 427, 429, 482, 484, - 534, 2736, -1819, -1819, 2118, 2119, -1819, -1819, 11133, -1819, + 2116, 2001, 11375, 1892, -1819, 1057, 427, 429, 482, 484, + 534, 2736, -1819, -1819, 2118, 2120, -1819, -1819, 11133, -1819, 2374, 14, -1819, -1819, 11133, 14528, 12569, 49, 12595, -1819, -1819, -1819, -1819, -1819, 11133, 11133, 11133, 11133, 11133, 11133, - 2120, -128, 96, -1819, -1819, -128, 117, -1819, 2121, -1819, - 8751, 2122, 11133, 2123, 2124, 11133, 2125, 2126, 11133, 2129, - 1903, -1819, 11133, -1819, -29, -1819, 2133, 9978, 9978, 9978, - 9978, 9038, -1819, -1819, -1819, 4669, 1147, -1819, 1914, 1058, + 2121, -128, 96, -1819, -1819, -128, 117, -1819, 2122, -1819, + 8751, 2123, 11133, 2124, 2125, 11133, 2126, 2129, 11133, 2131, + 1905, -1819, 11133, -1819, -29, -1819, 2134, 9978, 9978, 9978, + 9978, 9038, -1819, -1819, -1819, 4669, 1147, -1819, 1915, 1058, -1819, 11133, -1819, 6788, 11133, 1078, 1079, 12621, 12647, 12673, 12699, 12725, 12751, -1819, 536, -1819, 538, -1819, -1819, -1819, - -1819, 1909, 8976, -1819, -1819, 1912, 9211, -1819, -1819, 1916, - 9292, -1819, 2135, 2874, 765, 11440, -1819, 1085, 1090, 1102, - 1106, 543, 1112, 1910, 2374, 1920, 2146, 1922, 14549, 1116, + -1819, 1909, 8976, -1819, -1819, 1912, 9211, -1819, -1819, 1914, + 9292, -1819, 2138, 2874, 765, 11440, -1819, 1085, 1090, 1102, + 1106, 543, 1112, 1920, 2374, 1925, 2143, 1941, 14549, 1116, 9466, -1819, -1819, 11133, 11133, 11133, 11133, 11133, 11133, -128, - -128, -29, 2148, -29, 2150, -29, 2152, -1819, -1819, -1819, - -1819, -29, 2168, 2169, 2170, 2171, 9978, 2173, 2174, -1819, - -1819, -1819, 4343, -1819, 1948, 2181, 9508, 4155, 12777, 12803, - 12829, 12855, 555, 580, 888, -1819, 1959, 945, -1819, 1964, - 957, -1819, 1965, 1022, -1819, -1819, -1819, -1819, 1136, -1819, - -1819, 1142, -1819, 1967, 6788, -1819, 2183, -1819, 11133, 11133, - 11133, 11133, 11133, 11133, 2184, -29, 2187, -29, 2188, -29, + -128, -29, 2149, -29, 2150, -29, 2152, -1819, -1819, -1819, + -1819, -29, 2169, 2170, 2171, 2173, 9978, 2174, 2175, -1819, + -1819, -1819, 4343, -1819, 1960, 2181, 9508, 4155, 12777, 12803, + 12829, 12855, 555, 580, 888, -1819, 1965, 945, -1819, 1967, + 957, -1819, 1971, 1022, -1819, -1819, -1819, -1819, 1136, -1819, + -1819, 1142, -1819, 1974, 6788, -1819, 2183, -1819, 11133, 11133, + 11133, 11133, 11133, 11133, 2184, -29, 2186, -29, 2188, -29, -1819, 2189, 4343, 2190, 4343, 1146, -1819, 9588, 9691, 9733, 9916, 10102, 10144, -1819, 1259, -1819, 1366, -1819, 1470, -1819, - -1819, -1819, 1154, -1819, 2196, -1819, -1819, -1819, -1819, 2198, - 2199, 2200, 2201, 2202, 4343, 2204, -1819, -1819, -1819, -1819, + -1819, -1819, 1154, -1819, 2191, -1819, -1819, -1819, -1819, 2196, + 2199, 2200, 2202, 2204, 4343, 2206, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -1819, -1819, -1819, -1819, 851, -1819, -1819, -1819, -1819, 189, + -1819, -1819, -1819, -1819, 852, -1819, -1819, -1819, -1819, 190, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, - -1819, -1819, -372, 11, 4456, 3589, -1819, 1698, -1819, -1819, + -1819, -1819, -372, 11, 4456, 3589, -1819, 1700, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1818, -1819, 337, -1819, -1819, - -1819, -1819, -1819, 589, 846, 2223, -2, -619, -306, -1819, - -1819, -1819, -1819, -1819, -1819, -1819, -1819, 2232, -1819, -1819, + -1819, -1819, -1819, 594, 851, 2232, -2, -619, -306, -1819, + -1819, -1819, -1819, -1819, -1819, -1819, -1819, 2236, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, -1819, - -1819, -1236, -1230, 2236, -1679, 2237, -1819, -1819, -1819, 1649, + -1819, -1236, -1230, 2237, -1679, 2239, -1819, -1819, -1819, 1650, -1819, 344, -1819, -1819, -1819, -1819, 1980, -1819, -1819, 1067, - -1819, -1657, 2820, 987, 3344, 3400, -312, 694, -1819, 341, + -1819, -1657, 2820, 987, 3344, 3400, -312, 697, -1819, 341, 64, -1819, -429, -3, 283 }; @@ -2320,99 +2320,99 @@ static const yytype_int16 yytable[] = 1873, 2066, 2126, 628, 638, 510, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 1527, 1527, 2131, 2132, 498, 509, 509, 824, 639, 2152, - 509, 509, 824, 640, 2153, 510, 641, 645, 646, 642, - 347, 510, 510, 510, 824, 643, 2154, 1546, 824, 648, - 2155, 658, 659, 510, 824, 510, 2157, 651, 1738, 292, - 2164, 654, 660, 1300, 484, 485, 486, 487, 488, 489, + 509, 509, 824, 640, 2153, 510, 641, 645, 646, 647, + 347, 510, 510, 510, 824, 642, 2154, 1546, 824, 643, + 2155, 658, 659, 510, 824, 510, 2157, 648, 1738, 292, + 2164, 651, 654, 1300, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 824, 370, 2211, 655, 498, 292, 2212, 664, 2213, 1475, 1738, 292, - 2234, 1231, 656, 1306, 616, 617, 2244, 661, 2245, 1309, - 1310, 1311, 625, 292, 657, 662, 633, 665, 1232, 671, - 672, 1315, 510, 1316, 210, 677, 1233, 1234, 1235, 678, - 679, 680, 1236, 1237, 682, 698, 292, 292, 292, 699, - 702, 703, 292, 292, 1948, 292, 706, 292, 498, 292, - 1578, 292, 292, 292, 770, 484, 485, 486, 487, 488, + 2234, 1231, 656, 1306, 616, 617, 2244, 660, 2245, 1309, + 1310, 1311, 625, 292, 657, 661, 633, 662, 1232, 665, + 672, 1315, 510, 1316, 671, 210, 1233, 1234, 1235, 677, + 678, 679, 1236, 1237, 680, 682, 292, 292, 292, 698, + 699, 702, 292, 292, 1948, 292, 703, 292, 706, 292, + 1578, 292, 292, 292, 498, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 1497, - 209, 292, 771, 498, 773, 820, 821, 846, 850, 842, - 1360, 851, 292, 852, 853, 856, 871, 901, 873, 874, - 292, 875, 902, 292, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 1231, 919, - 921, 923, 498, 2241, 928, 927, 929, 958, 509, 509, - 506, 135, 961, 509, 509, 1232, 960, 963, 979, 970, - 971, 982, 991, 1233, 1234, 1235, 995, 509, 1008, 1236, - 1237, 1009, 1040, 509, 1704, 1041, 1042, 1083, 1045, 1047, - 1061, 1048, 1049, 1059, 1060, 1540, 1066, 1067, 1069, 1084, + 770, 292, 771, 498, 209, 820, 773, 821, 846, 842, + 1360, 850, 292, 851, 852, 853, 856, 871, 873, 874, + 292, 901, 875, 292, 484, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 1231, 902, + 919, 921, 498, 2241, 923, 927, 928, 929, 509, 509, + 506, 135, 958, 509, 509, 1232, 960, 979, 961, 963, + 970, 971, 982, 1233, 1234, 1235, 991, 509, 995, 1236, + 1237, 1008, 1009, 509, 1704, 1040, 1041, 1042, 1045, 1047, + 1061, 1069, 1048, 1049, 1059, 1540, 1060, 1066, 1067, 1083, 162, 163, 164, 165, 166, 167, 168, 169, 170, 347, 1068, 1949, 1070, 175, 176, 177, 178, 1075, 1076, 1690, - 292, 180, 181, 182, 1093, 1116, 183, 1134, 1123, 1126, - 509, 1128, 1130, 292, 1138, 1139, 1141, 188, 484, 485, + 292, 180, 181, 182, 1084, 1093, 183, 1116, 1123, 1137, + 509, 1126, 1128, 292, 1130, 1160, 1134, 188, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 1231, 1137, 1142, 1143, 498, 1144, 1146, 1147, - 2242, 510, 510, 1148, 1149, 1150, 510, 510, 1717, 1232, - 1151, 1152, 1153, 2002, 1154, 1155, 370, 1233, 1234, 1235, - 1156, 1160, 1704, 1236, 1237, 1161, 1168, 1166, 1174, 1176, - 1185, 1177, 1191, 1198, 1178, 1192, 292, 292, 1200, 1202, - 1746, 1216, 1203, 1204, 1206, 478, 478, 1205, 1208, 1230, + 496, 497, 1231, 1138, 1139, 1141, 498, 1142, 1143, 1144, + 2242, 510, 510, 1146, 1147, 1148, 510, 510, 1717, 1232, + 1149, 1150, 1151, 2002, 1152, 1153, 370, 1233, 1234, 1235, + 1154, 1155, 1704, 1236, 1237, 1156, 1161, 1166, 1174, 1176, + 1168, 1177, 1185, 1191, 1198, 1178, 292, 292, 1200, 1202, + 1746, 1204, 1230, 1216, 1192, 478, 478, 1206, 1203, 1205, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 1207, 292, 1209, 1223, 498, 1224, - 1252, 292, 1254, 1280, 1265, 1266, 1267, 1549, 1268, 1277, - 292, 1283, 191, 192, 193, 1284, 1281, 1285, 935, 936, - 292, 1289, 1290, 1320, 1322, 200, 617, 201, 108, 1325, - 292, 1330, 1331, 1334, 2243, 292, 1333, 1789, 1337, 1352, + 494, 495, 496, 497, 1207, 292, 1208, 1209, 498, 1252, + 1223, 292, 1224, 1254, 1268, 1265, 1266, 1549, 1284, 1267, + 292, 1277, 191, 192, 193, 1283, 1280, 1281, 935, 936, + 292, 1285, 1289, 1290, 1320, 200, 617, 201, 108, 1322, + 292, 1325, 1330, 1331, 2243, 292, 1333, 1789, 1334, 1337, 2075, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 857, 1343, 858, 1354, 498, 1376, 1359, - 1382, 1344, 1345, 1346, 1384, 292, 484, 485, 486, 487, + 495, 496, 497, 857, 1343, 858, 1352, 498, 1354, 1384, + 1359, 1376, 1344, 1345, 1382, 292, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 1350, 1351, 1395, 1835, 498, 1396, 1419, 1420, 1421, 2115, + 1346, 1350, 1351, 1835, 498, 1395, 1396, 1419, 1420, 2115, 292, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 1852, 1855, 1856, 1424, 498, 1425, 1434, 1435, - 1436, 1437, 1438, 1440, 510, 510, 1450, 1451, 1454, 510, - 510, 1455, 1476, 1465, 1466, 1477, 1456, 1467, 1468, 1469, - 1470, 1471, 1472, 510, 1473, 292, 1478, 1479, 1480, 510, - 1481, 1482, 1483, 1488, 1493, 1494, 1495, 292, 1496, 1498, - 1503, 1500, 1505, 1508, 1510, 1512, 1513, 1514, 1523, 1534, - 292, 1520, 1526, 1548, 1571, 370, 1547, 1564, 1574, 1579, - 1570, 1581, 1569, 1580, 1582, 1586, 1590, 292, 1584, 1585, - 509, 1591, 1593, 1592, 1594, 1596, 510, 1598, 1599, 1600, - 347, 1705, 1601, 1602, 1603, 1604, 1605, 1707, 1606, 292, - 1607, 1608, 1611, 1613, 1614, 1622, 292, 292, 484, 485, + 496, 497, 1852, 1855, 1856, 1421, 498, 1424, 1450, 1425, + 1434, 1435, 1436, 1437, 510, 510, 1438, 1440, 1451, 510, + 510, 1454, 1455, 1456, 1465, 1466, 1480, 1467, 1468, 1469, + 1470, 1471, 1472, 510, 1473, 292, 1476, 1477, 1478, 510, + 1479, 1495, 1481, 1482, 1483, 1488, 1493, 292, 1494, 1500, + 1513, 1503, 1496, 1498, 1505, 1508, 1510, 1512, 1514, 1520, + 292, 1526, 1547, 1523, 1548, 370, 1534, 1564, 1571, 1574, + 1581, 1582, 1570, 1569, 1579, 1580, 1586, 292, 1584, 1590, + 509, 1593, 1585, 1594, 1591, 1592, 510, 1596, 1599, 1600, + 347, 1705, 1598, 1601, 1602, 1603, 1604, 1707, 1605, 292, + 1606, 1607, 1608, 1611, 1614, 1629, 292, 292, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 1624, 1629, 1630, 292, 498, 1639, 292, 1641, - 1936, 1661, 478, 1640, 1662, 1656, 1647, 1648, 1676, 1655, - 1681, 1668, 1669, 1670, 1743, 292, 1671, 1682, 1683, 292, - 133, 268, 1672, 1673, 1678, 1687, 136, 137, 138, 1693, - 1694, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 496, 497, 1613, 1622, 1624, 292, 498, 1630, 292, 1639, + 1936, 1641, 478, 1640, 1661, 1662, 1647, 1676, 1648, 1656, + 1655, 1668, 1681, 1669, 1743, 292, 1670, 1671, 1672, 292, + 133, 268, 1673, 1678, 1682, 1683, 136, 137, 138, 1687, + 1693, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 269, 270, 271, 272, 273, 1657, - 1708, 1711, 1758, 1714, 1719, 1720, 1722, 1763, 1725, 1726, - 171, 172, 173, 174, 1727, 1728, 1742, 292, 179, 1771, - 1747, 1748, 1752, 1753, 1754, 1757, 212, 1759, 1761, 184, - 185, 186, 1762, 1772, 1774, 1776, 292, 187, 1777, 1220, - 1778, 274, 1779, 1780, 275, 1781, 1226, 276, 1784, 277, - 1797, 1800, 1803, 1240, 1808, 1812, 36, 1813, 347, 1822, - 1826, 1840, 1843, 1847, 1857, 1858, 1859, 1860, 278, 1861, - 49, 1836, 1863, 279, 1864, 1866, 280, 1865, 1875, 1887, - 1918, 1872, 1897, 60, 61, 62, 63, 64, 2020, 583, - 66, 67, 68, 69, 70, 1903, 1879, 1880, 74, 1906, - 1885, 77, 1898, 1904, 292, 292, 292, 292, 292, 1916, - 1907, 1928, 1909, 1930, 1911, 1913, 1919, 1935, 1937, 1938, - 292, 1939, 1940, 1941, 2077, 1942, 1943, 389, 1944, 1950, - 1957, 1963, 1964, 1965, 1966, 1968, 1969, 1998, 2004, 2015, - 2016, 2017, 190, 2021, 2023, 2044, 194, 281, 2024, 2034, - 2041, 195, 196, 197, 198, 199, 2045, 2047, 2049, 108, - 1698, 2061, 2062, 2065, 2073, 2074, 2093, 2098, 2100, 2103, - 2104, 2107, 2108, 629, 1820, 2111, 510, 2112, 204, 2116, - 2125, 2147, 2141, 631, 2158, 2143, 370, 2160, 208, 2145, - 321, 581, 2161, 292, 2175, 2162, 2178, 1702, 2181, 509, + 1694, 1708, 1711, 1758, 1714, 1719, 1720, 1722, 1742, 1725, + 171, 172, 173, 174, 1726, 1727, 1728, 292, 179, 1747, + 1748, 1752, 1753, 1754, 1757, 1759, 212, 1761, 1763, 184, + 185, 186, 1762, 1771, 1772, 1774, 292, 187, 1776, 1220, + 1777, 274, 1778, 1779, 275, 1780, 1226, 276, 1781, 277, + 1784, 1797, 1800, 1240, 1803, 1812, 36, 1808, 347, 1813, + 1822, 1826, 1840, 1843, 1857, 1847, 1858, 1859, 278, 1860, + 49, 1836, 1861, 279, 1863, 1864, 280, 1866, 1875, 1865, + 1887, 1918, 1897, 60, 61, 62, 63, 64, 2020, 583, + 66, 67, 68, 69, 70, 1903, 1872, 1879, 74, 1880, + 1916, 77, 1885, 1898, 292, 292, 292, 292, 292, 1904, + 1928, 1906, 1907, 1909, 1911, 1913, 1930, 1919, 1935, 1940, + 292, 1941, 1937, 1938, 2077, 1939, 1942, 389, 1943, 1944, + 1950, 1957, 1963, 1964, 1965, 1966, 1968, 1969, 1998, 2004, + 2015, 2016, 190, 2017, 2049, 2021, 194, 281, 2023, 2024, + 2034, 195, 196, 197, 198, 199, 2041, 2044, 2045, 108, + 1698, 2047, 2061, 2062, 2073, 2065, 2074, 2093, 2098, 2100, + 2103, 2104, 2107, 629, 1820, 2108, 510, 2111, 204, 2112, + 2116, 2125, 2141, 631, 2147, 2143, 370, 2145, 208, 2161, + 321, 581, 2160, 292, 2158, 2175, 2178, 1702, 2181, 509, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 2184, 2185, 2186, 2187, 498, 2189, - 2190, 2194, 466, 467, 468, 470, 472, 2195, 2159, 2216, - 2223, 292, 2205, 2225, 2227, 2229, 2231, 2207, 2209, 505, - 2214, 1371, 2246, 512, 2247, 2248, 2249, 2250, 2251, 509, - 2253, 509, 1573, 2079, 819, 1960, 1773, 519, 521, 524, - 525, 1588, 527, 521, 529, 530, 113, 532, 521, 534, - 535, 536, 537, 538, 539, 123, 541, 542, 543, 124, - 125, 509, 1721, 521, 1984, 904, 0, 0, 484, 485, + 494, 495, 496, 497, 2162, 2184, 2185, 2186, 498, 2187, + 2189, 2190, 466, 467, 468, 470, 472, 2195, 2159, 2216, + 2223, 292, 2225, 2194, 2227, 2229, 2231, 2246, 2205, 505, + 2207, 1371, 2247, 512, 2209, 2248, 2249, 2214, 2250, 509, + 2251, 509, 2253, 1573, 2079, 1960, 819, 519, 521, 524, + 525, 1773, 527, 521, 529, 530, 1588, 532, 521, 534, + 535, 536, 537, 538, 539, 113, 541, 542, 543, 123, + 124, 509, 125, 521, 1984, 1721, 904, 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 823, 496, 497, 578, 580, 521, 0, 498, 0, 0, 0, 0, 0, 0, 0, 588, 521, 0, 0, 0, 0, @@ -2504,7 +2504,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 612, 0, 0, 0, 0, 2121, 0, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1402, 1403, 0, 1404, 1405, 0, 1406, 1407, 1408, 0, - 0, 0, 647, 0, 0, 0, 1414, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1414, 0, 0, 0, 0, 0, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1427, 0, 1429, 0, 1431, 0, 1433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3804,99 +3804,99 @@ static const yytype_int16 yycheck[] = 232, 234, 234, 233, 226, 1012, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 232, 232, 234, 234, 225, 1318, 1319, 232, 226, 234, - 1323, 1324, 232, 226, 234, 1042, 226, 340, 341, 226, + 1323, 1324, 232, 226, 234, 1042, 226, 340, 341, 342, 1333, 1048, 1049, 1050, 232, 226, 234, 1326, 232, 226, - 234, 354, 355, 1060, 232, 1062, 234, 228, 232, 1352, - 234, 6, 228, 1012, 207, 208, 209, 210, 211, 212, + 234, 354, 355, 1060, 232, 1062, 234, 226, 232, 1352, + 234, 228, 6, 1012, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 232, 1086, 234, 233, 225, 1376, 232, 6, 234, 6, 232, 1382, 234, 122, 233, 1042, 317, 318, 232, 228, 234, 1048, - 1049, 1050, 325, 1396, 233, 228, 329, 6, 139, 233, - 170, 1060, 1119, 1062, 235, 6, 147, 148, 149, 6, - 233, 6, 153, 154, 6, 233, 1419, 1420, 1421, 233, - 6, 228, 1425, 1426, 1853, 1428, 4, 1430, 225, 1432, - 1366, 1434, 1435, 1436, 230, 207, 208, 209, 210, 211, + 1049, 1050, 325, 1396, 233, 228, 329, 228, 139, 6, + 170, 1060, 1119, 1062, 233, 235, 147, 148, 149, 6, + 6, 233, 153, 154, 6, 6, 1419, 1420, 1421, 233, + 233, 6, 1425, 1426, 1853, 1428, 228, 1430, 4, 1432, + 1366, 1434, 1435, 1436, 225, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 6, - 233, 1454, 7, 225, 234, 232, 232, 7, 6, 227, - 1119, 6, 1465, 6, 227, 4, 62, 7, 62, 62, - 1473, 62, 7, 1476, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 122, 6, - 6, 6, 225, 234, 6, 227, 233, 7, 1501, 1502, - 4, 5, 7, 1506, 1507, 139, 6, 6, 167, 6, - 6, 233, 229, 147, 148, 149, 227, 1520, 6, 153, - 154, 6, 227, 1526, 1513, 227, 232, 6, 232, 232, - 227, 232, 232, 232, 232, 6, 227, 227, 44, 4, + 230, 1454, 7, 225, 233, 232, 234, 232, 7, 227, + 1119, 6, 1465, 6, 6, 227, 4, 62, 62, 62, + 1473, 7, 62, 1476, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 122, 7, + 6, 6, 225, 234, 6, 227, 6, 233, 1501, 1502, + 4, 5, 7, 1506, 1507, 139, 6, 167, 7, 6, + 6, 6, 233, 147, 148, 149, 229, 1520, 227, 153, + 154, 6, 6, 1526, 1513, 227, 227, 232, 232, 232, + 227, 44, 232, 232, 232, 6, 232, 227, 227, 6, 44, 45, 46, 47, 48, 49, 50, 51, 52, 1552, 229, 1863, 44, 57, 58, 59, 60, 44, 44, 1495, - 1563, 65, 66, 67, 226, 4, 70, 7, 6, 6, - 1573, 6, 6, 1576, 7, 7, 7, 81, 207, 208, + 1563, 65, 66, 67, 4, 226, 70, 4, 6, 170, + 1573, 6, 6, 1576, 6, 233, 7, 81, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 122, 170, 170, 7, 225, 7, 7, 170, - 234, 1318, 1319, 7, 7, 7, 1323, 1324, 1544, 139, + 219, 220, 122, 7, 7, 7, 225, 170, 7, 7, + 234, 1318, 1319, 7, 170, 7, 1323, 1324, 1544, 139, 7, 7, 7, 1919, 7, 7, 1333, 147, 148, 149, - 7, 233, 1611, 153, 154, 6, 229, 227, 233, 233, - 7, 233, 7, 4, 233, 233, 1639, 1640, 6, 227, - 1576, 230, 232, 227, 227, 1647, 1648, 232, 227, 122, + 7, 7, 1611, 153, 154, 7, 6, 227, 233, 233, + 229, 233, 7, 7, 4, 233, 1639, 1640, 6, 227, + 1576, 227, 122, 230, 233, 1647, 1648, 227, 232, 232, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 232, 1668, 232, 234, 225, 234, - 7, 1674, 6, 234, 7, 7, 7, 6, 230, 7, - 1683, 6, 186, 187, 188, 44, 233, 44, 621, 622, - 1693, 44, 44, 6, 6, 199, 629, 201, 202, 6, - 1703, 6, 6, 228, 234, 1708, 7, 1643, 6, 233, + 217, 218, 219, 220, 232, 1668, 227, 232, 225, 7, + 234, 1674, 234, 6, 230, 7, 7, 6, 44, 7, + 1683, 7, 186, 187, 188, 6, 234, 233, 621, 622, + 1693, 44, 44, 44, 6, 199, 629, 201, 202, 6, + 1703, 6, 6, 6, 234, 1708, 7, 1643, 228, 6, 2016, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 227, 226, 229, 6, 225, 7, 213, - 7, 226, 226, 226, 92, 1738, 207, 208, 209, 210, + 218, 219, 220, 227, 226, 229, 233, 225, 6, 92, + 213, 7, 226, 226, 7, 1738, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 226, 226, 7, 1689, 225, 7, 7, 7, 7, 2065, + 226, 226, 226, 1689, 225, 7, 7, 7, 7, 2065, 1763, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 1708, 1709, 1710, 6, 225, 7, 7, 7, - 7, 7, 7, 4, 1501, 1502, 102, 4, 233, 1506, - 1507, 6, 233, 7, 6, 6, 226, 7, 7, 7, - 7, 7, 7, 1520, 7, 1808, 6, 6, 90, 1526, - 7, 6, 6, 4, 4, 4, 232, 1820, 233, 233, - 6, 234, 6, 6, 6, 6, 4, 6, 227, 227, - 1833, 232, 232, 7, 6, 1552, 230, 226, 6, 227, - 230, 6, 233, 229, 6, 115, 6, 1850, 233, 233, - 1853, 233, 6, 233, 6, 170, 1573, 233, 6, 6, - 1863, 1520, 6, 6, 6, 6, 6, 1526, 6, 1872, - 6, 5, 4, 227, 229, 6, 1879, 1880, 207, 208, + 219, 220, 1708, 1709, 1710, 7, 225, 6, 102, 7, + 7, 7, 7, 7, 1501, 1502, 7, 4, 4, 1506, + 1507, 233, 6, 226, 7, 6, 90, 7, 7, 7, + 7, 7, 7, 1520, 7, 1808, 233, 6, 6, 1526, + 6, 232, 7, 6, 6, 4, 4, 1820, 4, 234, + 4, 6, 233, 233, 6, 6, 6, 6, 6, 232, + 1833, 232, 230, 227, 7, 1552, 227, 226, 6, 6, + 6, 6, 230, 233, 227, 229, 115, 1850, 233, 6, + 1853, 6, 233, 6, 233, 233, 1573, 170, 6, 6, + 1863, 1520, 233, 6, 6, 6, 6, 1526, 6, 1872, + 6, 6, 5, 4, 229, 4, 1879, 1880, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 6, 4, 6, 1898, 225, 233, 1901, 7, - 1836, 6, 1904, 233, 6, 228, 233, 233, 6, 233, - 6, 233, 233, 233, 1573, 1918, 233, 6, 166, 1922, - 3, 4, 233, 233, 233, 6, 9, 10, 11, 232, - 6, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 219, 220, 227, 6, 6, 1898, 225, 6, 1901, 233, + 1836, 7, 1904, 233, 6, 6, 233, 6, 233, 228, + 233, 233, 6, 233, 1573, 1918, 233, 233, 233, 1922, + 3, 4, 233, 233, 6, 166, 9, 10, 11, 6, + 232, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 6, - 4, 6, 88, 6, 6, 4, 6, 233, 6, 6, - 53, 54, 55, 56, 6, 6, 4, 1980, 61, 233, - 7, 7, 6, 6, 6, 6, 6, 6, 5, 72, - 73, 74, 6, 6, 6, 6, 1999, 80, 6, 932, + 6, 4, 6, 88, 6, 6, 4, 6, 4, 6, + 53, 54, 55, 56, 6, 6, 6, 1980, 61, 7, + 7, 6, 6, 6, 6, 6, 6, 5, 233, 72, + 73, 74, 6, 233, 6, 6, 1999, 80, 6, 932, 6, 84, 6, 6, 87, 6, 939, 90, 6, 92, - 6, 6, 6, 946, 232, 6, 99, 6, 2021, 6, - 6, 6, 6, 227, 6, 6, 6, 6, 111, 6, - 113, 232, 7, 116, 6, 6, 119, 230, 6, 5, - 7, 233, 6, 126, 127, 128, 129, 130, 7, 8, - 133, 134, 135, 136, 137, 6, 233, 233, 141, 234, - 233, 144, 233, 233, 2067, 2068, 2069, 2070, 2071, 6, - 234, 6, 233, 165, 233, 233, 233, 6, 234, 234, - 2083, 234, 6, 6, 2020, 6, 6, 107, 6, 168, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 227, - 233, 6, 185, 7, 6, 6, 189, 190, 233, 233, - 233, 194, 195, 196, 197, 198, 233, 6, 234, 202, - 6, 6, 122, 233, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 216, 217, 6, 1853, 234, 221, 6, - 226, 6, 233, 226, 234, 233, 1863, 227, 231, 233, - 233, 234, 6, 2156, 6, 233, 6, 6, 6, 2162, + 6, 6, 6, 946, 6, 6, 99, 232, 2021, 6, + 6, 6, 6, 6, 6, 227, 6, 6, 111, 6, + 113, 232, 6, 116, 7, 6, 119, 6, 6, 230, + 5, 7, 6, 126, 127, 128, 129, 130, 7, 8, + 133, 134, 135, 136, 137, 6, 233, 233, 141, 233, + 6, 144, 233, 233, 2067, 2068, 2069, 2070, 2071, 233, + 6, 234, 234, 233, 233, 233, 165, 233, 6, 6, + 2083, 6, 234, 234, 2020, 234, 6, 107, 6, 6, + 168, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 227, 233, 185, 6, 234, 7, 189, 190, 6, 233, + 233, 194, 195, 196, 197, 198, 233, 6, 233, 202, + 6, 6, 6, 122, 6, 233, 6, 6, 6, 6, + 6, 6, 6, 216, 217, 6, 1853, 6, 221, 234, + 6, 226, 233, 226, 6, 233, 1863, 233, 231, 6, + 233, 234, 227, 2156, 234, 6, 6, 6, 6, 2162, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 6, 6, 6, 6, 225, 6, - 6, 233, 202, 203, 204, 205, 206, 6, 2124, 6, - 6, 2194, 233, 6, 6, 6, 6, 233, 233, 219, - 233, 1134, 6, 223, 6, 6, 6, 6, 6, 2212, - 6, 2214, 1361, 2024, 516, 1878, 1627, 237, 238, 239, - 240, 1375, 242, 243, 244, 245, 3, 247, 248, 249, + 217, 218, 219, 220, 233, 6, 6, 6, 225, 6, + 6, 6, 202, 203, 204, 205, 206, 6, 2124, 6, + 6, 2194, 6, 233, 6, 6, 6, 6, 233, 219, + 233, 1134, 6, 223, 233, 6, 6, 233, 6, 2212, + 6, 2214, 6, 1361, 2024, 1878, 516, 237, 238, 239, + 240, 1627, 242, 243, 244, 245, 1375, 247, 248, 249, 250, 251, 252, 253, 254, 3, 256, 257, 258, 3, - 3, 2244, 1548, 263, 1900, 596, -1, -1, 207, 208, + 3, 2244, 3, 263, 1900, 1548, 596, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 282, 283, 284, -1, 225, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, -1, -1, @@ -3988,7 +3988,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 313, -1, -1, -1, -1, 2071, -1, 1160, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1170, 1171, -1, 1173, 1174, -1, 1176, 1177, 1178, -1, - -1, -1, 342, -1, -1, -1, 1186, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1186, -1, -1, -1, -1, -1, 1192, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1203, -1, 1205, -1, 1207, -1, 1209, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -5222,7 +5222,7 @@ static const yytype_uint16 yystos[] = 322, 4, 328, 332, 233, 233, 325, 325, 325, 322, 322, 216, 217, 233, 233, 325, 233, 233, 233, 216, 217, 226, 284, 325, 233, 226, 233, 226, 226, 226, - 226, 226, 226, 226, 322, 329, 329, 328, 226, 4, + 226, 226, 226, 226, 322, 329, 329, 329, 226, 4, 228, 228, 284, 6, 6, 233, 233, 233, 329, 329, 228, 228, 228, 322, 6, 6, 322, 322, 322, 230, 322, 233, 170, 322, 322, 322, 322, 6, 6, 233, @@ -11080,27 +11080,17 @@ yyreduce: case 340: #line 4349 "Gmsh.y" { + std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (9)].l), tags); int num = (int)(yyvsp[(3) - (9)].d); - if(FindSurface(num)){ - yymsg(0, "Surface %d already exists", num); - } - else{ - Surface *s = Create_Surface(num, MSH_SURF_DISCRETE); - Tree_Add(GModel::current()->getGEOInternals()->Surfaces, &s); - extr.mesh.Holes[num].first = (yyvsp[(8) - (9)].d); - extr.mesh.Holes[num].second.clear(); - for(int i = 0; i < List_Nbr((yyvsp[(6) - (9)].l)); i++){ - double d; - List_Read((yyvsp[(6) - (9)].l), i, &d); - extr.mesh.Holes[num].second.push_back((int)d); - } - } + GModel::current()->getGEOInternals()->addDiscreteSurface(num); + extr.mesh.Holes[num].first = (yyvsp[(8) - (9)].d); + extr.mesh.Holes[num].second = tags; List_Delete((yyvsp[(6) - (9)].l)); ;} break; case 341: -#line 4368 "Gmsh.y" +#line 4358 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (6)].c), "Index")) extr.mesh.BoundaryLayerIndex = (yyvsp[(4) - (6)].d); @@ -11111,47 +11101,47 @@ yyreduce: break; case 342: -#line 4380 "Gmsh.y" +#line 4370 "Gmsh.y" { (yyval.i) = OCC_Internals::Union; ;} break; case 343: -#line 4381 "Gmsh.y" +#line 4371 "Gmsh.y" { (yyval.i) = OCC_Internals::Intersection; ;} break; case 344: -#line 4382 "Gmsh.y" +#line 4372 "Gmsh.y" { (yyval.i) = OCC_Internals::Difference; ;} break; case 345: -#line 4383 "Gmsh.y" +#line 4373 "Gmsh.y" { (yyval.i) = OCC_Internals::Section; ;} break; case 346: -#line 4384 "Gmsh.y" +#line 4374 "Gmsh.y" { (yyval.i) = OCC_Internals::Fragments; ;} break; case 347: -#line 4388 "Gmsh.y" +#line 4378 "Gmsh.y" { (yyval.i) = 0; ;} break; case 348: -#line 4389 "Gmsh.y" +#line 4379 "Gmsh.y" { (yyval.i) = 1; ;} break; case 349: -#line 4390 "Gmsh.y" +#line 4380 "Gmsh.y" { (yyval.i) = (yyvsp[(2) - (3)].d); ;} break; case 350: -#line 4395 "Gmsh.y" +#line 4385 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); if(factory == "OpenCASCADE"){ @@ -11187,7 +11177,7 @@ yyreduce: break; case 351: -#line 4428 "Gmsh.y" +#line 4418 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); if(factory == "OpenCASCADE"){ @@ -11213,7 +11203,7 @@ yyreduce: break; case 352: -#line 4455 "Gmsh.y" +#line 4445 "Gmsh.y" { if(factory == "OpenCASCADE"){ std::vector<int> shape[4], tool[4]; @@ -11235,14 +11225,14 @@ yyreduce: break; case 353: -#line 4477 "Gmsh.y" +#line 4467 "Gmsh.y" { (yyval.v)[0] = (yyval.v)[1] = 1.; ;} break; case 354: -#line 4481 "Gmsh.y" +#line 4471 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power")) (yyval.v)[0] = 1.; @@ -11258,14 +11248,14 @@ yyreduce: break; case 355: -#line 4496 "Gmsh.y" +#line 4486 "Gmsh.y" { (yyval.i) = -1; // left ;} break; case 356: -#line 4500 "Gmsh.y" +#line 4490 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "Right")) (yyval.i) = 1; @@ -11282,49 +11272,49 @@ yyreduce: break; case 357: -#line 4516 "Gmsh.y" +#line 4506 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; case 358: -#line 4520 "Gmsh.y" +#line 4510 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; case 359: -#line 4525 "Gmsh.y" +#line 4515 "Gmsh.y" { (yyval.i) = 45; ;} break; case 360: -#line 4529 "Gmsh.y" +#line 4519 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;} break; case 361: -#line 4535 "Gmsh.y" +#line 4525 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; case 362: -#line 4539 "Gmsh.y" +#line 4529 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; case 363: -#line 4546 "Gmsh.y" +#line 4536 "Gmsh.y" { // mesh sizes at vertices are stored in internal CAD data, as they can be // specified during vertex creation and copied around during CAD @@ -11343,7 +11333,7 @@ yyreduce: break; case 364: -#line 4562 "Gmsh.y" +#line 4552 "Gmsh.y" { // transfinite constraints are also stored in GEO internals, as they can // be copied around during GEO operations @@ -11386,7 +11376,7 @@ yyreduce: break; case 365: -#line 4602 "Gmsh.y" +#line 4592 "Gmsh.y" { // transfinite constraints are also stored in GEO internals, as they can // be copied around during GEO operations @@ -11432,7 +11422,7 @@ yyreduce: break; case 366: -#line 4645 "Gmsh.y" +#line 4635 "Gmsh.y" { yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)"); List_Delete((yyvsp[(7) - (8)].l)); @@ -11440,7 +11430,7 @@ yyreduce: break; case 367: -#line 4650 "Gmsh.y" +#line 4640 "Gmsh.y" { // transfinite constraints are also stored in GEO internals, as they can // be copied around during GEO operations @@ -11481,38 +11471,26 @@ yyreduce: break; case 368: -#line 4688 "Gmsh.y" +#line 4678 "Gmsh.y" { + // transfinite constraints are also stored in GEO internals, as they can + // be copied around during GEO operations + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); if(!(yyvsp[(2) - (3)].l)){ - List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes); - if(List_Nbr(tmp)){ - for(int i = 0; i < List_Nbr(tmp); i++){ - Volume *v; - List_Read(tmp, i, &v); - v->QuadTri = TRANSFINITE_QUADTRI_1; - } - } - else{ - for(GModel::riter it = GModel::current()->firstRegion(); - it != GModel::current()->lastRegion(); it++) - (*it)->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1; - } - List_Delete(tmp); + GModel::current()->getGEOInternals()->setTransfiniteVolumeQuadTri(0); + for(GModel::riter it = GModel::current()->firstRegion(); + it != GModel::current()->lastRegion(); it++) + (*it)->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1; } else{ for(int i = 0; i < List_Nbr((yyvsp[(2) - (3)].l)); i++){ double d; List_Read((yyvsp[(2) - (3)].l), i, &d); - Volume *v = FindVolume((int)d); - if(v) - v->QuadTri = TRANSFINITE_QUADTRI_1; - else{ - GRegion *gr = GModel::current()->getRegionByTag((int)d); - if(gr) - gr->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1; - else - yymsg(1, "Unknown model region with tag %d", (int)d); - } + int tag = (int)d; + GModel::current()->getGEOInternals()->setTransfiniteVolumeQuadTri(tag); + GRegion *gr = GModel::current()->getRegionByTag(tag); + if(gr) gr->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1; } List_Delete((yyvsp[(2) - (3)].l)); } @@ -11520,7 +11498,7 @@ yyreduce: break; case 369: -#line 4724 "Gmsh.y" +#line 4702 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (8)].l)); i++){ double d; @@ -11532,46 +11510,30 @@ yyreduce: break; case 370: -#line 4733 "Gmsh.y" +#line 4711 "Gmsh.y" { // recombine constraints are also stored in GEO internals, as they can be // copied around during GEO operations + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); if(!(yyvsp[(3) - (5)].l)){ - List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); - if(List_Nbr(tmp)){ - for(int i = 0; i < List_Nbr(tmp); i++){ - Surface *s; - List_Read(tmp, i, &s); - s->Recombine = 1; - s->RecombineAngle = (yyvsp[(4) - (5)].i); - } - } - else{ - for(GModel::fiter it = GModel::current()->firstFace(); - it != GModel::current()->lastFace(); it++){ - (*it)->meshAttributes.recombine = 1; - (*it)->meshAttributes.recombineAngle = (yyvsp[(4) - (5)].i); - } + GModel::current()->getGEOInternals()->setRecombine(2, 0, (yyvsp[(4) - (5)].i)); + for(GModel::fiter it = GModel::current()->firstFace(); + it != GModel::current()->lastFace(); it++){ + (*it)->meshAttributes.recombine = 1; + (*it)->meshAttributes.recombineAngle = (yyvsp[(4) - (5)].i); } - List_Delete(tmp); } else{ for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){ double d; List_Read((yyvsp[(3) - (5)].l), i, &d); - Surface *s = FindSurface((int)d); - if(s){ - s->Recombine = 1; - s->RecombineAngle = (yyvsp[(4) - (5)].i); - } - else{ - GFace *gf = GModel::current()->getFaceByTag((int)d); - if(gf){ - gf->meshAttributes.recombine = 1; - gf->meshAttributes.recombineAngle = (yyvsp[(4) - (5)].i); - } - else - yymsg(1, "Unknown model face with tag %d", (int)d); + int tag = (int)d; + GModel::current()->getGEOInternals()->setRecombine(2, tag, (yyvsp[(4) - (5)].i)); + GFace *gf = GModel::current()->getFaceByTag(tag); + if(gf){ + gf->meshAttributes.recombine = 1; + gf->meshAttributes.recombineAngle = (yyvsp[(4) - (5)].i); } } List_Delete((yyvsp[(3) - (5)].l)); @@ -11580,43 +11542,27 @@ yyreduce: break; case 371: -#line 4778 "Gmsh.y" +#line 4740 "Gmsh.y" { // recombine constraints are also stored in GEO internals, as they can be // copied around during GEO operations + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); if(!(yyvsp[(3) - (4)].l)){ - List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes); - if(List_Nbr(tmp)){ - for(int i = 0; i < List_Nbr(tmp); i++){ - Volume *v; - List_Read(tmp, i, &v); - v->Recombine3D = 1; - } - } - else{ - for(GModel::riter it = GModel::current()->firstRegion(); - it != GModel::current()->lastRegion(); it++){ - (*it)->meshAttributes.recombine3D = 1; - } + GModel::current()->getGEOInternals()->setRecombine(3, 0, 0.); + for(GModel::riter it = GModel::current()->firstRegion(); + it != GModel::current()->lastRegion(); it++){ + (*it)->meshAttributes.recombine3D = 1; } - List_Delete(tmp); } else{ for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double d; List_Read((yyvsp[(3) - (4)].l), i, &d); - Volume *v = FindVolume((int)d); - if(v){ - v->Recombine3D = 1; - } - else{ - GRegion *gr = GModel::current()->getRegionByTag((int)d); - if(gr){ - gr->meshAttributes.recombine3D = 1; - } - else - yymsg(1, "Unknown model region with tag %d", (int)d); - } + int tag = (int)d; + GModel::current()->getGEOInternals()->setRecombine(3, tag, 0.); + GRegion *gr = GModel::current()->getRegionByTag(tag); + if(gr) gr->meshAttributes.recombine3D = 1; } List_Delete((yyvsp[(3) - (4)].l)); } @@ -11624,32 +11570,35 @@ yyreduce: break; case 372: -#line 4819 "Gmsh.y" +#line 4765 "Gmsh.y" { // smoothing constraints are also stored in GEO internals, as they can be // copied around during GEO operations - for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ - double d; - List_Read((yyvsp[(3) - (6)].l), i, &d); - int j = (int)d; - Surface *s = FindSurface(j); - if(s){ - s->TransfiniteSmoothing = (int)(yyvsp[(5) - (6)].d); + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); + if(!(yyvsp[(3) - (6)].l)){ + GModel::current()->getGEOInternals()->setSmoothing(0, (int)(yyvsp[(5) - (6)].d)); + for(GModel::fiter it = GModel::current()->firstFace(); + it != GModel::current()->lastFace(); it++){ + (*it)->meshAttributes.transfiniteSmoothing = (int)(yyvsp[(5) - (6)].d); } - else{ - GFace *gf = GModel::current()->getFaceByTag(j); - if(gf) - gf->meshAttributes.transfiniteSmoothing = (int)(yyvsp[(5) - (6)].d); - else - yymsg(1, "Unknown model face with tag %d", (int)(yyvsp[(5) - (6)].d)); + } + else{ + for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ + double d; + List_Read((yyvsp[(3) - (6)].l), i, &d); + int tag = (int)d; + GModel::current()->getGEOInternals()->setSmoothing(tag, (int)(yyvsp[(5) - (6)].d)); + GFace *gf = GModel::current()->getFaceByTag(tag); + if(gf) gf->meshAttributes.transfiniteSmoothing = (int)(yyvsp[(5) - (6)].d); } + List_Delete((yyvsp[(3) - (6)].l)); } - List_Delete((yyvsp[(3) - (6)].l)); ;} break; case 373: -#line 4842 "Gmsh.y" +#line 4791 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l))){ yymsg(0, "Number of master lines (%d) different from number of " @@ -11683,7 +11632,7 @@ yyreduce: break; case 374: -#line 4874 "Gmsh.y" +#line 4823 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -11712,7 +11661,7 @@ yyreduce: break; case 375: -#line 4901 "Gmsh.y" +#line 4850 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l))){ yymsg(0, "Number of master edges (%d) different from number of " @@ -11740,7 +11689,7 @@ yyreduce: break; case 376: -#line 4927 "Gmsh.y" +#line 4876 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -11768,7 +11717,7 @@ yyreduce: break; case 377: -#line 4953 "Gmsh.y" +#line 4902 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l))){ yymsg(0, "Number of master edges (%d) different from number of " @@ -11796,7 +11745,7 @@ yyreduce: break; case 378: -#line 4979 "Gmsh.y" +#line 4928 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -11824,7 +11773,7 @@ yyreduce: break; case 379: -#line 5005 "Gmsh.y" +#line 4954 "Gmsh.y" { if (List_Nbr((yyvsp[(5) - (12)].l)) != List_Nbr((yyvsp[(10) - (12)].l))){ yymsg(0, "Number of master surface edges (%d) different from number of " @@ -11848,7 +11797,7 @@ yyreduce: break; case 380: -#line 5026 "Gmsh.y" +#line 4975 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags); addEmbedded(0, tags, 2, (int)(yyvsp[(8) - (10)].d)); @@ -11857,7 +11806,7 @@ yyreduce: break; case 381: -#line 5032 "Gmsh.y" +#line 4981 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags); addEmbedded(1, tags, 2, (int)(yyvsp[(8) - (10)].d)); @@ -11866,7 +11815,7 @@ yyreduce: break; case 382: -#line 5038 "Gmsh.y" +#line 4987 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags); addEmbedded(0, tags, 3, (int)(yyvsp[(8) - (10)].d)); @@ -11875,7 +11824,7 @@ yyreduce: break; case 383: -#line 5044 "Gmsh.y" +#line 4993 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags); addEmbedded(1, tags, 3, (int)(yyvsp[(8) - (10)].d)); @@ -11884,7 +11833,7 @@ yyreduce: break; case 384: -#line 5050 "Gmsh.y" +#line 4999 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags); addEmbedded(2, tags, 3, (int)(yyvsp[(8) - (10)].d)); @@ -11893,43 +11842,27 @@ yyreduce: break; case 385: -#line 5056 "Gmsh.y" +#line 5005 "Gmsh.y" { // reverse mesh constraints are also stored in GEO internals, as they can // be copied around during GEO operations + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); if(!(yyvsp[(3) - (4)].l)){ - List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); - if(List_Nbr(tmp)){ - for(int i = 0; i < List_Nbr(tmp); i++){ - Surface *s; - List_Read(tmp, i, &s); - s->ReverseMesh = 1; - } - } - else{ - for(GModel::fiter it = GModel::current()->firstFace(); - it != GModel::current()->lastFace(); it++){ - (*it)->meshAttributes.reverseMesh = 1; - } + GModel::current()->getGEOInternals()->setReverseMesh(2, 0); + for(GModel::fiter it = GModel::current()->firstFace(); + it != GModel::current()->lastFace(); it++){ + (*it)->meshAttributes.reverseMesh = 1; } - List_Delete(tmp); } else{ for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double d; List_Read((yyvsp[(3) - (4)].l), i, &d); - Surface *s = FindSurface((int)d); - if(s){ - s->ReverseMesh = 1; - } - else{ - GFace *gf = GModel::current()->getFaceByTag((int)d); - if(gf){ - gf->meshAttributes.reverseMesh = 1; - } - else - yymsg(1, "Unknown model face with tag %d", (int)d); - } + int num = (int)d; + GModel::current()->getGEOInternals()->setReverseMesh(2, num); + GFace *gf = GModel::current()->getFaceByTag(num); + if(gf) gf->meshAttributes.reverseMesh = 1; } List_Delete((yyvsp[(3) - (4)].l)); } @@ -11937,43 +11870,27 @@ yyreduce: break; case 386: -#line 5097 "Gmsh.y" +#line 5030 "Gmsh.y" { // reverse mesh constraints are also stored in GEO internals, as they can // be copied around during GEO operations + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); if(!(yyvsp[(3) - (4)].l)){ - List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Curves); - if(List_Nbr(tmp)){ - for(int i = 0; i < List_Nbr(tmp); i++){ - Curve *c; - List_Read(tmp, i, &c); - c->ReverseMesh = 1; - } - } - else{ - for(GModel::eiter it = GModel::current()->firstEdge(); - it != GModel::current()->lastEdge(); it++){ - (*it)->meshAttributes.reverseMesh = 1; - } + GModel::current()->getGEOInternals()->setReverseMesh(1, 0); + for(GModel::eiter it = GModel::current()->firstEdge(); + it != GModel::current()->lastEdge(); it++){ + (*it)->meshAttributes.reverseMesh = 1; } - List_Delete(tmp); } else{ for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double d; List_Read((yyvsp[(3) - (4)].l), i, &d); - Curve *c = FindCurve((int)d); - if(c){ - c->ReverseMesh = 1; - } - else{ - GEdge *ge = GModel::current()->getEdgeByTag((int)d); - if(ge){ - ge->meshAttributes.reverseMesh = 1; - } - else - yymsg(1, "Unknown model edge with tag %d", (int)d); - } + int num = (int)d; + GModel::current()->getGEOInternals()->setReverseMesh(1, num); + GEdge *ge = GModel::current()->getEdgeByTag(num); + if(ge) ge->meshAttributes.reverseMesh = 1; } List_Delete((yyvsp[(3) - (4)].l)); } @@ -11981,7 +11898,7 @@ yyreduce: break; case 387: -#line 5138 "Gmsh.y" +#line 5055 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ for(GModel::viter it = GModel::current()->firstVertex(); @@ -12001,7 +11918,7 @@ yyreduce: break; case 388: -#line 5155 "Gmsh.y" +#line 5072 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ for(GModel::eiter it = GModel::current()->firstEdge(); @@ -12021,7 +11938,7 @@ yyreduce: break; case 389: -#line 5172 "Gmsh.y" +#line 5089 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ for(GModel::fiter it = GModel::current()->firstFace(); @@ -12041,7 +11958,7 @@ yyreduce: break; case 390: -#line 5189 "Gmsh.y" +#line 5106 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double dnum; @@ -12056,7 +11973,7 @@ yyreduce: break; case 391: -#line 5201 "Gmsh.y" +#line 5118 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (4)].l), tags); GModel::current()->getGEOInternals()->setCompoundMesh(1, tags); @@ -12065,7 +11982,7 @@ yyreduce: break; case 392: -#line 5207 "Gmsh.y" +#line 5124 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (4)].l), tags); GModel::current()->getGEOInternals()->setCompoundMesh(2, tags); @@ -12074,7 +11991,7 @@ yyreduce: break; case 393: -#line 5213 "Gmsh.y" +#line 5130 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (4)].l), tags); GModel::current()->getGEOInternals()->setCompoundMesh(3, tags); @@ -12083,14 +12000,14 @@ yyreduce: break; case 394: -#line 5225 "Gmsh.y" +#line 5142 "Gmsh.y" { GModel::current()->getGEOInternals()->removeAllDuplicates(); ;} break; case 395: -#line 5229 "Gmsh.y" +#line 5146 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Geometry")) GModel::current()->getGEOInternals()->removeAllDuplicates(); @@ -12103,7 +12020,7 @@ yyreduce: break; case 396: -#line 5239 "Gmsh.y" +#line 5156 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(4) - (6)].l), tags); GModel::current()->getGEOInternals()->mergeVertices(tags); @@ -12112,22 +12029,22 @@ yyreduce: break; case 397: -#line 5249 "Gmsh.y" +#line 5166 "Gmsh.y" { (yyval.c) = (char*)"Homology"; ;} break; case 398: -#line 5250 "Gmsh.y" +#line 5167 "Gmsh.y" { (yyval.c) = (char*)"Cohomology"; ;} break; case 399: -#line 5251 "Gmsh.y" +#line 5168 "Gmsh.y" { (yyval.c) = (char*)"Betti"; ;} break; case 400: -#line 5256 "Gmsh.y" +#line 5173 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < 4; i++) dim.push_back(i); @@ -12136,7 +12053,7 @@ yyreduce: break; case 401: -#line 5262 "Gmsh.y" +#line 5179 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){ @@ -12151,7 +12068,7 @@ yyreduce: break; case 402: -#line 5274 "Gmsh.y" +#line 5191 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){ @@ -12172,7 +12089,7 @@ yyreduce: break; case 403: -#line 5292 "Gmsh.y" +#line 5209 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(6) - (10)].l)); i++){ @@ -12198,47 +12115,47 @@ yyreduce: break; case 404: -#line 5319 "Gmsh.y" +#line 5236 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 405: -#line 5320 "Gmsh.y" +#line 5237 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (3)].d); ;} break; case 406: -#line 5321 "Gmsh.y" +#line 5238 "Gmsh.y" { (yyval.d) = -(yyvsp[(2) - (2)].d); ;} break; case 407: -#line 5322 "Gmsh.y" +#line 5239 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; case 408: -#line 5323 "Gmsh.y" +#line 5240 "Gmsh.y" { (yyval.d) = !(yyvsp[(2) - (2)].d); ;} break; case 409: -#line 5324 "Gmsh.y" +#line 5241 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;} break; case 410: -#line 5325 "Gmsh.y" +#line 5242 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;} break; case 411: -#line 5326 "Gmsh.y" +#line 5243 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;} break; case 412: -#line 5328 "Gmsh.y" +#line 5245 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); @@ -12248,232 +12165,232 @@ yyreduce: break; case 413: -#line 5334 "Gmsh.y" +#line 5251 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;} break; case 414: -#line 5335 "Gmsh.y" +#line 5252 "Gmsh.y" { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;} break; case 415: -#line 5336 "Gmsh.y" +#line 5253 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;} break; case 416: -#line 5337 "Gmsh.y" +#line 5254 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;} break; case 417: -#line 5338 "Gmsh.y" +#line 5255 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;} break; case 418: -#line 5339 "Gmsh.y" +#line 5256 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;} break; case 419: -#line 5340 "Gmsh.y" +#line 5257 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;} break; case 420: -#line 5341 "Gmsh.y" +#line 5258 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;} break; case 421: -#line 5342 "Gmsh.y" +#line 5259 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;} break; case 422: -#line 5343 "Gmsh.y" +#line 5260 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;} break; case 423: -#line 5344 "Gmsh.y" +#line 5261 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;} break; case 424: -#line 5345 "Gmsh.y" +#line 5262 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; case 425: -#line 5346 "Gmsh.y" +#line 5263 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; case 426: -#line 5347 "Gmsh.y" +#line 5264 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; case 427: -#line 5348 "Gmsh.y" +#line 5265 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; case 428: -#line 5349 "Gmsh.y" +#line 5266 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; case 429: -#line 5350 "Gmsh.y" +#line 5267 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; case 430: -#line 5351 "Gmsh.y" +#line 5268 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; case 431: -#line 5352 "Gmsh.y" +#line 5269 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; case 432: -#line 5353 "Gmsh.y" +#line 5270 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; case 433: -#line 5354 "Gmsh.y" +#line 5271 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; case 434: -#line 5355 "Gmsh.y" +#line 5272 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; case 435: -#line 5356 "Gmsh.y" +#line 5273 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; case 436: -#line 5357 "Gmsh.y" +#line 5274 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; case 437: -#line 5358 "Gmsh.y" +#line 5275 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; case 438: -#line 5359 "Gmsh.y" +#line 5276 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; case 439: -#line 5360 "Gmsh.y" +#line 5277 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; case 440: -#line 5361 "Gmsh.y" +#line 5278 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; case 441: -#line 5362 "Gmsh.y" +#line 5279 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5); ;} break; case 442: -#line 5363 "Gmsh.y" +#line 5280 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 443: -#line 5364 "Gmsh.y" +#line 5281 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 444: -#line 5365 "Gmsh.y" +#line 5282 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; case 445: -#line 5366 "Gmsh.y" +#line 5283 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; case 446: -#line 5375 "Gmsh.y" +#line 5292 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 447: -#line 5376 "Gmsh.y" +#line 5293 "Gmsh.y" { (yyval.d) = 3.141592653589793; ;} break; case 448: -#line 5377 "Gmsh.y" +#line 5294 "Gmsh.y" { (yyval.d) = (double)ImbricatedTest; ;} break; case 449: -#line 5378 "Gmsh.y" +#line 5295 "Gmsh.y" { (yyval.d) = Msg::GetCommRank(); ;} break; case 450: -#line 5379 "Gmsh.y" +#line 5296 "Gmsh.y" { (yyval.d) = Msg::GetCommSize(); ;} break; case 451: -#line 5380 "Gmsh.y" +#line 5297 "Gmsh.y" { (yyval.d) = GetGmshMajorVersion(); ;} break; case 452: -#line 5381 "Gmsh.y" +#line 5298 "Gmsh.y" { (yyval.d) = GetGmshMinorVersion(); ;} break; case 453: -#line 5382 "Gmsh.y" +#line 5299 "Gmsh.y" { (yyval.d) = GetGmshPatchVersion(); ;} break; case 454: -#line 5383 "Gmsh.y" +#line 5300 "Gmsh.y" { (yyval.d) = Cpu(); ;} break; case 455: -#line 5384 "Gmsh.y" +#line 5301 "Gmsh.y" { (yyval.d) = GetMemoryUsage()/1024./1024.; ;} break; case 456: -#line 5385 "Gmsh.y" +#line 5302 "Gmsh.y" { (yyval.d) = TotalRam(); ;} break; case 457: -#line 5390 "Gmsh.y" +#line 5307 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 458: -#line 5392 "Gmsh.y" +#line 5309 "Gmsh.y" { std::vector<double> val(1, (yyvsp[(3) - (6)].d)); Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions); @@ -12482,7 +12399,7 @@ yyreduce: break; case 459: -#line 5398 "Gmsh.y" +#line 5315 "Gmsh.y" { (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); @@ -12490,7 +12407,7 @@ yyreduce: break; case 460: -#line 5403 "Gmsh.y" +#line 5320 "Gmsh.y" { (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); @@ -12498,7 +12415,7 @@ yyreduce: break; case 461: -#line 5408 "Gmsh.y" +#line 5325 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (1)].c)); @@ -12518,7 +12435,7 @@ yyreduce: break; case 462: -#line 5425 "Gmsh.y" +#line 5342 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -12539,7 +12456,7 @@ yyreduce: break; case 463: -#line 5443 "Gmsh.y" +#line 5360 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -12560,7 +12477,7 @@ yyreduce: break; case 464: -#line 5461 "Gmsh.y" +#line 5378 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -12581,7 +12498,7 @@ yyreduce: break; case 465: -#line 5479 "Gmsh.y" +#line 5396 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -12602,7 +12519,7 @@ yyreduce: break; case 466: -#line 5497 "Gmsh.y" +#line 5414 "Gmsh.y" { (yyval.d) = gmsh_yysymbols.count((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); @@ -12610,7 +12527,7 @@ yyreduce: break; case 467: -#line 5502 "Gmsh.y" +#line 5419 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c)); (yyval.d) = !StatFile(tmp); @@ -12619,7 +12536,7 @@ yyreduce: break; case 468: -#line 5508 "Gmsh.y" +#line 5425 "Gmsh.y" { if(gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(2) - (4)].c)]); @@ -12637,7 +12554,7 @@ yyreduce: break; case 469: -#line 5523 "Gmsh.y" +#line 5440 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -12659,7 +12576,7 @@ yyreduce: break; case 470: -#line 5542 "Gmsh.y" +#line 5459 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -12682,7 +12599,7 @@ yyreduce: break; case 471: -#line 5562 "Gmsh.y" +#line 5479 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -12705,7 +12622,7 @@ yyreduce: break; case 472: -#line 5582 "Gmsh.y" +#line 5499 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -12728,7 +12645,7 @@ yyreduce: break; case 473: -#line 5602 "Gmsh.y" +#line 5519 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -12751,7 +12668,7 @@ yyreduce: break; case 474: -#line 5625 "Gmsh.y" +#line 5542 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), (yyval.d)); Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c)); @@ -12759,7 +12676,7 @@ yyreduce: break; case 475: -#line 5630 "Gmsh.y" +#line 5547 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d)); Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c)); @@ -12767,7 +12684,7 @@ yyreduce: break; case 476: -#line 5635 "Gmsh.y" +#line 5552 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -12780,7 +12697,7 @@ yyreduce: break; case 477: -#line 5645 "Gmsh.y" +#line 5562 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -12793,7 +12710,7 @@ yyreduce: break; case 478: -#line 5655 "Gmsh.y" +#line 5572 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); @@ -12801,7 +12718,7 @@ yyreduce: break; case 479: -#line 5660 "Gmsh.y" +#line 5577 "Gmsh.y" { int matches = 0; for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ @@ -12815,7 +12732,7 @@ yyreduce: break; case 480: -#line 5671 "Gmsh.y" +#line 5588 "Gmsh.y" { std::string s((yyvsp[(3) - (6)].c)), substr((yyvsp[(5) - (6)].c)); if(s.find(substr) != std::string::npos) @@ -12827,7 +12744,7 @@ yyreduce: break; case 481: -#line 5680 "Gmsh.y" +#line 5597 "Gmsh.y" { (yyval.d) = strlen((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); @@ -12835,7 +12752,7 @@ yyreduce: break; case 482: -#line 5685 "Gmsh.y" +#line 5602 "Gmsh.y" { (yyval.d) = strcmp((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c)); @@ -12843,7 +12760,7 @@ yyreduce: break; case 483: -#line 5690 "Gmsh.y" +#line 5607 "Gmsh.y" { int align = 0, font = 0, fontsize = CTX::instance()->glFontSize; if(List_Nbr((yyvsp[(3) - (4)].l)) % 2){ @@ -12870,70 +12787,70 @@ yyreduce: break; case 484: -#line 5717 "Gmsh.y" +#line 5634 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); ;} break; case 485: -#line 5721 "Gmsh.y" +#line 5638 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; ;} break; case 486: -#line 5725 "Gmsh.y" +#line 5642 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; case 487: -#line 5729 "Gmsh.y" +#line 5646 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; ;} break; case 488: -#line 5733 "Gmsh.y" +#line 5650 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; ;} break; case 489: -#line 5740 "Gmsh.y" +#line 5657 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (11)].d); (yyval.v)[1] = (yyvsp[(4) - (11)].d); (yyval.v)[2] = (yyvsp[(6) - (11)].d); (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d); ;} break; case 490: -#line 5744 "Gmsh.y" +#line 5661 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (9)].d); (yyval.v)[1] = (yyvsp[(4) - (9)].d); (yyval.v)[2] = (yyvsp[(6) - (9)].d); (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0; ;} break; case 491: -#line 5748 "Gmsh.y" +#line 5665 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; case 492: -#line 5752 "Gmsh.y" +#line 5669 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; case 493: -#line 5759 "Gmsh.y" +#line 5676 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); @@ -12941,14 +12858,14 @@ yyreduce: break; case 494: -#line 5764 "Gmsh.y" +#line 5681 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); ;} break; case 495: -#line 5771 "Gmsh.y" +#line 5688 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -12956,14 +12873,14 @@ yyreduce: break; case 496: -#line 5776 "Gmsh.y" +#line 5693 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 497: -#line 5780 "Gmsh.y" +#line 5697 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); @@ -12971,14 +12888,14 @@ yyreduce: break; case 498: -#line 5785 "Gmsh.y" +#line 5702 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 499: -#line 5789 "Gmsh.y" +#line 5706 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12989,7 +12906,7 @@ yyreduce: break; case 500: -#line 5797 "Gmsh.y" +#line 5714 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -13000,14 +12917,14 @@ yyreduce: break; case 501: -#line 5808 "Gmsh.y" +#line 5725 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 502: -#line 5812 "Gmsh.y" +#line 5729 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -13019,7 +12936,7 @@ yyreduce: break; case 503: -#line 5824 "Gmsh.y" +#line 5741 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -13030,7 +12947,7 @@ yyreduce: break; case 504: -#line 5832 "Gmsh.y" +#line 5749 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -13041,7 +12958,7 @@ yyreduce: break; case 505: -#line 5840 "Gmsh.y" +#line 5757 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d)); @@ -13051,7 +12968,7 @@ yyreduce: break; case 506: -#line 5847 "Gmsh.y" +#line 5764 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!(yyvsp[(5) - (5)].d)){ //|| ($1 < $3 && $5 < 0) || ($1 > $3 && $5 > 0) @@ -13064,7 +12981,7 @@ yyreduce: break; case 507: -#line 5857 "Gmsh.y" +#line 5774 "Gmsh.y" { (yyval.l) = List_Create(3, 1, sizeof(double)); int tag = (int)(yyvsp[(3) - (4)].d); @@ -13089,63 +13006,63 @@ yyreduce: break; case 508: -#line 5879 "Gmsh.y" +#line 5796 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(0); ;} break; case 509: -#line 5883 "Gmsh.y" +#line 5800 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(1); ;} break; case 510: -#line 5887 "Gmsh.y" +#line 5804 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(2); ;} break; case 511: -#line 5891 "Gmsh.y" +#line 5808 "Gmsh.y" { (yyval.l) = GetAllElementaryEntityNumbers(3); ;} break; case 512: -#line 5895 "Gmsh.y" +#line 5812 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(0); ;} break; case 513: -#line 5899 "Gmsh.y" +#line 5816 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(1); ;} break; case 514: -#line 5903 "Gmsh.y" +#line 5820 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(2); ;} break; case 515: -#line 5907 "Gmsh.y" +#line 5824 "Gmsh.y" { (yyval.l) = GetAllPhysicalEntityNumbers(3); ;} break; case 516: -#line 5911 "Gmsh.y" +#line 5828 "Gmsh.y" { // FIXME: physical groups should not be stored in GEO_Internals, but // directly in GModel @@ -13179,7 +13096,7 @@ yyreduce: break; case 517: -#line 5942 "Gmsh.y" +#line 5859 "Gmsh.y" { // FIXME: physical groups should not be stored in GEO_Internals, but // directly in GModel @@ -13213,7 +13130,7 @@ yyreduce: break; case 518: -#line 5973 "Gmsh.y" +#line 5890 "Gmsh.y" { // FIXME: physical groups should not be stored in GEO_Internals, but // directly in GModel @@ -13247,7 +13164,7 @@ yyreduce: break; case 519: -#line 6004 "Gmsh.y" +#line 5921 "Gmsh.y" { // FIXME: physical groups should not be stored in GEO_Internals, but // directly in GModel @@ -13281,7 +13198,7 @@ yyreduce: break; case 520: -#line 6036 "Gmsh.y" +#line 5953 "Gmsh.y" { if(GModel::current()->getOCCInternals()->getChanged()) GModel::current()->getOCCInternals()->synchronize(GModel::current()); @@ -13299,7 +13216,7 @@ yyreduce: break; case 521: -#line 6052 "Gmsh.y" +#line 5969 "Gmsh.y" { if(GModel::current()->getOCCInternals()->getChanged()) GModel::current()->getOCCInternals()->synchronize(GModel::current()); @@ -13317,7 +13234,7 @@ yyreduce: break; case 522: -#line 6068 "Gmsh.y" +#line 5985 "Gmsh.y" { if(GModel::current()->getOCCInternals()->getChanged()) GModel::current()->getOCCInternals()->synchronize(GModel::current()); @@ -13335,7 +13252,7 @@ yyreduce: break; case 523: -#line 6084 "Gmsh.y" +#line 6001 "Gmsh.y" { if(GModel::current()->getOCCInternals()->getChanged()) GModel::current()->getOCCInternals()->synchronize(GModel::current()); @@ -13353,7 +13270,7 @@ yyreduce: break; case 524: -#line 6099 "Gmsh.y" +#line 6016 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -13366,7 +13283,7 @@ yyreduce: break; case 525: -#line 6109 "Gmsh.y" +#line 6026 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -13379,7 +13296,7 @@ yyreduce: break; case 526: -#line 6119 "Gmsh.y" +#line 6036 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -13392,7 +13309,7 @@ yyreduce: break; case 527: -#line 6129 "Gmsh.y" +#line 6046 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -13407,7 +13324,7 @@ yyreduce: break; case 528: -#line 6141 "Gmsh.y" +#line 6058 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -13422,7 +13339,7 @@ yyreduce: break; case 529: -#line 6154 "Gmsh.y" +#line 6071 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(3) - (4)].c))) @@ -13437,35 +13354,35 @@ yyreduce: break; case 530: -#line 6166 "Gmsh.y" +#line 6083 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; case 531: -#line 6170 "Gmsh.y" +#line 6087 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; case 532: -#line 6174 "Gmsh.y" +#line 6091 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (6)].l); ;} break; case 533: -#line 6178 "Gmsh.y" +#line 6095 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (6)].l); ;} break; case 534: -#line 6182 "Gmsh.y" +#line 6099 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -13486,7 +13403,7 @@ yyreduce: break; case 535: -#line 6200 "Gmsh.y" +#line 6117 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -13507,7 +13424,7 @@ yyreduce: break; case 536: -#line 6218 "Gmsh.y" +#line 6135 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(double)); for(int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++) { @@ -13518,7 +13435,7 @@ yyreduce: break; case 537: -#line 6226 "Gmsh.y" +#line 6143 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(double)); for(int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++) { @@ -13529,7 +13446,7 @@ yyreduce: break; case 538: -#line 6234 "Gmsh.y" +#line 6151 "Gmsh.y" { Msg::Barrier(); FILE *File; @@ -13561,7 +13478,7 @@ yyreduce: break; case 539: -#line 6263 "Gmsh.y" +#line 6180 "Gmsh.y" { double x0 = (yyvsp[(3) - (14)].d), x1 = (yyvsp[(5) - (14)].d), y0 = (yyvsp[(7) - (14)].d), y1 = (yyvsp[(9) - (14)].d), ys = (yyvsp[(11) - (14)].d); int N = (int)(yyvsp[(13) - (14)].d); @@ -13574,7 +13491,7 @@ yyreduce: break; case 540: -#line 6273 "Gmsh.y" +#line 6190 "Gmsh.y" { std::vector<double> tmp; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ @@ -13593,7 +13510,7 @@ yyreduce: break; case 541: -#line 6292 "Gmsh.y" +#line 6209 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -13601,21 +13518,21 @@ yyreduce: break; case 542: -#line 6297 "Gmsh.y" +#line 6214 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 543: -#line 6301 "Gmsh.y" +#line 6218 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); ;} break; case 544: -#line 6305 "Gmsh.y" +#line 6222 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -13627,21 +13544,21 @@ yyreduce: break; case 545: -#line 6317 "Gmsh.y" +#line 6234 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d)); ;} break; case 546: -#line 6321 "Gmsh.y" +#line 6238 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255); ;} break; case 547: -#line 6333 "Gmsh.y" +#line 6250 "Gmsh.y" { int flag = 0; if(gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ @@ -13661,7 +13578,7 @@ yyreduce: break; case 548: -#line 6350 "Gmsh.y" +#line 6267 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); @@ -13671,14 +13588,14 @@ yyreduce: break; case 549: -#line 6360 "Gmsh.y" +#line 6277 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 550: -#line 6364 "Gmsh.y" +#line 6281 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -13693,7 +13610,7 @@ yyreduce: break; case 551: -#line 6379 "Gmsh.y" +#line 6296 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); @@ -13701,21 +13618,21 @@ yyreduce: break; case 552: -#line 6384 "Gmsh.y" +#line 6301 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); ;} break; case 553: -#line 6391 "Gmsh.y" +#line 6308 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 554: -#line 6395 "Gmsh.y" +#line 6312 "Gmsh.y" { std::string val; if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))) @@ -13731,7 +13648,7 @@ yyreduce: break; case 555: -#line 6408 "Gmsh.y" +#line 6325 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -13748,7 +13665,7 @@ yyreduce: break; case 556: -#line 6422 "Gmsh.y" +#line 6339 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -13765,7 +13682,7 @@ yyreduce: break; case 557: -#line 6436 "Gmsh.y" +#line 6353 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -13782,7 +13699,7 @@ yyreduce: break; case 558: -#line 6450 "Gmsh.y" +#line 6367 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -13799,7 +13716,7 @@ yyreduce: break; case 559: -#line 6464 "Gmsh.y" +#line 6381 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), out); @@ -13810,7 +13727,7 @@ yyreduce: break; case 560: -#line 6472 "Gmsh.y" +#line 6389 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); @@ -13821,21 +13738,21 @@ yyreduce: break; case 561: -#line 6483 "Gmsh.y" +#line 6400 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 562: -#line 6487 "Gmsh.y" +#line 6404 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; case 563: -#line 6491 "Gmsh.y" +#line 6408 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; @@ -13846,7 +13763,7 @@ yyreduce: break; case 564: -#line 6499 "Gmsh.y" +#line 6416 "Gmsh.y" { std::string exe = Msg::GetExecutableName(); (yyval.c) = (char *)Malloc(exe.size() + 1); @@ -13855,7 +13772,7 @@ yyreduce: break; case 565: -#line 6505 "Gmsh.y" +#line 6422 "Gmsh.y" { std::string action = Msg::GetOnelabAction(); (yyval.c) = (char *)Malloc(action.size() + 1); @@ -13864,7 +13781,7 @@ yyreduce: break; case 566: -#line 6511 "Gmsh.y" +#line 6428 "Gmsh.y" { const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c)); if(!env) env = ""; @@ -13875,7 +13792,7 @@ yyreduce: break; case 567: -#line 6519 "Gmsh.y" +#line 6436 "Gmsh.y" { std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -13886,7 +13803,7 @@ yyreduce: break; case 568: -#line 6527 "Gmsh.y" +#line 6444 "Gmsh.y" { std::string s = Msg::GetOnelabString((yyvsp[(3) - (4)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -13896,7 +13813,7 @@ yyreduce: break; case 569: -#line 6534 "Gmsh.y" +#line 6451 "Gmsh.y" { std::string s = Msg::GetOnelabString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -13907,7 +13824,7 @@ yyreduce: break; case 570: -#line 6542 "Gmsh.y" +#line 6459 "Gmsh.y" { int size = 1; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -13925,7 +13842,7 @@ yyreduce: break; case 571: -#line 6557 "Gmsh.y" +#line 6474 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -13942,7 +13859,7 @@ yyreduce: break; case 572: -#line 6571 "Gmsh.y" +#line 6488 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -13959,7 +13876,7 @@ yyreduce: break; case 573: -#line 6585 "Gmsh.y" +#line 6502 "Gmsh.y" { std::string input = (yyvsp[(3) - (8)].c); std::string substr_old = (yyvsp[(5) - (8)].c); @@ -13974,7 +13891,7 @@ yyreduce: break; case 574: -#line 6597 "Gmsh.y" +#line 6514 "Gmsh.y" { int size = 1; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -13993,7 +13910,7 @@ yyreduce: break; case 575: -#line 6613 "Gmsh.y" +#line 6530 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -14005,7 +13922,7 @@ yyreduce: break; case 576: -#line 6622 "Gmsh.y" +#line 6539 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -14017,7 +13934,7 @@ yyreduce: break; case 577: -#line 6631 "Gmsh.y" +#line 6548 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -14030,7 +13947,7 @@ yyreduce: break; case 578: -#line 6641 "Gmsh.y" +#line 6558 "Gmsh.y" { if((yyvsp[(3) - (8)].d)){ (yyval.c) = (yyvsp[(5) - (8)].c); @@ -14044,7 +13961,7 @@ yyreduce: break; case 579: -#line 6652 "Gmsh.y" +#line 6569 "Gmsh.y" { std::string in = (yyvsp[(3) - (8)].c); std::string out = in.substr((int)(yyvsp[(5) - (8)].d), (int)(yyvsp[(7) - (8)].d)); @@ -14055,7 +13972,7 @@ yyreduce: break; case 580: -#line 6660 "Gmsh.y" +#line 6577 "Gmsh.y" { std::string in = (yyvsp[(3) - (6)].c); std::string out = in.substr((int)(yyvsp[(5) - (6)].d), std::string::npos); @@ -14066,14 +13983,14 @@ yyreduce: break; case 581: -#line 6668 "Gmsh.y" +#line 6585 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; case 582: -#line 6672 "Gmsh.y" +#line 6589 "Gmsh.y" { char tmpstring[5000]; int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -14095,7 +14012,7 @@ yyreduce: break; case 583: -#line 6691 "Gmsh.y" +#line 6608 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c)); (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -14105,7 +14022,7 @@ yyreduce: break; case 584: -#line 6698 "Gmsh.y" +#line 6615 "Gmsh.y" { std::string tmp = SplitFileName(GetAbsolutePath(gmsh_yyname))[0]; (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -14114,7 +14031,7 @@ yyreduce: break; case 585: -#line 6704 "Gmsh.y" +#line 6621 "Gmsh.y" { std::string tmp = SplitFileName((yyvsp[(3) - (4)].c))[0]; (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -14124,7 +14041,7 @@ yyreduce: break; case 586: -#line 6711 "Gmsh.y" +#line 6628 "Gmsh.y" { std::string tmp = GetAbsolutePath((yyvsp[(3) - (4)].c)); (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -14134,12 +14051,12 @@ yyreduce: break; case 587: -#line 6718 "Gmsh.y" +#line 6635 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 588: -#line 6720 "Gmsh.y" +#line 6637 "Gmsh.y" { std::string val((yyvsp[(3) - (6)].c)); Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions); @@ -14150,7 +14067,7 @@ yyreduce: break; case 589: -#line 6731 "Gmsh.y" +#line 6648 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(char*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].c))); @@ -14158,12 +14075,12 @@ yyreduce: break; case 590: -#line 6736 "Gmsh.y" +#line 6653 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].c))); ;} break; case 591: -#line 6742 "Gmsh.y" +#line 6659 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -14174,7 +14091,7 @@ yyreduce: break; case 592: -#line 6751 "Gmsh.y" +#line 6668 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -14185,23 +14102,23 @@ yyreduce: break; case 593: -#line 6764 "Gmsh.y" +#line 6681 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 594: -#line 6767 "Gmsh.y" +#line 6684 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 595: -#line 6771 "Gmsh.y" +#line 6688 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; /* Line 1267 of yacc.c. */ -#line 14205 "Gmsh.tab.cpp" +#line 14122 "Gmsh.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -14415,7 +14332,7 @@ yyreturn: } -#line 6774 "Gmsh.y" +#line 6691 "Gmsh.y" void assignVariable(const std::string &name, int index, int assignType, @@ -14636,6 +14553,7 @@ fullMatrix<double> ListOfListOfDouble2Matrix(List_T *list) void ListOfDouble2Vector(List_T *list, std::vector<int> &v) { v.clear(); + if(!list) return; v.reserve(List_Nbr(list)); for(int i = 0; i < List_Nbr(list); i++){ double d; @@ -14647,6 +14565,7 @@ void ListOfDouble2Vector(List_T *list, std::vector<int> &v) void ListOfDouble2Vector(List_T *list, std::vector<double> &v) { v.clear(); + if(!list) return; v.reserve(List_Nbr(list)); for(int i = 0; i < List_Nbr(list); i++){ double d; diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 2012a4837a324ea7e94c22447dfbee7e65aeddb2..fec0d7d85225735f8037369ca9ee25e7d1ed4ea3 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -4347,21 +4347,11 @@ ExtrudeParameter : } | tHole '(' FExpr ')' tAFFECT ListOfDouble tUsing FExpr tEND { + std::vector<int> tags; ListOfDouble2Vector($6, tags); int num = (int)$3; - if(FindSurface(num)){ - yymsg(0, "Surface %d already exists", num); - } - else{ - Surface *s = Create_Surface(num, MSH_SURF_DISCRETE); - Tree_Add(GModel::current()->getGEOInternals()->Surfaces, &s); - extr.mesh.Holes[num].first = $8; - extr.mesh.Holes[num].second.clear(); - for(int i = 0; i < List_Nbr($6); i++){ - double d; - List_Read($6, i, &d); - extr.mesh.Holes[num].second.push_back((int)d); - } - } + GModel::current()->getGEOInternals()->addDiscreteSurface(num); + extr.mesh.Holes[num].first = $8; + extr.mesh.Holes[num].second = tags; List_Delete($6); } | tUsing tSTRING '[' FExpr ']' tEND @@ -4686,36 +4676,24 @@ Constraints : } | tTransfQuadTri ListOfDoubleOrAll tEND { + // transfinite constraints are also stored in GEO internals, as they can + // be copied around during GEO operations + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); if(!$2){ - List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes); - if(List_Nbr(tmp)){ - for(int i = 0; i < List_Nbr(tmp); i++){ - Volume *v; - List_Read(tmp, i, &v); - v->QuadTri = TRANSFINITE_QUADTRI_1; - } - } - else{ - for(GModel::riter it = GModel::current()->firstRegion(); - it != GModel::current()->lastRegion(); it++) - (*it)->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1; - } - List_Delete(tmp); + GModel::current()->getGEOInternals()->setTransfiniteVolumeQuadTri(0); + for(GModel::riter it = GModel::current()->firstRegion(); + it != GModel::current()->lastRegion(); it++) + (*it)->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1; } else{ for(int i = 0; i < List_Nbr($2); i++){ double d; List_Read($2, i, &d); - Volume *v = FindVolume((int)d); - if(v) - v->QuadTri = TRANSFINITE_QUADTRI_1; - else{ - GRegion *gr = GModel::current()->getRegionByTag((int)d); - if(gr) - gr->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1; - else - yymsg(1, "Unknown model region with tag %d", (int)d); - } + int tag = (int)d; + GModel::current()->getGEOInternals()->setTransfiniteVolumeQuadTri(tag); + GRegion *gr = GModel::current()->getRegionByTag(tag); + if(gr) gr->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1; } List_Delete($2); } @@ -4733,109 +4711,80 @@ Constraints : { // recombine constraints are also stored in GEO internals, as they can be // copied around during GEO operations + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); if(!$3){ - List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); - if(List_Nbr(tmp)){ - for(int i = 0; i < List_Nbr(tmp); i++){ - Surface *s; - List_Read(tmp, i, &s); - s->Recombine = 1; - s->RecombineAngle = $4; - } - } - else{ - for(GModel::fiter it = GModel::current()->firstFace(); - it != GModel::current()->lastFace(); it++){ - (*it)->meshAttributes.recombine = 1; - (*it)->meshAttributes.recombineAngle = $4; - } + GModel::current()->getGEOInternals()->setRecombine(2, 0, $4); + for(GModel::fiter it = GModel::current()->firstFace(); + it != GModel::current()->lastFace(); it++){ + (*it)->meshAttributes.recombine = 1; + (*it)->meshAttributes.recombineAngle = $4; } - List_Delete(tmp); } else{ for(int i = 0; i < List_Nbr($3); i++){ double d; List_Read($3, i, &d); - Surface *s = FindSurface((int)d); - if(s){ - s->Recombine = 1; - s->RecombineAngle = $4; - } - else{ - GFace *gf = GModel::current()->getFaceByTag((int)d); - if(gf){ - gf->meshAttributes.recombine = 1; - gf->meshAttributes.recombineAngle = $4; - } - else - yymsg(1, "Unknown model face with tag %d", (int)d); + int tag = (int)d; + GModel::current()->getGEOInternals()->setRecombine(2, tag, $4); + GFace *gf = GModel::current()->getFaceByTag(tag); + if(gf){ + gf->meshAttributes.recombine = 1; + gf->meshAttributes.recombineAngle = $4; } } List_Delete($3); } } - | tRecombine tVolume ListOfDoubleOrAll tEND + | tRecombine tVolume ListOfDoubleOrAll tEND { // recombine constraints are also stored in GEO internals, as they can be // copied around during GEO operations + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); if(!$3){ - List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes); - if(List_Nbr(tmp)){ - for(int i = 0; i < List_Nbr(tmp); i++){ - Volume *v; - List_Read(tmp, i, &v); - v->Recombine3D = 1; - } - } - else{ - for(GModel::riter it = GModel::current()->firstRegion(); - it != GModel::current()->lastRegion(); it++){ - (*it)->meshAttributes.recombine3D = 1; - } + GModel::current()->getGEOInternals()->setRecombine(3, 0, 0.); + for(GModel::riter it = GModel::current()->firstRegion(); + it != GModel::current()->lastRegion(); it++){ + (*it)->meshAttributes.recombine3D = 1; } - List_Delete(tmp); } else{ for(int i = 0; i < List_Nbr($3); i++){ double d; List_Read($3, i, &d); - Volume *v = FindVolume((int)d); - if(v){ - v->Recombine3D = 1; - } - else{ - GRegion *gr = GModel::current()->getRegionByTag((int)d); - if(gr){ - gr->meshAttributes.recombine3D = 1; - } - else - yymsg(1, "Unknown model region with tag %d", (int)d); - } + int tag = (int)d; + GModel::current()->getGEOInternals()->setRecombine(3, tag, 0.); + GRegion *gr = GModel::current()->getRegionByTag(tag); + if(gr) gr->meshAttributes.recombine3D = 1; } List_Delete($3); } } - | tSmoother tSurface ListOfDouble tAFFECT FExpr tEND + | tSmoother tSurface ListOfDoubleOrAll tAFFECT FExpr tEND { // smoothing constraints are also stored in GEO internals, as they can be // copied around during GEO operations - for(int i = 0; i < List_Nbr($3); i++){ - double d; - List_Read($3, i, &d); - int j = (int)d; - Surface *s = FindSurface(j); - if(s){ - s->TransfiniteSmoothing = (int)$5; + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); + if(!$3){ + GModel::current()->getGEOInternals()->setSmoothing(0, (int)$5); + for(GModel::fiter it = GModel::current()->firstFace(); + it != GModel::current()->lastFace(); it++){ + (*it)->meshAttributes.transfiniteSmoothing = (int)$5; } - else{ - GFace *gf = GModel::current()->getFaceByTag(j); - if(gf) - gf->meshAttributes.transfiniteSmoothing = (int)$5; - else - yymsg(1, "Unknown model face with tag %d", (int)$5); + } + else{ + for(int i = 0; i < List_Nbr($3); i++){ + double d; + List_Read($3, i, &d); + int tag = (int)d; + GModel::current()->getGEOInternals()->setSmoothing(tag, (int)$5); + GFace *gf = GModel::current()->getFaceByTag(tag); + if(gf) gf->meshAttributes.transfiniteSmoothing = (int)$5; } + List_Delete($3); } - List_Delete($3); } | tPeriodic tLine '{' RecursiveListOfDouble '}' tAFFECT '{' RecursiveListOfDouble '}' PeriodicTransform tEND @@ -5056,39 +5005,23 @@ Constraints : { // reverse mesh constraints are also stored in GEO internals, as they can // be copied around during GEO operations + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); if(!$3){ - List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); - if(List_Nbr(tmp)){ - for(int i = 0; i < List_Nbr(tmp); i++){ - Surface *s; - List_Read(tmp, i, &s); - s->ReverseMesh = 1; - } - } - else{ - for(GModel::fiter it = GModel::current()->firstFace(); - it != GModel::current()->lastFace(); it++){ - (*it)->meshAttributes.reverseMesh = 1; - } + GModel::current()->getGEOInternals()->setReverseMesh(2, 0); + for(GModel::fiter it = GModel::current()->firstFace(); + it != GModel::current()->lastFace(); it++){ + (*it)->meshAttributes.reverseMesh = 1; } - List_Delete(tmp); } else{ for(int i = 0; i < List_Nbr($3); i++){ double d; List_Read($3, i, &d); - Surface *s = FindSurface((int)d); - if(s){ - s->ReverseMesh = 1; - } - else{ - GFace *gf = GModel::current()->getFaceByTag((int)d); - if(gf){ - gf->meshAttributes.reverseMesh = 1; - } - else - yymsg(1, "Unknown model face with tag %d", (int)d); - } + int num = (int)d; + GModel::current()->getGEOInternals()->setReverseMesh(2, num); + GFace *gf = GModel::current()->getFaceByTag(num); + if(gf) gf->meshAttributes.reverseMesh = 1; } List_Delete($3); } @@ -5097,39 +5030,23 @@ Constraints : { // reverse mesh constraints are also stored in GEO internals, as they can // be copied around during GEO operations + if(GModel::current()->getOCCInternals()->getChanged()) + GModel::current()->getOCCInternals()->synchronize(GModel::current()); if(!$3){ - List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Curves); - if(List_Nbr(tmp)){ - for(int i = 0; i < List_Nbr(tmp); i++){ - Curve *c; - List_Read(tmp, i, &c); - c->ReverseMesh = 1; - } - } - else{ - for(GModel::eiter it = GModel::current()->firstEdge(); - it != GModel::current()->lastEdge(); it++){ - (*it)->meshAttributes.reverseMesh = 1; - } + GModel::current()->getGEOInternals()->setReverseMesh(1, 0); + for(GModel::eiter it = GModel::current()->firstEdge(); + it != GModel::current()->lastEdge(); it++){ + (*it)->meshAttributes.reverseMesh = 1; } - List_Delete(tmp); } else{ for(int i = 0; i < List_Nbr($3); i++){ double d; List_Read($3, i, &d); - Curve *c = FindCurve((int)d); - if(c){ - c->ReverseMesh = 1; - } - else{ - GEdge *ge = GModel::current()->getEdgeByTag((int)d); - if(ge){ - ge->meshAttributes.reverseMesh = 1; - } - else - yymsg(1, "Unknown model edge with tag %d", (int)d); - } + int num = (int)d; + GModel::current()->getGEOInternals()->setReverseMesh(1, num); + GEdge *ge = GModel::current()->getEdgeByTag(num); + if(ge) ge->meshAttributes.reverseMesh = 1; } List_Delete($3); } @@ -6991,6 +6908,7 @@ fullMatrix<double> ListOfListOfDouble2Matrix(List_T *list) void ListOfDouble2Vector(List_T *list, std::vector<int> &v) { v.clear(); + if(!list) return; v.reserve(List_Nbr(list)); for(int i = 0; i < List_Nbr(list); i++){ double d; @@ -7002,6 +6920,7 @@ void ListOfDouble2Vector(List_T *list, std::vector<int> &v) void ListOfDouble2Vector(List_T *list, std::vector<double> &v) { v.clear(); + if(!list) return; v.reserve(List_Nbr(list)); for(int i = 0; i < List_Nbr(list); i++){ double d;