Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 248 KiB
Newer Older
	  case GMSH_INT : *(int*)pNumOpt -= (int)yyvsp[-1].d ; break ;
	  }
	}
      }
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 152:
#line 1036 "Gmsh.y"
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
      else{
	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
	else{
	  switch(i){
	  case GMSH_DOUBLE : *(double*)pNumOpt *= yyvsp[-1].d ; break ;
	  case GMSH_FLOAT : *(float*)pNumOpt *= (float)yyvsp[-1].d ; break ;
	  case GMSH_LONG : *(long*)pNumOpt *= (long)yyvsp[-1].d ; break ;
	  case GMSH_INT : *(int*)pNumOpt *= (int)yyvsp[-1].d ; break ;
	  }
	}
      }
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 153:
#line 1053 "Gmsh.y"
      if(strcmp(yyvsp[-10].c, "PostProcessing"))
	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
      else{
	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
	}
	  switch(i){
	  case GMSH_DOUBLE : *(double*)pNumOpt *= yyvsp[-1].d ; break ;
	  case GMSH_FLOAT : *(float*)pNumOpt *= (float)yyvsp[-1].d ; break ;
	  case GMSH_LONG : *(long*)pNumOpt *= (long)yyvsp[-1].d ; break ;
	  case GMSH_INT : *(int*)pNumOpt *= (int)yyvsp[-1].d ; break ;
	  }
	}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 154:
#line 1074 "Gmsh.y"
      if(!yyvsp[-1].d)
	vyyerror("Division by Zero in '%s.%s /= %g'", yyvsp[-5].c, yyvsp[-3].c, yyvsp[-1].d);
	if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
	  vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
	  if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
	    vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
	  else{
	    switch(i){
	    case GMSH_DOUBLE : *(double*)pNumOpt /= yyvsp[-1].d ; break ;
	    case GMSH_FLOAT : *(float*)pNumOpt /= (float)yyvsp[-1].d ; break ;
	    case GMSH_LONG : *(long*)pNumOpt /= (long)yyvsp[-1].d ; break ;
	    case GMSH_INT : *(int*)pNumOpt /= (int)yyvsp[-1].d ; break ;
	    }
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 155:
#line 1095 "Gmsh.y"
      if(!yyvsp[-1].d)
	vyyerror("Division by Zero in '%s.View[%d].%s /= %g'", 
		 yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c, yyvsp[-1].d);
	if(strcmp(yyvsp[-10].c, "PostProcessing"))
	  vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
	  if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
	    if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
	    else      vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
			       yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
	  }
	  else{
	    switch(i){
	    case GMSH_DOUBLE : *(double*)pNumOpt /= yyvsp[-1].d ; break ;
	    case GMSH_FLOAT : *(float*)pNumOpt /= (float)yyvsp[-1].d ; break ;
	    case GMSH_LONG : *(long*)pNumOpt /= (long)yyvsp[-1].d ; break ;
	    case GMSH_INT : *(int*)pNumOpt /= (int)yyvsp[-1].d ; break ;
	    }
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 156:
#line 1121 "Gmsh.y"
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-4].c);
      else{
	if(!(pNumOpt = Get_NumberOption(yyvsp[-2].c, pNumCat, &i)))
	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-4].c, yyvsp[-2].c);
	else{
	  switch(i){
	  case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
	  case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
	  case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
	  case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
	  }
	}
      }
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 157:
#line 1138 "Gmsh.y"
      if(strcmp(yyvsp[-10].c, "PostProcessing"))
	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
      else{
	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
	}
	else{
	  switch(i){
	  case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
	  case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
	  case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
	  case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
	  }
	}
      }
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 158:
#line 1159 "Gmsh.y"
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-4].c);
      else{
	if(!(pNumOpt = Get_NumberOption(yyvsp[-2].c, pNumCat, &i)))
	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-4].c, yyvsp[-2].c);
	else{
	  switch(i){
	  case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
	  case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
	  case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
	  case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
	  }
	}
      }
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 159:
#line 1176 "Gmsh.y"
      if(strcmp(yyvsp[-10].c, "PostProcessing"))
	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
      else{
	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
	}
	else{
	  switch(i){
	  case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
	  case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
	  case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
	  case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
	  }
	}
      }
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 160:
#line 1199 "Gmsh.y"
      if(!(pColCat = Get_ColorOptionCategory(yyvsp[-7].c)))
	vyyerror("Unknown Color Option Class '%s'", yyvsp[-7].c);
      else{
	if(!(pColOpt = Get_ColorOption(yyvsp[-3].c, pColCat)))
	  vyyerror("Unknown Color Option '%s.%s'", yyvsp[-7].c, yyvsp[-3].c);
	else{
	  *pColOpt = yyvsp[-1].u ;
	}
      }
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 161:
#line 1212 "Gmsh.y"
{
      if(strcmp(yyvsp[-10].c, "PostProcessing"))
	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
      else{
	ColorTable *ct = Get_ColorTableViewOption((int)yyvsp[-6].d);
	if(!ct)
	  vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
	else{
	  ct->size = List_Nbr(yyvsp[-1].l);
	  if(ct->size > COLORTABLE_NBMAX_COLOR)
	    vyyerror("Too Many (%d>%d) Colors in Post.View[%d].Color", 
		     ct->size, COLORTABLE_NBMAX_COLOR, (int)yyvsp[-6].d);
	  else
	    for(i=0 ; i<ct->size ; i++) List_Read(yyvsp[-1].l, i, &ct->table[i]);
	}
      }
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 162:
#line 1241 "Gmsh.y"
      Cdbpts101((int)yyvsp[-4].d,yyvsp[-1].v[0],yyvsp[-1].v[1],yyvsp[-1].v[2],yyvsp[-1].v[3],yyvsp[-1].v[4]);
      yyval.s.Type = MSH_POINT;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 163:
#line 1248 "Gmsh.y"
      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_PHYSICAL_POINT;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 164:
#line 1254 "Gmsh.y"
      Vertex *v;
      Attractor *a;
      double p;
      int ip;
      for(int i=0;i<List_Nbr(yyvsp[-9].l);i++){
      	List_Read(yyvsp[-9].l,i,&p);
        ip = (int)p;
        v = FindVertex(ip,THEM);
        if(!v)
	  vyyerror("Unkown Point %d", ip);
	else{
	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
			       yyvsp[-6].d,yyvsp[-4].d,yyvsp[-2].d,v,NULL,NULL);
	  List_Add(THEM->Metric->Attractors,&a);
        }
      }
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 165:
#line 1273 "Gmsh.y"
{
      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
	List_Read(yyvsp[-3].l,i,&d);
	Vertex *v = FindVertex((int)d,THEM);
	if(!v)
	  vyyerror("Unkown Point %d", (int)d);
	else
	  v->lc = yyvsp[-1].d;
      }
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 166:
#line 1284 "Gmsh.y"
      yyval.s.Type = MSH_POINT;
      yyval.s.Num  = (int)yyvsp[-2].d;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 167:
#line 1292 "Gmsh.y"
      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_LINE,1,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
      yyval.s.Type = MSH_SEGM_LINE;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 168:
#line 1298 "Gmsh.y"
      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_SPLN,3,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
      yyval.s.Type = MSH_SEGM_SPLN;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 169:
#line 1304 "Gmsh.y"
      Curve *c;
      Attractor *a;
      double p;
      int ip;
      for(int i=0;i<List_Nbr(yyvsp[-9].l);i++){
      	List_Read(yyvsp[-9].l,i,&p);
        ip = (int)p;
        c = FindCurve(ip,THEM);
        if(!c)
	  vyyerror("Unkown Curve %d", ip);
	else{
	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
			       yyvsp[-6].d,yyvsp[-4].d,yyvsp[-2].d,NULL,c,NULL);
	  List_Add(THEM->Metric->Attractors,&a);
        }
      }
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 170:
#line 1323 "Gmsh.y"
      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_CIRC,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
      yyval.s.Type = MSH_SEGM_CIRC ;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 171:
#line 1329 "Gmsh.y"
      List_T *temp;
      int i,j;
      double d;
      temp = List_Create(List_Nbr(yyvsp[-3].l),1,sizeof(int));
      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
      	List_Read(yyvsp[-3].l,i,&d);
        j = (int)d;
        List_Add(temp,&j);
      }
      AddCircleInDataBase ((int) yyvsp[-6].d, MSH_SEGM_CIRC, temp, yyvsp[-1].v);
      List_Delete(temp);
      yyval.s.Type = MSH_SEGM_CIRC ;
      yyval.s.Num  = (int)yyvsp[-6].d;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 172:
#line 1346 "Gmsh.y"
      Cdbseg101((int)yyvsp[-14].d,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,yyvsp[-10].d,yyvsp[-8].d,yyvsp[-6].c,yyvsp[-4].c,yyvsp[-2].c);
      yyval.s.Type = MSH_SEGM_PARAMETRIC ;
      yyval.s.Num  = (int)yyvsp[-14].d;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 173:
#line 1352 "Gmsh.y"
{
      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_ELLI,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
      yyval.s.Type = MSH_SEGM_ELLI ;
      yyval.s.Num  = (int)yyvsp[-4].d;
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 174:
#line 1358 "Gmsh.y"
{
      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_PHYSICAL_LINE;
      yyval.s.Num  = (int)yyvsp[-4].d;
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 175:
#line 1364 "Gmsh.y"
{
      yyval.s.Type = MSH_SEGM_LOOP;
      Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Num = (int)yyvsp[-4].d;
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 176:
#line 1370 "Gmsh.y"
      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BSPLN,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
      yyval.s.Type = MSH_SEGM_BSPLN;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 177:
#line 1376 "Gmsh.y"
      List_T *Temp;
      int i;
      double d;
      if((int)yyvsp[-1].d + 1 + List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-3].l)){
	vyyerror("Wrong Definition of Nurbs Curve %d: "
		"[Degree]%d + 1 + [NbPts]%d != [NbKnots]%d",
		(int)yyvsp[-8].d, (int)yyvsp[-1].d, List_Nbr(yyvsp[-5].l), List_Nbr(yyvsp[-3].l));
      }
      Temp = List_Create(List_Nbr(yyvsp[-5].l),1,sizeof(int));
      for(i=0;i<List_Nbr(yyvsp[-5].l);i++) {
      	List_Read(yyvsp[-5].l,i,&d);
        j = (int)d;
        List_Add(Temp,&j);
      }
      AddCurveInDataBase ((int)yyvsp[-8].d,MSH_SEGM_NURBS,(int)yyvsp[-1].d,Temp,yyvsp[-3].l,-1,-1,0.,1.);
      List_Delete(Temp);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 178:
#line 1395 "Gmsh.y"
      yyval.s.Num = (int)yyvsp[-2].d;
      Curve *c = FindCurve(yyval.s.Num,THEM);
      if(!c)
	vyyerror("Unkown Curve %d", yyval.s.Num);
      else
	yyval.s.Type = c->Typ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 179:
#line 1407 "Gmsh.y"
      Cdbz101((int)yyvsp[-4].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_SURF_PLAN;
      yyval.s.Num  = (int)yyvsp[-4].d;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 180:
#line 1413 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      support = FindSurface((int)yyvsp[-4].d,THEM);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	Cdbz101((int)yyvsp[-8].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-2].l,NULL);
	s = FindSurface((int)yyvsp[-8].d,THEM);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  vyyerror("Unkown Surface %d", (int)yyvsp[-8].d);
	else{
	  s->Typ =  MSH_SURF_TRIMMED;
	  s->Support = support;
	  yyval.s.Type = MSH_SURF_TRIMMED;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  yyval.s.Num  = (int)yyvsp[-8].d;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 181:
#line 1432 "Gmsh.y"
      List_Read(yyvsp[-1].l,0,&d);
      i = (int)d;
      EdgeLoop *el = FindEdgeLoop(i,THEM);
      if(!el)
	vyyerror("Unkown Loop %d", i);
      else{
	j = List_Nbr(el->Curves);
	if(j==4)
	  yyval.s.Type = MSH_SURF_REGL;
	else if(j==3)
	  yyval.s.Type  = MSH_SURF_TRIC;
	else
	  vyyerror("Wrong Definition of Ruled Surface %d: "
		   "%d Borders Instead of 3 or 4", 
		   (int)yyvsp[-4].d, j);
	Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
	yyval.s.Num = (int)yyvsp[-4].d;
      }
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 182:
#line 1455 "Gmsh.y"
      CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d  , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
      yyval.s.Type  = MSH_SURF_NURBS;
      yyval.s.Num = (int)yyvsp[-16].d;
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 183:
#line 1463 "Gmsh.y"
      CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 184:
#line 1467 "Gmsh.y"
      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_PHYSICAL_SURFACE;
      yyval.s.Num  = (int)yyvsp[-4].d;
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 185:
#line 1473 "Gmsh.y"
      Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_SURF_LOOP;
      yyval.s.Num  = (int)yyvsp[-4].d;
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 186:
#line 1479 "Gmsh.y"
{
      yyval.s.Num = (int)yyvsp[-2].d;
      Surface *s = FindSurface(yyval.s.Num,THEM);
      if(!s)
	vyyerror("Unknown Surface %d", yyval.s.Num);
      else
	yyval.s.Type = s->Typ;
     ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 187:
#line 1491 "Gmsh.y"
{
      Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_VOLUME;
      yyval.s.Num  = (int)yyvsp[-4].d;      
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 188:
#line 1497 "Gmsh.y"
{
      Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_VOLUME;
      yyval.s.Num  = (int)yyvsp[-4].d;
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 189:
#line 1503 "Gmsh.y"
{
      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
      yyval.s.Type = MSH_PHYSICAL_VOLUME;
      yyval.s.Num  = (int)yyvsp[-4].d;
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 190:
#line 1516 "Gmsh.y"
      TranslateShapes (yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-1].l,1);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 191:
#line 1521 "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);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 192:
#line 1526 "Gmsh.y"
      SymmetryShapes(yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-3].v[3],yyvsp[-1].l,1);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 193:
#line 1531 "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;
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 194:
#line 1538 "Gmsh.y"
{ yyval.l = yyvsp[0].l; ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 195:
#line 1539 "Gmsh.y"
{ yyval.l = yyvsp[0].l; ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 196:
#line 1540 "Gmsh.y"
{ yyval.l = yyvsp[0].l; ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 197:
#line 1545 "Gmsh.y"
{
      yyval.l = List_Create(3,3,sizeof(Shape));
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 198:
#line 1549 "Gmsh.y"
{
      List_Add(yyval.l,&yyvsp[0].s);
      yyval.l = yyvsp[-1].l;
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 199:
#line 1561 "Gmsh.y"
{
      yyval.l = List_Create(3,3,sizeof(Shape));
      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
	List_Read (yyvsp[-1].l,i,&TheShape);
	CopyShape(TheShape.Type,TheShape.Num,&j);
	TheShape.Num = j;
	List_Add(yyval.l,&TheShape);
      }
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 200:
#line 1579 "Gmsh.y"
{
      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
	List_Read (yyvsp[-1].l,i,&TheShape);
	DeleteShape(TheShape.Type,TheShape.Num);
      }
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 201:
#line 1586 "Gmsh.y"
{
	FreeView((int)yyvsp[-2].d);
      ;
    break;}
case 202:
#line 1590 "Gmsh.y"
{
      Init_Mesh(THEM, 1);
    ;
    break;}
case 203:
#line 1602 "Gmsh.y"
      if(!strcmp(yyvsp[-2].c, "Include")){

	yyinTab[RecursionLevel++] = yyin;
	strcpy(tmpstring, ThePathForIncludes);
	if((yyin = fopen(strcat(tmpstring,yyvsp[-1].c),"r"))){
	  strcpy(yynameTab[RecursionLevel-1],yyname);
	  yylinenoTab[RecursionLevel-1]=yylineno;
	  yylineno=1;
	  strcpy(yyname,yyvsp[-1].c);
	  while(!feof(yyin)){
	    yyparse();
	  }
	  fclose(yyin);
	  yyin = yyinTab[--RecursionLevel];
	  strcpy(yyname,yynameTab[RecursionLevel]);
	  yylineno = yylinenoTab[RecursionLevel];
	else{
	  vyyerror("Unknown File '%s'", yyvsp[-1].c) ;  
	  yyin = yyinTab[--RecursionLevel];
	}

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

	if(!CTX.interactive){ // we're in interactive mode
	  char ext[6];
	  strcpy(ext,yyvsp[-1].c+(strlen(yyvsp[-1].c)-4));
	  Replot();
	  extern void CreateImage (char *name, FILE *fp);
	  FILE *fp = 0;
	  if(!strcmp(ext,".gif")){
	    fp = fopen(yyvsp[-1].c,"wb");
	    CTX.print.type = PRINT_GL2GIF;
	  }
	  else if(!strcmp(ext,".eps")){
	    fp = fopen(yyvsp[-1].c,"w");
	    CTX.print.type =  PRINT_GL2PS_RECURSIVE;
	  } 
	  else if(!strcmp(ext,".xpm")){
	    fp = fopen(yyvsp[-1].c,"wb");
	    CTX.print.type =  PRINT_XDUMP;
	    CTX.print.format = FORMAT_XPM;
	  } 
	  if(fp){
	    CreateImage(yyvsp[-1].c,fp);
	    fclose(fp);
	  }
	  else{
	    vyyerror("Unable to Open File '%s'", yyvsp[-1].c);
	  }
	}
	
      }
      else if(!strcmp(yyvsp[-2].c, "Merge")){

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

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

	Print_Mesh(THEM, yyvsp[-1].c, CTX.mesh.format);

      else
	vyyerror("Unknown Command '%s'", yyvsp[-2].c);
      if(!strcmp(yyvsp[-2].c, "Sleep")){

	extern long Get_AnimTime();
	long sleep_time = Get_AnimTime();
	while(1){
	  if(Get_AnimTime() - sleep_time > (long)(yyvsp[-1].d*1.e6)) break;
	}
      
      }
      else if(!strcmp(yyvsp[-2].c, "Mesh")){

	Maillage_Dimension_0(THEM);
	mai3d(THEM,(int)yyvsp[-1].d);
  
      }
      else
	vyyerror("Unknown Command '%s'", yyvsp[-2].c);
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{
      if(!CTX.interactive){ // we're in interactive mode
	if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){
	  Last_NumberOfPoints = Tree_Nbr(THEM->Points);
	  Replot();
	}
	else{
	  Init();
	  Draw();
	}
      }
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
{
      FILE* ff;
      if(RecursionLevel)
	ff = yyinTab[RecursionLevel-1];
      else
	ff = yyin;
      // here, we seek remember the position in yyin
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
    ;
{
      FILE* ff;
      if(RecursionLevel)
	ff = yyinTab[RecursionLevel-1];
      else
	ff = yyin;
      // here, we seek remember the position in yyin
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
    ;
{
      FILE* ff;
      if(RecursionLevel)
	ff = yyinTab[RecursionLevel-1];
      else
	ff = yyin;
      // here, we seek remember the position in yyin
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-6].c ;
      
      TheSymbol.Name = yyvsp[-6].c;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
	TheSymbol.val = List_Create(1,1,sizeof(double));
	List_Put(TheSymbol.val, 0, &yyvsp[-3].d);
	List_Add(Symbol_L, &TheSymbol);
      }
      else{
	List_Write(pSymbol->val, 0, &yyvsp[-3].d);
      }
      
      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
    ;
{
      FILE* ff;
      if(RecursionLevel)
	ff = yyinTab[RecursionLevel-1];
      else
	ff = yyin;
      // here, we seek remember the position in yyin
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-8].c ;
      TheSymbol.Name = yyvsp[-8].c;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
	TheSymbol.val = List_Create(1,1,sizeof(double));
	List_Put(TheSymbol.val, 0, &yyvsp[-5].d);
	List_Add(Symbol_L, &TheSymbol);
      }
      else{
	List_Write(pSymbol->val, 0, &yyvsp[-5].d);
      }
      
      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
    ;
    break;}
      if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
	 LoopControlVariablesTab[ImbricatedLoop-1][0]){
	FILE* ff;
	if(RecursionLevel)
	  ff = yyinTab[RecursionLevel-1];
	else
	  ff = yyin;
	
	LoopControlVariablesTab[ImbricatedLoop-1][0] +=
	  LoopControlVariablesTab[ImbricatedLoop-1][2];
	if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){
	  TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1];
	  pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols);
	  *(double*)List_Pointer_Fast(pSymbol->val, 0) += 
	    LoopControlVariablesTab[ImbricatedLoop-1][2] ;
	
	fsetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
      if(!FunctionManager::Instance()->leaveFunction(&yyin,yylineno))
	vyyerror("Error while exiting function");
      if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c,&yyin,yylineno))
	vyyerror("Unknown Function %s",yyvsp[-1].c);
      // skip everything until return is found
      if(!FunctionManager::Instance()->createFunction(yyvsp[0].c,yyin,yylineno))
	vyyerror("Redefinition of function %s",yyvsp[0].c);
      skip_until("Return");
    ;
{
      if(!yyvsp[-1].d) skip_until("EndIf");
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Curve *pc, *prc;
      Extrude_ProtudePoint(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,&pc,&prc,NULL);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Curve *pc, *prc;
      Extrude_ProtudePoint(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,
			   &pc,&prc,NULL);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Extrude_ProtudeCurve(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,NULL);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Extrude_ProtudeCurve(0,(int)yyvsp[-8].d,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);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL);
{
    int vol = NEWREG();
    Extrude_ProtudeSurface(1,(int)yyvsp[-7].d,yyvsp[-5].v[0],yyvsp[-5].v[1],yyvsp[-5].v[2],0.,0.,0.,0.,vol,&extr);
  ;
    break;}
{
    int vol = NEWREG();
    Extrude_ProtudeSurface(0,(int)yyvsp[-11].d,yyvsp[-9].v[0],yyvsp[-9].v[1],yyvsp[-9].v[2],yyvsp[-7].v[0],yyvsp[-7].v[1],yyvsp[-7].v[2],yyvsp[-5].d,vol,&extr);
  ;
    break;}
{
      double d;
      int j;
      extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l);
      extr.mesh.ExtrudeMesh = true;
      for(int i=0;i<List_Nbr(yyvsp[-6].l);i++){
	List_Read(yyvsp[-6].l,i,&d);
	j = (int)d;
	extr.mesh.NbElmLayer[i] = j;
	List_Read(yyvsp[-4].l,i,&d);
	j = (int)d;
	extr.mesh.ZonLayer[i] = j;
	List_Read(yyvsp[-2].l,i,&d);
	extr.mesh.hLayer[i] = d;
      extr.mesh.Recombine = true;
      Curve *c;
      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
	List_Read(yyvsp[-3].l,i,&d);
	j = (int)fabs(d);
        c = FindCurve(j,THEM);
	if(!c)
	  vyyerror("Unkown Curve %d", j);
	  c->Method = TRANSFINI;
	  c->ipar[0] = (int)yyvsp[-1].d;
	  c->ipar[1] = sign(d);
	  c->dpar[0] = 1.0;
      Curve *c;
      for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
	List_Read(yyvsp[-6].l,i,&d);
	j = (int)fabs(d);
        c = FindCurve(j,THEM);
	if(!c)
	  vyyerror("Unkown Curve %d", j);
	  c->Method = TRANSFINI;
	  c->ipar[0] = (int)yyvsp[-4].d;
	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
	  c->dpar[0] = fabs(yyvsp[-1].d);