diff --git a/Plugin/CutGrid.cpp b/Plugin/CutGrid.cpp index d3d9d6110a6636bd4f190ed289b110389df608b1..da3d312728e3b634be69ea0263a46ac491be1551 100644 --- a/Plugin/CutGrid.cpp +++ b/Plugin/CutGrid.cpp @@ -1,4 +1,4 @@ -// $Id: CutGrid.cpp,v 1.6 2004-05-12 02:02:30 geuzaine Exp $ +// $Id: CutGrid.cpp,v 1.7 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -212,20 +212,17 @@ Post_View * GMSH_CutGridPlugin::GenerateView(Post_View * v) const Post_View *GMSH_CutGridPlugin::execute(Post_View * v) { - Post_View *vv; - int iView = (int)CutGridOptions_Number[11].def; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - Post_View * newView = GenerateView (vv); - - return newView; + + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + + return GenerateView(v1); } diff --git a/Plugin/CutMap.cpp b/Plugin/CutMap.cpp index 943ff769f13579c37daf5b627f8c80f39674b2a1..c3da508e12536c4499d8ccf8a72cb0f82fffbdb6 100644 --- a/Plugin/CutMap.cpp +++ b/Plugin/CutMap.cpp @@ -1,4 +1,4 @@ -// $Id: CutMap.cpp,v 1.36 2004-03-13 21:00:19 geuzaine Exp $ +// $Id: CutMap.cpp,v 1.37 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -94,25 +94,21 @@ double GMSH_CutMapPlugin::levelset(double x, double y, double z, double val) con Post_View *GMSH_CutMapPlugin::execute(Post_View * v) { - Post_View *vv; - int iView = (int)CutMapOptions_Number[3].def; _valueIndependent = 0; _valueView = (int)CutMapOptions_Number[2].def; _valueTimeStep = (int)CutMapOptions_Number[1].def; _orientation = GMSH_LevelsetPlugin::MAP; + if(iView < 0) + iView = v ? v->Index : 0; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - return GMSH_LevelsetPlugin::execute(vv); + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + + return GMSH_LevelsetPlugin::execute(v1); } diff --git a/Plugin/CutPlane.cpp b/Plugin/CutPlane.cpp index 99d373db633b3ee9ec81bff90900f3428c59e33c..3ed27f666d8b39c56f15b6490817cceace7b51e4 100644 --- a/Plugin/CutPlane.cpp +++ b/Plugin/CutPlane.cpp @@ -1,4 +1,4 @@ -// $Id: CutPlane.cpp,v 1.33 2004-03-13 21:00:19 geuzaine Exp $ +// $Id: CutPlane.cpp,v 1.34 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -90,8 +90,6 @@ double GMSH_CutPlanePlugin::levelset(double x, double y, double z, double val) c Post_View *GMSH_CutPlanePlugin::execute(Post_View * v) { - Post_View *vv; - int iView = (int)CutPlaneOptions_Number[4].def; _ref[0] = CutPlaneOptions_Number[0].def; _ref[1] = CutPlaneOptions_Number[1].def; @@ -101,16 +99,15 @@ Post_View *GMSH_CutPlanePlugin::execute(Post_View * v) _valueTimeStep = -1; _orientation = GMSH_LevelsetPlugin::PLANE; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - return GMSH_LevelsetPlugin::execute(vv); + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + + return GMSH_LevelsetPlugin::execute(v1); } diff --git a/Plugin/CutSphere.cpp b/Plugin/CutSphere.cpp index d1d1d7706744ad0b8a96c46e15d0e9be0e31585a..87ae2637dcb74a3fdb498c49408d8713a6fff0cb 100644 --- a/Plugin/CutSphere.cpp +++ b/Plugin/CutSphere.cpp @@ -1,4 +1,4 @@ -// $Id: CutSphere.cpp,v 1.31 2004-03-13 21:00:19 geuzaine Exp $ +// $Id: CutSphere.cpp,v 1.32 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -94,8 +94,6 @@ double GMSH_CutSpherePlugin::levelset(double x, double y, double z, Post_View *GMSH_CutSpherePlugin::execute(Post_View * v) { - Post_View *vv; - int iView = (int)CutSphereOptions_Number[4].def; _ref[0] = CutSphereOptions_Number[0].def; _ref[1] = CutSphereOptions_Number[1].def; @@ -105,16 +103,15 @@ Post_View *GMSH_CutSpherePlugin::execute(Post_View * v) _valueTimeStep = -1; _orientation = GMSH_LevelsetPlugin::SPHERE; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - return GMSH_LevelsetPlugin::execute(vv); + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + + return GMSH_LevelsetPlugin::execute(v1); } diff --git a/Plugin/DecomposeInSimplex.cpp b/Plugin/DecomposeInSimplex.cpp index 09c89282b189c254d3c6206455493c295e183f29..1e777d46403a3bdf69eee73df9b4da5f26c8e15c 100644 --- a/Plugin/DecomposeInSimplex.cpp +++ b/Plugin/DecomposeInSimplex.cpp @@ -1,4 +1,4 @@ -// $Id: DecomposeInSimplex.cpp,v 1.10 2004-05-13 17:48:56 geuzaine Exp $ +// $Id: DecomposeInSimplex.cpp,v 1.11 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -123,48 +123,45 @@ static void decomposeList(Post_View *v, int nbNod, int nbComp, Post_View *GMSH_DecomposeInSimplexPlugin::execute(Post_View * v) { - Post_View *vv; - int iView = (int)DecomposeInSimplexOptions_Number[0].def; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + // Bail out if the view is a duplicate or if other views duplicate it - if(vv->DuplicateOf || vv->Links) { + if(v1->DuplicateOf || v1->Links) { Msg(GERROR, "DecomposeInSimplex cannot be applied to a duplicated view"); return 0; } // quads - decomposeList(vv, 4, 1, &vv->SQ, &vv->NbSQ, vv->ST, &vv->NbST); - decomposeList(vv, 4, 3, &vv->VQ, &vv->NbVQ, vv->VT, &vv->NbVT); - decomposeList(vv, 4, 9, &vv->TQ, &vv->NbTQ, vv->TT, &vv->NbTT); + decomposeList(v1, 4, 1, &v1->SQ, &v1->NbSQ, v1->ST, &v1->NbST); + decomposeList(v1, 4, 3, &v1->VQ, &v1->NbVQ, v1->VT, &v1->NbVT); + decomposeList(v1, 4, 9, &v1->TQ, &v1->NbTQ, v1->TT, &v1->NbTT); // hexas - decomposeList(vv, 8, 1, &vv->SH, &vv->NbSH, vv->SS, &vv->NbSS); - decomposeList(vv, 8, 3, &vv->VH, &vv->NbVH, vv->VS, &vv->NbVS); - decomposeList(vv, 8, 9, &vv->TH, &vv->NbTH, vv->TS, &vv->NbTS); + decomposeList(v1, 8, 1, &v1->SH, &v1->NbSH, v1->SS, &v1->NbSS); + decomposeList(v1, 8, 3, &v1->VH, &v1->NbVH, v1->VS, &v1->NbVS); + decomposeList(v1, 8, 9, &v1->TH, &v1->NbTH, v1->TS, &v1->NbTS); // prisms - decomposeList(vv, 6, 1, &vv->SI, &vv->NbSI, vv->SS, &vv->NbSS); - decomposeList(vv, 6, 3, &vv->VI, &vv->NbVI, vv->VS, &vv->NbVS); - decomposeList(vv, 6, 9, &vv->TI, &vv->NbTI, vv->TS, &vv->NbTS); + decomposeList(v1, 6, 1, &v1->SI, &v1->NbSI, v1->SS, &v1->NbSS); + decomposeList(v1, 6, 3, &v1->VI, &v1->NbVI, v1->VS, &v1->NbVS); + decomposeList(v1, 6, 9, &v1->TI, &v1->NbTI, v1->TS, &v1->NbTS); // pyramids - decomposeList(vv, 5, 1, &vv->SY, &vv->NbSY, vv->SS, &vv->NbSS); - decomposeList(vv, 5, 3, &vv->VY, &vv->NbVY, vv->VS, &vv->NbVS); - decomposeList(vv, 5, 9, &vv->TY, &vv->NbTY, vv->TS, &vv->NbTS); + decomposeList(v1, 5, 1, &v1->SY, &v1->NbSY, v1->SS, &v1->NbSS); + decomposeList(v1, 5, 3, &v1->VY, &v1->NbVY, v1->VS, &v1->NbVS); + decomposeList(v1, 5, 9, &v1->TY, &v1->NbTY, v1->TS, &v1->NbTS); - return vv; + return v1; } // Utility class diff --git a/Plugin/DisplacementRaise.cpp b/Plugin/DisplacementRaise.cpp index d335b7d750fcd51d1f6376f58ce7eb086fe27e62..6325df1eab6cae07e5f1c7d715e5f38833ea4efc 100644 --- a/Plugin/DisplacementRaise.cpp +++ b/Plugin/DisplacementRaise.cpp @@ -1,4 +1,4 @@ -// $Id: DisplacementRaise.cpp,v 1.14 2004-05-13 17:48:56 geuzaine Exp $ +// $Id: DisplacementRaise.cpp,v 1.15 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -162,34 +162,32 @@ static void displacementRaise(Post_View * v, Post_View * w, double factor, int t Post_View *GMSH_DisplacementRaisePlugin::execute(Post_View * v) { - Post_View *vv, *ww; - double factor = DisplacementRaiseOptions_Number[0].def; int dTimeStep = (int)DisplacementRaiseOptions_Number[1].def; int dView = (int)DisplacementRaiseOptions_Number[2].def; int iView = (int)DisplacementRaiseOptions_Number[3].def; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(GERROR, "View[%d] does not exist", iView); - return 0; - } - } + if(iView < 0) + iView = v ? v->Index : 0; - if(dView < 0){ - dView = vv->Index + 1; // by default, try to use the next view + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - if(!(ww = (Post_View *) List_Pointer_Test(CTX.post.list, dView))) { + + if(dView < 0) + dView = iView + 1; // by default, try to use the next view + + if(!List_Pointer_Test(CTX.post.list, dView)) { Msg(GERROR, "View[%d] does not exist", dView); - return 0; + return v; } - displacementRaise(vv, ww, factor, dTimeStep); + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + Post_View *v2 = (Post_View*)List_Pointer(CTX.post.list, dView); + + displacementRaise(v1, v2, factor, dTimeStep); - return vv; + return v1; } diff --git a/Plugin/Evaluate.cpp b/Plugin/Evaluate.cpp index 0230c56ffa281754b04a98de9fa20ac64bdc60d6..db0924d367496d51eada1d1468973ace709b5494 100644 --- a/Plugin/Evaluate.cpp +++ b/Plugin/Evaluate.cpp @@ -1,4 +1,4 @@ -// $Id: Evaluate.cpp,v 1.6 2004-05-13 17:48:56 geuzaine Exp $ +// $Id: Evaluate.cpp,v 1.7 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -187,56 +187,53 @@ static void evaluate(Post_View * v, List_T * list, int nbElm, Post_View *GMSH_EvaluatePlugin::execute(Post_View * v) { - Post_View *vv; - int timeStep = (int)EvaluateOptions_Number[0].def; int comp = (int)EvaluateOptions_Number[1].def; int iView = (int)EvaluateOptions_Number[2].def; char *expr = EvaluateOptions_String[0].def; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - evaluate(vv, vv->SP, vv->NbSP, 1, 1, comp, timeStep, expr); - evaluate(vv, vv->VP, vv->NbVP, 1, 3, comp, timeStep, expr); - evaluate(vv, vv->TP, vv->NbTP, 1, 9, comp, timeStep, expr); + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + + evaluate(v1, v1->SP, v1->NbSP, 1, 1, comp, timeStep, expr); + evaluate(v1, v1->VP, v1->NbVP, 1, 3, comp, timeStep, expr); + evaluate(v1, v1->TP, v1->NbTP, 1, 9, comp, timeStep, expr); - evaluate(vv, vv->SL, vv->NbSL, 2, 1, comp, timeStep, expr); - evaluate(vv, vv->VL, vv->NbVL, 2, 3, comp, timeStep, expr); - evaluate(vv, vv->TL, vv->NbTL, 2, 9, comp, timeStep, expr); + evaluate(v1, v1->SL, v1->NbSL, 2, 1, comp, timeStep, expr); + evaluate(v1, v1->VL, v1->NbVL, 2, 3, comp, timeStep, expr); + evaluate(v1, v1->TL, v1->NbTL, 2, 9, comp, timeStep, expr); - evaluate(vv, vv->ST, vv->NbST, 3, 1, comp, timeStep, expr); - evaluate(vv, vv->VT, vv->NbVT, 3, 3, comp, timeStep, expr); - evaluate(vv, vv->TT, vv->NbTT, 3, 9, comp, timeStep, expr); + evaluate(v1, v1->ST, v1->NbST, 3, 1, comp, timeStep, expr); + evaluate(v1, v1->VT, v1->NbVT, 3, 3, comp, timeStep, expr); + evaluate(v1, v1->TT, v1->NbTT, 3, 9, comp, timeStep, expr); - evaluate(vv, vv->SQ, vv->NbSQ, 4, 1, comp, timeStep, expr); - evaluate(vv, vv->VQ, vv->NbVQ, 4, 3, comp, timeStep, expr); - evaluate(vv, vv->TQ, vv->NbTQ, 4, 9, comp, timeStep, expr); + evaluate(v1, v1->SQ, v1->NbSQ, 4, 1, comp, timeStep, expr); + evaluate(v1, v1->VQ, v1->NbVQ, 4, 3, comp, timeStep, expr); + evaluate(v1, v1->TQ, v1->NbTQ, 4, 9, comp, timeStep, expr); - evaluate(vv, vv->SS, vv->NbSS, 4, 1, comp, timeStep, expr); - evaluate(vv, vv->VS, vv->NbVS, 4, 3, comp, timeStep, expr); - evaluate(vv, vv->TS, vv->NbTS, 4, 9, comp, timeStep, expr); + evaluate(v1, v1->SS, v1->NbSS, 4, 1, comp, timeStep, expr); + evaluate(v1, v1->VS, v1->NbVS, 4, 3, comp, timeStep, expr); + evaluate(v1, v1->TS, v1->NbTS, 4, 9, comp, timeStep, expr); - evaluate(vv, vv->SH, vv->NbSH, 8, 1, comp, timeStep, expr); - evaluate(vv, vv->VH, vv->NbVH, 8, 3, comp, timeStep, expr); - evaluate(vv, vv->TH, vv->NbTH, 8, 9, comp, timeStep, expr); + evaluate(v1, v1->SH, v1->NbSH, 8, 1, comp, timeStep, expr); + evaluate(v1, v1->VH, v1->NbVH, 8, 3, comp, timeStep, expr); + evaluate(v1, v1->TH, v1->NbTH, 8, 9, comp, timeStep, expr); - evaluate(vv, vv->SI, vv->NbSI, 6, 1, comp, timeStep, expr); - evaluate(vv, vv->VI, vv->NbVI, 6, 3, comp, timeStep, expr); - evaluate(vv, vv->TI, vv->NbTI, 6, 9, comp, timeStep, expr); + evaluate(v1, v1->SI, v1->NbSI, 6, 1, comp, timeStep, expr); + evaluate(v1, v1->VI, v1->NbVI, 6, 3, comp, timeStep, expr); + evaluate(v1, v1->TI, v1->NbTI, 6, 9, comp, timeStep, expr); - evaluate(vv, vv->SY, vv->NbSY, 5, 1, comp, timeStep, expr); - evaluate(vv, vv->VY, vv->NbVY, 5, 3, comp, timeStep, expr); - evaluate(vv, vv->TY, vv->NbTY, 5, 9, comp, timeStep, expr); + evaluate(v1, v1->SY, v1->NbSY, 5, 1, comp, timeStep, expr); + evaluate(v1, v1->VY, v1->NbVY, 5, 3, comp, timeStep, expr); + evaluate(v1, v1->TY, v1->NbTY, 5, 9, comp, timeStep, expr); - return vv; + return v1; } diff --git a/Plugin/Extract.cpp b/Plugin/Extract.cpp index 44469f91a5059f62333d9ee58eab05e4815549c2..0cdcb06f1d70ae536c909a527e4c246b080b62fe 100644 --- a/Plugin/Extract.cpp +++ b/Plugin/Extract.cpp @@ -1,4 +1,4 @@ -// $Id: Extract.cpp,v 1.10 2004-05-13 15:54:56 geuzaine Exp $ +// $Id: Extract.cpp,v 1.11 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -197,70 +197,66 @@ Post_View *GMSH_ExtractPlugin::execute(Post_View * v) char *expr[3] = { ExtractOptions_String[0].def, ExtractOptions_String[1].def, ExtractOptions_String[2].def }; - Post_View *vv; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - // FIXME: this is not secure: if BeginView forces a post.list - // reallocation, vv is wrong - Post_View *view = BeginView(1); - Post_View *z = view; + Post_View *v2 = BeginView(1); + + // get v1 after BeginView: this is ok even if post.list got reallocated + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); // points - extract(expr, vv->SP, vv->NbSP, z->SP, &z->NbSP, z->VP, &z->NbVP, vv->NbTimeStep, 1, 1); - extract(expr, vv->VP, vv->NbVP, z->SP, &z->NbSP, z->VP, &z->NbVP, vv->NbTimeStep, 1, 3); - extract(expr, vv->TP, vv->NbTP, z->SP, &z->NbSP, z->VP, &z->NbVP, vv->NbTimeStep, 1, 9); + extract(expr, v1->SP, v1->NbSP, v2->SP, &v2->NbSP, v2->VP, &v2->NbVP, v1->NbTimeStep, 1, 1); + extract(expr, v1->VP, v1->NbVP, v2->SP, &v2->NbSP, v2->VP, &v2->NbVP, v1->NbTimeStep, 1, 3); + extract(expr, v1->TP, v1->NbTP, v2->SP, &v2->NbSP, v2->VP, &v2->NbVP, v1->NbTimeStep, 1, 9); // lines - extract(expr, vv->SL, vv->NbSL, z->SL, &z->NbSL, z->VL, &z->NbVL, vv->NbTimeStep, 2, 1); - extract(expr, vv->VL, vv->NbVL, z->SL, &z->NbSL, z->VL, &z->NbVL, vv->NbTimeStep, 2, 3); - extract(expr, vv->TL, vv->NbTL, z->SL, &z->NbSL, z->VL, &z->NbVL, vv->NbTimeStep, 2, 9); + extract(expr, v1->SL, v1->NbSL, v2->SL, &v2->NbSL, v2->VL, &v2->NbVL, v1->NbTimeStep, 2, 1); + extract(expr, v1->VL, v1->NbVL, v2->SL, &v2->NbSL, v2->VL, &v2->NbVL, v1->NbTimeStep, 2, 3); + extract(expr, v1->TL, v1->NbTL, v2->SL, &v2->NbSL, v2->VL, &v2->NbVL, v1->NbTimeStep, 2, 9); // triangles - extract(expr, vv->ST, vv->NbST, z->ST, &z->NbST, z->VT, &z->NbVT, vv->NbTimeStep, 3, 1); - extract(expr, vv->VT, vv->NbVT, z->ST, &z->NbST, z->VT, &z->NbVT, vv->NbTimeStep, 3, 3); - extract(expr, vv->TT, vv->NbTT, z->ST, &z->NbST, z->VT, &z->NbVT, vv->NbTimeStep, 3, 9); + extract(expr, v1->ST, v1->NbST, v2->ST, &v2->NbST, v2->VT, &v2->NbVT, v1->NbTimeStep, 3, 1); + extract(expr, v1->VT, v1->NbVT, v2->ST, &v2->NbST, v2->VT, &v2->NbVT, v1->NbTimeStep, 3, 3); + extract(expr, v1->TT, v1->NbTT, v2->ST, &v2->NbST, v2->VT, &v2->NbVT, v1->NbTimeStep, 3, 9); // quadrangles - extract(expr, vv->SQ, vv->NbSQ, z->SQ, &z->NbSQ, z->VQ, &z->NbVQ, vv->NbTimeStep, 4, 1); - extract(expr, vv->VQ, vv->NbVQ, z->SQ, &z->NbSQ, z->VQ, &z->NbVQ, vv->NbTimeStep, 4, 3); - extract(expr, vv->TQ, vv->NbTQ, z->SQ, &z->NbSQ, z->VQ, &z->NbVQ, vv->NbTimeStep, 4, 9); + extract(expr, v1->SQ, v1->NbSQ, v2->SQ, &v2->NbSQ, v2->VQ, &v2->NbVQ, v1->NbTimeStep, 4, 1); + extract(expr, v1->VQ, v1->NbVQ, v2->SQ, &v2->NbSQ, v2->VQ, &v2->NbVQ, v1->NbTimeStep, 4, 3); + extract(expr, v1->TQ, v1->NbTQ, v2->SQ, &v2->NbSQ, v2->VQ, &v2->NbVQ, v1->NbTimeStep, 4, 9); // tets - extract(expr, vv->SS, vv->NbSS, z->SS, &z->NbSS, z->VS, &z->NbVS, vv->NbTimeStep, 4, 1); - extract(expr, vv->VS, vv->NbVS, z->SS, &z->NbSS, z->VS, &z->NbVS, vv->NbTimeStep, 4, 3); - extract(expr, vv->TS, vv->NbTS, z->SS, &z->NbSS, z->VS, &z->NbVS, vv->NbTimeStep, 4, 9); + extract(expr, v1->SS, v1->NbSS, v2->SS, &v2->NbSS, v2->VS, &v2->NbVS, v1->NbTimeStep, 4, 1); + extract(expr, v1->VS, v1->NbVS, v2->SS, &v2->NbSS, v2->VS, &v2->NbVS, v1->NbTimeStep, 4, 3); + extract(expr, v1->TS, v1->NbTS, v2->SS, &v2->NbSS, v2->VS, &v2->NbVS, v1->NbTimeStep, 4, 9); // hexas - extract(expr, vv->SH, vv->NbSH, z->SH, &z->NbSH, z->VH, &z->NbVH, vv->NbTimeStep, 8, 1); - extract(expr, vv->VH, vv->NbVH, z->SH, &z->NbSH, z->VH, &z->NbVH, vv->NbTimeStep, 8, 3); - extract(expr, vv->TH, vv->NbTH, z->SH, &z->NbSH, z->VH, &z->NbVH, vv->NbTimeStep, 8, 9); + extract(expr, v1->SH, v1->NbSH, v2->SH, &v2->NbSH, v2->VH, &v2->NbVH, v1->NbTimeStep, 8, 1); + extract(expr, v1->VH, v1->NbVH, v2->SH, &v2->NbSH, v2->VH, &v2->NbVH, v1->NbTimeStep, 8, 3); + extract(expr, v1->TH, v1->NbTH, v2->SH, &v2->NbSH, v2->VH, &v2->NbVH, v1->NbTimeStep, 8, 9); // prisms - extract(expr, vv->SI, vv->NbSI, z->SI, &z->NbSI, z->VI, &z->NbVI, vv->NbTimeStep, 6, 1); - extract(expr, vv->VI, vv->NbVI, z->SI, &z->NbSI, z->VI, &z->NbVI, vv->NbTimeStep, 6, 3); - extract(expr, vv->TI, vv->NbTI, z->SI, &z->NbSI, z->VI, &z->NbVI, vv->NbTimeStep, 6, 9); + extract(expr, v1->SI, v1->NbSI, v2->SI, &v2->NbSI, v2->VI, &v2->NbVI, v1->NbTimeStep, 6, 1); + extract(expr, v1->VI, v1->NbVI, v2->SI, &v2->NbSI, v2->VI, &v2->NbVI, v1->NbTimeStep, 6, 3); + extract(expr, v1->TI, v1->NbTI, v2->SI, &v2->NbSI, v2->VI, &v2->NbVI, v1->NbTimeStep, 6, 9); // pyramids - extract(expr, vv->SY, vv->NbSY, z->SY, &z->NbSY, z->VY, &z->NbVY, vv->NbTimeStep, 5, 1); - extract(expr, vv->VY, vv->NbVY, z->SY, &z->NbSY, z->VY, &z->NbVY, vv->NbTimeStep, 5, 3); - extract(expr, vv->TY, vv->NbTY, z->SY, &z->NbSY, z->VY, &z->NbVY, vv->NbTimeStep, 5, 9); + extract(expr, v1->SY, v1->NbSY, v2->SY, &v2->NbSY, v2->VY, &v2->NbVY, v1->NbTimeStep, 5, 1); + extract(expr, v1->VY, v1->NbVY, v2->SY, &v2->NbSY, v2->VY, &v2->NbVY, v1->NbTimeStep, 5, 3); + extract(expr, v1->TY, v1->NbTY, v2->SY, &v2->NbSY, v2->VY, &v2->NbVY, v1->NbTimeStep, 5, 9); - if(view->empty()) { - RemoveViewByNumber(view->Num); + if(v2->empty()) { + RemoveViewByNumber(v2->Num); + return v1; } else{ // copy time data - for(int i = 0; i < List_Nbr(vv->Time); i++) - List_Add(view->Time, List_Pointer(vv->Time, i)); + for(int i = 0; i < List_Nbr(v1->Time); i++) + List_Add(v2->Time, List_Pointer(v1->Time, i)); // finalize char name[1024], filename[1024]; - sprintf(name, "%s_Extract", vv->Name); - sprintf(filename, "%s_Extract.pos", vv->Name); - EndView(view, 1, filename, name); + sprintf(name, "%s_Extract", v1->Name); + sprintf(filename, "%s_Extract.pos", v1->Name); + EndView(v2, 1, filename, name); + return v2; } - - return 0; } diff --git a/Plugin/Harmonic2Time.cpp b/Plugin/Harmonic2Time.cpp index 2612dc7f66b77976b5187b71f57828391104f3d3..d44df315ad8901bb00321fc4682d284aab3c2dae 100644 --- a/Plugin/Harmonic2Time.cpp +++ b/Plugin/Harmonic2Time.cpp @@ -1,4 +1,4 @@ -// $Id: Harmonic2Time.cpp,v 1.13 2004-03-13 21:00:19 geuzaine Exp $ +// $Id: Harmonic2Time.cpp,v 1.14 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -109,7 +109,6 @@ static void harmonic2time(Post_View * vv, Post_View * View, Post_View *GMSH_Harmonic2TimePlugin::execute(Post_View * v) { - Post_View *vv, *View; int rIndex, iIndex, nbSteps, iView; rIndex = (int)Harmonic2TimeOptions_Number[0].def; @@ -117,31 +116,31 @@ Post_View *GMSH_Harmonic2TimePlugin::execute(Post_View * v) nbSteps = (int)Harmonic2TimeOptions_Number[2].def; iView = (int)Harmonic2TimeOptions_Number[3].def; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - if(MIN(rIndex, iIndex) >= 0 && vv->NbTimeStep >= MAX(rIndex, iIndex)) { + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + + if(MIN(rIndex, iIndex) >= 0 && v1->NbTimeStep >= MAX(rIndex, iIndex)) { // FIXME: this is not secure: if BeginView forces a post.list - // reallocation, vv is wrong - View = BeginView(1); - harmonic2time(vv, View, rIndex, iIndex, nbSteps); + // reallocation, v1 could be wrong + Post_View *v2 = BeginView(1); + harmonic2time(v1, v2, rIndex, iIndex, nbSteps); // create time data // FIXME: todo // finalize char name[1024], filename[1024]; - sprintf(name, "%s_Harmonic2Time", vv->Name); - sprintf(filename, "%s_Harmonic2Time.pos", vv->Name); - EndView(View, 1, filename, name); + sprintf(name, "%s_Harmonic2Time", v1->Name); + sprintf(filename, "%s_Harmonic2Time.pos", v1->Name); + EndView(v2, 1, filename, name); + return v2; } - return 0; + return v1; } diff --git a/Plugin/Skin.cpp b/Plugin/Skin.cpp index 9b17dcbf6d4484b71470778588d27a1a192c20aa..26c1794f9621c8054ebcce31b10e4743c8fdc955 100644 --- a/Plugin/Skin.cpp +++ b/Plugin/Skin.cpp @@ -1,4 +1,4 @@ -// $Id: Skin.cpp,v 1.26 2004-03-13 21:00:19 geuzaine Exp $ +// $Id: Skin.cpp,v 1.27 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -172,24 +172,19 @@ void GMSH_SkinPlugin::skinList(List_T *inList, int inNbList, Post_View *GMSH_SkinPlugin::execute(Post_View * v) { int iView = (int)SkinOptions_Number[0].def; - Post_View *vv; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - _nbTimeStep = vv->NbTimeStep; + Post_View *v2 = BeginView(1); + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); - // FIXME: this is not secure: if BeginView forces a post.list - // reallocation, vv is wrong - Post_View *view = BeginView(1); + _nbTimeStep = v1->NbTimeStep; int skinTri[6][4] = {{0,1,-1,-1}, {1,2,-1,-1}, {2,0,-1,-1}}; int skinQua[6][4] = {{0,1,-1,-1}, {1,2,-1,-1}, {2,3,-1,-1}, {3,0,-1,-1}}; @@ -205,23 +200,23 @@ Post_View *GMSH_SkinPlugin::execute(Post_View * v) _nbNod = 2; // scalar _skin = Tree_Create(sizeof(Elm), fcmpElm); - _list = view->SL; _nbList = &view->NbSL; _nbComp = 1; - skinList(vv->ST, vv->NbST, 3, 3, skinTri); - skinList(vv->SQ, vv->NbSQ, 4, 4, skinQua); + _list = v2->SL; _nbList = &v2->NbSL; _nbComp = 1; + skinList(v1->ST, v1->NbST, 3, 3, skinTri); + skinList(v1->SQ, v1->NbSQ, 4, 4, skinQua); Tree_Action(_skin, addInView); Tree_Delete(_skin); // vector _skin = Tree_Create(sizeof(Elm), fcmpElm); - _list = view->VL; _nbList = &view->NbVL; _nbComp = 3; - skinList(vv->VT, vv->NbVT, 3, 3, skinTri); - skinList(vv->VQ, vv->NbVQ, 4, 4, skinQua); + _list = v2->VL; _nbList = &v2->NbVL; _nbComp = 3; + skinList(v1->VT, v1->NbVT, 3, 3, skinTri); + skinList(v1->VQ, v1->NbVQ, 4, 4, skinQua); Tree_Action(_skin, addInView); Tree_Delete(_skin); // tensor _skin = Tree_Create(sizeof(Elm), fcmpElm); - _list = view->TL; _nbList = &view->NbTL; _nbComp = 9; - skinList(vv->TT, vv->NbTT, 3, 3, skinTri); - skinList(vv->TQ, vv->NbTQ, 4, 4, skinQua); + _list = v2->TL; _nbList = &v2->NbTL; _nbComp = 9; + skinList(v1->TT, v1->NbTT, 3, 3, skinTri); + skinList(v1->TQ, v1->NbTQ, 4, 4, skinQua); Tree_Action(_skin, addInView); Tree_Delete(_skin); @@ -229,26 +224,26 @@ Post_View *GMSH_SkinPlugin::execute(Post_View * v) _nbNod = 3; // scalar _skin = Tree_Create(sizeof(Elm), fcmpElm); - _list = view->ST; _nbList = &view->NbST; _nbComp = 1; - skinList(vv->SS, vv->NbSS, 4, 4, skinTet); - skinList(vv->SI, vv->NbSI, 6, 2, skinPri2); - skinList(vv->SY, vv->NbSY, 5, 4, skinPyr2); + _list = v2->ST; _nbList = &v2->NbST; _nbComp = 1; + skinList(v1->SS, v1->NbSS, 4, 4, skinTet); + skinList(v1->SI, v1->NbSI, 6, 2, skinPri2); + skinList(v1->SY, v1->NbSY, 5, 4, skinPyr2); Tree_Action(_skin, addInView); Tree_Delete(_skin); // vector _skin = Tree_Create(sizeof(Elm), fcmpElm); - _list = view->VT; _nbList = &view->NbVT; _nbComp = 3; - skinList(vv->VS, vv->NbVS, 4, 4, skinTet); - skinList(vv->VI, vv->NbVI, 6, 2, skinPri2); - skinList(vv->VY, vv->NbVY, 5, 4, skinPyr2); + _list = v2->VT; _nbList = &v2->NbVT; _nbComp = 3; + skinList(v1->VS, v1->NbVS, 4, 4, skinTet); + skinList(v1->VI, v1->NbVI, 6, 2, skinPri2); + skinList(v1->VY, v1->NbVY, 5, 4, skinPyr2); Tree_Action(_skin, addInView); Tree_Delete(_skin); // tensor _skin = Tree_Create(sizeof(Elm), fcmpElm); - _list = view->TT; _nbList = &view->NbTT; _nbComp = 9; - skinList(vv->TS, vv->NbTS, 4, 4, skinTet); - skinList(vv->TI, vv->NbTI, 6, 2, skinPri2); - skinList(vv->TY, vv->NbTY, 5, 4, skinPyr2); + _list = v2->TT; _nbList = &v2->NbTT; _nbComp = 9; + skinList(v1->TS, v1->NbTS, 4, 4, skinTet); + skinList(v1->TI, v1->NbTI, 6, 2, skinPri2); + skinList(v1->TY, v1->NbTY, 5, 4, skinPyr2); Tree_Action(_skin, addInView); Tree_Delete(_skin); @@ -256,42 +251,42 @@ Post_View *GMSH_SkinPlugin::execute(Post_View * v) _nbNod = 4; // scalar _skin = Tree_Create(sizeof(Elm), fcmpElm); - _list = view->SQ; _nbList = &view->NbSQ; _nbComp = 1; - skinList(vv->SH, vv->NbSH, 8, 6, skinHex); - skinList(vv->SI, vv->NbSI, 6, 3, skinPri1); - skinList(vv->SY, vv->NbSY, 5, 1, skinPyr1); + _list = v2->SQ; _nbList = &v2->NbSQ; _nbComp = 1; + skinList(v1->SH, v1->NbSH, 8, 6, skinHex); + skinList(v1->SI, v1->NbSI, 6, 3, skinPri1); + skinList(v1->SY, v1->NbSY, 5, 1, skinPyr1); Tree_Action(_skin, addInView); Tree_Delete(_skin); // vector _skin = Tree_Create(sizeof(Elm), fcmpElm); - _list = view->VQ; _nbList = &view->NbVQ; _nbComp = 3; - skinList(vv->VH, vv->NbVH, 8, 6, skinHex); - skinList(vv->VI, vv->NbVI, 6, 3, skinPri1); - skinList(vv->VY, vv->NbVY, 5, 1, skinPyr1); + _list = v2->VQ; _nbList = &v2->NbVQ; _nbComp = 3; + skinList(v1->VH, v1->NbVH, 8, 6, skinHex); + skinList(v1->VI, v1->NbVI, 6, 3, skinPri1); + skinList(v1->VY, v1->NbVY, 5, 1, skinPyr1); Tree_Action(_skin, addInView); Tree_Delete(_skin); // tensor _skin = Tree_Create(sizeof(Elm), fcmpElm); - _list = view->TQ; _nbList = &view->NbTQ; _nbComp = 9; - skinList(vv->TH, vv->NbTH, 8, 6, skinHex); - skinList(vv->TI, vv->NbTI, 6, 3, skinPri1); - skinList(vv->TY, vv->NbTY, 5, 1, skinPyr1); + _list = v2->TQ; _nbList = &v2->NbTQ; _nbComp = 9; + skinList(v1->TH, v1->NbTH, 8, 6, skinHex); + skinList(v1->TI, v1->NbTI, 6, 3, skinPri1); + skinList(v1->TY, v1->NbTY, 5, 1, skinPyr1); Tree_Action(_skin, addInView); Tree_Delete(_skin); - if(view->empty()) { - RemoveViewByNumber(view->Num); + if(v2->empty()) { + RemoveViewByNumber(v2->Num); + return v1; } else{ // copy time data - for(int i = 0; i < List_Nbr(vv->Time); i++) - List_Add(view->Time, List_Pointer(vv->Time, i)); + for(int i = 0; i < List_Nbr(v1->Time); i++) + List_Add(v2->Time, List_Pointer(v1->Time, i)); // finalize char name[1024], filename[1024]; - sprintf(name, "%s_Skin", vv->Name); - sprintf(filename, "%s_Skin.pos", vv->Name); - EndView(view, 1, filename, name); + sprintf(name, "%s_Skin", v1->Name); + sprintf(filename, "%s_Skin.pos", v1->Name); + EndView(v2, 1, filename, name); + return v2; } - - return 0; } diff --git a/Plugin/Smooth.cpp b/Plugin/Smooth.cpp index 39b8bbbd2d9ff495938fa994dfad1f5c1e4225dc..f225c1d0c1e55486dce0a024f2c3f5aab6c8e400 100644 --- a/Plugin/Smooth.cpp +++ b/Plugin/Smooth.cpp @@ -1,4 +1,4 @@ -// $Id: Smooth.cpp,v 1.18 2004-03-13 21:00:19 geuzaine Exp $ +// $Id: Smooth.cpp,v 1.19 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -80,21 +80,19 @@ void GMSH_SmoothPlugin::catchErrorMessage(char *errorMessage) const Post_View *GMSH_SmoothPlugin::execute(Post_View * v) { - Post_View *vv; int iView = (int)SmoothOptions_Number[0].def; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - vv->smooth(); - return vv; + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + + v1->smooth(); + return v1; } diff --git a/Plugin/SphericalRaise.cpp b/Plugin/SphericalRaise.cpp index 77d8abb62f32c25dccdfd6347faf74ce4332e378..7cc6b7492d97cda2b9b91a9b0ce58dc69af037af 100644 --- a/Plugin/SphericalRaise.cpp +++ b/Plugin/SphericalRaise.cpp @@ -1,4 +1,4 @@ -// $Id: SphericalRaise.cpp,v 1.16 2004-05-13 17:48:56 geuzaine Exp $ +// $Id: SphericalRaise.cpp,v 1.17 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -149,7 +149,6 @@ static void sphericalRaise(Post_View * v, int timeStep, double center[3], Post_View *GMSH_SphericalRaisePlugin::execute(Post_View * v) { - Post_View *vv; double center[3], raise; center[0] = SphericalRaiseOptions_Number[0].def; @@ -159,18 +158,17 @@ Post_View *GMSH_SphericalRaisePlugin::execute(Post_View * v) int timeStep = (int)SphericalRaiseOptions_Number[4].def; int iView = (int)SphericalRaiseOptions_Number[5].def; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - sphericalRaise(vv, timeStep, center, raise); - return vv; + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + + sphericalRaise(v1, timeStep, center, raise); + return v1; } diff --git a/Plugin/Transform.cpp b/Plugin/Transform.cpp index 5c8aa9a48da2926b38dc818b4260ea397bf97611..3f1c46295d7424f742603e8421ce034d3556bcc7 100644 --- a/Plugin/Transform.cpp +++ b/Plugin/Transform.cpp @@ -1,4 +1,4 @@ -// $Id: Transform.cpp,v 1.23 2004-03-13 21:00:19 geuzaine Exp $ +// $Id: Transform.cpp,v 1.24 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -93,7 +93,6 @@ void GMSH_TransformPlugin::catchErrorMessage(char *errorMessage) const Post_View *GMSH_TransformPlugin::execute(Post_View * v) { - Post_View *vv; double mat[3][3]; mat[0][0] = TransformOptions_Number[0].def; @@ -108,19 +107,18 @@ Post_View *GMSH_TransformPlugin::execute(Post_View * v) int iView = (int)TransformOptions_Number[9].def; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - vv->transform(mat); + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + + v1->transform(mat); - return 0; + return v1; } diff --git a/Plugin/Triangulate.cpp b/Plugin/Triangulate.cpp index 83c6df9b6e9ac64d4ec1aa620d2dc1f9ecf046ef..4b2f36b5a9e3e6a4f340d6ac71240e146f24b366 100644 --- a/Plugin/Triangulate.cpp +++ b/Plugin/Triangulate.cpp @@ -1,4 +1,4 @@ -// $Id: Triangulate.cpp,v 1.20 2004-03-13 21:00:19 geuzaine Exp $ +// $Id: Triangulate.cpp,v 1.21 2004-05-16 20:04:43 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -202,36 +202,34 @@ void Triangulate(Post_View * vin, Post_View * vout) Post_View *GMSH_TriangulatePlugin::execute(Post_View * v) { - Post_View *vv, *View; - int iView = (int)TriangulateOptions_Number[0].def; - if(v && iView < 0) - vv = v; - else { - if(!v && iView < 0) - iView = 0; - if(!(vv = (Post_View *) List_Pointer_Test(CTX.post.list, iView))) { - Msg(WARNING, "View[%d] does not exist", iView); - return 0; - } + if(iView < 0) + iView = v ? v->Index : 0; + + if(!List_Pointer_Test(CTX.post.list, iView)) { + Msg(GERROR, "View[%d] does not exist", iView); + return v; } - if(vv->NbSP > 2) { + Post_View *v1 = (Post_View*)List_Pointer(CTX.post.list, iView); + + if(v1->NbSP > 2) { // FIXME: this is not secure: if BeginView forces a post.list - // reallocation, vv is wrong - View = BeginView(1); - Triangulate(vv, View); + // reallocation, v1 could be wrong + Post_View *v2 = BeginView(1); + Triangulate(v1, v2); // copy time data - for(int i = 0; i < List_Nbr(vv->Time); i++) - List_Add(View->Time, List_Pointer(vv->Time, i)); + for(int i = 0; i < List_Nbr(v1->Time); i++) + List_Add(v2->Time, List_Pointer(v1->Time, i)); // finalize char name[1024], filename[1024]; - sprintf(name, "%s_Triangulate", vv->Name); - sprintf(filename, "%s_Triangulate.pos", vv->Name); - EndView(View, 1, filename, name); + sprintf(name, "%s_Triangulate", v1->Name); + sprintf(filename, "%s_Triangulate.pos", v1->Name); + EndView(v2, 1, filename, name); + return v2; } - return 0; + return v1; }