[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23318] branches/bmesh/blender/source/ blender: part 1 of cleaning up my little array macro library to be a formal API.

Joseph Eagar joeedh at gmail.com
Fri Sep 18 01:05:35 CEST 2009


Revision: 23318
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23318
Author:   joeedh
Date:     2009-09-18 01:05:33 +0200 (Fri, 18 Sep 2009)

Log Message:
-----------
part 1 of cleaning up my little array macro library to be a formal API.  also removed some extraneous selection calls from loopcut.c.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h
    branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
    branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
    branches/bmesh/blender/source/blender/blenlib/BLI_cellalloc.h
    branches/bmesh/blender/source/blender/bmesh/bmesh_operator_api.h
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_interp.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_marking.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_polygon.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_queries.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_to_editmesh.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers.c
    branches/bmesh/blender/source/blender/bmesh/intern/editmesh_to_bmesh.c
    branches/bmesh/blender/source/blender/bmesh/operators/bmesh_dupeops.c
    branches/bmesh/blender/source/blender/bmesh/operators/connectops.c
    branches/bmesh/blender/source/blender/bmesh/operators/createops.c
    branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c
    branches/bmesh/blender/source/blender/bmesh/operators/extrudeops.c
    branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
    branches/bmesh/blender/source/blender/bmesh/operators/mirror.c
    branches/bmesh/blender/source/blender/bmesh/operators/removedoubles.c
    branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c
    branches/bmesh/blender/source/blender/bmesh/operators/triangulateop.c
    branches/bmesh/blender/source/blender/bmesh/operators/utils.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_selecthistory.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
    branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c
    branches/bmesh/blender/source/blender/editors/mesh/editmesh_loop.c
    branches/bmesh/blender/source/blender/editors/mesh/loopcut.c
    branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c
    branches/bmesh/blender/source/blender/editors/uvedit/uvedit_draw.c
    branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c
    branches/bmesh/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c

Added Paths:
-----------
    branches/bmesh/blender/source/blender/blenlib/BLI_array.h

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h	2009-09-17 22:00:49 UTC (rev 23317)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h	2009-09-17 23:05:33 UTC (rev 23318)
@@ -195,55 +195,6 @@
 #define SET_INT_IN_POINTER(i) ((void*)(intptr_t)(i))
 #define GET_INT_FROM_POINTER(i) ((int)(intptr_t)(i))
 
-/*little array macro library.  example of usage:
-
-int *arr = NULL;
-V_DECLARE(arr);
-int i;
-
-for (i=0; i<10; i++) {
-	V_GROW(arr);
-	arr[i] = something;
-}
-V_FREE(arr);
-
-arrays are buffered, using double-buffering (so on each reallocation,
-the array size is doubled).  supposedly this should give good Big Oh
-behaviour, though it may not be the best in practice.
-*/
-
-#define V_DECLARE(vec) int _##vec##_count=0; void *_##vec##_tmp
-
-/*in the future, I plan on having V_DECLARE allocate stack memory it'll
-  use at first, and switch over to heap when it needs more.  that'll mess
-  up cases where you'd want to use this API to build a dynamic list for
-  non-local use, so all such cases should use this macro.*/
-#define V_DYNDECLARE(vec) V_DECLARE(vec)
-
-/*this returns the entire size of the array, including any buffering.*/
-#define V_SIZE(vec) ((signed int)((vec)==NULL ? 0 : MEM_allocN_len(vec) / sizeof(*vec)))
-
-/*this returns the logical size of the array, not including buffering.*/
-#define V_COUNT(vec) _##vec##_count
-
-/*grow the array by one.  zeroes the new elements.*/
-#define V_GROW(vec) \
-	V_SIZE(vec) > _##vec##_count ? _##vec##_count++ : \
-	((_##vec##_tmp = MEM_callocN(sizeof(*vec)*(_##vec##_count*2+2), #vec " " __FILE__ " ")),\
-	(vec && memcpy(_##vec##_tmp, vec, sizeof(*vec) * _##vec##_count)),\
-	(vec && (MEM_freeN(vec),1)),\
-	(vec = _##vec##_tmp),\
-	_##vec##_count++)
-
-#define V_FREE(vec) if (vec) MEM_freeN(vec);
-
-/*resets the logical size of an array to zero, but doesn't
-  free the memory.*/
-#define V_RESET(vec) _##vec##_count=0
-
-/*set the count of the array*/
-#define V_SETCOUNT(vec, count) _##vec##_count = (count)
-
 /*little macro so inline keyword works*/
 #if defined(_MSC_VER)
 #define BM_INLINE static __forceinline

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c	2009-09-17 22:00:49 UTC (rev 23317)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c	2009-09-17 23:05:33 UTC (rev 23318)
@@ -58,6 +58,7 @@
 #include "BLI_editVert.h"
 #include "BLI_linklist.h"
 #include "BLI_memarena.h"
+#include "BLI_array.h"
 
 #include "BKE_cdderivedmesh.h"
 #include "BKE_customdata.h"
@@ -1782,7 +1783,7 @@
 	ColorBand *coba= stored_cb;	/* warning, not a local var */
 	unsigned char *wtcol;
 	unsigned char(*wlcol)[4] = NULL;
-	V_DECLARE(wlcol);
+	BLI_array_declare(wlcol);
 	int i, totface=dm->getNumTessFaces(dm), totpoly=dm->getNumFaces, totloop;
 	int *origIndex = dm->getVertDataArray(dm, CD_ORIGINDEX);
 	
@@ -1806,7 +1807,7 @@
 	for (; !dfiter->done; dfiter->step(dfiter)) {
 		dliter = dfiter->getLoopsIter(dfiter);
 		for (; !dliter->done; dliter->step(dliter), totloop++) {
-			V_GROW(wlcol);
+			BLI_array_growone(wlcol);
 			calc_weightpaint_vert_color(ob, coba, dliter->vindex, &wlcol[totloop]);			 
 		}
 	}

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c	2009-09-17 22:00:49 UTC (rev 23317)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c	2009-09-17 23:05:33 UTC (rev 23318)
@@ -60,6 +60,7 @@
 #include "BLI_memarena.h"
 #include "BLI_scanfill.h"
 #include "BLI_ghash.h"
+#include "BLI_array.h"
 
 #include "BKE_cdderivedmesh.h"
 #include "BKE_customdata.h"
@@ -124,7 +125,7 @@
 {
 	BMesh *bm = tm->bm;
 	BMLoop **looptris = NULL;
-	V_DYNDECLARE(looptris);
+	BLI_array_declare(looptris);
 	BMIter iter, liter;
 	BMFace *f;
 	BMLoop *l;
@@ -144,9 +145,9 @@
 		/*don't consider two-edged faces*/
 		if (f->len < 3) continue;
 		
-		//V_GROW(looptris);
-		//V_GROW(looptris);
-		//V_GROW(looptris);
+		//BLI_array_growone(looptris);
+		//BLI_array_growone(looptris);
+		//BLI_array_growone(looptris);
 
 		looptris[i*3] = f->loopbase;
 		looptris[i*3+1] = f->loopbase->head.next;
@@ -154,9 +155,9 @@
 		i++;
 
 		if (f->len > 3) {
-			//V_GROW(looptris);
-			//V_GROW(looptris);
-			//V_GROW(looptris);
+			//BLI_array_growone(looptris);
+			//BLI_array_growone(looptris);
+			//BLI_array_growone(looptris);
 
 			looptris[i*3] = f->loopbase;
 			looptris[i*3+1] = f->loopbase->head.next->next;
@@ -205,9 +206,9 @@
 		for (efa = fillfacebase.first; efa; efa=efa->next) {
 			BMLoop *l1, *l2, *l3;
 
-			V_GROW(looptris);
-			V_GROW(looptris);
-			V_GROW(looptris);
+			BLI_array_growone(looptris);
+			BLI_array_growone(looptris);
+			BLI_array_growone(looptris);
 			
 			looptris[i*3] = l1 = efa->v1->tmp.p;
 			looptris[i*3+1] = l2 = efa->v2->tmp.p;

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c	2009-09-17 22:00:49 UTC (rev 23317)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c	2009-09-17 23:05:33 UTC (rev 23318)
@@ -72,6 +72,7 @@
 #include "BLI_editVert.h"
 #include "BLI_arithb.h"
 #include "BLI_cellalloc.h"
+#include "BLI_array.h"
 
 #include "bmesh.h"
 
@@ -1476,10 +1477,10 @@
 	MPoly *mp, *mpoly;
 	MLoop *ml, *mloop;
 	MFace *mf = NULL, *mface;
-	V_DECLARE(mf);
+	BLI_array_declare(mf);
 	EditVert *v, *lastv, *firstv;
 	EditFace *f;
-	V_DECLARE(origIndex);
+	BLI_array_declare(origIndex);
 	int i, j, k, lindex[3], *origIndex = NULL, *polyorigIndex;
 	int numTex, numCol;
 
@@ -1516,8 +1517,8 @@
 		
 		BLI_edgefill(0, 0);
 		for (f=fillfacebase.first; f; f=f->next) {
-			V_GROW(mf);
-			V_GROW(origIndex);
+			BLI_array_growone(mf);
+			BLI_array_growone(origIndex);
 
 			/*these are loop indices, they'll be transformed
 			  into vert indices later.*/

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c	2009-09-17 22:00:49 UTC (rev 23317)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c	2009-09-17 23:05:33 UTC (rev 23318)
@@ -52,6 +52,7 @@
 #include "BLI_memarena.h"
 #include "BLI_cellalloc.h"
 #include "BLI_mempool.h"
+#include "BLI_array.h"
 
 #include "MEM_guardedalloc.h"
 
@@ -2276,13 +2277,13 @@
 {
 	DerivedMesh *cddm = CDDM_copy(dm, 0);
 	MEdge *medge;
-	V_DECLARE(medge);
+	BLI_array_declare(medge);
 	MLoop *mloop, *ml, *prevl;
 	MPoly *mpoly, *mp;
 	MVert *mvert;
-	V_DECLARE(mvert);
+	BLI_array_declare(mvert);
 	EdgeData *etags, *e, *enext;
-	V_DECLARE(etags);
+	BLI_array_declare(etags);
 	VertUser *vu, *vu2;
 	MemBase *membase;
 	CustomData edata, vdata;
@@ -2296,12 +2297,12 @@
 	membase = new_membase();
 
 	etags = MEM_callocN(sizeof(EdgeData)*cddm->numEdgeData, "edgedata tag thingies");
-	V_SETCOUNT(etags, cddm->numEdgeData);
+	BLI_array_set_length(etags, cddm->numEdgeData);
 
 	mvert = cddm->getVertArray(cddm);
-	V_SETCOUNT(mvert, cddm->numVertData);
+	BLI_array_set_length(mvert, cddm->numVertData);
 	medge = cddm->getEdgeArray(cddm);
-	V_SETCOUNT(medge, cddm->numEdgeData);
+	BLI_array_set_length(medge, cddm->numEdgeData);
 	mloop = CustomData_get_layer(&cddm->loopData, CD_MLOOP);
 	mpoly = CustomData_get_layer(&cddm->polyData, CD_MPOLY);
 
@@ -2411,7 +2412,7 @@
 			e = etags + ml->e;
 			if (e->v1user && !e->v1user->done) {
 				e->v1user->done = 1;
-				V_GROW(mvert);
+				BLI_array_growone(mvert);
 
 				mvert[curv] = mvert[e->v1user->ov];
 				e->v1user->v = curv;
@@ -2421,7 +2422,7 @@
 
 			if (e->v2user && !e->v2user->done) {
 				e->v2user->done = 1;
-				V_GROW(mvert);
+				BLI_array_growone(mvert);
 
 				mvert[curv] = mvert[e->v2user->ov];
 				e->v2user->v = curv;
@@ -2438,8 +2439,8 @@
 			/*ok, now we have to deal with edges. . .*/
 			if (etags[ml->e].tag) {
 				if (etags[ml->e].used) {
-					V_GROW(medge);
-					V_GROW(etags);
+					BLI_array_growone(medge);
+					BLI_array_growone(etags);
 					medge[cure] = medge[ml->e];
 					
 					ml->e = cure;

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c	2009-09-17 22:00:49 UTC (rev 23317)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c	2009-09-17 23:05:33 UTC (rev 23318)
@@ -66,6 +66,7 @@
 #include "DNA_texture_types.h"
 
 #include "BLI_editVert.h"
+#include "BLI_array.h"
 
 #include "BKE_main.h"
 #include "BKE_anim.h"
@@ -119,8 +120,8 @@
 	BMEdge *e, **etable, **edges=NULL;
 	BMFace *f;
 	BMIter liter;
-	V_DECLARE(verts);
-	V_DECLARE(edges);
+	BLI_array_declare(verts);
+	BLI_array_declare(edges);
 	int numTex, numCol;
 	int i, j, k, totvert, totedge, totface;
 	
@@ -180,13 +181,13 @@
 	for (; !dfiter->done; dfiter->step(dfiter)) {
 		BMLoop *l;
 
-		V_RESET(verts);
-		V_RESET(edges);
+		BLI_array_empty(verts);
+		BLI_array_empty(edges);
 
 		dliter = dfiter->getLoopsIter(dfiter);
 		for (j=0; !dliter->done; dliter->step(dliter), j++) {
-			V_GROW(verts);
-			V_GROW(edges);
+			BLI_array_growone(verts);
+			BLI_array_growone(edges);
 
 			verts[j] = vtable[dliter->vindex];
 			edges[j] = etable[dliter->eindex];
@@ -218,8 +219,8 @@
 	MEM_freeN(vtable);
 	MEM_freeN(etable);
 	
-	V_FREE(verts);
-	V_FREE(edges);
+	BLI_array_free(verts);
+	BLI_array_free(edges);
 
 	if (!em) em = BMEdit_Create(bm);
 	else BMEdit_RecalcTesselation(em);

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2009-09-17 22:00:49 UTC (rev 23317)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2009-09-17 23:05:33 UTC (rev 23318)
@@ -60,6 +60,7 @@
 #include "BLI_memarena.h"
 #include "BLI_edgehash.h"
 #include "PIL_time.h"
+#include "BLI_array.h"
 
 #include "BIF_gl.h"

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list