Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 336 KiB
Newer Older
          List_Read((yyvsp[(12) - (14)].l), 0, &d);
          double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
          double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
          gLevelset *ls = new gLevelsetGenCylinder(pt, dir, d, t);
          LevelSet *l = Create_LevelSet(ls->getTag(), ls);
          Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
        }
      }
      else if(!strcmp((yyvsp[(2) - (14)].c), "Cone") && List_Nbr((yyvsp[(12) - (14)].l)) == 1){
        int t = (int)(yyvsp[(4) - (14)].d);
        if(FindLevelSet(t)){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(0, "Levelset %d already exists", t);
        }
        else {
          double d;
          List_Read((yyvsp[(12) - (14)].l), 0, &d);
          double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
          double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
          gLevelset *ls = new gLevelsetCone(pt, dir, d, t);
          LevelSet *l = Create_LevelSet(ls->getTag(), ls);
          Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
        }
      }
      else if(!strcmp((yyvsp[(2) - (14)].c), "Cylinder") && List_Nbr((yyvsp[(12) - (14)].l)) == 2){
        int t = (int)(yyvsp[(4) - (14)].d);
        if(FindLevelSet(t)){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(0, "Levelset %d already exists", t);
        }
        else {
          double d[2];
          for(int i = 0; i < 2; i++)
            List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
          double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
          double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
          gLevelset *ls = new gLevelsetCylinder(pt, dir, d[0], d[1], t);
          LevelSet *l = Create_LevelSet(ls->getTag(), ls);
          Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
        }
      }
      else if(!strcmp((yyvsp[(2) - (14)].c), "Cylinder") && List_Nbr((yyvsp[(12) - (14)].l)) == 3){
        int t = (int)(yyvsp[(4) - (14)].d);
        if(FindLevelSet(t)){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(0, "Levelset %d already exists", t);
        }
        else {
          double d[3];
          for(int i = 0; i < 3; i++)
            List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
          double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
          double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
          gLevelset *ls = new gLevelsetCylinder(pt, dir, d[0], d[1], d[2], t);
          LevelSet *l = Create_LevelSet(ls->getTag(), ls);
          Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
        }
      }
      else if(!strcmp((yyvsp[(2) - (14)].c), "Ellipsoid") && List_Nbr((yyvsp[(12) - (14)].l)) == 3){
        int t = (int)(yyvsp[(4) - (14)].d);
        if(FindLevelSet(t)){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(0, "Levelset %d already exists", t);
        }
        else {
          double d[3];
          for(int i = 0; i < 3; i++)
            List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
          double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
          double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
          gLevelset *ls = new gLevelsetEllipsoid(pt, dir, d[0], d[1], d[2], t);
          LevelSet *l = Create_LevelSet(ls->getTag(), ls);
          Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
        }
      }
      else if(!strcmp((yyvsp[(2) - (14)].c), "Quadric") && List_Nbr((yyvsp[(12) - (14)].l)) == 5){
        int t = (int)(yyvsp[(4) - (14)].d);
        if(FindLevelSet(t)){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(0, "Levelset %d already exists", t);
        }
        else {
          double d[5];
          for(int i = 0; i < 5; i++)
            List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
          double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
          double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
          gLevelset *ls = new gLevelsetGeneralQuadric(pt, dir, d[0], d[1], 
                                                      d[2], d[3], d[4], t);
          LevelSet *l = Create_LevelSet(ls->getTag(), ls);
          Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
        }
      }
      else
        yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (14)].d));
      Free((yyvsp[(2) - (14)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#endif
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2087 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	List_Read((yyvsp[(3) - (4)].l), i, &TheShape);
	DeleteShape(TheShape.Type, TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (4)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2096 "Gmsh.y"
      GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d));
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2100 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp((yyvsp[(2) - (6)].c), "View")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int index = (int)(yyvsp[(4) - (6)].d);
	if(index >= 0 && index < (int)PView::list.size())
	  delete PView::list[index];
	else
	  yymsg(0, "Unknown view %d", index);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Unknown command 'Delete %s'", (yyvsp[(2) - (6)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(2) - (6)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2115 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){
        for(unsigned int i = 0; i < GModel::list.size(); i++){
          GModel::list[i]->destroy();
          GModel::list[i]->getGEOInternals()->destroy();
        }
      }
      else if(!strcmp((yyvsp[(2) - (3)].c), "Model")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	GModel::current()->destroy();
	GModel::current()->getGEOInternals()->destroy();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(2) - (3)].c), "Physicals")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	GModel::current()->getGEOInternals()->reset_physicals();
	GModel::current()->deletePhysicalGroups();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(2) - (3)].c), "Variables")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	gmsh_yysymbols.clear();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	if(gmsh_yysymbols.count((yyvsp[(2) - (3)].c)))
	  gmsh_yysymbols.erase((yyvsp[(2) - (3)].c));
	else
	  yymsg(0, "Unknown object or expression to delete '%s'", (yyvsp[(2) - (3)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(2) - (3)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2142 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = PView::list.size() - 1; i >= 0; i--)
	  if(PView::list[i]->getData()->empty()) delete PView::list[i];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Unknown command 'Delete %s %s'", (yyvsp[(2) - (4)].c), (yyvsp[(3) - (4)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(2) - (4)].c)); Free((yyvsp[(3) - (4)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2159 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	List_Read((yyvsp[(4) - (5)].l), i, &TheShape);
	ColorShape(TheShape.Type, TheShape.Num, (yyvsp[(2) - (5)].u));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(4) - (5)].l));      
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2173 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < 4; i++)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	VisibilityShape((yyvsp[(2) - (3)].c), i, 1);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(2) - (3)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2179 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < 4; i++)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	VisibilityShape((yyvsp[(2) - (3)].c), i, 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(2) - (3)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2185 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	List_Read((yyvsp[(3) - (4)].l), i, &TheShape);
	VisibilityShape(TheShape.Type, TheShape.Num, 1);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (4)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2194 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	List_Read((yyvsp[(3) - (4)].l), i, &TheShape);
	VisibilityShape(TheShape.Type, TheShape.Num, 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (4)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2208 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      if(!strcmp((yyvsp[(1) - (3)].c), "Include")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
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
	Msg::StatusBar(2, true, "Reading '%s'", tmp.c_str());
	ParseFile(tmp, false, true);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	SetBoundingBox();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Msg::StatusBar(2, true, "Read '%s'", tmp.c_str());
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(1) - (3)].c), "Print")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	// make sure we have the latest data from GEO_Internals in GModel
	// (fixes bug where we would have no geometry in the picture if
	// the print command is in the same file as the geometry)
	GModel::current()->importGEOInternals();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
	CreateOutputFile(tmp, CTX::instance()->print.format);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(1) - (3)].c), "Save")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	GModel::current()->importGEOInternals();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
	CreateOutputFile(tmp, CTX::instance()->mesh.format);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(1) - (3)].c), "Merge") || !strcmp((yyvsp[(1) - (3)].c), "MergeWithBoundingBox")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	// MergeWithBoundingBox is deprecated
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
	MergeFile(tmp, true);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(1) - (3)].c), "System"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	SystemCall((yyvsp[(2) - (3)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (3)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(2) - (3)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2248 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int index = (int)(yyvsp[(4) - (7)].d);
	if(index >= 0 && index < (int)PView::list.size()){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
          std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(6) - (7)].c));
	  PView::list[index]->write(tmp, CTX::instance()->post.fileFormat);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	}
	else
	  yymsg(0, "Unknown view %d", index);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (7)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(2) - (7)].c)); Free((yyvsp[(6) - (7)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2265 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      if(!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh")  && !strcmp((yyvsp[(3) - (7)].c), "View")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int index = (int)(yyvsp[(5) - (7)].d);
	if(index >= 0 && index < (int)PView::list.size())
	  GModel::current()->getFields()->setBackgroundMesh(index);
	else
	  yymsg(0, "Unknown view %d", index);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (7)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(2) - (7)].c)); Free((yyvsp[(3) - (7)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2280 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	SleepInSeconds((yyvsp[(2) - (3)].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(1) - (3)].c), "Remesh")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Surface remeshing must be reinterfaced");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(1) - (3)].c), "Mesh")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int lock = CTX::instance()->lock;
	CTX::instance()->lock = 0;
	GModel::current()->importGEOInternals();
	GModel::current()->mesh((int)(yyvsp[(2) - (3)].d));
	CTX::instance()->lock = lock;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (3)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(1) - (3)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2299 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
       try {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	 PluginManager::instance()->action((yyvsp[(3) - (7)].c), (yyvsp[(6) - (7)].c), 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
       }
       catch(...) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	 yymsg(0, "Unknown action '%s' or plugin '%s'", (yyvsp[(6) - (7)].c), (yyvsp[(3) - (7)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
       }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
       Free((yyvsp[(3) - (7)].c)); Free((yyvsp[(6) - (7)].c));
     ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2311 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	PView::combine(false, 1, CTX::instance()->post.combineRemoveOrig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromVisibleViews"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	PView::combine(false, 0, CTX::instance()->post.combineRemoveOrig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(2) - (3)].c), "ElementsByViewName"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	PView::combine(false, 2, CTX::instance()->post.combineRemoveOrig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(2) - (3)].c), "TimeStepsFromAllViews"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	PView::combine(true, 1, CTX::instance()->post.combineRemoveOrig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(2) - (3)].c), "TimeStepsFromVisibleViews"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	PView::combine(true, 0, CTX::instance()->post.combineRemoveOrig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(2) - (3)].c), "TimeStepsByViewName"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	PView::combine(true, 2, CTX::instance()->post.combineRemoveOrig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(2) - (3)].c), "Views"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	PView::combine(false, 1, CTX::instance()->post.combineRemoveOrig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp((yyvsp[(2) - (3)].c), "TimeSteps"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	PView::combine(true, 2, CTX::instance()->post.combineRemoveOrig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Unknown 'Combine' command");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(2) - (3)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2335 "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
#line 2339 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      // FIXME: this is a hack to force a transfer from the old DB to
      // the new DB. This will become unnecessary if/when we fill the 
      // GModel directly during parsing.
      GModel::current()->importGEOInternals();
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2346 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      CTX::instance()->forcedBBox = 0;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      GModel::current()->importGEOInternals();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      SetBoundingBox();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2352 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      CTX::instance()->forcedBBox = 1;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2357 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      drawContext::global()->draw();
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#endif
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2363 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    {
       GModel::current()->createTopologyFromMesh();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2372 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d);
      LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].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(gmsh_yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = gmsh_yylineno;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if((yyvsp[(3) - (6)].d) > (yyvsp[(5) - (6)].d))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	skip_until("For", "EndFor");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	ImbricatedLoop++;
      if(ImbricatedLoop > MAX_RECUR_LOOPS - 1){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS - 1;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2389 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d);
      LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d);
      LoopControlVariablesTab[ImbricatedLoop][2] = (yyvsp[(7) - (8)].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesNameTab[ImbricatedLoop] = NULL;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(gmsh_yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = gmsh_yylineno;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(((yyvsp[(7) - (8)].d) > 0. && (yyvsp[(3) - (8)].d) > (yyvsp[(5) - (8)].d)) || ((yyvsp[(7) - (8)].d) < 0. && (yyvsp[(3) - (8)].d) < (yyvsp[(5) - (8)].d)))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	skip_until("For", "EndFor");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	ImbricatedLoop++;
      if(ImbricatedLoop > MAX_RECUR_LOOPS - 1){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS - 1;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2406 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d);
      LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesNameTab[ImbricatedLoop] = (yyvsp[(2) - (8)].c);
      gmsh_yysymbols[(yyvsp[(2) - (8)].c)].resize(1);
      gmsh_yysymbols[(yyvsp[(2) - (8)].c)][0] = (yyvsp[(5) - (8)].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(gmsh_yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = gmsh_yylineno;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if((yyvsp[(5) - (8)].d) > (yyvsp[(7) - (8)].d)) 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	skip_until("For", "EndFor");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	ImbricatedLoop++;
      if(ImbricatedLoop > MAX_RECUR_LOOPS - 1){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS - 1;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2425 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d);
      LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d);
      LoopControlVariablesTab[ImbricatedLoop][2] = (yyvsp[(9) - (10)].d);
      LoopControlVariablesNameTab[ImbricatedLoop] = (yyvsp[(2) - (10)].c);
      gmsh_yysymbols[(yyvsp[(2) - (10)].c)].resize(1);
      gmsh_yysymbols[(yyvsp[(2) - (10)].c)][0] = (yyvsp[(5) - (10)].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(gmsh_yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = gmsh_yylineno;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(((yyvsp[(9) - (10)].d) > 0. && (yyvsp[(5) - (10)].d) > (yyvsp[(7) - (10)].d)) || ((yyvsp[(9) - (10)].d) < 0. && (yyvsp[(5) - (10)].d) < (yyvsp[(7) - (10)].d)))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	skip_until("For", "EndFor");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	ImbricatedLoop++;
      if(ImbricatedLoop > MAX_RECUR_LOOPS - 1){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS - 1;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2444 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop <= 0){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "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];
	  if(LoopControlVariablesNameTab[ImbricatedLoop - 1]){
	    if(!gmsh_yysymbols.count(LoopControlVariablesNameTab[ImbricatedLoop - 1]))
	      yymsg(0, "Unknown loop variable");
	    else
	      gmsh_yysymbols[LoopControlVariablesNameTab[ImbricatedLoop - 1]][0] +=
		LoopControlVariablesTab[ImbricatedLoop - 1][2];
	  }
	  fsetpos(gmsh_yyin, &yyposImbricatedLoopsTab[ImbricatedLoop - 1]);
	  gmsh_yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop - 1];
	}
	else
	  ImbricatedLoop--;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2472 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      if(!FunctionManager::Instance()->createFunction
         ((yyvsp[(2) - (2)].c), gmsh_yyin, gmsh_yyname, gmsh_yylineno))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Redefinition of function %s", (yyvsp[(2) - (2)].c));
      skip_until(NULL, "Return");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      //FIXME: wee leak $2
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2480 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      if(!FunctionManager::Instance()->leaveFunction
         (&gmsh_yyin, gmsh_yyname, gmsh_yylineno))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Error while exiting function");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2486 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      if(!FunctionManager::Instance()->enterFunction
         ((yyvsp[(2) - (3)].c), &gmsh_yyin, gmsh_yyname, gmsh_yylineno))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Unknown function %s", (yyvsp[(2) - (3)].c));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2493 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      if(!(yyvsp[(3) - (4)].d)) skip_until("If", "EndIf");
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2497 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2506 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (5)].l), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		    (yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
		    NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(4) - (5)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2514 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(ROTATE, (yyvsp[(10) - (11)].l), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		    0., 0., 0., (yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d),
		    NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(10) - (11)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2522 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (13)].l), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		    (yyvsp[(3) - (13)].v)[0], (yyvsp[(3) - (13)].v)[1], (yyvsp[(3) - (13)].v)[2], (yyvsp[(5) - (13)].v)[0], (yyvsp[(5) - (13)].v)[1], (yyvsp[(5) - (13)].v)[2], (yyvsp[(7) - (13)].v)[0], (yyvsp[(7) - (13)].v)[1], (yyvsp[(7) - (13)].v)[2], (yyvsp[(9) - (13)].d),
		    NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(12) - (13)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2530 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2534 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (7)].l), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		    (yyvsp[(2) - (7)].v)[0], (yyvsp[(2) - (7)].v)[1], (yyvsp[(2) - (7)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
		    &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(4) - (7)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2542 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2546 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(ROTATE, (yyvsp[(10) - (13)].l), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		    0., 0., 0., (yyvsp[(3) - (13)].v)[0], (yyvsp[(3) - (13)].v)[1], (yyvsp[(3) - (13)].v)[2], (yyvsp[(5) - (13)].v)[0], (yyvsp[(5) - (13)].v)[1], (yyvsp[(5) - (13)].v)[2], (yyvsp[(7) - (13)].d),
		    &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(10) - (13)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2554 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2558 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (15)].l), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		    (yyvsp[(3) - (15)].v)[0], (yyvsp[(3) - (15)].v)[1], (yyvsp[(3) - (15)].v)[2], (yyvsp[(5) - (15)].v)[0], (yyvsp[(5) - (15)].v)[1], (yyvsp[(5) - (15)].v)[2], (yyvsp[(7) - (15)].v)[0], (yyvsp[(7) - (15)].v)[1], (yyvsp[(7) - (15)].v)[2], (yyvsp[(9) - (15)].d),
		    &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(12) - (15)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2566 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2570 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(BOUNDARY_LAYER, (yyvsp[(3) - (6)].l), 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		    &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (6)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2579 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (8)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (8)].v)[0], (yyvsp[(6) - (8)].v)[1], (yyvsp[(6) - (8)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
		   NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2586 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (8)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (8)].v)[0], (yyvsp[(6) - (8)].v)[1], (yyvsp[(6) - (8)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
		   NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2593 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (8)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (8)].v)[0], (yyvsp[(6) - (8)].v)[1], (yyvsp[(6) - (8)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
		   NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2600 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   0., 0., 0., (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], (yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1], (yyvsp[(8) - (12)].v)[2], (yyvsp[(10) - (12)].d),
		   NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2607 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   0., 0., 0., (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], (yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1], (yyvsp[(8) - (12)].v)[2], (yyvsp[(10) - (12)].d),
		   NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2614 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   0., 0., 0., (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], (yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1], (yyvsp[(8) - (12)].v)[2], (yyvsp[(10) - (12)].d),
		   NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2621 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (14)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d),
		   NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2628 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (14)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d),
		   NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2635 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (14)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d),
		   NULL, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2642 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2646 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
		   &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2653 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2657 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
		   &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2664 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2668 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0.,
		   &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2675 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2679 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (16)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d),
		   &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2686 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2690 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (16)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d),
		   &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2697 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2701 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (16)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d),
		   &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2708 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2712 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d),
		   &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2719 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2723 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d),
		   &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2730 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2734 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		   (yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d),
		   &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2745 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2748 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2754 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = true;
      extr.mesh.NbLayer = 1;
      extr.mesh.NbElmLayer.clear();
      extr.mesh.hLayer.clear();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.NbElmLayer.push_back((int)fabs((yyvsp[(3) - (5)].d)));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.hLayer.push_back(1.);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2763 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      extr.mesh.ExtrudeMesh = true;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l));
      if(List_Nbr((yyvsp[(3) - (7)].l)) == List_Nbr((yyvsp[(5) - (7)].l))){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	extr.mesh.NbElmLayer.clear();
	extr.mesh.hLayer.clear();
	for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){
	  double d;
	  List_Read((yyvsp[(3) - (7)].l), i, &d);
	  extr.mesh.NbElmLayer.push_back((d > 0) ? (int)d : 1);
	  List_Read((yyvsp[(5) - (7)].l), i, &d);
	  extr.mesh.hLayer.push_back(d);
	}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Wrong layer definition {%d, %d}", List_Nbr((yyvsp[(3) - (7)].l)), List_Nbr((yyvsp[(5) - (7)].l)));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (7)].l));
      List_Delete((yyvsp[(5) - (7)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2783 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      yymsg(0, "Explicit region numbers in layers are deprecated");
      extr.mesh.ExtrudeMesh = true;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (9)].l));
      if(List_Nbr((yyvsp[(3) - (9)].l)) == List_Nbr((yyvsp[(5) - (9)].l)) && List_Nbr((yyvsp[(3) - (9)].l)) == List_Nbr((yyvsp[(7) - (9)].l))){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	extr.mesh.NbElmLayer.clear();
	extr.mesh.hLayer.clear();
	for(int i = 0; i < List_Nbr((yyvsp[(3) - (9)].l)); i++){
	  double d;
	  List_Read((yyvsp[(3) - (9)].l), i, &d);
	  extr.mesh.NbElmLayer.push_back((d > 0) ? (int)d : 1);
	  List_Read((yyvsp[(7) - (9)].l), i, &d);
	  extr.mesh.hLayer.push_back(d);
	}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(0, "Wrong layer definition {%d, %d, %d}", List_Nbr((yyvsp[(3) - (9)].l)), 
	      List_Nbr((yyvsp[(5) - (9)].l)), List_Nbr((yyvsp[(7) - (9)].l)));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (9)].l));
      List_Delete((yyvsp[(5) - (9)].l));