Index: /issm/trunk/src/c/objects/Bamg/QuadTree.cpp
===================================================================
--- /issm/trunk/src/c/objects/Bamg/QuadTree.cpp	(revision 5266)
+++ /issm/trunk/src/c/objects/Bamg/QuadTree.cpp	(revision 5267)
@@ -99,15 +99,12 @@
 	/*FUNCTION QuadTree::QuadTree(){{{1*/
 	QuadTree::QuadTree() : 
-		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/QuadTree)*/
-
-		lenStorageQuadTreeBox(100), // by default 100 vertices by box
 		th(NULL),                   // initial mesh = NULL
 		NbQuadTreeBox(0),           // initial number of quadtree boxes = 0
 		NbVertices(0){              // initial number of vertices = 0
 
-			//create lenStorageQuadTreeBox (100) StorageQuadTreeBox elements
-			sb  =new StorageQuadTreeBox(lenStorageQuadTreeBox); 
-
-			//root=QuadTreeBox* pointer toward next quadtree box
+			/*Create container*/
+			boxcontainer=new DataSet();
+
+			/*Create Root, pointer toward the main box*/
 			root=NewQuadTreeBox();
 
@@ -116,27 +113,31 @@
 	/*FUNCTION QuadTree::QuadTree(Mesh * t,long nbv){{{1*/
 	QuadTree::QuadTree(Mesh * t,long nbv) : 
-		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/QuadTree)*/
-
-		lenStorageQuadTreeBox(t->maxnbv/8+10),
 		th(t),
 		NbQuadTreeBox(0),
 		NbVertices(0)
 	{ 
-	 if (nbv == -1) nbv = t->nbv;
-	 sb  = new StorageQuadTreeBox(lenStorageQuadTreeBox);
+	 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/QuadTree)*/
+
+	 /*Get number of vertices*/
+	 if (nbv==-1) nbv=t->nbv;
+
+	 /*Create container*/
+	 boxcontainer=new DataSet();
+
+	 /*Create Root, pointer toward the main box*/
 	 root=NewQuadTreeBox();
-	 if ( MaxISize <= MaxICoor){
-		 ISSMERROR("MaxISize <= MaxICoor");
-	 }
-	 for (int i=0;i<nbv;i++) 
-	  Add(t->vertices[i]);
+
+	 /*Check Sizes*/
+	 ISSMASSERT(MaxISize>MaxICoor);
+
+	 /*Add all vertices of the mesh*/
+	 for (int i=0;i<nbv;i++) Add(t->vertices[i]);
+
 	}
 	/*}}}1*/
 	/*FUNCTION QuadTree::~QuadTree(){{{1*/
 	QuadTree::~QuadTree() {
-		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/~QuadTree)*/
-
-		delete sb; 
-		root=0;
+		delete boxcontainer;
+		root=NULL;
 	}
 	/*}}}1*/
@@ -491,10 +492,17 @@
 	QuadTree::QuadTreeBox* QuadTree::NewQuadTreeBox(void){
 
-		/*if currentbox==lastbox or currentbox>lastbox (we have reach the end of the StorageQuadTreeBox)
-		 * create a new StorageQuadTreeBox)*/
-		if(!(sb->currentbox<sb->lastbox)){
-			sb=new StorageQuadTreeBox(lenStorageQuadTreeBox,sb);
-		}
-		ISSMASSERT(sb && sb->currentbox->nbitems==0);
+		/*Output*/
+		QuadTreeBox* newbox=NULL;
+
+		/*Create and initialize a new box*/
+		newbox=new QuadTreeBox;
+		newbox->nbitems=0;
+		newbox->b[0]=NULL;
+		newbox->b[1]=NULL;
+		newbox->b[2]=NULL;
+		newbox->b[3]=NULL;
+
+		/*Add root to the container*/
+		boxcontainer->AddObject(newbox);
 
 		/*Increase counter*/
@@ -502,11 +510,6 @@
 
 		/*currentbox now points toward next quadtree box*/
-		return sb->currentbox++;
+		return newbox;
 	}/*}}}*/
-	/*FUNCTION QuadTree::SizeOf{{{1*/
-	long QuadTree::SizeOf() const {
-		return sizeof(QuadTree)+sb->SizeOf();
-	}
-	/*}}}1*/
 	/*FUNCTION QuadTree::ToClose {{{1*/
 	BamgVertex*   QuadTree::ToClose(BamgVertex & v,double seuil,Icoor1 hx,Icoor1 hy){
@@ -584,43 +587,3 @@
 	}
 	/*}}}1*/
-
-	/*StorageQuadTreeBox Methods*/
-	/*FUNCTION QuadTree::StorageQuadTreeBox::StorageQuadTreeBox{{{1*/
-	QuadTree::StorageQuadTreeBox::StorageQuadTreeBox(long nbquadtreeboxes_in,StorageQuadTreeBox *nextsb_in) {
-		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/StorageQuadTreeBox)*/
-
-		/*Initilalize variables*/
-		nbquadtreeboxes = nbquadtreeboxes_in;       // number of quadtree boxes
-		nextsb          = nextsb_in;                // next StorageQuadTreeBox pointer
-		boxes   = new QuadTreeBox[nbquadtreeboxes]; // quadtree boxes 
-		ISSMASSERT(boxes);                          // check allocation
-
-		/*Initialize all quadtree boxes (empty)*/
-		for (int i = 0; i <nbquadtreeboxes;i++){
-			boxes[i].nbitems=0;
-			boxes[i].b[0]=NULL;
-			boxes[i].b[1]=NULL;
-			boxes[i].b[2]=NULL;
-			boxes[i].b[3]=NULL;
-		}
-
-		currentbox = boxes;
-		lastbox  = boxes + nbquadtreeboxes;
-
-	}
-	/*}}}1*/
-	/*FUNCTION QuadTree::StorageQuadTreeBox::~StorageQuadTreeBox{{{1*/
-	QuadTree::StorageQuadTreeBox::~StorageQuadTreeBox(){
-
-		if(nextsb) delete nextsb;
-		delete [] boxes;
-
-	}
-	/*}}}1*/
-	/*FUNCTION QuadTree::StorageQuadTreeBox::SizeOf {{{1*/
-	long  QuadTree::StorageQuadTreeBox::SizeOf() const {
-
-		return nbquadtreeboxes*sizeof(QuadTreeBox)+sizeof(StorageQuadTreeBox)+ (nextsb?nextsb->SizeOf():0);
-
-	}/*}}}*/
 }
Index: /issm/trunk/src/c/objects/Bamg/QuadTree.h
===================================================================
--- /issm/trunk/src/c/objects/Bamg/QuadTree.h	(revision 5266)
+++ /issm/trunk/src/c/objects/Bamg/QuadTree.h	(revision 5267)
@@ -17,39 +17,31 @@
 		private:
 
-			class QuadTreeBox{ 
-				/*A quadtree box contains a maximum of 4 vertices. 4 other quadtree boxes are
-				 * created if a fifth vertex is added to the same box. A Quadtree box is therefore
-				 * composed of EITHER:
-				 * - up to 4 vertices
-				 * - 4 "sub" quadtree boxes*/
-
+			/*A quadtree box contains a maximum of 4 vertices. 4 other quadtree boxes are
+			 * created if a fifth vertex is added to the same box. A Quadtree box is therefore
+			 * composed of EITHER:
+			 * - up to 4 vertices
+			 * - 4 "sub" quadtree boxes*/
+			class QuadTreeBox: public Object{ 
 				public:
-
+					int id;
 					int nbitems; // number of current vertices in the box
-
 					union{
 						QuadTreeBox* b[4];
 						BamgVertex*  v[4];
 					};
-			};
-
-			class StorageQuadTreeBox{
-
-				public:
-
-					/*Fields*/
-					QuadTreeBox        *boxes,*currentbox,*lastbox;
-					long                nbquadtreeboxes;
-					StorageQuadTreeBox *nextsb;         // next StorageQuadTreeBox
-
-					/*Methods*/
-					StorageQuadTreeBox(long ,StorageQuadTreeBox* =NULL);
-					~StorageQuadTreeBox();
-					long  SizeOf() const;
+					/*Object functions*/
+					void  Echo(){ISSMERROR("not implemented yet");};
+					void  DeepEcho(){ISSMERROR("not implemented yet");};
+					int   Id(){ISSMERROR("not implemented yet");};
+					int   MyRank(){ISSMERROR("not implemented yet");};
+					void  Marshall(char** pmarshalled_dataset){ISSMERROR("not implemented yet");};
+					int   MarshallSize(){ISSMERROR("not implemented yet");};
+					void  Demarshall(char** pmarshalled_dataset){ISSMERROR("not implemented yet");};
+					int   Enum(){ISSMERROR("not implemented yet");};
+					Object* copy(){ISSMERROR("not implemented yet");};
 			};
 
 			/*QuadTree private Fields*/
-			StorageQuadTreeBox* sb;
-			long                lenStorageQuadTreeBox;
+			DataSet* boxcontainer;
 
 		public:
@@ -69,5 +61,4 @@
 			QuadTreeBox* NewQuadTreeBox(void);
 			BamgVertex*  ToClose(BamgVertex & ,double ,Icoor1,Icoor1);
-			long         SizeOf() const;
 			void         Add( BamgVertex & w);
 
