From d278dbaebcd3011ff706f6a9da5e6d0f7b89c75f Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 21 May 2013 16:08:05 +0000
Subject: [PATCH] fix compile VS 2010

---
 Common/GamePad.cpp                           |   2 +-
 Fltk/Navigator.cpp                           |   1 -
 Geo/gmshLevelset.cpp                         |  10 +-
 Mesh/CenterlineField.cpp                     |  10 +-
 Mesh/QuadTriExtruded2D.cpp                   |   2 +-
 Mesh/directions3D.cpp                        |  24 +-
 Mesh/yamakawa.cpp                            | 497 ++++++++++---------
 Plugin/HomologyPostProcessing.cpp            |   4 +-
 contrib/Chaco/util/smalloc.c                 |  11 +-
 contrib/HighOrderMeshOptimizer/OptHomRun.cpp |   1 +
 contrib/onelab/OnelabClients.cpp             |   8 +-
 11 files changed, 286 insertions(+), 284 deletions(-)

diff --git a/Common/GamePad.cpp b/Common/GamePad.cpp
index ab8c21efa8..c59107d8ce 100644
--- a/Common/GamePad.cpp
+++ b/Common/GamePad.cpp
@@ -176,7 +176,7 @@ int GamePad::read_event()
   int event_num = 0;
   bool event_value = false;
   for (int i = 0; i < buttons; i++){
-    int bin = pow(2, i);
+    int bin = pow(2.0, i);
     if(button[i] != (bool)(infoex.dwButtons & bin)) {
       event = true;
       event_num = i;
diff --git a/Fltk/Navigator.cpp b/Fltk/Navigator.cpp
index f499a1441a..651068a212 100644
--- a/Fltk/Navigator.cpp
+++ b/Fltk/Navigator.cpp
@@ -8,7 +8,6 @@
 #include <string>
 #include <iostream>
 #include <stdio.h>
-#include <unistd.h>
 #include <Navigator.h>
 #include "Trackball.h"
 #include "Context.h"
diff --git a/Geo/gmshLevelset.cpp b/Geo/gmshLevelset.cpp
index fe161d2dc7..d729f10783 100644
--- a/Geo/gmshLevelset.cpp
+++ b/Geo/gmshLevelset.cpp
@@ -933,20 +933,20 @@ gLevelsetDistMesh::~gLevelsetDistMesh()
   if (_kdtree) {
     ANNpointArray nodes = _kdtree->thePoints();
     annDeallocPts(nodes);
-   delete _kdtree; 
+   delete _kdtree;
   }
 
 }
 
 double gLevelsetDistMesh::operator () (double x, double y, double z) const
 {
-  ANNidx _index[_nbClose];
-  ANNdist _dist[_nbClose];
+  std::vector<ANNidx> _index(_nbClose);
+  std::vector<ANNdist> _dist(_nbClose);
   double point[3] = {x,y,z};
-  _kdtree->annkSearch(point, _nbClose, _index, _dist);
+  _kdtree->annkSearch(point, _nbClose, &_index[0], &_dist[0]);
   std::set<MElement*> elements;
   for (int i=0;i<_nbClose;i++){
-    int iVertex = _index [i];
+    int iVertex = _index[i];
     MVertex *v = _vertices[iVertex];
     for (std::multimap<MVertex*,MElement*>::const_iterator itm =
            _v2e.lower_bound(v); itm != _v2e.upper_bound(v); ++itm)
diff --git a/Mesh/CenterlineField.cpp b/Mesh/CenterlineField.cpp
index fd4f9e5bc6..c4a6e3a9ee 100644
--- a/Mesh/CenterlineField.cpp
+++ b/Mesh/CenterlineField.cpp
@@ -292,7 +292,7 @@ static void cutTriangle(MTriangle *tri,
   }
 }
 
-Centerline::Centerline(std::string fileName): kdtree(0), kdtreeR(0) 
+Centerline::Centerline(std::string fileName): kdtree(0), kdtreeR(0)
 {
   recombine = (CTX::instance()->mesh.recombineAll) || (CTX::instance()->mesh.recombine3DAll);
 
@@ -356,12 +356,12 @@ Centerline::~Centerline()
   if(kdtree){
     ANNpointArray nodes = kdtree->thePoints();
     if(nodes) annDeallocPts(nodes);
-    delete kdtree; 
+    delete kdtree;
   }
   if(kdtreeR){
     ANNpointArray nodesR = kdtreeR->thePoints();
     if(nodesR) annDeallocPts(nodesR);
-    delete kdtreeR; 
+    delete kdtreeR;
   }
 }
 
@@ -1080,7 +1080,7 @@ double Centerline::operator() (double x, double y, double z, GEntity *ge)
      if (isCompound) cFaces = ((GFaceCompound*)ge)->getCompounds();
      if ( ge->dim() == 3 || (ge->dim() == 2 && ge->geomType() == GEntity::Plane) ||
 	  (isCompound && (*cFaces.begin())->geomType() == GEntity::Plane) ){
-       int num_neighbours = 1;
+       const int num_neighbours = 1;
        ANNidx index[num_neighbours];
        ANNdist dist[num_neighbours];
        kdtreeR->annkSearch(xyz, num_neighbours, index, dist);
@@ -1091,7 +1091,7 @@ double Centerline::operator() (double x, double y, double z, GEntity *ge)
      }
    }
 
-   int num_neighbours = 1;
+   const int num_neighbours = 1;
    ANNidx index[num_neighbours];
    ANNdist dist[num_neighbours];
    kdtree->annkSearch(xyz, num_neighbours, index, dist);
diff --git a/Mesh/QuadTriExtruded2D.cpp b/Mesh/QuadTriExtruded2D.cpp
index 49516fe90c..079890013b 100644
--- a/Mesh/QuadTriExtruded2D.cpp
+++ b/Mesh/QuadTriExtruded2D.cpp
@@ -443,7 +443,7 @@ int MeshQuadToTriTopSurface( GFace *from, GFace *to, std::set<MVertex*,
     return 0;
 
   ExtrudeParams *ep = to->meshAttributes.extrude;
-  if( !ep || !ep->mesh.ExtrudeMesh || !ep->geo.Mode == COPIED_ENTITY ){
+  if( !ep || !ep->mesh.ExtrudeMesh || !(ep->geo.Mode == COPIED_ENTITY) ){
     Msg::Error("In MeshQuadToTriTopSurface(), incomplete or no "
                "extrude information for top face %d.", to->tag() );
     return 0;
diff --git a/Mesh/directions3D.cpp b/Mesh/directions3D.cpp
index 7047e18772..88f46c70cb 100644
--- a/Mesh/directions3D.cpp
+++ b/Mesh/directions3D.cpp
@@ -871,7 +871,7 @@ void Frame_field::save(const std::vector<std::pair<SPoint3, STensor3> > data,
   file.close();
 }
 
-void Frame_field::recur_connect_vert(FILE *fi, int count, 
+void Frame_field::recur_connect_vert(FILE *fi, int count,
 				     MVertex *v,
 				     STensor3 &cross,
 				     std::multimap<MVertex*,MVertex*> &v2v,
@@ -879,15 +879,15 @@ void Frame_field::recur_connect_vert(FILE *fi, int count,
 
   if (touched.find(v) != touched.end()) return;
   touched.insert(v);
-  
+
   count++;
 
   for (std::multimap <MVertex*,MVertex*>::iterator it = v2v.lower_bound(v);
        it != v2v.upper_bound(v) ; ++it){
-   
+
     MVertex *nextV = it->second;
     if (touched.find(nextV) == touched.end()){
-      
+
     //compute dot product (N0,R0,A0) dot (Ni,Ri,Ai)^T
     //where N,R,A are the 3 directions
     std::map<MVertex*, STensor3>::iterator iter = crossField.find(nextV);
@@ -895,10 +895,10 @@ void Frame_field::recur_connect_vert(FILE *fi, int count,
     STensor3 nextCrossT = nextCross.transpose();
     STensor3 prod = cross.operator*=(nextCrossT);
     fullMatrix<double> mat(3,3); prod.getMat(mat);
-   
+
     //find biggest dot product
     fullVector<int> Id(3);
-    Id(0) = Id(1) = Id(2) = 0; 
+    Id(0) = Id(1) = Id(2) = 0;
     for (int j = 0; j < 3; j++){
       double maxVal = 0.0;
       for (int i = 0; i < 3; i++){
@@ -916,7 +916,7 @@ void Frame_field::recur_connect_vert(FILE *fi, int count,
       printf("Id =%d %d %d \n", Id(0), Id(1), Id(2));
       return;
     }
-    
+
     //create new cross
     fullMatrix<double> newmat(3,3);
     for (int i = 0; i < 3; i++){
@@ -940,13 +940,13 @@ void Frame_field::recur_connect_vert(FILE *fi, int count,
      prod.print("product");
      newcross.print("newcross");
    }
-   
+
    fprintf(fi,"SP(%g,%g,%g) {%g};\n",nextV->x(),nextV->y(),nextV->z(), (double)count);
 
     //continue recursion
     recur_connect_vert (fi, count, nextV, newcross, v2v,touched);
     }
-    
+
   }
 
 }
@@ -992,7 +992,7 @@ void Frame_field::continuousCrossField(GRegion *gr, GFace *gf){
   int count = 0;
 
   recur_connect_vert (fi, count, beginV,bCross,v2v,touched);
-  
+
   fprintf(fi,"};\n");
   fclose (fi);
   //printf("touched =%d vert =%d \n", touched.size(), vertex_to_vertices.size());
@@ -1045,7 +1045,7 @@ void Frame_field::save_dist(const std::string& filename){
   std::ofstream file(filename.c_str());
   file << "View \"Distance\" {\n";
 
-  for(std::map<MEdge, double>::iterator it = crossDist.begin();
+  for(std::map<MEdge, double, Less_Edge>::iterator it = crossDist.begin();
       it != crossDist.end(); it++){
     MVertex* pVerta = it->first.getVertex(0);
     MVertex* pVertb = it->first.getVertex(1);
@@ -1119,7 +1119,7 @@ void Frame_field::save_energy(GRegion* gr, const std::string& filename){
 	matvec(inv, gsf[nod1], grd1);
 	matvec(inv, gsf[nod2], grd2);
 	SVector3 esf = sf[nod1] * SVector3(grd2) - sf[nod2] * SVector3(grd1);
-	std::map<MEdge, double>::iterator it = crossDist.find(pTet->getEdge(k));
+	std::map<MEdge, double, Less_Edge>::iterator it = crossDist.find(pTet->getEdge(k));
 	sum += it->second * esf;
 	//sum += (pTet->getVertex(nod2)->z() - pTet->getVertex(nod1)->z()) * esf;
       }
diff --git a/Mesh/yamakawa.cpp b/Mesh/yamakawa.cpp
index 5a1afbe259..2315d06134 100755
--- a/Mesh/yamakawa.cpp
+++ b/Mesh/yamakawa.cpp
@@ -6,6 +6,7 @@
 // Contributor(s):
 //   Tristan Carrier
 
+#include <iterator>
 #include "yamakawa.h"
 #include "GModel.h"
 #include "MVertex.h"
@@ -212,7 +213,7 @@ Tuple::Tuple(MVertex* a,MVertex* b,MVertex* c,MElement* element2,GFace* gf2){
   else{
     v1 = c;
   }
-	
+
   if(a>=b && a>=c){
     v3 = a;
   }
@@ -222,7 +223,7 @@ Tuple::Tuple(MVertex* a,MVertex* b,MVertex* c,MElement* element2,GFace* gf2){
   else{
     v3 = c;
   }
-	
+
   if(a!=v1 && a!=v3){
     v2 = a;
   }
@@ -232,9 +233,9 @@ Tuple::Tuple(MVertex* a,MVertex* b,MVertex* c,MElement* element2,GFace* gf2){
   else{
     v2 = c;
   }
-	
+
   element = element2;
-  gf = gf2;	
+  gf = gf2;
   hash = a->getNum() + b->getNum() + c->getNum();
 }
 
@@ -248,7 +249,7 @@ Tuple::Tuple(MVertex* a,MVertex* b,MVertex* c){
   else{
     v1 = c;
   }
-	
+
   if(a>=b && a>=c){
     v3 = a;
   }
@@ -258,7 +259,7 @@ Tuple::Tuple(MVertex* a,MVertex* b,MVertex* c){
   else{
     v3 = c;
   }
-	
+
   if(a!=v1 && a!=v3){
     v2 = a;
   }
@@ -268,7 +269,7 @@ Tuple::Tuple(MVertex* a,MVertex* b,MVertex* c){
   else{
     v2 = c;
   }
-	
+
   hash = a->getNum() + b->getNum() + c->getNum();
 }
 
@@ -360,7 +361,7 @@ void Recombinator::execute(GRegion* gr){
   rearrange(gr);
 
   statistics(gr);
-	
+
   modify_surfaces(gr);
 }
 
@@ -641,8 +642,8 @@ void Recombinator::merge(GRegion* gr){
 	threshold = 0.25;
 	if(hex.get_quality()<threshold){
 	  break;
-	}  
-	  
+	}
+
 	a = hex.get_a();
 	b = hex.get_b();
 	c = hex.get_c();
@@ -692,7 +693,7 @@ void Recombinator::merge(GRegion* gr){
 	if(!faces_statuquo(hex)){
 	  continue;
 	}
-	  
+
 	//printf("%d - %d/%d - %f\n",count,i,(int)potential.size(),hex.get_quality());
 	quality = quality + hex.get_quality();
 	for(it=parts.begin();it!=parts.end();it++){
@@ -711,12 +712,12 @@ void Recombinator::merge(GRegion* gr){
   opt.resize(gr->tetrahedra.size());
   opt = gr->tetrahedra;
   gr->tetrahedra.clear();
-	
+
   for(i=0;i<opt.size();i++){
     element = (MElement*)(opt[i]);
 	it2 = markings.find(element);
 	if(it2->second==0){
-	  gr->tetrahedra.push_back(opt[i]);  
+	  gr->tetrahedra.push_back(opt[i]);
 	}
   }
 
@@ -738,18 +739,18 @@ void Recombinator::improved_merge(GRegion* gr){
   std::map<MElement*,bool>::iterator it2;
   std::vector<MTetrahedron*>::iterator it3;
   Hex hex;
-	
+
   count = 1;
   quality = 0.0;
-	
+
   for(i=0;i<potential.size();i++){
     hex = potential[i];
-		
+
 	threshold = 0.25;
 	if(hex.get_quality()<threshold){
 	  break;
-	}  
-		
+	}
+
 	a = hex.get_a();
 	b = hex.get_b();
 	c = hex.get_c();
@@ -758,7 +759,7 @@ void Recombinator::improved_merge(GRegion* gr){
 	f = hex.get_f();
 	g = hex.get_g();
 	h = hex.get_h();
-		
+
 	parts.clear();
 	find(a,hex,parts);
 	find(b,hex,parts);
@@ -768,7 +769,7 @@ void Recombinator::improved_merge(GRegion* gr){
 	find(f,hex,parts);
 	find(g,hex,parts);
 	find(h,hex,parts);
-		
+
 	flag = 1;
 	for(it=parts.begin();it!=parts.end();it++){
 	  element = *it;
@@ -779,23 +780,23 @@ void Recombinator::improved_merge(GRegion* gr){
 	  }
 	}
 	if(!flag) continue;
-		
+
 	if(!valid(hex,parts)){
 	  continue;
 	}
-		
+
 	if(!conformityA(hex)){
 	  continue;
 	}
-		
+
 	if(!conformityB(hex)){
 	  continue;
 	}
-		
+
 	if(!conformityC(hex)){
 	  continue;
 	}
-		
+
 	//printf("%d - %d/%d - %f\n",count,i,(int)potential.size(),hex.get_quality());
 	quality = quality + hex.get_quality();
 	for(it=parts.begin();it!=parts.end();it++){
@@ -809,20 +810,20 @@ void Recombinator::improved_merge(GRegion* gr){
 	build_hash_tableC(hex);
 	count++;
   }
-	
+
   opt.clear();
   opt.resize(gr->tetrahedra.size());
   opt = gr->tetrahedra;
   gr->tetrahedra.clear();
-	
+
   for(i=0;i<opt.size();i++){
     element = (MElement*)(opt[i]);
 	it2 = markings.find(element);
 	if(it2->second==0){
-	  gr->tetrahedra.push_back(opt[i]);  
+	  gr->tetrahedra.push_back(opt[i]);
 	}
   }
-	
+
   printf("hexahedra average quality (0->1) : %f\n",quality/count);
 }
 
@@ -881,15 +882,15 @@ void Recombinator::build_tuples(GRegion* gr){
   for(it=faces.begin();it!=faces.end();it++)
   {
     gf = *it;
-	  
+
 	for(i=0;i<gf->getNumMeshElements();i++){
 	  element = gf->getMeshElement(i);
-		
-	  if(element->getNumVertices()==3){		
+
+	  if(element->getNumVertices()==3){
 		a = element->getVertex(0);
 		b = element->getVertex(1);
 		c = element->getVertex(2);
-		  
+
 		tuples.insert(Tuple(a,b,c,element,gf));
 	  }
 	}
@@ -906,20 +907,20 @@ void Recombinator::modify_surfaces(GRegion* gr){
   std::vector<MElement*> opt;
   std::list<GFace*>::iterator it;
   std::set<MElement*>::iterator it2;
-	
+
   for(i=0;i<gr->getNumMeshElements();i++){
     element = gr->getMeshElement(i);
-	
+
 	if(element->getNumVertices()==8){
-	  a = element->getVertex(0);	
-	  b = element->getVertex(1);	
-	  c = element->getVertex(2);	
-	  d = element->getVertex(3);	
-	  e = element->getVertex(4);	
-	  f = element->getVertex(5);	
+	  a = element->getVertex(0);
+	  b = element->getVertex(1);
+	  c = element->getVertex(2);
+	  d = element->getVertex(3);
+	  e = element->getVertex(4);
+	  f = element->getVertex(5);
 	  g = element->getVertex(6);
-	  h = element->getVertex(7);	
-		
+	  h = element->getVertex(7);
+
 	  modify_surfaces(a,b,c,d);
 	  modify_surfaces(e,f,g,h);
 	  modify_surfaces(a,e,h,d);
@@ -928,18 +929,18 @@ void Recombinator::modify_surfaces(GRegion* gr){
 	  modify_surfaces(d,h,g,c);
 	}
   }
-	
+
   faces = gr->faces();
-	
+
   for(it=faces.begin();it!=faces.end();it++)
   {
     gf = *it;
-		
-	opt.clear();  
-	  
+
+	opt.clear();
+
 	for(i=0;i<gf->getNumMeshElements();i++){
 	  element = gf->getMeshElement(i);
-			
+
 	  if(element->getNumVertices()==3){
 	    it2 = triangles.find(element);
 		if(it2==triangles.end()){
@@ -947,13 +948,13 @@ void Recombinator::modify_surfaces(GRegion* gr){
 		}
 	  }
 	}
-	  
+
 	gf->triangles.clear();
-	  
+
 	for(i=0;i<opt.size();i++){
 	  gf->triangles.push_back((MTriangle*)opt[i]);
 	}
-  }	
+  }
 }
 
 void Recombinator::modify_surfaces(MVertex* a,MVertex* b,MVertex* c,MVertex* d){
@@ -968,25 +969,25 @@ void Recombinator::modify_surfaces(MVertex* a,MVertex* b,MVertex* c,MVertex* d){
   gf2 = NULL;
 
   tuple1 = Tuple(a,b,c);
-  tuple2 = Tuple(c,d,a);	
-  
+  tuple2 = Tuple(c,d,a);
+
   it1 = tuples.find(tuple1);
   it2 = tuples.find(tuple2);
-	
+
   flag1 = 0;
   flag2 = 0;
-	
+
   while(it1!=tuples.end()){
     if(tuple1.get_hash()!=it1->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple1.same_vertices(*it1)){
 	  flag1 = 1;
 	  element1 = it1->get_element();
 	  gf1 = it1->get_gf();
 	}
-		
+
 	it1++;
   }
 
@@ -994,64 +995,64 @@ void Recombinator::modify_surfaces(MVertex* a,MVertex* b,MVertex* c,MVertex* d){
     if(tuple2.get_hash()!=it2->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple2.same_vertices(*it2)){
 	  flag2 = 1;
 	  element2 = it2->get_element();
 	  gf2 = it2->get_gf();
 	}
-		
+
 	it2++;
   }
-	
+
   if(flag1 && flag2){
     triangles.insert(element1);
 	triangles.insert(element2);
-	  	  
+
 	gf1->addQuadrangle(new MQuadrangle(a,b,c,d));
   }
-	
+
   tuple1 = Tuple(a,b,d);
-  tuple2 = Tuple(b,c,d);	
-	
+  tuple2 = Tuple(b,c,d);
+
   it1 = tuples.find(tuple1);
   it2 = tuples.find(tuple2);
-	
+
   flag1 = 0;
   flag2 = 0;
-	
+
   while(it1!=tuples.end()){
     if(tuple1.get_hash()!=it1->get_hash()){
       break;
 	}
-		
+
 	if(tuple1.same_vertices(*it1)){
 	  flag1 = 1;
 	  element1 = it1->get_element();
 	  gf1 = it1->get_gf();
 	}
-		
+
 	it1++;
   }
-	
+
   while(it2!=tuples.end()){
     if(tuple2.get_hash()!=it2->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple2.same_vertices(*it2)){
 	  flag2 = 1;
 	  element2 = it2->get_element();
 	  gf2 = it2->get_gf();
 	}
-		
+
 	it2++;
   }
-	
+
   if(flag1 && flag2){
     triangles.insert(element1);
 	triangles.insert(element2);
-		
+
 	gf1->addQuadrangle(new MQuadrangle(a,b,c,d));
   }
 }
@@ -1757,7 +1758,7 @@ bool Recombinator::faces_statuquo(Hex hex){
   bool c1,c2,c3,c4,c5,c6;
   MVertex *a,*b,*c,*d;
   MVertex *e,*f,*g,*h;
-	
+
   a = hex.get_a();
   b = hex.get_b();
   c = hex.get_c();
@@ -1766,14 +1767,14 @@ bool Recombinator::faces_statuquo(Hex hex){
   f = hex.get_f();
   g = hex.get_g();
   h = hex.get_h();
-	
+
   c1 = faces_statuquo(a,b,c,d);
   c2 = faces_statuquo(e,f,g,h);
   c3 = faces_statuquo(a,b,f,e);
   c4 = faces_statuquo(b,c,g,f);
   c5 = faces_statuquo(d,c,g,h);
   c6 = faces_statuquo(d,a,e,h);
-	
+
   return c1 && c2 && c3 && c4 && c5 && c6;
 }
 
@@ -1784,94 +1785,94 @@ bool Recombinator::faces_statuquo(MVertex* a,MVertex* b,MVertex* c,MVertex* d){
   Tuple tuple1,tuple2;
   std::multiset<Tuple>::iterator it1;
   std::multiset<Tuple>::iterator it2;
-	
-  ok = 1;	
-	
+
+  ok = 1;
+
   gf1 = NULL;
   gf2 = NULL;
-	
+
   tuple1 = Tuple(a,b,c);
-  tuple2 = Tuple(c,d,a);	
-	
+  tuple2 = Tuple(c,d,a);
+
   it1 = tuples.find(tuple1);
   it2 = tuples.find(tuple2);
-	
+
   flag1 = 0;
   flag2 = 0;
-	
+
   while(it1!=tuples.end()){
     if(tuple1.get_hash()!=it1->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple1.same_vertices(*it1)){
 	  flag1 = 1;
 	  gf1 = it1->get_gf();
 	}
-		
+
 	it1++;
   }
-	
+
   while(it2!=tuples.end()){
     if(tuple2.get_hash()!=it2->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple2.same_vertices(*it2)){
 	  flag2 = 1;
 	  gf2 = it2->get_gf();
 	}
-		
+
 	it2++;
   }
-	
+
   if(flag1 && flag2){
     if(gf1!=gf2){
 	  ok = 0;
 	}
   }
-	
+
   tuple1 = Tuple(a,b,d);
-  tuple2 = Tuple(b,c,d);	
-	
+  tuple2 = Tuple(b,c,d);
+
   it1 = tuples.find(tuple1);
   it2 = tuples.find(tuple2);
-	
+
   flag1 = 0;
   flag2 = 0;
-	
+
   while(it1!=tuples.end()){
     if(tuple1.get_hash()!=it1->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple1.same_vertices(*it1)){
 	  flag1 = 1;
 	  gf1 = it1->get_gf();
 	}
-		
+
 	it1++;
   }
-	
+
   while(it2!=tuples.end()){
     if(tuple2.get_hash()!=it2->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple2.same_vertices(*it2)){
 	  flag2 = 1;
 	  gf2 = it2->get_gf();
 	}
-		
+
 	it2++;
   }
-	
+
   if(flag1 && flag2){
     if(gf1!=gf2){
 	  ok = 0;
 	}
   }
-	
+
   return ok;
 }
 
@@ -2405,7 +2406,7 @@ void Supplementary::execute(GRegion* gr){
   rearrange(gr);
 
   statistics(gr);
-	
+
   modify_surfaces(gr);
 }
 
@@ -2505,7 +2506,7 @@ void Supplementary::merge(GRegion* gr){
 	threshold = 0.15;
 	if(prism.get_quality()<threshold){
 	  break;
-	}  
+	}
 
 	a = prism.get_a();
 	b = prism.get_b();
@@ -2532,7 +2533,7 @@ void Supplementary::merge(GRegion* gr){
 	  }
 	}
 	if(!flag) continue;
-	
+
 	if(!valid(prism,parts)){
 	  continue;
 	}
@@ -2552,7 +2553,7 @@ void Supplementary::merge(GRegion* gr){
 	if(!faces_statuquo(prism)){
 	  continue;
 	}
-	  
+
 	//printf("%d - %d/%d - %f\n",count,i,(int)potential.size(),prism.get_quality());
 	quality = quality + prism.get_quality();
 	for(it=parts.begin();it!=parts.end();it++){
@@ -2571,7 +2572,7 @@ void Supplementary::merge(GRegion* gr){
   opt.resize(gr->tetrahedra.size());
   opt = gr->tetrahedra;
   gr->tetrahedra.clear();
-	
+
   for(i=0;i<opt.size();i++){
     element = (MElement*)(opt[i]);
 	it2 = markings.find(element);
@@ -2579,7 +2580,7 @@ void Supplementary::merge(GRegion* gr){
 	  gr->tetrahedra.push_back(opt[i]);
 	}
   }
-	
+
   printf("prisms average quality (0->1) : %f\n",quality/count);
 }
 
@@ -2628,25 +2629,25 @@ void Supplementary::build_tuples(GRegion* gr){
   GFace* gf;
   std::list<GFace*> faces;
   std::list<GFace*>::iterator it;
-	
+
   tuples.clear();
   triangles.clear();
   faces.clear();
-	
+
   faces = gr->faces();
-	
+
   for(it=faces.begin();it!=faces.end();it++)
   {
     gf = *it;
-		
+
 	for(i=0;i<gf->getNumMeshElements();i++){
 	  element = gf->getMeshElement(i);
-			
-	  if(element->getNumVertices()==3){		
+
+	  if(element->getNumVertices()==3){
 	    a = element->getVertex(0);
 		b = element->getVertex(1);
 		c = element->getVertex(2);
-				
+
 		tuples.insert(Tuple(a,b,c,element,gf));
 	  }
 	}
@@ -2663,35 +2664,35 @@ void Supplementary::modify_surfaces(GRegion* gr){
   std::vector<MElement*> opt;
   std::list<GFace*>::iterator it;
   std::set<MElement*>::iterator it2;
-	
+
   for(i=0;i<gr->getNumMeshElements();i++){
     element = gr->getMeshElement(i);
-		
+
 	if(element->getNumVertices()==6){
-	  a = element->getVertex(0);	
-	  b = element->getVertex(1);	
-	  c = element->getVertex(2);	
-	  d = element->getVertex(3);	
-	  e = element->getVertex(4);	
-	  f = element->getVertex(5);	
-			
+	  a = element->getVertex(0);
+	  b = element->getVertex(1);
+	  c = element->getVertex(2);
+	  d = element->getVertex(3);
+	  e = element->getVertex(4);
+	  f = element->getVertex(5);
+
 	  modify_surfaces(a,d,e,b);
 	  modify_surfaces(a,d,f,c);
 	  modify_surfaces(b,e,f,c);
 	}
   }
-	
+
   faces = gr->faces();
-	
+
   for(it=faces.begin();it!=faces.end();it++)
   {
     gf = *it;
-		
-	opt.clear();  
-		
+
+	opt.clear();
+
 	for(i=0;i<gf->getNumMeshElements();i++){
 	  element = gf->getMeshElement(i);
-			
+
 	  if(element->getNumVertices()==3){
 	    it2 = triangles.find(element);
 		if(it2==triangles.end()){
@@ -2699,13 +2700,13 @@ void Supplementary::modify_surfaces(GRegion* gr){
 		}
 	  }
 	}
-		
+
 	gf->triangles.clear();
-		
+
 	for(i=0;i<opt.size();i++){
 	  gf->triangles.push_back((MTriangle*)opt[i]);
 	}
-  }	
+  }
 }
 
 void Supplementary::modify_surfaces(MVertex* a,MVertex* b,MVertex* c,MVertex* d){
@@ -2715,95 +2716,95 @@ void Supplementary::modify_surfaces(MVertex* a,MVertex* b,MVertex* c,MVertex* d)
   Tuple tuple1,tuple2;
   std::multiset<Tuple>::iterator it1;
   std::multiset<Tuple>::iterator it2;
-	
+
   gf1 = NULL;
-  gf2 = NULL;	
-	
+  gf2 = NULL;
+
   tuple1 = Tuple(a,b,c);
-  tuple2 = Tuple(c,d,a);	
-	
+  tuple2 = Tuple(c,d,a);
+
   it1 = tuples.find(tuple1);
   it2 = tuples.find(tuple2);
-	
+
   flag1 = 0;
   flag2 = 0;
-	
+
   while(it1!=tuples.end()){
     if(tuple1.get_hash()!=it1->get_hash()){
 	  break;
 	}
-		
+
     if(tuple1.same_vertices(*it1)){
 	  flag1 = 1;
 	  element1 = it1->get_element();
 	  gf1 = it1->get_gf();
 	}
-		
+
 	it1++;
   }
-	
+
   while(it2!=tuples.end()){
     if(tuple2.get_hash()!=it2->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple2.same_vertices(*it2)){
 	  flag2 = 1;
 	  element2 = it2->get_element();
 	  gf2 = it2->get_gf();
 	}
-		
+
 	it2++;
   }
-	
+
   if(flag1 && flag2){
     triangles.insert(element1);
 	triangles.insert(element2);
-		
+
 	gf1->addQuadrangle(new MQuadrangle(a,b,c,d));
   }
-	
+
   tuple1 = Tuple(a,b,d);
-  tuple2 = Tuple(b,c,d);	
-	
+  tuple2 = Tuple(b,c,d);
+
   it1 = tuples.find(tuple1);
   it2 = tuples.find(tuple2);
-	
+
   flag1 = 0;
   flag2 = 0;
-	
+
   while(it1!=tuples.end()){
     if(tuple1.get_hash()!=it1->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple1.same_vertices(*it1)){
 	  flag1 = 1;
 	  element1 = it1->get_element();
 	  gf1 = it1->get_gf();
 	}
-		
+
 	it1++;
   }
-	
+
   while(it2!=tuples.end()){
     if(tuple2.get_hash()!=it2->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple2.same_vertices(*it2)){
 	  flag2 = 1;
 	  element2 = it2->get_element();
 	  gf2 = it2->get_gf();
 	}
-		
+
 	it2++;
   }
-	
+
   if(flag1 && flag2){
     triangles.insert(element1);
 	triangles.insert(element2);
-		
+
 	gf1->addQuadrangle(new MQuadrangle(a,b,c,d));
   }
 }
@@ -3258,18 +3259,18 @@ bool Supplementary::faces_statuquo(Prism prism){
   bool c1,c2,c3;
   MVertex *a,*b,*c;
   MVertex *d,*e,*f;
-	
+
   a = prism.get_a();
   b = prism.get_b();
   c = prism.get_c();
   d = prism.get_d();
   e = prism.get_e();
   f = prism.get_f();
-	
+
   c1 = faces_statuquo(a,d,f,c);
   c2 = faces_statuquo(a,d,e,b);
   c3 = faces_statuquo(b,c,f,e);
-	
+
   return c1 && c2 && c3;
 }
 
@@ -3280,94 +3281,94 @@ bool Supplementary::faces_statuquo(MVertex* a,MVertex* b,MVertex* c,MVertex* d){
   Tuple tuple1,tuple2;
   std::multiset<Tuple>::iterator it1;
   std::multiset<Tuple>::iterator it2;
-	
-  ok = 1;	
-	
+
+  ok = 1;
+
   gf1 = NULL;
   gf2 = NULL;
-	
+
   tuple1 = Tuple(a,b,c);
-  tuple2 = Tuple(c,d,a);	
-	
+  tuple2 = Tuple(c,d,a);
+
   it1 = tuples.find(tuple1);
   it2 = tuples.find(tuple2);
-	
+
   flag1 = 0;
   flag2 = 0;
-	
+
   while(it1!=tuples.end()){
     if(tuple1.get_hash()!=it1->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple1.same_vertices(*it1)){
 	  flag1 = 1;
 	  gf1 = it1->get_gf();
 	}
-		
+
 	it1++;
   }
-	
+
   while(it2!=tuples.end()){
     if(tuple2.get_hash()!=it2->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple2.same_vertices(*it2)){
 	  flag2 = 1;
 	  gf2 = it2->get_gf();
 	}
-		
+
 	it2++;
   }
-	
+
   if(flag1 && flag2){
     if(gf1!=gf2){
 	  ok = 0;
 	}
   }
-	
+
   tuple1 = Tuple(a,b,d);
-  tuple2 = Tuple(b,c,d);	
-	
+  tuple2 = Tuple(b,c,d);
+
   it1 = tuples.find(tuple1);
   it2 = tuples.find(tuple2);
-	
+
   flag1 = 0;
   flag2 = 0;
-	
+
   while(it1!=tuples.end()){
     if(tuple1.get_hash()!=it1->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple1.same_vertices(*it1)){
 	  flag1 = 1;
 	  gf1 = it1->get_gf();
 	}
-		
+
 	it1++;
   }
-	
+
   while(it2!=tuples.end()){
     if(tuple2.get_hash()!=it2->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple2.same_vertices(*it2)){
 	  flag2 = 1;
 	  gf2 = it2->get_gf();
 	}
-		
+
 	it2++;
   }
-	
+
   if(flag1 && flag2){
     if(gf1!=gf2){
 	  ok = 0;
 	}
   }
-	
+
   return ok;
 }
 
@@ -3678,7 +3679,7 @@ void PostOp::execute(GRegion* gr,bool flag){
   }
 
   statistics(gr);
-	
+
   modify_surfaces(gr);
 }
 
@@ -3758,7 +3759,7 @@ void PostOp::pyramids1(GRegion* gr){
   opt.resize(gr->tetrahedra.size());
   opt = gr->tetrahedra;
   gr->tetrahedra.clear();
-	
+
   for(i=0;i<opt.size();i++){
     element = (MElement*)(opt[i]);
 	it = markings.find(element);
@@ -3831,7 +3832,7 @@ void PostOp::pyramids2(GRegion* gr){
   opt1.resize(gr->tetrahedra.size());
   opt1 = gr->tetrahedra;
   gr->tetrahedra.clear();
-	
+
   for(i=0;i<opt1.size();i++){
     element = (MElement*)(opt1[i]);
 	it = markings.find(element);
@@ -3844,7 +3845,7 @@ void PostOp::pyramids2(GRegion* gr){
   opt2.resize(gr->pyramids.size());
   opt2 = gr->pyramids;
   gr->pyramids.clear();
-	
+
   for(i=0;i<opt2.size();i++){
     element = (MElement*)(opt2[i]);
 	it = markings.find(element);
@@ -4160,25 +4161,25 @@ void PostOp::build_tuples(GRegion* gr){
   GFace* gf;
   std::list<GFace*> faces;
   std::list<GFace*>::iterator it;
-	
+
   tuples.clear();
   triangles.clear();
   faces.clear();
-	
+
   faces = gr->faces();
-	
+
   for(it=faces.begin();it!=faces.end();it++)
   {
     gf = *it;
-		
+
 	for(i=0;i<gf->getNumMeshElements();i++){
 	  element = gf->getMeshElement(i);
-			
-	  if(element->getNumVertices()==3){		
+
+	  if(element->getNumVertices()==3){
 	    a = element->getVertex(0);
 		b = element->getVertex(1);
 		c = element->getVertex(2);
-				
+
 		tuples.insert(Tuple(a,b,c,element,gf));
 	  }
 	}
@@ -4194,32 +4195,32 @@ void PostOp::modify_surfaces(GRegion* gr){
   std::vector<MElement*> opt;
   std::list<GFace*>::iterator it;
   std::set<MElement*>::iterator it2;
-	
+
   for(i=0;i<gr->getNumMeshElements();i++){
     element = gr->getMeshElement(i);
-		
+
 	if(element->getNumVertices()==5){
-	  a = element->getVertex(0);	
-	  b = element->getVertex(1);	
-	  c = element->getVertex(2);	
-	  d = element->getVertex(3);	
-	  e = element->getVertex(4);	
-			
+	  a = element->getVertex(0);
+	  b = element->getVertex(1);
+	  c = element->getVertex(2);
+	  d = element->getVertex(3);
+	  e = element->getVertex(4);
+
 	  modify_surfaces(a,b,c,d);
 	}
   }
-	
+
   faces = gr->faces();
-	
+
   for(it=faces.begin();it!=faces.end();it++)
   {
     gf = *it;
-		
-	opt.clear();  
-		
+
+	opt.clear();
+
 	for(i=0;i<gf->getNumMeshElements();i++){
 	  element = gf->getMeshElement(i);
-			
+
 	  if(element->getNumVertices()==3){
 	    it2 = triangles.find(element);
 		if(it2==triangles.end()){
@@ -4227,13 +4228,13 @@ void PostOp::modify_surfaces(GRegion* gr){
 		}
 	  }
 	}
-		
+
 	gf->triangles.clear();
-		
+
 	for(i=0;i<opt.size();i++){
 	  gf->triangles.push_back((MTriangle*)opt[i]);
 	}
-  }	
+  }
 }
 
 void PostOp::modify_surfaces(MVertex* a,MVertex* b,MVertex* c,MVertex* d){
@@ -4243,95 +4244,95 @@ void PostOp::modify_surfaces(MVertex* a,MVertex* b,MVertex* c,MVertex* d){
   Tuple tuple1,tuple2;
   std::multiset<Tuple>::iterator it1;
   std::multiset<Tuple>::iterator it2;
-	
+
   gf1 = NULL;
-  gf2 = NULL;	
-	
+  gf2 = NULL;
+
   tuple1 = Tuple(a,b,c);
-  tuple2 = Tuple(c,d,a);	
-	
+  tuple2 = Tuple(c,d,a);
+
   it1 = tuples.find(tuple1);
   it2 = tuples.find(tuple2);
-	
+
   flag1 = 0;
   flag2 = 0;
-	
+
   while(it1!=tuples.end()){
     if(tuple1.get_hash()!=it1->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple1.same_vertices(*it1)){
 	  flag1 = 1;
 	  element1 = it1->get_element();
 	  gf1 = it1->get_gf();
 	}
-		
+
 	it1++;
   }
-	
+
   while(it2!=tuples.end()){
     if(tuple2.get_hash()!=it2->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple2.same_vertices(*it2)){
 	  flag2 = 1;
 	  element2 = it2->get_element();
 	  gf2 = it2->get_gf();
 	}
-		
+
 	it2++;
   }
-	
+
   if(flag1 && flag2){
     triangles.insert(element1);
 	triangles.insert(element2);
-		
+
 	gf1->addQuadrangle(new MQuadrangle(a,b,c,d));
   }
-	
+
   tuple1 = Tuple(a,b,d);
-  tuple2 = Tuple(b,c,d);	
-	
+  tuple2 = Tuple(b,c,d);
+
   it1 = tuples.find(tuple1);
   it2 = tuples.find(tuple2);
-	
+
   flag1 = 0;
   flag2 = 0;
-	
+
   while(it1!=tuples.end()){
     if(tuple1.get_hash()!=it1->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple1.same_vertices(*it1)){
 	  flag1 = 1;
 	  element1 = it1->get_element();
 	  gf1 = it1->get_gf();
 	}
-		
+
     it1++;
   }
-	
+
   while(it2!=tuples.end()){
     if(tuple2.get_hash()!=it2->get_hash()){
 	  break;
 	}
-		
+
 	if(tuple2.same_vertices(*it2)){
       flag2 = 1;
 	  element2 = it2->get_element();
 	  gf2 = it2->get_gf();
 	}
-		
+
     it2++;
   }
-	
+
   if(flag1 && flag2){
     triangles.insert(element1);
 	triangles.insert(element2);
-		
+
 	gf1->addQuadrangle(new MQuadrangle(a,b,c,d));
   }
 }
@@ -4463,24 +4464,24 @@ void PostOp::mean(const std::set<MVertex*>& Ns,MVertex* mid,const std::vector<ME
   }
 
   iterations = iterations + j;
-	
+
   for(j=0;j<6;j++){
     flag = 0;
-		
+
 	for(i=0;i<movables.size();i++){
 	  if(movables[i]->gammaShapeMeasure()<0.2){
 	    flag = 1;
 	  }
 	}
-		
+
 	if(!flag){
 	  break;
 	}
-		
+
 	x = 0.1*init_x + 0.9*mid->x();
 	y = 0.1*init_y + 0.9*mid->y();
 	z = 0.1*init_z + 0.9*mid->z();
-		
+
 	mid->setXYZ(x,y,z);
   }
 
diff --git a/Plugin/HomologyPostProcessing.cpp b/Plugin/HomologyPostProcessing.cpp
index aa9f95bf1d..3d3cb24baf 100644
--- a/Plugin/HomologyPostProcessing.cpp
+++ b/Plugin/HomologyPostProcessing.cpp
@@ -107,7 +107,7 @@ bool GMSH_HomologyPostProcessingPlugin::parseStringOpt
 int GMSH_HomologyPostProcessingPlugin::detIntegerMatrix
 (std::vector<int>& matrix)
 {
-  int n = sqrt(matrix.size());
+  int n = sqrt((double)matrix.size());
   fullMatrix<double> m(n,n);
   for(int i = 0; i < n; i++)
     for(int j = 0; j < n; j++)
@@ -119,7 +119,7 @@ int GMSH_HomologyPostProcessingPlugin::detIntegerMatrix
 bool GMSH_HomologyPostProcessingPlugin::invertIntegerMatrix
 (std::vector<int>& matrix)
 {
-  int n = sqrt(matrix.size());
+  int n = sqrt((double)matrix.size());
   fullMatrix<double> m(n,n);
   for(int i = 0; i < n; i++)
     for(int j = 0; j < n; j++)
diff --git a/contrib/Chaco/util/smalloc.c b/contrib/Chaco/util/smalloc.c
index d079c7015b..08ede95163 100644
--- a/contrib/Chaco/util/smalloc.c
+++ b/contrib/Chaco/util/smalloc.c
@@ -33,7 +33,7 @@ unsigned int n;				/* number of bytes to be allocated */
     if (n == 0) {
 	printf("ERROR: Non-positive argument to smalloc (%u).\n", n);
 	if (Output_File != NULL) {
-	    fprintf(Output_File, 
+	    fprintf(Output_File,
 		"ERROR: Non-positive argument to smalloc (%u).\n", n);
 	}
 	bail((char *) NULL, 1);
@@ -44,7 +44,7 @@ unsigned int n;				/* number of bytes to be allocated */
     if (ptr == NULL) {
 	printf("Program out of space while attempting to allocate %u.  Sorry!\n", n);
 	if (Output_File != NULL) {
-	    fprintf(Output_File, 
+	    fprintf(Output_File,
 	        "Program out of space while attempting to allocate %u.  Sorry!\n", n);
 	}
 	bail((char *) NULL, 1);
@@ -201,7 +201,7 @@ unsigned int n;			/* desired size of new allocation */
     if (p == NULL) {
 	printf("Program out of space while attempting to reallocate %u.\n", n);
 	if (Output_File != NULL) {
-	    fprintf(Output_File, 
+	    fprintf(Output_File,
 	        "Program out of space while attempting to reallocate %u.\n", n);
 	}
 	bail((char *) NULL, 1);
@@ -258,7 +258,7 @@ unsigned int n;			/* desired size of new allocation */
     if (p == NULL && DEBUG_MEMORY > 0) {
 	printf("WARNING: Program out of space while attempting to reallocate %u.\n", n);
 	if (Output_File != NULL) {
-	    fprintf(Output_File, 
+	    fprintf(Output_File,
 	        "WARNING: Program out of space while attempting to reallocate %u.\n", n);
 	}
     }
@@ -291,7 +291,8 @@ char     *ptr;
 	    }
 	    else {
 		*prev = dbptr->next;
-		bytes_used =- dbptr->size;
+		//bytes_used =- dbptr->size;
+                bytes_used -= dbptr->size; // ??? GMSH ???
 		free((char *) dbptr);
 	    }
 	}
diff --git a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp
index 0cc9e087fa..7efd16762b 100644
--- a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp
+++ b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp
@@ -1,6 +1,7 @@
 //#include <fenv.h>
 #include <stdio.h>
 #include <sstream>
+#include <iterator>
 #include <string.h>
 #include "OptHomRun.h"
 #include "GModel.h"
diff --git a/contrib/onelab/OnelabClients.cpp b/contrib/onelab/OnelabClients.cpp
index cfe9ce40ec..e79c8c6223 100644
--- a/contrib/onelab/OnelabClients.cpp
+++ b/contrib/onelab/OnelabClients.cpp
@@ -446,7 +446,7 @@ void localSolverClient::FixExecPath(const std::string &in)
     setCommandLine(cmd);
   }
 
-#if not defined(WIN32)
+#if !defined(WIN32)
   //if(split[0].find("elmerfem") != std::string::npos){
   if(!split[1].compare("ElmerSolver") && split[2].empty() && split[0].size()){
     std::string fileName = getWorkingDir() + getName() + ".sh";
@@ -504,7 +504,7 @@ bool localSolverClient::checkCommandLine(){
       success = checkIfPresent(getCommandLine());
 
       // resolve a possible linux link
-#if not defined(WIN32)
+#if !defined(WIN32)
       if(!success){
 	char cbuf [1024];
 	FILE *fp;
@@ -619,7 +619,7 @@ bool remoteClient::checkCommandLine(const std::string &commandLine){
   success=checkIfPresentRemote(commandLine);
 
   // resolve a possible linux link
-#if not defined(WIN32)
+#if !defined(WIN32)
   if(!success){
     char cbuf [1024];
     FILE *fp;
@@ -1334,7 +1334,7 @@ bool chmod(std::string fileName){
 
 #include <sys/types.h>
 
-#if not defined WIN32
+#if !defined(WIN32)
 #include <unistd.h>
 #include <pwd.h>
 std::string getUserHomedir(){
-- 
GitLab