From 0d7910e1bd0ac9bdb16cd5921e568ee43851bafc Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Sat, 25 Nov 2000 15:27:20 +0000 Subject: [PATCH] *** empty log message *** --- Adapt/Makefile | 1 + Box/Box.cpp | 29 +- Box/Makefile | 1 + Common/Context.cpp | 4 +- Common/Context.h | 54 +- Common/Makefile | 1 + Common/Static.h | 17 +- Common/Views.cpp | 633 +++---- Common/Views.h | 104 +- DataStr/Makefile | 1 + Geo/Makefile | 1 + Geo/Print_Geo.cpp | 28 +- Graphics/Draw.cpp | 44 +- Graphics/Draw.h | 21 +- Graphics/Geom.cpp | 16 +- Graphics/Makefile | 4 +- Graphics/Post.cpp | 51 +- Graphics/PostLine.cpp | 132 -- Graphics/PostPoint.cpp | 86 - Graphics/PostSimplex.cpp | 421 ++++- Graphics/PostTriangle.cpp | 220 --- Makefile | 3 +- Mesh/1D_Mesh.cpp | 90 +- Mesh/2D_DivAndConq.cpp | 4 +- Mesh/2D_Mesh.cpp | 10 +- Mesh/2D_Mesh_Aniso.cpp | 11 +- Mesh/3D_BGMesh.cpp | 43 +- Mesh/3D_Mesh.cpp | 7 +- Mesh/Generator.cpp | 32 +- Mesh/Makefile | 1 + Mesh/Mesh.h | 5 +- Mesh/Print_Mesh.cpp | 28 +- Mesh/Simplex.cpp | 7 +- Mesh/Simplex.h | 7 +- Mesh/Vertex.cpp | 13 +- Mesh/Vertex.h | 6 +- Parser/Gmsh.l | 8 +- Parser/Gmsh.tab.cpp | 3411 ++++++++++++++++++++----------------- Parser/Gmsh.tab.cpp.h | 278 +-- Parser/Gmsh.y | 423 +++-- Parser/Gmsh.yy.cpp | 10 +- Parser/Makefile | 1 + Unix/CbContext.cpp | 45 +- Unix/CbGeneral.cpp | 4 +- Unix/CbGeom.cpp | 6 +- Unix/CbInput.cpp | 28 +- Unix/CbPost.cpp | 82 +- Unix/Help.h | 4 +- Unix/Main.cpp | 56 +- Unix/Makefile | 1 + Unix/Register.cpp | 3 +- Unix/Register.h | 3 +- Unix/Widgets.cpp | 11 +- Unix/Widgets.h | 3 +- Unix/XRessources.h | 4 +- archives/Makefile | 1 + demos/view01.pos | 10 - doc/Makefile | 1 + lib/Makefile | 1 + utils/Makefile | 3 +- utils/addId | 20 + 61 files changed, 3462 insertions(+), 3091 deletions(-) delete mode 100644 Graphics/PostLine.cpp delete mode 100644 Graphics/PostPoint.cpp delete mode 100644 Graphics/PostTriangle.cpp create mode 100644 utils/addId diff --git a/Adapt/Makefile b/Adapt/Makefile index 9841b0972c..4cc763a74d 100644 --- a/Adapt/Makefile +++ b/Adapt/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.4 2000-11-25 15:26:10 geuzaine Exp $ # # Makefile for "libAdapt.a" # diff --git a/Box/Box.cpp b/Box/Box.cpp index 7b979fedd2..c48e133151 100644 --- a/Box/Box.cpp +++ b/Box/Box.cpp @@ -1,4 +1,4 @@ -/* $Id: Box.cpp,v 1.7 2000-11-24 08:11:03 geuzaine Exp $ */ +/* $Id: Box.cpp,v 1.8 2000-11-25 15:26:10 geuzaine Exp $ */ #include <signal.h> @@ -31,14 +31,16 @@ char gmsh_email[] = "E-Mail : " GMSH_EMAIL ; char gmsh_url[] = "URL : " GMSH_URL ; char gmsh_help[] = "Usage: %s [options] [files]\n" + "Geometry options:\n" + " -0 output flattened parsed geometry and exit\n" "Mesh options:\n" - " -0 parse input and exit\n" - " -1, -2, -3 batch 1-, 2- or 3-dimensional mesh\n" - " -smooth int mesh smoothing (default: 3)\n" - " -degree int mesh degree (default: 1)\n" - " -format msh|unv|gref mesh format (default: msh)\n" - " -algo iso|aniso mesh algorithm (default: iso)\n" - " -scale float scaling factor (default: 1.0)\n" + " -1, -2, -3 perform batch 1D, 2D and 3D mesh generation\n" + " -smooth int set mesh smoothing (default: 3)\n" + " -degree int set mesh degree (default: 1)\n" + " -format msh|unv|gref set output mesh format (default: msh)\n" + " -algo iso|aniso select mesh algorithm (default: iso)\n" + " -scale float set global scaling factor (default: 1.0)\n" + " -clscale float set characteristic length scaling factor (default: 1.0)\n" " -bgm file load backround mesh from file\n" "Other options:\n" " -v print debug information\n" @@ -186,7 +188,16 @@ void Get_Options (int argc, char *argv[], int *nbfiles) { } else if(!strcmp(argv[i]+1, "scale")){ i++; - GLOBALSCALINGFACTOR = atof(argv[i]); i++; + CTX.mesh.scaling_factor = atof(argv[i]); i++; + } + else if(!strcmp(argv[i]+1, "clscale")){ + i++; + CTX.mesh.lc_factor = atof(argv[i]); i++; + if(CTX.mesh.lc_factor <= 0.0){ + fprintf(stderr, ERROR_STR + "Characteristic Length Factor Must be > 0\n"); + exit(1); + } } else if(!strcmp(argv[i]+1, "degree")){ i++; diff --git a/Box/Makefile b/Box/Makefile index 4d7d25b51d..1bdf9b01c6 100644 --- a/Box/Makefile +++ b/Box/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.2 2000-11-25 15:26:10 geuzaine Exp $ # # Makefile for ".a" # diff --git a/Common/Context.cpp b/Common/Context.cpp index f10f7231bf..0d9d276dc7 100644 --- a/Common/Context.cpp +++ b/Common/Context.cpp @@ -1,4 +1,4 @@ -/* $Id: Context.cpp,v 1.4 2000-11-23 16:51:28 geuzaine Exp $ */ +/* $Id: Context.cpp,v 1.5 2000-11-25 15:26:10 geuzaine Exp $ */ #include "Gmsh.h" #include "Const.h" @@ -221,6 +221,8 @@ void InitContext(Context_T *ctx){ ctx->mesh.point_insertion = CENTER_CIRCCIRC; ctx->mesh.speed_max = 0 ; ctx->mesh.degree = 1 ; + ctx->mesh.scaling_factor = 1.0 ; + ctx->mesh.lc_factor = 1.0 ; ctx->mesh.limit_gamma = 0.0 ; ctx->mesh.limit_eta = 0.0 ; ctx->mesh.limit_rho = 0.0 ; diff --git a/Common/Context.h b/Common/Context.h index ec7647f741..f26fe531f5 100644 --- a/Common/Context.h +++ b/Common/Context.h @@ -1,4 +1,4 @@ -/* $Id: Context.h,v 1.4 2000-11-23 16:51:28 geuzaine Exp $ */ +/* $Id: Context.h,v 1.5 2000-11-25 15:26:10 geuzaine Exp $ */ #ifndef _CONTEXT_H_ #define _CONTEXT_H_ @@ -50,30 +50,31 @@ typedef struct{ typedef struct { - int interactive; /* 0=full gfx; -1=just parse; 1,2,3=batch mesh */ - int verbosity; /* 0=silent -> 3=debug */ - int expose; /* 1 if everything is ready to expose and draw */ + int interactive; /* 0=full gfx; -1=just parse; 1,2,3=batch mesh */ + int verbosity; /* 0=silent -> 3=debug */ + int expose; /* 1 if everything is ready to expose and draw */ - double r[3], t[3], s[3]; /* current rotation, translation and scale */ - int rlock[3], tlock[3], slock[3]; /* locks for r, t and s */ + double r[3], t[3], s[3]; /* current rotation, translation and scale */ + int rlock[3], tlock[3], slock[3]; + /* locks for r, t and s */ - double min[3]; /* x, y and z min for the current geometry */ - double max[3]; /* x, y and z max for the current geometry */ - double range[3]; /* maximum range in the three directions */ + double min[3]; /* x, y and z min for the current geometry */ + double max[3]; /* x, y and z max for the current geometry */ + double range[3]; /* maximum range in the three directions */ - int db; /* double buffer? */ - int overlay; /* overlay graphic window? */ - int stream; /* output stream: TO_SCREEN or TO_FILE */ - int ortho; /* orthogonal projection? */ - int fast; /* inhibit mesh and postpro drawing when changing r,s,t */ - int command_win; /* command window? */ - int display_lists; /* use display lists? */ - int font_base; /* display list indice for the font */ - int axes, little_axes; /* draw axes? */ - int threads, threads_lock; /* threads?, lock (should be a mutex...) */ - int alpha; /* enable alpha blending */ - int flash; /* authorize colormap flashing (beek) */ - int same_visual; /* force same visual for GUI and Graphics */ + int db; /* double buffer? */ + int overlay; /* overlay graphic window? */ + int stream; /* output stream: TO_SCREEN or TO_FILE */ + int ortho; /* orthogonal projection? */ + int fast; /* inhibit mesh and postpro drawing when changing r,s,t */ + int command_win; /* command window? */ + int display_lists; /* use display lists? */ + int font_base; /* display list indice for the font */ + int axes, little_axes; /* draw axes? */ + int threads, threads_lock; /* threads?, lock (should be a mutex...) */ + int alpha; /* enable alpha blending */ + int flash; /* authorize colormap flashing (beek) */ + int same_visual; /* force same visual for GUI and Graphics */ char *font_string; /* main font */ char *colorbar_font_string; /* font for colorbar */ @@ -82,12 +83,12 @@ typedef struct { int viewport[4]; float light0[4]; /* light source position */ float shine; /* specular value */ - int render_mode; /* RENDER, SELECT, FEEDBACK */ + int render_mode; /* RENDER, SELECT, FEEDBACK */ - double pixel_equiv_x, pixel_equiv_y ; /* approximative equivalent model lenght of a pixel */ + double pixel_equiv_x, pixel_equiv_y ; + /* approximative equivalent model lenght of a pixel */ - /* all colors except postpro colormaps */ - rgbacolors color; + rgbacolors color; /* all colors except postpro colormaps */ /* geometry options */ struct{ @@ -107,6 +108,7 @@ typedef struct { int points, lines, surfaces, volumes; int points_num, lines_num, surfaces_num, volumes_num; double limit_gamma, limit_eta, limit_rho; + double scaling_factor, lc_factor; int dual, interactive; int hidden, shade; int format, nb_smoothing, algo, degree; diff --git a/Common/Makefile b/Common/Makefile index ce838c6fed..9c6376e51d 100644 --- a/Common/Makefile +++ b/Common/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.4 2000-11-25 15:26:10 geuzaine Exp $ # # Makefile for "libCommon.a" # diff --git a/Common/Static.h b/Common/Static.h index bf0bac479d..bfa6cc702b 100644 --- a/Common/Static.h +++ b/Common/Static.h @@ -1,28 +1,23 @@ -/* $Id: Static.h,v 1.4 2000-11-23 16:51:28 geuzaine Exp $ */ +/* $Id: Static.h,v 1.5 2000-11-25 15:26:10 geuzaine Exp $ */ #ifndef _STATIC_H_ #define _STATIC_H_ /* This file defines the static structures for Gmsh. It should be included only once, in your 'main' file */ -char TheFileName[NAME_STR_L], TheBaseFileName[NAME_STR_L]; -char yyname[NAME_STR_L]; -int yyerrorstate; +char TheFileName[NAME_STR_L], TheBaseFileName[NAME_STR_L]; +char yyname[NAME_STR_L]; +int yyerrorstate; Context_T CTX ; Mesh M, *THEM, *LOCAL; -int CurrentNodeNumber, CurrentSimplexNumber; +int TYPBGMESH=WITHPOINTS,CurrentNodeNumber, CurrentSimplexNumber; Tree_T *EntitesVisibles = NULL; -List_T *Post_ViewList = NULL; double LC, MiddleLC ; int LC_ORDER; -double FACTEUR_MULTIPLICATIF=1.0, GLOBALSCALINGFACTOR=1.0; -/* Some garbage */ - -int TYPBGMESH=WITHPOINTS; -int FLAG_OLD_CIRCLE = 0 ; /* Pour David : cercles > Pi */ +int FLAG_OLD_CIRCLE = 0 ; /* Pour David : cercles > Pi */ #endif diff --git a/Common/Views.cpp b/Common/Views.cpp index 425b0679ad..12cdb4a6f7 100644 --- a/Common/Views.cpp +++ b/Common/Views.cpp @@ -1,38 +1,63 @@ -/* $Id: Views.cpp,v 1.2 2000-11-23 14:11:28 geuzaine Exp $ */ +/* $Id: Views.cpp,v 1.3 2000-11-25 15:26:10 geuzaine Exp $ */ #include "Gmsh.h" #include "Views.h" #include "Context.h" #include "ColorTable.h" -extern Context_T CTX ; +List_T *Post_ViewList = NULL; +Post_View *ActualView; -extern List_T *Post_ViewList; +extern Context_T CTX ; extern double LC; -static Post_View *ActualView; static int ActualViewNum=0; /* ------------------------------------------------------------------------ */ /* V i e w s */ /* ------------------------------------------------------------------------ */ -void AddView(int , char *, int); +int fcmpPostViewNum(const void *v1, const void *v2){ + return (((Post_View *)v1)->Num - ((Post_View *)v2)->Num); +} + +int fcmpPostViewDuplicateOf(const void *v1, const void *v2){ + return (((Post_View *)v1)->DuplicateOf - ((Post_View *)v2)->DuplicateOf); +} void BeginView(int allocate){ ActualView = (Post_View*)Malloc(sizeof(Post_View)); - ActualView->Num = ++ActualViewNum; - ActualView->Changed = 1; + + ActualView->NbSP = ActualView->NbVP = ActualView->NbTP = 0; + ActualView->NbSL = ActualView->NbVL = ActualView->NbTL = 0; + ActualView->NbST = ActualView->NbVT = ActualView->NbTT = 0; + ActualView->NbSS = ActualView->NbVS = ActualView->NbTS = 0; + if(allocate){ - ActualView->Allocated = 1; - ActualView->Simplices = List_Create(100,100,sizeof(Post_Simplex)); - ActualView->Triangles = List_Create(100,100,sizeof(Post_Triangle)); - ActualView->Lines = List_Create(100,100,sizeof(Post_Line)); - ActualView->Points = List_Create(100,100,sizeof(Post_Point)); - } - else{ - ActualView->Allocated = 0; + ActualView->SP = List_Create(100,1000,sizeof(double)); + ActualView->VP = List_Create(100,1000,sizeof(double)); + ActualView->TP = List_Create(100,1000,sizeof(double)); + ActualView->Points = List_Create(100,1000,sizeof(Post_Simplex)); + + ActualView->SL = List_Create(100,1000,sizeof(double)); + ActualView->VL = List_Create(100,1000,sizeof(double)); + ActualView->TL = List_Create(100,1000,sizeof(double)); + ActualView->Lines = List_Create(100,1000,sizeof(Post_Simplex)); + + ActualView->ST = List_Create(100,1000,sizeof(double)); + ActualView->VT = List_Create(100,1000,sizeof(double)); + ActualView->TT = List_Create(100,1000,sizeof(double)); + ActualView->Triangles = List_Create(100,1000,sizeof(Post_Simplex)); + + ActualView->SS = List_Create(100,1000,sizeof(double)); + ActualView->VS = List_Create(100,1000,sizeof(double)); + ActualView->TS = List_Create(100,1000,sizeof(double)); + ActualView->Tetrahedra = List_Create(100,1000,sizeof(Post_Simplex)); } + + ActualView->Changed = 1; + ActualView->Links = 0; + ActualView->DuplicateOf = 0; ActualView->NbIso = CTX.post.initial_nbiso; ActualView->IntervalsType = CTX.post.initial_intervals; ActualView->Light = 0; @@ -60,430 +85,268 @@ void BeginView(int allocate){ color_table_recompute(&ActualView->CT, 1, 1); } -void EndView(char *Name, double XOffset, double YOffset, double ZOffset){ +void EndView(int AddInUI, int Number, char *FileName, char *Name, + double XOffset, double YOffset, double ZOffset){ + int i, nb; + extern void AddViewInUI(int , char *, int); + + // Points + + if(ActualView->NbSP){ + nb = List_Nbr(ActualView->SP) / ActualView->NbSP ; + for(i = 0 ; i < List_Nbr(ActualView->SP) ; i+=nb) + AddView_ScalarSimplex(0, (double*)List_Pointer(ActualView->SP,i), + nb-3, (double*)List_Pointer(ActualView->SP,i+3)); + } + if(ActualView->NbVP){ + nb = List_Nbr(ActualView->VP) / ActualView->NbVP ; + for(i = 0 ; i < List_Nbr(ActualView->VP) ; i+=nb) + AddView_VectorSimplex(0, (double*)List_Pointer(ActualView->VP,i), + nb-3, (double*)List_Pointer(ActualView->VP,i+3)); + } + if(ActualView->NbTP){ + nb = List_Nbr(ActualView->TP) / ActualView->NbTP ; + for(i = 0 ; i < List_Nbr(ActualView->TP) ; i+=nb) + AddView_TensorSimplex(0, (double*)List_Pointer(ActualView->TP,i), + nb-3, (double*)List_Pointer(ActualView->TP,i+3)); + } + + // Lines + + if(ActualView->NbSL){ + nb = List_Nbr(ActualView->SL) / ActualView->NbSL ; + for(i = 0 ; i < List_Nbr(ActualView->SL) ; i+=nb) + AddView_ScalarSimplex(1, (double*)List_Pointer(ActualView->SL,i), + nb-6, (double*)List_Pointer(ActualView->SL,i+6)); + } + if(ActualView->NbVL){ + nb = List_Nbr(ActualView->VL) / ActualView->NbVL ; + for(i = 0 ; i < List_Nbr(ActualView->VL) ; i+=nb) + AddView_VectorSimplex(1, (double*)List_Pointer(ActualView->VL,i), + nb-6, (double*)List_Pointer(ActualView->VL,i+6)); + } + if(ActualView->NbTL){ + nb = List_Nbr(ActualView->TL) / ActualView->NbTL ; + for(i = 0 ; i < List_Nbr(ActualView->TL) ; i+=nb) + AddView_TensorSimplex(1, (double*)List_Pointer(ActualView->TL,i), + nb-6, (double*)List_Pointer(ActualView->TL,i+6)); + } + + // Triangles + + if(ActualView->NbST){ + nb = List_Nbr(ActualView->ST) / ActualView->NbST ; + for(i = 0 ; i < List_Nbr(ActualView->ST) ; i+=nb) + AddView_ScalarSimplex(2, (double*)List_Pointer(ActualView->ST,i), + nb-9, (double*)List_Pointer(ActualView->ST,i+9)); + } + if(ActualView->NbVT){ + nb = List_Nbr(ActualView->VT) / ActualView->NbVT ; + for(i = 0 ; i < List_Nbr(ActualView->VT) ; i+=nb) + AddView_VectorSimplex(2, (double*)List_Pointer(ActualView->VT,i), + nb-9, (double*)List_Pointer(ActualView->VT,i+9)); + } + if(ActualView->NbTT){ + nb = List_Nbr(ActualView->TT) / ActualView->NbTT ; + for(i = 0 ; i < List_Nbr(ActualView->TT) ; i+=nb) + AddView_TensorSimplex(2, (double*)List_Pointer(ActualView->TT,i), + nb-9, (double*)List_Pointer(ActualView->TT,i+9)); + } + + // Tetrahedra + + if(ActualView->NbSS){ + nb = List_Nbr(ActualView->SS) / ActualView->NbSS ; + for(i = 0 ; i < List_Nbr(ActualView->SS) ; i+=nb) + AddView_ScalarSimplex(3, (double*)List_Pointer(ActualView->SS,i), + nb-12, (double*)List_Pointer(ActualView->SS,i+12)); + } + if(ActualView->NbVS){ + nb = List_Nbr(ActualView->VS) / ActualView->NbVS ; + for(i = 0 ; i < List_Nbr(ActualView->VS) ; i+=nb) + AddView_VectorSimplex(3, (double*)List_Pointer(ActualView->VS,i), + nb-12, (double*)List_Pointer(ActualView->VS,i+12)); + } + if(ActualView->NbTS){ + nb = List_Nbr(ActualView->TS) / ActualView->NbTS ; + for(i = 0 ; i < List_Nbr(ActualView->TS) ; i+=nb) + AddView_TensorSimplex(3, (double*)List_Pointer(ActualView->TS,i), + nb-12, (double*)List_Pointer(ActualView->TS,i+12)); + } + + strcpy(ActualView->FileName,FileName); strcpy(ActualView->Name,Name); strcpy(ActualView->Format, "%.3e"); + if(ActualView->Min > ActualView->Max) + ActualView->Min = ActualView->Max = 0.0 ; ActualView->CustomMin = ActualView->Min; ActualView->CustomMax = ActualView->Max; - ActualView->Offset[0] = XOffset*(CTX.range[0]?CTX.range[0]:LC)*1.e-3; ActualView->Offset[1] = YOffset*(CTX.range[1]?CTX.range[1]:LC)*1.e-3; ActualView->Offset[2] = ZOffset*(CTX.range[2]?CTX.range[2]:LC)*1.e-3; - /* j'en alloue directement le max pour eviter les problemes avec - * CurrentView: cf. rem dans cb_post.c - */ + /* j'en alloue directement le max pour eviter les problemes de + reallocation (avec CurrentView) */ if(!Post_ViewList) - Post_ViewList = List_Create(20,1,sizeof(Post_View)); + Post_ViewList = List_Create(100,1,sizeof(Post_View)); + + if(!Number){ + ActualView->Num = ++ActualViewNum; + List_Add(Post_ViewList,ActualView); + if(AddInUI) + AddViewInUI(List_Nbr(Post_ViewList), ActualView->Name, ActualView->Num); + } + else{ + ActualView->Num = Number; + List_Replace(Post_ViewList,ActualView,fcmpPostViewNum); + } - List_Add(Post_ViewList,ActualView); - - AddView(List_Nbr(Post_ViewList), ActualView->Name, 1); ActualView = NULL; } -/* ------------------------------------------------------------------------ */ -/* S i m p l e x */ -/* ------------------------------------------------------------------------ */ - -void AddView_ScalarSimplex(double x0,double y0,double z0, - double x1,double y1,double z1, - double x2,double y2,double z2, - double x3,double y3,double z3, - List_T *v){ - Post_Simplex S; - int i,N ; - - S.Type = DRAW_POST_SCALAR; - S.X[0] = x0; S.X[1] = x1; S.X[2] = x2; S.X[3] = x3; - S.Y[0] = y0; S.Y[1] = y1; S.Y[2] = y2; S.Y[3] = y3; - S.Z[0] = z0; S.Z[1] = z1; S.Z[2] = z2; S.Z[3] = z3; - - N = List_Nbr(v); - S.V = (double*)Malloc(N*sizeof(double)); - - for(i=0 ; i<N ; i+=4){ - List_Read(v,i, &S.V[i]) ; - List_Read(v,i+1,&S.V[i+1]) ; - List_Read(v,i+2,&S.V[i+2]) ; - List_Read(v,i+3,&S.V[i+3]) ; - - if(!List_Nbr(ActualView->Points) && - !List_Nbr(ActualView->Lines) && - !List_Nbr(ActualView->Triangles) && - !List_Nbr(ActualView->Simplices)){ - ActualView->Min = DMIN(DMIN(DMIN(S.V[i],S.V[i+1]),S.V[i+2]),S.V[i+3]); - ActualView->Max = DMAX(DMAX(DMAX(S.V[i],S.V[i+1]),S.V[i+2]),S.V[i+3]); - ActualView->NbTimeStep = N/4; +void FreeView(Post_View *v){ + Post_View vv,*v2; + int free = 1; + + if(v->DuplicateOf){ + vv.Num = v->DuplicateOf ; + Msg(DEBUG, "This View is a Duplicata"); + if(!(v2 = (Post_View*)List_PQuery(Post_ViewList, &vv, fcmpPostViewNum))){ + Msg(DEBUG, " ->The Original View is Gone"); + if(!(v2 = (Post_View*)List_PQuery(Post_ViewList, v, fcmpPostViewDuplicateOf))){ + Msg(DEBUG, " ->There are no other duplicata"); + free = 1 ; + } + else{ + free = 0 ; + } } else{ - ActualView->Min = DMIN(DMIN(DMIN(DMIN(S.V[i],S.V[i+1]),S.V[i+2]), - S.V[i+3]),ActualView->Min); - ActualView->Max = DMAX(DMAX(DMAX(DMAX(S.V[i],S.V[i+1]),S.V[i+2]), - S.V[i+3]),ActualView->Max); - ActualView->NbTimeStep = IMIN(N/4,ActualView->NbTimeStep); + v2->Links--; + free = 0 ; + Msg(DEBUG, " ->The original still exists, so I dont't free anything now"); } } - - List_Add(ActualView->Simplices,&S); -} -void AddView_VectorSimplex(double x0,double y0,double z0, - double x1,double y1,double z1, - double x2,double y2,double z2, - double x3,double y3,double z3, - List_T *v){ - Post_Simplex S; - double l0,l1,l2,l3; - int i,N ; - - S.Type = DRAW_POST_VECTOR; - S.X[0] = x0; S.X[1] = x1; S.X[2] = x2; S.X[3] = x3; - S.Y[0] = y0; S.Y[1] = y1; S.Y[2] = y2; S.Y[3] = y3; - S.Z[0] = z0; S.Z[1] = z1; S.Z[2] = z2; S.Z[3] = z3; + if(v->Links) + Msg(DEBUG, " ->This view is linked: Cannot free"); - N = List_Nbr(v); - S.V = (double*)Malloc(N*sizeof(double)); - - for(i=0 ; i<N ; i+=12){ - List_Read(v,i, &S.V[i]); List_Read(v,i+1,&S.V[i+1]); List_Read(v,i+2,&S.V[i+2]); - List_Read(v,i+3,&S.V[i+3]); List_Read(v,i+4,&S.V[i+4]); List_Read(v,i+5,&S.V[i+5]); - List_Read(v,i+6,&S.V[i+6]); List_Read(v,i+7,&S.V[i+7]); List_Read(v,i+8,&S.V[i+8]); - List_Read(v,i+9,&S.V[i+9]); List_Read(v,i+10,&S.V[i+10]); List_Read(v,i+11,&S.V[i+11]); - - l0 = sqrt(S.V[i] *S.V[i] +S.V[i+1]*S.V[i+1] +S.V[i+2]*S.V[i+2]); - l1 = sqrt(S.V[i+3]*S.V[i+3]+S.V[i+4]*S.V[i+4] +S.V[i+5]*S.V[i+5]); - l2 = sqrt(S.V[i+6]*S.V[i+6]+S.V[i+7]*S.V[i+7] +S.V[i+8]*S.V[i+8]); - l3 = sqrt(S.V[i+9]*S.V[i+9]+S.V[i+10]*S.V[i+10]+S.V[i+11]*S.V[i+11]); - if(!List_Nbr(ActualView->Points) && - !List_Nbr(ActualView->Lines) && - !List_Nbr(ActualView->Triangles) && - !List_Nbr(ActualView->Simplices)){ - ActualView->Min = DMIN(DMIN(DMIN(l0,l1),l2),l3); - ActualView->Max = DMAX(DMAX(DMAX(l0,l1),l2),l3); - ActualView->NbTimeStep = N/12; - } - else{ - ActualView->Min = DMIN(DMIN(DMIN(DMIN(l0,l1),l2),l3),ActualView->Min); - ActualView->Max = DMAX(DMAX(DMAX(DMAX(l0,l1),l2),l3),ActualView->Max); - ActualView->NbTimeStep = IMIN(N/12,ActualView->NbTimeStep); - } - } + if(free && !v->Links){ + Msg(DEBUG, " ->Freeing View"); - ActualView->ScalarOnly = 0; - List_Add(ActualView->Simplices,&S); -} + List_Delete(v->SP); List_Delete(v->VP); List_Delete(v->TP); + List_Delete(v->Points); + + List_Delete(v->SL); List_Delete(v->VL); List_Delete(v->TL); + List_Delete(v->Lines); + + List_Delete(v->ST); List_Delete(v->VT); List_Delete(v->TT); + List_Delete(v->Triangles); + + List_Delete(v->SS); List_Delete(v->VS); List_Delete(v->TS); + List_Delete(v->Tetrahedra); + } -void AddView_TensorSimplex(double x0,double y0,double z0, - double x1,double y1,double z1, - double x2,double y2,double z2, - double x3,double y3,double z3, - List_T *v){ } /* ------------------------------------------------------------------------ */ -/* T r i a n g l e */ +/* S c a l a r S i m p l e x */ /* ------------------------------------------------------------------------ */ -void AddView_ScalarTriangle(double x0,double y0,double z0, - double x1,double y1,double z1, - double x2,double y2,double z2, - List_T *v){ - Post_Triangle T; - int i,N ; - - T.Type = DRAW_POST_SCALAR; - T.X[0] = x0; T.X[1] = x1; T.X[2] = x2; - T.Y[0] = y0; T.Y[1] = y1; T.Y[2] = y2; - T.Z[0] = z0; T.Z[1] = z1; T.Z[2] = z2; +void AddView_ScalarSimplex(int dim, double *coord, int N, double *v){ + Post_Simplex S; + int i,nbnod; - N = List_Nbr(v); - T.V = (double*)Malloc(N*sizeof(double)); - - for(i=0 ; i<N ; i+=3){ - List_Read(v,i, &T.V[i]) ; - List_Read(v,i+1,&T.V[i+1]) ; - List_Read(v,i+2,&T.V[i+2]) ; - - if(!List_Nbr(ActualView->Points) && - !List_Nbr(ActualView->Lines) && - !List_Nbr(ActualView->Triangles) && - !List_Nbr(ActualView->Simplices)){ - ActualView->Min = DMIN(DMIN(T.V[i],T.V[i+1]),T.V[i+2]); - ActualView->Max = DMAX(DMAX(T.V[i],T.V[i+1]),T.V[i+2]); - ActualView->NbTimeStep = N/3; - } - else{ - ActualView->Min = DMIN(DMIN(DMIN(T.V[i],T.V[i+1]),T.V[i+2]),ActualView->Min); - ActualView->Max = DMAX(DMAX(DMAX(T.V[i],T.V[i+1]),T.V[i+2]),ActualView->Max); - ActualView->NbTimeStep = IMIN(N/3,ActualView->NbTimeStep); - } + S.Type = DRAW_POST_SCALAR; + S.Dimension = dim; + + switch(dim){ + case 0 : nbnod = 1 ; break; // point + case 1 : nbnod = 2 ; break; // line + case 2 : nbnod = 3 ; break; // triangle + case 3 : nbnod = 4 ; break; // tetrahedron } - - List_Add(ActualView->Triangles,&T); -} -void AddView_VectorTriangle(double x0,double y0,double z0, - double x1,double y1,double z1, - double x2,double y2,double z2, - List_T *v){ - Post_Triangle T; - double l0,l1,l2; - int i,N ; - - T.Type = DRAW_POST_VECTOR; - T.X[0] = x0; T.X[1] = x1; T.X[2] = x2; - T.Y[0] = y0; T.Y[1] = y1; T.Y[2] = y2; - T.Z[0] = z0; T.Z[1] = z1; T.Z[2] = z2; + S.X = &coord[0] ; S.Y = &coord[nbnod] ; S.Z = &coord[2*nbnod] ; S.V = v ; - N = List_Nbr(v); - T.V = (double*)Malloc(N*sizeof(double)); - - for(i=0 ; i<N ; i+=9){ - List_Read(v,i, &T.V[i]); List_Read(v,i+1,&T.V[i+1]); List_Read(v,i+2,&T.V[i+2]); - List_Read(v,i+3,&T.V[i+3]); List_Read(v,i+4,&T.V[i+4]); List_Read(v,i+5,&T.V[i+5]); - List_Read(v,i+6,&T.V[i+6]); List_Read(v,i+7,&T.V[i+7]); List_Read(v,i+8,&T.V[i+8]); - - l0 = sqrt(T.V[i] *T.V[i] +T.V[i+1]*T.V[i+1]+T.V[i+2]*T.V[i+2]); - l1 = sqrt(T.V[i+3]*T.V[i+3]+T.V[i+4]*T.V[i+4]+T.V[i+5]*T.V[i+5]); - l2 = sqrt(T.V[i+6]*T.V[i+6]+T.V[i+7]*T.V[i+7]+T.V[i+8]*T.V[i+8]); - if(!List_Nbr(ActualView->Points) && - !List_Nbr(ActualView->Lines) && - !List_Nbr(ActualView->Triangles) && - !List_Nbr(ActualView->Simplices)){ - ActualView->Min = DMIN(DMIN(l0,l1),l2); - ActualView->Max = DMAX(DMAX(l0,l1),l2); - ActualView->NbTimeStep = N/9; - } - else{ - ActualView->Min = DMIN(DMIN(DMIN(l0,l1),l2),ActualView->Min); - ActualView->Max = DMAX(DMAX(DMAX(l0,l1),l2),ActualView->Max); - ActualView->NbTimeStep = IMIN(N/9,ActualView->NbTimeStep); - } + if(!List_Nbr(ActualView->Points) && !List_Nbr(ActualView->Lines) && + !List_Nbr(ActualView->Triangles) && !List_Nbr(ActualView->Tetrahedra)){ + ActualView->Min = S.V[0]; + ActualView->Max = S.V[0]; + ActualView->NbTimeStep = N/nbnod; } + else if(N/nbnod < ActualView->NbTimeStep) + ActualView->NbTimeStep = N/nbnod ; - ActualView->ScalarOnly = 0; - List_Add(ActualView->Triangles,&T); + for(i=0 ; i<N ; i++){ + if(S.V[i] < ActualView->Min) ActualView->Min = S.V[i] ; + if(S.V[i] > ActualView->Max) ActualView->Max = S.V[i] ; + } + + switch(dim){ + case 0 : List_Add(ActualView->Points,&S); break; + case 1 : List_Add(ActualView->Lines,&S); break; + case 2 : List_Add(ActualView->Triangles,&S); break; + case 3 : List_Add(ActualView->Tetrahedra,&S); break; + } + } -void AddView_TensorTriangle(double x0,double y0,double z0, - double x1,double y1,double z1, - double x2,double y2,double z2, - List_T *v){ - Post_Triangle T; - double l0,l1,l2; - int i,N ; +void AddView_VectorSimplex(int dim, double *coord, int N, double *v){ + Post_Simplex S; + double l0; + int nbnod, i; - T.Type = DRAW_POST_TENSOR; - T.X[0] = x0; T.X[1] = x1; T.X[2] = x2; - T.Y[0] = y0; T.Y[1] = y1; T.Y[2] = y2; - T.Z[0] = z0; T.Z[1] = z1; T.Z[2] = z2; + S.Type = DRAW_POST_VECTOR; + S.Dimension = dim; - N = List_Nbr(v); - T.V = (double*)Malloc(N*sizeof(double)); - - for(i=0 ; i<N ; i+=27){ - List_Read(v,i, &T.V[i]); List_Read(v,i+1,&T.V[i+1]); List_Read(v,i+2,&T.V[i+2]); - List_Read(v,i+3,&T.V[i+3]); List_Read(v,i+4,&T.V[i+4]); List_Read(v,i+5,&T.V[i+5]); - List_Read(v,i+6,&T.V[i+6]); List_Read(v,i+7,&T.V[i+7]); List_Read(v,i+8,&T.V[i+8]); - List_Read(v,i+9,&T.V[i+9]); List_Read(v,i+10,&T.V[i+10]); List_Read(v,i+11,&T.V[i+11]); - List_Read(v,i+12,&T.V[i+12]); List_Read(v,i+13,&T.V[i+13]); List_Read(v,i+14,&T.V[i+14]); - List_Read(v,i+15,&T.V[i+15]); List_Read(v,i+16,&T.V[i+16]); List_Read(v,i+17,&T.V[i+17]); - List_Read(v,i+18,&T.V[i+18]); List_Read(v,i+19,&T.V[i+19]); List_Read(v,i+20,&T.V[i+20]); - List_Read(v,i+21,&T.V[i+21]); List_Read(v,i+22,&T.V[i+22]); List_Read(v,i+23,&T.V[i+23]); - List_Read(v,i+24,&T.V[i+24]); List_Read(v,i+25,&T.V[i+25]); List_Read(v,i+26,&T.V[i+26]); - - l0 = sqrt(T.V[i] *T.V[i] +T.V[i+1]*T.V[i+1]+T.V[i+2]*T.V[i+2]); - l1 = sqrt(T.V[i+3]*T.V[i+3]+T.V[i+4]*T.V[i+4]+T.V[i+5]*T.V[i+5]); - l2 = sqrt(T.V[i+6]*T.V[i+6]+T.V[i+7]*T.V[i+7]+T.V[i+8]*T.V[i+8]); - if(!List_Nbr(ActualView->Points) && - !List_Nbr(ActualView->Lines) && - !List_Nbr(ActualView->Triangles) && - !List_Nbr(ActualView->Simplices)){ - ActualView->Min = DMIN(DMIN(l0,l1),l2); - ActualView->Max = DMAX(DMAX(l0,l1),l2); - ActualView->NbTimeStep = N/9; - } - else{ - ActualView->Min = DMIN(DMIN(DMIN(l0,l1),l2),ActualView->Min); - ActualView->Max = DMAX(DMAX(DMAX(l0,l1),l2),ActualView->Max); - ActualView->NbTimeStep = IMIN(N/9,ActualView->NbTimeStep); - } + switch(dim){ + case 0 : nbnod = 1 ; break; // point + case 1 : nbnod = 2 ; break; // line + case 2 : nbnod = 3 ; break; // triangle + case 3 : nbnod = 4 ; break; // tetrahedron } - ActualView->ScalarOnly = 0; - List_Add(ActualView->Triangles,&T); -} - -/* ------------------------------------------------------------------------ */ -/* L i n e */ -/* ------------------------------------------------------------------------ */ - -void AddView_ScalarLine(double x0,double y0,double z0, - double x1,double y1,double z1, - List_T *v){ - Post_Line L; - int i,N ; - - L.Type = DRAW_POST_SCALAR; - L.X[0] = x0; L.X[1] = x1; - L.Y[0] = y0; L.Y[1] = y1; - L.Z[0] = z0; L.Z[1] = z1; + S.X = &coord[0] ; S.Y = &coord[nbnod] ; S.Z = &coord[2*nbnod] ; S.V = v ; - N = List_Nbr(v); - L.V = (double*)Malloc(N*sizeof(double)); - - for(i=0 ; i<N ; i+=2){ - List_Read(v,i,&L.V[i]) ; - List_Read(v,i+1,&L.V[i+1]) ; - if(!List_Nbr(ActualView->Points) && - !List_Nbr(ActualView->Lines) && - !List_Nbr(ActualView->Triangles) && - !List_Nbr(ActualView->Simplices)){ - ActualView->Min = DMIN(L.V[i],L.V[i+1]); - ActualView->Max = DMAX(L.V[i],L.V[i+1]); - ActualView->NbTimeStep = N/2; - } - else{ - ActualView->Min = DMIN(DMIN(L.V[i],L.V[i+1]),ActualView->Min); - ActualView->Max = DMAX(DMAX(L.V[i],L.V[i+1]),ActualView->Max); - ActualView->NbTimeStep = IMIN(N/2,ActualView->NbTimeStep); - } + if(!List_Nbr(ActualView->Points) && !List_Nbr(ActualView->Lines) && + !List_Nbr(ActualView->Triangles) && !List_Nbr(ActualView->Tetrahedra)){ + l0 = sqrt(DSQR(S.V[0])+DSQR(S.V[1])+DSQR(S.V[2])); + ActualView->Min = l0; + ActualView->Max = l0; + ActualView->NbTimeStep = N/(3*nbnod) ; } + else if(N/(3*nbnod) < ActualView->NbTimeStep) + ActualView->NbTimeStep = N/(3*nbnod) ; - List_Add(ActualView->Lines,&L); -} + for(i=0 ; i<N ; i+=3){ + l0 = sqrt(DSQR(S.V[i])+DSQR(S.V[i+1])+DSQR(S.V[i+2])); + if(l0 < ActualView->Min) ActualView->Min = l0 ; + if(l0 > ActualView->Max) ActualView->Max = l0 ; + } + ActualView->ScalarOnly = 0; -void AddView_VectorLine(double x0,double y0,double z0, - double x1,double y1,double z1, - List_T *v){ - Post_Line L; - double l0,l1; - int i,N ; - - L.Type = DRAW_POST_VECTOR; - L.X[0] = x0; L.X[1] = x1; - L.Y[0] = y0; L.Y[1] = y1; - L.Z[0] = z0; L.Z[1] = z1; - - N = List_Nbr(v); - L.V = (double*)Malloc(N*sizeof(double)); - - for(i=0 ; i<N ; i+=6){ - List_Read(v,i, &L.V[i]); List_Read(v,i+1,&L.V[i+1]); - List_Read(v,i+2,&L.V[i+2]); List_Read(v,i+3,&L.V[i+3]); - List_Read(v,i+4,&L.V[i+4]); List_Read(v,i+5,&L.V[i+5]); - - l0 = sqrt(L.V[i] *L.V[i] +L.V[i+1]*L.V[i+1]+L.V[i+2]*L.V[i+2]); - l1 = sqrt(L.V[i+3]*L.V[i+3]+L.V[i+4]*L.V[i+4]+L.V[i+5]*L.V[i+5]); - if(!List_Nbr(ActualView->Points) && - !List_Nbr(ActualView->Lines) && - !List_Nbr(ActualView->Triangles) && - !List_Nbr(ActualView->Simplices)){ - ActualView->Min = DMIN(l0,l1); - ActualView->Max = DMAX(l0,l1); - ActualView->NbTimeStep = N/6; - } - else{ - ActualView->Min = DMIN(DMIN(l0,l1),ActualView->Min); - ActualView->Max = DMAX(DMAX(l0,l1),ActualView->Max); - ActualView->NbTimeStep = IMIN(N/6,ActualView->NbTimeStep); - } + switch(dim){ + case 0 : List_Add(ActualView->Points,&S); break; + case 1 : List_Add(ActualView->Lines,&S); break; + case 2 : List_Add(ActualView->Triangles,&S); break; + case 3 : List_Add(ActualView->Tetrahedra,&S); break; } - - ActualView->ScalarOnly = 0; - List_Add(ActualView->Lines,&L); } -void AddView_TensorLine(double x0,double y0,double z0, - double x1,double y1,double z1, - List_T *v){ +void AddView_TensorSimplex(int dim, double *coord, int N, double *v){ + Msg(ERROR, "Tensor Field Views not Implemented Yet"); } /* ------------------------------------------------------------------------ */ -/* P o i n t */ +/* R e a d _ V i e w */ /* ------------------------------------------------------------------------ */ -void AddView_ScalarPoint(double x0,double y0,double z0, - List_T *v){ - Post_Point P; - double l; - int i,N ; - - P.Type = DRAW_POST_SCALAR; - P.X = x0; - P.Y = y0; - P.Z = z0; - - N = List_Nbr(v); - P.V = (double*)Malloc(N*sizeof(double)); +void Read_View(char *FileName){ - for(i=0 ; i<N ; i++){ - List_Read(v,i, &P.V[i]); - l = P.V[i]; - if(!List_Nbr(ActualView->Points) && - !List_Nbr(ActualView->Lines) && - !List_Nbr(ActualView->Triangles) && - !List_Nbr(ActualView->Simplices)){ - ActualView->Min = l; - ActualView->Max = l; - ActualView->NbTimeStep = N/3; - } - else{ - ActualView->Min = DMIN(l,ActualView->Min); - ActualView->Max = DMAX(l,ActualView->Max); - ActualView->NbTimeStep = IMIN(N,ActualView->NbTimeStep); - } - } - - ActualView->ScalarOnly = 1; - List_Add(ActualView->Points,&P); -} - - -void AddView_VectorPoint(double x0,double y0,double z0, - List_T *v){ - Post_Point P; - double l; - int i,N ; - P.Type = DRAW_POST_VECTOR; - P.X = x0; - P.Y = y0; - P.Z = z0; - - N = List_Nbr(v); - P.V = (double*)Malloc(N*sizeof(double)); - for(i=0 ; i<N ; i+=3){ - List_Read(v,i, &P.V[i]); - List_Read(v,i+1,&P.V[i+1]); - List_Read(v,i+2,&P.V[i+2]); - - l = sqrt(P.V[i]*P.V[i] + P.V[i+1]*P.V[i+1] + P.V[i+2]*P.V[i+2]); - if(!List_Nbr(ActualView->Points) && - !List_Nbr(ActualView->Lines) && - !List_Nbr(ActualView->Triangles) && - !List_Nbr(ActualView->Simplices)){ - ActualView->Min = l; - ActualView->Max = l; - ActualView->NbTimeStep = N/3; - } - else{ - ActualView->Min = DMIN(l,ActualView->Min); - ActualView->Max = DMAX(l,ActualView->Max); - ActualView->NbTimeStep = IMIN(N/3,ActualView->NbTimeStep); - } - } - - ActualView->ScalarOnly = 0; - List_Add(ActualView->Points,&P); -} - -void AddView_TensorPoint(double x0,double y0,double z0, - List_T *v){ } - diff --git a/Common/Views.h b/Common/Views.h index 9e2f66c9f5..e99becd37a 100644 --- a/Common/Views.h +++ b/Common/Views.h @@ -1,38 +1,19 @@ -/* $Id: Views.h,v 1.3 2000-11-24 08:04:14 geuzaine Exp $ */ +/* $Id: Views.h,v 1.4 2000-11-25 15:26:10 geuzaine Exp $ */ #ifndef _VIEWS_H_ #define _VIEWS_H_ #include "Const.h" typedef struct{ - int Type; - double X[4], Y[4], Z[4]; - double *V; + int Dimension, Type; + double *X, *Y, *Z, *V; }Post_Simplex; -typedef struct{ - int Type; - double X[3], Y[3], Z[3]; - double *V; -}Post_Triangle; - -typedef struct{ - int Type; - double X[2], Y[2], Z[2]; - double *V; -}Post_Line; - -typedef struct{ - int Type; - double X, Y, Z; - double *V; -}Post_Point; - #include "ColorTable.h" typedef struct{ - int Num, Changed, Allocated; - char Name[NAME_STR_L], Format[NAME_STR_L]; + int Num, Changed, DuplicateOf, Links; + char FileName[NAME_STR_L], Name[NAME_STR_L], Format[NAME_STR_L]; double Min, Max, CustomMin, CustomMax; double Offset[3], Raise[3], ArrowScale; int Visible, ScalarOnly; @@ -41,7 +22,15 @@ typedef struct{ int ArrowType, ArrowLocation; int TimeStep, NbTimeStep; ColorTable CT; - List_T *Simplices, *Triangles, *Lines, *Points; + + int NbSP, NbVP, NbTP; + List_T *SP, *VP, *TP, *Points; // points + int NbSL, NbVL, NbTL; + List_T *SL, *VL, *TL, *Lines; // lines + int NbST, NbVT, NbTT; + List_T *ST, *VT, *TT, *Triangles; // triangles + int NbSS, NbVS, NbTS; + List_T *SS, *VS, *TS, *Tetrahedra; // tetrahedra double (*GVFI) (double min, double max, int nb, int index); int (*GIFV) (double min, double max, int nb, double value); @@ -80,62 +69,17 @@ typedef struct{ /* Public functions */ +int fcmpPostViewNum(const void *v1, const void *v2); +int fcmpPostViewDuplicateOf(const void *v1, const void *v2); + void BeginView (int alloc); -void EndView (char *Name, double XOffset, double YOffset, double ZOffset); - -void AddView_ScalarSimplex (double x0, double y0, double z0, - double x1, double y1, double z1, - double x2, double y2, double z2, - double x3, double y3, double z3, - List_T * v); - -void AddView_VectorSimplex (double x0, double y0, double z0, - double x1, double y1, double z1, - double x2, double y2, double z2, - double x3, double y3, double z3, - List_T * v); - -void AddView_TensorSimplex (double x0, double y0, double z0, - double x1, double y1, double z1, - double x2, double y2, double z2, - double x3, double y3, double z3, - List_T * v); - -void AddView_ScalarTriangle (double x0, double y0, double z0, - double x1, double y1, double z1, - double x2, double y2, double z2, - List_T * v); - -void AddView_VectorTriangle (double x0, double y0, double z0, - double x1, double y1, double z1, - double x2, double y2, double z2, - List_T * v); - -void AddView_TensorTriangle (double x0, double y0, double z0, - double x1, double y1, double z1, - double x2, double y2, double z2, - List_T * v); - -void AddView_ScalarLine (double x0, double y0, double z0, - double x1, double y1, double z1, - List_T * v); - -void AddView_VectorLine (double x0, double y0, double z0, - double x1, double y1, double z1, - List_T * v); - -void AddView_TensorLine (double x0, double y0, double z0, - double x1, double y1, double z1, - List_T * v); - -void AddView_ScalarPoint(double x0,double y0,double z0, - List_T *v); - -void AddView_VectorPoint(double x0,double y0,double z0, - List_T *v); - -void AddView_TensorPoint(double x0,double y0,double z0, - List_T *v); +void EndView (int AddInUI, int Number, char *FileName, char *Name, + double XOffset, double YOffset, double ZOffset); +void FreeView(Post_View *v); + +void AddView_ScalarSimplex(int dim, double *coord, int N, double *v); +void AddView_VectorSimplex(int dim, double *coord, int N, double *v); +void AddView_TensorSimplex(int dim, double *coord, int N, double *v); int BGMWithView (Post_View *ErrView); int CreateBGM(Post_View *ErrView, int OptiMethod, double Degree, diff --git a/DataStr/Makefile b/DataStr/Makefile index f8cb139a15..6484378781 100644 --- a/DataStr/Makefile +++ b/DataStr/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.3 2000-11-25 15:26:10 geuzaine Exp $ # # Makefile for "libSataStr.a" # diff --git a/Geo/Makefile b/Geo/Makefile index 2737ad687a..875e8be3c6 100644 --- a/Geo/Makefile +++ b/Geo/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.4 2000-11-25 15:26:10 geuzaine Exp $ # # Makefile for "libGeo.a" # diff --git a/Geo/Print_Geo.cpp b/Geo/Print_Geo.cpp index 3ac7c173a1..0378ef2d55 100644 --- a/Geo/Print_Geo.cpp +++ b/Geo/Print_Geo.cpp @@ -1,4 +1,4 @@ -/* $Id: Print_Geo.cpp,v 1.4 2000-11-24 13:21:52 geuzaine Exp $ */ +/* $Id: Print_Geo.cpp,v 1.5 2000-11-25 15:26:10 geuzaine Exp $ */ #include "Gmsh.h" #include "Geo.h" @@ -23,20 +23,20 @@ void Print_Nurbs (Curve *c, FILE *f){ for(i=0;i<List_Nbr(c->Control_Points);i++){ List_Read(c->Control_Points,i,&v); if(!i) - fprintf(FOUT,"%3d",v->Num); + fprintf(FOUT,"%d",v->Num); else - fprintf(FOUT,",%3d",v->Num); + fprintf(FOUT,", %d",v->Num); if(i%8 == 7 && i!=List_Nbr(c->Control_Points)-1)fprintf(FOUT,"\n"); } fprintf(f,"}\n"); fprintf(f,"Knots {"); for(j=0;j<List_Nbr(c->Control_Points)+c->degre+1;j++){ if(!j)fprintf(f,"%g",c->k[j]); - else fprintf(f,",%g",c->k[j]); + else fprintf(f,", %g",c->k[j]); if(j%5 == 4 && j!=List_Nbr(c->Control_Points)+c->degre)fprintf(FOUT,"\n"); } fprintf(f,"}"); - fprintf(f,"Order %3d;\n\n",c->degre); + fprintf(f,"Order %d;\n\n",c->degre); } void Print_Curve(void *a, void *b){ @@ -73,7 +73,7 @@ void Print_Curve(void *a, void *b){ for(i=0;i<List_Nbr(c->Control_Points);i++){ List_Read(c->Control_Points,i,&v); if(i) - fprintf(FOUT,",%d",v->Num); + fprintf(FOUT,", %d",v->Num); else fprintf(FOUT,"{%d",v->Num); if(i%6 == 7)fprintf(FOUT,"\n"); @@ -84,7 +84,7 @@ void Print_Curve(void *a, void *b){ case MSH_SEGM_CIRC_INV: case MSH_SEGM_ELLI: case MSH_SEGM_ELLI_INV: - fprintf(FOUT,"} Plane{%g,%g,%g};\n", + fprintf(FOUT,"} Plane{%g, %g, %g};\n", c->Circle.n[0],c->Circle.n[1],c->Circle.n[2]); break; default : @@ -109,9 +109,9 @@ void Print_Surface(void *a, void *b){ for(i=0;i<List_Nbr(s->s.Generatrices);i++){ List_Read(s->s.Generatrices,i,&c); if(i) - fprintf(FOUT,",%3d",c->Num); + fprintf(FOUT,", %d",c->Num); else - fprintf(FOUT,"{%3d",c->Num); + fprintf(FOUT,"{%d",c->Num); } fprintf(FOUT,"};\n"); } @@ -133,9 +133,9 @@ void Print_Surface(void *a, void *b){ for(j=0;j<s->Nu;j++){ List_Read(s->Control_Points,j+s->Nu *i,&v); if(!j) - fprintf(FOUT,"%3d",v->Num); + fprintf(FOUT,"%d",v->Num); else - fprintf(FOUT,",%3d",v->Num); + fprintf(FOUT,", %d",v->Num); } if(i!=s->Nv-1) fprintf(FOUT,"},\n"); @@ -145,16 +145,16 @@ void Print_Surface(void *a, void *b){ fprintf(FOUT,"\t\tKnots\n\t\t{"); for(j=0;j<s->Nu+s->OrderU+1;j++){ if(!j)fprintf(FOUT,"%g",s->ku[j]); - else fprintf(FOUT,",%g",s->ku[j]); + else fprintf(FOUT,", %g",s->ku[j]); if(j%5 == 4 && j!=s->Nu + s->OrderU)fprintf(FOUT,"\n\t\t"); } fprintf(FOUT,"}\n\t\t{"); for(j=0;j<s->Nv+s->OrderV+1;j++){ if(!j)fprintf(FOUT,"%g",s->kv[j]); - else fprintf(FOUT,",%g",s->kv[j]); + else fprintf(FOUT,", %g",s->kv[j]); if(j%5 == 4 && j!=s->Nv + s->OrderV)fprintf(FOUT,"\n\t\t"); } - fprintf(FOUT,"}\n\t\tOrder %3d %3d;\n\n",s->OrderU,s->OrderV); + fprintf(FOUT,"}\n\t\tOrder %d %d;\n\n",s->OrderU,s->OrderV); break; } } diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp index 39bb022f8f..61ddfaf8d5 100644 --- a/Graphics/Draw.cpp +++ b/Graphics/Draw.cpp @@ -1,4 +1,4 @@ -/* $Id: Draw.cpp,v 1.3 2000-11-23 14:11:32 geuzaine Exp $ */ +/* $Id: Draw.cpp,v 1.4 2000-11-25 15:26:10 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -235,7 +235,7 @@ void Replot(void){ /* e n t i t y s e l e c t i o n */ /* ------------------------------------------------------------------------ */ -void process_selection(int x, int y, int *n, GLuint *ii, GLuint *jj){ +void Process_SelectionBuffer(int x, int y, int *n, GLuint *ii, GLuint *jj){ GLuint selectBuf[SELECTION_BUFFER_SIZE]; GLint i,j,hits,names,*ptr; @@ -271,8 +271,8 @@ void process_selection(int x, int y, int *n, GLuint *ii, GLuint *jj){ *n = hits; } -void filtre_selection(int n, GLuint *typ, GLuint *ient, Vertex **thev, - Curve **thec, Surface **thes, Mesh *m){ +void Filter_SelectionBuffer(int n, GLuint *typ, GLuint *ient, Vertex **thev, + Curve **thec, Surface **thes, Mesh *m){ Vertex *v=NULL, V; Curve *c=NULL, C; @@ -289,26 +289,20 @@ void filtre_selection(int n, GLuint *typ, GLuint *ient, Vertex **thev, for(i=0;i<n;i++){ if(typ[i] == typmin){ switch(typ[i]){ - case 0: - v = &V; + case 0: + v = &V; v->Num = ient[i]; - if(Tree_Query(m->Points,&v)){ - *thev = v; - } + if(Tree_Query(m->Points,&v)) *thev = v; break; case 1: c = &C; c->Num = ient[i]; - if(Tree_Query(m->Curves,&c)){ - *thec = c; - } + if(Tree_Query(m->Curves,&c)) *thec = c; break; case 2: s = &S; s->Num = ient[i]; - if(Tree_Query(m->Surfaces,&s)){ - *thes = s; - } + if(Tree_Query(m->Surfaces,&s)) *thes = s; break; } } @@ -346,12 +340,12 @@ int SelectEntity(int type, Vertex **v, Curve **c, Surface **s){ if(keysym == XK_e) return(-1); break; case ButtonPress : - process_selection(event.xbutton.x, event.xbutton.y, &hits, ii, jj); - filtre_selection(hits,ii,jj,v,c,s,&M); + Process_SelectionBuffer(event.xbutton.x, event.xbutton.y, &hits, ii, jj); + Filter_SelectionBuffer(hits,ii,jj,v,c,s,&M); if(check_type(type,*v,*c,*s)){ - begin_highlight(); - highlight_entity(*v,*c,*s,1); - end_highlight(1); + BeginHighlight(); + HighlightEntity(*v,*c,*s,1); + EndHighlight(1); return(event.xbutton.button); } } @@ -364,14 +358,14 @@ int SelectEntity(int x, int y, Vertex **v, Curve **c, Surface **s){ int hits,i,j; GLuint ii[SELECTION_BUFFER_SIZE],jj[SELECTION_BUFFER_SIZE]; - process_selection(x, y, &hits, ii, jj); + Process_SelectionBuffer(x, y, &hits, ii, jj); *v = NULL; *s = NULL; *c = NULL; - filtre_selection(hits,ii,jj,v,c,s,&M); - begin_highlight(); - highlight_entity(*v,*c,*s,1); - end_highlight(1); + Filter_SelectionBuffer(hits,ii,jj,v,c,s,&M); + BeginHighlight(); + HighlightEntity(*v,*c,*s,1); + EndHighlight(1); return(1); } diff --git a/Graphics/Draw.h b/Graphics/Draw.h index fdbf7e0b04..ffd7a212ec 100644 --- a/Graphics/Draw.h +++ b/Graphics/Draw.h @@ -1,4 +1,4 @@ -/* $Id: Draw.h,v 1.4 2000-11-24 12:50:01 geuzaine Exp $ */ +/* $Id: Draw.h,v 1.5 2000-11-25 15:26:10 geuzaine Exp $ */ #ifndef _DRAW_H_ #define _DRAW_H_ @@ -32,10 +32,10 @@ void ColorSwitch(int i); int SelectEntity(int type, Vertex **v, Curve **c, Surface **s); void ZeroHighlight(Mesh *m); -void begin_highlight(void); -void end_highlight(int permanent); -void highlight_entity(Vertex *v,Curve *c, Surface *s, int permanent); -void highlight_entity_num(int v, int c, int s, int permanant); +void BeginHighlight(void); +void EndHighlight(int permanent); +void HighlightEntity(Vertex *v,Curve *c, Surface *s, int permanent); +void HighlightEntityNum(int v, int c, int s, int permanant); void Draw3d(void); void Draw2d(void); @@ -72,13 +72,14 @@ void Draw_Extruded_Surfaces(void *a, void *b); void Draw_Simplex_Volume (void *a, void *b); void Draw_Hexahedron_Volume (void *a, void *b); void Draw_Prism_Volume (void *a, void *b); -void Draw_Post_Simplex (Post_View * View, Post_Simplex * s, - double ValMin, double ValMax, double Raise[3][5]); -void Draw_Post_Triangle (Post_View * View, Post_Triangle * t, + +void Draw_Post_Tetrahedron (Post_View * View, Post_Simplex * s, + double ValMin, double ValMax, double Raise[3][5]); +void Draw_Post_Triangle (Post_View * View, Post_Simplex * t, double ValMin, double ValMax, double Raise[3][5]); -void Draw_Post_Line (Post_View * View, Post_Line * l, +void Draw_Post_Line (Post_View * View, Post_Simplex * l, double ValMin, double ValMax, double Raise[3][5]); -void Draw_Post_Point (Post_View * View, Post_Point * p, +void Draw_Post_Point (Post_View * View, Post_Simplex * p, double ValMin, double ValMax, double Raise[3][5]); #endif diff --git a/Graphics/Geom.cpp b/Graphics/Geom.cpp index 2d52ac2221..76c968bc60 100644 --- a/Graphics/Geom.cpp +++ b/Graphics/Geom.cpp @@ -1,4 +1,4 @@ -/* $Id: Geom.cpp,v 1.3 2000-11-23 23:20:34 geuzaine Exp $ */ +/* $Id: Geom.cpp,v 1.4 2000-11-25 15:26:10 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -840,7 +840,7 @@ void Draw_Axes (double s) { /* H i g h l i g h t */ /* ------------------------------------------------------------------------ */ -void begin_highlight(void){ +void BeginHighlight(void){ if(CTX.geom.highlight){ Highlighted = 1; if(CTX.overlay){ @@ -856,7 +856,7 @@ void begin_highlight(void){ } -void end_highlight(int permanent){ +void EndHighlight(int permanent){ Highlighted = 0; if(permanent){ Init(); @@ -870,7 +870,7 @@ void end_highlight(int permanent){ } } -void highlight_entity(Vertex *v,Curve *c, Surface *s, int permanent){ +void HighlightEntity(Vertex *v,Curve *c, Surface *s, int permanent){ Curve *cc; Vertex *v1,*v2; @@ -922,7 +922,7 @@ void highlight_entity(Vertex *v,Curve *c, Surface *s, int permanent){ } -void highlight_entity_num(int v, int c, int s, int permanant){ +void HighlightEntityNum(int v, int c, int s, int permanant){ Vertex *pv,V; Curve *pc,C; Surface *ps,S; @@ -930,21 +930,21 @@ void highlight_entity_num(int v, int c, int s, int permanant){ pv = &V; pv->Num = v; if(Tree_Query(THEM->Vertices,&pv)){ - highlight_entity(pv,NULL,NULL,permanant); + HighlightEntity(pv,NULL,NULL,permanant); } } if(c){ pc = &C; pc->Num = c; if(Tree_Query(THEM->Curves,&pc)){ - highlight_entity(NULL,pc,NULL,permanant); + HighlightEntity(NULL,pc,NULL,permanant); } } if(s){ ps = &S; ps->Num = s; if(Tree_Query(THEM->Surfaces,&ps)){ - highlight_entity(NULL,NULL,ps,permanant); + HighlightEntity(NULL,NULL,ps,permanant); } } glFlush(); diff --git a/Graphics/Makefile b/Graphics/Makefile index 14119fcfcb..d3ecbcff90 100644 --- a/Graphics/Makefile +++ b/Graphics/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.3 2000-11-25 15:26:10 geuzaine Exp $ # # Makefile for "libGraphics.a" # @@ -29,9 +30,6 @@ SRC = Draw.cpp \ Geom.cpp \ Post.cpp \ PostSimplex.cpp \ - PostTriangle.cpp \ - PostLine.cpp \ - PostPoint.cpp \ Iso.cpp \ Entity.cpp \ Scale.cpp \ diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp index 8fed01a402..69d028b1d9 100644 --- a/Graphics/Post.cpp +++ b/Graphics/Post.cpp @@ -1,4 +1,4 @@ -/* $Id: Post.cpp,v 1.3 2000-11-23 23:20:34 geuzaine Exp $ */ +/* $Id: Post.cpp,v 1.4 2000-11-25 15:26:10 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -74,35 +74,6 @@ void RaiseFill(int i, double Val, double ValMin, double Raise[3][5]){ } -int fcmp_Post_Triangle(const void *a, const void *b){ - return 0; - -#if 0 - Post_Triangle *PT; - double bary1[3], bary2[3]; - - /* sorting % eye with barycenters */ - - z1 = (PT->X[1]+View->Offset[0]+Raise[0][1]) + (PT->X[0]+View->Offset[0]+Raise[0][0]); - y1y0 = (PT->Y[1]+View->Offset[1]+Raise[1][1]) - (PT->Y[0]+View->Offset[1]+Raise[1][0]); - z1z0 = (PT->Z[1]+View->Offset[2]+Raise[2][1]) - (PT->Z[0]+View->Offset[2]+Raise[2][0]); - - x2x0 = (PT->X[2]+View->Offset[0]+Raise[0][2]) - (PT->X[0]+View->Offset[0]+Raise[0][0]); - y2y0 = (PT->Y[2]+View->Offset[1]+Raise[1][2]) - (PT->Y[0]+View->Offset[1]+Raise[1][0]); - z2z0 = (PT->Z[2]+View->Offset[2]+Raise[2][2]) - (PT->Z[0]+View->Offset[2]+Raise[2][0]); - - q = *(GL2PSprimitive**)a; - w = *(GL2PSprimitive**)b; - diff = q->depth - w->depth; - if(diff > 0.) - return 1; - else if(diff < 0.) - return -1; - else - return 0; -#endif -} - /* ------------------------------------------------------------------------ D r a w _ P o s t ------------------------------------------------------------------------ */ @@ -168,26 +139,26 @@ void Draw_Post (void) { for(k=0;k<5;k++) Raise[j][k] = 0. ; } - if((n = List_Nbr(v->Simplices))) + if((n = List_Nbr(v->Tetrahedra))) for(j=0 ; j<n ; j++) - Draw_Post_Simplex(v, (Post_Simplex*)List_Pointer(v->Simplices,j), - ValMin, ValMax, Raise); + Draw_Post_Tetrahedron(v, (Post_Simplex*)List_Pointer(v->Tetrahedra,j), + ValMin, ValMax, Raise); - if((n = List_Nbr(v->Triangles))){ - //if(there is alpha)List_Sort(v->Triangles, fcmp_Post_Triangle); + //if(there is alpha)List_Sort(v->Triangles, fcmpTriangle); + + if((n = List_Nbr(v->Triangles))) for(j=0 ; j<n ; j++) - Draw_Post_Triangle(v, (Post_Triangle*)List_Pointer(v->Triangles,j), + Draw_Post_Triangle(v, (Post_Simplex*)List_Pointer(v->Triangles,j), ValMin, ValMax, Raise); - } - + if((n = List_Nbr(v->Lines))) for(j=0 ; j<n ; j++) - Draw_Post_Line(v, (Post_Line*)List_Pointer(v->Lines,j), + Draw_Post_Line(v, (Post_Simplex*)List_Pointer(v->Lines,j), ValMin, ValMax, Raise); if((n = List_Nbr(v->Points))) for(j=0 ; j<n ; j++) - Draw_Post_Point(v, (Post_Point*)List_Pointer(v->Points,j), + Draw_Post_Point(v, (Post_Simplex*)List_Pointer(v->Points,j), ValMin, ValMax, Raise); if(CTX.display_lists){ diff --git a/Graphics/PostLine.cpp b/Graphics/PostLine.cpp deleted file mode 100644 index b6ef048569..0000000000 --- a/Graphics/PostLine.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/* $Id: PostLine.cpp,v 1.2 2000-11-23 14:11:32 geuzaine Exp $ */ - -#include "Gmsh.h" -#include "GmshUI.h" -#include "Geo.h" -#include "Mesh.h" -#include "Draw.h" -#include "Iso.h" -#include "Context.h" - -extern Context_T CTX; -extern double LC; - -void Draw_Post_Line(Post_View *View, Post_Line *PL, - double ValMin, double ValMax, double Raise[3][5]){ - - int i,k,nb=0; - double d,dx,dy,dz,fact; - double Xp[5],Yp[5],Zp[5],value[5],thev; - char Num[100] ; - - switch(PL->Type){ - case DRAW_POST_SCALAR: - - if(View->IntervalsType==DRAW_POST_NUMERIC){ - d = (PL->V[2*View->TimeStep]+PL->V[2*View->TimeStep+1]) / 2.; - if(d >= ValMin && d <= ValMax){ - sprintf(Num, "%g", d); - glColor4ubv((GLubyte*)&CTX.color.fg); - glRasterPos3d((PL->X[0] + PL->X[1])/2., - (PL->Y[0] + PL->Y[1])/2., - (PL->Z[0] + PL->Z[1])/2.); - Draw_String(Num); - } - break ; - } - - glDisable(GL_LINE_STIPPLE); - for(k=0 ; k<2 ; k++) RaiseFill(k, PL->V[2*View->TimeStep+k], ValMin, Raise); - - if(View->IntervalsType==DRAW_POST_CONTINUOUS){ - glBegin(GL_LINES); - Palette2(View,ValMin,ValMax,PL->V[2*View->TimeStep]); - glVertex3d(PL->X[0]+View->Offset[0]+Raise[0][0], - PL->Y[0]+View->Offset[1]+Raise[1][0], - PL->Z[0]+View->Offset[2]+Raise[2][0]); - Palette2(View,ValMin,ValMax,PL->V[2*View->TimeStep+1]); - glVertex3d(PL->X[1]+View->Offset[0]+Raise[0][1], - PL->Y[1]+View->Offset[1]+Raise[1][1], - PL->Z[1]+View->Offset[2]+Raise[2][1]); - glEnd(); - } - else{ - for(k=0 ; k<View->NbIso ; k++){ - Palette(View,View->NbIso,k); - if(View->IntervalsType==DRAW_POST_DISCRETE){ - CutLine1D(PL->X,PL->Y,PL->Z,&PL->V[2*View->TimeStep], - View->GVFI(ValMin,ValMax,View->NbIso+1,k), - View->GVFI(ValMin,ValMax,View->NbIso+1,k+1), - ValMin,ValMax,Xp,Yp,Zp,&nb,value); - if(nb == 2){ - for(i=0;i<2;i++) RaiseFill(i,value[i],ValMin,Raise); - Draw_Line(Xp,Yp,Zp,View->Offset,Raise); - } - } - else{ - thev = View->GVFI(ValMin,ValMax,View->NbIso,k); - CutLine0D(PL->X,PL->Y,PL->Z,&PL->V[2*View->TimeStep], - thev, ValMin,ValMax,Xp,Yp,Zp,&nb); - if(nb){ - RaiseFill(0,thev,ValMin,Raise); - Draw_Point(Xp,Yp,Zp,View->Offset,Raise); - } - } - } - - } - break; - - case DRAW_POST_VECTOR: - if(View->ArrowLocation == DRAW_POST_LOCATE_COG){ - dx = 0.5 * (PL->V[6*View->TimeStep] +PL->V[6*View->TimeStep+3]); - dy = 0.5 * (PL->V[6*View->TimeStep+1]+PL->V[6*View->TimeStep+4]); - dz = 0.5 * (PL->V[6*View->TimeStep+2]+PL->V[6*View->TimeStep+5]); - d = sqrt(dx*dx+dy*dy+dz*dz); - if(d!=0.0 && d>=ValMin && d<=ValMax){ - Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); - fact = 2.e-4 * LC * View->ArrowScale/View->Max ; - if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ - dx /= d ; dy /= d ; dz /= d ; - d = log10(d/ValMin) ; - dx *= d ; dy *= d ; dz *= d ; - } - RaiseFill(0, d, ValMin, Raise); - Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, - 0.5 * (PL->X[0] + PL->X[1]), - 0.5 * (PL->Y[0] + PL->Y[1]), - 0.5 * (PL->Z[0] + PL->Z[1]), - fact*d, fact*dx, fact*dy, fact*dz, - View->Offset, Raise); - } - } - else{ - for(k=0 ; k<2 ; k++){ - dx = PL->V[6*View->TimeStep +3*k] ; - dy = PL->V[6*View->TimeStep+1+3*k] ; - dz = PL->V[6*View->TimeStep+2+3*k] ; - d = sqrt(dx*dx+dy*dy+dz*dz); - if(d!=0.0 && d>=ValMin && d<=ValMax){ - Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); - fact = 2.e-4 * LC * View->ArrowScale/View->Max ; - if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ - dx /= d ; dy /= d ; dz /= d ; - d = log10(d/ValMin) ; - dx *= d ; dy *= d ; dz *= d ; - } - RaiseFill(0, d, ValMin, Raise); - Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, - PL->X[k], PL->Y[k], PL->Z[k], - fact*d, fact*dx, fact*dy, fact*dz, - View->Offset, Raise); - } - } - } - break; - - case DRAW_POST_TENSOR : - break; - - } -} - diff --git a/Graphics/PostPoint.cpp b/Graphics/PostPoint.cpp deleted file mode 100644 index df55556918..0000000000 --- a/Graphics/PostPoint.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* $Id: PostPoint.cpp,v 1.2 2000-11-23 14:11:32 geuzaine Exp $ */ - -#include "Gmsh.h" -#include "GmshUI.h" -#include "Geo.h" -#include "Mesh.h" -#include "Draw.h" -#include "Iso.h" -#include "Context.h" - -extern Context_T CTX; -extern double LC; - -int GiveIndexFromValue_Lin(double ValMin, double ValMax, int NbIso, double Val) ; - -void Draw_Post_Point(Post_View *View, Post_Point *PP, - double ValMin, double ValMax, double Raise[3][5]){ - - int i; - double d,dx,dy,dz,fact; - - switch(PP->Type){ - - case DRAW_POST_SCALAR: - d = PP->V[View->TimeStep]; - if(d>=ValMin && d<=ValMax){ - Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); - glBegin(GL_POINTS); - glVertex3d(PP->X, PP->Y, PP->Z); - glEnd(); - } - break; - - case DRAW_POST_VECTOR: - - if(View->ArrowType == DRAW_POST_DISPLACEMENT){ - fact = View->ArrowScale/100. ; - glColor4ubv((GLubyte*)&CTX.color.fg); - glBegin(GL_POINTS); - glVertex3d(fact*PP->V[3*View->TimeStep], - fact*PP->V[3*View->TimeStep+1], - fact*PP->V[3*View->TimeStep+2]); - glEnd(); - if(View->TimeStep){ - glBegin(GL_LINE_STRIP); - for(i=0 ; i<View->TimeStep+1 ; i++) - glVertex3d(fact*PP->V[3*(View->TimeStep-i)], - fact*PP->V[3*(View->TimeStep-i)+1], - fact*PP->V[3*(View->TimeStep-i)+2]); - glEnd(); - } - break; - } - - dx = PP->V[3*View->TimeStep]; - dy = PP->V[3*View->TimeStep+1]; - dz = PP->V[3*View->TimeStep+2]; - d = sqrt(dx*dx+dy*dy+dz*dz); - - if(d!=0.0 && d>=ValMin && d<=ValMax){ - - Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); - - fact = 2.e-4 * LC * View->ArrowScale/View->Max ; - - if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ - dx /= d ; dy /= d ; dz /= d ; - d = log10(d/ValMin) ; - dx *= d ; dy *= d ; dz *= d ; - } - - RaiseFill(0, d, ValMin, Raise); - - Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, - PP->X, PP->Y, PP->Z, - fact*d, fact*dx, fact*dy, fact*dz, - View->Offset, Raise); - } - break; - - case DRAW_POST_TENSOR : - break; - - } -} - diff --git a/Graphics/PostSimplex.cpp b/Graphics/PostSimplex.cpp index fce1808cdc..8d62f22410 100644 --- a/Graphics/PostSimplex.cpp +++ b/Graphics/PostSimplex.cpp @@ -1,4 +1,4 @@ -/* $Id: PostSimplex.cpp,v 1.2 2000-11-23 14:11:32 geuzaine Exp $ */ +/* $Id: PostSimplex.cpp,v 1.3 2000-11-25 15:26:10 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -11,8 +11,423 @@ extern Context_T CTX; extern double LC; -void Draw_Post_Simplex(Post_View *View, Post_Simplex *PS, - double ValMin, double ValMax, double Raise[3][5]){ +/* ------------------------------------------------------------------------ */ +/* P o i n t s */ +/* ------------------------------------------------------------------------ */ + +void Draw_Post_Point(Post_View *View, Post_Simplex *PP, + double ValMin, double ValMax, double Raise[3][5]){ + int i; + double d,dx,dy,dz,fact; + + switch(PP->Type){ + + case DRAW_POST_SCALAR: + d = PP->V[View->TimeStep]; + if(d>=ValMin && d<=ValMax){ + Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); + glBegin(GL_POINTS); + glVertex3d(PP->X[0], PP->Y[0], PP->Z[0]); + glEnd(); + } + break; + + case DRAW_POST_VECTOR: + + if(View->ArrowType == DRAW_POST_DISPLACEMENT){ + fact = View->ArrowScale/100. ; + glColor4ubv((GLubyte*)&CTX.color.fg); + glBegin(GL_POINTS); + glVertex3d(fact*PP->V[3*View->TimeStep], + fact*PP->V[3*View->TimeStep+1], + fact*PP->V[3*View->TimeStep+2]); + glEnd(); + if(View->TimeStep){ + glBegin(GL_LINE_STRIP); + for(i=0 ; i<View->TimeStep+1 ; i++) + glVertex3d(fact*PP->V[3*(View->TimeStep-i)], + fact*PP->V[3*(View->TimeStep-i)+1], + fact*PP->V[3*(View->TimeStep-i)+2]); + glEnd(); + } + break; + } + + dx = PP->V[3*View->TimeStep]; + dy = PP->V[3*View->TimeStep+1]; + dz = PP->V[3*View->TimeStep+2]; + d = sqrt(dx*dx+dy*dy+dz*dz); + + if(d!=0.0 && d>=ValMin && d<=ValMax){ + + Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); + + fact = 2.e-4 * LC * View->ArrowScale/View->Max ; + + if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ + dx /= d ; dy /= d ; dz /= d ; + d = log10(d/ValMin) ; + dx *= d ; dy *= d ; dz *= d ; + } + + RaiseFill(0, d, ValMin, Raise); + + Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, + PP->X[0], PP->Y[0], PP->Z[0], + fact*d, fact*dx, fact*dy, fact*dz, + View->Offset, Raise); + } + break; + + case DRAW_POST_TENSOR : + break; + + } +} + +/* ------------------------------------------------------------------------ */ +/* L i n e s */ +/* ------------------------------------------------------------------------ */ + +void Draw_Post_Line(Post_View *View, Post_Simplex *PL, + double ValMin, double ValMax, double Raise[3][5]){ + + int i,k,nb=0; + double d,dx,dy,dz,fact; + double Xp[5],Yp[5],Zp[5],value[5],thev; + char Num[100] ; + + switch(PL->Type){ + case DRAW_POST_SCALAR: + + if(View->IntervalsType==DRAW_POST_NUMERIC){ + d = (PL->V[2*View->TimeStep]+PL->V[2*View->TimeStep+1]) / 2.; + if(d >= ValMin && d <= ValMax){ + sprintf(Num, "%g", d); + glColor4ubv((GLubyte*)&CTX.color.fg); + glRasterPos3d((PL->X[0] + PL->X[1])/2., + (PL->Y[0] + PL->Y[1])/2., + (PL->Z[0] + PL->Z[1])/2.); + Draw_String(Num); + } + break ; + } + + glDisable(GL_LINE_STIPPLE); + for(k=0 ; k<2 ; k++) RaiseFill(k, PL->V[2*View->TimeStep+k], ValMin, Raise); + + if(View->IntervalsType==DRAW_POST_CONTINUOUS){ + glBegin(GL_LINES); + Palette2(View,ValMin,ValMax,PL->V[2*View->TimeStep]); + glVertex3d(PL->X[0]+View->Offset[0]+Raise[0][0], + PL->Y[0]+View->Offset[1]+Raise[1][0], + PL->Z[0]+View->Offset[2]+Raise[2][0]); + Palette2(View,ValMin,ValMax,PL->V[2*View->TimeStep+1]); + glVertex3d(PL->X[1]+View->Offset[0]+Raise[0][1], + PL->Y[1]+View->Offset[1]+Raise[1][1], + PL->Z[1]+View->Offset[2]+Raise[2][1]); + glEnd(); + } + else{ + for(k=0 ; k<View->NbIso ; k++){ + Palette(View,View->NbIso,k); + if(View->IntervalsType==DRAW_POST_DISCRETE){ + CutLine1D(PL->X,PL->Y,PL->Z,&PL->V[2*View->TimeStep], + View->GVFI(ValMin,ValMax,View->NbIso+1,k), + View->GVFI(ValMin,ValMax,View->NbIso+1,k+1), + ValMin,ValMax,Xp,Yp,Zp,&nb,value); + if(nb == 2){ + for(i=0;i<2;i++) RaiseFill(i,value[i],ValMin,Raise); + Draw_Line(Xp,Yp,Zp,View->Offset,Raise); + } + } + else{ + thev = View->GVFI(ValMin,ValMax,View->NbIso,k); + CutLine0D(PL->X,PL->Y,PL->Z,&PL->V[2*View->TimeStep], + thev, ValMin,ValMax,Xp,Yp,Zp,&nb); + if(nb){ + RaiseFill(0,thev,ValMin,Raise); + Draw_Point(Xp,Yp,Zp,View->Offset,Raise); + } + } + } + + } + break; + + case DRAW_POST_VECTOR: + if(View->ArrowLocation == DRAW_POST_LOCATE_COG){ + dx = 0.5 * (PL->V[6*View->TimeStep] +PL->V[6*View->TimeStep+3]); + dy = 0.5 * (PL->V[6*View->TimeStep+1]+PL->V[6*View->TimeStep+4]); + dz = 0.5 * (PL->V[6*View->TimeStep+2]+PL->V[6*View->TimeStep+5]); + d = sqrt(dx*dx+dy*dy+dz*dz); + if(d!=0.0 && d>=ValMin && d<=ValMax){ + Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); + fact = 2.e-4 * LC * View->ArrowScale/View->Max ; + if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ + dx /= d ; dy /= d ; dz /= d ; + d = log10(d/ValMin) ; + dx *= d ; dy *= d ; dz *= d ; + } + RaiseFill(0, d, ValMin, Raise); + Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, + 0.5 * (PL->X[0] + PL->X[1]), + 0.5 * (PL->Y[0] + PL->Y[1]), + 0.5 * (PL->Z[0] + PL->Z[1]), + fact*d, fact*dx, fact*dy, fact*dz, + View->Offset, Raise); + } + } + else{ + for(k=0 ; k<2 ; k++){ + dx = PL->V[6*View->TimeStep +3*k] ; + dy = PL->V[6*View->TimeStep+1+3*k] ; + dz = PL->V[6*View->TimeStep+2+3*k] ; + d = sqrt(dx*dx+dy*dy+dz*dz); + if(d!=0.0 && d>=ValMin && d<=ValMax){ + Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); + fact = 2.e-4 * LC * View->ArrowScale/View->Max ; + if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ + dx /= d ; dy /= d ; dz /= d ; + d = log10(d/ValMin) ; + dx *= d ; dy *= d ; dz *= d ; + } + RaiseFill(0, d, ValMin, Raise); + Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, + PL->X[k], PL->Y[k], PL->Z[k], + fact*d, fact*dx, fact*dy, fact*dz, + View->Offset, Raise); + } + } + } + break; + + case DRAW_POST_TENSOR : + break; + + } +} + + +/* ------------------------------------------------------------------------ */ +/* T r i a n g l e s */ +/* ------------------------------------------------------------------------ */ + +void Draw_Post_Triangle(Post_View *View, Post_Simplex *PT, + double ValMin, double ValMax, double Raise[3][5]){ + + int i, k, m, nb=0; + double d,dx,dy,dz,fact; + double x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, nn[3]; + double xx[3],yy[3],zz[3]; + double Xp[5],Yp[5],Zp[5],value[5],thev; + char Num[100] ; + + if(View->ShowElement) + glEnable(GL_POLYGON_OFFSET_FILL); + + switch(PT->Type){ + + case DRAW_POST_SCALAR: + + if(View->IntervalsType==DRAW_POST_NUMERIC){ + d = (PT->V[3*View->TimeStep]+PT->V[3*View->TimeStep+1]+PT->V[3*View->TimeStep+2]) / 3.; + if(d >= ValMin && d <= ValMax){ + sprintf(Num, "%g", d); + glColor4ubv((GLubyte*)&CTX.color.fg); + glRasterPos3d((PT->X[0] + PT->X[1] + PT->X[2])/3., + (PT->Y[0] + PT->Y[1] + PT->Y[2])/3., + (PT->Z[0] + PT->Z[1] + PT->Z[2])/3.); + Draw_String(Num); + } + break ; + } + + if(View->IntervalsType!=DRAW_POST_ISO) + for(i=0;i<3;i++)RaiseFill(i, PT->V[3*View->TimeStep+i], ValMin, Raise); + + if(View->Light){ + x1x0 = (PT->X[1]+Raise[0][1]) - (PT->X[0]+Raise[0][0]); + y1y0 = (PT->Y[1]+Raise[1][1]) - (PT->Y[0]+Raise[1][0]); + z1z0 = (PT->Z[1]+Raise[2][1]) - (PT->Z[0]+Raise[2][0]); + x2x0 = (PT->X[2]+Raise[0][2]) - (PT->X[0]+Raise[0][0]); + y2y0 = (PT->Y[2]+Raise[1][2]) - (PT->Y[0]+Raise[1][0]); + z2z0 = (PT->Z[2]+Raise[2][2]) - (PT->Z[0]+Raise[2][0]); + nn[0] = y1y0 * z2z0 - z1z0 * y2y0 ; + nn[1] = z1z0 * x2x0 - x1x0 * z2z0 ; + nn[2] = x1x0 * y2y0 - y1y0 * x2x0 ; + //norme(nn); unnecessary with glEnable(GL_NORMALIZE); + /* BOF BOF BOF + if(nn[2] < -0.1){ + nn[0] = -nn[0]; + nn[1] = -nn[1]; + nn[2] = -nn[2]; + } + */ + glNormal3dv(nn); + } + + if(View->IntervalsType==DRAW_POST_CONTINUOUS){ + if(PT->V[3*View->TimeStep] >=ValMin && PT->V[3*View->TimeStep] <=ValMax && + PT->V[3*View->TimeStep+1]>=ValMin && PT->V[3*View->TimeStep+1]<=ValMax && + PT->V[3*View->TimeStep+2]>=ValMin && PT->V[3*View->TimeStep+2]<=ValMax){ + glBegin(GL_TRIANGLES); + Palette2(View,ValMin,ValMax,PT->V[3*View->TimeStep]); + glVertex3d(PT->X[0]+View->Offset[0]+Raise[0][0], + PT->Y[0]+View->Offset[1]+Raise[1][0], + PT->Z[0]+View->Offset[2]+Raise[2][0]); + Palette2(View,ValMin,ValMax,PT->V[3*View->TimeStep+1]); + glVertex3d(PT->X[1]+View->Offset[0]+Raise[0][1], + PT->Y[1]+View->Offset[1]+Raise[1][1], + PT->Z[1]+View->Offset[2]+Raise[2][1]); + Palette2(View,ValMin,ValMax,PT->V[3*View->TimeStep+2]); + glVertex3d(PT->X[2]+View->Offset[0]+Raise[0][2], + PT->Y[2]+View->Offset[1]+Raise[1][2], + PT->Z[2]+View->Offset[2]+Raise[2][2]); + glEnd(); + } + else{ + CutTriangle2D(PT->X,PT->Y,PT->Z,&PT->V[3*View->TimeStep], + ValMin,ValMax,ValMin,ValMax, + Xp,Yp,Zp,&nb,value); + if(nb >= 3){ + glBegin(GL_POLYGON); + for(i=0;i<nb;i++){ + Palette2(View,ValMin,ValMax,value[i]); + RaiseFill(i,value[i],ValMin,Raise); + glVertex3d(Xp[i]+View->Offset[0]+Raise[0][i], + Yp[i]+View->Offset[1]+Raise[1][i], + Zp[i]+View->Offset[2]+Raise[2][i]); + } + glEnd(); + } + } + } + else{ + for(k=0 ; k<View->NbIso ; k++){ + if(View->IntervalsType==DRAW_POST_DISCRETE){ + Palette(View,View->NbIso,k); + CutTriangle2D(PT->X,PT->Y,PT->Z,&PT->V[3*View->TimeStep], + View->GVFI(ValMin,ValMax,View->NbIso+1,k), + View->GVFI(ValMin,ValMax,View->NbIso+1,k+1), + ValMin,ValMax, + Xp,Yp,Zp,&nb,value); + if(nb >= 3){ + for(i=0;i<nb;i++) RaiseFill(i,value[i],ValMin,Raise); + Draw_Polygon(nb,Xp,Yp,Zp,View->Offset,Raise); + } + } + else{ + Palette(View,View->NbIso,k); + + thev = View->GVFI(ValMin,ValMax,View->NbIso,k); + CutTriangle1D(PT->X,PT->Y,PT->Z,&PT->V[3*View->TimeStep], + thev, ValMin,ValMax,Xp,Yp,Zp,&nb); + if(nb == 2){ + for(i=0;i<2;i++) RaiseFill(i,thev,ValMin,Raise); + Draw_Line(Xp,Yp,Zp,View->Offset,Raise); + } + } + } + } + break; + + case DRAW_POST_VECTOR: + + if(View->ArrowType == DRAW_POST_DISPLACEMENT){ + fact = View->ArrowScale/100. ; + for(m=0;m<3;m++){ + xx[m] = PT->X[m] + fact * PT->V[9*View->TimeStep + 3 * m ]; + yy[m] = PT->Y[m] + fact * PT->V[9*View->TimeStep + 3 * m + 1]; + zz[m] = PT->Z[m] + fact * PT->V[9*View->TimeStep + 3 * m + 2]; + } + glEnable(GL_POLYGON_OFFSET_FILL); + glColor4ubv((GLubyte*)&CTX.color.bg); + if(View->IntervalsType!=DRAW_POST_ISO) + Draw_Polygon (3, xx, yy, zz, View->Offset, Raise); + glColor4ubv((GLubyte*)&CTX.color.fg); + glBegin(GL_LINE_LOOP); + for(m=0 ; m<3 ; m++) glVertex3d(xx[m], yy[m], zz[m]); + glEnd(); + glDisable(GL_POLYGON_OFFSET_FILL); + break; + } + + if(View->ArrowLocation == DRAW_POST_LOCATE_COG){ + dx = (PT->V[9*View->TimeStep] +PT->V[9*View->TimeStep+3]+PT->V[9*View->TimeStep+6])/3.; + dy = (PT->V[9*View->TimeStep+1]+PT->V[9*View->TimeStep+4]+PT->V[9*View->TimeStep+7])/3.; + dz = (PT->V[9*View->TimeStep+2]+PT->V[9*View->TimeStep+5]+PT->V[9*View->TimeStep+8])/3.; + d = sqrt(dx*dx+dy*dy+dz*dz); + if(d!=0.0 && d>=ValMin && d<=ValMax){ + Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); + fact = 2.e-4 * LC * View->ArrowScale/View->Max ; + if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ + dx /= d ; dy /= d ; dz /= d ; + d = log10(d/ValMin) ; + dx *= d ; dy *= d ; dz *= d ; + } + RaiseFill(0, d, ValMin, Raise); + Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, + (PT->X[0] + PT->X[1] + PT->X[2])/3., + (PT->Y[0] + PT->Y[1] + PT->Y[2])/3., + (PT->Z[0] + PT->Z[1] + PT->Z[2])/3., + fact*d, fact*dx, fact*dy, fact*dz, + View->Offset, Raise); + } + } + else{ + for(k=0 ; k<3 ; k++){ + dx = PT->V[9*View->TimeStep +3*k] ; + dy = PT->V[9*View->TimeStep+1+3*k] ; + dz = PT->V[9*View->TimeStep+2+3*k] ; + d = sqrt(dx*dx+dy*dy+dz*dz); + + if(d!=0.0 && d>=ValMin && d<=ValMax){ + Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); + fact = 2.e-4 * LC * View->ArrowScale/View->Max ; + if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ + dx /= d ; dy /= d ; dz /= d ; + d = log10(d/ValMin) ; + dx *= d ; dy *= d ; dz *= d ; + } + RaiseFill(0, d, ValMin, Raise); + Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, + PT->X[k], PT->Y[k], PT->Z[k], + fact*d, fact*dx, fact*dy, fact*dz, + View->Offset, Raise); + + } + } + } + break; + + case DRAW_POST_TENSOR : + break; + + } + + if(View->ShowElement){ + glDisable(GL_POLYGON_OFFSET_FILL) ; + glColor4ubv((GLubyte*)&CTX.color.fg); + glBegin(GL_LINE_LOOP); + for(i=0 ; i<3 ; i++) + glVertex3d(PT->X[i]+View->Offset[0]+Raise[0][i], + PT->Y[i]+View->Offset[1]+Raise[1][i], + PT->Z[i]+View->Offset[2]+Raise[2][i]); + glEnd(); + } + +} + + + + +/* ------------------------------------------------------------------------ */ +/* T e t r a h e d r a */ +/* ------------------------------------------------------------------------ */ + +void Draw_Post_Tetrahedron(Post_View *View, Post_Simplex *PS, + double ValMin, double ValMax, double Raise[3][5]){ int k; double d,dx,dy,dz,fact; diff --git a/Graphics/PostTriangle.cpp b/Graphics/PostTriangle.cpp deleted file mode 100644 index f27cca89d4..0000000000 --- a/Graphics/PostTriangle.cpp +++ /dev/null @@ -1,220 +0,0 @@ -/* $Id: PostTriangle.cpp,v 1.2 2000-11-23 14:11:32 geuzaine Exp $ */ - -#include "Gmsh.h" -#include "GmshUI.h" -#include "Geo.h" -#include "Mesh.h" -#include "Draw.h" -#include "Iso.h" -#include "Context.h" - -extern Context_T CTX; -extern double LC; - -void Draw_Post_Triangle(Post_View *View, Post_Triangle *PT, - double ValMin, double ValMax, double Raise[3][5]){ - - int i, k, m, nb=0; - double d,dx,dy,dz,fact; - double x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, nn[3]; - double xx[3],yy[3],zz[3]; - double Xp[5],Yp[5],Zp[5],value[5],thev; - char Num[100] ; - - if(View->ShowElement) - glEnable(GL_POLYGON_OFFSET_FILL); - - switch(PT->Type){ - - case DRAW_POST_SCALAR: - - if(View->IntervalsType==DRAW_POST_NUMERIC){ - d = (PT->V[3*View->TimeStep]+PT->V[3*View->TimeStep+1]+PT->V[3*View->TimeStep+2]) / 3.; - if(d >= ValMin && d <= ValMax){ - sprintf(Num, "%g", d); - glColor4ubv((GLubyte*)&CTX.color.fg); - glRasterPos3d((PT->X[0] + PT->X[1] + PT->X[2])/3., - (PT->Y[0] + PT->Y[1] + PT->Y[2])/3., - (PT->Z[0] + PT->Z[1] + PT->Z[2])/3.); - Draw_String(Num); - } - break ; - } - - if(View->IntervalsType!=DRAW_POST_ISO) - for(i=0;i<3;i++)RaiseFill(i, PT->V[3*View->TimeStep+i], ValMin, Raise); - - if(View->Light){ - x1x0 = (PT->X[1]+Raise[0][1]) - (PT->X[0]+Raise[0][0]); - y1y0 = (PT->Y[1]+Raise[1][1]) - (PT->Y[0]+Raise[1][0]); - z1z0 = (PT->Z[1]+Raise[2][1]) - (PT->Z[0]+Raise[2][0]); - x2x0 = (PT->X[2]+Raise[0][2]) - (PT->X[0]+Raise[0][0]); - y2y0 = (PT->Y[2]+Raise[1][2]) - (PT->Y[0]+Raise[1][0]); - z2z0 = (PT->Z[2]+Raise[2][2]) - (PT->Z[0]+Raise[2][0]); - nn[0] = y1y0 * z2z0 - z1z0 * y2y0 ; - nn[1] = z1z0 * x2x0 - x1x0 * z2z0 ; - nn[2] = x1x0 * y2y0 - y1y0 * x2x0 ; - //norme(nn); unnecessary with glEnable(GL_NORMALIZE); - /* BOF BOF BOF - if(nn[2] < -0.1){ - nn[0] = -nn[0]; - nn[1] = -nn[1]; - nn[2] = -nn[2]; - } - */ - glNormal3dv(nn); - } - - if(View->IntervalsType==DRAW_POST_CONTINUOUS){ - if(PT->V[3*View->TimeStep] >=ValMin && PT->V[3*View->TimeStep] <=ValMax && - PT->V[3*View->TimeStep+1]>=ValMin && PT->V[3*View->TimeStep+1]<=ValMax && - PT->V[3*View->TimeStep+2]>=ValMin && PT->V[3*View->TimeStep+2]<=ValMax){ - glBegin(GL_TRIANGLES); - Palette2(View,ValMin,ValMax,PT->V[3*View->TimeStep]); - glVertex3d(PT->X[0]+View->Offset[0]+Raise[0][0], - PT->Y[0]+View->Offset[1]+Raise[1][0], - PT->Z[0]+View->Offset[2]+Raise[2][0]); - Palette2(View,ValMin,ValMax,PT->V[3*View->TimeStep+1]); - glVertex3d(PT->X[1]+View->Offset[0]+Raise[0][1], - PT->Y[1]+View->Offset[1]+Raise[1][1], - PT->Z[1]+View->Offset[2]+Raise[2][1]); - Palette2(View,ValMin,ValMax,PT->V[3*View->TimeStep+2]); - glVertex3d(PT->X[2]+View->Offset[0]+Raise[0][2], - PT->Y[2]+View->Offset[1]+Raise[1][2], - PT->Z[2]+View->Offset[2]+Raise[2][2]); - glEnd(); - } - else{ - CutTriangle2D(PT->X,PT->Y,PT->Z,&PT->V[3*View->TimeStep], - ValMin,ValMax,ValMin,ValMax, - Xp,Yp,Zp,&nb,value); - if(nb >= 3){ - glBegin(GL_POLYGON); - for(i=0;i<nb;i++){ - Palette2(View,ValMin,ValMax,value[i]); - RaiseFill(i,value[i],ValMin,Raise); - glVertex3d(Xp[i]+View->Offset[0]+Raise[0][i], - Yp[i]+View->Offset[1]+Raise[1][i], - Zp[i]+View->Offset[2]+Raise[2][i]); - } - glEnd(); - } - } - } - else{ - for(k=0 ; k<View->NbIso ; k++){ - if(View->IntervalsType==DRAW_POST_DISCRETE){ - Palette(View,View->NbIso,k); - CutTriangle2D(PT->X,PT->Y,PT->Z,&PT->V[3*View->TimeStep], - View->GVFI(ValMin,ValMax,View->NbIso+1,k), - View->GVFI(ValMin,ValMax,View->NbIso+1,k+1), - ValMin,ValMax, - Xp,Yp,Zp,&nb,value); - if(nb >= 3){ - for(i=0;i<nb;i++) RaiseFill(i,value[i],ValMin,Raise); - Draw_Polygon(nb,Xp,Yp,Zp,View->Offset,Raise); - } - } - else{ - Palette(View,View->NbIso,k); - - thev = View->GVFI(ValMin,ValMax,View->NbIso,k); - CutTriangle1D(PT->X,PT->Y,PT->Z,&PT->V[3*View->TimeStep], - thev, ValMin,ValMax,Xp,Yp,Zp,&nb); - if(nb == 2){ - for(i=0;i<2;i++) RaiseFill(i,thev,ValMin,Raise); - Draw_Line(Xp,Yp,Zp,View->Offset,Raise); - } - } - } - } - break; - - case DRAW_POST_VECTOR: - - if(View->ArrowType == DRAW_POST_DISPLACEMENT){ - fact = View->ArrowScale/100. ; - for(m=0;m<3;m++){ - xx[m] = PT->X[m] + fact * PT->V[9*View->TimeStep + 3 * m ]; - yy[m] = PT->Y[m] + fact * PT->V[9*View->TimeStep + 3 * m + 1]; - zz[m] = PT->Z[m] + fact * PT->V[9*View->TimeStep + 3 * m + 2]; - } - glEnable(GL_POLYGON_OFFSET_FILL); - glColor4ubv((GLubyte*)&CTX.color.bg); - if(View->IntervalsType!=DRAW_POST_ISO) - Draw_Polygon (3, xx, yy, zz, View->Offset, Raise); - glColor4ubv((GLubyte*)&CTX.color.fg); - glBegin(GL_LINE_LOOP); - for(m=0 ; m<3 ; m++) glVertex3d(xx[m], yy[m], zz[m]); - glEnd(); - glDisable(GL_POLYGON_OFFSET_FILL); - break; - } - - if(View->ArrowLocation == DRAW_POST_LOCATE_COG){ - dx = (PT->V[9*View->TimeStep] +PT->V[9*View->TimeStep+3]+PT->V[9*View->TimeStep+6])/3.; - dy = (PT->V[9*View->TimeStep+1]+PT->V[9*View->TimeStep+4]+PT->V[9*View->TimeStep+7])/3.; - dz = (PT->V[9*View->TimeStep+2]+PT->V[9*View->TimeStep+5]+PT->V[9*View->TimeStep+8])/3.; - d = sqrt(dx*dx+dy*dy+dz*dz); - if(d!=0.0 && d>=ValMin && d<=ValMax){ - Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); - fact = 2.e-4 * LC * View->ArrowScale/View->Max ; - if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ - dx /= d ; dy /= d ; dz /= d ; - d = log10(d/ValMin) ; - dx *= d ; dy *= d ; dz *= d ; - } - RaiseFill(0, d, ValMin, Raise); - Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, - (PT->X[0] + PT->X[1] + PT->X[2])/3., - (PT->Y[0] + PT->Y[1] + PT->Y[2])/3., - (PT->Z[0] + PT->Z[1] + PT->Z[2])/3., - fact*d, fact*dx, fact*dy, fact*dz, - View->Offset, Raise); - } - } - else{ - for(k=0 ; k<3 ; k++){ - dx = PT->V[9*View->TimeStep +3*k] ; - dy = PT->V[9*View->TimeStep+1+3*k] ; - dz = PT->V[9*View->TimeStep+2+3*k] ; - d = sqrt(dx*dx+dy*dy+dz*dz); - - if(d!=0.0 && d>=ValMin && d<=ValMax){ - Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d)); - fact = 2.e-4 * LC * View->ArrowScale/View->Max ; - if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ - dx /= d ; dy /= d ; dz /= d ; - d = log10(d/ValMin) ; - dx *= d ; dy *= d ; dz *= d ; - } - RaiseFill(0, d, ValMin, Raise); - Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, - PT->X[k], PT->Y[k], PT->Z[k], - fact*d, fact*dx, fact*dy, fact*dz, - View->Offset, Raise); - - } - } - } - break; - - case DRAW_POST_TENSOR : - break; - - } - - if(View->ShowElement){ - glDisable(GL_POLYGON_OFFSET_FILL) ; - glColor4ubv((GLubyte*)&CTX.color.fg); - glBegin(GL_LINE_LOOP); - for(i=0 ; i<3 ; i++) - glVertex3d(PT->X[i]+View->Offset[0]+Raise[0][i], - PT->Y[i]+View->Offset[1]+Raise[1][i], - PT->Z[i]+View->Offset[2]+Raise[2][i]); - glEnd(); - } - -} - - diff --git a/Makefile b/Makefile index e8e58e21b9..0f36a04414 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ +# $Id: Makefile,v 1.5 2000-11-25 15:26:10 geuzaine Exp $ # ---------------------------------------------------------------------- -# Makefile for gmsh +# Makefile for Gmsh # ---------------------------------------------------------------------- GMSH_RELEASE = 0.995 diff --git a/Mesh/1D_Mesh.cpp b/Mesh/1D_Mesh.cpp index e3abe561e2..3426d58972 100644 --- a/Mesh/1D_Mesh.cpp +++ b/Mesh/1D_Mesh.cpp @@ -1,4 +1,4 @@ -/* $Id: 1D_Mesh.cpp,v 1.4 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: 1D_Mesh.cpp,v 1.5 2000-11-25 15:26:11 geuzaine Exp $ */ #include "Gmsh.h" #include "Const.h" @@ -14,7 +14,7 @@ extern int CurrentNodeNumber; Curve *THEC; -double Fun (double t){ +double F_One (double t){ Vertex der; double d; der = InterpolateCurve (THEC, t, 1); @@ -24,51 +24,56 @@ double Fun (double t){ double F_Transfini (double t){ Vertex der; - double d, a, b, ZePauwer; + double d, a, b, val, ZePauwer; der = InterpolateCurve (THEC, t, 1); d = sqrt (der.Pos.X * der.Pos.X + der.Pos.Y * der.Pos.Y + der.Pos.Z * der.Pos.Z); - if (THEC->dpar[0] == 0.0 || THEC->dpar[0] == 1.0) - return (d * (double) THEC->ipar[0] / (THEC->l)); - - switch (abs (THEC->ipar[1])){ - - case 2: - if (sign (THEC->ipar[1]) == -1) - ZePauwer = 1. / THEC->dpar[0]; - else - ZePauwer = THEC->dpar[0]; - b = log (1. / ZePauwer) / THEC->l; - a = (1. - exp (-b * THEC->l)) / (b * (double) THEC->ipar[0]); - return (d / (a * exp (b * (t * THEC->l)))); - - case 1: - if (THEC->dpar[0] > 1.0){ - a = -4. * sqrt (THEC->dpar[0] - 1.) * - atan2 (1., sqrt (THEC->dpar[0] - 1.)) / - ((double) THEC->ipar[0] * THEC->l); - } - else{ - a = 2. * sqrt (1. - THEC->dpar[0]) * - log (fabs ((1. + 1. / sqrt (1. - THEC->dpar[0])) - / (1. - 1. / sqrt (1. - THEC->dpar[0])))) - / ((double) THEC->ipar[0] * THEC->l); - } - b = -a * THEC->l * THEC->l / (4. * (THEC->dpar[0] - 1.)); - return (d / (-a * DSQR (t * THEC->l - (THEC->l) * 0.5) + b)); + if (THEC->dpar[0] == 0.0 || THEC->dpar[0] == 1.0){ + val = d * (double) THEC->ipar[0] / THEC->l ; + } + else{ + switch (abs (THEC->ipar[1])){ + + case 2: + if (sign (THEC->ipar[1]) == -1) + ZePauwer = 1. / THEC->dpar[0]; + else + ZePauwer = THEC->dpar[0]; + b = log (1. / ZePauwer) / THEC->l; + a = (1. - exp (-b * THEC->l)) / (b * (double) THEC->ipar[0]); + val =d / (a * exp (b * (t * THEC->l))) ; + break ; + + case 1: + if (THEC->dpar[0] > 1.0){ + a = -4. * sqrt (THEC->dpar[0] - 1.) * + atan2 (1., sqrt (THEC->dpar[0] - 1.)) / + ((double) THEC->ipar[0] * THEC->l); + } + else{ + a = 2. * sqrt (1. - THEC->dpar[0]) * + log (fabs ((1. + 1. / sqrt (1. - THEC->dpar[0])) + / (1. - 1. / sqrt (1. - THEC->dpar[0])))) + / ((double) THEC->ipar[0] * THEC->l); + } + b = -a * THEC->l * THEC->l / (4. * (THEC->dpar[0] - 1.)) ; + val = d / (-a * DSQR (t * THEC->l - (THEC->l) * 0.5) + b) ; + break ; - default: - Msg(WARNING, "Unknown Case in Transfinite Mesh Line"); - return 1. ; + default: + Msg(WARNING, "Unknown Case in Transfinite Mesh Line"); + val = 1. ; + } + } - + + return val ; } -double Flc (double t){ - double k = THEM->Metric->getLc (t, THEC); - return (k); +double F_Lc (double t){ + return THEM->Metric->getLc(t, THEC); } double CIRC_GRAN = 10.; @@ -93,12 +98,12 @@ void Maillage_Curve (void *data, void *dummy){ if (c->Method != TRANSFINI && Extrude_Mesh (c)){ Points = List_Create (10, 10, sizeof (IntPoint)); - c->l = Integration (c->ubeg, c->uend, Fun, Points, 1.e-5); + c->l = Integration (c->ubeg, c->uend, F_One, Points, 1.e-5); List_Delete (Points); } else{ Points = List_Create (10, 10, sizeof (IntPoint)); - c->l = Integration (c->ubeg, c->uend, Fun, Points, 1.e-5); + c->l = Integration (c->ubeg, c->uend, F_One, Points, 1.e-5); List_Delete (Points); if (c->Method == TRANSFINI){ @@ -108,7 +113,7 @@ void Maillage_Curve (void *data, void *dummy){ } else{ Points = List_Create (10, 10, sizeof (IntPoint)); - a = Integration (c->ubeg, c->uend, Flc, Points, 1.e-5); + a = Integration (c->ubeg, c->uend, F_Lc, Points, 1.e-5); N = IMAX (2, (int) (a + 1.)); if (c->Typ == MSH_SEGM_CIRC || c->Typ == MSH_SEGM_CIRC_INV || @@ -174,7 +179,8 @@ void Maillage_Curve (void *data, void *dummy){ List_Add (c->Vertices, vexist); } else{ - pV = Create_Vertex ((*v)->Num, (*v)->Pos.X, (*v)->Pos.Y, (*v)->Pos.Z, (*v)->lc, 0.0); + pV = Create_Vertex ((*v)->Num, (*v)->Pos.X, (*v)->Pos.Y, + (*v)->Pos.Z, (*v)->lc, 0.0); pV->ListCurves = List_Create (1, 1, sizeof (Curve *)); List_Add (pV->ListCurves, &c); Tree_Insert (THEM->Vertices, &pV); diff --git a/Mesh/2D_DivAndConq.cpp b/Mesh/2D_DivAndConq.cpp index 2540f7c7ef..bd9b0c0114 100644 --- a/Mesh/2D_DivAndConq.cpp +++ b/Mesh/2D_DivAndConq.cpp @@ -1,4 +1,4 @@ -/* $Id: 2D_DivAndConq.cpp,v 1.3 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: 2D_DivAndConq.cpp,v 1.4 2000-11-25 15:26:11 geuzaine Exp $ */ /* A L G O R I T H M E D I V I D E A N D C O N Q U E R @@ -163,7 +163,7 @@ int Qtest(PointNumero h,PointNumero i,PointNumero j,PointNumero k){ double xc,yc,rcarre,distca; if ((h == i) && (h == j) && (h == k)){ - Msg(WARNING, "3 Points Identical in Qtest"); + Msg(ERROR, "3 Points Identical in Qtest"); return(0); /* returning 1 will cause looping for ever */ } if (CircumCircle( (double) pPointArray[h].where.h, diff --git a/Mesh/2D_Mesh.cpp b/Mesh/2D_Mesh.cpp index 8a9ee33322..bbcc66611c 100644 --- a/Mesh/2D_Mesh.cpp +++ b/Mesh/2D_Mesh.cpp @@ -1,4 +1,4 @@ -/* $Id: 2D_Mesh.cpp,v 1.5 2000-11-24 08:04:14 geuzaine Exp $ */ +/* $Id: 2D_Mesh.cpp,v 1.6 2000-11-25 15:26:11 geuzaine Exp $ */ /* Maillage Delaunay d'une surface (Point insertion Technique) @@ -27,7 +27,7 @@ extern Mesh *THEM; extern Context_T CTX; extern int CurrentNodeNumber; -extern double LC, FACTEUR_MULTIPLICATIF; +extern double LC; int LocalNewPoint; @@ -849,8 +849,8 @@ void Maillage_Automatique_VieuxCode (Surface * pS, Mesh * m, int ori){ cp->oriented_points[j].where.h = v->Pos.X; cp->oriented_points[j].where.v = v->Pos.Y; - cp->perturbations[j].h = RAND_LONG; - cp->perturbations[j].v = RAND_LONG; + cp->perturbations[j].h = 10*RAND_LONG; + cp->perturbations[j].v = 10*RAND_LONG; cp->oriented_points[j].numcontour = i; cp->oriented_points[j].quality = v->lc; cp->oriented_points[j].permu = k++; @@ -944,7 +944,7 @@ void filldel (Delaunay * deladd, int aa, int bb, int cc, pt2.v = deladd->t.yc; if (!is_3D){ if (mesh){ - newqual = FACTEUR_MULTIPLICATIF * find_quality (pt2, mesh); + newqual = find_quality (pt2, mesh); } else{ newqual = (points[aa].quality + points[bb].quality + points[cc].quality) / 3.; diff --git a/Mesh/2D_Mesh_Aniso.cpp b/Mesh/2D_Mesh_Aniso.cpp index e73c4b0d7b..5bcc6ea6b7 100644 --- a/Mesh/2D_Mesh_Aniso.cpp +++ b/Mesh/2D_Mesh_Aniso.cpp @@ -1,4 +1,4 @@ -/* $Id: 2D_Mesh_Aniso.cpp,v 1.6 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: 2D_Mesh_Aniso.cpp,v 1.7 2000-11-25 15:26:11 geuzaine Exp $ */ /* Jean-Francois Remacle @@ -18,7 +18,8 @@ extern Context_T CTX ; -void draw_polygon_2d (double r, double g, double b, int n, double *x, double *y, double *z); +void draw_polygon_2d (double r, double g, double b, int n, + double *x, double *y, double *z); MeshParameters:: MeshParameters (): NbSmoothing (3), @@ -33,12 +34,12 @@ MeshParameters:: MeshParameters (): extern Simplex MyNewBoundary; extern Mesh *THEM; extern int CurrentNodeNumber; -extern double MAXIMUM_LC_FOR_SURFACE, LC, FACTEUR_MULTIPLICATIF; +extern double MAXIMUM_LC_FOR_SURFACE, LC; extern int Alerte_Point_Scabreux; extern PointRecord *gPointArray; extern Surface *PARAMETRIC; -static Tree_T *Tsd, *Sim_Sur_Le_Bord /*,*POINTS_TREE */ ; +static Tree_T *Tsd, *Sim_Sur_Le_Bord ; static List_T *Simplexes_Destroyed, *Simplexes_New, *Suppress; static Simplex *THES; static Vertex *THEV; @@ -49,8 +50,6 @@ static double volume; static List_T *coquille; static Edge *THEEDGE; -extern void Make_Mesh_With_Points (DocRecord * ptr, PointRecord * Liste, int Numpoints); - double Interpole_lcTriangle (Simplex * s, Vertex * vv){ double Xp, Yp, X[3], Y[3], det, u, v, q1, q2, q3; diff --git a/Mesh/3D_BGMesh.cpp b/Mesh/3D_BGMesh.cpp index 6e0f1ad22a..0364922a55 100644 --- a/Mesh/3D_BGMesh.cpp +++ b/Mesh/3D_BGMesh.cpp @@ -1,4 +1,4 @@ -/* $Id: 3D_BGMesh.cpp,v 1.7 2000-11-24 09:43:53 geuzaine Exp $ */ +/* $Id: 3D_BGMesh.cpp,v 1.8 2000-11-25 15:26:11 geuzaine Exp $ */ #include "Gmsh.h" #include "Mesh.h" @@ -8,10 +8,7 @@ #include "Views.h" #include "Numeric.h" -extern double FACTEUR_MULTIPLICATIF; - static Mesh m; -static Vertex vvv; static double XX, YY, ZZ, D, LL; void ExportLcFieldOnVolume (Mesh * M){ @@ -109,7 +106,7 @@ double Lc_XYZ (double X, double Y, double Z, Mesh * m){ } break; } - return (FACTEUR_MULTIPLICATIF * l); + return l; } /* ------------------------------------------------------------------------ */ @@ -129,8 +126,7 @@ int BGMWithView (Post_View * ErrView){ extern int TYPBGMESH; extern Mesh *THEM; int i, j, k; - Post_Simplex s; - Post_Triangle t; + Post_Simplex s, t; Simplex *si; VertexUp = Create_Vertex (-1, 0., 0., 1., 1., -1.0); @@ -155,8 +151,7 @@ int BGMWithView (Post_View * ErrView){ //ver[j] = v; } else{ - v = Create_Vertex (k++, t.X[j], t.Y[j], t.Z[j] - ,t.V[j], -1.0); + v = Create_Vertex (k++, t.X[j], t.Y[j], t.Z[j], t.V[j], -1.0); ver[j] = v; Tree_Add (m.Vertices, &v); Tree_Add (Pts, &v); @@ -166,8 +161,8 @@ int BGMWithView (Post_View * ErrView){ Tree_Add (m.Simplexes, &si); } - for (i = 0; i < List_Nbr (ErrView->Simplices); i++){ - List_Read (ErrView->Simplices, i, &s); + for (i = 0; i < List_Nbr (ErrView->Tetrahedra); i++){ + List_Read (ErrView->Tetrahedra, i, &s); for (j = 0; j < 4; j++){ v = &V; v->Pos.X = s.X[j]; @@ -214,8 +209,7 @@ int BGMWithView (Post_View * ErrView){ double ErrorInView (Post_View * ErrView, int *n){ - Post_Triangle t; - Post_Simplex s; + Post_Simplex s, t; double e, tot=0.0; int i, j=0; @@ -231,8 +225,8 @@ double ErrorInView (Post_View * ErrView, int *n){ j++; } - for (i = 0; i < List_Nbr (ErrView->Simplices); i++){ - List_Read (ErrView->Simplices, i, &s); + for (i = 0; i < List_Nbr (ErrView->Tetrahedra); i++){ + List_Read (ErrView->Tetrahedra, i, &s); e = (t.V[0] + t.V[1] + t.V[2] + t.V[3]) * 0.25; tot += e * e; j++; @@ -250,19 +244,18 @@ double ErrorInView (Post_View * ErrView, int *n){ int CreateBGM (Post_View * ErrView, int OptiMethod, double Degree, double OptiValue, double *ObjFunct, char *OutFile){ - Post_Triangle t; - Post_Simplex s; + Post_Simplex s, t; double *h, *p, *e, xc, yc, zc, c[3]; int N, i, j, dim; Simplex smp; FILE *f; - if (List_Nbr (ErrView->Simplices)) + if (List_Nbr (ErrView->Tetrahedra)) dim = 3; else dim = 2; - N = List_Nbr (ErrView->Simplices) + + N = List_Nbr (ErrView->Tetrahedra) + List_Nbr (ErrView->Triangles) + 2; h = (double *) malloc (N * sizeof (double)); @@ -290,8 +283,8 @@ int CreateBGM (Post_View * ErrView, int OptiMethod, double Degree, j++; } - for (i = 0; i < List_Nbr (ErrView->Simplices); i++){ - List_Read (ErrView->Simplices, i, &s); + for (i = 0; i < List_Nbr (ErrView->Tetrahedra); i++){ + List_Read (ErrView->Tetrahedra, i, &s); smp.center_tet (t.X, t.Y, t.Z, c); @@ -315,16 +308,16 @@ int CreateBGM (Post_View * ErrView, int OptiMethod, double Degree, j = 0; for (i = 0; i < List_Nbr (ErrView->Triangles); i++){ List_Read (ErrView->Triangles, i, &t); - fprintf (f, "ST(%f,%f,%f,%f,%f,%f,%f,%f,%f){%12.5E,%12.5E,%12.5E};\n", + fprintf (f, "ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g};\n", t.X[0], t.Y[0], t.Z[0], t.X[1], t.Y[1], t.Z[1], t.X[2], t.Y[2], t.Z[2], h[j], h[j], h[j]); j++; } - for (i = 0; i < List_Nbr (ErrView->Simplices); i++){ - List_Read (ErrView->Simplices, i, &s); - fprintf (f, "SS(%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f){%12.5E,%12.5E,%12.5E,%12.5E};\n", + for (i = 0; i < List_Nbr (ErrView->Tetrahedra); i++){ + List_Read (ErrView->Tetrahedra, i, &s); + fprintf (f, "SS(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g,%g};\n", s.X[0], s.Y[0], s.Z[0], s.X[1], s.Y[1], s.Z[1], s.X[2], s.Y[2], s.Z[2], diff --git a/Mesh/3D_Mesh.cpp b/Mesh/3D_Mesh.cpp index a07eb5c866..461917ad7f 100644 --- a/Mesh/3D_Mesh.cpp +++ b/Mesh/3D_Mesh.cpp @@ -1,4 +1,4 @@ -/* $Id: 3D_Mesh.cpp,v 1.5 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: 3D_Mesh.cpp,v 1.6 2000-11-25 15:26:11 geuzaine Exp $ */ /* J-F Remacle 1995 @@ -791,8 +791,9 @@ void Maillage_Volume (void *data, void *dum){ Progress (102); while (simp->Quality > CONV_VALUE){ newv = NewVertex (simp); - - // while(!Pt_In_Volume(newv->Pos.X,newv->Pos.Y,newv->Pos.Z,LOCAL,&l,0.0)){ + //double l; + //while(!Pt_In_Volume(newv->Pos.X,newv->Pos.Y,newv->Pos.Z,LOCAL,&l,0.0)){ + while (!simp->Pt_In_Simplexe (newv, uvw, 1.e-5) && (simp->S[0] == &MyNewBoundary || !simp->S[0]->Pt_In_Simplexe (newv, uvw, 1.e-5)) && diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp index 28a5095325..3240b7b71d 100644 --- a/Mesh/Generator.cpp +++ b/Mesh/Generator.cpp @@ -1,4 +1,4 @@ -/* $Id: Generator.cpp,v 1.5 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: Generator.cpp,v 1.6 2000-11-25 15:26:11 geuzaine Exp $ */ #include "Gmsh.h" #include "Const.h" @@ -20,13 +20,28 @@ void GetStatistics (double s[50]){ THEM->Statistics[1] = Tree_Nbr (THEM->Curves); THEM->Statistics[2] = Tree_Nbr (THEM->Surfaces); THEM->Statistics[3] = Tree_Nbr (THEM->Volumes); - for (i = 0; i < 50; i++) - s[i] = THEM->Statistics[i]; + for (i = 0; i < 50; i++) s[i] = THEM->Statistics[i]; +} + +void ApplyLcFactor_Point(void *a, void *b){ + Vertex *v = *(Vertex**)a; + if(v->lc <= 0.0) + Msg(FATAL, "Wrong characteristic Length (%g <= 0) for Point %d", + v->lc, v->Num); + v->lc *= CTX.mesh.lc_factor; +} +void ApplyLcFactor_Attractor(void *a, void *b){ + Attractor *v = *(Attractor**)a; + v->lc1 *= CTX.mesh.lc_factor; + v->lc2 *= CTX.mesh.lc_factor; +} +void ApplyLcFactor(Mesh *M){ + Tree_Action(M->Points, ApplyLcFactor_Point); + List_Action(M->Metric->Attractors, ApplyLcFactor_Attractor); } void Maillage_Dimension_0 (Mesh * M){ - for (int i = 0; i < 20; i++) - M->Statistics[i] = 0.0; + for (int i = 0; i < 20; i++) M->Statistics[i] = 0.0; Create_BgMesh (TYPBGMESH, .2, M); } @@ -99,15 +114,15 @@ void Init_Mesh (Mesh * M, int all){ THEM = M; if (M->Vertices){ - //Tree_Action (M->Vertices, Free_Vertex); + Tree_Action (M->Vertices, Free_Vertex); Tree_Delete (M->Vertices); } if (M->VertexEdges){ - //Tree_Action (M->VertexEdges, Free_Vertex); + Tree_Action (M->VertexEdges, Free_Vertex); Tree_Delete (M->VertexEdges); } if (M->Simplexes){ - //Tree_Action (M->Simplexes, Free_Simplex); + Tree_Action (M->Simplexes, Free_Simplex); Tree_Delete (M->Simplexes); } if (M->Points){ @@ -174,6 +189,7 @@ void mai3d (Mesh * M, int Asked){ if ((Asked > oldstatus && Asked >= 0 && oldstatus < 0) || (Asked < oldstatus)){ + printf("ON PASSE ICI\n"); OpenProblem (TheFileName); M->status = 0; } diff --git a/Mesh/Makefile b/Mesh/Makefile index 5c6ed6db53..1b603343ff 100644 --- a/Mesh/Makefile +++ b/Mesh/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.4 2000-11-25 15:26:11 geuzaine Exp $ # # Makefile for "libMesh.a" # diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h index a5d42b2608..54d5b87e6d 100644 --- a/Mesh/Mesh.h +++ b/Mesh/Mesh.h @@ -1,4 +1,4 @@ -/* $Id: Mesh.h,v 1.5 2000-11-24 12:50:03 geuzaine Exp $ */ +/* $Id: Mesh.h,v 1.6 2000-11-25 15:26:11 geuzaine Exp $ */ #ifndef _MESH_H_ #define _MESH_H_ @@ -455,13 +455,12 @@ void Freeze_Vertex (void *a, void *b); void deFreeze_Vertex (void *a, void *b); void crEdges (Tree_T * TreeElem, Tree_T * treeedges); -double Correction_LC_Attractors (double X, double Y, double Z, - double *u, Mesh * m, double metr[3][3]); double Lc_XYZ (double X, double Y, double Z, Mesh * m); void Degre2 (Tree_T * AllNodes, Tree_T * TreeNodes, Tree_T * TreeElm, Curve * c, Surface * s); void ActionLiss (void *data, void *dummy); void ActionLissSurf (void *data, void *dummy); void Recombine (Tree_T *TreeAllVert, Tree_T *TreeAllElg, double a); +void ApplyLcFactor(Mesh *M); #endif diff --git a/Mesh/Print_Mesh.cpp b/Mesh/Print_Mesh.cpp index 4a9592b822..609f162b02 100644 --- a/Mesh/Print_Mesh.cpp +++ b/Mesh/Print_Mesh.cpp @@ -1,4 +1,4 @@ -/* $Id: Print_Mesh.cpp,v 1.6 2000-11-24 16:18:16 geuzaine Exp $ */ +/* $Id: Print_Mesh.cpp,v 1.7 2000-11-25 15:26:11 geuzaine Exp $ */ #include "Gmsh.h" #include "Const.h" @@ -6,7 +6,9 @@ #include "CAD.h" #include "Mesh.h" #include "Create.h" -#include "Tools.h" +#include "Context.h" + +extern Context_T CTX ; /* ------------------------------------------------------------------------ */ /* M S H F O R M A T */ @@ -37,8 +39,12 @@ void print_msh_node (void *a, void *b){ Vertex **V; V = (Vertex **) a; + fprintf (mshfile, "%d %.16g %.16g %.16g\n", - (*V)->Num, (*V)->Pos.X, (*V)->Pos.Y, (*V)->Pos.Z); + (*V)->Num, + (*V)->Pos.X * CTX.mesh.scaling_factor, + (*V)->Pos.Y * CTX.mesh.scaling_factor, + (*V)->Pos.Z * CTX.mesh.scaling_factor); } void process_msh_nodes (Mesh * M){ @@ -324,9 +330,9 @@ void process_nodes (FILE * funv, Mesh * M){ for (i = 0; i < nbnod; i++){ List_Read (Nodes, i, &v); idnod = v->Num; - x = v->Pos.X; - y = v->Pos.Y; - z = v->Pos.Z; + x = v->Pos.X * CTX.mesh.scaling_factor; + y = v->Pos.Y * CTX.mesh.scaling_factor; + z = v->Pos.Z * CTX.mesh.scaling_factor; fprintf (funv, "%10d%10d%10d%10d\n", idnod, 1, 1, 11); fprintf (funv, "%21.16fD+00 %21.16fD+00 %21.16fD+00\n", x, y, z); } @@ -338,9 +344,9 @@ void process_nodes (FILE * funv, Mesh * M){ for (i = 0; i < nbnod; i++){ List_Read (Nodes, i, &v); idnod = v->Num; - x = v->Pos.X; - y = v->Pos.Y; - z = v->Pos.Z; + x = v->Pos.X * CTX.mesh.scaling_factor; + y = v->Pos.Y * CTX.mesh.scaling_factor; + z = v->Pos.Z * CTX.mesh.scaling_factor; fprintf (funv, "%10d%10d%10d%10d\n", idnod, 1, 1, 11); fprintf (funv, "%21.16fD+00 %21.16fD+00 %21.16fD+00\n", x, y, z); } @@ -753,7 +759,7 @@ int process_Gref_nodes (FILE * fGref, Mesh * M, Nodes = Tree2List (ConsecutiveNTree); for (i = 0; i < List_Nbr (Nodes); i++){ List_Read (Nodes, i, &v); - fprintf (fGref, "%21.16e ", v->Pos.X); + fprintf (fGref, "%21.16e ", v->Pos.X * CTX.mesh.scaling_factor); if (i % 3 == 2) fprintf (fGref, "\n"); } @@ -761,7 +767,7 @@ int process_Gref_nodes (FILE * fGref, Mesh * M, fprintf (fGref, "\n"); for (i = 0; i < List_Nbr (Nodes); i++){ List_Read (Nodes, i, &v); - fprintf (fGref, "%21.16e ", v->Pos.Y); + fprintf (fGref, "%21.16e ", v->Pos.Y * CTX.mesh.scaling_factor); if (i % 3 == 2) fprintf (fGref, "\n"); } diff --git a/Mesh/Simplex.cpp b/Mesh/Simplex.cpp index 3e3ecd8577..88da186837 100644 --- a/Mesh/Simplex.cpp +++ b/Mesh/Simplex.cpp @@ -1,4 +1,4 @@ -/* $Id: Simplex.cpp,v 1.5 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: Simplex.cpp,v 1.6 2000-11-25 15:26:11 geuzaine Exp $ */ #include "Gmsh.h" #include "Const.h" @@ -345,6 +345,11 @@ Simplex *Create_Simplex (Vertex * v1, Vertex * v2, Vertex * v3, Vertex * v4){ return s; } +void Free_Simplex (void *a, void *b){ + // Simplex *s = *(Simplex**)a; + //if(s) Free(s); +} + Simplex *Create_Quadrangle (Vertex * v1, Vertex * v2, Vertex * v3, Vertex * v4){ Simplex *s; /* pour eviter le reordonnement des noeuds */ diff --git a/Mesh/Simplex.h b/Mesh/Simplex.h index 850af5a5f4..e19f2899fc 100644 --- a/Mesh/Simplex.h +++ b/Mesh/Simplex.h @@ -1,4 +1,4 @@ -/* $Id: Simplex.h,v 1.3 2000-11-23 15:05:59 geuzaine Exp $ */ +/* $Id: Simplex.h,v 1.4 2000-11-25 15:26:11 geuzaine Exp $ */ #ifndef _SIMPLEX_H_ #define _SIMPLEX_H_ @@ -54,8 +54,11 @@ public: }; int compareSimplex(const void *a, const void *b); +int compareFace (const void *a, const void *b); + Simplex *Create_Simplex (Vertex *v1, Vertex *v2, Vertex *v3, Vertex *v4); +void Free_Simplex (void *a, void *b); Simplex *Create_Quadrangle (Vertex *v1, Vertex *v2, Vertex *v3, Vertex *v4); -int compareFace (const void *a, const void *b); + #endif diff --git a/Mesh/Vertex.cpp b/Mesh/Vertex.cpp index 7cb8f3ea86..fec5e0473a 100644 --- a/Mesh/Vertex.cpp +++ b/Mesh/Vertex.cpp @@ -1,8 +1,7 @@ -/* $Id: Vertex.cpp,v 1.2 2000-11-23 14:11:36 geuzaine Exp $ */ +/* $Id: Vertex.cpp,v 1.3 2000-11-25 15:26:11 geuzaine Exp $ */ + +#include "Gmsh.h" #include "Vertex.h" -#include <stddef.h> -#include <stdlib.h> -#include <math.h> Vertex::Vertex (){ Frozen = 0; @@ -72,6 +71,12 @@ Vertex *Create_Vertex (int Num, double X, double Y, double Z, double lc, double return pV; } +void Free_Vertex (void *a, void *b){ + Vertex *pV = *(Vertex**)a; + + if(pV)Free(pV); +} + int compareVertex (const void *a, const void *b){ int i, j; Vertex **q, **w; diff --git a/Mesh/Vertex.h b/Mesh/Vertex.h index 70871bd000..23d4d83e36 100644 --- a/Mesh/Vertex.h +++ b/Mesh/Vertex.h @@ -1,4 +1,4 @@ -/* $Id: Vertex.h,v 1.3 2000-11-23 15:05:59 geuzaine Exp $ */ +/* $Id: Vertex.h,v 1.4 2000-11-25 15:26:11 geuzaine Exp $ */ #ifndef _VERTEX_H_ #define _VERTEX_H_ @@ -31,7 +31,9 @@ class Vertex { }; int compareVertex (const void *a, const void *b); -Vertex *Create_Vertex (int Num, double X, double Y, double Z, double lc, double u); int comparePosition (const void *a, const void *b); +Vertex *Create_Vertex (int Num, double X, double Y, double Z, double lc, double u); +void Free_Vertex (void *a, void *b); + #endif diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l index 92eb2e4c6c..fc94308cc8 100644 --- a/Parser/Gmsh.l +++ b/Parser/Gmsh.l @@ -1,4 +1,4 @@ -%{ /* $Id: Gmsh.l,v 1.3 2000-11-24 10:58:06 geuzaine Exp $ */ +%{ /* $Id: Gmsh.l,v 1.4 2000-11-25 15:26:11 geuzaine Exp $ */ #include <stdio.h> #include <stdlib.h> @@ -169,9 +169,9 @@ Volume return tVolume; With return tWith; -SS return tScalarSimplex; -VS return tVectorSimplex; -TS return tTensorSimplex; +SS return tScalarTetrahedron; +VS return tVectorTetrahedron; +TS return tTensorTetrahedron; ST return tScalarTriangle; VT return tVectorTriangle; TT return tTensorTriangle; diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index a307869b43..673f11c6f2 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -1,152 +1,151 @@ /* A Bison parser, made from Gmsh.y - by GNU Bison version 1.25 - */ + by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ -#define tDOUBLE 258 -#define tSTRING 259 -#define tBIGSTR 260 -#define tEND 261 -#define tAFFECT 262 -#define tDOTS 263 -#define tPi 264 -#define tExp 265 -#define tLog 266 -#define tLog10 267 -#define tSqrt 268 -#define tSin 269 -#define tAsin 270 -#define tCos 271 -#define tAcos 272 -#define tTan 273 -#define tAtan 274 -#define tAtan2 275 -#define tSinh 276 -#define tCosh 277 -#define tTanh 278 -#define tFabs 279 -#define tFloor 280 -#define tCeil 281 -#define tFmod 282 -#define tModulo 283 -#define tHypot 284 -#define tPoint 285 -#define tCircle 286 -#define tEllipsis 287 -#define tLine 288 -#define tSurface 289 -#define tSpline 290 -#define tVolume 291 -#define tCharacteristic 292 -#define tLength 293 -#define tParametric 294 -#define tElliptic 295 -#define tPlane 296 -#define tRuled 297 -#define tTransfinite 298 -#define tComplex 299 -#define tPhysical 300 -#define tUsing 301 -#define tPower 302 -#define tBump 303 -#define tProgression 304 -#define tAssociation 305 -#define tRotate 306 -#define tTranslate 307 -#define tSymmetry 308 -#define tDilate 309 -#define tExtrude 310 -#define tDuplicata 311 -#define tLoop 312 -#define tInclude 313 -#define tRecombine 314 -#define tDelete 315 -#define tCoherence 316 -#define tView 317 -#define tOffset 318 -#define tAttractor 319 -#define tLayers 320 -#define tScalarSimplex 321 -#define tVectorSimplex 322 -#define tTensorSimplex 323 -#define tScalarTriangle 324 -#define tVectorTriangle 325 -#define tTensorTriangle 326 -#define tScalarLine 327 -#define tVectorLine 328 -#define tTensorLine 329 -#define tScalarPoint 330 -#define tVectorPoint 331 -#define tTensorPoint 332 -#define tBSpline 333 -#define tNurbs 334 -#define tOrder 335 -#define tWith 336 -#define tBounds 337 -#define tKnots 338 -#define tColor 339 -#define tGeneral 340 -#define tGeometry 341 -#define tMesh 342 -#define tB_SPLINE_SURFACE_WITH_KNOTS 343 -#define tB_SPLINE_CURVE_WITH_KNOTS 344 -#define tCARTESIAN_POINT 345 -#define tTRUE 346 -#define tFALSE 347 -#define tUNSPECIFIED 348 -#define tU 349 -#define tV 350 -#define tEDGE_CURVE 351 -#define tVERTEX_POINT 352 -#define tORIENTED_EDGE 353 -#define tPLANE 354 -#define tFACE_OUTER_BOUND 355 -#define tEDGE_LOOP 356 -#define tADVANCED_FACE 357 -#define tVECTOR 358 -#define tDIRECTION 359 -#define tAXIS2_PLACEMENT_3D 360 -#define tISO 361 -#define tENDISO 362 -#define tENDSEC 363 -#define tDATA 364 -#define tHEADER 365 -#define tFILE_DESCRIPTION 366 -#define tFILE_SCHEMA 367 -#define tFILE_NAME 368 -#define tMANIFOLD_SOLID_BREP 369 -#define tCLOSED_SHELL 370 -#define tADVANCED_BREP_SHAPE_REPRESENTATION 371 -#define tFACE_BOUND 372 -#define tCYLINDRICAL_SURFACE 373 -#define tCONICAL_SURFACE 374 -#define tCIRCLE 375 -#define tTRIMMED_CURVE 376 -#define tGEOMETRIC_SET 377 -#define tCOMPOSITE_CURVE_SEGMENT 378 -#define tCONTINUOUS 379 -#define tCOMPOSITE_CURVE 380 -#define tTOROIDAL_SURFACE 381 -#define tPRODUCT_DEFINITION 382 -#define tPRODUCT_DEFINITION_SHAPE 383 -#define tSHAPE_DEFINITION_REPRESENTATION 384 -#define tELLIPSE 385 -#define tTrimmed 386 -#define tSolid 387 -#define tEndSolid 388 -#define tVertex 389 -#define tFacet 390 -#define tNormal 391 -#define tOuter 392 -#define tLoopSTL 393 -#define tEndLoop 394 -#define tEndFacet 395 -#define UMINUS 396 +#define tDOUBLE 257 +#define tSTRING 258 +#define tBIGSTR 259 +#define tEND 260 +#define tAFFECT 261 +#define tDOTS 262 +#define tPi 263 +#define tExp 264 +#define tLog 265 +#define tLog10 266 +#define tSqrt 267 +#define tSin 268 +#define tAsin 269 +#define tCos 270 +#define tAcos 271 +#define tTan 272 +#define tAtan 273 +#define tAtan2 274 +#define tSinh 275 +#define tCosh 276 +#define tTanh 277 +#define tFabs 278 +#define tFloor 279 +#define tCeil 280 +#define tFmod 281 +#define tModulo 282 +#define tHypot 283 +#define tPoint 284 +#define tCircle 285 +#define tEllipsis 286 +#define tLine 287 +#define tSurface 288 +#define tSpline 289 +#define tVolume 290 +#define tCharacteristic 291 +#define tLength 292 +#define tParametric 293 +#define tElliptic 294 +#define tPlane 295 +#define tRuled 296 +#define tTransfinite 297 +#define tComplex 298 +#define tPhysical 299 +#define tUsing 300 +#define tPower 301 +#define tBump 302 +#define tProgression 303 +#define tAssociation 304 +#define tRotate 305 +#define tTranslate 306 +#define tSymmetry 307 +#define tDilate 308 +#define tExtrude 309 +#define tDuplicata 310 +#define tLoop 311 +#define tInclude 312 +#define tRecombine 313 +#define tDelete 314 +#define tCoherence 315 +#define tView 316 +#define tOffset 317 +#define tAttractor 318 +#define tLayers 319 +#define tScalarTetrahedron 320 +#define tVectorTetrahedron 321 +#define tTensorTetrahedron 322 +#define tScalarTriangle 323 +#define tVectorTriangle 324 +#define tTensorTriangle 325 +#define tScalarLine 326 +#define tVectorLine 327 +#define tTensorLine 328 +#define tScalarPoint 329 +#define tVectorPoint 330 +#define tTensorPoint 331 +#define tBSpline 332 +#define tNurbs 333 +#define tOrder 334 +#define tWith 335 +#define tBounds 336 +#define tKnots 337 +#define tColor 338 +#define tGeneral 339 +#define tGeometry 340 +#define tMesh 341 +#define tB_SPLINE_SURFACE_WITH_KNOTS 342 +#define tB_SPLINE_CURVE_WITH_KNOTS 343 +#define tCARTESIAN_POINT 344 +#define tTRUE 345 +#define tFALSE 346 +#define tUNSPECIFIED 347 +#define tU 348 +#define tV 349 +#define tEDGE_CURVE 350 +#define tVERTEX_POINT 351 +#define tORIENTED_EDGE 352 +#define tPLANE 353 +#define tFACE_OUTER_BOUND 354 +#define tEDGE_LOOP 355 +#define tADVANCED_FACE 356 +#define tVECTOR 357 +#define tDIRECTION 358 +#define tAXIS2_PLACEMENT_3D 359 +#define tISO 360 +#define tENDISO 361 +#define tENDSEC 362 +#define tDATA 363 +#define tHEADER 364 +#define tFILE_DESCRIPTION 365 +#define tFILE_SCHEMA 366 +#define tFILE_NAME 367 +#define tMANIFOLD_SOLID_BREP 368 +#define tCLOSED_SHELL 369 +#define tADVANCED_BREP_SHAPE_REPRESENTATION 370 +#define tFACE_BOUND 371 +#define tCYLINDRICAL_SURFACE 372 +#define tCONICAL_SURFACE 373 +#define tCIRCLE 374 +#define tTRIMMED_CURVE 375 +#define tGEOMETRIC_SET 376 +#define tCOMPOSITE_CURVE_SEGMENT 377 +#define tCONTINUOUS 378 +#define tCOMPOSITE_CURVE 379 +#define tTOROIDAL_SURFACE 380 +#define tPRODUCT_DEFINITION 381 +#define tPRODUCT_DEFINITION_SHAPE 382 +#define tSHAPE_DEFINITION_REPRESENTATION 383 +#define tELLIPSE 384 +#define tTrimmed 385 +#define tSolid 386 +#define tEndSolid 387 +#define tVertex 388 +#define tFacet 389 +#define tNormal 390 +#define tOuter 391 +#define tLoopSTL 392 +#define tEndLoop 393 +#define tEndFacet 394 +#define UMINUS 395 #line 1 "Gmsh.y" - /* $Id: Gmsh.tab.cpp,v 1.7 2000-11-24 10:58:06 geuzaine Exp $ */ + /* $Id: Gmsh.tab.cpp,v 1.8 2000-11-25 15:26:11 geuzaine Exp $ */ #include <stdarg.h> @@ -163,28 +162,31 @@ #include "Colors.h" #include "Parser.h" -#ifdef __DECCXX +#ifdef __DECCXX // bug in bison #include <alloca.h> #endif -extern Mesh *THEM; -extern char ThePathForIncludes[NAME_STR_L]; - -FILE *yyinTab[MAX_OPEN_FILES]; -int yylinenoTab[MAX_OPEN_FILES]; -char yynameTab[MAX_OPEN_FILES][NAME_STR_L]; -char tmpstring[NAME_STR_L]; -Symbol TheSymbol; -Surface *STL_Surf; -Shape TheShape; -unsigned int *ptr ; -int i,j,k,flag,RecursionLevel=0,Loop[4]; -double d; -ExtrudeParams extr; +int Force_ViewNumber = 0 ; List_T *Symbol_L; -List_T *ListOfDouble_L,*ListOfDouble2_L; -List_T *ListOfListOfDouble_L; -StringXPointer *ColorField ; + +extern Mesh *THEM; +extern Post_View *ActualView; +extern char ThePathForIncludes[NAME_STR_L]; + +static FILE *yyinTab[MAX_OPEN_FILES]; +static int yylinenoTab[MAX_OPEN_FILES]; +static char yynameTab[MAX_OPEN_FILES][NAME_STR_L]; +static char tmpstring[NAME_STR_L]; +static Symbol TheSymbol; +static Surface *STL_Surf; +static Shape TheShape; +static unsigned int *ptr ; +static int i,j,k,flag,RecursionLevel=0; +static double d; +static ExtrudeParams extr; +static StringXPointer *ColorField ; +static List_T *ListOfDouble_L,*ListOfDouble2_L; +static List_T *ListOfListOfDouble_L; void yyerror (char *s); void vyyerror (char *fmt, ...); @@ -194,7 +196,7 @@ void Get_ColorPointerForString(StringXPointer SXP[], char * string, int * FlagError, unsigned int **Pointer); -#line 50 "Gmsh.y" +#line 53 "Gmsh.y" typedef union { char *c; int i; @@ -213,11 +215,11 @@ typedef union { -#define YYFINAL 1275 +#define YYFINAL 1339 #define YYFLAG -32768 #define YYNTBASE 157 -#define YYTRANSLATE(x) ((unsigned)(x) <= 396 ? yytranslate[x] : 213) +#define YYTRANSLATE(x) ((unsigned)(x) <= 395 ? yytranslate[x] : 237) static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -245,21 +247,21 @@ static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 148 + 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 148 }; #if YYDEBUG != 0 @@ -272,226 +274,243 @@ static const short yyprhs[] = { 0, 492, 493, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 521, 528, 537, 538, 541, 544, 547, 550, 553, 556, 559, 562, 565, 568, 571, 574, - 603, 632, 661, 684, 707, 730, 747, 764, 781, 792, - 803, 814, 819, 827, 836, 849, 856, 862, 870, 878, - 891, 899, 909, 927, 935, 944, 953, 959, 967, 979, - 988, 998, 1007, 1030, 1051, 1060, 1069, 1075, 1084, 1092, - 1101, 1109, 1121, 1129, 1139, 1141, 1143, 1145, 1146, 1149, - 1154, 1159, 1163, 1171, 1180, 1192, 1205, 1218, 1227, 1240, - 1249, 1261, 1277, 1279, 1282, 1292, 1295, 1302, 1312, 1322, - 1332, 1341, 1350, 1359, 1366, 1371, 1380, 1383, 1388, 1389, - 1392, 1393, 1399, 1400, 1406, 1407, 1413, 1414, 1417, 1422, - 1431, 1436, 1446, 1454, 1456, 1458, 1460, 1462, 1464, 1466, - 1470, 1474, 1478, 1482, 1486, 1490, 1493, 1496, 1501, 1506, - 1511, 1516, 1521, 1526, 1531, 1536, 1541, 1546, 1553, 1558, - 1563, 1568, 1573, 1578, 1583, 1590, 1597, 1604, 1606, 1608, - 1610, 1614, 1621, 1633, 1643, 1651, 1659, 1660, 1664, 1666, - 1670, 1671, 1675, 1679, 1681, 1685, 1686, 1688, 1692, 1694, - 1696, 1700 + 576, 580, 581, 595, 597, 601, 602, 616, 618, 622, + 623, 637, 639, 643, 644, 664, 666, 670, 671, 691, + 693, 697, 698, 718, 720, 724, 725, 751, 753, 757, + 758, 784, 786, 790, 791, 817, 819, 823, 824, 856, + 858, 862, 863, 895, 897, 901, 902, 934, 939, 947, + 956, 969, 976, 982, 990, 998, 1011, 1019, 1029, 1047, + 1055, 1064, 1073, 1079, 1087, 1099, 1108, 1118, 1127, 1150, + 1171, 1180, 1189, 1195, 1204, 1212, 1221, 1229, 1241, 1249, + 1259, 1261, 1263, 1265, 1266, 1269, 1274, 1279, 1283, 1291, + 1300, 1312, 1325, 1338, 1347, 1360, 1369, 1381, 1397, 1399, + 1402, 1412, 1415, 1422, 1432, 1442, 1452, 1461, 1470, 1479, + 1486, 1491, 1494, 1499, 1500, 1503, 1504, 1510, 1511, 1517, + 1518, 1524, 1525, 1528, 1533, 1542, 1547, 1557, 1565, 1567, + 1569, 1571, 1573, 1575, 1577, 1581, 1585, 1589, 1593, 1597, + 1601, 1604, 1607, 1612, 1617, 1622, 1627, 1632, 1637, 1642, + 1647, 1652, 1657, 1664, 1669, 1674, 1679, 1684, 1689, 1694, + 1701, 1708, 1715, 1717, 1719, 1721, 1725, 1732, 1744, 1754, + 1762, 1770, 1771, 1775, 1777, 1781, 1782, 1786, 1790, 1792, + 1796, 1797, 1799, 1803, 1805, 1807, 1811 }; -static const short yyrhs[] = { 164, - 0, 159, 0, 158, 0, 132, 0, 135, 136, 3, - 3, 3, 137, 138, 134, 3, 3, 3, 134, 3, - 3, 3, 134, 3, 3, 3, 139, 140, 0, 133, +static const short yyrhs[] = { 159, + 0, 158, 0, 164, 0, 132, 0, 135, 136, 227, + 227, 227, 137, 138, 134, 227, 227, 227, 134, 227, + 227, 227, 134, 227, 227, 227, 139, 140, 0, 133, 0, 0, 159, 160, 0, 161, 0, 163, 0, 162, 0, 1, 6, 0, 106, 6, 0, 107, 6, 0, 109, 6, 0, 108, 6, 0, 110, 6, 0, 111, - 150, 207, 151, 5, 152, 6, 0, 112, 150, 207, - 152, 6, 0, 113, 150, 5, 151, 5, 151, 207, - 151, 207, 151, 5, 151, 5, 151, 5, 152, 6, - 0, 3, 7, 90, 150, 5, 151, 206, 152, 6, - 0, 3, 7, 89, 150, 5, 151, 203, 151, 211, - 151, 202, 151, 202, 151, 202, 151, 211, 151, 211, - 151, 202, 152, 6, 0, 3, 7, 88, 150, 5, - 151, 203, 151, 203, 151, 209, 151, 202, 151, 202, - 151, 202, 151, 202, 151, 211, 151, 211, 151, 211, - 151, 211, 151, 202, 152, 6, 0, 3, 7, 96, - 150, 5, 151, 3, 151, 3, 151, 3, 151, 202, + 150, 231, 151, 5, 152, 6, 0, 112, 150, 231, + 152, 6, 0, 113, 150, 5, 151, 5, 151, 231, + 151, 231, 151, 5, 151, 5, 151, 5, 152, 6, + 0, 3, 7, 90, 150, 5, 151, 230, 152, 6, + 0, 3, 7, 89, 150, 5, 151, 227, 151, 235, + 151, 226, 151, 226, 151, 226, 151, 235, 151, 235, + 151, 226, 152, 6, 0, 3, 7, 88, 150, 5, + 151, 227, 151, 227, 151, 233, 151, 226, 151, 226, + 151, 226, 151, 226, 151, 235, 151, 235, 151, 235, + 151, 235, 151, 226, 152, 6, 0, 3, 7, 96, + 150, 5, 151, 3, 151, 3, 151, 3, 151, 226, 152, 6, 0, 3, 7, 100, 150, 5, 151, 3, - 151, 202, 152, 6, 0, 3, 7, 117, 150, 5, - 151, 3, 151, 202, 152, 6, 0, 3, 7, 98, - 150, 5, 151, 145, 151, 145, 151, 203, 151, 202, - 152, 6, 0, 3, 7, 101, 150, 5, 151, 211, - 152, 6, 0, 3, 7, 102, 150, 5, 151, 211, - 151, 3, 151, 202, 152, 6, 0, 3, 7, 97, + 151, 226, 152, 6, 0, 3, 7, 117, 150, 5, + 151, 3, 151, 226, 152, 6, 0, 3, 7, 98, + 150, 5, 151, 145, 151, 145, 151, 227, 151, 226, + 152, 6, 0, 3, 7, 101, 150, 5, 151, 235, + 152, 6, 0, 3, 7, 102, 150, 5, 151, 235, + 151, 3, 151, 226, 152, 6, 0, 3, 7, 97, 150, 5, 151, 3, 152, 6, 0, 3, 7, 103, - 150, 5, 151, 3, 151, 203, 152, 6, 0, 3, + 150, 5, 151, 3, 151, 227, 152, 6, 0, 3, 7, 105, 150, 5, 151, 3, 151, 3, 151, 3, - 152, 6, 0, 3, 7, 104, 150, 5, 151, 206, + 152, 6, 0, 3, 7, 104, 150, 5, 151, 230, 152, 6, 0, 3, 7, 99, 150, 5, 151, 3, 152, 6, 0, 3, 7, 33, 150, 5, 151, 3, 151, 3, 152, 6, 0, 3, 7, 115, 150, 5, - 151, 211, 152, 6, 0, 3, 7, 116, 150, 5, - 151, 211, 151, 3, 152, 6, 0, 3, 7, 114, + 151, 235, 152, 6, 0, 3, 7, 116, 150, 5, + 151, 235, 151, 3, 152, 6, 0, 3, 7, 114, 150, 5, 151, 3, 152, 6, 0, 3, 7, 118, - 150, 5, 151, 3, 151, 203, 152, 6, 0, 3, - 7, 119, 150, 5, 151, 3, 151, 203, 151, 203, + 150, 5, 151, 3, 151, 227, 152, 6, 0, 3, + 7, 119, 150, 5, 151, 3, 151, 227, 151, 227, 152, 6, 0, 3, 7, 126, 150, 5, 151, 3, - 151, 203, 151, 203, 152, 6, 0, 3, 7, 120, - 150, 5, 151, 3, 151, 203, 152, 6, 0, 3, - 7, 130, 150, 5, 151, 3, 151, 203, 151, 203, + 151, 227, 151, 227, 152, 6, 0, 3, 7, 120, + 150, 5, 151, 3, 151, 227, 152, 6, 0, 3, + 7, 130, 150, 5, 151, 3, 151, 227, 151, 227, 152, 6, 0, 3, 7, 121, 150, 5, 151, 3, - 151, 211, 151, 211, 151, 202, 151, 202, 152, 6, - 0, 3, 7, 122, 150, 5, 151, 211, 152, 6, - 0, 3, 7, 123, 150, 124, 151, 202, 151, 3, - 152, 6, 0, 3, 7, 125, 150, 5, 151, 211, - 151, 202, 152, 6, 0, 3, 7, 127, 150, 5, + 151, 235, 151, 235, 151, 226, 151, 226, 152, 6, + 0, 3, 7, 122, 150, 5, 151, 235, 152, 6, + 0, 3, 7, 123, 150, 124, 151, 226, 151, 3, + 152, 6, 0, 3, 7, 125, 150, 5, 151, 235, + 151, 226, 152, 6, 0, 3, 7, 127, 150, 5, 151, 5, 151, 3, 151, 3, 152, 6, 0, 3, 7, 128, 150, 5, 151, 5, 151, 3, 152, 6, 0, 3, 7, 129, 150, 3, 151, 3, 152, 6, - 0, 0, 164, 165, 0, 166, 0, 180, 0, 181, - 0, 182, 0, 185, 0, 186, 0, 188, 0, 191, - 0, 192, 0, 187, 0, 193, 0, 1, 6, 0, + 0, 0, 164, 165, 0, 166, 0, 204, 0, 205, + 0, 206, 0, 209, 0, 210, 0, 212, 0, 215, + 0, 216, 0, 211, 0, 217, 0, 1, 6, 0, 62, 5, 153, 167, 154, 6, 0, 62, 5, 63, - 206, 153, 167, 154, 6, 0, 0, 167, 168, 0, - 167, 169, 0, 167, 170, 0, 167, 171, 0, 167, - 172, 0, 167, 173, 0, 167, 174, 0, 167, 175, - 0, 167, 176, 0, 167, 177, 0, 167, 178, 0, - 167, 179, 0, 66, 150, 203, 151, 203, 151, 203, - 151, 203, 151, 203, 151, 203, 151, 203, 151, 203, - 151, 203, 151, 203, 151, 203, 151, 203, 152, 211, - 6, 0, 67, 150, 203, 151, 203, 151, 203, 151, - 203, 151, 203, 151, 203, 151, 203, 151, 203, 151, - 203, 151, 203, 151, 203, 151, 203, 152, 211, 6, - 0, 68, 150, 203, 151, 203, 151, 203, 151, 203, - 151, 203, 151, 203, 151, 203, 151, 203, 151, 203, - 151, 203, 151, 203, 151, 203, 152, 211, 6, 0, - 69, 150, 203, 151, 203, 151, 203, 151, 203, 151, - 203, 151, 203, 151, 203, 151, 203, 151, 203, 152, - 211, 6, 0, 70, 150, 203, 151, 203, 151, 203, - 151, 203, 151, 203, 151, 203, 151, 203, 151, 203, - 151, 203, 152, 211, 6, 0, 71, 150, 203, 151, - 203, 151, 203, 151, 203, 151, 203, 151, 203, 151, - 203, 151, 203, 151, 203, 152, 211, 6, 0, 72, - 150, 203, 151, 203, 151, 203, 151, 203, 151, 203, - 151, 203, 152, 211, 6, 0, 73, 150, 203, 151, - 203, 151, 203, 151, 203, 151, 203, 151, 203, 152, - 211, 6, 0, 74, 150, 203, 151, 203, 151, 203, - 151, 203, 151, 203, 151, 203, 152, 211, 6, 0, - 75, 150, 203, 151, 203, 151, 203, 152, 211, 6, - 0, 76, 150, 203, 151, 203, 151, 203, 152, 211, - 6, 0, 77, 150, 203, 151, 203, 151, 203, 152, - 211, 6, 0, 4, 7, 203, 6, 0, 30, 150, - 203, 152, 7, 206, 6, 0, 45, 30, 150, 203, - 152, 7, 211, 6, 0, 64, 30, 150, 203, 151, - 203, 151, 203, 152, 7, 211, 6, 0, 37, 38, - 211, 7, 203, 6, 0, 30, 150, 203, 152, 6, - 0, 33, 150, 203, 152, 7, 211, 6, 0, 35, - 150, 203, 152, 7, 211, 6, 0, 64, 33, 150, - 203, 151, 203, 151, 203, 152, 7, 211, 6, 0, - 31, 150, 203, 152, 7, 211, 6, 0, 31, 150, - 203, 152, 7, 211, 41, 206, 6, 0, 39, 150, - 203, 152, 7, 150, 203, 151, 203, 151, 5, 151, - 5, 151, 5, 152, 6, 0, 32, 150, 203, 152, - 7, 211, 6, 0, 45, 33, 150, 203, 152, 7, - 211, 6, 0, 33, 57, 150, 203, 152, 7, 211, - 6, 0, 33, 150, 203, 152, 6, 0, 78, 150, - 203, 152, 7, 211, 6, 0, 79, 150, 203, 152, - 7, 211, 83, 211, 80, 203, 6, 0, 41, 34, - 150, 203, 152, 7, 211, 6, 0, 131, 34, 150, - 203, 152, 7, 203, 211, 6, 0, 42, 34, 150, - 203, 152, 7, 211, 6, 0, 79, 34, 81, 82, - 150, 203, 152, 7, 209, 83, 153, 211, 151, 211, - 154, 80, 153, 203, 151, 203, 154, 6, 0, 79, - 34, 150, 203, 152, 7, 209, 83, 153, 211, 151, - 211, 154, 80, 153, 203, 151, 203, 154, 6, 0, - 45, 34, 150, 203, 152, 7, 211, 6, 0, 34, - 57, 150, 203, 152, 7, 211, 6, 0, 34, 150, - 203, 152, 6, 0, 44, 36, 150, 203, 152, 7, - 211, 6, 0, 36, 150, 203, 152, 7, 211, 6, - 0, 45, 36, 150, 203, 152, 7, 211, 6, 0, - 52, 150, 206, 152, 153, 183, 154, 0, 51, 150, - 206, 151, 206, 151, 203, 152, 153, 183, 154, 0, - 53, 150, 206, 152, 153, 183, 154, 0, 54, 150, - 206, 151, 203, 152, 153, 183, 154, 0, 185, 0, - 184, 0, 182, 0, 0, 184, 181, 0, 56, 153, - 184, 154, 0, 60, 153, 184, 154, 0, 58, 5, - 6, 0, 55, 150, 203, 151, 206, 152, 6, 0, - 55, 34, 150, 203, 151, 206, 152, 6, 0, 55, - 150, 203, 151, 206, 151, 206, 151, 203, 152, 6, - 0, 55, 34, 150, 203, 151, 206, 151, 206, 151, - 203, 152, 6, 0, 55, 30, 150, 203, 151, 206, - 151, 206, 151, 203, 152, 6, 0, 55, 30, 150, - 203, 151, 206, 152, 6, 0, 55, 33, 150, 203, - 151, 206, 151, 206, 151, 203, 152, 6, 0, 55, - 33, 150, 203, 151, 206, 152, 6, 0, 55, 34, - 150, 203, 151, 206, 152, 153, 189, 154, 6, 0, - 55, 34, 150, 203, 151, 206, 151, 206, 151, 203, - 152, 153, 189, 154, 6, 0, 190, 0, 189, 190, - 0, 65, 153, 211, 151, 211, 151, 211, 154, 6, - 0, 59, 6, 0, 43, 33, 211, 7, 203, 6, - 0, 43, 33, 211, 7, 203, 46, 47, 203, 6, - 0, 43, 33, 211, 7, 203, 46, 48, 203, 6, - 0, 43, 33, 211, 7, 203, 46, 49, 203, 6, - 0, 43, 34, 153, 203, 154, 7, 211, 6, 0, - 40, 34, 153, 203, 154, 7, 211, 6, 0, 43, - 36, 153, 203, 154, 7, 211, 6, 0, 59, 34, - 211, 7, 203, 6, 0, 59, 34, 211, 6, 0, - 45, 50, 150, 203, 152, 7, 211, 6, 0, 61, - 6, 0, 84, 153, 194, 154, 0, 0, 194, 195, - 0, 0, 85, 196, 153, 199, 154, 0, 0, 86, - 197, 153, 199, 154, 0, 0, 87, 198, 153, 199, - 154, 0, 0, 200, 199, 0, 4, 7, 4, 6, - 0, 4, 7, 153, 4, 151, 203, 154, 6, 0, - 4, 7, 201, 6, 0, 153, 203, 151, 203, 151, - 203, 151, 203, 154, 0, 153, 203, 151, 203, 151, - 203, 154, 0, 91, 0, 92, 0, 93, 0, 94, - 0, 95, 0, 204, 0, 150, 203, 152, 0, 203, - 144, 203, 0, 203, 143, 203, 0, 203, 145, 203, - 0, 203, 146, 203, 0, 203, 149, 203, 0, 144, - 203, 0, 143, 203, 0, 10, 150, 203, 152, 0, - 11, 150, 203, 152, 0, 12, 150, 203, 152, 0, - 13, 150, 203, 152, 0, 14, 150, 203, 152, 0, - 15, 150, 203, 152, 0, 16, 150, 203, 152, 0, - 17, 150, 203, 152, 0, 18, 150, 203, 152, 0, - 19, 150, 203, 152, 0, 20, 150, 203, 151, 203, - 152, 0, 21, 150, 203, 152, 0, 22, 150, 203, - 152, 0, 23, 150, 203, 152, 0, 24, 150, 203, - 152, 0, 25, 150, 203, 152, 0, 26, 150, 203, - 152, 0, 27, 150, 203, 151, 203, 152, 0, 28, - 150, 203, 151, 203, 152, 0, 29, 150, 203, 151, - 203, 152, 0, 3, 0, 9, 0, 4, 0, 203, - 8, 203, 0, 203, 8, 155, 203, 156, 203, 0, - 153, 203, 151, 203, 151, 203, 151, 203, 151, 203, - 154, 0, 153, 203, 151, 203, 151, 203, 151, 203, - 154, 0, 153, 203, 151, 203, 151, 203, 154, 0, - 150, 203, 151, 203, 151, 203, 152, 0, 0, 150, - 208, 152, 0, 5, 0, 208, 151, 5, 0, 0, - 153, 210, 154, 0, 150, 210, 152, 0, 211, 0, - 210, 151, 211, 0, 0, 203, 0, 153, 212, 154, - 0, 203, 0, 205, 0, 212, 151, 203, 0, 212, - 151, 205, 0 + 230, 153, 167, 154, 6, 0, 0, 167, 169, 0, + 167, 172, 0, 167, 175, 0, 167, 178, 0, 167, + 181, 0, 167, 184, 0, 167, 187, 0, 167, 190, + 0, 167, 193, 0, 167, 196, 0, 167, 199, 0, + 167, 202, 0, 227, 0, 168, 151, 227, 0, 0, + 75, 150, 227, 151, 227, 151, 227, 152, 170, 153, + 168, 154, 6, 0, 227, 0, 171, 151, 227, 0, + 0, 76, 150, 227, 151, 227, 151, 227, 152, 173, + 153, 171, 154, 6, 0, 227, 0, 174, 151, 227, + 0, 0, 77, 150, 227, 151, 227, 151, 227, 152, + 176, 153, 174, 154, 6, 0, 227, 0, 177, 151, + 227, 0, 0, 72, 150, 227, 151, 227, 151, 227, + 151, 227, 151, 227, 151, 227, 152, 179, 153, 177, + 154, 6, 0, 227, 0, 180, 151, 227, 0, 0, + 73, 150, 227, 151, 227, 151, 227, 151, 227, 151, + 227, 151, 227, 152, 182, 153, 180, 154, 6, 0, + 227, 0, 183, 151, 227, 0, 0, 74, 150, 227, + 151, 227, 151, 227, 151, 227, 151, 227, 151, 227, + 152, 185, 153, 183, 154, 6, 0, 227, 0, 186, + 151, 227, 0, 0, 69, 150, 227, 151, 227, 151, + 227, 151, 227, 151, 227, 151, 227, 151, 227, 151, + 227, 151, 227, 152, 188, 153, 186, 154, 6, 0, + 227, 0, 189, 151, 227, 0, 0, 70, 150, 227, + 151, 227, 151, 227, 151, 227, 151, 227, 151, 227, + 151, 227, 151, 227, 151, 227, 152, 191, 153, 189, + 154, 6, 0, 227, 0, 192, 151, 227, 0, 0, + 71, 150, 227, 151, 227, 151, 227, 151, 227, 151, + 227, 151, 227, 151, 227, 151, 227, 151, 227, 152, + 194, 153, 192, 154, 6, 0, 227, 0, 195, 151, + 227, 0, 0, 66, 150, 227, 151, 227, 151, 227, + 151, 227, 151, 227, 151, 227, 151, 227, 151, 227, + 151, 227, 151, 227, 151, 227, 151, 227, 152, 197, + 153, 195, 154, 6, 0, 227, 0, 198, 151, 227, + 0, 0, 67, 150, 227, 151, 227, 151, 227, 151, + 227, 151, 227, 151, 227, 151, 227, 151, 227, 151, + 227, 151, 227, 151, 227, 151, 227, 152, 200, 153, + 198, 154, 6, 0, 227, 0, 201, 151, 227, 0, + 0, 68, 150, 227, 151, 227, 151, 227, 151, 227, + 151, 227, 151, 227, 151, 227, 151, 227, 151, 227, + 151, 227, 151, 227, 151, 227, 152, 203, 153, 201, + 154, 6, 0, 4, 7, 227, 6, 0, 30, 150, + 227, 152, 7, 230, 6, 0, 45, 30, 150, 227, + 152, 7, 235, 6, 0, 64, 30, 150, 227, 151, + 227, 151, 227, 152, 7, 235, 6, 0, 37, 38, + 235, 7, 227, 6, 0, 30, 150, 227, 152, 6, + 0, 33, 150, 227, 152, 7, 235, 6, 0, 35, + 150, 227, 152, 7, 235, 6, 0, 64, 33, 150, + 227, 151, 227, 151, 227, 152, 7, 235, 6, 0, + 31, 150, 227, 152, 7, 235, 6, 0, 31, 150, + 227, 152, 7, 235, 41, 230, 6, 0, 39, 150, + 227, 152, 7, 150, 227, 151, 227, 151, 5, 151, + 5, 151, 5, 152, 6, 0, 32, 150, 227, 152, + 7, 235, 6, 0, 45, 33, 150, 227, 152, 7, + 235, 6, 0, 33, 57, 150, 227, 152, 7, 235, + 6, 0, 33, 150, 227, 152, 6, 0, 78, 150, + 227, 152, 7, 235, 6, 0, 79, 150, 227, 152, + 7, 235, 83, 235, 80, 227, 6, 0, 41, 34, + 150, 227, 152, 7, 235, 6, 0, 131, 34, 150, + 227, 152, 7, 227, 235, 6, 0, 42, 34, 150, + 227, 152, 7, 235, 6, 0, 79, 34, 81, 82, + 150, 227, 152, 7, 233, 83, 153, 235, 151, 235, + 154, 80, 153, 227, 151, 227, 154, 6, 0, 79, + 34, 150, 227, 152, 7, 233, 83, 153, 235, 151, + 235, 154, 80, 153, 227, 151, 227, 154, 6, 0, + 45, 34, 150, 227, 152, 7, 235, 6, 0, 34, + 57, 150, 227, 152, 7, 235, 6, 0, 34, 150, + 227, 152, 6, 0, 44, 36, 150, 227, 152, 7, + 235, 6, 0, 36, 150, 227, 152, 7, 235, 6, + 0, 45, 36, 150, 227, 152, 7, 235, 6, 0, + 52, 150, 230, 152, 153, 207, 154, 0, 51, 150, + 230, 151, 230, 151, 227, 152, 153, 207, 154, 0, + 53, 150, 230, 152, 153, 207, 154, 0, 54, 150, + 230, 151, 227, 152, 153, 207, 154, 0, 209, 0, + 208, 0, 206, 0, 0, 208, 205, 0, 56, 153, + 208, 154, 0, 60, 153, 208, 154, 0, 58, 5, + 6, 0, 55, 150, 227, 151, 230, 152, 6, 0, + 55, 34, 150, 227, 151, 230, 152, 6, 0, 55, + 150, 227, 151, 230, 151, 230, 151, 227, 152, 6, + 0, 55, 34, 150, 227, 151, 230, 151, 230, 151, + 227, 152, 6, 0, 55, 30, 150, 227, 151, 230, + 151, 230, 151, 227, 152, 6, 0, 55, 30, 150, + 227, 151, 230, 152, 6, 0, 55, 33, 150, 227, + 151, 230, 151, 230, 151, 227, 152, 6, 0, 55, + 33, 150, 227, 151, 230, 152, 6, 0, 55, 34, + 150, 227, 151, 230, 152, 153, 213, 154, 6, 0, + 55, 34, 150, 227, 151, 230, 151, 230, 151, 227, + 152, 153, 213, 154, 6, 0, 214, 0, 213, 214, + 0, 65, 153, 235, 151, 235, 151, 235, 154, 6, + 0, 59, 6, 0, 43, 33, 235, 7, 227, 6, + 0, 43, 33, 235, 7, 227, 46, 47, 227, 6, + 0, 43, 33, 235, 7, 227, 46, 48, 227, 6, + 0, 43, 33, 235, 7, 227, 46, 49, 227, 6, + 0, 43, 34, 153, 227, 154, 7, 235, 6, 0, + 40, 34, 153, 227, 154, 7, 235, 6, 0, 43, + 36, 153, 227, 154, 7, 235, 6, 0, 59, 34, + 235, 7, 227, 6, 0, 59, 34, 235, 6, 0, + 61, 6, 0, 84, 153, 218, 154, 0, 0, 218, + 219, 0, 0, 85, 220, 153, 223, 154, 0, 0, + 86, 221, 153, 223, 154, 0, 0, 87, 222, 153, + 223, 154, 0, 0, 224, 223, 0, 4, 7, 4, + 6, 0, 4, 7, 153, 4, 151, 227, 154, 6, + 0, 4, 7, 225, 6, 0, 153, 227, 151, 227, + 151, 227, 151, 227, 154, 0, 153, 227, 151, 227, + 151, 227, 154, 0, 91, 0, 92, 0, 93, 0, + 94, 0, 95, 0, 228, 0, 150, 227, 152, 0, + 227, 144, 227, 0, 227, 143, 227, 0, 227, 145, + 227, 0, 227, 146, 227, 0, 227, 149, 227, 0, + 144, 227, 0, 143, 227, 0, 10, 150, 227, 152, + 0, 11, 150, 227, 152, 0, 12, 150, 227, 152, + 0, 13, 150, 227, 152, 0, 14, 150, 227, 152, + 0, 15, 150, 227, 152, 0, 16, 150, 227, 152, + 0, 17, 150, 227, 152, 0, 18, 150, 227, 152, + 0, 19, 150, 227, 152, 0, 20, 150, 227, 151, + 227, 152, 0, 21, 150, 227, 152, 0, 22, 150, + 227, 152, 0, 23, 150, 227, 152, 0, 24, 150, + 227, 152, 0, 25, 150, 227, 152, 0, 26, 150, + 227, 152, 0, 27, 150, 227, 151, 227, 152, 0, + 28, 150, 227, 151, 227, 152, 0, 29, 150, 227, + 151, 227, 152, 0, 3, 0, 9, 0, 4, 0, + 227, 8, 227, 0, 227, 8, 155, 227, 156, 227, + 0, 153, 227, 151, 227, 151, 227, 151, 227, 151, + 227, 154, 0, 153, 227, 151, 227, 151, 227, 151, + 227, 154, 0, 153, 227, 151, 227, 151, 227, 154, + 0, 150, 227, 151, 227, 151, 227, 152, 0, 0, + 150, 232, 152, 0, 5, 0, 232, 151, 5, 0, + 0, 153, 234, 154, 0, 150, 234, 152, 0, 235, + 0, 234, 151, 235, 0, 0, 227, 0, 153, 236, + 154, 0, 227, 0, 229, 0, 236, 151, 227, 0, + 236, 151, 229, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 109, 111, 112, 119, 127, 141, 153, 155, 158, 160, - 161, 162, 165, 171, 176, 177, 178, 181, 185, 188, - 194, 199, 205, 213, 218, 222, 228, 233, 237, 242, - 246, 249, 254, 258, 262, 266, 271, 275, 278, 282, - 286, 290, 294, 298, 302, 305, 309, 312, 316, 319, - 328, 330, 336, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 355, 360, 366, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 385, - 395, 405, 415, 424, 433, 442, 450, 458, 466, 473, - 480, 491, 505, 516, 522, 541, 552, 560, 566, 572, - 591, 597, 613, 620, 626, 632, 638, 647, 653, 673, - 679, 698, 717, 725, 731, 737, 743, 755, 761, 767, - 779, 785, 790, 795, 802, 804, 805, 808, 813, 824, - 842, 857, 888, 893, 897, 901, 905, 911, 916, 920, - 924, 929, 937, 941, 946, 964, 974, 992, 1009, 1026, - 1043, 1063, 1082, 1101, 1116, 1131, 1142, 1153, 1157, 1159, - 1162, 1165, 1166, 1168, 1169, 1171, 1174, 1176, 1179, 1190, - 1200, 1210, 1218, 1294, 1296, 1297, 1298, 1299, 1302, 1304, - 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, - 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, - 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1334, 1336, 1337, - 1348, 1355, 1368, 1377, 1385, 1393, 1403, 1407, 1412, 1416, - 1421, 1425, 1429, 1435, 1441, 1447, 1451, 1457, 1470, 1476, - 1485, 1489 + 114, 116, 117, 124, 132, 146, 158, 160, 163, 165, + 166, 167, 170, 176, 181, 182, 183, 186, 190, 193, + 199, 204, 210, 218, 223, 227, 233, 238, 242, 247, + 251, 254, 259, 263, 267, 271, 276, 280, 283, 287, + 291, 295, 299, 303, 307, 310, 314, 317, 321, 324, + 333, 335, 341, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 360, 365, 371, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 390, + 393, 397, 403, 409, 412, 416, 422, 428, 431, 435, + 441, 447, 450, 454, 462, 468, 471, 475, 483, 489, + 492, 496, 504, 510, 513, 517, 529, 535, 538, 542, + 554, 560, 563, 567, 579, 585, 588, 592, 605, 611, + 614, 618, 631, 637, 640, 644, 657, 669, 683, 694, + 700, 719, 730, 738, 744, 750, 769, 775, 791, 798, + 804, 810, 816, 825, 831, 853, 859, 878, 899, 907, + 913, 919, 925, 937, 943, 949, 961, 967, 972, 977, + 984, 986, 987, 990, 995, 1006, 1024, 1039, 1070, 1075, + 1079, 1083, 1087, 1093, 1098, 1102, 1106, 1111, 1119, 1123, + 1128, 1146, 1156, 1174, 1191, 1208, 1225, 1246, 1266, 1286, + 1301, 1323, 1334, 1338, 1340, 1343, 1346, 1347, 1349, 1350, + 1352, 1355, 1357, 1360, 1371, 1381, 1391, 1399, 1475, 1477, + 1478, 1479, 1480, 1483, 1485, 1486, 1487, 1488, 1489, 1490, + 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, + 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, + 1511, 1512, 1515, 1517, 1518, 1529, 1536, 1549, 1558, 1566, + 1574, 1584, 1588, 1593, 1597, 1602, 1606, 1610, 1616, 1622, + 1628, 1632, 1638, 1651, 1657, 1666, 1670 }; #endif @@ -506,8 +525,8 @@ static const char * const yytname[] = { "$","error","$undefined.","tDOUBLE", "tElliptic","tPlane","tRuled","tTransfinite","tComplex","tPhysical","tUsing", "tPower","tBump","tProgression","tAssociation","tRotate","tTranslate","tSymmetry", "tDilate","tExtrude","tDuplicata","tLoop","tInclude","tRecombine","tDelete", -"tCoherence","tView","tOffset","tAttractor","tLayers","tScalarSimplex","tVectorSimplex", -"tTensorSimplex","tScalarTriangle","tVectorTriangle","tTensorTriangle","tScalarLine", +"tCoherence","tView","tOffset","tAttractor","tLayers","tScalarTetrahedron","tVectorTetrahedron", +"tTensorTetrahedron","tScalarTriangle","tVectorTriangle","tTensorTriangle","tScalarLine", "tVectorLine","tTensorLine","tScalarPoint","tVectorPoint","tTensorPoint","tBSpline", "tNurbs","tOrder","tWith","tBounds","tKnots","tColor","tGeneral","tGeometry", "tMesh","tB_SPLINE_SURFACE_WITH_KNOTS","tB_SPLINE_CURVE_WITH_KNOTS","tCARTESIAN_POINT", @@ -522,14 +541,19 @@ static const char * const yytname[] = { "$","error","$undefined.","tDOUBLE", "tLoopSTL","tEndLoop","tEndFacet","'<'","'>'","'+'","'-'","'*'","'/'","'%'", "UMINUS","'^'","'('","','","')'","'{'","'}'","'['","']'","All","STLFormatItem", "StepFormatItems","StepFormatItem","StepSpecial","StepHeaderItem","StepDataItem", -"GeomFormatList","GeomFormat","View","Views","ScalarSimplex","VectorSimplex", -"TensorSimplex","ScalarTriangle","VectorTriangle","TensorTriangle","ScalarLine", -"VectorLine","TensorLine","ScalarPoint","VectorPoint","TensorPoint","Affectation", -"Shape","Transform","MultipleShape","ListOfShapes","Duplicata","Delete","Macro", -"Extrude","ExtrudeParameters","ExtrudeParameter","Transfini","Coherence","Colors", -"ColorSections","ColorSection","@1","@2","@3","ColorAffects","ColorAffect","RGBAExpr", -"BoolExpr","FExpr","FExpr_Single","FExpr_Range","VExpr","ListOfStrings","RecursiveListOfStrings", -"ListOfListOfDouble","RecursiveListOfListOfDouble","ListOfDouble","RecursiveListOfDouble", NULL +"GeomFormatList","GeomFormat","View","Views","ScalarPointValues","ScalarPoint", +"@1","VectorPointValues","VectorPoint","@2","TensorPointValues","TensorPoint", +"@3","ScalarLineValues","ScalarLine","@4","VectorLineValues","VectorLine","@5", +"TensorLineValues","TensorLine","@6","ScalarTriangleValues","ScalarTriangle", +"@7","VectorTriangleValues","VectorTriangle","@8","TensorTriangleValues","TensorTriangle", +"@9","ScalarTetrahedronValues","ScalarTetrahedron","@10","VectorTetrahedronValues", +"VectorTetrahedron","@11","TensorTetrahedronValues","TensorTetrahedron","@12", +"Affectation","Shape","Transform","MultipleShape","ListOfShapes","Duplicata", +"Delete","Macro","Extrude","ExtrudeParameters","ExtrudeParameter","Transfini", +"Coherence","Colors","ColorSections","ColorSection","@13","@14","@15","ColorAffects", +"ColorAffect","RGBAExpr","BoolExpr","FExpr","FExpr_Single","FExpr_Range","VExpr", +"ListOfStrings","RecursiveListOfStrings","ListOfListOfDouble","RecursiveListOfListOfDouble", +"ListOfDouble","RecursiveListOfDouble", NULL }; #endif @@ -542,22 +566,25 @@ static const short yyr1[] = { 0, 164, 164, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 182, 182, 182, 182, 183, 183, 183, 184, 184, 185, - 186, 187, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 189, 189, 190, 190, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 192, 193, 194, 194, - 196, 195, 197, 195, 198, 195, 199, 199, 200, 200, - 200, 201, 201, 202, 202, 202, 202, 202, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 204, 204, 204, - 205, 205, 206, 206, 206, 206, 207, 207, 208, 208, - 209, 209, 209, 210, 210, 211, 211, 211, 212, 212, - 212, 212 + 168, 170, 169, 171, 171, 173, 172, 174, 174, 176, + 175, 177, 177, 179, 178, 180, 180, 182, 181, 183, + 183, 185, 184, 186, 186, 188, 187, 189, 189, 191, + 190, 192, 192, 194, 193, 195, 195, 197, 196, 198, + 198, 200, 199, 201, 201, 203, 202, 204, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 206, 206, 206, 206, + 207, 207, 207, 208, 208, 209, 210, 211, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 213, 213, + 214, 214, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 216, 217, 218, 218, 220, 219, 221, 219, 222, + 219, 223, 223, 224, 224, 224, 225, 225, 226, 226, + 226, 226, 226, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 228, 228, 228, 229, 229, 230, 230, 230, + 230, 231, 231, 232, 232, 233, 233, 233, 234, 234, + 235, 235, 235, 236, 236, 236, 236 }; static const short yyr2[] = { 0, @@ -568,776 +595,807 @@ static const short yyr2[] = { 0, 13, 11, 13, 17, 9, 11, 11, 13, 11, 9, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 6, 8, 0, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 28, - 28, 28, 22, 22, 22, 16, 16, 16, 10, 10, - 10, 4, 7, 8, 12, 6, 5, 7, 7, 12, - 7, 9, 17, 7, 8, 8, 5, 7, 11, 8, - 9, 8, 22, 20, 8, 8, 5, 8, 7, 8, - 7, 11, 7, 9, 1, 1, 1, 0, 2, 4, - 4, 3, 7, 8, 11, 12, 12, 8, 12, 8, - 11, 15, 1, 2, 9, 2, 6, 9, 9, 9, - 8, 8, 8, 6, 4, 8, 2, 4, 0, 2, - 0, 5, 0, 5, 0, 5, 0, 2, 4, 8, - 4, 9, 7, 1, 1, 1, 1, 1, 1, 3, - 3, 3, 3, 3, 3, 2, 2, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, - 4, 4, 4, 4, 6, 6, 6, 1, 1, 1, - 3, 6, 11, 9, 7, 7, 0, 3, 1, 3, - 0, 3, 3, 1, 3, 0, 1, 3, 1, 1, - 3, 3 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 3, 0, 13, 1, 3, 0, 13, 1, 3, 0, + 13, 1, 3, 0, 19, 1, 3, 0, 19, 1, + 3, 0, 19, 1, 3, 0, 25, 1, 3, 0, + 25, 1, 3, 0, 25, 1, 3, 0, 31, 1, + 3, 0, 31, 1, 3, 0, 31, 4, 7, 8, + 12, 6, 5, 7, 7, 12, 7, 9, 17, 7, + 8, 8, 5, 7, 11, 8, 9, 8, 22, 20, + 8, 8, 5, 8, 7, 8, 7, 11, 7, 9, + 1, 1, 1, 0, 2, 4, 4, 3, 7, 8, + 11, 12, 12, 8, 12, 8, 11, 15, 1, 2, + 9, 2, 6, 9, 9, 9, 8, 8, 8, 6, + 4, 2, 4, 0, 2, 0, 5, 0, 5, 0, + 5, 0, 2, 4, 8, 4, 9, 7, 1, 1, + 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, + 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 6, 4, 4, 4, 4, 4, 4, 6, + 6, 6, 1, 1, 1, 3, 6, 11, 9, 7, + 7, 0, 3, 1, 3, 0, 3, 3, 1, 3, + 0, 1, 3, 1, 1, 3, 3 }; static const short yydefact[] = { 51, - 4, 6, 0, 3, 0, 0, 0, 0, 0, 0, + 4, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 11, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 53, 54, 55, 56, 57, - 58, 62, 59, 60, 61, 63, 0, 12, 0, 13, - 14, 16, 15, 17, 217, 217, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 226, 0, - 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, + 58, 62, 59, 60, 61, 63, 243, 245, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 226, 128, 157, 0, 0, 0, 0, 0, - 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 214, 12, 0, 13, 14, 16, 15, + 17, 252, 252, 0, 64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 261, 0, 0, 0, 0, + 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 164, 0, 261, 164, + 192, 0, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 208, 210, - 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, + 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 215, 217, 216, 218, 219, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 186, 0, 92, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, - 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 130, 129, 155, - 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, - 161, 163, 165, 158, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 254, 0, 0, 0, 0, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 264, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 218, 0, - 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 180, 182, 181, 183, 184, 185, 97, 0, - 226, 226, 0, 107, 226, 0, 117, 226, 226, 0, - 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, - 128, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 166, 165, 191, 0, 167, 0, 0, 0, 0, + 0, 0, 0, 0, 196, 198, 200, 193, 195, 0, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 0, 234, 235, 236, 237, 238, 239, 0, 0, 0, + 217, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 0, 0, 226, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 226, 226, 0, 0, 0, 0, 226, - 226, 0, 0, 0, 0, 0, 226, 0, 226, 0, - 0, 0, 0, 0, 220, 0, 217, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 0, 199, 200, - 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, - 226, 0, 226, 0, 0, 0, 211, 231, 232, 96, - 0, 226, 226, 226, 147, 0, 226, 226, 226, 226, - 226, 226, 226, 226, 0, 0, 0, 127, 0, 126, - 125, 0, 0, 0, 0, 0, 0, 0, 154, 0, + 0, 0, 0, 0, 253, 0, 19, 0, 133, 0, + 261, 261, 0, 143, 261, 0, 153, 261, 261, 0, + 0, 263, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 164, 164, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 65, 0, 0, 0, 0, 221, 0, 167, - 167, 167, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 0, 0, 261, 0, 0, 261, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 261, 261, 0, 0, + 0, 0, 261, 261, 0, 0, 0, 0, 0, 261, + 0, 261, 0, 0, 0, 0, 0, 255, 0, 252, + 0, 0, 0, 261, 0, 261, 0, 0, 0, 246, + 266, 267, 132, 0, 261, 261, 261, 183, 0, 261, + 261, 261, 261, 261, 261, 261, 0, 0, 0, 163, + 0, 162, 161, 0, 0, 0, 0, 0, 0, 0, + 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 0, 0, 0, 0, 256, + 0, 202, 202, 202, 0, 233, 240, 241, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 93, 101, 0, 104, 0, - 98, 0, 99, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 121, 123, 128, 0, 0, 0, 0, - 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, - 0, 226, 226, 0, 226, 0, 0, 167, 0, 0, - 226, 0, 0, 0, 226, 0, 0, 0, 0, 0, + 0, 0, 0, 209, 210, 211, 212, 213, 0, 0, + 0, 0, 0, 0, 0, 18, 0, 129, 137, 0, + 140, 0, 134, 0, 135, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 198, 205, 206, 207, 0, 106, 116, - 0, 0, 152, 110, 112, 0, 0, 0, 151, 153, - 118, 94, 105, 115, 120, 156, 0, 0, 0, 0, - 0, 138, 0, 140, 0, 134, 0, 0, 66, 0, + 0, 0, 0, 0, 157, 159, 164, 0, 0, 0, + 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 221, 0, 224, 0, 0, 0, 0, - 162, 168, 164, 166, 0, 0, 0, 0, 0, 0, - 0, 21, 0, 30, 0, 34, 0, 28, 0, 0, - 33, 0, 38, 36, 0, 0, 0, 0, 0, 0, - 45, 0, 0, 0, 0, 0, 50, 0, 0, 102, - 212, 0, 148, 149, 150, 216, 0, 215, 128, 124, - 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, + 144, 0, 261, 261, 0, 261, 0, 0, 202, 0, + 0, 261, 0, 0, 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 226, 223, 222, 226, 0, 0, 0, - 0, 182, 181, 111, 0, 0, 221, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, + 0, 0, 0, 0, 261, 0, 0, 0, 0, 0, + 0, 0, 0, 252, 0, 142, 152, 0, 0, 188, + 146, 148, 0, 0, 0, 187, 189, 154, 130, 141, + 151, 156, 0, 0, 0, 0, 0, 174, 0, 176, + 0, 170, 0, 0, 66, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, + 0, 259, 0, 0, 0, 0, 197, 203, 199, 201, + 0, 0, 0, 0, 0, 21, 0, 30, 0, 34, + 0, 28, 0, 0, 33, 0, 38, 36, 0, 0, + 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, + 50, 0, 0, 138, 247, 0, 184, 185, 186, 251, + 0, 250, 164, 160, 0, 0, 0, 0, 0, 0, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 258, 257, + 261, 0, 0, 0, 0, 147, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 146, 226, 0, 144, 0, 0, 0, + 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 182, 261, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 226, 226, 0, 225, 0, 0, 169, 210, 0, 171, - 0, 35, 0, 0, 0, 0, 25, 0, 31, 0, - 37, 26, 39, 0, 42, 0, 46, 47, 0, 0, - 49, 0, 0, 0, 0, 214, 122, 0, 0, 0, - 0, 141, 135, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 226, 226, 109, + 0, 0, 261, 261, 0, 260, 0, 0, 204, 245, + 0, 206, 0, 35, 0, 0, 0, 0, 25, 0, + 31, 0, 37, 26, 39, 0, 42, 0, 46, 47, + 0, 0, 49, 0, 0, 0, 0, 249, 158, 0, + 0, 0, 0, 177, 171, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 261, 145, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, + 175, 172, 0, 261, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 86, 90, 131, 136, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 29, 32, 40, + 0, 41, 48, 43, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 137, 139, 136, - 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 226, 226, 226, 95, 100, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 29, 32, 40, 0, 41, - 48, 43, 0, 0, 213, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, + 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 261, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, + 0, 0, 0, 0, 24, 27, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 91, 0, 0, 170, 0, 0, - 0, 0, 24, 27, 0, 0, 0, 142, 0, 0, + 0, 80, 0, 84, 0, 88, 0, 0, 0, 208, + 0, 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 173, 0, 0, 226, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 44, 20, + 139, 181, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 83, 85, 87, 89, 91, 0, 0, 207, + 0, 0, 261, 0, 0, 0, 0, 0, 0, 94, + 98, 102, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 44, 20, 103, 145, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, - 0, 0, 226, 0, 0, 0, 0, 0, 0, 226, - 226, 226, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 5, 226, - 0, 0, 0, 0, 0, 0, 0, 86, 87, 88, - 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 226, 0, 0, 0, 0, 0, 0, 0, 113, - 0, 22, 0, 0, 0, 0, 0, 0, 226, 0, - 0, 0, 226, 226, 226, 0, 0, 0, 0, 0, - 0, 0, 226, 0, 0, 0, 83, 84, 85, 0, + 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 92, 0, 96, 0, 100, 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 226, 226, 226, 23, 0, 0, 0, 80, - 81, 82, 0, 0, 0 + 0, 149, 0, 22, 0, 0, 0, 0, 0, 0, + 93, 95, 97, 99, 101, 103, 261, 0, 0, 0, + 106, 110, 114, 0, 0, 0, 0, 0, 0, 0, + 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 104, 0, 108, 0, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 107, 109, 111, 113, 115, 0, 118, 122, + 126, 23, 0, 0, 0, 0, 0, 0, 0, 116, + 0, 120, 0, 124, 0, 0, 0, 0, 0, 0, + 117, 119, 121, 123, 125, 127, 0, 0, 0 }; -static const short yydefgoto[] = { 1273, - 4, 5, 18, 19, 20, 21, 6, 55, 56, 344, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 57, 339, 578, 579, 580, 581, 61, 62, - 63, 866, 867, 64, 65, 66, 234, 355, 490, 491, - 492, 717, 718, 891, 643, 197, 186, 311, 214, 156, - 268, 714, 805, 806, 312 +static const short yydefgoto[] = { 1337, + 4, 5, 18, 19, 20, 21, 6, 55, 56, 368, + 1111, 491, 1059, 1113, 492, 1060, 1115, 493, 1061, 1221, + 494, 1194, 1223, 495, 1195, 1225, 496, 1196, 1282, 497, + 1268, 1284, 498, 1269, 1286, 499, 1270, 1319, 500, 1313, + 1321, 501, 1314, 1323, 502, 1315, 57, 363, 580, 581, + 582, 583, 61, 62, 63, 860, 861, 64, 65, 66, + 260, 379, 509, 510, 511, 718, 719, 885, 649, 224, + 94, 337, 240, 210, 322, 715, 801, 802, 338 }; -static const short yypact[] = { 451, --32768,-32768, -111,-32768, 157, 1182, 31, 23, 34, 59, - 66, 108, 110, 114, -26, -13, -6,-32768,-32768,-32768, --32768, 168, 184, 64, 74, 78, 9, 12, 80, 92, - 206, 141, 226, 246, 248, 37, 280, 193, 178, 217, - 236, 241, -12, 239, 393, 365, 249, 395, 399, 82, - 263, -7, 267, 385,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 418,-32768, 1174,-32768, --32768,-32768,-32768,-32768, 273, 273, 419,-32768, 321, 321, - 321, 321, 275, 321, 276, 321, 321, 321, 72, 321, - 278, 282, 285, 72, 283, 286, 288, 290, 296, 297, - 306, 307, 101, 101, 101, 101, 310, 311, 312, 321, --32768, 443, 72,-32768,-32768, -43, 313, 319, 321, -48, - 321,-32768, 326, 455, 330, 345, 347, 361, 374, 375, - 416, 422, 423, 428, 429, 438, 440, 444, 445, 447, - 449, 462, 464, 467, 474, 475, 482, 487, 498, 499, - 500, 504, 510, 515, 563, 328, 495, 430,-32768,-32768, --32768, 516, 517, 518, 522, 524, 525, 526, 528, 529, - 530, 539, 540, 541, 550, 552, 558, 560, 573, 575, - 577, 321, 321, 321, 103,-32768, 2, 329, 383, 321, - 586, 321, 622, 719, 729, 321, 43, 562, 739, 321, - 321, 321, 594, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 582, 572, 587, 583, 321, 321, 321, - 853, 574,-32768, 265, 662, 101,-32768, 321, 321, 763, - 545, 321, 775, 21, 321, 613, 747, 750, 757, 758, - 765, 767, 768, 770, 772, 774, 776, 780, 789, 790, - 791, 793, 798, 799, 801, 802, 803, 812, 814, 696, - 817, 826, 827, 828, 777, 831,-32768, -73, 837, 822, - 840, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 697, 697, 785,-32768, 321, 321, 321, 321, 321, - 308, 841, 859, 811, 315, 823, 861, 862, 863, 251, --32768, 1, 321, 869, 490, 833, 871, 321, 497, 615, - 917, 929, 948, 958, 976, 998, 1557, 1669, 101, 694, - 724, 321, 1678, 1687, 1696, 101, 323,-32768,-32768,-32768, - 321,-32768, 726, 417, 1705, 1714, 873, 736, 1011, 880, --32768,-32768,-32768,-32768,-32768, 1044, 751, 741, 742, 743, - 744, 748, 749, 752, 759, 760, 762, 766, 781, 782, - 784, 787, 788, 792, 807, 808, 810, 813, 819, 820, - 832, 838, 839, 849, 850, 852, 867, 885,-32768, 764, --32768, 868, 1059, 1104, 1162, 1172, 1183, 1193, 1203, 1213, - 1223, 1233, 1723, 1244, 1254, 1264, 1276, 1286, 1296, 1732, - 1741, 1750,-32768, 27, 27, 697, 697, 697,-32768, 101, - 72, 72, 895,-32768, 72, 907,-32768, 72, 72, 35, - 321,-32768, 112, 786, 918, 919, 933, 22, 934, 935, - 946, 966, 967, 977, 981, 984, 321, 321, 870, 605, - 605, 1306, 101, 101, 101, 85, 130,-32768, 842, 872, - 874, 875, 876, 878, 881, 882, 883, 884, 886, 887, - 1024,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 321, 321, 72, 321, 1028, 72, 911, - 912, 914, 1061, 936, 1068, 321, 321, 101, 1073, 1074, - 937, 1080, 1081, 72, 72, 1092, 101, 1093, 1095, 72, - 72, 1096, 1102, 1103, 1106, 1108, 72, 593, 72, 1109, - 1118, 1119, 1123, 1124,-32768, 1125, 273,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 321,-32768,-32768, --32768,-32768,-32768,-32768, 321, 321, 321, 1126, 26, 1127, - 72, 1128, 72, 1139, 1140, 321, 43, 251,-32768,-32768, - 321, 72, 72, 72,-32768, 135, 72, 72, 72, 72, - 72, 72, 72, 72, 1759, 1768, 321,-32768, 975, 712, --32768, 994, 996, 175, 209, 214, 101, 1152,-32768, 433, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321,-32768, 1777, 1786, 1153, 1316, 139, 1047, 1157, - 1157, 1157, 321, 1159, 1013, 1795, 1804, 1016, 1018, 1019, - 1021, 1022, 1029, 1023, 1030, 1033, 1027, 1034, 1040, 1042, - 1048, 1049, 1055, 1058, 1077, 1078, 1043,-32768,-32768,-32768, --32768,-32768, 1079, 1088, 1094, 1100, 1101, 1046, 1107,-32768, - 1114, 1327, 1337, 1347, 1368,-32768,-32768, 101,-32768, 1164, --32768, 1167,-32768,-32768, 266, 1813, 1204, 1225, 1226, 321, - 321, 321, 1248, 1249, 1251, 1253, 1261, 1262, 1263, 1274, - 321, 321, 1378,-32768,-32768, 605, 101, 1275, 101, 1277, - 101, 10, 1131,-32768, 1278, 1822, 1831, 1840, 1849, 1858, - 1867, 1876, 1885, 1894, 1903, 1912, 1921, 321, 321,-32768, - 1279, 72, 72, 1202, 72, 1280, 1144, 1157, 1155, 1156, - 284, 1309, 1317, 321, 72, 1313, 1319, 1324, 1178, 1325, - 593, 1328, 1322, 321, 1334, 1330, 1335, 1338, 1340, 593, - 321, 321, 321, 72, 1344, 1348, 593, 321, 1350, 1351, - 1355, 321, 273,-32768,-32768,-32768,-32768, 1358,-32768,-32768, - 321, 321,-32768,-32768,-32768, 174, 227, 234,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 1388, 299, 1217, 1219, - 1220,-32768, 1229,-32768, 1230,-32768, -22, 321,-32768, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 1398, 1408, 139, 223,-32768, 230, 1221, 1303, 8, --32768,-32768,-32768,-32768, 321, 321, 1385, 1381, 1240, 1930, - 1243,-32768, 1260,-32768, 1272,-32768, 1250,-32768, 1273, 1418, --32768, 1282,-32768,-32768, 1252, 1284, 1428, 1939, 1438, 1283, --32768, 1285, 1291, 1948, 1293, 1294,-32768, 1957, 1302,-32768, - 43, 1966,-32768,-32768,-32768,-32768, 321,-32768, 605,-32768, - 321, 321, 321, 1389, 1259, -35,-32768, 1448, 1975, 1984, - 1993, 2002, 2011, 2020, 2029, 2038, 2047, 2056, 2065, 2074, - 1407, 1419, 1332, 72,-32768,-32768, 72, 321, 1399, 527, - 1421, 86, 132,-32768, 1320, 1441, 139, 593, 1453, 321, - 1451, 593, 1457, 1461, 1460, 1463, 1471, 321, 1472, 72, - 1478, 1481, 321, 1464, 1482, 321, 1480, 1490, 431, 1343, - 1459, 1469, 1479,-32768, 72, 1488,-32768, 1494, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 72, 72, 1349,-32768, 1352, 244,-32768, 1353, 2083,-32768, - 1498,-32768, 1354, 1356, 1364, 2092,-32768, 1366,-32768, 1367, --32768,-32768,-32768, 1489,-32768, 1365,-32768,-32768, 1506, 1373, --32768, 1516, 1375, 1377, 321,-32768,-32768, 1500, 1523, 11, - 1384,-32768,-32768, 2101, 2110, 2119, 2128, 2137, 2146, 2155, - 2164, 2173, 1526, 1537, 1547, 1530, 1532, 72, 72,-32768, - 321, 321, 1536, 593, 593, 593, 593, 1539, 1542, 1543, - 593, 1549, 1550, 1552, 1560, 1561, 643,-32768,-32768,-32768, - -22, 72, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 72, 72, 72,-32768,-32768, 1417, 1415, 656, 2182, - 1572, 1425, 1427, 1433, 1434,-32768,-32768,-32768, 1437,-32768, --32768,-32768, 1444, 1445,-32768, 15, 1447, 2191, 2200, 2209, - 2218, 2227, 2236, 2245, 2254, 2263, 1573, 1583, 1593, 72, - 1527, 1600, 321, 1475, 593, 593, 1604, 1610, 593, 1612, - 1614, 1620, 72, 321, 321, 321, 321, 321, 321, 321, - 321, 321,-32768,-32768,-32768, 1466, 1474,-32768, 477, 1626, - 1485, 1486,-32768,-32768, 1491, 1492, 1493,-32768, 1476, 2272, - 2281, 2290, 2299, 2308, 2317, 2326, 2335, 2344, 1562, 321, - 321,-32768, 1637, 593, 72, 1647, 1648, 1650, 1651, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 1510, 2353, - 669, 1661, 1522, 1525,-32768,-32768,-32768,-32768, 2362, 2371, - 2380, 2389, 2398, 2407, 1569, 1579, 1599, 321, 321,-32768, - 1528, 593, 72, 321, 321, 321, 321, 321, 321, 72, - 72, 72, 2416, 681, 1534, 1533, 1544, 2425, 2434, 2443, - 2452, 2461, 2470, 1671, 1673, 1679, 321, 1681,-32768, 72, - 593, 321, 321, 321, 321, 321, 321,-32768,-32768,-32768, - 695,-32768, 1546, 1555, 2479, 2488, 2497, 2506, 2515, 2524, - 1688, 72, 1692, 321, 321, 321, 321, 321, 321,-32768, - 1553,-32768, 2533, 2542, 2551, 1609, 1619, 1629, 72, 321, - 321, 321, 72, 72, 72, 1565, 2560, 2569, 2578, 1711, - 1720, 1721, 72, 321, 321, 321,-32768,-32768,-32768, 1578, - 2587, 2596, 2605, 593, 321, 321, 321, 1568, 1639, 1649, - 1659, 1724, 72, 72, 72,-32768, 1726, 1727, 1728,-32768, --32768,-32768, 1735, 1736,-32768 +static const short yypact[] = { 266, +-32768,-32768, -100,-32768, 343, 1294, 611, 9, 68, 74, + 91, 106, 121, 203, -80, -13, 22,-32768,-32768,-32768, +-32768, 207, 183, 73, 102, 120, -45, -41, 143, 168, + 164, 197, 315, 321, 327, 33, 280, 86, 238, 287, + 288, 290, -26, 289, 436, 411, 293, 441, 452, 2, + 308, -29, 309, 431,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 316, + 317, 341, 356, 361, 386, 387, 391, 408, 412, 413, + 415, 416, 418, 420, 430, 432, 433, 435, 448, 611, + 611, 611, 460,-32768,-32768, 1286,-32768,-32768,-32768,-32768, +-32768, 449, 449, 544,-32768, 611, 611, 611, 611, 450, + 611, 451, 611, 611, 611, 505, 611, 407, 457, 461, + 505, 428, 459, 466, 467, 468, 469, 495, -27, -27, + -27, -27, 496, 501, 503, 611,-32768, 648, 505,-32768, +-32768, -57, 506, 507, 611, -68, 611,-32768, 509, 611, + 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, + 611, 611, 611, 611, 611, 611, 611, 611, 611, 511, + 511, 196, 611, 611, 611, 611, 611, 460, 512, 513, + 514, 518, 519, 520, 523, 524, 548, 549, 550, 551, + 567, 573, 574, 579, 581, 582, 583, 584, 593, 597, + 598, 600, 603, 610, 615, 616, 618, 623, 656, 575, + 622, 594, 54, 237, 358, 399, 611, 498, 611, 626, + 657, 751, 611, 878, 756, 796, 611, 611, 611, 769, + 611, 611, 611, 611, 611, 611, 611, 611, 611, 640, + 645, 646, 659, 611, 611, 611, 259, 795,-32768, 83, + 1020, -27,-32768, 611, 611, 807, 725, 611, 818, -24, + 611, 829, 849, 897, 943, 957, 1061, 1091, 1111, 1128, + 1147, 1037, 1217, 1274, 1284, 1295, 1306, 1316, 1071, 1157, + 1763, 611, 611,-32768, -58, 401, 511, 511, 511, -72, + 803, 812, 815, 816, 817, 828, 830, 833, 836, 837, + 838, 840, 841, 842, 850, 851, 853, 855, 856, 858, + 859, 864, 865, 699, 867, 877, 881, 882, 880, 883, +-32768, 84, 885, 886, 894,-32768, 235, 884, 895, 1326, + 253, 1336, 900, 902, 903, 185,-32768, -19, 611, 906, + -51, 1346, 1356, 611, 595, 650, 1366, 1377, 1387, 1397, + 1407, 1772, 1781, -27, 754, 778, 611, 1790, 1799, 1808, + -27,-32768,-32768,-32768, 611,-32768, 779, 346, 1817, 1826, + 927, 785, 1417, 930,-32768,-32768,-32768,-32768,-32768, 1427, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 611,-32768,-32768,-32768,-32768,-32768,-32768, 611, 611, 611, + -118, -118, 805, 793, 804, 806, 814, 825, 826, 831, + 832, 834, 848, 869, 874, 893, 896, 909, 912, 915, + 916, 917, 931, 932, 939, 940, 942, 945, 946, 953, + 954, 956, 959, 941,-32768, 802,-32768, 962,-32768, -27, + 505, 505, 951,-32768, 505, 972,-32768, 505, 505, 30, + 611,-32768, 62, 797, 973, 977, 982, 32, 993, 995, + 997, 999, 1000, 1011, 1024, 611, 611, 964, 522, 522, + 1438, -27, -27, -27, 131, 112,-32768, 819, 898, 944, + 958, 966, 967, 968, 969, 970, 981, 983, 985, 960, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 611, 611, 505, 611, 1025, 505, 892, 928, + 984, 1129, 1448, 1458, 1468, 1478, 1004, 1137, 611, 611, + -27, 1138, 1139, 1008, 1153, 1156, 505, 505, 1160, -27, + 1161, 1162, 505, 505, 1163, 1170, 1172, 1173, 1175, 505, + 333, 505, 1181, 1155, 1182, 1190, 1191,-32768, 1203, 449, + 1205, 23, 1206, 505, 1212, 505, 1213, 1215, 611, 878, + 185,-32768,-32768, 611, 505, 505, 505,-32768, 147, 505, + 505, 505, 505, 505, 505, 505, 1835, 1844, 611,-32768, + 1076, 1113,-32768, 1078, 1085, 174, 244, 255, -27, 1233, +-32768, 638, 611, 611, 611, 611, 611, 611, 611, 611, + 611, 611, 611, 611,-32768, 1853, 1862, 1235, 1488, -17, + 1159, 1241, 1241, 1241, 611,-32768,-32768,-32768,-32768, 611, + 1095, 1871, 1880, 1096, 1098, 1106, 1099, 1107, 1110, 1112, + 1124, 1125, 1126, 1130, 1127, 1134, 1146, 1154, 1164, 1165, + 1166, 1189, 1136,-32768,-32768,-32768,-32768,-32768, 1192, 1200, + 1208, 1216, 1219, 1152, 1220,-32768, 1226,-32768,-32768, -27, +-32768, 1256,-32768, 1301,-32768,-32768, 349, 1889, 1307, 1308, + 1315, 611, 611, 611, 1317, 1351, 1358, 1362, 1373, 1375, + 1386, 611, 611, 1498,-32768,-32768, 522, -27, 1388, -27, + 1389, -27, 11, 1242,-32768, 1392, 1898, 1907, 1916, 1925, + 1934, 1943, 1952, 1961, 1970, 1979, 1988, 1997, 611, 611, +-32768, 1240, 505, 505, 1229, 505, 1325, 1188, 1241, 1245, + 1267, 286, 460, 1419, 611, 505, 1404, 1421, 1425, 1287, + 1428, 333, 1429, 1434, 611, 1436, 1440, 1439, 1442, 1443, + 333, 611, 611, 611, 505, 1450, 1454, 333, 611, 1460, + 1461, 1467, 611, 449, 1470,-32768,-32768, 611, 611,-32768, +-32768,-32768, 119, 128, 135,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 1508, 410, 1313, 1320, 1332,-32768, 1333,-32768, + 1335,-32768, 52, 611,-32768, 611, 611, 611, 611, 611, + 611, 611, 611, 611, 611, 611, 611, 1521, 1531, -17, + 282,-32768, -12, 1314, 1413, 10,-32768,-32768,-32768,-32768, + 1481, 460, 1342, 2006, 1345,-32768, 1352,-32768, 1353,-32768, + 1354,-32768, 1363, 1541,-32768, 1365,-32768,-32768, 1355, 1361, + 1551, 2015, 1561, 1368,-32768, 1372, 1376, 2024, 1383, 1385, +-32768, 2033, 1384,-32768, 878, 2042,-32768,-32768,-32768,-32768, + 611,-32768, 522,-32768, 611, 611, 611, 1491, 1364, -40, +-32768, 1572, 2051, 2060, 2069, 2078, 2087, 2096, 2105, 2114, + 2123, 2132, 2141, 2150, 1520, 1537, 1462, 505,-32768,-32768, + 505, 611, 1542, 668, 1548,-32768, 100, 1549, -17, 333, + 1544, 611, 1552, 333, 1558, 1554, 1559, 1562, 1568, 611, + 1569, 505, 1571, 1574, 611, 1564, 1579, 611, 1573, 1584, + 576, 1441, 1583, 1593, 1603,-32768, 505, 1582,-32768, 1590, + 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, + 611, 611, 505, 505, 1445,-32768, 1455, 178,-32768, 1457, + 2159,-32768, 611,-32768, 1464, 1465, 1474, 2168,-32768, 1447, +-32768, 1453,-32768,-32768,-32768, 1613,-32768, 1475,-32768,-32768, + 1623, 1466,-32768, 1633, 1477, 1484, 611,-32768,-32768, 1632, + 1639, 12, 1495,-32768,-32768, 2177, 2186, 2195, 2204, 2213, + 2222, 2231, 2240, 2249, 1643, 1653, 1663, 1642, 1649, 505, + 505,-32768, 611, 611, 460, 333, 333, 333, 333, 1650, + 1652, 1655, 333, 1656, 1662, 1665, 1604, 1614, 670,-32768, +-32768,-32768, 52, 505, 611, 611, 611, 611, 611, 611, + 611, 611, 611,-32768,-32768,-32768,-32768,-32768, 1518, 1485, + 708, 2258, 460, 1527, 1528, 1497, 1507,-32768,-32768,-32768, + 1530,-32768,-32768,-32768, 1538, 1547,-32768, -39, 1550, 2267, + 2276, 2285, 2294, 2303, 2312, 2321, 2330, 2339, 1476, 1519, + 1529, 505, 1608, 1686, 611, 220, 333, 333, 1696, 1702, + 333, 1694, 1704, 1705, 505, 611, 611, 611, 611, 611, + 611, 611, 611, 611, 611, 611, 611, 1560, 1566,-32768, + 613, 611, 1580, 1589,-32768,-32768, 1570, 1578, 1581,-32768, + 1587, 2348, 2357, 2366, 2375, 2384, 2393, 2402, 2411, 2420, + 50, 878, 63, 878, 64, 878, 1645, 611, 611,-32768, + 460, 333, 505, 1706, 1717, 1737, 1738, 611, 611, 611, + 611, 611, 611, 611, 611, 611, 611, 1744, 611, 1745, + 611, 1747, 1601, 2429, 722, 460, 1609, 1610,-32768,-32768, +-32768,-32768, 2438, 2447, 2456, 2465, 2474, 2483, 1673, 1683, + 1693, 878,-32768, 878,-32768, 878,-32768, 611, 611,-32768, + 43, 333, 505, 611, 611, 611, 611, 611, 611,-32768, +-32768,-32768, 2492, 735, 1624, 1612, 1619, 2501, 2510, 2519, + 2528, 2537, 2546, 1618, 1620, 1621, 611, 1774,-32768, 505, + 333, 611, 611, 611, 611, 611, 611, 611, 611, 611, + 784,-32768, 1630, 1631, 2555, 2564, 2573, 2582, 2591, 2600, + 99, 878, 140, 878, 166, 878, 1778, 505, 1784, 611, + 611, 611, 611, 611, 611, 611, 1785, 611, 1787, 611, + 1788,-32768, 1659,-32768, 2609, 2618, 2627, 1703, 1713, 1723, + 878,-32768, 878,-32768, 878,-32768, 505, 611, 611, 611, +-32768,-32768,-32768, 1660, 2636, 2645, 2654, 1647, 1648, 1651, + 505, 611, 611, 611, 611, 611, 611, 1669, 2663, 2672, + 2681, 182, 878, 184, 878, 208, 878, 333, 611, 611, + 611, 611, 1797, 611, 1807, 611, 1815, 1671, 1733, 1743, + 1753, 878,-32768, 878,-32768, 878,-32768, 1818,-32768,-32768, +-32768,-32768, 1661, 1677, 1678, 611, 611, 611, 216, 878, + 217, 878, 236, 878, 611, 1827, 611, 1828, 611, 1834, + 878,-32768, 878,-32768, 878,-32768, 1841, 1843,-32768 }; static const short yypgoto[] = {-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1288, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1367, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1731, 1743, -445, 271, 1744,-32768,-32768, --32768, 717, -843,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, -576,-32768,-32768, -721, -79,-32768, 1326, -91, -72, --32768, -727, 1053, 476,-32768 +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1845, 1847, -468, + 257, 1848,-32768,-32768,-32768, 847, -857,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768, -591,-32768,-32768, -711, -7, +-32768, 1399, -121, -102,-32768, -776, 1149, 463,-32768 }; -#define YYLAST 2756 - - -static const short yytable[] = { 185, - 187, 188, 189, 157, 191, 582, 193, 194, 195, 827, - 199, 889, 215, 216, 217, 786, 1020, 107, 836, 226, - 108, 109, 927, 864, 7, 843, 120, 565, 68, 865, - 221, 657, 231, 67, 719, 720, 864, 159, 160, 230, - 69, 233, 865, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 70, 83, 658, 566, 85, 94, - 95, 71, 96, 864, 159, 160, 883, 388, 389, 865, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 232, 292, 293, 294, 351, 352, 353, 295, 227, - 304, 117, 306, 72, 118, 73, 310, 560, 926, 74, - 315, 316, 317, 75, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 343, 589, 76, 110, 333, 334, - 335, 812, 121, 77, 296, 297, 298, 299, 345, 346, - 300, 431, 349, 301, 432, 356, -2, 8, 84, 9, - 890, 86, 787, 1021, 296, 297, 298, 299, 1082, 953, - 300, 298, 299, 78, 354, 300, 954, 182, 183, 853, - 958, 670, 671, 672, 184, 296, 297, 298, 299, 556, - 79, 300, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 927, 80, 182, 183, 414, 415, 416, 417, - 418, 184, 98, 81, 196, 99, 100, 82, 101, 87, - -187, -187, 854, 433, 300, 587, 588, 449, 438, 855, - 780, 88, 102, 89, 456, 296, 297, 298, 299, 1000, - 212, 300, 452, 213, 296, 297, 298, 299, 430, 91, - 300, 457, 10, 11, 12, 13, 14, 15, 16, 17, - 340, 341, 296, 297, 298, 299, -186, -186, 300, 92, - 300, 93, 1042, 1043, 1044, 1045, 159, 160, 712, 1049, - 90, 713, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 419, 420, 97, 296, 297, 298, 299, - 424, 425, 300, 159, 160, 687, 688, 103, 548, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 557, 558, 98, 1101, 1102, 99, 100, 1105, 101, 689, - 690, 584, 585, 586, 691, 692, 104, 575, 576, 296, - 297, 298, 299, 884, 885, 300, 296, 297, 298, 299, - 884, 222, 300, 886, 225, 105, 296, 297, 298, 299, - 106, 111, 300, 296, 297, 298, 299, 112, 113, 300, - 115, 114, 1143, 116, 604, 605, 618, 607, 296, 297, - 298, 299, 119, 920, 300, 627, 616, 617, 123, 122, - 124, 761, 155, 158, 190, 192, 815, 816, 298, 299, - 200, 201, 300, 184, 202, 204, 196, 206, 205, 207, - 1176, 296, 297, 298, 299, 208, 209, 300, 223, 857, - -7, -7, 858, -7, 651, 210, 211, 236, 652, 218, - 219, 220, 228, 182, 183, 653, 654, 655, 229, 1204, - 184, 296, 297, 298, 299, 235, 665, 300, 269, 237, - 302, 666, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 238, 693, 239, 683, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 240, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 241, 242, 296, 297, 298, 299, 159, - 948, 300, 1258, 721, 303, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, -7, -7, -7, -7, - -7, -7, -7, -7, 198, 243, 758, 267, 313, 203, - 471, 244, 245, 296, 297, 298, 299, 246, 247, 300, - 271, 975, 1, 2, 976, 3, 695, 248, 224, 249, - 766, 767, 768, 250, 251, 781, 252, 783, 253, 785, - 318, 777, 778, 24, 25, 26, 27, 28, 29, 30, - 31, 254, 32, 255, 34, 35, 256, 37, 337, 296, - 297, 298, 299, 257, 258, 300, 348, 1121, 802, 803, - 1122, 259, 296, 297, 298, 299, 260, 50, 300, 296, - 297, 298, 299, 435, 820, 300, 270, 261, 262, 263, - 439, 51, 52, 264, 830, 39, 40, 41, 42, 265, - 44, 837, 838, 839, 266, 272, 273, 274, 844, 182, - 183, 275, 848, 276, 277, 278, 184, 279, 280, 281, - 849, 851, 852, 638, 639, 640, 641, 642, 282, 283, - 284, 24, 25, 26, 27, 28, 29, 30, 31, 285, - 32, 286, 34, 35, 54, 37, 337, 287, 868, 288, - 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, - 879, 880, 289, 330, 290, 50, 291, 338, 296, 297, - 298, 299, 329, 332, 300, 892, 893, 305, 331, 51, - 52, 24, 25, 26, 27, 28, 29, 30, 31, 357, - 32, 358, 34, 35, 359, 37, 337, 296, 297, 298, - 299, 360, 361, 300, 296, 297, 298, 299, 440, 362, - 300, 363, 364, 307, 365, 50, 366, 919, 367, 386, - 368, 921, 922, 923, 369, 296, 297, 298, 299, 51, - 52, 300, 54, 370, 371, 372, 1055, 373, 296, 297, - 298, 299, 374, 375, 300, 376, 377, 378, 946, 1072, - 949, 296, 297, 298, 299, 342, 379, 300, 380, 381, - 956, 382, 1160, 296, 297, 298, 299, 391, 964, 300, - 383, 384, 385, 969, 1188, 387, 972, 296, 297, 298, - 299, 390, 54, 300, 392, 300, 450, 421, 1211, 984, - 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, - 995, 296, 297, 298, 299, 422, 427, 300, 428, 429, - 308, 296, 297, 298, 299, 434, 451, 300, 458, 486, - 309, 296, 297, 298, 299, 487, 489, 300, 494, 525, - 314, 495, 496, 497, 498, 1017, 549, 550, 499, 500, - 552, 551, 501, 554, 555, 296, 297, 298, 299, 502, - 503, 300, 504, 553, 347, 526, 505, 296, 297, 298, - 299, 1039, 1040, 300, 562, 563, 350, 296, 297, 298, - 299, 506, 507, 300, 508, 561, 413, 509, 510, 564, - 567, 568, 511, 1058, 1059, 1060, 1061, 1062, 1063, 1064, - 1065, 1066, 569, 296, 297, 298, 299, 512, 513, 300, - 514, 606, 423, 515, 609, 296, 297, 298, 299, 516, - 517, 300, 570, 571, 426, 296, 297, 298, 299, 624, - 625, 300, 518, 572, 436, 630, 631, 573, 519, 520, - 574, 591, 637, 1099, 644, 296, 297, 298, 299, 521, - 522, 300, 523, 336, 1110, 1111, 1112, 1113, 1114, 1115, - 1116, 1117, 1118, 296, 297, 298, 299, 524, 527, 300, - 577, 592, 437, 593, 594, 595, 660, 596, 662, 603, - 597, 598, 599, 600, 608, 601, 602, 667, 668, 669, - 1140, 1141, 673, 674, 675, 676, 677, 678, 679, 680, - 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 296, - 297, 298, 299, 610, 611, 300, 612, 613, 441, 614, - 615, 296, 297, 298, 299, 619, 620, 300, 1173, 1174, - 442, 621, 622, 623, 1178, 1179, 1180, 1181, 1182, 1183, - 296, 297, 298, 299, 626, 628, 300, 629, 632, 443, - 296, 297, 298, 299, 633, 634, 300, 1201, 635, 444, - 636, 645, 1205, 1206, 1207, 1208, 1209, 1210, 296, 297, - 298, 299, 646, 647, 300, 648, 649, 445, 684, 715, - 650, 656, 659, 661, 1223, 1224, 1225, 1226, 1227, 1228, - 296, 297, 298, 299, 663, 664, 300, 685, 686, 446, - 1237, 1238, 1239, 296, 297, 298, 299, 694, 710, 300, - 716, 722, 488, 723, 1251, 1252, 1253, 726, 727, 759, - 728, 729, 760, 730, 732, 1259, 1260, 1261, 735, 731, - 733, -1, 22, 734, 736, 23, 296, 297, 298, 299, - 809, 737, 300, 738, 745, 493, 817, 751, 739, 740, - 821, 296, 297, 298, 299, 741, 125, 300, 742, 763, - 528, 24, 25, 26, 27, 28, 29, 30, 31, 840, - 32, 33, 34, 35, 36, 37, 38, 743, 744, 746, - 764, 765, 39, 40, 41, 42, 43, 44, 747, 45, - 46, 47, 48, 49, 748, 50, 296, 297, 298, 299, - 749, 750, 300, 769, 770, 529, 771, 752, 772, 51, - 52, 126, 127, 128, 753, 53, 773, 774, 775, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 776, - 782, 788, 784, 789, 808, 804, 810, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 811, 149, 150, - 151, 152, 153, 154, 296, 297, 298, 299, 813, 814, - 300, 818, 54, 530, 296, 297, 298, 299, 822, 819, - 300, 823, 825, 531, 829, 296, 297, 298, 299, 824, - 826, 300, 832, 828, 532, 296, 297, 298, 299, 831, - 833, 300, 835, 834, 533, 296, 297, 298, 299, 841, - 842, 300, 845, 846, 534, 296, 297, 298, 299, 944, - 847, 300, 945, 850, 535, 296, 297, 298, 299, 859, - 861, 300, 860, 887, 536, 296, 297, 298, 299, 862, - 863, 300, 888, 895, 537, 966, 296, 297, 298, 299, - 894, 896, 300, 898, 924, 539, 296, 297, 298, 299, - 981, 901, 300, 905, 947, 540, 296, 297, 298, 299, - 899, 925, 300, 941, 943, 541, 996, 997, 296, 297, - 298, 299, 900, 902, 300, 942, 950, 542, 296, 297, - 298, 299, 904, 910, 300, 906, 911, 543, 296, 297, - 298, 299, 912, 914, 300, 915, 952, 544, 296, 297, - 298, 299, 917, 951, 300, 955, 957, 583, 296, 297, - 298, 299, 959, 960, 300, 961, 970, 711, 962, 296, - 297, 298, 299, 1037, 1038, 300, 963, 965, 754, 296, - 297, 298, 299, 967, 973, 300, 968, 971, 755, 296, - 297, 298, 299, 982, 974, 300, 977, 1057, 756, 983, - 1003, 998, 999, 1001, 1004, 1018, 1005, 1067, 1068, 1069, - 296, 297, 298, 299, 1006, 1011, 300, 1008, 1009, 757, - 296, 297, 298, 299, 1013, 1015, 300, 1016, 1019, 779, - 296, 297, 298, 299, 1022, 1035, 300, 1036, 1041, 856, - 296, 297, 298, 299, 1046, 1096, 300, 1047, 1048, 881, - 296, 297, 298, 299, 1050, 1051, 300, 1052, 1109, 882, - 296, 297, 298, 299, 1053, 1054, 300, 1070, 1071, 903, - 296, 297, 298, 299, 1074, 1075, 300, 1076, 1093, 907, - 296, 297, 298, 299, 1077, 1078, 300, 1079, 1094, 909, - 296, 297, 298, 299, 1080, 1081, 300, 1083, 1095, 928, - 1144, 296, 297, 298, 299, 1098, 1097, 300, 1100, 1103, - 978, 296, 297, 298, 299, 1104, 1106, 300, 1107, 1119, - 979, 296, 297, 298, 299, 1108, 1120, 300, 1123, 1129, - 980, 296, 297, 298, 299, 1124, 1125, 300, 1177, 1142, - 1010, 1139, 1126, 1127, 1128, 1184, 1185, 1186, 296, 297, - 298, 299, 1145, 1146, 300, 1147, 1148, 1012, 296, 297, - 298, 299, 1158, 1161, 300, 1203, 1175, 1014, 296, 297, - 298, 299, 1162, 1189, 300, 1163, 1198, 1032, 1199, 296, - 297, 298, 299, 1190, 1200, 300, 1202, 1221, 1033, 296, - 297, 298, 299, 1220, 1191, 300, 1212, 1222, 1034, 296, - 297, 298, 299, 1229, 1236, 300, 1213, 447, 1240, 1241, - 1242, 296, 297, 298, 299, 1243, 1247, 300, 1250, 1262, - 1170, 296, 297, 298, 299, 1248, 1249, 300, 1254, 1266, - 1171, 1270, 1271, 1272, 1274, 1275, 58, 1056, 1267, 1268, - 1269, 296, 297, 298, 299, 590, 0, 300, 59, 60, - 1172, 296, 297, 298, 299, 0, 559, 300, 0, 0, - 1233, 296, 297, 298, 299, 807, 0, 300, 0, 0, - 1234, 296, 297, 298, 299, 0, 0, 300, 0, 0, - 1235, 296, 297, 298, 299, 0, 0, 300, 0, 0, - 1263, 296, 297, 298, 299, 0, 0, 300, 0, 0, - 1264, 296, 297, 298, 299, 0, 0, 300, 0, 0, - 1265, 296, 297, 298, 299, 0, 0, 300, 0, 448, - 296, 297, 298, 299, 0, 0, 300, 0, 453, 296, - 297, 298, 299, 0, 0, 300, 0, 454, 296, 297, - 298, 299, 0, 0, 300, 0, 455, 296, 297, 298, - 299, 0, 0, 300, 0, 484, 296, 297, 298, 299, - 0, 0, 300, 0, 485, 296, 297, 298, 299, 0, - 0, 300, 0, 538, 296, 297, 298, 299, 0, 0, - 300, 0, 545, 296, 297, 298, 299, 0, 0, 300, - 0, 546, 296, 297, 298, 299, 0, 0, 300, 0, - 547, 296, 297, 298, 299, 0, 0, 300, 0, 681, - 296, 297, 298, 299, 0, 0, 300, 0, 682, 296, - 297, 298, 299, 0, 0, 300, 0, 708, 296, 297, - 298, 299, 0, 0, 300, 0, 709, 296, 297, 298, - 299, 0, 0, 300, 0, 724, 296, 297, 298, 299, - 0, 0, 300, 0, 725, 296, 297, 298, 299, 0, - 0, 300, 0, 762, 296, 297, 298, 299, 0, 0, - 300, 0, 790, 296, 297, 298, 299, 0, 0, 300, - 0, 791, 296, 297, 298, 299, 0, 0, 300, 0, - 792, 296, 297, 298, 299, 0, 0, 300, 0, 793, - 296, 297, 298, 299, 0, 0, 300, 0, 794, 296, - 297, 298, 299, 0, 0, 300, 0, 795, 296, 297, - 298, 299, 0, 0, 300, 0, 796, 296, 297, 298, - 299, 0, 0, 300, 0, 797, 296, 297, 298, 299, - 0, 0, 300, 0, 798, 296, 297, 298, 299, 0, - 0, 300, 0, 799, 296, 297, 298, 299, 0, 0, - 300, 0, 800, 296, 297, 298, 299, 0, 0, 300, - 0, 801, 296, 297, 298, 299, 0, 0, 300, 0, - 897, 296, 297, 298, 299, 0, 0, 300, 0, 908, - 296, 297, 298, 299, 0, 0, 300, 0, 913, 296, - 297, 298, 299, 0, 0, 300, 0, 916, 296, 297, - 298, 299, 0, 0, 300, 0, 918, 296, 297, 298, - 299, 0, 0, 300, 0, 929, 296, 297, 298, 299, - 0, 0, 300, 0, 930, 296, 297, 298, 299, 0, - 0, 300, 0, 931, 296, 297, 298, 299, 0, 0, - 300, 0, 932, 296, 297, 298, 299, 0, 0, 300, - 0, 933, 296, 297, 298, 299, 0, 0, 300, 0, - 934, 296, 297, 298, 299, 0, 0, 300, 0, 935, - 296, 297, 298, 299, 0, 0, 300, 0, 936, 296, - 297, 298, 299, 0, 0, 300, 0, 937, 296, 297, - 298, 299, 0, 0, 300, 0, 938, 296, 297, 298, - 299, 0, 0, 300, 0, 939, 296, 297, 298, 299, - 0, 0, 300, 0, 940, 296, 297, 298, 299, 0, - 0, 300, 0, 1002, 296, 297, 298, 299, 0, 0, - 300, 0, 1007, 296, 297, 298, 299, 0, 0, 300, - 0, 1023, 296, 297, 298, 299, 0, 0, 300, 0, - 1024, 296, 297, 298, 299, 0, 0, 300, 0, 1025, - 296, 297, 298, 299, 0, 0, 300, 0, 1026, 296, - 297, 298, 299, 0, 0, 300, 0, 1027, 296, 297, - 298, 299, 0, 0, 300, 0, 1028, 296, 297, 298, - 299, 0, 0, 300, 0, 1029, 296, 297, 298, 299, - 0, 0, 300, 0, 1030, 296, 297, 298, 299, 0, - 0, 300, 0, 1031, 296, 297, 298, 299, 0, 0, - 300, 0, 1073, 296, 297, 298, 299, 0, 0, 300, - 0, 1084, 296, 297, 298, 299, 0, 0, 300, 0, - 1085, 296, 297, 298, 299, 0, 0, 300, 0, 1086, - 296, 297, 298, 299, 0, 0, 300, 0, 1087, 296, - 297, 298, 299, 0, 0, 300, 0, 1088, 296, 297, - 298, 299, 0, 0, 300, 0, 1089, 296, 297, 298, - 299, 0, 0, 300, 0, 1090, 296, 297, 298, 299, - 0, 0, 300, 0, 1091, 296, 297, 298, 299, 0, - 0, 300, 0, 1092, 296, 297, 298, 299, 0, 0, - 300, 0, 1130, 296, 297, 298, 299, 0, 0, 300, - 0, 1131, 296, 297, 298, 299, 0, 0, 300, 0, - 1132, 296, 297, 298, 299, 0, 0, 300, 0, 1133, - 296, 297, 298, 299, 0, 0, 300, 0, 1134, 296, - 297, 298, 299, 0, 0, 300, 0, 1135, 296, 297, - 298, 299, 0, 0, 300, 0, 1136, 296, 297, 298, - 299, 0, 0, 300, 0, 1137, 296, 297, 298, 299, - 0, 0, 300, 0, 1138, 296, 297, 298, 299, 0, - 0, 300, 0, 1159, 296, 297, 298, 299, 0, 0, - 300, 0, 1164, 296, 297, 298, 299, 0, 0, 300, - 0, 1165, 296, 297, 298, 299, 0, 0, 300, 0, - 1166, 296, 297, 298, 299, 0, 0, 300, 0, 1167, - 296, 297, 298, 299, 0, 0, 300, 0, 1168, 296, - 297, 298, 299, 0, 0, 300, 0, 1169, 296, 297, - 298, 299, 0, 0, 300, 0, 1187, 296, 297, 298, - 299, 0, 0, 300, 0, 1192, 296, 297, 298, 299, - 0, 0, 300, 0, 1193, 296, 297, 298, 299, 0, - 0, 300, 0, 1194, 296, 297, 298, 299, 0, 0, - 300, 0, 1195, 296, 297, 298, 299, 0, 0, 300, - 0, 1196, 296, 297, 298, 299, 0, 0, 300, 0, - 1197, 296, 297, 298, 299, 0, 0, 300, 0, 1214, - 296, 297, 298, 299, 0, 0, 300, 0, 1215, 296, - 297, 298, 299, 0, 0, 300, 0, 1216, 296, 297, - 298, 299, 0, 0, 300, 0, 1217, 296, 297, 298, - 299, 0, 0, 300, 0, 1218, 296, 297, 298, 299, - 0, 0, 300, 0, 1219, 296, 297, 298, 299, 0, - 0, 300, 0, 1230, 296, 297, 298, 299, 0, 0, - 300, 0, 1231, 296, 297, 298, 299, 0, 0, 300, - 0, 1232, 296, 297, 298, 299, 0, 0, 300, 0, - 1244, 296, 297, 298, 299, 0, 0, 300, 0, 1245, - 296, 297, 298, 299, 0, 0, 300, 0, 1246, 296, - 297, 298, 299, 0, 0, 300, 0, 1255, 296, 297, - 298, 299, 0, 0, 300, 0, 1256, 296, 297, 298, - 299, 0, 0, 300, 0, 1257 +#define YYLAST 2832 + + +static const short yytable[] = { 93, + 211, 584, 919, 133, 146, 252, 134, 135, 241, 242, + 243, 110, 257, 883, 95, 112, 782, 1012, 858, 858, + 821, 720, 721, 877, 859, 859, 175, 176, 659, 830, + 177, 143, 67, 68, 144, 7, 837, 568, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 326, + 375, 376, 377, 660, 403, 121, 122, 563, 123, 102, + 282, 283, 175, 176, 96, -222, 177, 569, -222, 97, + -222, 258, 170, 171, 172, 178, -222, -222, 364, 365, + 177, 282, 283, 175, 176, 253, 98, 177, 213, 214, + 215, 216, 455, 218, 111, 220, 221, 222, 113, 226, + 858, 99, 945, 918, 1074, 125, 859, 591, 126, 127, + 147, 128, 238, 136, 847, 239, 100, 808, 247, 378, + 367, 451, 713, 848, 452, 714, 103, 256, 878, 259, + 849, 880, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 884, 783, 1013, 285, 286, 287, 288, 289, + 290, 104, 90, 91, 282, 283, 175, 176, 946, 92, + 177, 1185, 950, 992, 559, 282, 283, 175, 176, 106, + 919, 177, 450, 672, 673, 674, 282, 283, 175, 176, + 1137, 116, 177, 1138, 282, 283, 175, 176, 101, 330, + 177, 332, 105, 1139, 1141, 336, 1140, 1142, 776, 341, + 342, 343, 107, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 468, 943, 434, 435, 358, 359, 360, 475, + 439, 440, 282, 283, 175, 176, 369, 370, 177, 1236, + 373, 108, 1237, 380, 282, 283, 175, 176, 444, 445, + 177, 282, 283, 175, 176, -7, -7, 177, -7, 109, + 282, 283, 175, 176, 401, 402, 177, 282, 283, 175, + 176, 589, 590, 177, 1034, 1035, 1036, 1037, 67, 68, + 1238, 1041, 114, 1239, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 124, 1240, 115, 551, 1241, + 282, 283, 175, 176, 688, 689, 177, 282, 283, 175, + 176, 453, 1292, 177, 1294, 1293, 458, 1295, 282, 283, + 175, 176, -1, 8, 177, 9, 117, 284, 118, 471, + 586, 587, 588, 1092, 119, 1093, 1094, 476, 1296, 1097, + 120, 1297, 282, 283, 175, 176, 1325, 1327, 177, 1326, + 1328, -7, -7, -7, -7, -7, -7, -7, -7, 282, + 283, 175, 176, 513, 912, 177, 1329, 129, 327, 1330, + 514, 515, 516, 248, 690, 691, 251, 1, 2, 624, + 3, 282, 283, 175, 176, 692, 693, 177, 633, 361, + 1147, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 644, 645, 646, 647, 648, 173, 174, + 175, 176, 878, 879, 177, 92, 130, 131, 223, 132, + 138, 137, 560, 561, 139, 140, 141, 657, 10, 11, + 12, 13, 14, 15, 16, 17, 142, 145, 577, 578, + 1186, 148, 67, 68, 149, 150, 151, 694, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 1214, + 152, 282, 283, 175, 176, 606, 607, 177, 609, 490, + 282, 283, 175, 176, 758, 153, 177, 67, 68, 328, + 154, 622, 623, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, -221, 155, 156, -221, 755, -221, + 157, 282, 283, 175, 176, -221, -221, 177, 212, 177, + 329, 667, 282, 283, 175, 176, 668, 158, 177, 227, + 851, 159, 160, 852, 161, 162, 777, 163, 779, 164, + 781, 684, 39, 40, 41, 42, 1298, 44, 225, 165, + 231, 166, 167, 230, 168, 697, 698, 699, 700, 701, + 702, 703, 704, 705, 706, 707, 708, 169, 209, 217, + 219, 250, 173, 174, 175, 176, 228, 722, 177, 92, + 229, 232, 723, 67, 68, 233, 234, 235, 236, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 282, 283, 175, 176, 237, 244, 177, 90, 91, 331, + 245, 843, 246, 249, 92, 254, 255, 223, 261, 177, + 321, 291, 292, 293, 763, 764, 765, 294, 295, 296, + 67, 940, 297, 298, 773, 774, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 299, 300, 301, + 302, 798, 799, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 812, 303, 814, 282, 283, + 175, 176, 304, 305, 177, 323, 967, 824, 306, 968, + 307, 308, 309, 310, 831, 832, 833, 282, 283, 175, + 176, 838, 311, 177, 325, 842, 312, 313, 459, 314, + 845, 846, 315, 90, 91, 282, 283, 175, 176, 316, + 92, 177, 339, 1119, 317, 318, 1120, 319, 282, 283, + 175, 176, 320, 324, 177, 344, 862, 333, 863, 864, + 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, + 354, 696, 282, 283, 175, 176, 355, 356, 177, 282, + 283, 175, 176, 460, 887, 177, 372, 404, 334, 357, + 90, 91, 282, 283, 175, 176, 405, 92, 177, 406, + 407, 408, 427, 1047, 24, 25, 26, 27, 28, 29, + 30, 31, 409, 32, 410, 34, 35, 411, 37, 38, + 412, 413, 414, 911, 415, 416, 417, 913, 914, 915, + 282, 283, 175, 176, 418, 419, 177, 420, 50, 421, + 422, 1064, 423, 424, 282, 283, 175, 176, 425, 426, + 177, 428, 51, 52, 938, 1170, 941, 282, 283, 175, + 176, 429, 432, 177, 948, 430, 431, 433, 1198, 436, + 441, 437, 956, 282, 283, 175, 176, 961, 438, 177, + 964, 442, 335, 552, 553, 447, 469, 555, 448, 449, + 557, 558, 454, 976, 977, 978, 979, 980, 981, 982, + 983, 984, 985, 986, 987, 54, 282, 283, 175, 176, + 470, 477, 177, 505, 506, 995, 508, 1227, 282, 283, + 175, 176, 517, 518, 177, 548, 564, 340, 362, 282, + 283, 175, 176, 549, 519, 177, 520, 554, 371, 1009, + 282, 283, 175, 176, 521, 605, 177, 608, 593, 374, + 611, 282, 283, 175, 176, 522, 523, 177, 556, 565, + 381, 524, 525, 566, 526, 1031, 1032, 1033, 567, 630, + 631, 282, 283, 175, 176, 636, 637, 177, 527, 570, + 382, 571, 643, 572, 650, 573, 574, 1050, 1051, 1052, + 1053, 1054, 1055, 1056, 1057, 1058, 662, 575, 664, 528, + 282, 283, 175, 176, 529, 1066, 177, 669, 670, 671, + 576, 610, 675, 676, 677, 678, 679, 680, 681, 282, + 283, 175, 176, 530, 612, 177, 531, 594, 383, 24, + 25, 26, 27, 28, 29, 30, 31, 1091, 32, 532, + 34, 35, 533, 37, 38, 534, 535, 536, 1102, 1103, + 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1112, 1114, 1116, + 613, 537, 538, 50, 1121, 282, 283, 175, 176, 539, + 540, 177, 541, 595, 384, 542, 543, 51, 52, 282, + 283, 175, 176, 544, 545, 177, 546, 596, 385, 547, + 1144, 1145, 550, 1146, 579, 597, 598, 599, 600, 601, + 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, + 602, 1164, 603, 1166, 604, 615, 614, 620, 1171, 621, + 625, 626, 24, 25, 26, 27, 28, 29, 30, 31, + 54, 32, 627, 34, 35, 628, 37, 38, 629, 652, + 1183, 1184, 632, 634, 635, 638, 1188, 1189, 1190, 1191, + 1192, 1193, 639, 366, 640, 641, 50, 642, 805, 282, + 283, 175, 176, 651, 811, 177, 653, 391, 815, 1211, + 51, 52, 654, 655, 1215, 1216, 1217, 1218, 1219, 1220, + 1222, 1224, 1226, 282, 283, 175, 176, 834, 656, 177, + 658, 661, 386, 282, 283, 175, 176, 663, 665, 177, + 666, 398, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 685, + 1253, 686, 1255, 282, 283, 175, 176, 687, 695, 177, + 711, 716, 387, 54, 717, 724, 800, 727, 728, 730, + 1265, 1266, 1267, 282, 283, 175, 176, 729, 731, 177, + 732, 756, 388, 733, 1279, 1280, 1281, 1283, 1285, 1287, + 282, 283, 175, 176, 734, 735, 177, 736, 738, 389, + 737, 1299, 1300, 1301, 1302, 739, 1304, 746, 1306, 282, + 283, 175, 176, -3, 22, 177, 740, 23, 390, 282, + 283, 175, 176, 752, 741, 177, 757, 399, 1320, 1322, + 1324, 804, 760, 761, 742, 743, 744, 1331, 179, 1333, + 762, 1335, 766, 24, 25, 26, 27, 28, 29, 30, + 31, 806, 32, 33, 34, 35, 36, 37, 38, 745, + 936, 807, 747, 937, 39, 40, 41, 42, 43, 44, + 748, 45, 46, 47, 48, 49, 767, 50, 749, 282, + 283, 175, 176, 768, 958, 177, 750, 769, 392, 751, + 753, 51, 52, 180, 181, 182, 754, 53, 770, 973, + 771, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 772, 784, 778, 780, 988, 989, 785, 809, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 816, + 203, 204, 205, 206, 207, 208, 282, 283, 175, 176, + 810, 813, 177, 817, 54, 393, 282, 283, 175, 176, + 818, 819, 177, 820, 822, 394, 823, 282, 283, 175, + 176, 825, 826, 177, 827, 829, 395, 828, 282, 283, + 175, 176, 1029, 1030, 177, 835, 836, 396, 282, 283, + 175, 176, 839, 840, 177, 853, 881, 397, 282, 283, + 175, 176, 841, 854, 177, 844, 1049, 443, 282, 283, + 175, 176, 855, 856, 177, 857, 886, 446, 282, 283, + 175, 176, 882, 888, 177, 890, 916, 456, 282, 283, + 175, 176, 891, 892, 177, 893, 897, 457, 282, 283, + 175, 176, 898, 894, 177, 896, 917, 461, 902, 282, + 283, 175, 176, 903, 1088, 177, 933, 904, 462, 282, + 283, 175, 176, 906, 909, 177, 907, 1101, 463, 282, + 283, 175, 176, 934, 935, 177, 947, 939, 464, 282, + 283, 175, 176, 942, 944, 177, 952, 949, 465, 282, + 283, 175, 176, 951, 953, 177, 962, 954, 507, 282, + 283, 175, 176, 955, 957, 177, 959, 965, 512, 960, + 282, 283, 175, 176, 963, 1148, 177, 974, 966, 585, + 282, 283, 175, 176, 969, 975, 177, 990, 1000, 616, + 282, 283, 175, 176, 1001, 991, 177, 993, 1045, 617, + 282, 283, 175, 176, 996, 997, 177, 1005, 1046, 618, + 282, 283, 175, 176, 998, 1003, 177, 1007, 1085, 619, + 282, 283, 175, 176, 1008, 1187, 177, 1010, 1063, 712, + 282, 283, 175, 176, 1011, 1014, 177, 1027, 1069, 775, + 282, 283, 175, 176, 1028, 1038, 177, 1039, 1070, 850, + 1040, 1042, 1213, 282, 283, 175, 176, 1043, 1062, 177, + 1044, 1086, 875, 282, 283, 175, 176, 1067, 1068, 177, + 1071, 1087, 876, 282, 283, 175, 176, 1089, 1072, 177, + 1243, 1090, 895, 282, 283, 175, 176, 1073, 1098, 177, + 1075, 1095, 899, 282, 283, 175, 176, 1096, 1099, 177, + 1100, 1149, 901, 1117, 282, 283, 175, 176, 1118, 1264, + 177, 1124, 1150, 920, 1143, 282, 283, 175, 176, 1125, + 1122, 177, 1126, 1278, 970, 282, 283, 175, 176, 1123, + 1127, 177, 1151, 1152, 971, 282, 283, 175, 176, 1163, + 1165, 177, 1167, 1168, 972, 282, 283, 175, 176, 1172, + 1173, 177, 1200, 1199, 1002, 282, 283, 175, 176, 1201, + 1208, 177, 1209, 1210, 1004, 282, 283, 175, 176, 1212, + 1228, 177, 1229, 1242, 1006, 282, 283, 175, 176, 1244, + 1252, 177, 1254, 1256, 1024, 282, 283, 175, 176, 1275, + 1276, 177, 1303, 1277, 1025, 282, 283, 175, 176, 1257, + 1271, 177, 1305, 1316, 1026, 282, 283, 175, 176, 1288, + 1307, 177, 1308, 1312, 1180, 282, 283, 175, 176, 1317, + 1318, 177, 1332, 1334, 1181, 282, 283, 175, 176, 1336, + 1338, 177, 1339, 592, 1182, 282, 283, 175, 176, 562, + 58, 177, 59, 60, 1261, 282, 283, 175, 176, 1048, + 0, 177, 803, 0, 1262, 282, 283, 175, 176, 0, + 0, 177, 0, 0, 1263, 282, 283, 175, 176, 0, + 0, 177, 0, 0, 1309, 282, 283, 175, 176, 0, + 0, 177, 0, 0, 1310, 282, 283, 175, 176, 0, + 0, 177, 0, 0, 1311, 282, 283, 175, 176, 0, + 0, 177, 0, 400, 282, 283, 175, 176, 0, 0, + 177, 0, 466, 282, 283, 175, 176, 0, 0, 177, + 0, 467, 282, 283, 175, 176, 0, 0, 177, 0, + 472, 282, 283, 175, 176, 0, 0, 177, 0, 473, + 282, 283, 175, 176, 0, 0, 177, 0, 474, 282, + 283, 175, 176, 0, 0, 177, 0, 503, 282, 283, + 175, 176, 0, 0, 177, 0, 504, 282, 283, 175, + 176, 0, 0, 177, 0, 682, 282, 283, 175, 176, + 0, 0, 177, 0, 683, 282, 283, 175, 176, 0, + 0, 177, 0, 709, 282, 283, 175, 176, 0, 0, + 177, 0, 710, 282, 283, 175, 176, 0, 0, 177, + 0, 725, 282, 283, 175, 176, 0, 0, 177, 0, + 726, 282, 283, 175, 176, 0, 0, 177, 0, 759, + 282, 283, 175, 176, 0, 0, 177, 0, 786, 282, + 283, 175, 176, 0, 0, 177, 0, 787, 282, 283, + 175, 176, 0, 0, 177, 0, 788, 282, 283, 175, + 176, 0, 0, 177, 0, 789, 282, 283, 175, 176, + 0, 0, 177, 0, 790, 282, 283, 175, 176, 0, + 0, 177, 0, 791, 282, 283, 175, 176, 0, 0, + 177, 0, 792, 282, 283, 175, 176, 0, 0, 177, + 0, 793, 282, 283, 175, 176, 0, 0, 177, 0, + 794, 282, 283, 175, 176, 0, 0, 177, 0, 795, + 282, 283, 175, 176, 0, 0, 177, 0, 796, 282, + 283, 175, 176, 0, 0, 177, 0, 797, 282, 283, + 175, 176, 0, 0, 177, 0, 889, 282, 283, 175, + 176, 0, 0, 177, 0, 900, 282, 283, 175, 176, + 0, 0, 177, 0, 905, 282, 283, 175, 176, 0, + 0, 177, 0, 908, 282, 283, 175, 176, 0, 0, + 177, 0, 910, 282, 283, 175, 176, 0, 0, 177, + 0, 921, 282, 283, 175, 176, 0, 0, 177, 0, + 922, 282, 283, 175, 176, 0, 0, 177, 0, 923, + 282, 283, 175, 176, 0, 0, 177, 0, 924, 282, + 283, 175, 176, 0, 0, 177, 0, 925, 282, 283, + 175, 176, 0, 0, 177, 0, 926, 282, 283, 175, + 176, 0, 0, 177, 0, 927, 282, 283, 175, 176, + 0, 0, 177, 0, 928, 282, 283, 175, 176, 0, + 0, 177, 0, 929, 282, 283, 175, 176, 0, 0, + 177, 0, 930, 282, 283, 175, 176, 0, 0, 177, + 0, 931, 282, 283, 175, 176, 0, 0, 177, 0, + 932, 282, 283, 175, 176, 0, 0, 177, 0, 994, + 282, 283, 175, 176, 0, 0, 177, 0, 999, 282, + 283, 175, 176, 0, 0, 177, 0, 1015, 282, 283, + 175, 176, 0, 0, 177, 0, 1016, 282, 283, 175, + 176, 0, 0, 177, 0, 1017, 282, 283, 175, 176, + 0, 0, 177, 0, 1018, 282, 283, 175, 176, 0, + 0, 177, 0, 1019, 282, 283, 175, 176, 0, 0, + 177, 0, 1020, 282, 283, 175, 176, 0, 0, 177, + 0, 1021, 282, 283, 175, 176, 0, 0, 177, 0, + 1022, 282, 283, 175, 176, 0, 0, 177, 0, 1023, + 282, 283, 175, 176, 0, 0, 177, 0, 1065, 282, + 283, 175, 176, 0, 0, 177, 0, 1076, 282, 283, + 175, 176, 0, 0, 177, 0, 1077, 282, 283, 175, + 176, 0, 0, 177, 0, 1078, 282, 283, 175, 176, + 0, 0, 177, 0, 1079, 282, 283, 175, 176, 0, + 0, 177, 0, 1080, 282, 283, 175, 176, 0, 0, + 177, 0, 1081, 282, 283, 175, 176, 0, 0, 177, + 0, 1082, 282, 283, 175, 176, 0, 0, 177, 0, + 1083, 282, 283, 175, 176, 0, 0, 177, 0, 1084, + 282, 283, 175, 176, 0, 0, 177, 0, 1128, 282, + 283, 175, 176, 0, 0, 177, 0, 1129, 282, 283, + 175, 176, 0, 0, 177, 0, 1130, 282, 283, 175, + 176, 0, 0, 177, 0, 1131, 282, 283, 175, 176, + 0, 0, 177, 0, 1132, 282, 283, 175, 176, 0, + 0, 177, 0, 1133, 282, 283, 175, 176, 0, 0, + 177, 0, 1134, 282, 283, 175, 176, 0, 0, 177, + 0, 1135, 282, 283, 175, 176, 0, 0, 177, 0, + 1136, 282, 283, 175, 176, 0, 0, 177, 0, 1169, + 282, 283, 175, 176, 0, 0, 177, 0, 1174, 282, + 283, 175, 176, 0, 0, 177, 0, 1175, 282, 283, + 175, 176, 0, 0, 177, 0, 1176, 282, 283, 175, + 176, 0, 0, 177, 0, 1177, 282, 283, 175, 176, + 0, 0, 177, 0, 1178, 282, 283, 175, 176, 0, + 0, 177, 0, 1179, 282, 283, 175, 176, 0, 0, + 177, 0, 1197, 282, 283, 175, 176, 0, 0, 177, + 0, 1202, 282, 283, 175, 176, 0, 0, 177, 0, + 1203, 282, 283, 175, 176, 0, 0, 177, 0, 1204, + 282, 283, 175, 176, 0, 0, 177, 0, 1205, 282, + 283, 175, 176, 0, 0, 177, 0, 1206, 282, 283, + 175, 176, 0, 0, 177, 0, 1207, 282, 283, 175, + 176, 0, 0, 177, 0, 1230, 282, 283, 175, 176, + 0, 0, 177, 0, 1231, 282, 283, 175, 176, 0, + 0, 177, 0, 1232, 282, 283, 175, 176, 0, 0, + 177, 0, 1233, 282, 283, 175, 176, 0, 0, 177, + 0, 1234, 282, 283, 175, 176, 0, 0, 177, 0, + 1235, 282, 283, 175, 176, 0, 0, 177, 0, 1258, + 282, 283, 175, 176, 0, 0, 177, 0, 1259, 282, + 283, 175, 176, 0, 0, 177, 0, 1260, 282, 283, + 175, 176, 0, 0, 177, 0, 1272, 282, 283, 175, + 176, 0, 0, 177, 0, 1273, 282, 283, 175, 176, + 0, 0, 177, 0, 1274, 282, 283, 175, 176, 0, + 0, 177, 0, 1289, 282, 283, 175, 176, 0, 0, + 177, 0, 1290, 282, 283, 175, 176, 0, 0, 177, + 0, 1291 }; -static const short yycheck[] = { 79, - 80, 81, 82, 76, 84, 451, 86, 87, 88, 731, - 90, 4, 104, 105, 106, 6, 6, 30, 740, 63, - 33, 34, 866, 59, 136, 747, 34, 6, 6, 65, - 110, 6, 81, 3, 611, 612, 59, 3, 4, 119, - 7, 121, 65, 9, 10, 11, 12, 13, 14, 15, +static const short yycheck[] = { 7, + 103, 470, 860, 30, 34, 63, 33, 34, 130, 131, + 132, 57, 81, 4, 6, 57, 6, 6, 59, 59, + 732, 613, 614, 800, 65, 65, 145, 146, 6, 741, + 149, 30, 3, 4, 33, 136, 748, 6, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 6, + 85, 86, 87, 41, 137, 33, 34, 6, 36, 150, + 143, 144, 145, 146, 7, 134, 149, 46, 137, 6, + 139, 150, 90, 91, 92, 93, 145, 146, 6, 7, + 149, 143, 144, 145, 146, 153, 6, 149, 106, 107, + 108, 109, 154, 111, 150, 113, 114, 115, 150, 117, + 59, 6, 889, 154, 154, 30, 65, 6, 33, 34, + 150, 36, 150, 150, 6, 153, 6, 719, 136, 154, + 252, 151, 150, 6, 154, 153, 150, 145, 151, 147, + 6, 154, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 153, 153, 153, 173, 174, 175, 176, 177, + 178, 150, 143, 144, 143, 144, 145, 146, 890, 150, + 149, 139, 894, 6, 155, 143, 144, 145, 146, 7, + 1048, 149, 8, 47, 48, 49, 143, 144, 145, 146, + 151, 38, 149, 154, 143, 144, 145, 146, 6, 217, + 149, 219, 6, 151, 151, 223, 154, 154, 687, 227, + 228, 229, 150, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 354, 134, 151, 152, 244, 245, 246, 361, + 6, 7, 143, 144, 145, 146, 254, 255, 149, 151, + 258, 150, 154, 261, 143, 144, 145, 146, 6, 7, + 149, 143, 144, 145, 146, 0, 1, 149, 3, 150, + 143, 144, 145, 146, 282, 283, 149, 143, 144, 145, + 146, 151, 152, 149, 996, 997, 998, 999, 3, 4, + 151, 1003, 150, 154, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 36, 151, 150, 440, 154, + 143, 144, 145, 146, 151, 152, 149, 143, 144, 145, + 146, 339, 151, 149, 151, 154, 344, 154, 143, 144, + 145, 146, 0, 1, 149, 3, 150, 152, 34, 357, + 472, 473, 474, 134, 34, 1067, 1068, 365, 151, 1071, + 34, 154, 143, 144, 145, 146, 151, 151, 149, 154, + 154, 106, 107, 108, 109, 110, 111, 112, 113, 143, + 144, 145, 146, 391, 853, 149, 151, 150, 152, 154, + 398, 399, 400, 137, 151, 152, 140, 132, 133, 521, + 135, 143, 144, 145, 146, 151, 152, 149, 530, 151, + 1122, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 91, 92, 93, 94, 95, 143, 144, + 145, 146, 151, 152, 149, 150, 150, 150, 153, 150, + 5, 153, 450, 451, 34, 153, 6, 550, 106, 107, + 108, 109, 110, 111, 112, 113, 5, 150, 466, 467, + 1172, 153, 3, 4, 34, 150, 150, 589, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 1201, + 150, 143, 144, 145, 146, 503, 504, 149, 506, 154, + 143, 144, 145, 146, 156, 150, 149, 3, 4, 152, + 150, 519, 520, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 6, 57, 41, 46, 57, 33, - 34, 6, 36, 59, 3, 4, 804, 151, 152, 65, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 150, 182, 183, 184, 85, 86, 87, 6, 153, - 190, 30, 192, 6, 33, 6, 196, 6, 154, 6, - 200, 201, 202, 150, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 226, 6, 150, 150, 218, 219, - 220, 718, 150, 150, 143, 144, 145, 146, 228, 229, - 149, 151, 232, 152, 154, 235, 0, 1, 150, 3, - 153, 150, 153, 153, 143, 144, 145, 146, 154, 897, - 149, 145, 146, 6, 154, 149, 898, 143, 144, 6, - 902, 47, 48, 49, 150, 143, 144, 145, 146, 155, - 7, 149, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 1056, 150, 143, 144, 296, 297, 298, 299, - 300, 150, 30, 150, 153, 33, 34, 150, 36, 150, - 145, 146, 6, 313, 149, 151, 152, 329, 318, 6, - 686, 150, 50, 38, 336, 143, 144, 145, 146, 6, - 150, 149, 332, 153, 143, 144, 145, 146, 8, 34, - 149, 341, 106, 107, 108, 109, 110, 111, 112, 113, - 6, 7, 143, 144, 145, 146, 145, 146, 149, 34, - 149, 34, 1004, 1005, 1006, 1007, 3, 4, 150, 1011, - 150, 153, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 6, 7, 36, 143, 144, 145, 146, - 6, 7, 149, 3, 4, 151, 152, 150, 420, 9, + 26, 27, 28, 29, 134, 150, 150, 137, 660, 139, + 150, 143, 144, 145, 146, 145, 146, 149, 5, 149, + 152, 559, 143, 144, 145, 146, 564, 150, 149, 153, + 151, 150, 150, 154, 150, 150, 688, 150, 690, 150, + 692, 579, 51, 52, 53, 54, 1288, 56, 116, 150, + 153, 150, 150, 121, 150, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 604, 150, 150, 150, + 150, 139, 143, 144, 145, 146, 150, 615, 149, 150, + 150, 153, 620, 3, 4, 150, 150, 150, 150, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 430, 431, 30, 1075, 1076, 33, 34, 1079, 36, 151, - 152, 453, 454, 455, 151, 152, 150, 447, 448, 143, - 144, 145, 146, 151, 152, 149, 143, 144, 145, 146, - 151, 111, 149, 154, 114, 150, 143, 144, 145, 146, - 150, 153, 149, 143, 144, 145, 146, 5, 34, 149, - 6, 153, 1124, 5, 484, 485, 498, 487, 143, 144, - 145, 146, 150, 859, 149, 507, 496, 497, 34, 153, - 3, 156, 150, 5, 150, 150, 143, 144, 145, 146, - 153, 150, 149, 150, 150, 153, 153, 150, 153, 150, - 1162, 143, 144, 145, 146, 150, 150, 149, 6, 151, - 0, 1, 154, 3, 527, 150, 150, 3, 538, 150, - 150, 150, 150, 143, 144, 545, 546, 547, 150, 1191, - 150, 143, 144, 145, 146, 150, 556, 149, 151, 150, - 152, 561, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 150, 587, 150, 577, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 150, 591, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 602, 150, 150, 143, 144, 145, 146, 3, - 4, 149, 1254, 613, 152, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 106, 107, 108, 109, - 110, 111, 112, 113, 89, 150, 658, 5, 7, 94, - 154, 150, 150, 143, 144, 145, 146, 150, 150, 149, - 151, 151, 132, 133, 154, 135, 154, 150, 113, 150, - 670, 671, 672, 150, 150, 687, 150, 689, 150, 691, - 7, 681, 682, 30, 31, 32, 33, 34, 35, 36, - 37, 150, 39, 150, 41, 42, 150, 44, 45, 143, - 144, 145, 146, 150, 150, 149, 82, 151, 708, 709, - 154, 150, 143, 144, 145, 146, 150, 64, 149, 143, - 144, 145, 146, 154, 724, 149, 152, 150, 150, 150, - 154, 78, 79, 150, 734, 51, 52, 53, 54, 150, - 56, 741, 742, 743, 150, 150, 150, 150, 748, 143, - 144, 150, 752, 150, 150, 150, 150, 150, 150, 150, - 753, 761, 762, 91, 92, 93, 94, 95, 150, 150, - 150, 30, 31, 32, 33, 34, 35, 36, 37, 150, - 39, 150, 41, 42, 131, 44, 45, 150, 788, 150, - 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, - 800, 801, 150, 152, 150, 64, 150, 154, 143, 144, - 145, 146, 151, 151, 149, 815, 816, 152, 152, 78, - 79, 30, 31, 32, 33, 34, 35, 36, 37, 137, - 39, 5, 41, 42, 5, 44, 45, 143, 144, 145, - 146, 5, 5, 149, 143, 144, 145, 146, 154, 5, - 149, 5, 5, 152, 5, 64, 5, 857, 5, 3, - 5, 861, 862, 863, 5, 143, 144, 145, 146, 78, - 79, 149, 131, 5, 5, 5, 154, 5, 143, 144, - 145, 146, 5, 5, 149, 5, 5, 5, 888, 154, - 890, 143, 144, 145, 146, 154, 5, 149, 5, 124, - 900, 5, 154, 143, 144, 145, 146, 6, 908, 149, - 5, 5, 5, 913, 154, 5, 916, 143, 144, 145, - 146, 5, 131, 149, 5, 149, 153, 7, 154, 929, - 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, - 940, 143, 144, 145, 146, 7, 6, 149, 7, 7, - 152, 143, 144, 145, 146, 7, 153, 149, 153, 7, - 152, 143, 144, 145, 146, 150, 7, 149, 138, 5, - 152, 151, 151, 151, 151, 975, 421, 422, 151, 151, - 425, 7, 151, 428, 429, 143, 144, 145, 146, 151, - 151, 149, 151, 7, 152, 152, 151, 143, 144, 145, - 146, 1001, 1002, 149, 7, 7, 152, 143, 144, 145, - 146, 151, 151, 149, 151, 150, 152, 151, 151, 7, - 7, 7, 151, 1023, 1024, 1025, 1026, 1027, 1028, 1029, - 1030, 1031, 7, 143, 144, 145, 146, 151, 151, 149, - 151, 486, 152, 151, 489, 143, 144, 145, 146, 151, - 151, 149, 7, 7, 152, 143, 144, 145, 146, 504, - 505, 149, 151, 7, 152, 510, 511, 7, 151, 151, - 7, 150, 517, 1073, 519, 143, 144, 145, 146, 151, - 151, 149, 151, 151, 1084, 1085, 1086, 1087, 1088, 1089, - 1090, 1091, 1092, 143, 144, 145, 146, 151, 151, 149, - 151, 150, 152, 150, 150, 150, 551, 150, 553, 6, - 150, 150, 150, 150, 7, 150, 150, 562, 563, 564, - 1120, 1121, 567, 568, 569, 570, 571, 572, 573, 574, - 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 143, - 144, 145, 146, 153, 153, 149, 153, 7, 152, 134, - 3, 143, 144, 145, 146, 3, 3, 149, 1158, 1159, - 152, 145, 3, 3, 1164, 1165, 1166, 1167, 1168, 1169, - 143, 144, 145, 146, 3, 3, 149, 3, 3, 152, - 143, 144, 145, 146, 3, 3, 149, 1187, 3, 152, - 3, 3, 1192, 1193, 1194, 1195, 1196, 1197, 143, 144, - 145, 146, 5, 5, 149, 3, 3, 152, 154, 83, - 6, 6, 6, 6, 1214, 1215, 1216, 1217, 1218, 1219, - 143, 144, 145, 146, 6, 6, 149, 154, 153, 152, - 1230, 1231, 1232, 143, 144, 145, 146, 6, 6, 149, - 4, 3, 152, 151, 1244, 1245, 1246, 152, 151, 6, - 152, 151, 6, 152, 152, 1255, 1256, 1257, 152, 151, - 151, 0, 1, 151, 151, 4, 143, 144, 145, 146, - 715, 152, 149, 152, 152, 152, 721, 152, 151, 151, - 725, 143, 144, 145, 146, 151, 33, 149, 151, 6, - 152, 30, 31, 32, 33, 34, 35, 36, 37, 744, - 39, 40, 41, 42, 43, 44, 45, 151, 151, 151, - 6, 6, 51, 52, 53, 54, 55, 56, 151, 58, - 59, 60, 61, 62, 151, 64, 143, 144, 145, 146, - 151, 151, 149, 6, 6, 152, 6, 151, 6, 78, - 79, 88, 89, 90, 151, 84, 6, 6, 6, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 6, - 6, 151, 6, 6, 83, 7, 7, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 154, 125, 126, - 127, 128, 129, 130, 143, 144, 145, 146, 154, 154, - 149, 3, 131, 152, 143, 144, 145, 146, 6, 3, - 149, 3, 145, 152, 3, 143, 144, 145, 146, 6, - 6, 149, 3, 6, 152, 143, 144, 145, 146, 6, - 6, 149, 3, 6, 152, 143, 144, 145, 146, 6, - 3, 149, 3, 3, 152, 143, 144, 145, 146, 884, - 6, 149, 887, 6, 152, 143, 144, 145, 146, 153, - 151, 149, 154, 153, 152, 143, 144, 145, 146, 151, - 151, 149, 80, 3, 152, 910, 143, 144, 145, 146, - 6, 152, 149, 151, 6, 152, 143, 144, 145, 146, - 925, 152, 149, 152, 6, 152, 143, 144, 145, 146, - 151, 153, 149, 7, 83, 152, 941, 942, 143, 144, - 145, 146, 151, 151, 149, 7, 6, 152, 143, 144, - 145, 146, 151, 151, 149, 152, 152, 152, 143, 144, - 145, 146, 152, 151, 149, 152, 6, 152, 143, 144, - 145, 146, 151, 134, 149, 3, 6, 152, 143, 144, - 145, 146, 6, 3, 149, 6, 3, 152, 6, 143, - 144, 145, 146, 998, 999, 149, 6, 6, 152, 143, - 144, 145, 146, 6, 5, 149, 6, 6, 152, 143, - 144, 145, 146, 6, 5, 149, 154, 1022, 152, 6, - 3, 153, 151, 151, 151, 6, 151, 1032, 1033, 1034, + 143, 144, 145, 146, 150, 150, 149, 143, 144, 152, + 150, 754, 150, 6, 150, 150, 150, 153, 150, 149, + 5, 150, 150, 150, 672, 673, 674, 150, 150, 150, + 3, 4, 150, 150, 682, 683, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 150, 150, 150, + 150, 709, 710, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 723, 150, 725, 143, 144, + 145, 146, 150, 150, 149, 151, 151, 735, 150, 154, + 150, 150, 150, 150, 742, 743, 744, 143, 144, 145, + 146, 749, 150, 149, 151, 753, 150, 150, 154, 150, + 758, 759, 150, 143, 144, 143, 144, 145, 146, 150, + 150, 149, 7, 151, 150, 150, 154, 150, 143, 144, + 145, 146, 150, 152, 149, 7, 784, 152, 786, 787, + 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, + 151, 154, 143, 144, 145, 146, 152, 152, 149, 143, + 144, 145, 146, 154, 812, 149, 82, 5, 152, 151, + 143, 144, 143, 144, 145, 146, 5, 150, 149, 5, + 5, 5, 124, 154, 30, 31, 32, 33, 34, 35, + 36, 37, 5, 39, 5, 41, 42, 5, 44, 45, + 5, 5, 5, 851, 5, 5, 5, 855, 856, 857, + 143, 144, 145, 146, 5, 5, 149, 5, 64, 5, + 5, 154, 5, 5, 143, 144, 145, 146, 5, 5, + 149, 5, 78, 79, 882, 154, 884, 143, 144, 145, + 146, 5, 3, 149, 892, 5, 5, 5, 154, 5, + 7, 6, 900, 143, 144, 145, 146, 905, 5, 149, + 908, 7, 152, 441, 442, 6, 153, 445, 7, 7, + 448, 449, 7, 921, 922, 923, 924, 925, 926, 927, + 928, 929, 930, 931, 932, 131, 143, 144, 145, 146, + 153, 153, 149, 7, 150, 943, 7, 154, 143, 144, + 145, 146, 138, 151, 149, 5, 150, 152, 154, 143, + 144, 145, 146, 152, 151, 149, 151, 7, 152, 967, + 143, 144, 145, 146, 151, 6, 149, 505, 150, 152, + 508, 143, 144, 145, 146, 151, 151, 149, 7, 7, + 152, 151, 151, 7, 151, 993, 994, 995, 7, 527, + 528, 143, 144, 145, 146, 533, 534, 149, 151, 7, + 152, 7, 540, 7, 542, 7, 7, 1015, 1016, 1017, + 1018, 1019, 1020, 1021, 1022, 1023, 554, 7, 556, 151, + 143, 144, 145, 146, 151, 1033, 149, 565, 566, 567, + 7, 7, 570, 571, 572, 573, 574, 575, 576, 143, + 144, 145, 146, 151, 153, 149, 151, 150, 152, 30, + 31, 32, 33, 34, 35, 36, 37, 1065, 39, 151, + 41, 42, 151, 44, 45, 151, 151, 151, 1076, 1077, + 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, + 153, 151, 151, 64, 1092, 143, 144, 145, 146, 151, + 151, 149, 151, 150, 152, 151, 151, 78, 79, 143, + 144, 145, 146, 151, 151, 149, 151, 150, 152, 151, + 1118, 1119, 151, 1121, 151, 150, 150, 150, 150, 150, + 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, + 150, 1139, 150, 1141, 150, 7, 153, 134, 1146, 3, + 3, 3, 30, 31, 32, 33, 34, 35, 36, 37, + 131, 39, 145, 41, 42, 3, 44, 45, 3, 5, + 1168, 1169, 3, 3, 3, 3, 1174, 1175, 1176, 1177, + 1178, 1179, 3, 154, 3, 3, 64, 3, 716, 143, + 144, 145, 146, 3, 722, 149, 5, 151, 726, 1197, + 78, 79, 3, 3, 1202, 1203, 1204, 1205, 1206, 1207, + 1208, 1209, 1210, 143, 144, 145, 146, 745, 6, 149, + 6, 6, 152, 143, 144, 145, 146, 6, 6, 149, + 6, 151, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 154, + 1238, 154, 1240, 143, 144, 145, 146, 153, 6, 149, + 6, 83, 152, 131, 4, 151, 7, 152, 151, 151, + 1258, 1259, 1260, 143, 144, 145, 146, 152, 152, 149, + 151, 6, 152, 152, 1272, 1273, 1274, 1275, 1276, 1277, 143, 144, 145, 146, 151, 151, 149, 152, 152, 152, - 143, 144, 145, 146, 152, 151, 149, 151, 6, 152, - 143, 144, 145, 146, 151, 6, 149, 6, 3, 152, - 143, 144, 145, 146, 6, 1070, 149, 6, 6, 152, - 143, 144, 145, 146, 6, 6, 149, 6, 1083, 152, - 143, 144, 145, 146, 5, 5, 149, 151, 154, 152, - 143, 144, 145, 146, 3, 151, 149, 151, 6, 152, - 143, 144, 145, 146, 152, 152, 149, 151, 6, 152, - 143, 144, 145, 146, 151, 151, 149, 151, 6, 152, - 1125, 143, 144, 145, 146, 6, 80, 149, 134, 6, - 152, 143, 144, 145, 146, 6, 5, 149, 5, 154, - 152, 143, 144, 145, 146, 6, 153, 149, 3, 154, - 152, 143, 144, 145, 146, 151, 151, 149, 1163, 3, - 152, 80, 152, 152, 152, 1170, 1171, 1172, 143, 144, - 145, 146, 6, 6, 149, 6, 6, 152, 143, 144, - 145, 146, 153, 3, 149, 1190, 139, 152, 143, 144, - 145, 146, 151, 140, 149, 151, 6, 152, 6, 143, - 144, 145, 146, 151, 6, 149, 6, 1212, 152, 143, - 144, 145, 146, 6, 151, 149, 151, 6, 152, 143, - 144, 145, 146, 151, 1229, 149, 152, 151, 1233, 1234, - 1235, 143, 144, 145, 146, 151, 6, 149, 1243, 152, - 152, 143, 144, 145, 146, 6, 6, 149, 151, 6, - 152, 6, 6, 6, 0, 0, 6, 1021, 1263, 1264, - 1265, 143, 144, 145, 146, 458, -1, 149, 6, 6, - 152, 143, 144, 145, 146, -1, 431, 149, -1, -1, - 152, 143, 144, 145, 146, 713, -1, 149, -1, -1, - 152, 143, 144, 145, 146, -1, -1, 149, -1, -1, - 152, 143, 144, 145, 146, -1, -1, 149, -1, -1, - 152, 143, 144, 145, 146, -1, -1, 149, -1, -1, - 152, 143, 144, 145, 146, -1, -1, 149, -1, -1, - 152, 143, 144, 145, 146, -1, -1, 149, -1, 151, - 143, 144, 145, 146, -1, -1, 149, -1, 151, 143, - 144, 145, 146, -1, -1, 149, -1, 151, 143, 144, - 145, 146, -1, -1, 149, -1, 151, 143, 144, 145, - 146, -1, -1, 149, -1, 151, 143, 144, 145, 146, - -1, -1, 149, -1, 151, 143, 144, 145, 146, -1, + 151, 1289, 1290, 1291, 1292, 152, 1294, 152, 1296, 143, + 144, 145, 146, 0, 1, 149, 151, 4, 152, 143, + 144, 145, 146, 152, 151, 149, 6, 151, 1316, 1317, + 1318, 83, 6, 6, 151, 151, 151, 1325, 33, 1327, + 6, 1329, 6, 30, 31, 32, 33, 34, 35, 36, + 37, 7, 39, 40, 41, 42, 43, 44, 45, 151, + 878, 154, 151, 881, 51, 52, 53, 54, 55, 56, + 151, 58, 59, 60, 61, 62, 6, 64, 151, 143, + 144, 145, 146, 6, 902, 149, 151, 6, 152, 151, + 151, 78, 79, 88, 89, 90, 151, 84, 6, 917, + 6, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 6, 151, 6, 6, 933, 934, 6, 154, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 6, + 125, 126, 127, 128, 129, 130, 143, 144, 145, 146, + 154, 3, 149, 3, 131, 152, 143, 144, 145, 146, + 6, 145, 149, 6, 6, 152, 3, 143, 144, 145, + 146, 6, 3, 149, 6, 3, 152, 6, 143, 144, + 145, 146, 990, 991, 149, 6, 3, 152, 143, 144, + 145, 146, 3, 3, 149, 153, 153, 152, 143, 144, + 145, 146, 6, 154, 149, 6, 1014, 152, 143, 144, + 145, 146, 151, 151, 149, 151, 6, 152, 143, 144, + 145, 146, 80, 152, 149, 151, 6, 152, 143, 144, + 145, 146, 151, 151, 149, 152, 152, 152, 143, 144, + 145, 146, 152, 151, 149, 151, 153, 152, 151, 143, + 144, 145, 146, 152, 1062, 149, 7, 152, 152, 143, + 144, 145, 146, 151, 151, 149, 152, 1075, 152, 143, + 144, 145, 146, 7, 83, 149, 3, 6, 152, 143, + 144, 145, 146, 6, 6, 149, 3, 6, 152, 143, + 144, 145, 146, 6, 6, 149, 3, 6, 152, 143, + 144, 145, 146, 6, 6, 149, 6, 5, 152, 6, + 143, 144, 145, 146, 6, 1123, 149, 6, 5, 152, + 143, 144, 145, 146, 154, 6, 149, 153, 152, 152, + 143, 144, 145, 146, 152, 151, 149, 151, 5, 152, + 143, 144, 145, 146, 151, 151, 149, 152, 5, 152, + 143, 144, 145, 146, 151, 151, 149, 151, 153, 152, + 143, 144, 145, 146, 151, 1173, 149, 6, 154, 152, + 143, 144, 145, 146, 6, 151, 149, 6, 152, 152, + 143, 144, 145, 146, 6, 6, 149, 6, 152, 152, + 6, 6, 1200, 143, 144, 145, 146, 6, 151, 149, + 6, 153, 152, 143, 144, 145, 146, 151, 151, 149, + 151, 153, 152, 143, 144, 145, 146, 80, 151, 149, + 1228, 6, 152, 143, 144, 145, 146, 151, 5, 149, + 151, 6, 152, 143, 144, 145, 146, 6, 5, 149, + 6, 6, 152, 154, 143, 144, 145, 146, 153, 1257, + 149, 152, 6, 152, 80, 143, 144, 145, 146, 152, + 151, 149, 152, 1271, 152, 143, 144, 145, 146, 151, + 154, 149, 6, 6, 152, 143, 144, 145, 146, 6, + 6, 149, 6, 153, 152, 143, 144, 145, 146, 151, + 151, 149, 151, 140, 152, 143, 144, 145, 146, 151, + 153, 149, 153, 153, 152, 143, 144, 145, 146, 6, + 151, 149, 152, 6, 152, 143, 144, 145, 146, 6, + 6, 149, 6, 6, 152, 143, 144, 145, 146, 153, + 153, 149, 6, 153, 152, 143, 144, 145, 146, 151, + 151, 149, 6, 153, 152, 143, 144, 145, 146, 151, + 6, 149, 152, 6, 152, 143, 144, 145, 146, 153, + 153, 149, 6, 6, 152, 143, 144, 145, 146, 6, + 0, 149, 0, 477, 152, 143, 144, 145, 146, 451, + 6, 149, 6, 6, 152, 143, 144, 145, 146, 1013, + -1, 149, 714, -1, 152, 143, 144, 145, 146, -1, + -1, 149, -1, -1, 152, 143, 144, 145, 146, -1, + -1, 149, -1, -1, 152, 143, 144, 145, 146, -1, + -1, 149, -1, -1, 152, 143, 144, 145, 146, -1, + -1, 149, -1, -1, 152, 143, 144, 145, 146, -1, -1, 149, -1, 151, 143, 144, 145, 146, -1, -1, 149, -1, 151, 143, 144, 145, 146, -1, -1, 149, -1, 151, 143, 144, 145, 146, -1, -1, 149, -1, @@ -1426,10 +1484,15 @@ static const short yycheck[] = { 79, 143, 144, 145, 146, -1, -1, 149, -1, 151, 143, 144, 145, 146, -1, -1, 149, -1, 151, 143, 144, 145, 146, -1, -1, 149, -1, 151, 143, 144, 145, - 146, -1, -1, 149, -1, 151 + 146, -1, -1, 149, -1, 151, 143, 144, 145, 146, + -1, -1, 149, -1, 151, 143, 144, 145, 146, -1, + -1, 149, -1, 151, 143, 144, 145, 146, -1, -1, + 149, -1, 151, 143, 144, 145, 146, -1, -1, 149, + -1, 151 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/local/share/bison.simple" +#line 3 "/usr/lib/bison.simple" +/* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -1446,46 +1509,66 @@ static const short yycheck[] = { 79, You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ -#ifndef alloca +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +#ifndef YYSTACK_USE_ALLOCA +#ifdef alloca +#define YYSTACK_USE_ALLOCA +#else /* alloca not defined */ #ifdef __GNUC__ +#define YYSTACK_USE_ALLOCA #define alloca __builtin_alloca #else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) +#define YYSTACK_USE_ALLOCA #include <alloca.h> #else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ #include <malloc.h> +#endif #else /* not MSDOS, or __TURBOC__ */ #if defined(_AIX) -#include <malloc.h> +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include <malloc.h> */ #pragma alloca -#else /* not MSDOS, __TURBOC__, or _AIX */ -#ifdef __hpux -#ifdef __cplusplus -extern "C" { -void *alloca (unsigned int); -}; -#else /* not __cplusplus */ -void *alloca (); -#endif /* not __cplusplus */ +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca #endif /* __hpux */ +#endif #endif /* not _AIX */ #endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc. */ -#endif /* not GNU C. */ -#endif /* alloca not defined. */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca +#else +#define YYSTACK_ALLOC malloc +#endif /* Note: there must be only one dollar sign in this file. It is replaced by the list of actions, each action @@ -1495,8 +1578,8 @@ void *alloca (); #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 -#define YYACCEPT return(0) -#define YYABORT return(1) +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab #define YYERROR goto yyerrlab1 /* Like YYERROR except do call yyerror. This remains here temporarily to ease the @@ -1577,12 +1660,12 @@ int yydebug; /* nonzero means print parse trace */ #ifndef YYMAXDEPTH #define YYMAXDEPTH 10000 #endif - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -int yyparse (void); -#endif +/* Define __yy_memcpy. Note that the size argument + should be passed with type unsigned int, because that is what the non-GCC + definitions require. With GCC, __builtin_memcpy takes an arg + of type size_t, but it can handle unsigned int. */ + #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ @@ -1594,7 +1677,7 @@ static void __yy_memcpy (to, from, count) char *to; char *from; - int count; + unsigned int count; { register char *f = from; register char *t = to; @@ -1609,10 +1692,10 @@ __yy_memcpy (to, from, count) /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -__yy_memcpy (char *to, char *from, int count) +__yy_memcpy (char *to, char *from, unsigned int count) { - register char *f = from; register char *t = to; + register char *f = from; register int i = count; while (i-- > 0) @@ -1622,7 +1705,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/local/share/bison.simple" +#line 217 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -1643,6 +1726,15 @@ __yy_memcpy (char *to, char *from, int count) #define YYPARSE_PARAM_DECL #endif /* not YYPARSE_PARAM */ +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +#ifdef YYPARSE_PARAM +int yyparse (void *); +#else +int yyparse (void); +#endif +#endif + int yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL @@ -1671,6 +1763,7 @@ yyparse(YYPARSE_PARAM_ARG) #endif int yystacksize = YYINITDEPTH; + int yyfree_stacks = 0; #ifdef YYPURE int yychar; @@ -1755,18 +1848,32 @@ yynewstate: if (yystacksize >= YYMAXDEPTH) { yyerror("parser stack overflow"); + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; - yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); - yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); +#ifndef YYSTACK_USE_ALLOCA + yyfree_stacks = 1; +#endif + yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, + size * (unsigned int) sizeof (*yyssp)); + yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, + size * (unsigned int) sizeof (*yyvsp)); #ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); + yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, + size * (unsigned int) sizeof (*yylsp)); #endif #endif /* no yyoverflow */ @@ -1927,7 +2034,7 @@ yyreduce: switch (yyn) { case 4: -#line 121 "Gmsh.y" +#line 126 "Gmsh.y" { Msg(PARSER_INFO,"STL File Format"); STL_Surf = Create_Surface(1,MSH_SURF_STL,1); @@ -1936,7 +2043,7 @@ case 4: ; break;} case 5: -#line 135 "Gmsh.y" +#line 140 "Gmsh.y" { STL_Surf->STL->Add_Facet( yyvsp[-12].d, yyvsp[-11].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-7].d, yyvsp[-6].d, @@ -1945,7 +2052,7 @@ case 5: ; break;} case 6: -#line 142 "Gmsh.y" +#line 147 "Gmsh.y" { Msg(PARSER_INFO,"STL File Format Read"); Tree_Add(THEM->Surfaces, &STL_Surf); @@ -1953,83 +2060,83 @@ case 6: ; break;} case 9: -#line 159 "Gmsh.y" +#line 164 "Gmsh.y" { return 1; ; break;} case 10: -#line 160 "Gmsh.y" +#line 165 "Gmsh.y" { return 1; ; break;} case 11: -#line 161 "Gmsh.y" +#line 166 "Gmsh.y" { return 1; ; break;} case 12: -#line 162 "Gmsh.y" +#line 167 "Gmsh.y" { yyerrok ; return 1; ; break;} case 13: -#line 167 "Gmsh.y" +#line 172 "Gmsh.y" { Msg(PARSER_INFO,"Step Iso-10303-21 File Format"); Create_Step_Solid_BRep(); ; break;} case 14: -#line 172 "Gmsh.y" +#line 177 "Gmsh.y" { Msg(PARSER_INFO,"Step Iso-10303-21 File Format Read"); Resolve_BREP (); ; break;} case 18: -#line 183 "Gmsh.y" +#line 188 "Gmsh.y" { ; break;} case 19: -#line 186 "Gmsh.y" +#line 191 "Gmsh.y" { ; break;} case 20: -#line 190 "Gmsh.y" +#line 195 "Gmsh.y" { ; break;} case 21: -#line 196 "Gmsh.y" +#line 201 "Gmsh.y" { Add_Cartesian_Point((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2]); ; break;} case 22: -#line 202 "Gmsh.y" +#line 207 "Gmsh.y" { Add_BSpline_Curve_With_Knots ((int)yyvsp[-22].d, yyvsp[-18].c, (int) yyvsp[-16].d, yyvsp[-14].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1.); ; break;} case 23: -#line 209 "Gmsh.y" +#line 214 "Gmsh.y" { Add_BSpline_Surface_With_Knots ((int)yyvsp[-30].d, yyvsp[-26].c, (int) yyvsp[-24].d, (int) yyvsp[-22].d, yyvsp[-20].l, yyvsp[-10].l, yyvsp[-8].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1., 0., 1. ); ; break;} case 24: -#line 215 "Gmsh.y" +#line 220 "Gmsh.y" { Add_Edge_Curve ((int)yyvsp[-14].d, yyvsp[-10].c , (int)yyvsp[-8].d , (int)yyvsp[-6].d, (int)yyvsp[-4].d); ; break;} case 25: -#line 219 "Gmsh.y" +#line 224 "Gmsh.y" { Add_Face_Outer_Bound((int)yyvsp[-10].d,yyvsp[-6].c,(int)yyvsp[-4].d,yyvsp[-2].i,1); ; break;} case 26: -#line 223 "Gmsh.y" +#line 228 "Gmsh.y" { /* La je dois voir la norme ! Face_Bound : trou externe a la surface ! */ Msg(PARSER_INFO,"Found a Face Bound"); @@ -2037,310 +2144,517 @@ case 26: ; break;} case 27: -#line 230 "Gmsh.y" +#line 235 "Gmsh.y" { Add_Oriented_Edge((int)yyvsp[-14].d,yyvsp[-10].c,(int)yyvsp[-4].d,yyvsp[-2].i); ; break;} case 28: -#line 234 "Gmsh.y" +#line 239 "Gmsh.y" { Add_Edge_Loop((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].l); ; break;} case 29: -#line 239 "Gmsh.y" +#line 244 "Gmsh.y" { Add_Advanced_Face((int)yyvsp[-12].d,yyvsp[-8].c,yyvsp[-6].l,(int)yyvsp[-4].d,yyvsp[-2].i); ; break;} case 30: -#line 243 "Gmsh.y" +#line 248 "Gmsh.y" { Add_Vertex_Point((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d); ; break;} case 31: -#line 247 "Gmsh.y" +#line 252 "Gmsh.y" { ; break;} case 32: -#line 251 "Gmsh.y" +#line 256 "Gmsh.y" { Add_Axis2_Placement3D ( (int)yyvsp[-12].d, (int)yyvsp[-4].d, (int)yyvsp[-2].d, (int)yyvsp[-6].d); ; break;} case 33: -#line 255 "Gmsh.y" +#line 260 "Gmsh.y" { Add_Direction((int)yyvsp[-8].d , yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]); ; break;} case 34: -#line 259 "Gmsh.y" +#line 264 "Gmsh.y" { Add_Plane((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d); ; break;} case 35: -#line 263 "Gmsh.y" +#line 268 "Gmsh.y" { Add_Line ((int)yyvsp[-10].d, yyvsp[-6].c , (int) yyvsp[-4].d, (int)yyvsp[-2].d); ; break;} case 36: -#line 267 "Gmsh.y" +#line 272 "Gmsh.y" { Msg(PARSER_INFO,"Found a Closed shell"); Add_Closed_Shell((int)yyvsp[-8].d, yyvsp[-4].c , yyvsp[-2].l); ; break;} case 37: -#line 273 "Gmsh.y" +#line 278 "Gmsh.y" { ; break;} case 38: -#line 276 "Gmsh.y" +#line 281 "Gmsh.y" { ; break;} case 39: -#line 279 "Gmsh.y" +#line 284 "Gmsh.y" { Add_Cylinder ((int)yyvsp[-10].d, yyvsp[-6].c , (int)yyvsp[-4].d, yyvsp[-2].d); ; break;} case 40: -#line 283 "Gmsh.y" +#line 288 "Gmsh.y" { Add_Cone ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d); ; break;} case 41: -#line 287 "Gmsh.y" +#line 292 "Gmsh.y" { Add_Torus ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d); ; break;} case 42: -#line 291 "Gmsh.y" +#line 296 "Gmsh.y" { Add_Circle((int) yyvsp[-10].d, yyvsp[-6].c, (int) yyvsp[-4].d, yyvsp[-2].d); ; break;} case 43: -#line 295 "Gmsh.y" +#line 300 "Gmsh.y" { Add_Ellipsis((int) yyvsp[-12].d, yyvsp[-8].c, (int) yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d); ; break;} case 44: -#line 300 "Gmsh.y" +#line 305 "Gmsh.y" { ; break;} case 45: -#line 303 "Gmsh.y" +#line 308 "Gmsh.y" { ; break;} case 46: -#line 307 "Gmsh.y" +#line 312 "Gmsh.y" { ; break;} case 47: -#line 310 "Gmsh.y" +#line 315 "Gmsh.y" { ; break;} case 48: -#line 314 "Gmsh.y" +#line 319 "Gmsh.y" { ; break;} case 49: -#line 317 "Gmsh.y" +#line 322 "Gmsh.y" { ; break;} case 50: -#line 320 "Gmsh.y" +#line 325 "Gmsh.y" { ; break;} case 52: -#line 331 "Gmsh.y" +#line 336 "Gmsh.y" { Msg(PARSER_INFO,"Gmsh File Format Read"); ; break;} case 53: -#line 337 "Gmsh.y" +#line 342 "Gmsh.y" { return 1; ; break;} case 54: -#line 338 "Gmsh.y" +#line 343 "Gmsh.y" { return 1; ; break;} case 55: -#line 339 "Gmsh.y" +#line 344 "Gmsh.y" { return 1; ; break;} case 56: -#line 340 "Gmsh.y" +#line 345 "Gmsh.y" { return 1; ; break;} case 57: -#line 341 "Gmsh.y" +#line 346 "Gmsh.y" { return 1; ; break;} case 58: -#line 342 "Gmsh.y" +#line 347 "Gmsh.y" { return 1; ; break;} case 59: -#line 343 "Gmsh.y" +#line 348 "Gmsh.y" { return 1; ; break;} case 60: -#line 344 "Gmsh.y" +#line 349 "Gmsh.y" { return 1; ; break;} case 61: -#line 345 "Gmsh.y" +#line 350 "Gmsh.y" { return 1; ; break;} case 62: -#line 346 "Gmsh.y" +#line 351 "Gmsh.y" { return 1; ; break;} case 63: -#line 347 "Gmsh.y" +#line 352 "Gmsh.y" { return 1; ; break;} case 64: -#line 348 "Gmsh.y" +#line 353 "Gmsh.y" { yyerrok; return 1;; break;} case 65: -#line 357 "Gmsh.y" +#line 362 "Gmsh.y" { - EndView(yyvsp[-4].c,0.,0.,0.); + EndView(1, Force_ViewNumber,yyname,yyvsp[-4].c,0.,0.,0.); ; break;} case 66: -#line 361 "Gmsh.y" +#line 366 "Gmsh.y" { - EndView(yyvsp[-6].c,yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2]); + EndView(1, Force_ViewNumber,yyname,yyvsp[-6].c,yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2]); ; break;} case 67: -#line 368 "Gmsh.y" +#line 373 "Gmsh.y" { BeginView(1); ; break;} case 80: -#line 390 "Gmsh.y" -{ - AddView_ScalarSimplex(yyvsp[-25].d,yyvsp[-23].d,yyvsp[-21].d,yyvsp[-19].d,yyvsp[-17].d,yyvsp[-15].d,yyvsp[-13].d,yyvsp[-11].d,yyvsp[-9].d,yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); - ; +#line 392 "Gmsh.y" +{ List_Add(ActualView->SP, &yyvsp[0].d) ; ; break;} case 81: -#line 400 "Gmsh.y" -{ - AddView_VectorSimplex(yyvsp[-25].d,yyvsp[-23].d,yyvsp[-21].d,yyvsp[-19].d,yyvsp[-17].d,yyvsp[-15].d,yyvsp[-13].d,yyvsp[-11].d,yyvsp[-9].d,yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); - ; +#line 394 "Gmsh.y" +{ List_Add(ActualView->SP, &yyvsp[0].d) ; ; break;} case 82: -#line 410 "Gmsh.y" -{ - AddView_TensorSimplex(yyvsp[-25].d,yyvsp[-23].d,yyvsp[-21].d,yyvsp[-19].d,yyvsp[-17].d,yyvsp[-15].d,yyvsp[-13].d,yyvsp[-11].d,yyvsp[-9].d,yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); +#line 399 "Gmsh.y" +{ + List_Add(ActualView->SP, &yyvsp[-5].d); List_Add(ActualView->SP, &yyvsp[-3].d); + List_Add(ActualView->SP, &yyvsp[-1].d); ; break;} case 83: -#line 419 "Gmsh.y" +#line 404 "Gmsh.y" { - AddView_ScalarTriangle(yyvsp[-19].d,yyvsp[-17].d,yyvsp[-15].d,yyvsp[-13].d,yyvsp[-11].d,yyvsp[-9].d,yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); + ActualView->NbSP++ ; ; break;} case 84: -#line 428 "Gmsh.y" +#line 411 "Gmsh.y" +{ List_Add(ActualView->VP, &yyvsp[0].d) ; ; + break;} +case 85: +#line 413 "Gmsh.y" +{ List_Add(ActualView->VP, &yyvsp[0].d) ; ; + break;} +case 86: +#line 418 "Gmsh.y" +{ + List_Add(ActualView->VP, &yyvsp[-5].d); List_Add(ActualView->VP, &yyvsp[-3].d); + List_Add(ActualView->VP, &yyvsp[-1].d); + ; + break;} +case 87: +#line 423 "Gmsh.y" { - AddView_VectorTriangle(yyvsp[-19].d,yyvsp[-17].d,yyvsp[-15].d,yyvsp[-13].d,yyvsp[-11].d,yyvsp[-9].d,yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); + ActualView->NbVP++ ; ; break;} -case 85: +case 88: +#line 430 "Gmsh.y" +{ List_Add(ActualView->TP, &yyvsp[0].d) ; ; + break;} +case 89: +#line 432 "Gmsh.y" +{ List_Add(ActualView->TP, &yyvsp[0].d) ; ; + break;} +case 90: #line 437 "Gmsh.y" +{ + List_Add(ActualView->TP, &yyvsp[-5].d); List_Add(ActualView->TP, &yyvsp[-3].d); + List_Add(ActualView->TP, &yyvsp[-1].d); + ; + break;} +case 91: +#line 442 "Gmsh.y" { - AddView_TensorTriangle(yyvsp[-19].d,yyvsp[-17].d,yyvsp[-15].d,yyvsp[-13].d,yyvsp[-11].d,yyvsp[-9].d,yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); + ActualView->NbTP++ ; ; break;} -case 86: -#line 445 "Gmsh.y" +case 92: +#line 449 "Gmsh.y" +{ List_Add(ActualView->SL, &yyvsp[0].d) ; ; + break;} +case 93: +#line 451 "Gmsh.y" +{ List_Add(ActualView->SL, &yyvsp[0].d) ; ; + break;} +case 94: +#line 457 "Gmsh.y" +{ + List_Add(ActualView->SL, &yyvsp[-11].d); List_Add(ActualView->SL, &yyvsp[-5].d); + List_Add(ActualView->SL, &yyvsp[-9].d); List_Add(ActualView->SL, &yyvsp[-3].d); + List_Add(ActualView->SL, &yyvsp[-7].d); List_Add(ActualView->SL, &yyvsp[-1].d); + ; + break;} +case 95: +#line 463 "Gmsh.y" { - AddView_ScalarLine(yyvsp[-13].d,yyvsp[-11].d,yyvsp[-9].d,yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); + ActualView->NbSL++ ; ; break;} -case 87: -#line 453 "Gmsh.y" +case 96: +#line 470 "Gmsh.y" +{ List_Add(ActualView->VL, &yyvsp[0].d) ; ; + break;} +case 97: +#line 472 "Gmsh.y" +{ List_Add(ActualView->VL, &yyvsp[0].d) ; ; + break;} +case 98: +#line 478 "Gmsh.y" +{ + List_Add(ActualView->SL, &yyvsp[-11].d); List_Add(ActualView->SL, &yyvsp[-5].d); + List_Add(ActualView->SL, &yyvsp[-9].d); List_Add(ActualView->SL, &yyvsp[-3].d); + List_Add(ActualView->SL, &yyvsp[-7].d); List_Add(ActualView->SL, &yyvsp[-1].d); + ; + break;} +case 99: +#line 484 "Gmsh.y" { - AddView_VectorLine(yyvsp[-13].d,yyvsp[-11].d,yyvsp[-9].d,yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); + ActualView->NbVL++ ; ; break;} -case 88: -#line 461 "Gmsh.y" +case 100: +#line 491 "Gmsh.y" +{ List_Add(ActualView->TL, &yyvsp[0].d) ; ; + break;} +case 101: +#line 493 "Gmsh.y" +{ List_Add(ActualView->TL, &yyvsp[0].d) ; ; + break;} +case 102: +#line 499 "Gmsh.y" +{ + List_Add(ActualView->SL, &yyvsp[-11].d); List_Add(ActualView->SL, &yyvsp[-5].d); + List_Add(ActualView->SL, &yyvsp[-9].d); List_Add(ActualView->SL, &yyvsp[-3].d); + List_Add(ActualView->SL, &yyvsp[-7].d); List_Add(ActualView->SL, &yyvsp[-1].d); + ; + break;} +case 103: +#line 505 "Gmsh.y" { - AddView_TensorLine(yyvsp[-13].d,yyvsp[-11].d,yyvsp[-9].d,yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); + ActualView->NbTL++ ; ; break;} -case 89: -#line 468 "Gmsh.y" +case 104: +#line 512 "Gmsh.y" +{ List_Add(ActualView->ST, &yyvsp[0].d) ; ; + break;} +case 105: +#line 514 "Gmsh.y" +{ List_Add(ActualView->ST, &yyvsp[0].d) ; ; + break;} +case 106: +#line 521 "Gmsh.y" +{ + List_Add(ActualView->ST, &yyvsp[-17].d); List_Add(ActualView->ST, &yyvsp[-11].d); + List_Add(ActualView->ST, &yyvsp[-5].d); + List_Add(ActualView->ST, &yyvsp[-15].d); List_Add(ActualView->ST, &yyvsp[-9].d); + List_Add(ActualView->ST, &yyvsp[-3].d); + List_Add(ActualView->ST, &yyvsp[-13].d); List_Add(ActualView->ST, &yyvsp[-7].d); + List_Add(ActualView->ST, &yyvsp[-1].d); + ; + break;} +case 107: +#line 530 "Gmsh.y" { - AddView_ScalarPoint(yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); + ActualView->NbST++ ; ; break;} -case 90: -#line 475 "Gmsh.y" +case 108: +#line 537 "Gmsh.y" +{ List_Add(ActualView->VT, &yyvsp[0].d) ; ; + break;} +case 109: +#line 539 "Gmsh.y" +{ List_Add(ActualView->VT, &yyvsp[0].d) ; ; + break;} +case 110: +#line 546 "Gmsh.y" +{ + List_Add(ActualView->VT, &yyvsp[-17].d); List_Add(ActualView->VT, &yyvsp[-11].d); + List_Add(ActualView->VT, &yyvsp[-5].d); + List_Add(ActualView->VT, &yyvsp[-15].d); List_Add(ActualView->VT, &yyvsp[-9].d); + List_Add(ActualView->VT, &yyvsp[-3].d); + List_Add(ActualView->VT, &yyvsp[-13].d); List_Add(ActualView->VT, &yyvsp[-7].d); + List_Add(ActualView->VT, &yyvsp[-1].d); + ; + break;} +case 111: +#line 555 "Gmsh.y" { - AddView_VectorPoint(yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); + ActualView->NbVT++ ; ; break;} -case 91: -#line 482 "Gmsh.y" +case 112: +#line 562 "Gmsh.y" +{ List_Add(ActualView->TT, &yyvsp[0].d) ; ; + break;} +case 113: +#line 564 "Gmsh.y" +{ List_Add(ActualView->TT, &yyvsp[0].d) ; ; + break;} +case 114: +#line 571 "Gmsh.y" +{ + List_Add(ActualView->TT, &yyvsp[-17].d); List_Add(ActualView->TT, &yyvsp[-11].d); + List_Add(ActualView->TT, &yyvsp[-5].d); + List_Add(ActualView->TT, &yyvsp[-15].d); List_Add(ActualView->TT, &yyvsp[-9].d); + List_Add(ActualView->TT, &yyvsp[-3].d); + List_Add(ActualView->TT, &yyvsp[-13].d); List_Add(ActualView->TT, &yyvsp[-7].d); + List_Add(ActualView->TT, &yyvsp[-1].d); + ; + break;} +case 115: +#line 580 "Gmsh.y" { - AddView_TensorPoint(yyvsp[-7].d,yyvsp[-5].d,yyvsp[-3].d,yyvsp[-1].l); + ActualView->NbTT++ ; ; break;} -case 92: -#line 493 "Gmsh.y" +case 116: +#line 587 "Gmsh.y" +{ List_Add(ActualView->SS, &yyvsp[0].d) ; ; + break;} +case 117: +#line 589 "Gmsh.y" +{ List_Add(ActualView->SS, &yyvsp[0].d) ; ; + break;} +case 118: +#line 597 "Gmsh.y" +{ + List_Add(ActualView->SS, &yyvsp[-23].d); List_Add(ActualView->SS, &yyvsp[-17].d); + List_Add(ActualView->SS, &yyvsp[-11].d); List_Add(ActualView->SS, &yyvsp[-5].d); + List_Add(ActualView->SS, &yyvsp[-21].d); List_Add(ActualView->SS, &yyvsp[-15].d); + List_Add(ActualView->SS, &yyvsp[-9].d); List_Add(ActualView->SS, &yyvsp[-3].d); + List_Add(ActualView->SS, &yyvsp[-19].d); List_Add(ActualView->SS, &yyvsp[-13].d); + List_Add(ActualView->SS, &yyvsp[-7].d); List_Add(ActualView->SS, &yyvsp[-1].d); + ; + break;} +case 119: +#line 606 "Gmsh.y" +{ + ActualView->NbSS++ ; + ; + break;} +case 120: +#line 613 "Gmsh.y" +{ List_Add(ActualView->VS, &yyvsp[0].d) ; ; + break;} +case 121: +#line 615 "Gmsh.y" +{ List_Add(ActualView->VS, &yyvsp[0].d) ; ; + break;} +case 122: +#line 623 "Gmsh.y" +{ + List_Add(ActualView->VS, &yyvsp[-23].d); List_Add(ActualView->VS, &yyvsp[-17].d); + List_Add(ActualView->VS, &yyvsp[-11].d); List_Add(ActualView->VS, &yyvsp[-5].d); + List_Add(ActualView->VS, &yyvsp[-21].d); List_Add(ActualView->VS, &yyvsp[-15].d); + List_Add(ActualView->VS, &yyvsp[-9].d); List_Add(ActualView->VS, &yyvsp[-3].d); + List_Add(ActualView->VS, &yyvsp[-19].d); List_Add(ActualView->VS, &yyvsp[-13].d); + List_Add(ActualView->VS, &yyvsp[-7].d); List_Add(ActualView->VS, &yyvsp[-1].d); + ; + break;} +case 123: +#line 632 "Gmsh.y" +{ + ActualView->NbVS++ ; + ; + break;} +case 124: +#line 639 "Gmsh.y" +{ List_Add(ActualView->TS, &yyvsp[0].d) ; ; + break;} +case 125: +#line 641 "Gmsh.y" +{ List_Add(ActualView->TS, &yyvsp[0].d) ; ; + break;} +case 126: +#line 649 "Gmsh.y" +{ + List_Add(ActualView->TS, &yyvsp[-23].d); List_Add(ActualView->TS, &yyvsp[-17].d); + List_Add(ActualView->TS, &yyvsp[-11].d); List_Add(ActualView->TS, &yyvsp[-5].d); + List_Add(ActualView->TS, &yyvsp[-21].d); List_Add(ActualView->TS, &yyvsp[-15].d); + List_Add(ActualView->TS, &yyvsp[-9].d); List_Add(ActualView->TS, &yyvsp[-3].d); + List_Add(ActualView->TS, &yyvsp[-19].d); List_Add(ActualView->TS, &yyvsp[-13].d); + List_Add(ActualView->TS, &yyvsp[-7].d); List_Add(ActualView->TS, &yyvsp[-1].d); + ; + break;} +case 127: +#line 658 "Gmsh.y" +{ + ActualView->NbTS++ ; + ; + break;} +case 128: +#line 671 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c; TheSymbol.val = yyvsp[-1].d; List_Replace(Symbol_L,&TheSymbol,CompareSymbols); ; break;} -case 93: -#line 510 "Gmsh.y" +case 129: +#line 688 "Gmsh.y" { Cdbpts101((int)yyvsp[-4].d,yyvsp[-1].v[0],yyvsp[-1].v[1],yyvsp[-1].v[2],yyvsp[-1].v[3],yyvsp[-1].v[4]); yyval.s.Type = MSH_POINT; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 94: -#line 517 "Gmsh.y" +case 130: +#line 695 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_POINT; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 95: -#line 523 "Gmsh.y" +case 131: +#line 701 "Gmsh.y" { Vertex *v; Attractor *a; @@ -2360,8 +2674,8 @@ case 95: } ; break;} -case 96: -#line 542 "Gmsh.y" +case 132: +#line 720 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ List_Read(yyvsp[-3].l,i,&d); @@ -2373,31 +2687,31 @@ case 96: } ; break;} -case 97: -#line 553 "Gmsh.y" +case 133: +#line 731 "Gmsh.y" { yyval.s.Type = MSH_POINT; yyval.s.Num = (int)yyvsp[-2].d; ; break;} -case 98: -#line 561 "Gmsh.y" +case 134: +#line 739 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_LINE,1,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_LINE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 99: -#line 567 "Gmsh.y" +case 135: +#line 745 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_SPLN,3,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_SPLN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 100: -#line 573 "Gmsh.y" +case 136: +#line 751 "Gmsh.y" { Curve *c; Attractor *a; @@ -2417,16 +2731,16 @@ case 100: } ; break;} -case 101: -#line 592 "Gmsh.y" +case 137: +#line 770 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_CIRC,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_CIRC ; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 102: -#line 598 "Gmsh.y" +case 138: +#line 776 "Gmsh.y" { List_T *temp; int i,j; @@ -2443,40 +2757,40 @@ case 102: yyval.s.Num = (int)yyvsp[-6].d; ; break;} -case 103: -#line 615 "Gmsh.y" +case 139: +#line 793 "Gmsh.y" { Cdbseg101((int)yyvsp[-14].d,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,yyvsp[-10].d,yyvsp[-8].d,yyvsp[-6].c,yyvsp[-4].c,yyvsp[-2].c); yyval.s.Type = MSH_SEGM_PARAMETRIC ; yyval.s.Num = (int)yyvsp[-14].d; ; break;} -case 104: -#line 621 "Gmsh.y" +case 140: +#line 799 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_ELLI,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_ELLI ; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 105: -#line 627 "Gmsh.y" +case 141: +#line 805 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_LINE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 106: -#line 633 "Gmsh.y" +case 142: +#line 811 "Gmsh.y" { yyval.s.Type = MSH_SEGM_LOOP; Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 107: -#line 639 "Gmsh.y" +case 143: +#line 817 "Gmsh.y" { yyval.s.Num = (int)yyvsp[-2].d; Curve *c = FindCurve(yyval.s.Num,THEM); @@ -2486,22 +2800,24 @@ case 107: yyval.s.Type = c->Typ; ; break;} -case 108: -#line 648 "Gmsh.y" +case 144: +#line 826 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BSPLN,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_BSPLN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 109: -#line 654 "Gmsh.y" +case 145: +#line 832 "Gmsh.y" { List_T *Temp; int i; double d; - if(List_Nbr(yyvsp[-5].l) + (int)yyvsp[-1].d + 1 != List_Nbr(yyvsp[-3].l)){ - yyerror("wrong nurbs curve definition (deg + 1 + nbpts != nbknots)"); + if((int)yyvsp[-1].d + 1 + List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-3].l)){ + vyyerror("Wrong Definition of Nurbs Curve %d: " + "[Degree]%d + 1 + [NbPts]%d != [NbKnots]%d", + (int)yyvsp[-8].d, (int)yyvsp[-1].d, List_Nbr(yyvsp[-5].l), List_Nbr(yyvsp[-3].l)); } Temp = List_Create(List_Nbr(yyvsp[-5].l),1,sizeof(int)); for(i=0;i<List_Nbr(yyvsp[-5].l);i++) { @@ -2513,16 +2829,16 @@ case 109: List_Delete(Temp); ; break;} -case 110: -#line 674 "Gmsh.y" +case 146: +#line 854 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_SURF_PLAN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 111: -#line 680 "Gmsh.y" +case 147: +#line 860 "Gmsh.y" { Surface *s,*support; support = FindSurface((int)yyvsp[-2].d,THEM); @@ -2542,8 +2858,8 @@ case 111: } ; break;} -case 112: -#line 699 "Gmsh.y" +case 148: +#line 879 "Gmsh.y" { List_Read(yyvsp[-1].l,0,&d); i = (int)d; @@ -2557,132 +2873,134 @@ case 112: else if(j==3) yyval.s.Type = MSH_SURF_TRIC; else - vyyerror("Ruled surface %d has not 3 or 4 borders", yyvsp[-4].d); + vyyerror("Wrong Definition of Ruled Surface %d: " + "%d Borders Instead of 3 or 4", + (int)yyvsp[-4].d, j); Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Num = (int)yyvsp[-4].d; } ; break;} -case 113: -#line 720 "Gmsh.y" +case 149: +#line 902 "Gmsh.y" { CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l); yyval.s.Type = MSH_SURF_NURBS; yyval.s.Num = (int)yyvsp[-16].d; ; break;} -case 114: -#line 728 "Gmsh.y" +case 150: +#line 910 "Gmsh.y" { CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l); ; break;} -case 115: -#line 732 "Gmsh.y" +case 151: +#line 914 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_SURFACE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 116: -#line 738 "Gmsh.y" +case 152: +#line 920 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_SURF_LOOP; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 117: -#line 744 "Gmsh.y" +case 153: +#line 926 "Gmsh.y" { yyval.s.Num = (int)yyvsp[-2].d; Surface *s = FindSurface(yyval.s.Num,THEM); if(!s) - vyyerror("Unkown Surface %d", yyval.s.Num); + vyyerror("Unknown Surface %d", yyval.s.Num); else yyval.s.Type = s->Typ; ; break;} -case 118: -#line 756 "Gmsh.y" +case 154: +#line 938 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 119: -#line 762 "Gmsh.y" +case 155: +#line 944 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 120: -#line 768 "Gmsh.y" +case 156: +#line 950 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 121: -#line 781 "Gmsh.y" +case 157: +#line 963 "Gmsh.y" { TranslateShapes (yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-1].l,1); yyval.l = yyvsp[-1].l; ; break;} -case 122: -#line 786 "Gmsh.y" +case 158: +#line 968 "Gmsh.y" { RotateShapes(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].d,yyvsp[-1].l); yyval.l = yyvsp[-1].l; ; break;} -case 123: -#line 791 "Gmsh.y" +case 159: +#line 973 "Gmsh.y" { SymmetryShapes(yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-4].v[3],yyvsp[-1].l,1); yyval.l = yyvsp[-1].l; ; break;} -case 124: -#line 796 "Gmsh.y" +case 160: +#line 978 "Gmsh.y" { DilatShapes(yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l,1); yyval.l = yyvsp[-1].l; ; break;} -case 125: -#line 803 "Gmsh.y" +case 161: +#line 985 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 126: -#line 804 "Gmsh.y" +case 162: +#line 986 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 127: -#line 805 "Gmsh.y" +case 163: +#line 987 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 128: -#line 810 "Gmsh.y" +case 164: +#line 992 "Gmsh.y" { yyval.l = List_Create(3,3,sizeof(Shape)); ; break;} -case 129: -#line 814 "Gmsh.y" +case 165: +#line 996 "Gmsh.y" { List_Add(yyval.l,&yyvsp[0].s); yyval.l = yyvsp[-1].l; ; break;} -case 130: -#line 826 "Gmsh.y" +case 166: +#line 1008 "Gmsh.y" { yyval.l = List_Create(3,3,sizeof(Shape)); for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -2693,8 +3011,8 @@ case 130: } ; break;} -case 131: -#line 844 "Gmsh.y" +case 167: +#line 1026 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ List_Read (yyvsp[-1].l,i,&TheShape); @@ -2702,8 +3020,8 @@ case 131: } ; break;} -case 132: -#line 859 "Gmsh.y" +case 168: +#line 1041 "Gmsh.y" { yyinTab[RecursionLevel++] = yyin; strcpy(tmpstring, ThePathForIncludes); @@ -2721,88 +3039,88 @@ case 132: yylineno = yylinenoTab[RecursionLevel]; } else{ - vyyerror("Unknown file: %s", yyvsp[-1].c) ; + vyyerror("Unknown File '%s'", yyvsp[-1].c) ; yyin = yyinTab[--RecursionLevel]; } ; break;} -case 133: -#line 890 "Gmsh.y" +case 169: +#line 1072 "Gmsh.y" { Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL); ; break;} -case 134: -#line 894 "Gmsh.y" +case 170: +#line 1076 "Gmsh.y" { Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL); ; break;} -case 135: -#line 898 "Gmsh.y" +case 171: +#line 1080 "Gmsh.y" { Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,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,0,NULL); ; break;} -case 136: -#line 902 "Gmsh.y" +case 172: +#line 1084 "Gmsh.y" { Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,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,0,NULL); ; break;} -case 137: -#line 906 "Gmsh.y" +case 173: +#line 1088 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(0,(int)yyvsp[-8].d,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,NULL); ; break;} -case 138: -#line 912 "Gmsh.y" +case 174: +#line 1094 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,&pc,&prc,NULL); ; break;} -case 139: -#line 917 "Gmsh.y" +case 175: +#line 1099 "Gmsh.y" { Extrude_ProtudeCurve(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL); ; break;} -case 140: -#line 921 "Gmsh.y" +case 176: +#line 1103 "Gmsh.y" { Extrude_ProtudeCurve(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,NULL); ; break;} -case 141: -#line 925 "Gmsh.y" +case 177: +#line 1107 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(1,(int)yyvsp[-7].d,yyvsp[-5].v[0],yyvsp[-5].v[1],yyvsp[-5].v[2],0.,0.,0.,0.,vol,&extr); ; break;} -case 142: -#line 931 "Gmsh.y" +case 178: +#line 1113 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(0,(int)yyvsp[-11].d,yyvsp[-9].v[0],yyvsp[-9].v[1],yyvsp[-9].v[2],yyvsp[-7].v[0],yyvsp[-7].v[1],yyvsp[-7].v[2],yyvsp[-5].d,vol,&extr); ; break;} -case 143: -#line 939 "Gmsh.y" +case 179: +#line 1121 "Gmsh.y" { ; break;} -case 144: -#line 942 "Gmsh.y" +case 180: +#line 1124 "Gmsh.y" { ; break;} -case 145: -#line 948 "Gmsh.y" +case 181: +#line 1130 "Gmsh.y" { double d; int j; @@ -2820,14 +3138,14 @@ case 145: } ; break;} -case 146: -#line 965 "Gmsh.y" +case 182: +#line 1147 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} -case 147: -#line 976 "Gmsh.y" +case 183: +#line 1158 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -2845,8 +3163,8 @@ case 147: } ; break;} -case 148: -#line 993 "Gmsh.y" +case 184: +#line 1175 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -2864,8 +3182,8 @@ case 148: } ; break;} -case 149: -#line 1010 "Gmsh.y" +case 185: +#line 1192 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -2883,8 +3201,8 @@ case 149: } ; break;} -case 150: -#line 1027 "Gmsh.y" +case 186: +#line 1209 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -2902,8 +3220,8 @@ case 150: } ; break;} -case 151: -#line 1044 "Gmsh.y" +case 187: +#line 1226 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -2912,7 +3230,8 @@ case 151: s->Method = TRANSFINI; k = List_Nbr(yyvsp[-1].l); if(k!=3 && k!=4){ - vyyerror("Bad Number of Points for Transfinite Surface %d", yyvsp[-4].d) ; + vyyerror("Wrong Definition of Transfinite Surface %d: " + "%d Points Instead of 3 or 4" , yyvsp[-4].d, k) ; } else{ for(i=0;i<k;i++){ @@ -2924,8 +3243,8 @@ case 151: } ; break;} -case 152: -#line 1064 "Gmsh.y" +case 188: +#line 1247 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -2934,7 +3253,8 @@ case 152: s->Method = ELLIPTIC; k = List_Nbr(yyvsp[-1].l); if(k != 4) - vyyerror("Bad Number of Points for Elliptic Surface %d", yyvsp[-4].d) ; + vyyerror("Wrong Definition of Elliptic Surface %d: " + "%d Points Instead of 4" , yyvsp[-4].d, k) ; else{ for(i=0;i<k;i++){ List_Read(yyvsp[-1].l,i,&d); @@ -2945,8 +3265,8 @@ case 152: } ; break;} -case 153: -#line 1083 "Gmsh.y" +case 189: +#line 1267 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d,THEM); if(!v) @@ -2955,7 +3275,8 @@ case 153: v->Method = TRANSFINI; k = List_Nbr(yyvsp[-1].l); if(k!=6 && k!=8) - vyyerror("Bad Number of Points for Transfinite Volume %d", yyvsp[-4].d) ; + vyyerror("Wrong Definition of Transfinite Volume %d: " + "%d Points Instead of 6 or 8" , yyvsp[-4].d, k) ; else{ for(i=0;i<k;i++){ List_Read(yyvsp[-1].l,i,&d); @@ -2966,8 +3287,8 @@ case 153: } ; break;} -case 154: -#line 1102 "Gmsh.y" +case 190: +#line 1287 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -2983,8 +3304,8 @@ case 154: } ; break;} -case 155: -#line 1117 "Gmsh.y" +case 191: +#line 1302 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -3000,66 +3321,60 @@ case 155: } ; break;} -case 156: -#line 1132 "Gmsh.y" -{ - Msg(PARSER_ERROR, "Physical Associations do not exist anymore!"); - ; - break;} -case 157: -#line 1144 "Gmsh.y" +case 192: +#line 1325 "Gmsh.y" { Coherence_PS(); ; break;} -case 161: -#line 1164 "Gmsh.y" +case 196: +#line 1345 "Gmsh.y" { ColorField = ColorGeneral; ; break;} -case 163: -#line 1167 "Gmsh.y" +case 198: +#line 1348 "Gmsh.y" { ColorField = ColorGeometry; ; break;} -case 165: -#line 1170 "Gmsh.y" +case 200: +#line 1351 "Gmsh.y" { ColorField = ColorMesh; ; break;} -case 169: -#line 1181 "Gmsh.y" +case 204: +#line 1362 "Gmsh.y" { i = Get_ColorForString(ColorString, -1, yyvsp[-1].c, &flag); - if(flag) vyyerror("Unknown Color: %s", yyvsp[-1].c); + if(flag) vyyerror("Unknown Color '%s'", yyvsp[-1].c); Get_ColorPointerForString(ColorField, yyvsp[-3].c, &flag, &ptr); if(flag) - vyyerror("Unknown Color Field: %s", yyvsp[-3].c); + vyyerror("Unknown Color Field '%s'", yyvsp[-3].c); else *ptr = i ; ; break;} -case 170: -#line 1191 "Gmsh.y" +case 205: +#line 1372 "Gmsh.y" { i = Get_ColorForString(ColorString, (int)yyvsp[-2].d, yyvsp[-4].c, &flag); - if(flag) vyyerror("Unknown Color: %s", yyvsp[-4].c); + if(flag) vyyerror("Unknown Color '%s'", yyvsp[-4].c); Get_ColorPointerForString(ColorField, yyvsp[-7].c, &flag, &ptr); if(flag) - vyyerror("Unknown Color Field: %s", yyvsp[-7].c); + vyyerror("Unknown Color Field '%s'", yyvsp[-7].c); else *ptr = i ; ; break;} -case 171: -#line 1201 "Gmsh.y" +case 206: +#line 1382 "Gmsh.y" { Get_ColorPointerForString(ColorField, yyvsp[-3].c, &flag, &ptr); if(flag) - vyyerror("Unknown Color Field: %s", yyvsp[-1].v); + vyyerror("Unknown Color Field '%s'", yyvsp[-1].v); else *ptr = PACK_COLOR((int)yyvsp[-1].v[0], (int)yyvsp[-1].v[1], (int)yyvsp[-1].v[2], (int)yyvsp[-1].v[3]); ; break;} -case 172: -#line 1212 "Gmsh.y" +case 207: +#line 1393 "Gmsh.y" { yyval.v[0]=yyvsp[-7].d; yyval.v[1]=yyvsp[-5].d; @@ -3067,8 +3382,8 @@ case 172: yyval.v[3]=yyvsp[-1].d; ; break;} -case 173: -#line 1219 "Gmsh.y" +case 208: +#line 1400 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; @@ -3076,171 +3391,171 @@ case 173: yyval.v[3]=255.; ; break;} -case 174: -#line 1295 "Gmsh.y" +case 209: +#line 1476 "Gmsh.y" {yyval.i = 1;; break;} -case 175: -#line 1296 "Gmsh.y" +case 210: +#line 1477 "Gmsh.y" {yyval.i = 0;; break;} -case 176: -#line 1297 "Gmsh.y" +case 211: +#line 1478 "Gmsh.y" {yyval.i = -1;; break;} -case 177: -#line 1298 "Gmsh.y" +case 212: +#line 1479 "Gmsh.y" {yyval.i = -1;; break;} -case 178: -#line 1299 "Gmsh.y" +case 213: +#line 1480 "Gmsh.y" {yyval.i = -1;; break;} -case 179: -#line 1303 "Gmsh.y" +case 214: +#line 1484 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 180: -#line 1304 "Gmsh.y" +case 215: +#line 1485 "Gmsh.y" { yyval.d = yyvsp[-1].d; ; break;} -case 181: -#line 1305 "Gmsh.y" +case 216: +#line 1486 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d; ; break;} -case 182: -#line 1306 "Gmsh.y" +case 217: +#line 1487 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d; ; break;} -case 183: -#line 1307 "Gmsh.y" +case 218: +#line 1488 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d; ; break;} -case 184: -#line 1308 "Gmsh.y" +case 219: +#line 1489 "Gmsh.y" { yyval.d = yyvsp[-2].d / yyvsp[0].d; ; break;} -case 185: -#line 1309 "Gmsh.y" +case 220: +#line 1490 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ; break;} -case 186: -#line 1310 "Gmsh.y" +case 221: +#line 1491 "Gmsh.y" { yyval.d = - yyvsp[0].d; ; break;} -case 187: -#line 1311 "Gmsh.y" +case 222: +#line 1492 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 188: -#line 1312 "Gmsh.y" +case 223: +#line 1493 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 189: -#line 1313 "Gmsh.y" +case 224: +#line 1494 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 190: -#line 1314 "Gmsh.y" +case 225: +#line 1495 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 191: -#line 1315 "Gmsh.y" +case 226: +#line 1496 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 192: -#line 1316 "Gmsh.y" +case 227: +#line 1497 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 193: -#line 1317 "Gmsh.y" +case 228: +#line 1498 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 194: -#line 1318 "Gmsh.y" +case 229: +#line 1499 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 195: -#line 1319 "Gmsh.y" +case 230: +#line 1500 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 196: -#line 1320 "Gmsh.y" +case 231: +#line 1501 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 197: -#line 1321 "Gmsh.y" +case 232: +#line 1502 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 198: -#line 1322 "Gmsh.y" +case 233: +#line 1503 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 199: -#line 1323 "Gmsh.y" +case 234: +#line 1504 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 200: -#line 1324 "Gmsh.y" +case 235: +#line 1505 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 201: -#line 1325 "Gmsh.y" +case 236: +#line 1506 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 202: -#line 1326 "Gmsh.y" +case 237: +#line 1507 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 203: -#line 1327 "Gmsh.y" +case 238: +#line 1508 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 204: -#line 1328 "Gmsh.y" +case 239: +#line 1509 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 205: -#line 1329 "Gmsh.y" +case 240: +#line 1510 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 206: -#line 1330 "Gmsh.y" +case 241: +#line 1511 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 207: -#line 1331 "Gmsh.y" +case 242: +#line 1512 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 208: -#line 1335 "Gmsh.y" +case 243: +#line 1516 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 209: -#line 1336 "Gmsh.y" +case 244: +#line 1517 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} -case 210: -#line 1338 "Gmsh.y" +case 245: +#line 1519 "Gmsh.y" { TheSymbol.Name = yyvsp[0].c ; if (!List_Query(Symbol_L, &TheSymbol, CompareSymbols)) { - vyyerror("Unknown variable: %s", yyvsp[0].c) ; yyval.d = 0. ; + vyyerror("Unknown variable '%s'", yyvsp[0].c) ; yyval.d = 0. ; } else yyval.d = TheSymbol.val ; Free(yyvsp[0].c); ; break;} -case 211: -#line 1350 "Gmsh.y" +case 246: +#line 1531 "Gmsh.y" { ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; for(d=yyvsp[-2].d ; (yyvsp[-2].d<yyvsp[0].d)?(d<=yyvsp[0].d):(d>=yyvsp[0].d) ; (yyvsp[-2].d<yyvsp[0].d)?(d+=1.):(d-=1.)) List_Add(ListOfDouble2_L, &d) ; ; break;} -case 212: -#line 1356 "Gmsh.y" +case 247: +#line 1537 "Gmsh.y" { ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; if(!yyvsp[-2].d || (yyvsp[-5].d<yyvsp[0].d && yyvsp[-2].d<0) || (yyvsp[-5].d>yyvsp[0].d && yyvsp[-2].d>0)){ @@ -3252,8 +3567,8 @@ case 212: List_Add(ListOfDouble2_L, &d) ; ; break;} -case 213: -#line 1370 "Gmsh.y" +case 248: +#line 1551 "Gmsh.y" { yyval.v[0]=yyvsp[-9].d; yyval.v[1]=yyvsp[-7].d; @@ -3262,8 +3577,8 @@ case 213: yyval.v[4]=yyvsp[-1].d; ; break;} -case 214: -#line 1378 "Gmsh.y" +case 249: +#line 1559 "Gmsh.y" { yyval.v[0]=yyvsp[-7].d; yyval.v[1]=yyvsp[-5].d; @@ -3272,8 +3587,8 @@ case 214: yyval.v[4]=1.0; ; break;} -case 215: -#line 1386 "Gmsh.y" +case 250: +#line 1567 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; @@ -3282,8 +3597,8 @@ case 215: yyval.v[4]=1.0; ; break;} -case 216: -#line 1394 "Gmsh.y" +case 251: +#line 1575 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; @@ -3292,84 +3607,84 @@ case 216: yyval.v[4]=1.0; ; break;} -case 217: -#line 1405 "Gmsh.y" +case 252: +#line 1586 "Gmsh.y" { ; break;} -case 218: -#line 1408 "Gmsh.y" +case 253: +#line 1589 "Gmsh.y" { ; break;} -case 219: -#line 1414 "Gmsh.y" +case 254: +#line 1595 "Gmsh.y" { ; break;} -case 220: -#line 1417 "Gmsh.y" +case 255: +#line 1598 "Gmsh.y" { ; break;} -case 221: -#line 1423 "Gmsh.y" +case 256: +#line 1604 "Gmsh.y" { ; break;} -case 222: -#line 1426 "Gmsh.y" +case 257: +#line 1607 "Gmsh.y" { yyval.l=ListOfListOfDouble_L; ; break;} -case 223: -#line 1430 "Gmsh.y" +case 258: +#line 1611 "Gmsh.y" { yyval.l=ListOfListOfDouble_L; ; break;} -case 224: -#line 1437 "Gmsh.y" +case 259: +#line 1618 "Gmsh.y" { ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ; List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ; ; break;} -case 225: -#line 1442 "Gmsh.y" +case 260: +#line 1623 "Gmsh.y" { List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ; ; break;} -case 226: -#line 1449 "Gmsh.y" +case 261: +#line 1630 "Gmsh.y" { ; break;} -case 227: -#line 1452 "Gmsh.y" +case 262: +#line 1633 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; yyval.l=ListOfDouble_L; ; break;} -case 228: -#line 1458 "Gmsh.y" +case 263: +#line 1639 "Gmsh.y" { yyval.l=ListOfDouble_L; ; break;} -case 229: -#line 1472 "Gmsh.y" +case 264: +#line 1653 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; ; break;} -case 230: -#line 1477 "Gmsh.y" +case 265: +#line 1658 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){ @@ -3379,14 +3694,14 @@ case 230: List_Delete(ListOfDouble2_L); ; break;} -case 231: -#line 1486 "Gmsh.y" +case 266: +#line 1667 "Gmsh.y" { List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; ; break;} -case 232: -#line 1490 "Gmsh.y" +case 267: +#line 1671 "Gmsh.y" { for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){ List_Read(ListOfDouble2_L, i, &d) ; @@ -3397,7 +3712,7 @@ case 232: break;} } /* the action file gets copied in in place of this dollarsign */ -#line 498 "/usr/local/share/bison.simple" +#line 543 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -3592,8 +3907,32 @@ yyerrhandle: yystate = yyn; goto yynewstate; + + yyacceptlab: + /* YYACCEPT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 0; + + yyabortlab: + /* YYABORT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 1; } -#line 1500 "Gmsh.y" +#line 1681 "Gmsh.y" void InitSymbols(void){ diff --git a/Parser/Gmsh.tab.cpp.h b/Parser/Gmsh.tab.cpp.h index 180d686def..6856532645 100644 --- a/Parser/Gmsh.tab.cpp.h +++ b/Parser/Gmsh.tab.cpp.h @@ -6,145 +6,145 @@ typedef union { Shape s; List_T *l; } YYSTYPE; -#define tDOUBLE 258 -#define tSTRING 259 -#define tBIGSTR 260 -#define tEND 261 -#define tAFFECT 262 -#define tDOTS 263 -#define tPi 264 -#define tExp 265 -#define tLog 266 -#define tLog10 267 -#define tSqrt 268 -#define tSin 269 -#define tAsin 270 -#define tCos 271 -#define tAcos 272 -#define tTan 273 -#define tAtan 274 -#define tAtan2 275 -#define tSinh 276 -#define tCosh 277 -#define tTanh 278 -#define tFabs 279 -#define tFloor 280 -#define tCeil 281 -#define tFmod 282 -#define tModulo 283 -#define tHypot 284 -#define tPoint 285 -#define tCircle 286 -#define tEllipsis 287 -#define tLine 288 -#define tSurface 289 -#define tSpline 290 -#define tVolume 291 -#define tCharacteristic 292 -#define tLength 293 -#define tParametric 294 -#define tElliptic 295 -#define tPlane 296 -#define tRuled 297 -#define tTransfinite 298 -#define tComplex 299 -#define tPhysical 300 -#define tUsing 301 -#define tPower 302 -#define tBump 303 -#define tProgression 304 -#define tAssociation 305 -#define tRotate 306 -#define tTranslate 307 -#define tSymmetry 308 -#define tDilate 309 -#define tExtrude 310 -#define tDuplicata 311 -#define tLoop 312 -#define tInclude 313 -#define tRecombine 314 -#define tDelete 315 -#define tCoherence 316 -#define tView 317 -#define tOffset 318 -#define tAttractor 319 -#define tLayers 320 -#define tScalarSimplex 321 -#define tVectorSimplex 322 -#define tTensorSimplex 323 -#define tScalarTriangle 324 -#define tVectorTriangle 325 -#define tTensorTriangle 326 -#define tScalarLine 327 -#define tVectorLine 328 -#define tTensorLine 329 -#define tScalarPoint 330 -#define tVectorPoint 331 -#define tTensorPoint 332 -#define tBSpline 333 -#define tNurbs 334 -#define tOrder 335 -#define tWith 336 -#define tBounds 337 -#define tKnots 338 -#define tColor 339 -#define tGeneral 340 -#define tGeometry 341 -#define tMesh 342 -#define tB_SPLINE_SURFACE_WITH_KNOTS 343 -#define tB_SPLINE_CURVE_WITH_KNOTS 344 -#define tCARTESIAN_POINT 345 -#define tTRUE 346 -#define tFALSE 347 -#define tUNSPECIFIED 348 -#define tU 349 -#define tV 350 -#define tEDGE_CURVE 351 -#define tVERTEX_POINT 352 -#define tORIENTED_EDGE 353 -#define tPLANE 354 -#define tFACE_OUTER_BOUND 355 -#define tEDGE_LOOP 356 -#define tADVANCED_FACE 357 -#define tVECTOR 358 -#define tDIRECTION 359 -#define tAXIS2_PLACEMENT_3D 360 -#define tISO 361 -#define tENDISO 362 -#define tENDSEC 363 -#define tDATA 364 -#define tHEADER 365 -#define tFILE_DESCRIPTION 366 -#define tFILE_SCHEMA 367 -#define tFILE_NAME 368 -#define tMANIFOLD_SOLID_BREP 369 -#define tCLOSED_SHELL 370 -#define tADVANCED_BREP_SHAPE_REPRESENTATION 371 -#define tFACE_BOUND 372 -#define tCYLINDRICAL_SURFACE 373 -#define tCONICAL_SURFACE 374 -#define tCIRCLE 375 -#define tTRIMMED_CURVE 376 -#define tGEOMETRIC_SET 377 -#define tCOMPOSITE_CURVE_SEGMENT 378 -#define tCONTINUOUS 379 -#define tCOMPOSITE_CURVE 380 -#define tTOROIDAL_SURFACE 381 -#define tPRODUCT_DEFINITION 382 -#define tPRODUCT_DEFINITION_SHAPE 383 -#define tSHAPE_DEFINITION_REPRESENTATION 384 -#define tELLIPSE 385 -#define tTrimmed 386 -#define tSolid 387 -#define tEndSolid 388 -#define tVertex 389 -#define tFacet 390 -#define tNormal 391 -#define tOuter 392 -#define tLoopSTL 393 -#define tEndLoop 394 -#define tEndFacet 395 -#define UMINUS 396 +#define tDOUBLE 257 +#define tSTRING 258 +#define tBIGSTR 259 +#define tEND 260 +#define tAFFECT 261 +#define tDOTS 262 +#define tPi 263 +#define tExp 264 +#define tLog 265 +#define tLog10 266 +#define tSqrt 267 +#define tSin 268 +#define tAsin 269 +#define tCos 270 +#define tAcos 271 +#define tTan 272 +#define tAtan 273 +#define tAtan2 274 +#define tSinh 275 +#define tCosh 276 +#define tTanh 277 +#define tFabs 278 +#define tFloor 279 +#define tCeil 280 +#define tFmod 281 +#define tModulo 282 +#define tHypot 283 +#define tPoint 284 +#define tCircle 285 +#define tEllipsis 286 +#define tLine 287 +#define tSurface 288 +#define tSpline 289 +#define tVolume 290 +#define tCharacteristic 291 +#define tLength 292 +#define tParametric 293 +#define tElliptic 294 +#define tPlane 295 +#define tRuled 296 +#define tTransfinite 297 +#define tComplex 298 +#define tPhysical 299 +#define tUsing 300 +#define tPower 301 +#define tBump 302 +#define tProgression 303 +#define tAssociation 304 +#define tRotate 305 +#define tTranslate 306 +#define tSymmetry 307 +#define tDilate 308 +#define tExtrude 309 +#define tDuplicata 310 +#define tLoop 311 +#define tInclude 312 +#define tRecombine 313 +#define tDelete 314 +#define tCoherence 315 +#define tView 316 +#define tOffset 317 +#define tAttractor 318 +#define tLayers 319 +#define tScalarTetrahedron 320 +#define tVectorTetrahedron 321 +#define tTensorTetrahedron 322 +#define tScalarTriangle 323 +#define tVectorTriangle 324 +#define tTensorTriangle 325 +#define tScalarLine 326 +#define tVectorLine 327 +#define tTensorLine 328 +#define tScalarPoint 329 +#define tVectorPoint 330 +#define tTensorPoint 331 +#define tBSpline 332 +#define tNurbs 333 +#define tOrder 334 +#define tWith 335 +#define tBounds 336 +#define tKnots 337 +#define tColor 338 +#define tGeneral 339 +#define tGeometry 340 +#define tMesh 341 +#define tB_SPLINE_SURFACE_WITH_KNOTS 342 +#define tB_SPLINE_CURVE_WITH_KNOTS 343 +#define tCARTESIAN_POINT 344 +#define tTRUE 345 +#define tFALSE 346 +#define tUNSPECIFIED 347 +#define tU 348 +#define tV 349 +#define tEDGE_CURVE 350 +#define tVERTEX_POINT 351 +#define tORIENTED_EDGE 352 +#define tPLANE 353 +#define tFACE_OUTER_BOUND 354 +#define tEDGE_LOOP 355 +#define tADVANCED_FACE 356 +#define tVECTOR 357 +#define tDIRECTION 358 +#define tAXIS2_PLACEMENT_3D 359 +#define tISO 360 +#define tENDISO 361 +#define tENDSEC 362 +#define tDATA 363 +#define tHEADER 364 +#define tFILE_DESCRIPTION 365 +#define tFILE_SCHEMA 366 +#define tFILE_NAME 367 +#define tMANIFOLD_SOLID_BREP 368 +#define tCLOSED_SHELL 369 +#define tADVANCED_BREP_SHAPE_REPRESENTATION 370 +#define tFACE_BOUND 371 +#define tCYLINDRICAL_SURFACE 372 +#define tCONICAL_SURFACE 373 +#define tCIRCLE 374 +#define tTRIMMED_CURVE 375 +#define tGEOMETRIC_SET 376 +#define tCOMPOSITE_CURVE_SEGMENT 377 +#define tCONTINUOUS 378 +#define tCOMPOSITE_CURVE 379 +#define tTOROIDAL_SURFACE 380 +#define tPRODUCT_DEFINITION 381 +#define tPRODUCT_DEFINITION_SHAPE 382 +#define tSHAPE_DEFINITION_REPRESENTATION 383 +#define tELLIPSE 384 +#define tTrimmed 385 +#define tSolid 386 +#define tEndSolid 387 +#define tVertex 388 +#define tFacet 389 +#define tNormal 390 +#define tOuter 391 +#define tLoopSTL 392 +#define tEndLoop 393 +#define tEndFacet 394 +#define UMINUS 395 extern YYSTYPE yylval; diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 47b0e6b6b1..b0e980d7fa 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,4 +1,4 @@ -%{ /* $Id: Gmsh.y,v 1.6 2000-11-24 10:21:24 geuzaine Exp $ */ +%{ /* $Id: Gmsh.y,v 1.7 2000-11-25 15:26:11 geuzaine Exp $ */ #include <stdarg.h> @@ -15,28 +15,31 @@ #include "Colors.h" #include "Parser.h" -#ifdef __DECCXX +#ifdef __DECCXX // bug in bison #include <alloca.h> #endif -extern Mesh *THEM; -extern char ThePathForIncludes[NAME_STR_L]; - -FILE *yyinTab[MAX_OPEN_FILES]; -int yylinenoTab[MAX_OPEN_FILES]; -char yynameTab[MAX_OPEN_FILES][NAME_STR_L]; -char tmpstring[NAME_STR_L]; -Symbol TheSymbol; -Surface *STL_Surf; -Shape TheShape; -unsigned int *ptr ; -int i,j,k,flag,RecursionLevel=0,Loop[4]; -double d; -ExtrudeParams extr; +int Force_ViewNumber = 0 ; List_T *Symbol_L; -List_T *ListOfDouble_L,*ListOfDouble2_L; -List_T *ListOfListOfDouble_L; -StringXPointer *ColorField ; + +extern Mesh *THEM; +extern Post_View *ActualView; +extern char ThePathForIncludes[NAME_STR_L]; + +static FILE *yyinTab[MAX_OPEN_FILES]; +static int yylinenoTab[MAX_OPEN_FILES]; +static char yynameTab[MAX_OPEN_FILES][NAME_STR_L]; +static char tmpstring[NAME_STR_L]; +static Symbol TheSymbol; +static Surface *STL_Surf; +static Shape TheShape; +static unsigned int *ptr ; +static int i,j,k,flag,RecursionLevel=0; +static double d; +static ExtrudeParams extr; +static StringXPointer *ColorField ; +static List_T *ListOfDouble_L,*ListOfDouble2_L; +static List_T *ListOfListOfDouble_L; void yyerror (char *s); void vyyerror (char *fmt, ...); @@ -61,8 +64,8 @@ void Get_ColorPointerForString(StringXPointer SXP[], char * string, %token tEND tAFFECT tDOTS tPi %token tExp tLog tLog10 tSqrt tSin tAsin tCos tAcos tTan -%token tAtan tAtan2 tSinh tCosh tTanh tFabs tFloor tCeil -%token tFmod tModulo tHypot +%token tAtan tAtan2 tSinh tCosh tTanh tFabs tFloor tCeil +%token tFmod tModulo tHypot %token tPoint tCircle tEllipsis tLine tSurface tSpline tVolume %token tCharacteristic tLength tParametric tElliptic %token tPlane tRuled tTransfinite tComplex tPhysical @@ -70,7 +73,7 @@ void Get_ColorPointerForString(StringXPointer SXP[], char * string, %token tRotate tTranslate tSymmetry tDilate tExtrude tDuplicata %token tLoop tInclude tRecombine tDelete tCoherence %token tView tOffset tAttractor tLayers -%token tScalarSimplex tVectorSimplex tTensorSimplex +%token tScalarTetrahedron tVectorTetrahedron tTensorTetrahedron %token tScalarTriangle tVectorTriangle tTensorTriangle %token tScalarLine tVectorLine tTensorLine %token tScalarPoint tVectorPoint tTensorPoint @@ -91,10 +94,10 @@ void Get_ColorPointerForString(StringXPointer SXP[], char * string, %token tSolid tEndSolid tVertex tFacet tNormal tOuter tLoopSTL tEndLoop tEndFacet -%type <d> FExpr FExpr_Single +%type <d> FExpr FExpr_Single %type <v> VExpr RGBAExpr -%type <l> ListOfDouble ListOfShapes Duplicata Transform MultipleShape ListOfListOfDouble -%type <l> ListOfStrings +%type <l> ListOfShapes Duplicata Transform MultipleShape +%type <l> ListOfStrings ListOfDouble ListOfListOfDouble %type <s> Shape %type <i> BoolExpr @@ -104,12 +107,14 @@ void Get_ColorPointerForString(StringXPointer SXP[], char * string, %left UMINUS %right '^' +%start All + %% All : - GeomFormatList - | StepFormatItems + StepFormatItems | STLFormatItem + | GeomFormatList ; /* ---------------------------------------------------------------------- @@ -125,11 +130,11 @@ STLFormatItem : return 1; } | tFacet - tNormal tDOUBLE tDOUBLE tDOUBLE + tNormal FExpr FExpr FExpr tOuter tLoopSTL - tVertex tDOUBLE tDOUBLE tDOUBLE - tVertex tDOUBLE tDOUBLE tDOUBLE - tVertex tDOUBLE tDOUBLE tDOUBLE + tVertex FExpr FExpr FExpr + tVertex FExpr FExpr FExpr + tVertex FExpr FExpr FExpr tEndLoop tEndFacet { @@ -355,11 +360,11 @@ GeomFormat : View : tView tBIGSTR '{' Views '}' tEND { - EndView($2,0.,0.,0.); + EndView(1, Force_ViewNumber,yyname,$2,0.,0.,0.); } | tView tBIGSTR tOffset VExpr '{' Views '}' tEND { - EndView($2,$4[0],$4[1],$4[2]); + EndView(1, Force_ViewNumber,yyname,$2,$4[0],$4[1],$4[2]); } ; @@ -368,122 +373,295 @@ Views : { BeginView(1); } - | Views ScalarSimplex - | Views VectorSimplex - | Views TensorSimplex - | Views ScalarTriangle - | Views VectorTriangle - | Views TensorTriangle - | Views ScalarLine - | Views VectorLine - | Views TensorLine | Views ScalarPoint | Views VectorPoint | Views TensorPoint + | Views ScalarLine + | Views VectorLine + | Views TensorLine + | Views ScalarTriangle + | Views VectorTriangle + | Views TensorTriangle + | Views ScalarTetrahedron + | Views VectorTetrahedron + | Views TensorTetrahedron ; - -ScalarSimplex : - tScalarSimplex '(' FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND + +ScalarPointValues : + FExpr + { List_Add(ActualView->SP, &$1) ; } + | ScalarPointValues ',' FExpr + { List_Add(ActualView->SP, &$3) ; } + ; + +ScalarPoint : + tScalarPoint '(' FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->SP, &$3); List_Add(ActualView->SP, &$5); + List_Add(ActualView->SP, &$7); + } + '{' ScalarPointValues '}' tEND { - AddView_ScalarSimplex($3,$5,$7,$9,$11,$13,$15,$17,$19,$21,$23,$25,$27); + ActualView->NbSP++ ; } ; -VectorSimplex : - tVectorSimplex '(' FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +VectorPointValues : + FExpr + { List_Add(ActualView->VP, &$1) ; } + | VectorPointValues ',' FExpr + { List_Add(ActualView->VP, &$3) ; } + ; + +VectorPoint : + tVectorPoint '(' FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->VP, &$3); List_Add(ActualView->VP, &$5); + List_Add(ActualView->VP, &$7); + } + '{' VectorPointValues '}' tEND { - AddView_VectorSimplex($3,$5,$7,$9,$11,$13,$15,$17,$19,$21,$23,$25,$27); + ActualView->NbVP++ ; } ; -TensorSimplex : - tTensorSimplex '(' FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +TensorPointValues : + FExpr + { List_Add(ActualView->TP, &$1) ; } + | TensorPointValues ',' FExpr + { List_Add(ActualView->TP, &$3) ; } + ; + +TensorPoint : + tTensorPoint '(' FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->TP, &$3); List_Add(ActualView->TP, &$5); + List_Add(ActualView->TP, &$7); + } + '{' TensorPointValues '}' tEND { - AddView_TensorSimplex($3,$5,$7,$9,$11,$13,$15,$17,$19,$21,$23,$25,$27); - } + ActualView->NbTP++ ; + } ; -ScalarTriangle : - tScalarTriangle '(' FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +ScalarLineValues : + FExpr + { List_Add(ActualView->SL, &$1) ; } + | ScalarLineValues ',' FExpr + { List_Add(ActualView->SL, &$3) ; } + ; + +ScalarLine : + tScalarLine '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->SL, &$3); List_Add(ActualView->SL, &$9); + List_Add(ActualView->SL, &$5); List_Add(ActualView->SL, &$11); + List_Add(ActualView->SL, &$7); List_Add(ActualView->SL, &$13); + } + '{' ScalarLineValues '}' tEND { - AddView_ScalarTriangle($3,$5,$7,$9,$11,$13,$15,$17,$19,$21); + ActualView->NbSL++ ; } ; -VectorTriangle : - tVectorTriangle '(' FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +VectorLineValues : + FExpr + { List_Add(ActualView->VL, &$1) ; } + | VectorLineValues ',' FExpr + { List_Add(ActualView->VL, &$3) ; } + ; + +VectorLine : + tVectorLine '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->SL, &$3); List_Add(ActualView->SL, &$9); + List_Add(ActualView->SL, &$5); List_Add(ActualView->SL, &$11); + List_Add(ActualView->SL, &$7); List_Add(ActualView->SL, &$13); + } + '{' VectorLineValues '}' tEND { - AddView_VectorTriangle($3,$5,$7,$9,$11,$13,$15,$17,$19,$21); - } + ActualView->NbVL++ ; + } ; -TensorTriangle : - tTensorTriangle '(' FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +TensorLineValues : + FExpr + { List_Add(ActualView->TL, &$1) ; } + | TensorLineValues ',' FExpr + { List_Add(ActualView->TL, &$3) ; } + ; + +TensorLine : + tTensorLine '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->SL, &$3); List_Add(ActualView->SL, &$9); + List_Add(ActualView->SL, &$5); List_Add(ActualView->SL, &$11); + List_Add(ActualView->SL, &$7); List_Add(ActualView->SL, &$13); + } + '{' TensorLineValues '}' tEND { - AddView_TensorTriangle($3,$5,$7,$9,$11,$13,$15,$17,$19,$21); + ActualView->NbTL++ ; } ; -ScalarLine : - tScalarLine '(' FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +ScalarTriangleValues : + FExpr + { List_Add(ActualView->ST, &$1) ; } + | ScalarTriangleValues ',' FExpr + { List_Add(ActualView->ST, &$3) ; } + ; + +ScalarTriangle : + tScalarTriangle '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->ST, &$3); List_Add(ActualView->ST, &$9); + List_Add(ActualView->ST, &$15); + List_Add(ActualView->ST, &$5); List_Add(ActualView->ST, &$11); + List_Add(ActualView->ST, &$17); + List_Add(ActualView->ST, &$7); List_Add(ActualView->ST, &$13); + List_Add(ActualView->ST, &$19); + } + '{' ScalarTriangleValues '}' tEND { - AddView_ScalarLine($3,$5,$7,$9,$11,$13,$15); - } + ActualView->NbST++ ; + } ; -VectorLine : - tVectorLine '(' FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +VectorTriangleValues : + FExpr + { List_Add(ActualView->VT, &$1) ; } + | VectorTriangleValues ',' FExpr + { List_Add(ActualView->VT, &$3) ; } + ; + +VectorTriangle : + tVectorTriangle '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->VT, &$3); List_Add(ActualView->VT, &$9); + List_Add(ActualView->VT, &$15); + List_Add(ActualView->VT, &$5); List_Add(ActualView->VT, &$11); + List_Add(ActualView->VT, &$17); + List_Add(ActualView->VT, &$7); List_Add(ActualView->VT, &$13); + List_Add(ActualView->VT, &$19); + } + '{' VectorTriangleValues '}' tEND { - AddView_VectorLine($3,$5,$7,$9,$11,$13,$15); + ActualView->NbVT++ ; } ; -TensorLine : - tTensorLine '(' FExpr ',' FExpr ',' FExpr ',' - FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +TensorTriangleValues : + FExpr + { List_Add(ActualView->TT, &$1) ; } + | TensorTriangleValues ',' FExpr + { List_Add(ActualView->TT, &$3) ; } + ; + +TensorTriangle : + tTensorTriangle '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->TT, &$3); List_Add(ActualView->TT, &$9); + List_Add(ActualView->TT, &$15); + List_Add(ActualView->TT, &$5); List_Add(ActualView->TT, &$11); + List_Add(ActualView->TT, &$17); + List_Add(ActualView->TT, &$7); List_Add(ActualView->TT, &$13); + List_Add(ActualView->TT, &$19); + } + '{' TensorTriangleValues '}' tEND { - AddView_TensorLine($3,$5,$7,$9,$11,$13,$15); + ActualView->NbTT++ ; } ; -ScalarPoint : - tScalarPoint '(' FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +ScalarTetrahedronValues : + FExpr + { List_Add(ActualView->SS, &$1) ; } + | ScalarTetrahedronValues ',' FExpr + { List_Add(ActualView->SS, &$3) ; } + ; + +ScalarTetrahedron : + tScalarTetrahedron '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->SS, &$3); List_Add(ActualView->SS, &$9); + List_Add(ActualView->SS, &$15); List_Add(ActualView->SS, &$21); + List_Add(ActualView->SS, &$5); List_Add(ActualView->SS, &$11); + List_Add(ActualView->SS, &$17); List_Add(ActualView->SS, &$23); + List_Add(ActualView->SS, &$7); List_Add(ActualView->SS, &$13); + List_Add(ActualView->SS, &$19); List_Add(ActualView->SS, &$25); + } + '{' ScalarTetrahedronValues '}' tEND { - AddView_ScalarPoint($3,$5,$7,$9); - } + ActualView->NbSS++ ; + } ; -VectorPoint : - tVectorPoint '(' FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +VectorTetrahedronValues : + FExpr + { List_Add(ActualView->VS, &$1) ; } + | VectorTetrahedronValues ',' FExpr + { List_Add(ActualView->VS, &$3) ; } + ; + +VectorTetrahedron : + tVectorTetrahedron '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->VS, &$3); List_Add(ActualView->VS, &$9); + List_Add(ActualView->VS, &$15); List_Add(ActualView->VS, &$21); + List_Add(ActualView->VS, &$5); List_Add(ActualView->VS, &$11); + List_Add(ActualView->VS, &$17); List_Add(ActualView->VS, &$23); + List_Add(ActualView->VS, &$7); List_Add(ActualView->VS, &$13); + List_Add(ActualView->VS, &$19); List_Add(ActualView->VS, &$25); + } + '{' VectorTetrahedronValues '}' tEND { - AddView_VectorPoint($3,$5,$7,$9); - } + ActualView->NbVS++ ; + } ; -TensorPoint : - tTensorPoint '(' FExpr ',' FExpr ',' FExpr ')' ListOfDouble tEND +TensorTetrahedronValues : + FExpr + { List_Add(ActualView->TS, &$1) ; } + | TensorTetrahedronValues ',' FExpr + { List_Add(ActualView->TS, &$3) ; } + ; + +TensorTetrahedron : + tTensorTetrahedron '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(ActualView->TS, &$3); List_Add(ActualView->TS, &$9); + List_Add(ActualView->TS, &$15); List_Add(ActualView->TS, &$21); + List_Add(ActualView->TS, &$5); List_Add(ActualView->TS, &$11); + List_Add(ActualView->TS, &$17); List_Add(ActualView->TS, &$23); + List_Add(ActualView->TS, &$7); List_Add(ActualView->TS, &$13); + List_Add(ActualView->TS, &$19); List_Add(ActualView->TS, &$25); + } + '{' TensorTetrahedronValues '}' tEND { - AddView_TensorPoint($3,$5,$7,$9); - } + ActualView->NbTS++ ; + } ; + + /* ----------------------- A F F E C T A T I O N ----------------------- */ @@ -655,8 +833,10 @@ Shape : List_T *Temp; int i; double d; - if(List_Nbr($6) + (int)$10 + 1 != List_Nbr($8)){ - yyerror("wrong nurbs curve definition (deg + 1 + nbpts != nbknots)"); + if((int)$10 + 1 + List_Nbr($6) != List_Nbr($8)){ + vyyerror("Wrong Definition of Nurbs Curve %d: " + "[Degree]%d + 1 + [NbPts]%d != [NbKnots]%d", + (int)$3, (int)$10, List_Nbr($6), List_Nbr($8)); } Temp = List_Create(List_Nbr($6),1,sizeof(int)); for(i=0;i<List_Nbr($6);i++) { @@ -709,7 +889,9 @@ Shape : else if(j==3) $$.Type = MSH_SURF_TRIC; else - vyyerror("Ruled surface %d has not 3 or 4 borders", $4); + vyyerror("Wrong Definition of Ruled Surface %d: " + "%d Borders Instead of 3 or 4", + (int)$4, j); Cdbz101((int)$4,$$.Type,0,0,0,0,0,NULL,$7,NULL); $$.Num = (int)$4; } @@ -745,7 +927,7 @@ Shape : $$.Num = (int)$3; Surface *s = FindSurface($$.Num,THEM); if(!s) - vyyerror("Unkown Surface %d", $$.Num); + vyyerror("Unknown Surface %d", $$.Num); else $$.Type = s->Typ; } @@ -873,7 +1055,7 @@ Macro : yylineno = yylinenoTab[RecursionLevel]; } else{ - vyyerror("Unknown file: %s", $2) ; + vyyerror("Unknown File '%s'", $2) ; yyin = yyinTab[--RecursionLevel]; } } @@ -1049,7 +1231,8 @@ Transfini : s->Method = TRANSFINI; k = List_Nbr($7); if(k!=3 && k!=4){ - vyyerror("Bad Number of Points for Transfinite Surface %d", $4) ; + vyyerror("Wrong Definition of Transfinite Surface %d: " + "%d Points Instead of 3 or 4" , $4, k) ; } else{ for(i=0;i<k;i++){ @@ -1069,7 +1252,8 @@ Transfini : s->Method = ELLIPTIC; k = List_Nbr($7); if(k != 4) - vyyerror("Bad Number of Points for Elliptic Surface %d", $4) ; + vyyerror("Wrong Definition of Elliptic Surface %d: " + "%d Points Instead of 4" , $4, k) ; else{ for(i=0;i<k;i++){ List_Read($7,i,&d); @@ -1088,7 +1272,8 @@ Transfini : v->Method = TRANSFINI; k = List_Nbr($7); if(k!=6 && k!=8) - vyyerror("Bad Number of Points for Transfinite Volume %d", $4) ; + vyyerror("Wrong Definition of Transfinite Volume %d: " + "%d Points Instead of 6 or 8" , $4, k) ; else{ for(i=0;i<k;i++){ List_Read($7,i,&d); @@ -1128,10 +1313,6 @@ Transfini : } } } - | tPhysical tAssociation '(' FExpr ')' tAFFECT ListOfDouble tEND - { - Msg(PARSER_ERROR, "Physical Associations do not exist anymore!"); - } ; @@ -1180,20 +1361,20 @@ ColorAffect : tSTRING tAFFECT tSTRING tEND { i = Get_ColorForString(ColorString, -1, $3, &flag); - if(flag) vyyerror("Unknown Color: %s", $3); + if(flag) vyyerror("Unknown Color '%s'", $3); Get_ColorPointerForString(ColorField, $1, &flag, &ptr); if(flag) - vyyerror("Unknown Color Field: %s", $1); + vyyerror("Unknown Color Field '%s'", $1); else *ptr = i ; } | tSTRING tAFFECT '{' tSTRING ',' FExpr '}' tEND { i = Get_ColorForString(ColorString, (int)$6, $4, &flag); - if(flag) vyyerror("Unknown Color: %s", $4); + if(flag) vyyerror("Unknown Color '%s'", $4); Get_ColorPointerForString(ColorField, $1, &flag, &ptr); if(flag) - vyyerror("Unknown Color Field: %s", $1); + vyyerror("Unknown Color Field '%s'", $1); else *ptr = i ; } @@ -1201,7 +1382,7 @@ ColorAffect : { Get_ColorPointerForString(ColorField, $1, &flag, &ptr); if(flag) - vyyerror("Unknown Color Field: %s", $3); + vyyerror("Unknown Color Field '%s'", $3); else *ptr = PACK_COLOR((int)$3[0], (int)$3[1], (int)$3[2], (int)$3[3]); } @@ -1338,7 +1519,7 @@ FExpr_Single : { TheSymbol.Name = $1 ; if (!List_Query(Symbol_L, &TheSymbol, CompareSymbols)) { - vyyerror("Unknown variable: %s", $1) ; $$ = 0. ; + vyyerror("Unknown variable '%s'", $1) ; $$ = 0. ; } else $$ = TheSymbol.val ; Free($1); diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 27d096a8a3..19c88baae5 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.7 2000-11-24 10:58:06 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.8 2000-11-25 15:26:11 geuzaine Exp $ */ #define FLEX_SCANNER @@ -1135,7 +1135,7 @@ YY_MALLOC_DECL YY_DECL { register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; + register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; #line 60 "Gmsh.l" @@ -1652,17 +1652,17 @@ return tWith; case 86: YY_RULE_SETUP #line 172 "Gmsh.l" -return tScalarSimplex; +return tScalarTetrahedron; YY_BREAK case 87: YY_RULE_SETUP #line 173 "Gmsh.l" -return tVectorSimplex; +return tVectorTetrahedron; YY_BREAK case 88: YY_RULE_SETUP #line 174 "Gmsh.l" -return tTensorSimplex; +return tTensorTetrahedron; YY_BREAK case 89: YY_RULE_SETUP diff --git a/Parser/Makefile b/Parser/Makefile index 10ad99f588..5e179e218b 100644 --- a/Parser/Makefile +++ b/Parser/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.4 2000-11-25 15:26:11 geuzaine Exp $ # # Makefile for "libParser.a" # diff --git a/Unix/CbContext.cpp b/Unix/CbContext.cpp index e65c53d16d..851c27c9e7 100644 --- a/Unix/CbContext.cpp +++ b/Unix/CbContext.cpp @@ -1,4 +1,4 @@ -/* $Id: CbContext.cpp,v 1.3 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: CbContext.cpp,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -587,20 +587,17 @@ void NextContextCb (Widget w, XtPointer client_data, XtPointer call_data){ } -/* ------------------------------------------------------------------------ */ -/* PostProcessing specific context changes */ -/* ------------------------------------------------------------------------ */ +int AddViewInUI(int i, char *Name, int Num){ + //char tmp[20]; -static int fcmpPostView(const void *v1, const void *v2){ - return (((Post_View *)v1)->Num - ((Post_View *)v2)->Num); -} - -int AddView(int i, char *Name, int dummy){ if(i > NB_BUTT_MAX -1) return 1; txt_post[i-1] = (char*)Malloc(NAME_STR_L*sizeof(char)); strncpy(txt_post[i-1],Name,NAME_STR_L); + //sprintf(tmp, " (%d)", Num); + //strncat(txt_post[i-1],tmp,NAME_STR_L); + if(actual_global_context == CONTEXT_POST) ActualizeContextCb(NULL,(XtPointer)actual_global_context,NULL); @@ -610,38 +607,22 @@ int AddView(int i, char *Name, int dummy){ void RemoveViewCb(Widget w, XtPointer client_data, XtPointer call_data){ Post_View *v; int i; - + i = (long int)client_data ; + v = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1); + while(txt_post[i]){ strncpy(txt_post[i-1], txt_post[i], NAME_STR_L); i++; } + Free(txt_post[i-1]); txt_post[i-1] = NULL; - v = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1); - - if(v->Allocated){ - - for(i=0 ; i<List_Nbr(v->Simplices) ; i++) - Free(((Post_Simplex*)List_Pointer(v->Simplices, i))->V); - List_Delete(v->Simplices); - - for(i=0 ; i<List_Nbr(v->Triangles) ; i++) - Free(((Post_Triangle*)List_Pointer(v->Triangles, i))->V); - List_Delete(v->Triangles); - - for(i=0 ; i<List_Nbr(v->Lines) ; i++) - Free(((Post_Line*)List_Pointer(v->Lines, i))->V); - List_Delete(v->Lines); - - for(i=0 ; i<List_Nbr(v->Points) ; i++) - Free(((Post_Point*)List_Pointer(v->Points, i))->V); - List_Delete(v->Points); - - } + FreeView(v); - List_Suppress(Post_ViewList, v, fcmpPostView); + if(!List_Suppress(Post_ViewList, v, fcmpPostViewNum)) + Msg(ERROR, "Could Not Suppress View from List"); if(actual_global_context == CONTEXT_POST) ActualizeContextCb(NULL,(XtPointer)actual_global_context,NULL); diff --git a/Unix/CbGeneral.cpp b/Unix/CbGeneral.cpp index 439e44fd06..ffd61fc653 100644 --- a/Unix/CbGeneral.cpp +++ b/Unix/CbGeneral.cpp @@ -1,4 +1,4 @@ -/* $Id: CbGeneral.cpp,v 1.2 2000-11-23 14:11:40 geuzaine Exp $ */ +/* $Id: CbGeneral.cpp,v 1.3 2000-11-25 15:26:12 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -109,7 +109,7 @@ void CurrentInfoCb (Widget w, XtPointer client_data, XtPointer call_data){ s[16] += List_Nbr(v->Points); s[17] += List_Nbr(v->Lines); s[18] += List_Nbr(v->Triangles); - s[19] += List_Nbr(v->Simplices); + s[19] += List_Nbr(v->Tetrahedra); } } } diff --git a/Unix/CbGeom.cpp b/Unix/CbGeom.cpp index 802444e19d..a44f331783 100644 --- a/Unix/CbGeom.cpp +++ b/Unix/CbGeom.cpp @@ -1,4 +1,4 @@ -/* $Id: CbGeom.cpp,v 1.3 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: CbGeom.cpp,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -52,8 +52,8 @@ int SelectContour (int type, int num, List_T *Liste1){ for(i=0;i<List_Nbr(Liste1);i++){ List_Read(Liste1,i,&ip); switch(type){ - case ENT_LINE : highlight_entity_num(0,abs(ip),0,1); break ; - case ENT_SURFACE : highlight_entity_num(0,0,abs(ip),1); break ; + case ENT_LINE : HighlightEntityNum(0,abs(ip),0,1); break ; + case ENT_SURFACE : HighlightEntityNum(0,0,abs(ip),1); break ; } } diff --git a/Unix/CbInput.cpp b/Unix/CbInput.cpp index fc8a1fa145..1282c5b20b 100644 --- a/Unix/CbInput.cpp +++ b/Unix/CbInput.cpp @@ -1,4 +1,4 @@ -/* $Id: CbInput.cpp,v 1.3 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: CbInput.cpp,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -341,11 +341,11 @@ void KeyboardAccel(XEvent *event){ /* I n p u t */ /* ------------------------------------------------------------------------ */ -void myZoom(GLdouble x1, GLdouble x2, GLdouble y1, GLdouble y2, - GLdouble xc1, GLdouble xc2, GLdouble yc1, GLdouble yc2); -void process_selection(int x, int y, int *n, GLuint *ii, GLuint *jj); -void filtre_selection(int n, GLuint *typ, GLuint *ient, Vertex **thev, - Curve **thec, Surface **thes, Mesh *m); +void Process_SelectionBuffer(int x, int y, int *n, GLuint *ii, GLuint *jj); +void Filter_SelectionBuffer(int n, GLuint *typ, GLuint *ient, Vertex **thev, + Curve **thec, Surface **thes, Mesh *m); +void myZoom(GLdouble X1, GLdouble X2, GLdouble Y1, GLdouble Y2, + GLdouble Xc1, GLdouble Xc2, GLdouble Yc1, GLdouble Yc2); void InputCb (Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *cb){ XEvent *event; @@ -661,10 +661,10 @@ void InputCb (Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *cb) CTX.post.draw = previous_post_draw ; } else{ - process_selection(event->xbutton.x, event->xbutton.y, &hits, ii, jj); + Process_SelectionBuffer(event->xbutton.x, event->xbutton.y, &hits, ii, jj); ov = v; oc = c; os = s; v = NULL; c = NULL; s = NULL; - filtre_selection(hits,ii,jj,&v,&c,&s,&M); + Filter_SelectionBuffer(hits,ii,jj,&v,&c,&s,&M); if(CTX.overlay){ glXMakeCurrent(XtDisplay(WID.G.glo), XtWindow(WID.G.glo), XCTX.glo.context); @@ -672,9 +672,9 @@ void InputCb (Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *cb) glClearIndex(0); glClear(GL_COLOR_BUFFER_BIT); glIndexi((CTX.color.bg<CTX.color.fg)?XCTX.xcolor.ovwhite:XCTX.xcolor.ovblack); - begin_highlight(); - highlight_entity(v,c,s,0); - end_highlight(0); + BeginHighlight(); + HighlightEntity(v,c,s,0); + EndHighlight(0); } glXMakeCurrent(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), XCTX.glw.context); } @@ -684,9 +684,9 @@ void InputCb (Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *cb) Init(); Draw(); } - begin_highlight(); - highlight_entity(v,c,s,0); - end_highlight(0); + BeginHighlight(); + HighlightEntity(v,c,s,0); + EndHighlight(0); } } } diff --git a/Unix/CbPost.cpp b/Unix/CbPost.cpp index e890de3b84..be96fe558d 100644 --- a/Unix/CbPost.cpp +++ b/Unix/CbPost.cpp @@ -1,4 +1,4 @@ -/* $Id: CbPost.cpp,v 1.3 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: CbPost.cpp,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -17,7 +17,6 @@ #include "CbMesh.h" #include "CbColorbar.h" - extern Widgets_T WID ; extern Context_T CTX ; extern XContext_T XCTX ; @@ -25,7 +24,7 @@ extern Mesh *THEM; extern int TYPBGMESH; extern int LC_ORDER; extern List_T *Post_ViewList; - +extern int Force_ViewNumber; static double ADAPTATION_ERROR=10. ; static int ADAPTATION_METHOD=3 ; @@ -34,10 +33,6 @@ static Post_View *CurrentView = NULL; static long int CurrentViewNumber = -1; static Post_View *ViewForDialog[10]; -/* ------------------------------------------------------------------------ - set view visible or not - ------------------------------------------------------------------------ */ - void MarkAllViewsChanged (int action){ int i; char label[256]; @@ -90,44 +85,83 @@ void SwapViewCb (Widget w, XtPointer client_data, XtPointer call_data){ if(!Post_ViewList) return; v = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1); + + Msg(DEBUG, "View %d\n" + DEBUG_NIL " -> Name '%s'\n" + DEBUG_NIL " -> FileName '%s'\n" + DEBUG_NIL " -> DuplicateOf %d\n" + DEBUG_NIL " -> Links %d", + v->Num, v->Name, v->FileName, v->DuplicateOf, v->Links); + v->Visible = !v->Visible; Init(); Draw(); } + + void DuplicateViewCb (Widget w, XtPointer client_data, XtPointer call_data){ - Post_View *v1, *v2 ; + Post_View v, *v1, *v2, *v3 ; + extern void AddViewInUI(int , char *, int); if(!Post_ViewList) return; v1 = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1); BeginView(0); - EndView(v1->Name, 0., 0., 0.); - - /* Trash: interdit de desallouer cette view-ci car il existe un duplicata qque part. - A changer : garder le num du duplicata et desallouer si ce duplicata n'existe plus, - etc, etc... */ - v1->Allocated = 0 ; + EndView(0, 0, v1->FileName, v1->Name, 0., 0., 0.); v2 = (Post_View*)List_Pointer(Post_ViewList,List_Nbr(Post_ViewList)-1); - v2->Simplices = v1->Simplices; - v2->Triangles = v1->Triangles; - v2->Lines = v1->Lines; - v2->Points = v1->Points; - v2->ScalarOnly = v1->ScalarOnly; - v2->Min = v1->Min; - v2->Max = v1->Max; - v2->NbTimeStep = v1->NbTimeStep; - v2->CustomMin = v1->CustomMin; - v2->CustomMax = v1->CustomMax; + if(!v1->DuplicateOf){ + v2->DuplicateOf = v1->Num ; + v1->Links++ ; + } + else{ + v.Num = v1->DuplicateOf ; + if(!(v3 = (Post_View*)List_PQuery(Post_ViewList, &v, fcmpPostViewNum))){ + v2->DuplicateOf = v1->Num ; + v1->Links++ ; + } + else{ + v2->DuplicateOf = v3->Num; + v3->Links++ ; + } + } + + v2->Points = v1->Points; + v2->Lines = v1->Lines; + v2->Triangles = v1->Triangles; + v2->Tetrahedra = v1->Tetrahedra; + v2->ScalarOnly = v1->ScalarOnly; + v2->Min = v1->Min; + v2->Max = v1->Max; + v2->NbTimeStep = v1->NbTimeStep; + AddViewInUI(List_Nbr(Post_ViewList), v2->Name, v2->Num); Init(); Draw(); } +void ReloadViewCb (Widget w, XtPointer client_data, XtPointer call_data){ + Post_View *v ; + char filename[NAME_STR_L]; + + if(!Post_ViewList) return; + + v = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1); + strcpy(filename, v->FileName); + Force_ViewNumber = v->Num ; + FreeView(v); + MergeProblem(filename); + Force_ViewNumber = 0 ; + + Init(); + Draw(); +} + + void SaveColorTable(FILE *fp){ if(!CurrentView){ Msg(WARNING, "No View to get Color Information From"); diff --git a/Unix/Help.h b/Unix/Help.h index c9a04753f6..9749968944 100644 --- a/Unix/Help.h +++ b/Unix/Help.h @@ -1,4 +1,4 @@ -/* $Id: Help.h,v 1.2 2000-11-23 14:11:41 geuzaine Exp $ */ +/* $Id: Help.h,v 1.3 2000-11-25 15:26:12 geuzaine Exp $ */ #ifndef _HELP_H_ #define _HELP_H_ @@ -55,7 +55,7 @@ static char txt_help[]= "Shift modifier: popup option menus\n" "\n" " (S-g) hide/show geometry options\n" -" (S-i) hide/show info window\n" +" (S-i) hide/show statistics window\n" " (S-m) hide/show mesh options\n" " (S-o) hide/show miscellaneous options\n" " (S-p) hide/show post processor general options\n" diff --git a/Unix/Main.cpp b/Unix/Main.cpp index 3f4e4e50bc..c0483a0f0f 100644 --- a/Unix/Main.cpp +++ b/Unix/Main.cpp @@ -1,4 +1,4 @@ -/* $Id: Main.cpp,v 1.11 2000-11-24 12:57:25 geuzaine Exp $ */ +/* $Id: Main.cpp,v 1.12 2000-11-25 15:26:12 geuzaine Exp $ */ #include <signal.h> @@ -42,33 +42,35 @@ char gmsh_url[] = "URL : " GMSH_URL ; char gmsh_help[] = "Usage: %s [options] [files]\n" "Geometry options:\n" - " -0 output flattened parsed geometry\n" + " -0 output flattened parsed geometry and exit\n" "Mesh options:\n" - " -1, -2, -3 batch 1-, 2- or 3-dimensional mesh\n" - " -format msh|unv|gref output format (default: msh)\n" - " -algo iso|aniso mesh algorithm (default: iso)\n" - " -smooth int mesh smoothing (default: 0)\n" - " -degree int mesh degree (default: 1)\n" - " -scale float scaling factor (default: 1.0)\n" + " -1, -2, -3 perform batch 1D, 2D and 3D mesh generation\n" + " -format msh|unv|gref set output mesh format (default: msh)\n" + " -algo iso|aniso select mesh algorithm (default: iso)\n" + " -smooth int set mesh smoothing (default: 0)\n" + " -degree int set mesh degree (default: 1)\n" + " -scale float set global scaling factor (default: 1.0)\n" + " -clscale float set characteristic length scaling factor (default: 1.0)\n" " -bgm file load backround mesh from file\n" - " -interactive display the mesh construction\n" + " -interactive display 2D mesh construction interactively\n" "Post Processing options:\n" " -dl enable display lists\n" " -noview hide all views at startup\n" + " -link link all views at startup\n" "Display options:\n" - " -nodb no double buffer\n" - " -noov no overlay visual\n" + " -nodb disable double buffering\n" + " -noov disable overlay visual\n" " -alpha enable alpha blending\n" " -geometry geom specify main window geometry\n" " -viewport 9*float specify rotation, translation and scale\n" " -display disp specify display\n" - " -perspective perspective instead of orthographic projection\n" + " -perspective set projection mode to perspective\n" " -flash allow colormap flashing\n" - " -samevisual force same visual for OpenGL and GUI\n" + " -samevisual force same visual for graphics and UI\n" "Other options:\n" " -v int set verbosity level (default: 2)\n" " -threads enable threads\n" - " -path string path for included files\n" + " -path string set path for included files\n" " -version show version number\n" " -info show detailed version information\n" " -help show this message\n" @@ -77,6 +79,8 @@ char gmsh_help[] = char *TheFileNameTab[MAX_OPEN_FILES], *TheBgmFileName=NULL; char ThePathForIncludes[NAME_STR_L]; +extern List_T *Post_ViewList; + /* ------------------------------------------------------------------------ */ /* P a r s e */ /* ------------------------------------------------------------------------ */ @@ -164,9 +168,10 @@ void OpenProblem(char *name){ ParseFile(TheFileName); + ApplyLcFactor(THEM); mai3d(THEM,0); - Maillage_Dimension_0(&M); + ZeroHighlight(&M); CalculateMinMax(THEM->Points); if (!EntitesVisibles) { @@ -228,17 +233,21 @@ void Get_Options (int argc, char *argv[], int *nbfiles) { else if(!strcmp(argv[i]+1, "samevisual")){ CTX.same_visual = 1; i++; } - else if(!strcmp(argv[i]+1, "factor")){ - i++; - FACTEUR_MULTIPLICATIF = atof(argv[i]); i++; - } else if(!strcmp(argv[i]+1, "interactive")){ CTX.mesh.interactive = 1; i++; } - else if(!strcmp(argv[i]+1, "scale") || - !strcmp(argv[i]+1, "scaling")){ + else if(!strcmp(argv[i]+1, "scale")){ i++; - GLOBALSCALINGFACTOR = atof(argv[i]); i++; + CTX.mesh.scaling_factor = atof(argv[i]); i++; + } + else if(!strcmp(argv[i]+1, "clscale")){ + i++; + CTX.mesh.lc_factor = atof(argv[i]); i++; + if(CTX.mesh.lc_factor <= 0.0){ + fprintf(stderr, ERROR_STR + "Characteristic Length Factor Must be > 0\n"); + exit(1); + } } else if(!strcmp(argv[i]+1, "raw")){ CTX.mesh.nb_smoothing = 0; i++; @@ -312,6 +321,9 @@ void Get_Options (int argc, char *argv[], int *nbfiles) { else if(!strcmp(argv[i]+1, "noview")){ CTX.post.initial_visibility = 0 ; i++; } + else if(!strcmp(argv[i]+1, "link")){ + CTX.post.link = 2 ; i++; + } else if(!strcmp(argv[i]+1, "fill")){ CTX.post.initial_intervals = DRAW_POST_DISCRETE ; i++; } diff --git a/Unix/Makefile b/Unix/Makefile index 8ba6e298f6..cf620387b4 100644 --- a/Unix/Makefile +++ b/Unix/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.3 2000-11-25 15:26:12 geuzaine Exp $ # # Makefile for "libUnix.a" # diff --git a/Unix/Register.cpp b/Unix/Register.cpp index dbc739f910..d11281efc0 100644 --- a/Unix/Register.cpp +++ b/Unix/Register.cpp @@ -1,4 +1,4 @@ -/* $Id: Register.cpp,v 1.6 2000-11-24 12:50:06 geuzaine Exp $ */ +/* $Id: Register.cpp,v 1.7 2000-11-25 15:26:12 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -56,6 +56,7 @@ void RegisterCallbacks_M(Widgets_T *w){ register_activate_cb (w->M.pushButt[n], NextContextCb, n+1); register_valchg_cb (w->M.toggleButt[n], SwapViewCb, n+1); register_popup_ev (w->M.toggleButt[n], w->M.popMenu[n]); + register_activate_cb (w->M.reloadButt[n], ReloadViewCb, n+1); register_activate_cb (w->M.removeButt[n], RemoveViewCb, n+1); register_activate_cb (w->M.duplicateButt[n], DuplicateViewCb, n+1); diff --git a/Unix/Register.h b/Unix/Register.h index 0e06801c96..7e81704c4c 100644 --- a/Unix/Register.h +++ b/Unix/Register.h @@ -1,4 +1,4 @@ -/* $Id: Register.h,v 1.2 2000-11-23 14:11:41 geuzaine Exp $ */ +/* $Id: Register.h,v 1.3 2000-11-25 15:26:12 geuzaine Exp $ */ #ifndef _REGISTER_H_ #define _REGISTER_H_ @@ -31,6 +31,7 @@ void CurrentViewCb (Widget w, XtPointer client_data, XtPointer call_data); void SwapViewCb (Widget w, XtPointer client_data, XtPointer call_data); void RemoveViewCb (Widget w, XtPointer client_data, XtPointer call_data); void DuplicateViewCb (Widget w, XtPointer client_data, XtPointer call_data); +void ReloadViewCb (Widget w, XtPointer client_data, XtPointer call_data); void OptionsCb (Widget w, XtPointer client_data, XtPointer call_data); void FileCb (Widget w, XtPointer client_data, XtPointer call_data); diff --git a/Unix/Widgets.cpp b/Unix/Widgets.cpp index 07f148e324..656a96eaed 100644 --- a/Unix/Widgets.cpp +++ b/Unix/Widgets.cpp @@ -1,4 +1,4 @@ -/* $Id: Widgets.cpp,v 1.8 2000-11-24 17:14:27 geuzaine Exp $ */ +/* $Id: Widgets.cpp,v 1.9 2000-11-25 15:26:12 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -196,7 +196,7 @@ void CreateWidgets_M(Widgets_T *w){ XtManageChild(w->M.optionButt[4]); i=0; - XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Current Info")); i++; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Statistics")); i++; XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(S-i)")); i++; XtSetArg(arg[i], XmNaccelerator, "Shift<Key>i:"); i++; w->M.optionButt[5] = XmCreatePushButton(w->M.optionPane, "MoptionButt5", arg, i); @@ -307,6 +307,11 @@ void CreateWidgets_M(Widgets_T *w){ w->M.popMenu[n] = XmCreatePopupMenu(w->M.toggleButt[n], "MpopMenun", arg, i); XtUnmanageChild(w->M.popMenu[n]); + i=0; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Reload")); i++; + w->M.reloadButt[n] = XmCreatePushButton(w->M.popMenu[n], "MreloadButtn", arg, i); + XtManageChild(w->M.reloadButt[n]); + i=0; XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Remove")); i++; w->M.removeButt[n] = XmCreatePushButton(w->M.popMenu[n], "MremoveButtn", arg, i); @@ -1610,7 +1615,7 @@ void CreateWidgets_OD(Widgets_T *w){ /* Info */ i=0; - XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Info")); i++; + XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Statistics")); i++; XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Update")); i++; XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++; XtSetArg(arg[i], XmNautoUnmanage, False); i++; diff --git a/Unix/Widgets.h b/Unix/Widgets.h index d50b7f0a5d..cfc2bdf882 100644 --- a/Unix/Widgets.h +++ b/Unix/Widgets.h @@ -1,4 +1,4 @@ -/* $Id: Widgets.h,v 1.3 2000-11-23 23:20:35 geuzaine Exp $ */ +/* $Id: Widgets.h,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */ #ifndef _WIDGETS_H_ #define _WIDGETS_H_ @@ -40,6 +40,7 @@ typedef struct { Widget vectorButt [NB_BUTT_MAX] ; Widget exportBGMButt[NB_BUTT_MAX] ; Widget applyBGMButt [NB_BUTT_MAX] ; + Widget reloadButt [NB_BUTT_MAX] ; Widget removeButt [NB_BUTT_MAX] ; Widget duplicateButt[NB_BUTT_MAX] ; } M; diff --git a/Unix/XRessources.h b/Unix/XRessources.h index d39744d663..a1c957237e 100644 --- a/Unix/XRessources.h +++ b/Unix/XRessources.h @@ -1,4 +1,4 @@ -/* $Id: XRessources.h,v 1.2 2000-11-23 14:11:41 geuzaine Exp $ */ +/* $Id: XRessources.h,v 1.3 2000-11-25 15:26:12 geuzaine Exp $ */ /* Les resources ci-dessous sont prises en compte par defaut. Toutre @@ -56,7 +56,7 @@ String FallbackResources[] = { /* geometrie */ "gmshGW*geometry: 700x525+20+30", - "gmshMW*geometry: x405+800+90", + "gmshMW*geometry: x420+800+80", "gmshCW*geometry: 440x130+30+570", /* sizes -> compact layout */ diff --git a/archives/Makefile b/archives/Makefile index 418e1ce085..67980b35b0 100644 --- a/archives/Makefile +++ b/archives/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.2 2000-11-25 15:26:12 geuzaine Exp $ purge: $(RM) $(RMFLAGS) *~ diff --git a/demos/view01.pos b/demos/view01.pos index 8181fcc14e..69114aaf19 100644 --- a/demos/view01.pos +++ b/demos/view01.pos @@ -31,16 +31,6 @@ vector tetrahedron VS 12 12 * nb time steps tensor tetrahedron TS 12 36 * nb time steps - - The coordinates are given "by node", that is (x,y,z) for a point, (x1,y1,z1,x2,y2,z2) - for a line, (x1,y1,z1,x2,y2,z2,x3,y3,z3) for a triangle, ... - - The values are given by timestep, by node and by component. That is, for a vector line, - {valxnode1time1,valynode1time1,valznode1time1, valxnode2time1,valynode2time1,valznode2time1, - valxnode1time2,valynode1time2,valznode1time2, valxnode2time2,valynode2time2,valznode2time2, ...} - - A post-processing view is loaded in Gmsh with File->Merge. Up to 20 views can be loaded - simultaneously. All post-processing options are accessed by clicking on the right mouse button on the view button (in post-processing mode: Mod->Post-Processing). */ diff --git a/doc/Makefile b/doc/Makefile index fb1391cf84..28f91ec995 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.2 2000-11-25 15:26:12 geuzaine Exp $ RM = rm RMFLAGS = -f diff --git a/lib/Makefile b/lib/Makefile index af57c45104..63144f4277 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,3 +1,4 @@ +# $Id: Makefile,v 1.3 2000-11-25 15:26:12 geuzaine Exp $ RM = rm RMFLAGS = -f diff --git a/utils/Makefile b/utils/Makefile index ef5b3ac5ec..d48b619708 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -1,4 +1,5 @@ -# $Id: Makefile,v 1.1.1.1 2000-11-23 09:22:48 geuzaine Exp $ +# $Id: Makefile,v 1.2 2000-11-25 15:26:12 geuzaine Exp $ +# $Id: Makefile,v 1.2 2000-11-25 15:26:12 geuzaine Exp $ CC = c++ C_FLAGS = -g diff --git a/utils/addId b/utils/addId new file mode 100644 index 0000000000..c23389c525 --- /dev/null +++ b/utils/addId @@ -0,0 +1,20 @@ +#!/bin/sh + +if [ $# -lt 1 ] ; then + echo "Usage: addId files" 1>&2 + exit 1 +else +# echo "/* \$Id\$ */" > _tmp_string_ + echo "# \$Id\$" > _tmp_string_ +# echo "c \$Id\$" > _tmp_string_ + + for file in $@; do + echo Modifying $file + mv $file $file~ + cat _tmp_string_ $file~ > $file + done + + rm -f _tmp_string_ +fi + + -- GitLab