Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 370 KiB
Newer Older
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 1617 "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 1623 "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 1629 "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 1646 "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 1652 "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 1658 "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 1664 "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 1675 "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 1686 "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 1711 "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 1717 "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 1736 "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 1758 "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 1766 "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 1774 "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 1778 "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 1784 "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 1793 "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 1799 "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 1805 "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 1816 "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 1821 "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 1826 "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 1831 "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 1838 "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 1839 "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 1840 "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 1845 "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 1849 "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 1853 "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 1867 "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 1881 "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 1900 "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 1910 "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 1921 "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 1928 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(!strcmp(yyvsp[-4].c, "View")) FreeView((int)yyvsp[-2].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 271:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1932 "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 1941 "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 1953 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(!strcmp(yyvsp[-2].c, "Include")){

	yyinTab[RecursionLevel++] = yyin;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	if(yyvsp[-1].c[0] == '/' || yyvsp[-1].c[0] == '\\' || (strlen(yyvsp[-1].c)>2 && yyvsp[-1].c[1] == ':')){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  // do nothing: $2 is an absolute path
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  strcpy(tmpstring, yyvsp[-1].c);
	}
	else{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  // append $2 to the path of the parent file
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  strcpy(tmpstring, yyname);
	  i = strlen(yyname)-1 ;
	  while(i >= 0 && yyname[i] != '/' && yyname[i] != '\\') i-- ;
	  tmpstring[i+1] = '\0';
	  strcat(tmpstring, yyvsp[-1].c);
	}

	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) CreateOutputFile(yyvsp[-1].c, 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)
	CreateOutputFile(yyvsp[-1].c, CTX.mesh.format);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#endif
Christophe Geuzaine's avatar
Christophe Geuzaine committed

      else if(!strcmp(yyvsp[-2].c, "Merge")){

	FILE *ff = yyin;
	MergeProblem(yyvsp[-1].c);
	yyin = ff;

      }
      else if(!strcmp(yyvsp[-2].c, "MergeWithBoundingBox")){

	FILE *ff = yyin;
	MergeProblemWithBoundingBox(yyvsp[-1].c);
	yyin = ff;

      }
      else if(!strcmp(yyvsp[-2].c, "Open")){

	FILE *ff = yyin;
	OpenProblem(yyvsp[-1].c);
	yyin = ff;

      }
      else if(!strcmp(yyvsp[-2].c, "System")){
	
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 274:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2035 "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");
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 275:
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
      GMSH_PluginManager::Instance()->Action(yyvsp[-4].c, yyvsp[-1].c, 0); 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
   ;
    break;}
case 276:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2060 "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;}
case 277:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2064 "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;}
case 278:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2086 "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;}
case 279:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2096 "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;}
case 280:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2106 "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;}
case 281:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2127 "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;}
case 282:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2148 "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;}
case 283:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2169 "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;}
case 284:
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()->leaveFunction(&yyin, yyname, yylineno))
	yymsg(GERROR, "Error while exiting function");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 285:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2180 "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;}
case 286:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2185 "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;}
case 287:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2189 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
    ;
    break;}
case 288:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2200 "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;}
case 289:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2210 "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;}
case 290:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2220 "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;}
case 291:
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
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 292:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2235 "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;}
case 293:
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
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 294:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2250 "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;}
case 295:
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
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
case 296:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2265 "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;}
case 297:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2278 "Gmsh.y"
{
      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;}
case 298:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2295 "Gmsh.y"
{
      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;}
case 299:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2312 "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;}
case 300:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2329 "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;}
case 301:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2334 "Gmsh.y"
{
      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;}
case 302:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2351 "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;}
case 303:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2356 "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;}
case 304:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2373 "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;}
case 305:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2378 "Gmsh.y"
{
      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;}
case 306:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2398 "Gmsh.y"
{
      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;}
case 307:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2414 "Gmsh.y"
{
      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;}
case 308:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2430 "Gmsh.y"
{
      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;}
case 309:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2446 "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;}
case 310:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2451 "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;}
case 311:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2468 "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;}
case 312:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2474 "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;}
case 313:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2491 "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;}
case 314:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2497 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      int vol = NEWREG();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeSurface(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,
					    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;