Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 259 KiB
Newer Older
    ;
    break;}
case 165:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2180 "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 166:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2187 "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 167:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2194 "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 168:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2201 "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 169:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2208 "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 170:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2215 "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 171:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2222 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 172:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2227 "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 173:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2234 "Gmsh.y"
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 174:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2239 "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 175:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2246 "Gmsh.y"
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 176:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2251 "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 177:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2258 "Gmsh.y"
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 178:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2263 "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 179:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2270 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 180:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2275 "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 181:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2282 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 182:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2287 "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 183:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2294 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 184:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2299 "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 185:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2306 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 186:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2311 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (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 187:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2318 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
    ;
    break;}
case 188:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2323 "Gmsh.y"
{
      yyval.l = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (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 189:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2334 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2337 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2343 "Gmsh.y"
      double d;
      extr.mesh.ExtrudeMesh = true;
      extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l);
      if(List_Nbr(yyvsp[-6].l) == List_Nbr(yyvsp[-4].l) && List_Nbr(yyvsp[-6].l) == List_Nbr(yyvsp[-2].l)){
	extr.mesh.NbElmLayer = (int*)Malloc(extr.mesh.NbLayer*sizeof(int));
	extr.mesh.ZonLayer = (int*)Malloc(extr.mesh.NbLayer*sizeof(int));
	extr.mesh.hLayer = (double*)Malloc(extr.mesh.NbLayer*sizeof(double));
	for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
	  List_Read(yyvsp[-6].l, i, &d);
	  extr.mesh.NbElmLayer[i] = (d>0)?(int)d:1;
	  List_Read(yyvsp[-4].l, i, &d);
	  extr.mesh.ZonLayer[i] = (int)d;
	  List_Read(yyvsp[-2].l, i, &d);
	  extr.mesh.hLayer[i] = d;
	}
      }
      else{
	yymsg(GERROR, "Wrong layer definition {%d, %d, %d}", 
	      List_Nbr(yyvsp[-6].l), List_Nbr(yyvsp[-4].l), List_Nbr(yyvsp[-2].l));
      }
      List_Delete(yyvsp[-6].l);
      List_Delete(yyvsp[-4].l);
      List_Delete(yyvsp[-2].l);
    ;
    break;}
case 192:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2369 "Gmsh.y"
      double d;
      extr.mesh.ExtrudeMesh = true;
      extr.mesh.NbLayer = List_Nbr(yyvsp[-4].l);
      if(List_Nbr(yyvsp[-4].l) == List_Nbr(yyvsp[-2].l)){
	extr.mesh.NbElmLayer = (int*)Malloc(extr.mesh.NbLayer*sizeof(int));
	extr.mesh.ZonLayer = (int*)Malloc(extr.mesh.NbLayer*sizeof(int));
	extr.mesh.hLayer = (double*)Malloc(extr.mesh.NbLayer*sizeof(double));
	for(int i = 0; i < List_Nbr(yyvsp[-4].l); i++){
	  List_Read(yyvsp[-4].l, i, &d);
	  extr.mesh.NbElmLayer[i] = (d>0)?(int)d:1;
	  extr.mesh.ZonLayer[i] = 0;
	  List_Read(yyvsp[-2].l, i, &d);
	  extr.mesh.hLayer[i] = d;
	}
      }
      else{
	yymsg(GERROR, "Wrong layer definition {%d, %d}", 
	      List_Nbr(yyvsp[-4].l), List_Nbr(yyvsp[-2].l));
      List_Delete(yyvsp[-4].l);
      List_Delete(yyvsp[-2].l);
    ;
    break;}
case 193:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2393 "Gmsh.y"
      extr.mesh.Recombine = true;
    ;
    break;}
case 194:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2402 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
	List_Read(yyvsp[-3].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int j = (int)fabs(d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        Curve *c = FindCurve(j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(WARNING, "Unknown curve %d", j);
	  c->ipar[0] = (yyvsp[-1].d>2)?(int)yyvsp[-1].d:2;
	  c->ipar[1] = sign(d);
	  c->dpar[0] = 1.0;
      List_Delete(yyvsp[-3].l);
    ;
    break;}
case 195:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2420 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
	List_Read(yyvsp[-6].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int j = (int)fabs(d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        Curve *c = FindCurve(j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(WARNING, "Unknown curve %d", j);
	  c->ipar[0] = (yyvsp[-4].d>2)?(int)yyvsp[-4].d:2;
	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
	  c->dpar[0] = fabs(yyvsp[-1].d);
      List_Delete(yyvsp[-6].l);
    ;
    break;}
case 196:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2438 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
	List_Read(yyvsp[-6].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int j = (int)fabs(d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        Curve *c = FindCurve(j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(WARNING, "Unknown curve %d", j);
	  c->ipar[0] = (yyvsp[-4].d>2)?(int)yyvsp[-4].d:2;
	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
	  c->dpar[0] = fabs(yyvsp[-1].d);
      List_Delete(yyvsp[-6].l);
    ;
    break;}
case 197:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2456 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface((int)yyvsp[-4].d);
	yymsg(WARNING, "Unknown surface %d", (int)yyvsp[-4].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	s->Recombine_Dir = 1;
	int k = List_Nbr(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	if(k != 3 && k != 4){
	  yymsg(GERROR, "Wrong definition of Transfinite Surface %d: "
		"%d points instead of 3 or 4" , (int)yyvsp[-4].d, k);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Reset(s->TrsfPoints);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  for(int i = 0; i < k; i++){
	    double d;
	    List_Read(yyvsp[-1].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    int j = (int)fabs(d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    Vertex *v = FindPoint(j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    if(!v)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	      yymsg(WARNING, "Unknown point %d", j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    else
	      List_Add(s->TrsfPoints, &v);
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 198:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2485 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface((int)yyvsp[-5].d);
	yymsg(WARNING, "Unknown surface %d", (int)yyvsp[-5].d);
      else{
	s->Method = TRANSFINI;
	int k = List_Nbr(yyvsp[-2].l);
	if(k != 3 && k != 4){
	  yymsg(GERROR, "Wrong definition of Transfinite Surface %d: "
		"%d points instead of 3 or 4" , (int)yyvsp[-5].d, k);
	}
	else{
	  List_Reset(s->TrsfPoints);
	  if (!strcmp(yyvsp[-1].c, "Right"))
	    s->Recombine_Dir = 1;
	  else if (!strcmp(yyvsp[-1].c, "Left"))
	    s->Recombine_Dir = -1;
	  else
	    s->Recombine_Dir = 0;
	  for(int i = 0; i < k; i++){
	    double d;
	    List_Read(yyvsp[-2].l, i, &d);
	    int j = (int)fabs(d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    Vertex *v = FindPoint(j);
	    if(!v)
	      yymsg(WARNING, "Unknown point %d", j);
	    else
	      List_Add(s->TrsfPoints, &v);
	  }
	}
      }
      List_Delete(yyvsp[-2].l);
      Free(yyvsp[-1].c);
    ;
    break;}
case 199:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2520 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface((int)yyvsp[-4].d);
	yymsg(WARNING, "Unknown surface %d", (int)yyvsp[-4].d);
        int k = List_Nbr(yyvsp[-1].l);
	  yymsg(GERROR, "Wrong definition of Elliptic Surface %d: "
		"%d points instead of 4" , (int)yyvsp[-4].d, k);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Reset(s->TrsfPoints);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  for(int i = 0; i < k; i++){
	    double d;
	    List_Read(yyvsp[-1].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    int j = (int)fabs(d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    Vertex *v = FindPoint(j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    if(!v)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	      yymsg(WARNING, "Unknown point %d", j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    else
	      List_Add(s->TrsfPoints, &v);
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 200:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2547 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Volume *v = FindVolume((int)yyvsp[-4].d);
	yymsg(WARNING, "Unknown volume %d", (int)yyvsp[-4].d);
	int k = List_Nbr(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	if(k != 6 && k != 8)
	  yymsg(GERROR, "Wrong definition of Transfinite Volume %d: "
		"%d points instead of 6 or 8" , (int)yyvsp[-4].d, k);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Reset(v->TrsfPoints);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  for(int i = 0; i < k; i++){
	    double d;
	    List_Read(yyvsp[-1].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    int j = (int)fabs(d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    Vertex *vert = FindPoint(j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    if(!vert)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	      yymsg(WARNING, "Unknown point %d", j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    else
	      List_Add(v->TrsfPoints, &vert);
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 201:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2574 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
	List_Read(yyvsp[-3].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int j = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Surface *s = FindSurface(j);
	  s->RecombineAngle = (yyvsp[-1].d > 0 && yyvsp[-1].d < 90) ? yyvsp[-1].d : 90;
      List_Delete(yyvsp[-3].l);
    ;
    break;}
case 202:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2588 "Gmsh.y"
{
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
	List_Read(yyvsp[-1].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int j = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        Surface *s = FindSurface(j);
      List_Delete(yyvsp[-1].l);
    ;
    break;}
case 203:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2607 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface((int)yyvsp[-1].d);
	setSurfaceEmbeddedPoints(s, yyvsp[-4].l);
    ;
    break;}
case 204:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2613 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface((int)yyvsp[-1].d);
	setSurfaceEmbeddedCurves(s, yyvsp[-4].l);
    ;
    break;}
case 205:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2619 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2622 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2629 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      ReplaceAllDuplicates();
    ;
    break;}
case 208:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2633 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yymsg(GERROR, "Intersect is deprecated");
    ;
    break;}
case 209:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2642 "Gmsh.y"
{ yyval.d = yyvsp[0].d;           ;
    break;}
case 210:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2643 "Gmsh.y"
{ yyval.d = yyvsp[-1].d;           ;
    break;}
case 211:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2644 "Gmsh.y"
{ yyval.d = -yyvsp[0].d;          ;
    break;}
case 212:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2645 "Gmsh.y"
{ yyval.d = yyvsp[0].d;           ;
    break;}
case 213:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2646 "Gmsh.y"
{ yyval.d = !yyvsp[0].d;          ;
    break;}
case 214:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2647 "Gmsh.y"
{ yyval.d = yyvsp[-2].d - yyvsp[0].d;      ;
    break;}
case 215:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2648 "Gmsh.y"
{ yyval.d = yyvsp[-2].d + yyvsp[0].d;      ;
    break;}
case 216:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2649 "Gmsh.y"
{ yyval.d = yyvsp[-2].d * yyvsp[0].d;      ;
    break;}
case 217:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2651 "Gmsh.y"
{ 
      if(!yyvsp[0].d)
	yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
	yyval.d = yyvsp[-2].d / yyvsp[0].d;     
    ;
    break;}
case 218:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2657 "Gmsh.y"
{ yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d;  ;
    break;}
case 219:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2658 "Gmsh.y"
{ yyval.d = pow(yyvsp[-2].d, yyvsp[0].d);  ;
    break;}
case 220:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2659 "Gmsh.y"
{ yyval.d = yyvsp[-2].d < yyvsp[0].d;      ;
    break;}
case 221:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2660 "Gmsh.y"
{ yyval.d = yyvsp[-2].d > yyvsp[0].d;      ;
    break;}
case 222:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2661 "Gmsh.y"
{ yyval.d = yyvsp[-2].d <= yyvsp[0].d;     ;
    break;}
case 223:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2662 "Gmsh.y"
{ yyval.d = yyvsp[-2].d >= yyvsp[0].d;     ;
    break;}
case 224:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2663 "Gmsh.y"
{ yyval.d = yyvsp[-2].d == yyvsp[0].d;     ;
    break;}
case 225:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2664 "Gmsh.y"
{ yyval.d = yyvsp[-2].d != yyvsp[0].d;     ;
    break;}
case 226:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2665 "Gmsh.y"
{ yyval.d = yyvsp[-2].d && yyvsp[0].d;     ;
    break;}
case 227:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2666 "Gmsh.y"
{ yyval.d = yyvsp[-2].d || yyvsp[0].d;     ;
    break;}
case 228:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2667 "Gmsh.y"
{ yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d;  ;
    break;}
case 229:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2668 "Gmsh.y"
{ yyval.d = exp(yyvsp[-1].d);      ;
    break;}
case 230:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2669 "Gmsh.y"
{ yyval.d = log(yyvsp[-1].d);      ;
    break;}
case 231:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2670 "Gmsh.y"
{ yyval.d = log10(yyvsp[-1].d);    ;
    break;}
case 232:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2671 "Gmsh.y"
{ yyval.d = sqrt(yyvsp[-1].d);     ;
    break;}
case 233:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2672 "Gmsh.y"
{ yyval.d = sin(yyvsp[-1].d);      ;
    break;}
case 234:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2673 "Gmsh.y"
{ yyval.d = asin(yyvsp[-1].d);     ;
    break;}
case 235:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2674 "Gmsh.y"
{ yyval.d = cos(yyvsp[-1].d);      ;
    break;}
case 236:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2675 "Gmsh.y"
{ yyval.d = acos(yyvsp[-1].d);     ;
    break;}
case 237:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2676 "Gmsh.y"
{ yyval.d = tan(yyvsp[-1].d);      ;
    break;}
case 238:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2677 "Gmsh.y"
{ yyval.d = atan(yyvsp[-1].d);     ;
    break;}
case 239:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2678 "Gmsh.y"
{ yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;
    break;}
case 240:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2679 "Gmsh.y"
{ yyval.d = sinh(yyvsp[-1].d);     ;
    break;}
case 241:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2680 "Gmsh.y"
{ yyval.d = cosh(yyvsp[-1].d);     ;
    break;}
case 242:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2681 "Gmsh.y"
{ yyval.d = tanh(yyvsp[-1].d);     ;
    break;}
case 243:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2682 "Gmsh.y"
{ yyval.d = fabs(yyvsp[-1].d);     ;
    break;}
case 244:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2683 "Gmsh.y"
{ yyval.d = floor(yyvsp[-1].d);    ;
    break;}
case 245:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2684 "Gmsh.y"
{ yyval.d = ceil(yyvsp[-1].d);     ;
    break;}
case 246:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2685 "Gmsh.y"
{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
    break;}
case 247:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2686 "Gmsh.y"
{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
    break;}
case 248:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2687 "Gmsh.y"
{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
    break;}
case 249:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2688 "Gmsh.y"
{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
    break;}
case 250:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2690 "Gmsh.y"
{ yyval.d = exp(yyvsp[-1].d);      ;
    break;}
case 251:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2691 "Gmsh.y"
{ yyval.d = log(yyvsp[-1].d);      ;
    break;}
case 252:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2692 "Gmsh.y"
{ yyval.d = log10(yyvsp[-1].d);    ;
    break;}
case 253:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2693 "Gmsh.y"
{ yyval.d = sqrt(yyvsp[-1].d);     ;
    break;}
case 254:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2694 "Gmsh.y"
{ yyval.d = sin(yyvsp[-1].d);      ;
    break;}
case 255:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2695 "Gmsh.y"
{ yyval.d = asin(yyvsp[-1].d);     ;
    break;}
case 256:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2696 "Gmsh.y"
{ yyval.d = cos(yyvsp[-1].d);      ;
    break;}
case 257:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2697 "Gmsh.y"
{ yyval.d = acos(yyvsp[-1].d);     ;
    break;}
case 258:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2698 "Gmsh.y"
{ yyval.d = tan(yyvsp[-1].d);      ;
    break;}
case 259:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2699 "Gmsh.y"
{ yyval.d = atan(yyvsp[-1].d);     ;
    break;}
case 260:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2700 "Gmsh.y"
{ yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;
    break;}
case 261:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2701 "Gmsh.y"
{ yyval.d = sinh(yyvsp[-1].d);     ;
    break;}
case 262:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2702 "Gmsh.y"
{ yyval.d = cosh(yyvsp[-1].d);     ;
    break;}
case 263:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2703 "Gmsh.y"
{ yyval.d = tanh(yyvsp[-1].d);     ;
    break;}
case 264:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2704 "Gmsh.y"
{ yyval.d = fabs(yyvsp[-1].d);     ;
    break;}
case 265:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2705 "Gmsh.y"
{ yyval.d = floor(yyvsp[-1].d);    ;
    break;}
case 266:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2706 "Gmsh.y"
{ yyval.d = ceil(yyvsp[-1].d);     ;
    break;}
case 267:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2707 "Gmsh.y"
{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
    break;}
case 268:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2708 "Gmsh.y"
{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
    break;}
case 269:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2709 "Gmsh.y"
{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
    break;}
case 270:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2710 "Gmsh.y"
{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
    break;}
case 271:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2719 "Gmsh.y"
{ yyval.d = yyvsp[0].d; ;
    break;}
case 272:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2720 "Gmsh.y"
{ yyval.d = 3.141592653589793; ;
    break;}
case 273:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2721 "Gmsh.y"
{ yyval.d = ParUtil::Instance()->rank(); ;
    break;}
case 274:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2722 "Gmsh.y"
{ yyval.d = ParUtil::Instance()->size(); ;
    break;}
case 275:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2723 "Gmsh.y"
{ yyval.d = Get_GmshMajorVersion(); ;
    break;}
case 276:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2724 "Gmsh.y"
{ yyval.d = Get_GmshMinorVersion(); ;
    break;}
case 277:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2725 "Gmsh.y"
{ yyval.d = Get_GmshPatchVersion(); ;
    break;}
case 278:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2730 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[0].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))) {
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[0].c);
	yyval.d = 0.;
	yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0);
      Free(yyvsp[0].c);
    ;
    break;}
case 279:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2746 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      char tmpstring[1024];
      sprintf(tmpstring, "%s_%d", yyvsp[-4].c, (int)yyvsp[-1].d) ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = tmpstring;
      Symbol *pSymbol;
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) {
	yymsg(GERROR, "Unknown variable '%s'", tmpstring);
	yyval.d = 0.;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      else
	yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0);
      Free(yyvsp[-4].c);
    ;
    break;}
case 280:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2761 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-3].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))) {
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[-3].c);
	yyval.d = 0.;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double *pd;
	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-1].d)))
	  yyval.d = *pd;
	  yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-3].c, (int)yyvsp[-1].d);
	  yyval.d = 0.;
      Free(yyvsp[-3].c);
    ;
    break;}
case 281:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2781 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-2].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))) {
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[-2].c);
	yyval.d = 0.;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      else{
	yyval.d = List_Nbr(pSymbol->val);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      Free(yyvsp[-2].c);
    ;
    break;}
case 282:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2795 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-1].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))) {
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[-1].c);
	yyval.d = 0.;
	yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i);
      Free(yyvsp[-1].c);
    ;
    break;}
case 283:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2808 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-4].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))) {
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[-4].c);
	yyval.d = 0.;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double *pd;
	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-2].d)))
	  yyval.d = (*pd += yyvsp[0].i);
	  yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-4].c, (int)yyvsp[-2].d);
	  yyval.d = 0.;
      Free(yyvsp[-4].c);
    ;
    break;}
case 284:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2831 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      double (*pNumOpt)(int num, int action, double value);
      StringXNumber *pNumCat;
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){
	yymsg(GERROR, "Unknown numeric option class '%s'", yyvsp[-2].c);
	yyval.d = 0.;
	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[0].c, pNumCat))){
	  yymsg(GERROR, "Unknown numeric option '%s.%s'", yyvsp[-2].c, yyvsp[0].c);
	  yyval.d = 0.;
	  yyval.d = pNumOpt(0, GMSH_GET, 0);
      Free(yyvsp[-2].c); Free(yyvsp[0].c);
    ;
    break;}
case 285:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2849 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      double (*pNumOpt)(int num, int action, double value);
      StringXNumber *pNumCat;
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){
	yymsg(GERROR, "Unknown numeric option class '%s'", yyvsp[-5].c);
	yyval.d = 0.;
	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[0].c, pNumCat))){
	  yymsg(GERROR, "Unknown numeric option '%s[%d].%s'", yyvsp[-5].c, (int)yyvsp[-3].d, yyvsp[0].c);
	  yyval.d = 0.;
	  yyval.d = pNumOpt((int)yyvsp[-3].d, GMSH_GET, 0);
      Free(yyvsp[-5].c); Free(yyvsp[0].c);
    ;
    break;}
case 286:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2867 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      double (*pNumOpt)(int num, int action, double value);
      StringXNumber *pNumCat;
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){
	yymsg(GERROR, "Unknown numeric option class '%s'", yyvsp[-3].c);
	yyval.d = 0.;
	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[-1].c, pNumCat))){
	  yymsg(GERROR, "Unknown numeric option '%s.%s'", yyvsp[-3].c, yyvsp[-1].c);
	  yyval.d = 0.;
	  yyval.d = pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+yyvsp[0].i);
      Free(yyvsp[-3].c); Free(yyvsp[-1].c);
    ;
    break;}
case 287:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2885 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      double (*pNumOpt)(int num, int action, double value);
      StringXNumber *pNumCat;
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){
	yymsg(GERROR, "Unknown numeric option class '%s'", yyvsp[-6].c);
	yyval.d = 0.;
	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[-1].c, pNumCat))){
	  yymsg(GERROR, "Unknown numeric option '%s[%d].%s'", yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-1].c);
	  yyval.d = 0.;
	  yyval.d = pNumOpt((int)yyvsp[-4].d, GMSH_SET|GMSH_GUI, pNumOpt((int)yyvsp[-4].d, GMSH_GET, 0)+yyvsp[0].i);
      Free(yyvsp[-6].c); Free(yyvsp[-1].c);
    ;
    break;}
case 288:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2903 "Gmsh.y"
{ 
      yyval.d = GetValue(yyvsp[-3].c, yyvsp[-1].d);
      Free(yyvsp[-3].c);
    ;
    break;}