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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to