Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 306 KiB
Newer Older
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop <= 0){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	ImbricatedLoop = 0;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double x0 = LoopControlVariablesTab[ImbricatedLoop-1][0];
	double x1 = LoopControlVariablesTab[ImbricatedLoop-1][1];
	double step = LoopControlVariablesTab[ImbricatedLoop-1][2];
	int do_next = (step > 0.) ? (x0+step <= x1) : (x0+step >= x1);
	if(do_next){
	  LoopControlVariablesTab[ImbricatedLoop-1][0] +=
	    LoopControlVariablesTab[ImbricatedLoop-1][2];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  if(LoopControlVariablesNameTab[ImbricatedLoop-1]){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    Symbol TheSymbol;
	    TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1];
	    Symbol *pSymbol;
	    if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol)))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    else
	      *(double*)List_Pointer_Fast(pSymbol->val, 0) += 
		LoopControlVariablesTab[ImbricatedLoop-1][2];
	  }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  fsetpos(gmsh_yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
	  gmsh_yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  ImbricatedLoop--;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!FunctionManager::Instance()->createFunction((yyvsp[(2) - (2)].c), gmsh_yyin, gmsh_yyname,
						      gmsh_yylineno))
	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
    {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!FunctionManager::Instance()->leaveFunction(&gmsh_yyin, gmsh_yyname,
						     gmsh_yylineno))
	yymsg(0, "Error while exiting function");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

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

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

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (5)].l), 
		    (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));
      List_Delete((yyvsp[(4) - (5)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(ROTATE, (yyvsp[(10) - (11)].l), 
		    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));
      List_Delete((yyvsp[(10) - (11)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (13)].l), 
		    (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));
      List_Delete((yyvsp[(12) - (13)].l));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (7)].l), 
		    (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));
      List_Delete((yyvsp[(4) - (7)].l));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(ROTATE, (yyvsp[(10) - (13)].l), 
		    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));
      List_Delete((yyvsp[(10) - (13)].l));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (15)].l), 
		    (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));
      List_Delete((yyvsp[(12) - (15)].l));
    ;}
    break;

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
    {
      (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.,
		    &extr, (yyval.l));
      List_Delete((yyvsp[(3) - (6)].l));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      extr.mesh.ViewIndex = (int)(yyvsp[(4) - (10)].d);
      ExtrudeShapes(BOUNDARY_LAYER, (yyvsp[(7) - (10)].l), 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
		    &extr, (yyval.l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ViewIndex = -1;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free((yyvsp[(2) - (10)].c));
      List_Delete((yyvsp[(7) - (10)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (8)].d), 
		   (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));
    ;}
    break;

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), 
		   (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));
    ;}
    break;

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), 
		   (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));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), 
		   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));
    ;}
    break;

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), 
		   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));
    ;}
    break;

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), 
		   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));
    ;}
    break;

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), 
		   (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));
    ;}
    break;

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), 
		   (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));
    ;}
    break;

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), 
		   (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));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), 
		   (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));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), 
		   (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));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), 
		   (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));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (16)].d), 
		   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));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (16)].d), 
		   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));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (16)].d), 
		   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));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d), 
		   (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));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d), 
		   (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));
    ;}
    break;

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
    {
      (yyval.l) = List_Create(2, 1, sizeof(Shape));
      ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d), 
		   (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));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
    ;}
    break;

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
    {
      double d;
      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();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){
	  List_Read((yyvsp[(3) - (7)].l), i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  extr.mesh.NbElmLayer.push_back((d > 0) ? (int)d : 1);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Read((yyvsp[(5) - (7)].l), i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  extr.mesh.hLayer.push_back(d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
	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
    {
      yymsg(0, "Explicit region numbers in layers are deprecated");
      double d;
      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();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = 0; i < List_Nbr((yyvsp[(3) - (9)].l)); i++){
	  List_Read((yyvsp[(3) - (9)].l), i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  extr.mesh.NbElmLayer.push_back((d > 0) ? (int)d : 1);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Read((yyvsp[(7) - (9)].l), i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  extr.mesh.hLayer.push_back(d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
	yymsg(0, "Wrong layer definition {%d, %d, %d}", List_Nbr((yyvsp[(3) - (9)].l)), 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	      List_Nbr((yyvsp[(5) - (9)].l)), List_Nbr((yyvsp[(7) - (9)].l)));
      List_Delete((yyvsp[(3) - (9)].l));
      List_Delete((yyvsp[(5) - (9)].l));
      List_Delete((yyvsp[(7) - (9)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      extr.mesh.Recombine = true;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      int num = (int)(yyvsp[(3) - (9)].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(FindSurface(num)){
	yymsg(0, "Surface %d already exists", num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      else{
	Surface *s = Create_Surface(num, MSH_SURF_DISCRETE);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Tree_Add(GModel::current()->getGEOInternals()->Surfaces, &s);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	extr.mesh.Holes[num].first = (yyvsp[(8) - (9)].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	extr.mesh.Holes[num].second.clear();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = 0; i < List_Nbr((yyvsp[(6) - (9)].l)); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  double d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Read((yyvsp[(6) - (9)].l), i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  extr.mesh.Holes[num].second.push_back((int)d);
	}
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(6) - (9)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Read((yyvsp[(3) - (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
	  c->nbPointsTransfinite = ((yyvsp[(5) - (6)].d) > 2) ? (int)(yyvsp[(5) - (6)].d) : 2;
	  c->typeTransfinite = sign(d);
	  c->coeffTransfinite = 1.0;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (6)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < List_Nbr((yyvsp[(3) - (9)].l)); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Read((yyvsp[(3) - (9)].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
	  c->nbPointsTransfinite = ((yyvsp[(5) - (9)].d) > 2) ? (int)(yyvsp[(5) - (9)].d) : 2;
	  c->typeTransfinite = sign(d); // Progresion : code 1 ou -1
	  c->coeffTransfinite = fabs((yyvsp[(8) - (9)].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (9)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < List_Nbr((yyvsp[(3) - (9)].l)); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Read((yyvsp[(3) - (9)].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
	  c->nbPointsTransfinite = ((yyvsp[(5) - (9)].d) > 2) ? (int)(yyvsp[(5) - (9)].d) : 2;
	  c->typeTransfinite = 2 * sign(d); // Bump : code 2 ou -2
	  c->coeffTransfinite = fabs((yyvsp[(8) - (9)].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (9)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      Surface *s = FindSurface((int)(yyvsp[(4) - (8)].d));
	yymsg(1, "Unknown surface %d", (int)(yyvsp[(4) - (8)].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	s->Recombine_Dir = -1;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int k = List_Nbr((yyvsp[(7) - (8)].l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	if(k != 3 && k != 4){
	  yymsg(0, "Wrong definition of Transfinite Surface %d: "
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		"%d points instead of 3 or 4" , (int)(yyvsp[(4) - (8)].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;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    List_Read((yyvsp[(7) - (8)].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
	    else
	      List_Add(s->TrsfPoints, &v);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(7) - (8)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      Surface *s = FindSurface((int)(yyvsp[(4) - (9)].d));
	yymsg(1, "Unknown surface %d", (int)(yyvsp[(4) - (9)].d));
      else{
	s->Method = TRANSFINI;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int k = List_Nbr((yyvsp[(7) - (9)].l));
	if(k != 3 && k != 4){
	  yymsg(0, "Wrong definition of Transfinite Surface %d: "
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		"%d points instead of 3 or 4" , (int)(yyvsp[(4) - (9)].d), k);
	}
	else{
	  List_Reset(s->TrsfPoints);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  if (!strcmp((yyvsp[(8) - (9)].c), "Right"))
	    s->Recombine_Dir = 1;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  else if (!strcmp((yyvsp[(8) - (9)].c), "Left"))
	    s->Recombine_Dir = -1;
	  else
	    s->Recombine_Dir = 0;
	  for(int i = 0; i < k; i++){
	    double d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    List_Read((yyvsp[(7) - (9)].l), i, &d);
	    int j = (int)fabs(d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    Vertex *v = FindPoint(j);
	    else
	      List_Add(s->TrsfPoints, &v);
	  }
	}
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(7) - (9)].l));
      Free((yyvsp[(8) - (9)].c));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(7) - (8)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      Volume *v = FindVolume((int)(yyvsp[(4) - (8)].d));
	yymsg(1, "Unknown volume %d", (int)(yyvsp[(4) - (8)].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	int k = List_Nbr((yyvsp[(7) - (8)].l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	if(k != 6 && k != 8)
	  yymsg(0, "Wrong definition of Transfinite Volume %d: "
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		"%d points instead of 6 or 8" , (int)(yyvsp[(4) - (8)].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;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    List_Read((yyvsp[(7) - (8)].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
	    else
	      List_Add(v->TrsfPoints, &vert);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(7) - (8)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	double d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Read((yyvsp[(3) - (6)].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[(5) - (6)].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (6)].l));
    ;}
    break;

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
	double d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Read((yyvsp[(3) - (4)].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);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete((yyvsp[(3) - (4)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
	double d;
	List_Read((yyvsp[(3) - (6)].l), i, &d);
	int j = (int)d;
	Surface *s = FindSurface(j);
	if(s) s->TransfiniteSmoothing = (yyvsp[(5) - (6)].d);
      }
      List_Delete((yyvsp[(3) - (6)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { 
      Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	setSurfaceEmbeddedPoints(s, (yyvsp[(3) - (10)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
      Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	setSurfaceEmbeddedCurves(s, (yyvsp[(3) - (10)].l));
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    {
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (1)].d);           ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(2) - (3)].d);           ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = -(yyvsp[(2) - (2)].d);          ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(2) - (2)].d);           ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = !(yyvsp[(2) - (2)].d);          ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d);      ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d);      ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d);      ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { 
      if(!(yyvsp[(3) - (3)].d))
	yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	(yyval.d) = (yyvsp[(1) - (3)].d) / (yyvsp[(3) - (3)].d);     
    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d);  ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));  ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d);      ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d);      ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d);     ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d);     ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d);     ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d);     ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d);     ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d);     ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = (yyvsp[(1) - (5)].d)? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d);  ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = exp((yyvsp[(3) - (4)].d));      ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = log((yyvsp[(3) - (4)].d));      ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = log10((yyvsp[(3) - (4)].d));    ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = sqrt((yyvsp[(3) - (4)].d));     ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = sin((yyvsp[(3) - (4)].d));      ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = asin((yyvsp[(3) - (4)].d));     ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = cos((yyvsp[(3) - (4)].d));      ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = acos((yyvsp[(3) - (4)].d));     ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = tan((yyvsp[(3) - (4)].d));      ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = atan((yyvsp[(3) - (4)].d));     ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = sinh((yyvsp[(3) - (4)].d));     ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = cosh((yyvsp[(3) - (4)].d));     ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = tanh((yyvsp[(3) - (4)].d));     ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = fabs((yyvsp[(3) - (4)].d));     ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = floor((yyvsp[(3) - (4)].d));    ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = ceil((yyvsp[(3) - (4)].d));     ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
    break;

Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;