Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 250 KiB
Newer Older
case 93:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1386 "Gmsh.y"
{
      int num = (int)yyvsp[-16].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(FindSurface(num, THEM)){
	yymsg(GERROR, "Surface %d already exists", num);
      }
      else{
	CreateNurbsSurface(num, (int)yyvsp[-4].d, (int)yyvsp[-2].d, yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
      }
      for(int i = 0; i < List_Nbr(yyvsp[-13].l); i++)
	List_Delete((List_T*)List_Pointer(yyvsp[-13].l, i));
      List_Delete(yyvsp[-13].l);
      List_Delete(yyvsp[-10].l);
      List_Delete(yyvsp[-8].l);
      yyval.s.Type = MSH_SURF_NURBS;
      yyval.s.Num = num;
    ;
    break;}
case 94:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1405 "Gmsh.y"
{
      int num = (int)yyvsp[-16].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(FindSurface(num, THEM)){
	yymsg(GERROR, "Surface %d already exists", num);
      }
      else{
	CreateNurbsSurfaceSupport(num, (int)yyvsp[-4].d, (int)yyvsp[-2].d, yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
      }
      for(int i = 0; i < List_Nbr(yyvsp[-13].l); i++)
	List_Delete((List_T*)List_Pointer(yyvsp[-13].l, i));
      List_Delete(yyvsp[-13].l);
      List_Delete(yyvsp[-10].l);
      List_Delete(yyvsp[-8].l);
      yyval.s.Type = MSH_SURF_NURBS;
      yyval.s.Num = num;
    ;
    break;}
case 95:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1422 "Gmsh.y"
{
      int num = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(FindSurfaceLoop(num, THEM)){
	yymsg(GERROR, "Surface loop %d already exists", num);
      }
      else{
	List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	SurfaceLoop *l = Create_SurfaceLoop(num, temp);
	Tree_Add(THEM->SurfaceLoops, &l);
	List_Delete(temp);
      }
      List_Delete(yyvsp[-1].l);
      yyval.s.Type = MSH_SURF_LOOP;
      yyval.s.Num = num;
    ;
    break;}
case 96:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1438 "Gmsh.y"
{
      int num = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE, THEM)){
	yymsg(GERROR, "Physical surface %d already exists", num);
      }
      else{
	List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	PhysicalGroup *p = Create_PhysicalGroup(num, MSH_PHYSICAL_SURFACE, temp);
	List_Delete(temp);
	List_Add(THEM->PhysicalGroups, &p);
      }
      List_Delete(yyvsp[-1].l);
      yyval.s.Type = MSH_PHYSICAL_SURFACE;
      yyval.s.Num = num;
    ;
    break;}
case 97:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1458 "Gmsh.y"
{
      int num = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(FindVolume(num, THEM)){
	yymsg(GERROR, "Volume %d already exists", num);
      }
      else{
	Volume *v = Create_Volume(num, MSH_VOLUME);
	List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	setVolumeSurfaces(v, temp);
	List_Delete(temp);
	Tree_Add(THEM->Volumes, &v);
      }
      List_Delete(yyvsp[-1].l);
      yyval.s.Type = MSH_VOLUME;
      yyval.s.Num = num;
    ;
    break;}
case 98:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1475 "Gmsh.y"
{
      int num = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(FindVolume(num, THEM)){
	yymsg(GERROR, "Volume %d already exists", num);
      }
      else{
	Volume *v = Create_Volume(num, MSH_VOLUME);
	List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	setVolumeSurfaces(v, temp);
	List_Delete(temp);
	Tree_Add(THEM->Volumes, &v);
      }
      List_Delete(yyvsp[-1].l);
      yyval.s.Type = MSH_VOLUME;
      yyval.s.Num = num;
    ;
    break;}
case 99:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1492 "Gmsh.y"
{
      int num = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME, THEM)){
	yymsg(GERROR, "Physical volume %d already exists", num);
      }
      else{
	List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	PhysicalGroup *p = Create_PhysicalGroup(num, MSH_PHYSICAL_VOLUME, temp);
	List_Delete(temp);
	List_Add(THEM->PhysicalGroups, &p);
      }
      List_Delete(yyvsp[-1].l);
      yyval.s.Type = MSH_PHYSICAL_VOLUME;
      yyval.s.Num = num;
    ;
    break;}
case 100:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1513 "Gmsh.y"
{
      TranslateShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-1].l, 1);
      yyval.l = yyvsp[-1].l;
    ;
    break;}
case 101:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1518 "Gmsh.y"
{
      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);
      yyval.l = yyvsp[-1].l;
    ;
    break;}
case 102:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1523 "Gmsh.y"
{
      SymmetryShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-3].v[3], yyvsp[-1].l, 1);
      yyval.l = yyvsp[-1].l;
    ;
    break;}
case 103:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1528 "Gmsh.y"
{
      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;
    ;
    break;}
case 104:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1535 "Gmsh.y"
{ yyval.l = yyvsp[0].l; ;
    break;}
case 105:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1536 "Gmsh.y"
{ yyval.l = yyvsp[0].l; ;
    break;}
case 106:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1537 "Gmsh.y"
{ yyval.l = yyvsp[0].l; ;
    break;}
case 107:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1542 "Gmsh.y"
{
      yyval.l = List_Create(3, 3, sizeof(Shape));
    ;
    break;}
case 108:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1546 "Gmsh.y"
{
      List_Add(yyval.l, &yyvsp[0].s);
    ;
    break;}
case 109:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1550 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
	List_Read(yyvsp[-2].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	TheShape.Num = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Vertex *v = FindPoint(TheShape.Num, THEM);
	if(!v)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(WARNING, "Unknown point %d", TheShape.Num);
	else{
	  TheShape.Type = MSH_POINT;
	  List_Add(yyval.l, &TheShape);
    ;
    break;}
case 110:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1566 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
	List_Read(yyvsp[-2].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	TheShape.Num = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Curve *c = FindCurve(TheShape.Num, THEM);
	if(!c)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(WARNING, "Unknown curve %d", TheShape.Num);
	else{
	  TheShape.Type = c->Typ;
	  List_Add(yyval.l, &TheShape);
    ;
    break;}
case 111:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1582 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
	List_Read(yyvsp[-2].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	TheShape.Num = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Surface *s = FindSurface(TheShape.Num, THEM);
	if(!s)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(WARNING, "Unknown surface %d", TheShape.Num);
	else{
	  TheShape.Type = s->Typ;
	  List_Add(yyval.l, &TheShape);
    ;
    break;}
case 112:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1598 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
	List_Read(yyvsp[-2].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Num = (int)d;
	Volume *v = FindVolume(TheShape.Num, THEM);
	if(!v)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(WARNING, "Unknown volume %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	else{
	  TheShape.Type = v->Typ;
	  List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	}
      }
    ;
    break;}
case 113:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1619 "Gmsh.y"
{
      yyval.l = List_Create(3, 3, sizeof(Shape));
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	List_Read(yyvsp[-1].l, i, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int j;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CopyShape(TheShape.Type, TheShape.Num, &j);
	List_Add(yyval.l, &TheShape);
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 114:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1633 "Gmsh.y"
{
      if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
      Free(yyvsp[-4].c);
      yyval.l = NULL;
    ;
    break;}
case 115:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1639 "Gmsh.y"
{
      if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
      Free(yyvsp[-4].c);
      yyval.l = NULL;
    ;
    break;}
case 116:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1645 "Gmsh.y"
{
      if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 1);
      Free(yyvsp[-4].c);
      yyval.l = NULL;
    ;
    break;}
case 117:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1657 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	List_Read(yyvsp[-1].l, i, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	DeleteShape(TheShape.Type, TheShape.Num);
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 118:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1666 "Gmsh.y"
{
      if(!strcmp(yyvsp[-4].c, "View")){
	RemoveViewByIndex((int)yyvsp[-2].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else{
	yymsg(GERROR, "Unknown command 'Delete %s'", yyvsp[-4].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      Free(yyvsp[-4].c);
    ;
    break;}
case 119:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1676 "Gmsh.y"
{
      if(!strcmp(yyvsp[-1].c, "Meshes") || !strcmp(yyvsp[-1].c, "All")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Init_Mesh(THEM);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      else if(!strcmp(yyvsp[-1].c, "Physicals")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Action(THEM->PhysicalGroups, Free_PhysicalGroup);
	List_Reset(THEM->PhysicalGroups);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else{
	yymsg(GERROR, "Unknown command 'Delete %s'", yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      Free(yyvsp[-1].c);
    ;
    break;}
case 120:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1690 "Gmsh.y"
{
      if(!strcmp(yyvsp[-2].c, "Empty") && !strcmp(yyvsp[-1].c, "Views")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = List_Nbr(CTX.post.list) - 1; i >= 0; i--){
	  Post_View *v = *(Post_View **) List_Pointer(CTX.post.list, i);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  if(v->empty())
	    RemoveViewByIndex(i);
	}
      }
      else{
	yymsg(GERROR, "Unknown command 'Delete %s %s'", yyvsp[-2].c, yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      Free(yyvsp[-2].c); Free(yyvsp[-1].c);
    ;
    break;}
case 121:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1709 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	List_Read(yyvsp[-1].l, i, &TheShape);
	ColorShape(TheShape.Type, TheShape.Num, yyvsp[-3].u);
      List_Delete(yyvsp[-1].l);      
    ;
    break;}
case 122:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1723 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      int m = (CTX.visibility_mode == 2) ? VIS_MESH : 
	((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 2; i < 6; i++)
	SetVisibilityByNumber(yyvsp[-1].c, i, m);
      Free(yyvsp[-1].c);
    ;
    break;}
case 123:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1731 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 2; i < 6; i++)
	SetVisibilityByNumber(yyvsp[-1].c, i, 0);
      Free(yyvsp[-1].c);
    ;
    break;}
case 124:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1737 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      int m = (CTX.visibility_mode == 2) ? VIS_MESH :
	((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH);
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	List_Read(yyvsp[-1].l, i, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	VisibilityShape(TheShape.Type, TheShape.Num, m);
      }
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 125:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1748 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	List_Read(yyvsp[-1].l, i, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	VisibilityShape(TheShape.Type, TheShape.Num, 0);
      }
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 126:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1762 "Gmsh.y"
{
      if(!strcmp(yyvsp[-2].c, "Include")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	char tmpstring[1024];
	FixRelativePath(yyvsp[-1].c, tmpstring);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	// Warning: we *don't* close included files (to allow user
	// functions in these files). If you need to include many many
	// files and don't have functions in the files, use "Merge"
	// instead: some OSes limit the number of files a process can
	// open simultaneously. The right solution would be of course
	// to modify FunctionManager to reopen the files instead of
	// using the FILE pointer, but hey, I'm lazy...
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	ParseFile(tmpstring, 0, 0, 1);
      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){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  char tmpstring[1024];
	  FixRelativePath(yyvsp[-1].c, tmpstring);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  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
	char tmpstring[1024];
	FixRelativePath(yyvsp[-1].c, tmpstring);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CreateOutputFile(tmpstring, CTX.mesh.format);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#endif
      else if(!strcmp(yyvsp[-2].c, "Merge") || !strcmp(yyvsp[-2].c, "MergeWithBoundingBox")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	// MergeWithBoundingBox is deprecated
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	char tmpstring[1024];
	FixRelativePath(yyvsp[-1].c, tmpstring);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	MergeProblem(tmpstring, 1);
      else if(!strcmp(yyvsp[-2].c, "System")){
	SystemCall(yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else{
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      Free(yyvsp[-2].c); Free(yyvsp[-1].c);
    ;
    break;}
case 127:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1806 "Gmsh.y"
{
      if(!strcmp(yyvsp[-6].c, "Save") && !strcmp(yyvsp[-5].c, "View")){
	Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-3].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	if(vv){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  char tmpstring[1024];
	  FixRelativePath(yyvsp[-1].c, tmpstring);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  WriteView(*vv, tmpstring, CTX.post.file_format, 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	}
      }
      else{
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-6].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-1].c);
    ;
    break;}
case 128:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1821 "Gmsh.y"
{
      if(!strcmp(yyvsp[-6].c, "Background") && !strcmp(yyvsp[-5].c, "Mesh")  && !strcmp(yyvsp[-4].c, "View")){
	Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-2].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	if(vv) BGMWithView(*vv);
      }
      else{
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-6].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-4].c);
    ;
    break;}
case 129:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1832 "Gmsh.y"
{
      if(!strcmp(yyvsp[-2].c, "Sleep")){
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	SleepInSeconds(yyvsp[-1].d);
      else if(!strcmp(yyvsp[-2].c, "Remesh")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	ReMesh(THEM);
      }
      else if(!strcmp(yyvsp[-2].c, "Mesh")){
	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
      }
      Free(yyvsp[-2].c);
    ;
    break;}
case 130:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1848 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
       try {
	 GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
       }
       catch(...) {
	 yymsg(GERROR, "Unknown action '%s' or plugin '%s'", yyvsp[-1].c, yyvsp[-4].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
       }
       Free(yyvsp[-4].c); Free(yyvsp[-1].c);
     ;
    break;}
case 131:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1858 "Gmsh.y"
{
      if(!strcmp(yyvsp[-1].c, "ElementsFromAllViews"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CombineViews(0, 1, CTX.post.combine_remove_orig);
      else if(!strcmp(yyvsp[-1].c, "ElementsFromVisibleViews"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CombineViews(0, 0, CTX.post.combine_remove_orig);
      else if(!strcmp(yyvsp[-1].c, "ElementsByViewName"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CombineViews(0, 2, CTX.post.combine_remove_orig);
      else if(!strcmp(yyvsp[-1].c, "TimeStepsFromAllViews"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CombineViews(1, 1, CTX.post.combine_remove_orig);
      else if(!strcmp(yyvsp[-1].c, "TimeStepsFromVisibleViews"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CombineViews(1, 0, CTX.post.combine_remove_orig);
      else if(!strcmp(yyvsp[-1].c, "TimeStepsByViewName"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CombineViews(1, 2, CTX.post.combine_remove_orig);
      else if(!strcmp(yyvsp[-1].c, "Views"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CombineViews(0, 1, CTX.post.combine_remove_orig);
      else if(!strcmp(yyvsp[-1].c, "TimeSteps"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CombineViews(1, 2, CTX.post.combine_remove_orig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(GERROR, "Unknown 'Combine' command");
      Free(yyvsp[-1].c);
    ;
    break;}
case 132:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1880 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      exit(0);
    ;
    break;}
case 133:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1884 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      CTX.forced_bbox = 0;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      SetBoundingBox();
    ;
    break;}
case 134:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1889 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      CTX.forced_bbox = 1;
      SetBoundingBox(yyvsp[-12].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
    ;
    break;}
case 135:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1894 "Gmsh.y"
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
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Draw();
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#endif
    ;
    break;}
case 136:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1907 "Gmsh.y"
{
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesNameTab[ImbricatedLoop] = NULL;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
	yymsg(GERROR, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS-1;
      }
      if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor");
    ;
    break;}
case 137:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1922 "Gmsh.y"
{
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesNameTab[ImbricatedLoop] = NULL;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
	yymsg(GERROR, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS-1;
      }
      if((yyvsp[-1].d > 0. && yyvsp[-5].d > yyvsp[-3].d) || (yyvsp[-1].d < 0. && yyvsp[-5].d < yyvsp[-3].d))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	skip_until("For", "EndFor");
    ;
    break;}
case 138:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1938 "Gmsh.y"
{
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-6].c;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;      
      TheSymbol.Name = yyvsp[-6].c;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol *pSymbol;
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);
	List_Write(pSymbol->val, 0, &yyvsp[-3].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
	yymsg(GERROR, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS-1;
      }
      if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor");
    ;
    break;}
case 139:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1964 "Gmsh.y"
{
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d;
      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-8].c;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-8].c;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol *pSymbol;
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);
	List_Write(pSymbol->val, 0, &yyvsp[-5].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
	yymsg(GERROR, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS-1;
      }
      if((yyvsp[-1].d > 0. && yyvsp[-5].d > yyvsp[-3].d) || (yyvsp[-1].d < 0. && yyvsp[-5].d < yyvsp[-3].d))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	skip_until("For", "EndFor");
    ;
    break;}
case 140:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 1991 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop <= 0){
	yymsg(GERROR, "Invalid For/EndFor loop");
	ImbricatedLoop = 0;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double x0 = LoopControlVariablesTab[ImbricatedLoop-1][0];
	double x1 = LoopControlVariablesTab[ImbricatedLoop-1][1];
	double step = LoopControlVariablesTab[ImbricatedLoop-1][2];
	int do_next = (step > 0.) ? (x0+step <= x1) : (x0+step >= x1);
	if(do_next){
	  LoopControlVariablesTab[ImbricatedLoop-1][0] +=
	    LoopControlVariablesTab[ImbricatedLoop-1][2];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  if(LoopControlVariablesNameTab[ImbricatedLoop-1]){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    Symbol TheSymbol;
	    TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1];
	    Symbol *pSymbol;
	    if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol)))
	      yymsg(GERROR, "Unknown loop variable");
	    else
	      *(double*)List_Pointer_Fast(pSymbol->val, 0) += 
		LoopControlVariablesTab[ImbricatedLoop-1][2];
	  }
	  fsetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
	  yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1];
	}
	else{
	  ImbricatedLoop--;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	}
    ;
    break;}
case 141:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2023 "Gmsh.y"
{
      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
      //FIXME: wee leak $2
    ;
    break;}
case 142:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2030 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno))
	yymsg(GERROR, "Error while exiting function");
    ;
    break;}
case 143:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2035 "Gmsh.y"
{
      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
      //FIXME: wee leak $2
    ;
    break;}
case 144:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2041 "Gmsh.y"
{
      if(!yyvsp[-1].d) skip_until("If", "EndIf");
    ;
    break;}
case 145:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2045 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2054 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE, yyvsp[-1].l, 
		    yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], 0., 0., 0., 0., 0., 0., 0.,
		    NULL, yyval.l);
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 147:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2062 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(ROTATE, yyvsp[-1].l, 
		    0., 0., 0., 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,
		    NULL, yyval.l);
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 148:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2070 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-1].l, 
		    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].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d,
		    NULL, yyval.l);
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 149:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2078 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 150:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2083 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE, yyvsp[-3].l, 
		    yyvsp[-5].v[0], yyvsp[-5].v[1], yyvsp[-5].v[2], 0., 0., 0., 0., 0., 0., 0.,
		    &extr, yyval.l);
      List_Delete(yyvsp[-3].l);
    ;
    break;}
case 151:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2091 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 152:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2096 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(ROTATE, yyvsp[-3].l, 
		    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,
		    &extr, yyval.l);
      List_Delete(yyvsp[-3].l);
    ;
    break;}
case 153:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2104 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 154:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2109 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-3].l, 
		    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,
		    &extr, yyval.l);
      List_Delete(yyvsp[-3].l);
    ;
    break;}
case 155:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2119 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-4].d, 
		   yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0.,
		   NULL, yyval.l);
    ;
    break;}
case 156:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2126 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-4].d, 
		   yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0.,
		   NULL, yyval.l);
    ;
    break;}
case 157:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2133 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-4].d, 
		   yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0.,
		   NULL, yyval.l);
    ;
    break;}
case 158:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2140 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_POINT, (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,
		   NULL, yyval.l);
    ;
    break;}
case 159:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2147 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_SEGM_LINE, (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,
		   NULL, yyval.l);
    ;
    break;}
case 160:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2154 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_SURF_PLAN, (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,
		   NULL, yyval.l);
    ;
    break;}
case 161:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2161 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (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,
		   NULL, yyval.l);
    ;
    break;}
case 162:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2168 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (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,
		   NULL, yyval.l);
    ;
    break;}
case 163:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2175 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (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,
		   NULL, yyval.l);
    ;
    break;}
case 164:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2182 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 165:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2187 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-8].d, 
		   yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0.,
		   &extr, yyval.l);
    ;
    break;}
case 166:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2194 "Gmsh.y"
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 167:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2199 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, 
		   yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0.,
		   &extr, yyval.l);
    ;
    break;}
case 168:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2206 "Gmsh.y"
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 169:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2211 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, 
		   yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0.,
		   &extr, yyval.l);
    ;
    break;}
case 170:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2218 "Gmsh.y"
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 171:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2223 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_POINT, (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,
		   &extr, yyval.l);
    ;
    break;}
case 172:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2230 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 173:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2235 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_SEGM_LINE, (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,
		   &extr, yyval.l);
    ;
    break;}
case 174:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2242 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 175:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2247 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_SURF_PLAN, (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,
		   &extr, yyval.l);
    ;
    break;}
case 176:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2254 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 177:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2259 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (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,
		   &extr, yyval.l);
    ;
    break;}
case 178:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2266 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;