[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