[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