diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index dfcff7b6dc843c311e0b611016888bcdb96211b5..2c4c974190ac89f1b16ba3ac1c3c24e20c193cf9 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -1,4 +1,4 @@ -// $Id: Geo.cpp,v 1.33 2003-05-22 19:25:58 geuzaine Exp $ +// $Id: Geo.cpp,v 1.34 2003-05-22 21:41:12 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // @@ -58,7 +58,6 @@ double evaluate_scalarfunction(char *var, double val, char *funct) } // pose "variable = function" and evaluate function - fprintf(yyin, "%s = %.16g ;\n", var, val); fprintf(yyin, "ValeurTemporaire__ = %s ;\n", funct); fclose(yyin); @@ -67,16 +66,18 @@ double evaluate_scalarfunction(char *var, double val, char *funct) yyparse(); } fclose(yyin); - Symbol TheSymbol; - TheSymbol.Name = (char *)malloc(100); - strcpy(TheSymbol.Name, "ValeurTemporaire__"); yyin = tempf; - if(!List_Query(Symbol_L, &TheSymbol, CompareSymbols)) { - free(TheSymbol.Name); + + // retreive value + Symbol TheSymbol, *TheSymbol_P; + TheSymbol.Name = (char *)Malloc(100*sizeof(char)); + strcpy(TheSymbol.Name, "ValeurTemporaire__"); + if(!(TheSymbol_P = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { + Free(TheSymbol.Name); return 0.0; } - free(TheSymbol.Name); - return *(double *)List_Pointer_Fast(TheSymbol.val, 0); + Free(TheSymbol.Name); + return *(double *)List_Pointer(TheSymbol_P->val, 0); } void add_infile(char *text, char *fich) diff --git a/Graphics/Visibility.cpp b/Graphics/Visibility.cpp index 64dd276d0749d5efc2a9347285fcc6a1a7c3f8c6..9300fc57c1b11a7e4713af9f7ef37d996856e002 100644 --- a/Graphics/Visibility.cpp +++ b/Graphics/Visibility.cpp @@ -1,4 +1,4 @@ -// $Id: Visibility.cpp,v 1.8 2003-03-21 00:52:39 geuzaine Exp $ +// $Id: Visibility.cpp,v 1.9 2003-05-22 21:41:12 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // @@ -443,12 +443,20 @@ static void AddVolume(void *a, void *b) List_Add(ElementaryEntities, &e); } -List_T *GetVisibilityList(int type) -{ - int i, j; +static void addInNumxSymb(void *a, void *b){ Symbol *s; NxS nxs; + s = (Symbol *)a; + for(int j = 0; j < List_Nbr(s->val); j++) { + nxs.n = (int)(*(double *)List_Pointer(s->val, j)); + nxs.s = s->Name; + List_Add(NumxSymb, &nxs); + } +} + +List_T *GetVisibilityList(int type) +{ if(!ElementaryEntities) ElementaryEntities = List_Create(100, 100, sizeof(Entity)); else @@ -464,14 +472,7 @@ List_T *GetVisibilityList(int type) else List_Reset(NumxSymb); - for(i = 0; i < List_Nbr(Symbol_L); i++) { - s = (Symbol *) List_Pointer(Symbol_L, i); - for(j = 0; j < List_Nbr(s->val); j++) { - nxs.n = (int)(*(double *)List_Pointer(s->val, j)); - nxs.s = s->Name; - List_Add(NumxSymb, &nxs); - } - } + Tree_Action(Symbol_T, addInNumxSymb); List_Action(THEM->PhysicalGroups, AddPhysical); diff --git a/Mesh/2D_Tree.cpp b/Mesh/2D_Tree.cpp index b1beb5a1f4f07c8f8d2ee5b34bcf76abf8e82d17..f4c8c13f7c6eed2d1e2e81edcc6e56fb133412d3 100644 --- a/Mesh/2D_Tree.cpp +++ b/Mesh/2D_Tree.cpp @@ -1,4 +1,4 @@ -// $Id: 2D_Tree.cpp,v 1.10 2003-03-21 00:52:41 geuzaine Exp $ +// $Id: 2D_Tree.cpp,v 1.11 2003-05-22 21:41:12 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // @@ -57,7 +57,7 @@ int avltree_remove(avlstruct ** root) int avltree_insert(avlstruct ** root, void *item, int (*fcmp) (void *a, void *b)) { - int cmpresult; + int cmpresult = 0; if(*root != NULL) cmpresult = fcmp(item, (*root)->treedata); @@ -83,7 +83,7 @@ int avltree_delete(avlstruct ** root, void *item, int (*fcmp) (void *a, void *b)) { avlstruct *t1, *t12; - int cmpresult; + int cmpresult = 0; if(*root != NULL) cmpresult = fcmp(item, (*root)->treedata); diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 2f785622e1cc5ed7cad07e5a52d80615262a1d34..9729ff7e6a3fe686950e6da2bb9899b6158cbef8 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -189,7 +189,7 @@ #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.157 2003-04-19 22:10:28 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.158 2003-05-22 21:41:12 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // @@ -235,7 +235,7 @@ #include "CreateFile.h" #include "STL.h" -List_T *Symbol_L = NULL; +Tree_T *Symbol_T = NULL; extern Context_T CTX; extern Mesh *THEM; @@ -5790,11 +5790,11 @@ case 210: #line 1195 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(1,1,sizeof(double)); if(!yyvsp[-2].i){ List_Put(TheSymbol.val, 0, &yyvsp[-1].d); - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else yymsg(GERROR, "Unknown variable '%s'", yyvsp[-3].c) ; @@ -5818,11 +5818,11 @@ case 211: #line 1222 "Gmsh.y" { TheSymbol.Name = yyvsp[-6].c; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(5,5,sizeof(double)); if(!yyvsp[-2].i){ List_Put(TheSymbol.val, (int)yyvsp[-4].d, &yyvsp[-1].d); - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else yymsg(GERROR, "Unknown variable '%s'", yyvsp[-6].c) ; @@ -5856,14 +5856,14 @@ case 212: yymsg(GERROR, "Incompatible array dimensions in affectation"); else{ TheSymbol.Name = yyvsp[-8].c; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(5,5,sizeof(double)); if(!yyvsp[-2].i){ for(i=0 ; i<List_Nbr(yyvsp[-5].l) ; i++){ List_Put(TheSymbol.val, (int)(*(double*)List_Pointer(yyvsp[-5].l,i)), (double*)List_Pointer(yyvsp[-1].l,i)); } - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else yymsg(GERROR, "Unknown variable '%s'", yyvsp[-8].c) ; @@ -5901,10 +5901,10 @@ case 213: #line 1303 "Gmsh.y" { TheSymbol.Name = yyvsp[-5].c; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(5,5,sizeof(double)); List_Copy(yyvsp[-1].l,TheSymbol.val); - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else{ List_Reset(pSymbol->val); @@ -5917,7 +5917,7 @@ case 214: #line 1318 "Gmsh.y" { TheSymbol.Name = yyvsp[-2].c; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) yymsg(GERROR, "Unknown variable '%s'", yyvsp[-2].c) ; else *(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[-1].i; @@ -5927,7 +5927,7 @@ case 215: #line 1327 "Gmsh.y" { TheSymbol.Name = yyvsp[-5].c ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) yymsg(GERROR, "Unknown variable '%s'", yyvsp[-5].c) ; else{ if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-3].d))) @@ -6761,10 +6761,10 @@ case 280: LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-6].c ; TheSymbol.Name = yyvsp[-6].c; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(1,1,sizeof(double)); List_Put(TheSymbol.val, 0, &yyvsp[-3].d); - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else{ List_Write(pSymbol->val, 0, &yyvsp[-3].d); @@ -6784,10 +6784,10 @@ case 281: LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-8].c ; TheSymbol.Name = yyvsp[-8].c; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(1,1,sizeof(double)); List_Put(TheSymbol.val, 0, &yyvsp[-5].d); - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else{ List_Write(pSymbol->val, 0, &yyvsp[-5].d); @@ -6808,7 +6808,7 @@ case 282: if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){ TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1]; - pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols); + pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol); *(double*)List_Pointer_Fast(pSymbol->val, 0) += LoopControlVariablesTab[ImbricatedLoop-1][2] ; } @@ -7595,7 +7595,7 @@ case 401: #line 2691 "Gmsh.y" { TheSymbol.Name = yyvsp[0].c ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", yyvsp[0].c) ; yyval.d = 0. ; } @@ -7607,7 +7607,7 @@ case 402: #line 2702 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", yyvsp[-3].c) ; yyval.d = 0. ; } @@ -7625,7 +7625,7 @@ case 403: #line 2719 "Gmsh.y" { TheSymbol.Name = yyvsp[-1].c ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", yyvsp[-1].c) ; yyval.d = 0. ; } @@ -7637,7 +7637,7 @@ case 404: #line 2730 "Gmsh.y" { TheSymbol.Name = yyvsp[-4].c ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", yyvsp[-4].c) ; yyval.d = 0. ; } @@ -7878,7 +7878,7 @@ case 433: { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", yyvsp[-2].c) ; d = 0.0 ; List_Add(yyval.l, &d); @@ -7894,7 +7894,7 @@ case 434: { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", yyvsp[-2].c) ; d = 0.0 ; List_Add(yyval.l, &d); @@ -7912,7 +7912,7 @@ case 435: { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-5].c ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", yyvsp[-5].c) ; d = 0.0 ; List_Add(yyval.l, &d); @@ -7934,7 +7934,7 @@ case 436: { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-5].c ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", yyvsp[-5].c) ; d = 0.0 ; List_Add(yyval.l, &d); @@ -8376,24 +8376,24 @@ yyreturn: #line 3188 "Gmsh.y" -void InitSymbols(void){ - if(!Symbol_L) - Symbol_L = List_Create(50,10,sizeof(Symbol)); - else - List_Reset(Symbol_L); -} - -void DeleteSymbols(void){ - int i; - for(i = 0 ; i < List_Nbr(Symbol_L) ; i++) - List_Delete(((Symbol*)List_Pointer_Fast(Symbol_L,i))->val); - List_Delete(Symbol_L); +void DeleteSymbol(void *a, void *b){ + Symbol *s = (Symbol*)a; + Free(s->Name); + List_Delete(s->val); } int CompareSymbols (const void *a, const void *b){ return(strcmp(((Symbol*)a)->Name,((Symbol*)b)->Name)); } +void InitSymbols(void){ + if(Symbol_T){ + Tree_Action(Symbol_T, DeleteSymbol); + Tree_Delete(Symbol_T); + } + Symbol_T = Tree_Create(sizeof(Symbol), CompareSymbols); +} + int PrintListOfDouble(char *format, List_T *list, char *buffer){ int i, j, k; char tmp1[256], tmp2[256]; diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 61089192a619854bc90b95609488d11b44353802..8abf8f3498088d946f43901be19a432488a8fd45 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,6 +1,6 @@ %{ -// $Id: Gmsh.y,v 1.138 2003-04-19 22:10:29 geuzaine Exp $ +// $Id: Gmsh.y,v 1.139 2003-05-22 21:41:13 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // @@ -46,7 +46,7 @@ #include "CreateFile.h" #include "STL.h" -List_T *Symbol_L = NULL; +Tree_T *Symbol_T = NULL; extern Context_T CTX; extern Mesh *THEM; @@ -1194,11 +1194,11 @@ Affectation : tSTRING NumericAffectation FExpr tEND { TheSymbol.Name = $1; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(1,1,sizeof(double)); if(!$2){ List_Put(TheSymbol.val, 0, &$3); - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else yymsg(GERROR, "Unknown variable '%s'", $1) ; @@ -1221,11 +1221,11 @@ Affectation : | tSTRING '[' FExpr ']' NumericAffectation FExpr tEND { TheSymbol.Name = $1; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(5,5,sizeof(double)); if(!$5){ List_Put(TheSymbol.val, (int)$3, &$6); - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else yymsg(GERROR, "Unknown variable '%s'", $1) ; @@ -1258,14 +1258,14 @@ Affectation : yymsg(GERROR, "Incompatible array dimensions in affectation"); else{ TheSymbol.Name = $1; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(5,5,sizeof(double)); if(!$7){ for(i=0 ; i<List_Nbr($4) ; i++){ List_Put(TheSymbol.val, (int)(*(double*)List_Pointer($4,i)), (double*)List_Pointer($8,i)); } - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else yymsg(GERROR, "Unknown variable '%s'", $1) ; @@ -1302,10 +1302,10 @@ Affectation : | tSTRING '[' ']' tAFFECT ListOfDouble tEND { TheSymbol.Name = $1; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(5,5,sizeof(double)); List_Copy($5,TheSymbol.val); - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else{ List_Reset(pSymbol->val); @@ -1317,7 +1317,7 @@ Affectation : | tSTRING NumericIncrement tEND { TheSymbol.Name = $1; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) yymsg(GERROR, "Unknown variable '%s'", $1) ; else *(double*)List_Pointer_Fast(pSymbol->val, 0) += $2; @@ -1326,7 +1326,7 @@ Affectation : | tSTRING '[' FExpr ']' NumericIncrement tEND { TheSymbol.Name = $1 ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) yymsg(GERROR, "Unknown variable '%s'", $1) ; else{ if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))) @@ -2113,10 +2113,10 @@ Loop : LoopControlVariablesNameTab[ImbricatedLoop] = $2 ; TheSymbol.Name = $2; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(1,1,sizeof(double)); List_Put(TheSymbol.val, 0, &$5); - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else{ List_Write(pSymbol->val, 0, &$5); @@ -2134,10 +2134,10 @@ Loop : LoopControlVariablesNameTab[ImbricatedLoop] = $2 ; TheSymbol.Name = $2; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ TheSymbol.val = List_Create(1,1,sizeof(double)); List_Put(TheSymbol.val, 0, &$5); - List_Add(Symbol_L, &TheSymbol); + Tree_Add(Symbol_T, &TheSymbol); } else{ List_Write(pSymbol->val, 0, &$5); @@ -2156,7 +2156,7 @@ Loop : if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){ TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1]; - pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols); + pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol); *(double*)List_Pointer_Fast(pSymbol->val, 0) += LoopControlVariablesTab[ImbricatedLoop-1][2] ; } @@ -2690,7 +2690,7 @@ FExpr_Single : | tSTRING { TheSymbol.Name = $1 ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", $1) ; $$ = 0. ; } @@ -2701,7 +2701,7 @@ FExpr_Single : | tSTRING '[' FExpr ']' { TheSymbol.Name = $1 ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", $1) ; $$ = 0. ; } @@ -2718,7 +2718,7 @@ FExpr_Single : | tSTRING NumericIncrement { TheSymbol.Name = $1 ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", $1) ; $$ = 0. ; } @@ -2729,7 +2729,7 @@ FExpr_Single : | tSTRING '[' FExpr ']' NumericIncrement { TheSymbol.Name = $1 ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", $1) ; $$ = 0. ; } @@ -2943,7 +2943,7 @@ FExpr_Multi : { $$ = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = $1 ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", $1) ; d = 0.0 ; List_Add($$, &d); @@ -2957,7 +2957,7 @@ FExpr_Multi : { $$ = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = $2 ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", $2) ; d = 0.0 ; List_Add($$, &d); @@ -2973,7 +2973,7 @@ FExpr_Multi : { $$ = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = $1 ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", $1) ; d = 0.0 ; List_Add($$, &d); @@ -2993,7 +2993,7 @@ FExpr_Multi : { $$ = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = $2 ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + if (!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) { yymsg(GERROR, "Unknown variable '%s'", $2) ; d = 0.0 ; List_Add($$, &d); @@ -3187,24 +3187,24 @@ StringExpr : %% -void InitSymbols(void){ - if(!Symbol_L) - Symbol_L = List_Create(50,10,sizeof(Symbol)); - else - List_Reset(Symbol_L); -} - -void DeleteSymbols(void){ - int i; - for(i = 0 ; i < List_Nbr(Symbol_L) ; i++) - List_Delete(((Symbol*)List_Pointer_Fast(Symbol_L,i))->val); - List_Delete(Symbol_L); +void DeleteSymbol(void *a, void *b){ + Symbol *s = (Symbol*)a; + Free(s->Name); + List_Delete(s->val); } int CompareSymbols (const void *a, const void *b){ return(strcmp(((Symbol*)a)->Name,((Symbol*)b)->Name)); } +void InitSymbols(void){ + if(Symbol_T){ + Tree_Action(Symbol_T, DeleteSymbol); + Tree_Delete(Symbol_T); + } + Symbol_T = Tree_Create(sizeof(Symbol), CompareSymbols); +} + int PrintListOfDouble(char *format, List_T *list, char *buffer){ int i, j, k; char tmp1[256], tmp2[256]; diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 3a62c3452560c06d5658e4250e34bde3ca3623cf..12187011ee6e9d8f5400cc895de4bd97eab46ecf 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.156 2003-04-19 22:10:29 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.157 2003-05-22 21:41:13 geuzaine Exp $ */ #define FLEX_SCANNER @@ -1012,7 +1012,7 @@ char *yytext; #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.156 2003-04-19 22:10:29 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.157 2003-05-22 21:41:13 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // diff --git a/Parser/Parser.h b/Parser/Parser.h index 0b742dd3587ae6781f8d1ba2f86e3e6c9c021523..d7bcb3738561908e5fd38e9d4d587638ac40bfa5 100644 --- a/Parser/Parser.h +++ b/Parser/Parser.h @@ -31,7 +31,7 @@ void InitSymbols (void); void DeleteSymbols(void); int CompareSymbols (const void *a, const void *b); -extern List_T *Symbol_L; +extern Tree_T *Symbol_T; int yyparse (void); int yylex (); diff --git a/doc/VERSIONS b/doc/VERSIONS index 65fa3b40db7963fa02ee73e04d288e6d199b0f5b..a92dfbafa4893bf75134f380b9b574fa4e208928 100644 --- a/doc/VERSIONS +++ b/doc/VERSIONS @@ -1,7 +1,8 @@ -$Id: VERSIONS,v 1.143 2003-05-14 14:23:10 geuzaine Exp $ +$Id: VERSIONS,v 1.144 2003-05-22 21:41:14 geuzaine Exp $ New in 1.45: small bug fixes (min/max computation for tensor views, -physical points in read mesh, etc.); documentation updates; +physical points in read mesh, etc.); variable definition speedup; +documentation updates; New in 1.44: new reference manual; added support for PNG output; fixed small configure script bugs;