Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 410 KiB
Newer Older
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2319 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
	double d;
	List_Read(yyvsp[-2].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	TheShape.Num = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Curve *c = FindCurve(TheShape.Num, THEM);
	if(!c)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(WARNING, "Unknown curve %d", TheShape.Num);
	else{
	  TheShape.Type = c->Typ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 278:
#line 2335 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
	double d;
	List_Read(yyvsp[-2].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
	TheShape.Num = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Surface *s = FindSurface(TheShape.Num, THEM);
	if(!s)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(WARNING, "Unknown surface %d", TheShape.Num);
	else{
	  TheShape.Type = s->Typ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 279:
#line 2351 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
	double d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Read(yyvsp[-2].l, i, &d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Num = (int)d;
	Volume *v = FindVolume(TheShape.Num, THEM);
	if(!v)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  yymsg(WARNING, "Unknown volume %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	else{
	  TheShape.Type = v->Typ;
	  List_Add(yyval.l, &TheShape);
	}
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 280:
#line 2372 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(3, 3, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
	Shape TheShape;
	List_Read(yyvsp[-1].l, i, &TheShape);
	int j;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CopyShape(TheShape.Type, TheShape.Num, &j);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 281:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2386 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free(yyvsp[-4].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = NULL;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 282:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2392 "Gmsh.y"
{
      if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
      Free(yyvsp[-4].c);
      yyval.l = NULL;
    ;
    break;}
case 283:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 2398 "Gmsh.y"
{
      if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 1);
      Free(yyvsp[-4].c);
      yyval.l = NULL;
    ;
    break;}
case 284:
#line 2410 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
	Shape TheShape;
	List_Read(yyvsp[-1].l, i, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	DeleteShape(TheShape.Type, TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 285:
#line 2419 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp(yyvsp[-4].c, "View")){
	RemoveViewByIndex((int)yyvsp[-2].d);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else{
	yymsg(GERROR, "Unknown command 'Delete %s'", yyvsp[-4].c);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free(yyvsp[-4].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 286:
#line 2429 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp(yyvsp[-1].c, "Meshes") || !strcmp(yyvsp[-1].c, "All")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Init_Mesh(THEM);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
      else{
	yymsg(GERROR, "Unknown command 'Delete %s'", yyvsp[-1].c);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free(yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 287:
#line 2439 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(!strcmp(yyvsp[-2].c, "Empty") && !strcmp(yyvsp[-1].c, "Views")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = List_Nbr(CTX.post.list) - 1; i >= 0; i--){
	  Post_View *v = *(Post_View **) List_Pointer(CTX.post.list, i);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  if(v->empty())
	    RemoveViewByIndex(i);
	}
      }
      else{
	yymsg(GERROR, "Unknown command 'Delete %s %s'", yyvsp[-2].c, yyvsp[-1].c);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free(yyvsp[-2].c); Free(yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 288:
#line 2458 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
	Shape TheShape;
	List_Read(yyvsp[-1].l, i, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	ColorShape(TheShape.Type, TheShape.Num, yyvsp[-3].u);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete(yyvsp[-1].l);      
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 289:
#line 2472 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      int m = (CTX.visibility_mode == 2) ? VIS_MESH : 
	((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 2; i < 6; i++)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	SetVisibilityByNumber(yyvsp[-1].c, i, m);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free(yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 290:
#line 2480 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 2; i < 6; i++)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	SetVisibilityByNumber(yyvsp[-1].c, i, 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free(yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 291:
#line 2486 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      int m = (CTX.visibility_mode == 2) ? VIS_MESH :
	((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
	Shape TheShape;
	List_Read(yyvsp[-1].l, i, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	VisibilityShape(TheShape.Type, TheShape.Num, m);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 292:
#line 2497 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
	Shape TheShape;
	List_Read(yyvsp[-1].l, i, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	VisibilityShape(TheShape.Type, TheShape.Num, 0);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Delete(yyvsp[-1].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 293:
#line 2511 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(!strcmp(yyvsp[-2].c, "Include")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	char tmpstring[1024];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	FixRelativePath(yyvsp[-1].c, tmpstring);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	// Warning: we *don't* close included files (to allow user
	// functions in these files). If you need to include many many
	// files and don't have functions in the files, use "Merge"
	// instead: some OSes limit the number of files a process can
	// open simultaneously. The right solution would be of course
	// to modify FunctionManager to reopen the files instead of
	// using the FILE pointer, but hey, I'm lazy...
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	ParseFile(tmpstring, 0, 0, 1);
      else if(!strcmp(yyvsp[-2].c, "Print")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#if defined(HAVE_FLTK)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	if(!CTX.batch){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  char tmpstring[1024];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  FixRelativePath(yyvsp[-1].c, tmpstring);
	  CreateOutputFile(tmpstring, CTX.print.format);
	}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#endif
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      }
      else if(!strcmp(yyvsp[-2].c, "Save")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#if defined(HAVE_FLTK)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	char tmpstring[1024];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	FixRelativePath(yyvsp[-1].c, tmpstring);
	CreateOutputFile(tmpstring, CTX.mesh.format);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#endif
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp(yyvsp[-2].c, "Merge") || !strcmp(yyvsp[-2].c, "MergeWithBoundingBox")){
	// MergeWithBoundingBox is deprecated
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	char tmpstring[1024];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	FixRelativePath(yyvsp[-1].c, tmpstring);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	MergeProblem(tmpstring, 1);
      else if(!strcmp(yyvsp[-2].c, "System")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else{
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free(yyvsp[-2].c); Free(yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 294:
#line 2555 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp(yyvsp[-6].c, "Save") && !strcmp(yyvsp[-5].c, "View")){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-3].d);
	if(vv){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  char tmpstring[1024];
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  FixRelativePath(yyvsp[-1].c, tmpstring);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  WriteView(*vv, tmpstring, CTX.post.file_format, 0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	}
      }
      else{
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-6].c);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 295:
#line 2570 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(!strcmp(yyvsp[-2].c, "Sleep")){
	long sleep_time = GetTime();
	while(1){
	  if(GetTime() - sleep_time > (long)(yyvsp[-1].d*1.e6)) break;
	}
      }
      else if(!strcmp(yyvsp[-2].c, "Mesh")){
	yymsg(GERROR, "Mesh directives are not (yet) allowed in scripts");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else{
	yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free(yyvsp[-2].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 296:
#line 2586 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
       try {
	 GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0);
       }
       catch(...) {
	 yymsg(GERROR, "Unknown action '%s' or plugin '%s'", yyvsp[-1].c, yyvsp[-4].c);
       }
       Free(yyvsp[-4].c); Free(yyvsp[-1].c);
     ;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 297:
#line 2596 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      // for backward compatibility
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!strcmp(yyvsp[-1].c, "Views"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CombineViews(0, 1, CTX.post.combine_remove_orig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else if(!strcmp(yyvsp[-1].c, "TimeSteps"))
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	CombineViews(1, 2, CTX.post.combine_remove_orig);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      else
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	yymsg(GERROR, "Unknown 'Combine' command");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Free(yyvsp[-1].c);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 298:
#line 2607 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      exit(0);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 299:
#line 2611 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      SetBoundingBox();
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 300:
#line 2615 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      SetBoundingBox(yyvsp[-12].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 301:
#line 2619 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#if defined(HAVE_FLTK)
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!CTX.batch) // we're in interactive mode
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Draw();
Christophe Geuzaine's avatar
Christophe Geuzaine committed
#endif
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 302:
#line 2632 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesNameTab[ImbricatedLoop] = NULL;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
	yymsg(GERROR, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS-1;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 303:
#line 2647 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesNameTab[ImbricatedLoop] = NULL;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
	yymsg(GERROR, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS-1;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if((yyvsp[-1].d > 0. && yyvsp[-5].d > yyvsp[-3].d) || (yyvsp[-1].d < 0. && yyvsp[-5].d < yyvsp[-3].d))
	skip_until("For", "EndFor");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 304:
#line 2663 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0;
      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-6].c;
      Symbol TheSymbol;      
      TheSymbol.Name = yyvsp[-6].c;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){
	TheSymbol.val = List_Create(1, 1, sizeof(double));
	List_Put(TheSymbol.val, 0, &yyvsp[-3].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Tree_Add(Symbol_T, &TheSymbol);
      }
      else{
	List_Write(pSymbol->val, 0, &yyvsp[-3].d);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
	yymsg(GERROR, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS-1;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 305:
#line 2689 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d;
      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-8].c;
      Symbol TheSymbol;
      TheSymbol.Name = yyvsp[-8].c;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Symbol *pSymbol;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){
	TheSymbol.val = List_Create(1, 1, sizeof(double));
	List_Put(TheSymbol.val, 0, &yyvsp[-5].d);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	Tree_Add(Symbol_T, &TheSymbol);
      }
      else{
	List_Write(pSymbol->val, 0, &yyvsp[-5].d);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]);
      yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno;
      ImbricatedLoop++;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop > MAX_RECUR_LOOPS-1){
	yymsg(GERROR, "Reached maximum number of imbricated loops");
	ImbricatedLoop = MAX_RECUR_LOOPS-1;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if((yyvsp[-1].d > 0. && yyvsp[-5].d > yyvsp[-3].d) || (yyvsp[-1].d < 0. && yyvsp[-5].d < yyvsp[-3].d))
	skip_until("For", "EndFor");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 306:
#line 2716 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ImbricatedLoop <= 0){
	yymsg(GERROR, "Invalid For/EndFor loop");
	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)))
	      yymsg(GERROR, "Unknown loop variable");
	    else
	      *(double*)List_Pointer_Fast(pSymbol->val, 0) += 
		LoopControlVariablesTab[ImbricatedLoop-1][2];
	  }
	  fsetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
	  yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1];
	}
	else{
	  ImbricatedLoop--;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 307:
#line 2748 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!FunctionManager::Instance()->createFunction(yyvsp[0].c, yyin, yyname, yylineno))
	yymsg(GERROR, "Redefinition of function %s", yyvsp[0].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
case 308:
#line 2755 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno))
	yymsg(GERROR, "Error while exiting function");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 309:
#line 2760 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c, &yyin, yyname, yylineno))
	yymsg(GERROR, "Unknown function %s", yyvsp[-1].c);
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
case 310:
#line 2766 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      if(!yyvsp[-1].d) skip_until("If", "EndIf");
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 311:
#line 2770 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 312:
#line 2781 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
					  0., 0., 0., 0., 0., 0., 0.,
					  &pc, &prc, 1, NULL);
      TheShape.Type = MSH_POINT;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pc){
	TheShape.Num = pc->Num;
	TheShape.Type = pc->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 313:
#line 2797 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
					  yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
					  &pc, &prc, 1, NULL);
      TheShape.Type = MSH_POINT;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pc){
	TheShape.Num = pc->Num;
	TheShape.Type = pc->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 314:
#line 2813 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2],
					  yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
					  &pc, &prc, 1, NULL);
      TheShape.Type = MSH_POINT;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pc){
	TheShape.Num = pc->Num;
	TheShape.Type = pc->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 315:
#line 2829 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 316:
#line 2834 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
					  0., 0., 0., 0., 0., 0., 0.,
					  &pc, &prc, 1, &extr);
      TheShape.Type = MSH_POINT;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pc){
	TheShape.Num = pc->Num;
	TheShape.Type = pc->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 317:
#line 2850 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 318:
#line 2855 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
					  yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
					  &pc, &prc, 1, &extr);
      TheShape.Type = MSH_POINT;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pc){
	TheShape.Num = pc->Num;
	TheShape.Type = pc->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 319:
#line 2871 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 320:
#line 2876 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Curve *pc, *prc;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
					  yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
					  &pc, &prc, 1, &extr);
      TheShape.Type = MSH_POINT;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pc){
	TheShape.Num = pc->Num;
	TheShape.Type = pc->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 321:
#line 2894 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *ps;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
					  0., 0., 0., 0., 0., 0., 0., 
					  &ps, 1, NULL);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ps){
	TheShape.Num = ps->Num;
	TheShape.Type = ps->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 322:
#line 2917 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *ps;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
					  yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, 
					  &ps, 1, NULL);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ps){
	TheShape.Num = ps->Num;
	TheShape.Type = ps->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 323:
#line 2940 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *ps;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2],
					  yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, 
					  &ps, 1, NULL);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ps){
	TheShape.Num = ps->Num;
	TheShape.Type = ps->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 324:
#line 2963 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 325:
#line 2968 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *ps;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
					  0., 0., 0., 0., 0., 0., 0., 
					  &ps, 1, &extr);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ps){
	TheShape.Num = ps->Num;
	TheShape.Type = ps->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 326:
#line 2991 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 327:
#line 2996 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *ps;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
					  yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, 
					  &ps, 1, &extr);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ps){
	TheShape.Num = ps->Num;
	TheShape.Type = ps->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 328:
#line 3019 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 329:
#line 3024 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *ps;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
					  yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, 
					  &ps, 1, &extr);
      Curve *c = FindCurve(TheShape.Num, THEM);
      if(!c){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown curve %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = c->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(ps){
	TheShape.Num = ps->Num;
	TheShape.Type = ps->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 330:
#line 3050 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Volume *pv;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2],
					    0., 0., 0., 0., 0., 0., 0., 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
					    &pv, NULL);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pv){
	TheShape.Num = pv->Num;
	TheShape.Type = pv->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 331:
#line 3073 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Volume *pv;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-8].d, 0., 0., 0.,
					    yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
					    &pv, NULL);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pv){
	TheShape.Num = pv->Num;
	TheShape.Type = pv->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 332:
#line 3096 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Volume *pv;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2],
					    yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d,
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
					    &pv, NULL);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pv){
	TheShape.Num = pv->Num;
	TheShape.Type = pv->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 333:
#line 3119 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 334:
#line 3124 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Volume *pv;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2],
					    0., 0., 0., 0., 0., 0., 0., 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
					    &pv, &extr);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pv){
	TheShape.Num = pv->Num;
	TheShape.Type = pv->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 335:
#line 3147 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 336:
#line 3153 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Volume *pv;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-12].d, 0., 0., 0.,
					    yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, 
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
					    &pv, &extr);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pv){
	TheShape.Num = pv->Num;
	TheShape.Type = pv->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 337:
#line 3176 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      extr.mesh.ExtrudeMesh = false;
      extr.mesh.Recombine = false;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 338:
#line 3182 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Volume *pv;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Shape TheShape;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2],
					    yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d,
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
					    &pv, &extr);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      Surface *s = FindSurface(TheShape.Num, THEM);
      if(!s){
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	//yymsg(WARNING, "Unknown surface %d", TheShape.Num);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	TheShape.Type = 0;
      }
      else{
	TheShape.Type = s->Typ;
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      yyval.l = List_Create(2, 1, sizeof(Shape));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      List_Add(yyval.l, &TheShape);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
      if(pv){
	TheShape.Num = pv->Num;
	TheShape.Type = pv->Typ;
	List_Add(yyval.l, &TheShape);
      }
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 339:
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
#line 3208 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 340:
#line 3211 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
    ;
    break;}
case 341:
#line 3217 "Gmsh.y"
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
{
      double d;
      extr.mesh.ExtrudeMesh = true;
      extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l);
      if(List_Nbr(yyvsp[-6].l) == List_Nbr(yyvsp[-4].l) && List_Nbr(yyvsp[-6].l) == List_Nbr(yyvsp[-2].l)){
	extr.mesh.NbElmLayer = (int*)Malloc(extr.mesh.NbLayer*sizeof(int));
	extr.mesh.ZonLayer = (int*)Malloc(extr.mesh.NbLayer*sizeof(int));
	extr.mesh.hLayer = (double*)Malloc(extr.mesh.NbLayer*sizeof(double));
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
	  List_Read(yyvsp[-6].l, i, &d);
	  extr.mesh.NbElmLayer[i] = (d>0)?(int)d:1;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Read(yyvsp[-4].l, i, &d);
	  extr.mesh.ZonLayer[i] = (int)d;
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
	  List_Read(yyvsp[-2].l, i, &d);
	  extr.mesh.hLayer[i] = d;
	}
      }
      else{
	yymsg(GERROR, "Wrong layer definition {%d, %d, %d}", 
	      List_Nbr(yyvsp[-6].l), List_Nbr(yyvsp[-4].l), List_Nbr(yyvsp[-2].l));
      List_Delete(yyvsp[-6].l);
      List_Delete(yyvsp[-4].l);
      List_Delete(yyvsp[-2].l);
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
    ;
    break;}
Christophe Geuzaine's avatar
 
Christophe Geuzaine committed
case 342: