Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 248 KiB
Newer Older
	  c->ipar[0] = (int)yyvsp[-4].d;
	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
	  c->dpar[0] = fabs(yyvsp[-1].d);
#line 1972 "Gmsh.y"
      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
      if(!s)
	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
	s->Method = TRANSFINI;
	k = List_Nbr(yyvsp[-1].l);
	if(k!=3 && k!=4){
	  vyyerror("Wrong Definition of Transfinite Surface %d: "
		   "%d Points Instead of 3 or 4" , yyvsp[-4].d, k) ;
	}
	  for(i=0;i<k;i++){
	    List_Read(yyvsp[-1].l,i,&d);
	    j = (int)fabs(d);
	    s->ipar[i] = j;
#line 1993 "Gmsh.y"
      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
      if(!s)
	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
        s->Method = ELLIPTIC;
        k = List_Nbr(yyvsp[-1].l);
        if(k != 4)
	  vyyerror("Wrong Definition of Elliptic Surface %d: "
		   "%d Points Instead of 4" , yyvsp[-4].d, k) ;
        else{
	  for(i=0;i<k;i++){
	    List_Read(yyvsp[-1].l,i,&d);
	    j = (int)fabs(d);
	    s->ipar[i] = j;
#line 2013 "Gmsh.y"
      Volume *v = FindVolume((int)yyvsp[-4].d,THEM);
      if(!v)
	vyyerror("Unkown Volume %d", (int)yyvsp[-4].d);
	v->Method = TRANSFINI;
	k = List_Nbr(yyvsp[-1].l);
	if(k!=6 && k!=8)
	  vyyerror("Wrong Definition of Transfinite Volume %d: "
		   "%d Points Instead of 6 or 8" , yyvsp[-4].d, k) ;
	  for(i=0;i<k;i++){
	    List_Read(yyvsp[-1].l,i,&d);
	    j = (int)fabs(d);
	    v->ipar[i] = j;
#line 2033 "Gmsh.y"
      Surface *s;
      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
	List_Read(yyvsp[-3].l,i,&d);
	j = (int)d;
	s = FindSurface(j,THEM);
	if(!s){
	  /* Allow generic lists, even if the surfaces don't exist
	     vyyerror("Unkown Surface %d", j); */
	}
	else{
	  s->Recombine = 1;
	  s->RecombineAngle = yyvsp[-1].d;
#line 2050 "Gmsh.y"
      Surface *s;
      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
	List_Read(yyvsp[-1].l,i,&d);
	j = (int)d;
        s = FindSurface(j,THEM);
	if(!s){
	  /* Allow generic lists, even if the surfaces don't exist
	     vyyerror("Unkown Surface %d", j); */
	else{
	  s->Recombine = 1;
	  s->RecombineAngle = 30.;
        }
#line 2075 "Gmsh.y"
#line 2079 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ 
      IntersectAllSegmentsTogether();
    ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 2090 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[0].d; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 2091 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = -yyvsp[0].d; ;
#line 2095 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{yyval.i = 1;;
#line 2096 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{yyval.i = 0;;
#line 2097 "Gmsh.y"
David Colignon's avatar
David Colignon committed
{yyval.i = -1;;
#line 2098 "Gmsh.y"
{yyval.i = -1;;
#line 2099 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{yyval.i = -1;;
#line 2103 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[0].d;           ;
#line 2104 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-1].d ;          ;
#line 2105 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = -yyvsp[0].d ;         ;
#line 2106 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[0].d;           ;
#line 2107 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = !yyvsp[0].d ;         ;
#line 2108 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d - yyvsp[0].d ;     ;
#line 2109 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d + yyvsp[0].d ;     ;
#line 2110 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d * yyvsp[0].d ;     ;
    break;}
#line 2112 "Gmsh.y"
{ 
      if(!yyvsp[0].d)
	vyyerror("Division by Zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
      else
	yyval.d = yyvsp[-2].d / yyvsp[0].d ;     
    ;
#line 2118 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ;  ;
#line 2119 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ;  ;
#line 2120 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d < yyvsp[0].d ;     ;
#line 2121 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d > yyvsp[0].d ;     ;
#line 2122 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d <= yyvsp[0].d ;    ;
#line 2123 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d >= yyvsp[0].d ;    ;
#line 2124 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d == yyvsp[0].d ;    ;
#line 2125 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d != yyvsp[0].d ;    ;
#line 2126 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d && yyvsp[0].d ;    ;
#line 2127 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d || yyvsp[0].d ;    ;
#line 2128 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ;
#line 2129 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = exp(yyvsp[-1].d);      ;
#line 2130 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = log(yyvsp[-1].d);      ;
#line 2131 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = log10(yyvsp[-1].d);    ;
#line 2132 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = sqrt(yyvsp[-1].d);     ;
#line 2133 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = sin(yyvsp[-1].d);      ;
#line 2134 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = asin(yyvsp[-1].d);     ;
#line 2135 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = cos(yyvsp[-1].d);      ;
#line 2136 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = acos(yyvsp[-1].d);     ;
#line 2137 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = tan(yyvsp[-1].d);      ;
#line 2138 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = atan(yyvsp[-1].d);     ;
#line 2139 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
#line 2140 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = sinh(yyvsp[-1].d);     ;
#line 2141 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = cosh(yyvsp[-1].d);     ;
#line 2142 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = tanh(yyvsp[-1].d);     ;
#line 2143 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = fabs(yyvsp[-1].d);     ;
#line 2144 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = floor(yyvsp[-1].d);    ;
#line 2145 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = ceil(yyvsp[-1].d);     ;
#line 2146 "Gmsh.y"
{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
#line 2147 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
#line 2148 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
#line 2149 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
David Colignon's avatar
David Colignon committed
    break;}
#line 2158 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[0].d; ;
    break;}
#line 2159 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = 3.141592653589793; ;
    break;}
#line 2164 "Gmsh.y"
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[0].c) ;
	yyval.d = 0. ;
      }
      else{
	yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0) ;
#line 2176 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-3].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-3].c) ;
	yyval.d = 0. ;
      }
      else{
	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-1].d)))
	  yyval.d = *pd ;
	else{
	  vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-3].c, (int)yyvsp[-1].d) ;
	  yyval.d = 0. ;
	}
      }
#line 2194 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-1].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-1].c) ;
	yyval.d = 0. ;
      }
      else{
	yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += 1.0) ;
      }
#line 2206 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-4].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-4].c) ;
	yyval.d = 0. ;
      }
      else{
	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-2].d)))
	  yyval.d = (*pd += 1.0) ;
	else{
	  vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-4].c, (int)yyvsp[-2].d) ;
	  yyval.d = 0. ;
	}
      }
#line 2224 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-1].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-1].c) ;
	yyval.d = 0. ;
      }
      else{
	yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) -= 1.0) ;
      }
#line 2236 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-4].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-4].c) ;
	yyval.d = 0. ;
      }
      else{
	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-2].d)))
	  yyval.d = (*pd -= 1.0) ;
	else{
	  vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-4].c, (int)yyvsp[-2].d) ;
	  yyval.d = 0. ;
	}
      }
#line 2256 "Gmsh.y"
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){
	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-2].c);
	yyval.d = 0. ;
      }
	if(!(pNumOpt = Get_NumberOption(yyvsp[0].c, pNumCat, &i))){
	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-2].c, yyvsp[0].c);
	  yyval.d = 0. ;
	}
	else{
	  switch(i){
	  case GMSH_DOUBLE : yyval.d = *(double*)pNumOpt ; break ;
	  case GMSH_FLOAT : yyval.d = (double)(*(float*)pNumOpt) ; break ;
	  case GMSH_LONG : yyval.d = (double)(*(long*)pNumOpt) ; break ;
	  case GMSH_INT : yyval.d = (double)(*(int*)pNumOpt) ; break ;
	  }
	}
      }
    ;
    break;}
#line 2277 "Gmsh.y"
      if(strcmp(yyvsp[-7].c, "PostProcessing")){
	vyyerror("Unknown View Option Class '%s'", yyvsp[-7].c);
	yyval.d = 0. ;
      }
      else{
	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-3].d, yyvsp[0].c, &i))){
	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-3].d);
	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
			     yyvsp[-7].c, (int)yyvsp[-3].d, yyvsp[0].c);
	  yyval.d = 0. ;
	}
	else{
	  switch(i){
	  case GMSH_DOUBLE : yyval.d = *(double*)pNumOpt ; break ;
	  case GMSH_FLOAT : yyval.d = (double)(*(float*)pNumOpt) ; break ;
	  case GMSH_LONG : yyval.d = (double)(*(long*)pNumOpt) ; break ;
	  case GMSH_INT : yyval.d = (double)(*(int*)pNumOpt) ; break ;
	  }
	}
      }
    ;
    break;}
#line 2301 "Gmsh.y"
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){
	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-3].c);
	yyval.d = 0. ;
      }
	if(!(pNumOpt = Get_NumberOption(yyvsp[-1].c, pNumCat, &i))){
	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-3].c, yyvsp[-1].c);
	  yyval.d = 0. ;
	}
	else{
	  switch(i){
	  case GMSH_DOUBLE : yyval.d = (*(double*)pNumOpt += 1.) ; break ;
	  case GMSH_FLOAT : yyval.d = (double)(*(float*)pNumOpt += 1.) ; break ;
	  case GMSH_LONG : yyval.d = (double)(*(long*)pNumOpt += 1) ; break ;
	  case GMSH_INT : yyval.d = (double)(*(int*)pNumOpt += 1) ; break ;
	  }
	}
      }
    ;
    break;}
#line 2322 "Gmsh.y"
      if(strcmp(yyvsp[-8].c, "PostProcessing")){
	vyyerror("Unknown View Option Class '%s'", yyvsp[-8].c);
	yyval.d = 0. ;
      }
      else{
	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-4].d, yyvsp[-1].c, &i))){
	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-4].d);
	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
			     yyvsp[-8].c, (int)yyvsp[-4].d, yyvsp[-1].c);
	  yyval.d = 0. ;
	}
	else{
	  switch(i){
	  case GMSH_DOUBLE : yyval.d = (*(double*)pNumOpt += 1.) ; break ;
	  case GMSH_FLOAT : yyval.d = (double)(*(float*)pNumOpt += 1.) ; break ;
	  case GMSH_LONG : yyval.d = (double)(*(long*)pNumOpt += 1) ; break ;
	  case GMSH_INT : yyval.d = (double)(*(int*)pNumOpt += 1) ; break ;
	  }
	}
      }
    ;
    break;}
#line 2346 "Gmsh.y"
      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){
	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-3].c);
	yyval.d = 0. ;
      }
	if(!(pNumOpt = Get_NumberOption(yyvsp[-1].c, pNumCat, &i))){
	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-3].c, yyvsp[-1].c);
	  yyval.d = 0. ;
	}
	else{
	  switch(i){
	  case GMSH_DOUBLE : yyval.d = (*(double*)pNumOpt -= 1.) ; break ;
	  case GMSH_FLOAT : yyval.d = (double)(*(float*)pNumOpt -= 1.) ; break ;
	  case GMSH_LONG : yyval.d = (double)(*(long*)pNumOpt -= 1) ; break ;
	  case GMSH_INT : yyval.d = (double)(*(int*)pNumOpt -= 1) ; break ;
	  }
	}
      }
    ;
    break;}
#line 2367 "Gmsh.y"
      if(strcmp(yyvsp[-8].c, "PostProcessing")){
	vyyerror("Unknown View Option Class '%s'", yyvsp[-8].c);
	yyval.d = 0. ;
      }
      else{
	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-4].d, yyvsp[-1].c, &i))){
	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-4].d);
	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
			     yyvsp[-8].c, (int)yyvsp[-4].d, yyvsp[-1].c);
	  yyval.d = 0. ;
	}
	else{
	  switch(i){
	  case GMSH_DOUBLE : yyval.d = (*(double*)pNumOpt -= 1.) ; break ;
	  case GMSH_FLOAT : yyval.d = (double)(*(float*)pNumOpt -= 1.) ; break ;
	  case GMSH_LONG : yyval.d = (double)(*(long*)pNumOpt -= 1) ; break ;
	  case GMSH_INT : yyval.d = (double)(*(int*)pNumOpt -= 1) ; break ;
	  }
	}
      }
    ;
    break;}
#line 2393 "Gmsh.y"
{ 
      ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; 
      for(d=yyvsp[-2].d ; (yyvsp[-2].d<yyvsp[0].d)?(d<=yyvsp[0].d):(d>=yyvsp[0].d) ; (yyvsp[-2].d<yyvsp[0].d)?(d+=1.):(d-=1.)) 
	List_Add(ListOfDouble2_L, &d) ;
    ;
    break;}
#line 2399 "Gmsh.y"
{
      ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; 
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      if(!yyvsp[0].d || (yyvsp[-4].d<yyvsp[-2].d && yyvsp[0].d<0) || (yyvsp[-4].d>yyvsp[-2].d && yyvsp[0].d>0)){
        vyyerror("Wrong Increment in '%g:%g:%g'", yyvsp[-4].d, yyvsp[-2].d, yyvsp[0].d) ;
	List_Add(ListOfDouble2_L, &(yyvsp[-4].d)) ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	for(d=yyvsp[-4].d ; (yyvsp[0].d>0)?(d<=yyvsp[-2].d):(d>=yyvsp[-2].d) ; d+=yyvsp[0].d)
#line 2413 "Gmsh.y"
      memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ;
      //??? Avec ce qui suit, bison se plante sur DEC
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      //for(i=0 ; i<5 ; i++) $$[i] = $1[i];
#line 2419 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{
      for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ;
#line 2423 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i];
#line 2427 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ 
      for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ;
#line 2431 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{
      for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ;
#line 2437 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      yyval.v[0]=yyvsp[-9].d;  yyval.v[1]=yyvsp[-7].d;  yyval.v[2]=yyvsp[-5].d;  yyval.v[3]=yyvsp[-3].d; yyval.v[4]=yyvsp[-1].d;
#line 2441 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ 
      yyval.v[0]=yyvsp[-7].d;  yyval.v[1]=yyvsp[-5].d;  yyval.v[2]=yyvsp[-3].d;  yyval.v[3]=yyvsp[-1].d; yyval.v[4]=1.0;
#line 2445 "Gmsh.y"
      yyval.v[0]=yyvsp[-5].d;  yyval.v[1]=yyvsp[-3].d;  yyval.v[2]=yyvsp[-1].d;  yyval.v[3]=0.0; yyval.v[4]=1.0;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    ;
    break;}
#line 2449 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      yyval.v[0]=yyvsp[-5].d;  yyval.v[1]=yyvsp[-3].d;  yyval.v[2]=yyvsp[-1].d;  yyval.v[3]=0.0; yyval.v[4]=1.0;
#line 2456 "Gmsh.y"
#line 2459 "Gmsh.y"
#line 2465 "Gmsh.y"
#line 2468 "Gmsh.y"
#line 2474 "Gmsh.y"
#line 2477 "Gmsh.y"
       yyval.l=ListOfListOfDouble_L;
#line 2481 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
       yyval.l=ListOfListOfDouble_L;
#line 2488 "Gmsh.y"
David Colignon's avatar
David Colignon committed
{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ;
      List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ;
David Colignon's avatar
David Colignon committed
    ;
    break;}
#line 2493 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ;
#line 2500 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{
    ;
    break;}
#line 2503 "Gmsh.y"
{
      ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
      List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
      yyval.l=ListOfDouble_L;
    ;
    break;}
#line 2509 "Gmsh.y"
{
      ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
      TheSymbol.Name = yyvsp[-2].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-2].c) ;
	d = 0.0 ;
	List_Add(ListOfDouble_L, &d);
      }
      else{
	for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++)
	  List_Add(ListOfDouble_L, (double*)List_Pointer_Fast(pSymbol->val, i)) ;
      }
      yyval.l=ListOfDouble_L;
    ;
    break;}
#line 2524 "Gmsh.y"
#line 2532 "Gmsh.y"
{
      ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
      List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
    ;
    break;}
#line 2537 "Gmsh.y"
{ 
      ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
      for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){
	List_Read(ListOfDouble2_L, i, &d) ;
	List_Add(ListOfDouble_L, &d) ;
      }
      List_Delete(ListOfDouble2_L);
    ;
    break;}
#line 2546 "Gmsh.y"
{ 
      ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
      TheSymbol.Name = yyvsp[-2].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-2].c) ;
      }
      else{
	for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++)
	  List_Add(ListOfDouble_L, (double*)List_Pointer_Fast(pSymbol->val, i)) ;
      }
    ;
    break;}
#line 2558 "Gmsh.y"
{
      List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
    ;
    break;}
#line 2562 "Gmsh.y"
{
      for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){
	List_Read(ListOfDouble2_L, i, &d) ;
	List_Add(ListOfDouble_L, &d) ;
      }
      List_Delete(ListOfDouble2_L);
    ;
    break;}
#line 2570 "Gmsh.y"
{
      TheSymbol.Name = yyvsp[-2].c ;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
	vyyerror("Unknown Variable '%s'", yyvsp[-2].c) ;
      }
      else{
	for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++)
	  List_Add(ListOfDouble_L, (double*)List_Pointer_Fast(pSymbol->val, i)) ;
      }
    ;
    break;}
#line 2584 "Gmsh.y"
{
      yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d);
    ;
    break;}
#line 2588 "Gmsh.y"
{
      yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255);
    ;
    break;}
#line 2592 "Gmsh.y"
{
      yyval.u = Get_ColorForString(ColorString, (int)yyvsp[-1].d, yyvsp[-3].c, &flag);
      if(flag) vyyerror("Unknown Color '%s'", yyvsp[-3].c);
    ;
    break;}
#line 2597 "Gmsh.y"
{
      yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag);
      if(flag) vyyerror("Unknown Color '%s'", yyvsp[0].c);
    ;
    break;}
#line 2602 "Gmsh.y"
      if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){
	vyyerror("Unknown Color Option Class '%s'", yyvsp[-4].c);
	yyval.u = 0 ;
      }
	if(!(pColOpt = Get_ColorOption(yyvsp[0].c, pColCat))){
	  vyyerror("Unknown Color Option '%s.%s'", yyvsp[-4].c, yyvsp[0].c);
	  yyval.u = 0 ;
	}
	else{
	  yyval.u = *pColOpt ;
	}
      }
    ;
    break;}
#line 2621 "Gmsh.y"
{
      yyval.l = ListOfColor_L;
    ;
    break;}
#line 2625 "Gmsh.y"
{
      if(!ListOfColor_L)
	ListOfColor_L = List_Create(256,10,sizeof(unsigned int)) ;
      else
	List_Reset(ListOfColor_L) ;
      if(strcmp(yyvsp[-7].c, "PostProcessing"))
	vyyerror("Unknown View Option Class '%s'", yyvsp[-7].c);
      else{
	ColorTable *ct = Get_ColorTableViewOption((int)yyvsp[-3].d);
	if(!ct)
	  vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-3].d);
	else{
	  for(i=0 ; i<ct->size ; i++) 
	    List_Add(ListOfColor_L, &ct->table[i]);
	}
      }
      yyval.l = ListOfColor_L;
#line 2647 "Gmsh.y"
{
      if(!ListOfColor_L)
	ListOfColor_L = List_Create(256,10,sizeof(unsigned int)) ;
      else
	List_Reset(ListOfColor_L) ;
      List_Add(ListOfColor_L, &(yyvsp[0].u)) ;
    ;
    break;}
#line 2655 "Gmsh.y"
{
      List_Add(ListOfColor_L, &(yyvsp[0].u)) ;
    ;
    break;}
#line 2662 "Gmsh.y"
{
      yyval.c = yyvsp[0].c;
    ;
    break;}
#line 2666 "Gmsh.y"
{
      yyval.c = yyvsp[-1].c;
    ;
    break;}
#line 2670 "Gmsh.y"
      for(i = 0 ; i<List_Nbr(ListOfDouble_L) ; i++){
	if(!i){
	  str = strtok(yyvsp[-3].c, "%");
	  strcpy(tmpstring, str);
	}
	str = strtok(NULL, "%");
	if(str){
	  strcpy(tmpstring2, "%");
	  strcat(tmpstring2, str);
	  sprintf(tmpstring3, tmpstring2, *(double*)List_Pointer(ListOfDouble_L,i)); 
	  strcat(tmpstring, tmpstring3);
	}
	else{
	  vyyerror("Missing %d Parameter(s) in Sprintf Format",
		   List_Nbr(ListOfDouble_L)-i);
	  break ;
	}
      }
      yyval.c = (char*)Malloc(strlen(tmpstring)+1);
      strcpy(yyval.c, tmpstring);
    ;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */
#line 543 "/usr/lib/bison.simple"

  yyvsp -= yylen;
  yyssp -= yylen;
#ifdef YYLSP_NEEDED
  yylsp -= yylen;
#endif

#if YYDEBUG != 0
  if (yydebug)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (stderr, "\n");
    }
#endif

  *++yyvsp = yyval;

#ifdef YYLSP_NEEDED
  yylsp++;
  if (yylen == 0)
    {
      yylsp->first_line = yylloc.first_line;
      yylsp->first_column = yylloc.first_column;
      yylsp->last_line = (yylsp-1)->last_line;
      yylsp->last_column = (yylsp-1)->last_column;
      yylsp->text = 0;
    }
  else
    {
      yylsp->last_line = (yylsp+yylen-1)->last_line;
      yylsp->last_column = (yylsp+yylen-1)->last_column;
    }
#endif

  /* Now "shift" the result of the reduction.
     Determine what state that goes to,
     based on the state we popped back to
     and the rule number reduced by.  */

  yyn = yyr1[yyn];

  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - YYNTBASE];

  goto yynewstate;

yyerrlab:   /* here on detecting error */

  if (! yyerrstatus)
    /* If not already recovering from an error, report this error.  */
    {
      ++yynerrs;

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

      if (yyn > YYFLAG && yyn < YYLAST)
	{
	  int size = 0;
	  char *msg;
	  int x, count;

	  count = 0;
	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
	  for (x = (yyn < 0 ? -yyn : 0);
	       x < (sizeof(yytname) / sizeof(char *)); x++)
	    if (yycheck[x + yyn] == x)
	      size += strlen(yytname[x]) + 15, count++;
	  msg = (char *) malloc(size + 15);
	  if (msg != 0)
	    {