[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53907] trunk/blender/source/blender/ blenlib: utility function to get a mempool as a pointer array.

Campbell Barton ideasman42 at gmail.com
Sat Jan 19 04:51:22 CET 2013


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);




More information about the Bf-blender-cvs mailing list