Index: ../trunk-jpl/src/c/bamg/BamgVertex.h =================================================================== --- ../trunk-jpl/src/c/bamg/BamgVertex.h (revision 19292) +++ ../trunk-jpl/src/c/bamg/BamgVertex.h (revision 19293) @@ -47,6 +47,7 @@ void MetricFromHessian(const double Hxx,const double Hyx, const double Hyy, const double smin,const double smax,const double s,const double err,BamgOpts* bamgopts); void Echo(); int GetReferenceNumber() const; + I2 GetIntegerCoordinates() const{return this->i;};// avoid operator I2() long Optim(int =1,int =0); //inline functions Index: ../trunk-jpl/src/c/bamg/Triangle.h =================================================================== --- ../trunk-jpl/src/c/bamg/Triangle.h (revision 19292) +++ ../trunk-jpl/src/c/bamg/Triangle.h (revision 19293) @@ -64,6 +64,7 @@ double qualite() ; void Set(const Triangle &,const Mesh &,Mesh &); int In(BamgVertex *v) const { return vertices[0]==v || vertices[1]==v || vertices[2]==v ;} + BamgVertex* GetVertex(int i){return vertices[i];}; // FIXME: this is used to avoid BamgVertex * operator() }; Index: ../trunk-jpl/src/c/bamg/Mesh.cpp =================================================================== --- ../trunk-jpl/src/c/bamg/Mesh.cpp (revision 19292) +++ ../trunk-jpl/src/c/bamg/Mesh.cpp (revision 19293) @@ -1098,7 +1098,7 @@ } } /*}}}*/ - void Mesh::AddVertex( BamgVertex &s,Triangle* t, Icoor2* det3) {/*{{{*/ + void Mesh::AddVertex( BamgVertex &s,Triangle* t, Icoor2* det3){/*{{{*/ /*Original code from Frederic Hecht (BAMG v1.01, Mesh2.cpp/Add)*/ // ------------------------------- // s2 @@ -1123,9 +1123,9 @@ int iedge; /*three vertices of t*/ - BamgVertex &s0=(*t)[0]; - BamgVertex &s1=(*t)[1]; - BamgVertex &s2=(*t)[2]; + BamgVertex* s0=t->GetVertex(0); + BamgVertex* s1=t->GetVertex(1); + BamgVertex* s2=t->GetVertex(2); //determinant of t Icoor2 detOld=t->det; @@ -1133,7 +1133,7 @@ /* infvertexindex = index of the infinite vertex (NULL) if no infinite vertex (NULL) infvertexindex=-1 else if v_i is infinite, infvertexindex=i*/ - int infvertexindex = &s0 ? (( &s1 ? ( &s2 ? -1 : 2) : 1 )) : 0; + int infvertexindex = s0 ? ((s1? (s2?-1:2):1)):0; //some checks if(((infvertexindex <0 ) && (detOld <0)) || ((infvertexindex >=0) && (detOld >0)) ){ @@ -1146,14 +1146,14 @@ det3 = det3local; //if no infinite vertex if (infvertexindex<0 ) { - det3[0]=bamg::det(s ,s1,s2); - det3[1]=bamg::det(s0,s ,s2); - det3[2]=bamg::det(s0,s1,s );} + det3[0]=bamg::det(s .GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s2->GetIntegerCoordinates()); + det3[1]=bamg::det(s0->GetIntegerCoordinates(),s .GetIntegerCoordinates(),s2->GetIntegerCoordinates()); + det3[2]=bamg::det(s0->GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s.GetIntegerCoordinates());} else { // one of &s1 &s2 &s0 is NULL - det3[0]= &s0 ? -1 : bamg::det(s ,s1,s2) ; - det3[1]= &s1 ? -1 : bamg::det(s0,s ,s2) ; - det3[2]= &s2 ? -1 : bamg::det(s0,s1,s ) ; + det3[0]= s0 ? -1 : bamg::det(s.GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s2->GetIntegerCoordinates()) ; + det3[1]= s1 ? -1 : bamg::det(s0->GetIntegerCoordinates(),s.GetIntegerCoordinates(),s2->GetIntegerCoordinates()) ; + det3[2]= s2 ? -1 : bamg::det(s0->GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s.GetIntegerCoordinates()) ; } } @@ -3799,15 +3799,15 @@ // computation of the det int number_of_errors=0; for (i=0;iGetIntegerCoordinates(),v1->GetIntegerCoordinates(),v2->GetIntegerCoordinates()); /*Check that determinant is positive*/ if (triangles[i].det <=0){