Revision: 53907
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53907
Author:   campbellbarton
Date:     2013-01-19 03:51:17 +0000 (Sat, 19 Jan 2013)
Log Message:
-----------
utility function to get a mempool as a pointer array.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/BLI_mempool.h
    trunk/blender/source/blender/blenlib/intern/BLI_mempool.c

Modified: trunk/blender/source/blender/blenlib/BLI_mempool.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_mempool.h  2013-01-19 03:16:52 UTC 
(rev 53906)
+++ trunk/blender/source/blender/blenlib/BLI_mempool.h  2013-01-19 03:51:17 UTC 
(rev 53907)
@@ -86,6 +86,11 @@
 __attribute__((nonnull(1)))
 #endif
 ;
+void        BLI_mempool_as_array(BLI_mempool *pool, void **data)
+#ifdef __GNUC__
+__attribute__((nonnull(1)))
+#endif
+;
 
 /** iteration stuff.  note: this may easy to produce bugs with **/
 /* private structure */

Modified: trunk/blender/source/blender/blenlib/intern/BLI_mempool.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/BLI_mempool.c   2013-01-19 
03:16:52 UTC (rev 53906)
+++ trunk/blender/source/blender/blenlib/intern/BLI_mempool.c   2013-01-19 
03:51:17 UTC (rev 53907)
@@ -302,13 +302,29 @@
                BLI_mempool_iternew(pool, &iter);
                for (elem = BLI_mempool_iterstep(&iter); index-- != 0; elem = 
BLI_mempool_iterstep(&iter)) {
                        /* do nothing */
-               };
+               }
                return elem;
        }
 
        return NULL;
 }
 
+/**
+ * \param data array of pointers at least the size of 'pool->totused'
+ */
+void BLI_mempool_as_array(BLI_mempool *pool, void **data)
+{
+       BLI_mempool_iter iter;
+       void *elem;
+       void **p = data;
+       BLI_assert(pool->flag & BLI_MEMPOOL_ALLOW_ITER);
+       BLI_mempool_iternew(pool, &iter);
+       for (elem = BLI_mempool_iterstep(&iter); elem; elem = 
BLI_mempool_iterstep(&iter)) {
+               *p++ = elem;
+       }
+       BLI_assert((p - data) == pool->totused);
+}
+
 void BLI_mempool_iternew(BLI_mempool *pool, BLI_mempool_iter *iter)
 {
        BLI_assert(pool->flag & BLI_MEMPOOL_ALLOW_ITER);

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

Reply via email to