Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 372 KiB
Newer Older
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 233:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1593 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbseg101((int)yyvsp[-4].d, MSH_SEGM_SPLN, 3, yyvsp[-1].l, NULL, -1, -1, 0., 1., NULL, NULL, NULL);
      yyval.s.Type = MSH_SEGM_SPLN;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 234:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1599 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      Curve *c;
      Attractor *a;
      double p;
      int ip;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[-9].l); i++){
      	List_Read(yyvsp[-9].l, i, &p);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        c = FindCurve(ip, THEM);
	else{
	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
			       yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d, NULL, c, NULL);
	  List_Add(THEM->Metric->Attractors, &a);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 235:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1618 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbseg101((int)yyvsp[-4].d, MSH_SEGM_CIRC, 2, yyvsp[-1].l, NULL, -1, -1, 0., 1., NULL, NULL, NULL);
      yyval.s.Type = MSH_SEGM_CIRC ;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 236:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1624 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbseg101((int)yyvsp[-4].d, MSH_SEGM_ELLI, 2, yyvsp[-1].l, NULL, -1, -1, 0., 1., NULL, NULL, NULL);
      yyval.s.Type = MSH_SEGM_ELLI ;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 237:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1630 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      int i, j;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      temp = List_Create(List_Nbr(yyvsp[-3].l), 1, sizeof(int));
      for(i = 0; i < List_Nbr(yyvsp[-3].l); i++){
      	List_Read(yyvsp[-3].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        List_Add(temp, &j);
      }
      AddCircleInDataBase ((int) yyvsp[-6].d, MSH_SEGM_CIRC, temp, yyvsp[-1].v);
      List_Delete(temp);
      yyval.s.Type = MSH_SEGM_CIRC ;
      yyval.s.Num  = (int)yyvsp[-6].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 238:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1647 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbseg101((int)yyvsp[-14].d, MSH_SEGM_PARAMETRIC, 2, NULL, NULL, -1, -1, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].c, yyvsp[-4].c, yyvsp[-2].c);
      yyval.s.Type = MSH_SEGM_PARAMETRIC ;
      yyval.s.Num  = (int)yyvsp[-14].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 239:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1653 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbz101((int)yyvsp[-4].d, MSH_PHYSICAL_LINE, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
      yyval.s.Type = MSH_PHYSICAL_LINE;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 240:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1659 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      yyval.s.Type = MSH_SEGM_LOOP;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbz101((int)yyvsp[-4].d, yyval.s.Type, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
      yyval.s.Num = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 241:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1665 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      if(List_Nbr(yyvsp[-1].l) > 3){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Cdbseg101((int)yyvsp[-4].d, MSH_SEGM_BSPLN, 2, yyvsp[-1].l, NULL, -1, -1, 0., 1., NULL, NULL, NULL);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	yyval.s.Type = MSH_SEGM_BSPLN;
	yyval.s.Num  = (int)yyvsp[-4].d;
      }
      else
	yymsg(GERROR, "Too few control points for BSpline %d (%d < 4)", (int)yyvsp[-4].d, 
	      List_Nbr(yyvsp[-1].l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 242:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1676 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      if(List_Nbr(yyvsp[-1].l) > 3){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Cdbseg101((int)yyvsp[-4].d, MSH_SEGM_BEZIER, 2, yyvsp[-1].l, NULL, -1, -1, 0., 1., NULL, NULL, NULL);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	yyval.s.Type = MSH_SEGM_BSPLN;
	yyval.s.Num  = (int)yyvsp[-4].d;
      }
      else
	yymsg(GERROR, "Too few control points for Bezier %d (%d < 4)", (int)yyvsp[-4].d, 
	      List_Nbr(yyvsp[-1].l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 243:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1687 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(List_Nbr(yyvsp[-5].l) + (int)yyvsp[-1].d + 1 != List_Nbr(yyvsp[-3].l)){
	yymsg(GERROR, "Wrong definition of Nurbs Curve %d: "
	      "got %d Knots, need N + D + 1 = %d + %d + 1 = %d",
	      (int)yyvsp[-8].d, 
	      List_Nbr(yyvsp[-3].l), List_Nbr(yyvsp[-5].l), (int)yyvsp[-1].d, List_Nbr(yyvsp[-5].l) + (int)yyvsp[-1].d + 1);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Temp = List_Create(List_Nbr(yyvsp[-5].l), 1, sizeof(int));
	for(i = 0; i < List_Nbr(yyvsp[-5].l); i++) {
	  List_Read(yyvsp[-5].l, i, &d);
	  j = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Add(Temp, &j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	AddCurveInDataBase ((int)yyvsp[-8].d, MSH_SEGM_NURBS, (int)yyvsp[-1].d, Temp, yyvsp[-3].l, -1, -1, 0., 1.);
	List_Delete(Temp);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 244:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1712 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbz101((int)yyvsp[-4].d, MSH_SURF_PLAN, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
      yyval.s.Type = MSH_SURF_PLAN;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 245:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1718 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      support = FindSurface((int)yyvsp[-4].d, THEM);
	yymsg(GERROR, "Unknown Surface %d", (int)yyvsp[-4].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Cdbz101((int)yyvsp[-8].d, MSH_SURF_PLAN, 0, 0, 0, 0, 0, NULL, yyvsp[-2].l, NULL);
	s = FindSurface((int)yyvsp[-8].d, THEM);
	  yymsg(GERROR, "Unknown Surface %d", (int)yyvsp[-8].d);
	else{
	  s->Typ =  MSH_SURF_TRIMMED;
	  s->Support = support;
	  yyval.s.Type = MSH_SURF_TRIMMED;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  yyval.s.Num  = (int)yyvsp[-8].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 246:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1737 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Read(yyvsp[-1].l, 0, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      EdgeLoop *el = FindEdgeLoop(i, THEM);
      else{
	j = List_Nbr(el->Curves);
	if(j==4)
	  yyval.s.Type = MSH_SURF_REGL;
	else if(j==3)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yyval.s.Type = MSH_SURF_TRIC;
	  yymsg(GERROR, "Wrong definition of Ruled Surface %d: "
Christophe Geuzaine's avatar
Christophe Geuzaine committed
		   "%d borders instead of 3 or 4", 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Cdbz101((int)yyvsp[-4].d, yyval.s.Type, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
	yyval.s.Num = (int)yyvsp[-4].d;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 247:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1759 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    AddTriangulationToSurface ((int) yyvsp[-10].d, (int) yyvsp[-6].d, (int) yyvsp[-4].d, yyvsp[-2].l, yyvsp[-1].l);
    yyval.s.Num = (int)yyvsp[-10].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
  ;
    break;}
case 248:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1767 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d  , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.s.Type = MSH_SURF_NURBS;
      yyval.s.Num = (int)yyvsp[-16].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 249:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1775 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 250:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1779 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbz101((int)yyvsp[-4].d, MSH_PHYSICAL_SURFACE, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
      yyval.s.Type = MSH_PHYSICAL_SURFACE;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 251:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1785 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbz101((int)yyvsp[-4].d, MSH_SURF_LOOP, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
      yyval.s.Type = MSH_SURF_LOOP;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 252:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1794 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbz101((int)yyvsp[-4].d, MSH_VOLUME, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
      yyval.s.Type = MSH_VOLUME;
      yyval.s.Num  = (int)yyvsp[-4].d;      
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 253:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1800 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbz101((int)yyvsp[-4].d, MSH_VOLUME, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
      yyval.s.Type = MSH_VOLUME;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 254:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1806 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Cdbz101((int)yyvsp[-4].d, MSH_PHYSICAL_VOLUME, 0, 0, 0, 0, 0, NULL, yyvsp[-1].l, NULL);
      yyval.s.Type = MSH_PHYSICAL_VOLUME;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 255:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1817 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TranslateShapes (yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-1].l, 1);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 256:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1822 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      RotateShapes(yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l, 1);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 257:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1827 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      SymmetryShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-3].v[3], yyvsp[-1].l, 1);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 258:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1832 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      DilatShapes(yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l, 1);
      yyval.l = yyvsp[-1].l;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 259:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1839 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.l = yyvsp[0].l; ;
    break;}
case 260:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1840 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.l = yyvsp[0].l; ;
    break;}
case 261:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1841 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.l = yyvsp[0].l; ;
    break;}
case 262:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1846 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(3, 3, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 263:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1850 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &yyvsp[0].s);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 264:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1854 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(i = 0; i < List_Nbr(yyvsp[-2].l); i++){
	List_Read(yyvsp[-2].l, i, &d);
	TheShape.Num = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Vertex *v = FindPoint(TheShape.Num, THEM);
	if(!v)
	  yymsg(WARNING, "Unknown Point %d", TheShape.Num);
	else{
	  TheShape.Type = MSH_POINT;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 265:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1868 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(i = 0; i < List_Nbr(yyvsp[-2].l); i++){
	List_Read(yyvsp[-2].l, i, &d);
	TheShape.Num = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Curve *c = FindCurve(TheShape.Num, THEM);
	if(!c)
	  yymsg(WARNING, "Unknown Curve %d", TheShape.Num);
	else{
	  TheShape.Type = c->Typ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 266:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1882 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(i = 0; i < List_Nbr(yyvsp[-2].l); i++){
	List_Read(yyvsp[-2].l, i, &d);
	TheShape.Num = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Surface *s = FindSurface(TheShape.Num, THEM);
	if(!s)
	  yymsg(WARNING, "Unknown Surface %d", TheShape.Num);
	else{
	  TheShape.Type = s->Typ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 267:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1901 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(3, 3, sizeof(Shape));
      for(i = 0; i < List_Nbr(yyvsp[-1].l); i++){
	List_Read (yyvsp[-1].l, i, &TheShape);
	CopyShape(TheShape.Type, TheShape.Num, &j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 268:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1911 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp(yyvsp[-4].c, "View")) DuplicateView((int)yyvsp[-2].d, 0);
      yyval.l = NULL;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 269:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1922 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(i = 0; i < List_Nbr(yyvsp[-1].l); i++){
	List_Read (yyvsp[-1].l, i, &TheShape);
	DeleteShape(TheShape.Type, TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 270:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1929 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp(yyvsp[-4].c, "View")) RemoveViewByIndex((int)yyvsp[-2].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 271:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1933 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 272:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1942 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(i = 0; i < List_Nbr(yyvsp[-1].l); i++){
	List_Read (yyvsp[-1].l, i, &TheShape);
	ColorShape(TheShape.Type, TheShape.Num, yyvsp[-3].u);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 273:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1954 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(!strcmp(yyvsp[-2].c, "Include")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	FixRelativePath(yyvsp[-1].c, tmpstring);
	yyinTab[RecursionLevel++] = yyin;
	if((yyin = fopen(tmpstring,"r"))){
	  Msg(INFO, "Including '%s'", tmpstring); 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  strcpy(yynameTab[RecursionLevel-1], yyname);
	  yylinenoTab[RecursionLevel-1] = yylineno;
	  yylineno = 1;
	  strcpy(yyname, tmpstring);
	  while(!feof(yyin)){
	    yyparse();
	  }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  // warning, warning... If we close the stream, we cannot
	  // call a Function defined in another file... So we just
	  // leave it open (arghhh)
	  yyin = yyinTab[--RecursionLevel];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  strcpy(yyname, yynameTab[RecursionLevel]);
	  yylineno = yylinenoTab[RecursionLevel];
	  yymsg(GERROR, "Unknown file '%s'", tmpstring) ;  
	  yyin = yyinTab[--RecursionLevel];
	}
      else if(!strcmp(yyvsp[-2].c, "Print")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#if defined(HAVE_FLTK)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	if(!CTX.batch){
	  FixRelativePath(yyvsp[-1].c, tmpstring);
	  CreateOutputFile(tmpstring, CTX.print.format);
	}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#endif
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      }
      else if(!strcmp(yyvsp[-2].c, "Save")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#if defined(HAVE_FLTK)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	FixRelativePath(yyvsp[-1].c, tmpstring);
	CreateOutputFile(tmpstring, CTX.mesh.format);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#endif
      }
      else if(!strcmp(yyvsp[-2].c, "Merge")){
	FILE *ff = yyin;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	FixRelativePath(yyvsp[-1].c, tmpstring);
	MergeProblem(tmpstring);
	yyin = ff;
      }
      else if(!strcmp(yyvsp[-2].c, "MergeWithBoundingBox")){
	FILE *ff = yyin;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	FixRelativePath(yyvsp[-1].c, tmpstring);
	MergeProblemWithBoundingBox(tmpstring);
      }
      else if(!strcmp(yyvsp[-2].c, "Open")){
	FILE *ff = yyin;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	FixRelativePath(yyvsp[-1].c, tmpstring);
	OpenProblem(tmpstring);
	yyin = ff;
      }
      else if(!strcmp(yyvsp[-2].c, "System")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else{
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 274:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2020 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(!strcmp(yyvsp[-6].c, "Save") && !strcmp(yyvsp[-5].c, "View")){
	Post_View *v = (Post_View *)List_Pointer_Test(CTX.post.list, (int)yyvsp[-3].d);
	if(v){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  FixRelativePath(yyvsp[-1].c, tmpstring);
	  WriteView(0, v, tmpstring);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	}
      }
      else{
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-6].c);
      }
    ;
    break;}
case 275:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2033 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(!strcmp(yyvsp[-2].c, "Sleep")){
	long sleep_time = GetTime();
	while(1){
	  if(GetTime() - sleep_time > (long)(yyvsp[-1].d*1.e6)) break;
	}
      }
      else if(!strcmp(yyvsp[-2].c, "Mesh")){
	//Maillage_Dimension_0(THEM);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//mai3d(THEM, (int)$2);
	yymsg(GERROR, "Mesh directives are not (yet) allowed in scripts");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else{
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 276:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2050 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0); 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
   ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 277:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2055 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      exit(0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 278:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2059 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#if defined(HAVE_FLTK)
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      if(!CTX.batch){ // we're in interactive mode
	if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){
	  Last_NumberOfPoints = Tree_Nbr(THEM->Points);
	  Replot();
	  DrawUI();
	  DrawUI();
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#endif
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 279:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2081 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
      fgetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 280:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2091 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
      fgetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 281:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2101 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-6].c ;
      
      TheSymbol.Name = yyvsp[-6].c;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){
	TheSymbol.val = List_Create(1, 1, sizeof(double));
	List_Put(TheSymbol.val, 0, &yyvsp[-3].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Tree_Add(Symbol_T, &TheSymbol);
      }
      else{
	List_Write(pSymbol->val, 0, &yyvsp[-3].d);
      }
      fgetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 282:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2122 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-8].c ;
      TheSymbol.Name = yyvsp[-8].c;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){
	TheSymbol.val = List_Create(1, 1, sizeof(double));
	List_Put(TheSymbol.val, 0, &yyvsp[-5].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Tree_Add(Symbol_T, &TheSymbol);
      }
      else{
	List_Write(pSymbol->val, 0, &yyvsp[-5].d);
      }
      fgetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 283:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2143 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
	 LoopControlVariablesTab[ImbricatedLoop-1][0]){
	LoopControlVariablesTab[ImbricatedLoop-1][0] +=
	  LoopControlVariablesTab[ImbricatedLoop-1][2];
	if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){
	  TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol);
	  *(double*)List_Pointer_Fast(pSymbol->val, 0) += 
	    LoopControlVariablesTab[ImbricatedLoop-1][2] ;
	
	fsetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
	yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 284:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2164 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!FunctionManager::Instance()->createFunction(yyvsp[0].c, yyin, yyname, yylineno))
	yymsg(GERROR, "Redefinition of function %s", yyvsp[0].c);
      skip_until(NULL, "Return");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 285:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2170 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno))
	yymsg(GERROR, "Error while exiting function");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 286:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2175 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c, &yyin, yyname, yylineno))
	yymsg(GERROR, "Unknown function %s", yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 287:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2180 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(!yyvsp[-1].d) skip_until("If", "EndIf");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 288:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2184 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 289:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2195 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
					  0., 0., 0., 0., 0., 0., 0.,
					  &pc, &prc, 1, NULL);
      TheShape.Type = MSH_POINT;
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 290:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2205 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
					  yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
					  &pc, &prc, 1, NULL);
      TheShape.Type = MSH_POINT;
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 291:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2215 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2],
					  yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
					  &pc, &prc, 1, NULL);
      TheShape.Type = MSH_POINT;
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 292:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2225 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 293:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2230 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
					  0., 0., 0., 0., 0., 0., 0.,
					  &pc, &prc, 1, &extr);
      TheShape.Type = MSH_POINT;
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 294:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2240 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 295:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2245 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
					  yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
					  &pc, &prc, 1, &extr);
      TheShape.Type = MSH_POINT;
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 296:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2255 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 297:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2260 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
					  yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
					  &pc, &prc, 1, &extr);
      TheShape.Type = MSH_POINT;
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 298:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2272 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      Surface *ps;
      TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
					  0., 0., 0., 0., 0., 0., 0., 
					  &ps, 1, NULL);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 299:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2289 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      Surface *ps;
      TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
					  yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, 
					  &ps, 1, NULL);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 300:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2306 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *ps;
      TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2],
					  yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, 
					  &ps, 1, NULL);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 301:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2323 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 302:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2328 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      Surface *ps;
      TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
					  0., 0., 0., 0., 0., 0., 0., 
					  &ps, 1, &extr);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 303:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2345 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 304:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2350 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *ps;
      TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
					  yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, 
					  &ps, 1, &extr);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 305:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2367 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 306:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2372 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      Surface *ps;
      TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
					  yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, 
					  &ps, 1, &extr);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 307:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2392 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
					    0., 0., 0., 0., 0., 0., 0., 
					    0, NULL);
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 308:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2408 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
					    yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
					    0, NULL);
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 309:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2424 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2],
					    yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
					    0, NULL);
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 310:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2440 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 311:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2445 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      int vol = NEWREG();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
					    0., 0., 0., 0., 0., 0., 0., 
					    vol, &extr);
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 312:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2462 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 313:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2468 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      int vol = NEWREG();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
					    yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, 
					    vol, &extr);
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown Surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
      yyval.l = List_Create(1, 1, sizeof(Shape));
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 314:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2485 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 315: