Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 400 KiB
Newer Older
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 354:
#line 3283 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d - yyvsp[0].d;      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 355:
#line 3284 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d + yyvsp[0].d;      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 356:
#line 3285 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d * yyvsp[0].d;      ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 357:
#line 3287 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ 
      if(!yyvsp[0].d)
	yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
      else
	yyval.d = yyvsp[-2].d / yyvsp[0].d;     
    ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 358:
#line 3293 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d;  ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 359:
#line 3294 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = pow(yyvsp[-2].d, yyvsp[0].d);  ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 360:
#line 3295 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d < yyvsp[0].d;      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 361:
#line 3296 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d > yyvsp[0].d;      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 362:
#line 3297 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d <= yyvsp[0].d;     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 363:
#line 3298 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d >= yyvsp[0].d;     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 364:
#line 3299 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d == yyvsp[0].d;     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 365:
#line 3300 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d != yyvsp[0].d;     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 366:
#line 3301 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d && yyvsp[0].d;     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 367:
#line 3302 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-2].d || yyvsp[0].d;     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 368:
#line 3303 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d;  ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 369:
#line 3304 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = exp(yyvsp[-1].d);      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 370:
#line 3305 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = log(yyvsp[-1].d);      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 371:
#line 3306 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = log10(yyvsp[-1].d);    ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 372:
#line 3307 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = sqrt(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 373:
#line 3308 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = sin(yyvsp[-1].d);      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 374:
#line 3309 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = asin(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 375:
#line 3310 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = cos(yyvsp[-1].d);      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 376:
#line 3311 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = acos(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 377:
#line 3312 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = tan(yyvsp[-1].d);      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 378:
#line 3313 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = atan(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 379:
#line 3314 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 380:
#line 3315 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = sinh(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 381:
#line 3316 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = cosh(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 382:
#line 3317 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = tanh(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 383:
#line 3318 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = fabs(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 384:
#line 3319 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = floor(yyvsp[-1].d);    ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 385:
#line 3320 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = ceil(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 386:
#line 3321 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 387:
#line 3322 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 388:
#line 3323 "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;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 389:
#line 3324 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 390:
#line 3326 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = exp(yyvsp[-1].d);      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 391:
#line 3327 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = log(yyvsp[-1].d);      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 392:
#line 3328 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = log10(yyvsp[-1].d);    ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 393:
#line 3329 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = sqrt(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 394:
#line 3330 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = sin(yyvsp[-1].d);      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 395:
#line 3331 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = asin(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 396:
#line 3332 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = cos(yyvsp[-1].d);      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 397:
#line 3333 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = acos(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 398:
#line 3334 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = tan(yyvsp[-1].d);      ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 399:
#line 3335 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = atan(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 400:
#line 3336 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 401:
#line 3337 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = sinh(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 402:
#line 3338 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = cosh(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 403:
#line 3339 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = tanh(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 404:
#line 3340 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = fabs(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 405:
#line 3341 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = floor(yyvsp[-1].d);    ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 406:
#line 3342 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = ceil(yyvsp[-1].d);     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 407:
#line 3343 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 408:
#line 3344 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 409:
#line 3345 "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;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 410:
#line 3346 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 411:
#line 3355 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = yyvsp[0].d; ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 412:
#line 3356 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = 3.141592653589793; ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 413:
#line 3357 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = ParUtil::Instance()->rank(); ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 414:
#line 3358 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ yyval.d = ParUtil::Instance()->size(); ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 415:
#line 3363 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[0].c;
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[0].c);
	yyval.d = 0.;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 416:
#line 3375 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-3].c;
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	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)))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yyval.d = *pd;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-3].c, (int)yyvsp[-1].d);
	  yyval.d = 0.;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 417:
#line 3394 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-2].c;
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	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);
      }
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 418:
#line 3407 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-1].c;
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[-1].c);
	yyval.d = 0.;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 419:
#line 3419 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-4].c;
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	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)))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yyval.d = (*pd += yyvsp[0].i);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-4].c, (int)yyvsp[-2].d);
	  yyval.d = 0.;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 420:
#line 3441 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
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);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	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);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yyval.d = 0.;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 421:
#line 3458 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
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);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	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);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yyval.d = 0.;
	else
	  yyval.d = pNumOpt((int)yyvsp[-3].d, GMSH_GET, 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 422:
#line 3475 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
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);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	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);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yyval.d = 0.;
	else
	  yyval.d = pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+yyvsp[0].i);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 423:
#line 3492 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
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);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	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);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yyval.d = 0.;
	else
	  yyval.d = pNumOpt((int)yyvsp[-4].d, GMSH_SET|GMSH_GUI, pNumOpt((int)yyvsp[-4].d, GMSH_GET, 0)+yyvsp[0].i);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 424:
#line 3512 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 425:
#line 3516 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < 5; i++) yyval.v[i] = -yyvsp[0].v[i];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 426:
#line 3520 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[0].v[i];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 427:
#line 3524 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 428:
#line 3528 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 429:
#line 3535 "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;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 430:
#line 3539 "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;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 431:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 3543 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
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;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 432:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 3547 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
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;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 433:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 3554 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 434:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 3557 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 435:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 3563 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
    ;
    break;}
case 436:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 3566 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 437:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 3572 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 438:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 3575 "Gmsh.y"
{
       yyval.l = yyvsp[-1].l;
    ;
    break;}
case 439:
#line 3579 "Gmsh.y"
{
       yyval.l = yyvsp[-1].l;
    ;
    break;}
case 440:
#line 3586 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(List_T*));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &(yyvsp[0].l));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 441:
#line 3591 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      List_Add(yyval.l, &(yyvsp[0].l));
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 442:
#line 3599 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      yyval.l = List_Create(2, 1, sizeof(double));
      List_Add(yyval.l, &(yyvsp[0].d));
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 443:
#line 3604 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      yyval.l = yyvsp[0].l;
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 444:
#line 3608 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      yyval.l = yyvsp[-1].l;
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 445:
#line 3612 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = yyvsp[-1].l;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      double *pd;
      for(int i = 0; i < List_Nbr(yyval.l); i++){
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	pd = (double*)List_Pointer(yyval.l, i);
	(*pd) = - (*pd);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 446:
#line 3624 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(double)); 
      for(double 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(yyval.l, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 447:
#line 3630 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.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)){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
        yymsg(GERROR, "Wrong increment in '%g:%g:%g'", yyvsp[-4].d, yyvsp[-2].d, yyvsp[0].d);
	List_Add(yyval.l, &(yyvsp[-4].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(double d = yyvsp[-4].d; (yyvsp[0].d > 0) ? (d <= yyvsp[-2].d) : (d >= yyvsp[-2].d); d += yyvsp[0].d)
	  List_Add(yyval.l, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
   ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 448:
#line 3641 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      // Returns the coordinates of a point and fills a list with it.
      // This allows to ensure e.g. that relative point positions are
      // always conserved
      Vertex *v = FindPoint((int)yyvsp[-1].d, THEM);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(3, 1, sizeof(double));      
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!v) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(GERROR, "Unknown point '%d'", (int) yyvsp[-1].d);
	double d = 0.0;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Add(yyval.l, &d);
	List_Add(yyval.l, &d);
	List_Add(yyval.l, &d);
      }
      else{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Add(yyval.l, &v->Pos.X);
	List_Add(yyval.l, &v->Pos.Y);
	List_Add(yyval.l, &v->Pos.Z);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 449:
#line 3661 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
	Shape *s = (Shape*) List_Pointer(yyvsp[0].l, i);
	double d = s->Num;
	List_Add(yyval.l, &d);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete(yyvsp[0].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 450:
#line 3671 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
	Shape *s = (Shape*) List_Pointer(yyvsp[0].l, i);
	double d = s->Num;
	List_Add(yyval.l, &d);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete(yyvsp[0].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 451:
#line 3681 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      // FIXME: The syntax for this is ugly: we get double semi-colons
      // at the end of the line
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
	Shape *s = (Shape*) List_Pointer(yyvsp[0].l, i);
	double d = s->Num;
	List_Add(yyval.l, &d);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete(yyvsp[0].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 452:
#line 3693 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(double));
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-2].c;
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[-2].c);
	double d = 0.0;
	List_Add(yyval.l, &d);
      }
      else{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = 0; i < List_Nbr(pSymbol->val); i++)
	  List_Add(yyval.l, (double*)List_Pointer_Fast(pSymbol->val, i));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 453:
#line 3709 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(double));
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-2].c;
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[-2].c);
	double d = 0.0;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	List_Add(yyval.l, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = 0; i < List_Nbr(pSymbol->val); i++){
	  double d = - *(double*)List_Pointer_Fast(pSymbol->val, i);
	  List_Add(yyval.l, &d);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 454:
#line 3727 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(double));
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-5].c;
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[-5].c);
	double d = 0.0;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	List_Add(yyval.l, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
	  int j = (int)(*(double*)List_Pointer_Fast(yyvsp[-2].l, i));
	  double *pd;
	  if((pd = (double*)List_Pointer_Test(pSymbol->val, j)))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    List_Add(yyval.l, pd);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-5].c, j);	  
      List_Delete(yyvsp[-2].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 455:
#line 3750 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(double));
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-5].c;
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) {
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(GERROR, "Unknown variable '%s'", yyvsp[-5].c);
	double d = 0.0;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	List_Add(yyval.l, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
	  int j = (int)(*(double*)List_Pointer_Fast(yyvsp[-2].l, i));
	  double *pd;
	  if((pd = (double*)List_Pointer_Test(pSymbol->val, j))){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    double d = - *pd;
	    List_Add(yyval.l, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	    yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-5].c, j);	  
	}
      }
      List_Delete(yyvsp[-2].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 456:
#line 3778 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(double));
      List_Add(yyval.l, &(yyvsp[0].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 457:
#line 3783 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = yyvsp[0].l;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 458:
#line 3787 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &(yyvsp[0].d));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 459:
#line 3791 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
	double d;
	List_Read(yyvsp[0].l, i, &d);
	List_Add(yyval.l, &d);
      List_Delete(yyvsp[0].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 460:
#line 3804 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d);
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 461:
#line 3808 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 462:
#line 3820 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      int flag;
      yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag);
      if(flag) yymsg(GERROR, "Unknown color '%s'", yyvsp[0].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 463:
#line 3826 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      unsigned int (*pColOpt)(int num, int action, unsigned int value);
      StringXColor *pColCat;
      if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){
	yymsg(GERROR, "Unknown color option class '%s'", yyvsp[-4].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yyval.u = 0;
	if(!(pColOpt =  (unsigned int (*) (int, int, unsigned int))Get_ColorOption(yyvsp[0].c, pColCat))){
	  yymsg(GERROR, "Unknown color option '%s.Color.%s'", yyvsp[-4].c, yyvsp[0].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yyval.u = 0;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yyval.u = pColOpt(0, GMSH_GET, 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 464:
#line 3847 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      yyval.l = yyvsp[-1].l;
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 465:
#line 3851 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(256, 10, sizeof(unsigned int));
      GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d);
	yymsg(GERROR, "View[%d] does not exist", (int)yyvsp[-3].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = 0; i < ct->size; i++) 
	  List_Add(yyval.l, &ct->table[i]);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 466:
#line 3865 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(256, 10, sizeof(unsigned int));
      List_Add(yyval.l, &(yyvsp[0].u));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 467:
#line 3870 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &(yyvsp[0].u));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 468:
#line 3877 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      yyval.c = yyvsp[0].c;
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 469:
#line 3881 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char));
      strcpy(yyval.c, yyvsp[-3].c);  
      strcat(yyval.c, yyvsp[-1].c);
      Free(yyvsp[-3].c);
      Free(yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 470:
#line 3889 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char));
      int i;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(i = strlen(yyvsp[-1].c)-1; i >= 0; i--){
	if(yyvsp[-1].c[i] == '.'){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  strncpy(yyval.c, yyvsp[-1].c, i);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(i <= 0) strcpy(yyval.c, yyvsp[-1].c);
      Free(yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 471:
#line 3903 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      yyval.c = yyvsp[-1].c;
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 472:
#line 3907 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      char tmpstring[1024];
      int i = PrintListOfDouble(yyvsp[-3].c, yyvsp[-1].l, tmpstring);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(i < 0){
	yymsg(GERROR, "Too few arguments in Sprintf");
	yyval.c = yyvsp[-3].c;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(i > 0){
	yymsg(GERROR, "%d extra argument%s in Sprintf", i, (i>1)?"s":"");
	yyval.c = yyvsp[-3].c;
      }
      else{
	yyval.c = (char*)Malloc((strlen(tmpstring)+1)*sizeof(char));
	strcpy(yyval.c, tmpstring);
	Free(yyvsp[-3].c);
      List_Delete(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 473:
#line 3926 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      char* (*pStrOpt)(int num, int action, char *value);
      StringXString *pStrCat;
      if(!(pStrCat = Get_StringOptionCategory(yyvsp[-3].c)))
	yymsg(GERROR, "Unknown string option class '%s'", yyvsp[-3].c);
      else{
	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption(yyvsp[-1].c, pStrCat)))
	  yymsg(GERROR, "Unknown string option '%s.%s'", yyvsp[-3].c, yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  char *str = pStrOpt(0, GMSH_GET, NULL);
	  yyval.c = (char*)Malloc((strlen(str)+1)*sizeof(char));
	  strcpy(yyval.c, str);
	}
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 474:
#line 3942 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{ 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      char* (*pStrOpt)(int num, int action, char *value);
      StringXString *pStrCat;
      if(!(pStrCat = Get_StringOptionCategory(yyvsp[-6].c)))
	yymsg(GERROR, "Unknown string option class '%s'", yyvsp[-6].c);
      else{
	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption(yyvsp[-1].c, pStrCat)))
	  yymsg(GERROR, "Unknown string option '%s[%d].%s'", yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  char *str = pStrOpt((int)yyvsp[-4].d, GMSH_GET, NULL);
	  yyval.c = (char*)Malloc((strlen(str)+1)*sizeof(char));
	  strcpy(yyval.c, str);
	}
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
   /* the action file gets copied in in place of this dollarsign */
#line 543 "/usr/share/bison.simple"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#ifdef YYLSP_NEEDED
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
  yylsp -= yylen;
#endif
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#if YYDEBUG != 0
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      short *ssp1 = yyss - 1;
      fprintf (stderr, "state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (stderr, "\n");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed

#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;
    }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#endif
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
  /* 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.  */
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    yystate = yydefgoto[yyn - YYNTBASE];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
yyerrlab:   /* here on detecting error */
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
  if (! yyerrstatus)
    /* If not already recovering from an error, report this error.  */
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed

#ifdef YYERROR_VERBOSE
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if (yyn > YYFLAG && yyn < YYLAST)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  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)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	      strcpy(msg, "parse error");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	      if (count < 5)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
		  count = 0;
		  for (x = (yyn < 0 ? -yyn : 0);
		       x < (sizeof(yytname) / sizeof(char *)); x++)
		    if (yycheck[x + yyn] == x)