[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52396] trunk/blender/source/blender/ python/bmesh/bmesh_py_ops.c: py api: add mapping support to bmesh operator return values.

Campbell Barton ideasman42 at gmail.com
Tue Nov 20 07:11:20 CET 2012


Revision: 52396
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52396
Author:   campbellbarton
Date:     2012-11-20 06:11:15 +0000 (Tue, 20 Nov 2012)
Log Message:
-----------
py api: add mapping support to bmesh operator return values.

Modified Paths:
--------------
    trunk/blender/source/blender/python/bmesh/bmesh_py_ops.c

Modified: trunk/blender/source/blender/python/bmesh/bmesh_py_ops.c
===================================================================
--- trunk/blender/source/blender/python/bmesh/bmesh_py_ops.c	2012-11-20 05:58:17 UTC (rev 52395)
+++ trunk/blender/source/blender/python/bmesh/bmesh_py_ops.c	2012-11-20 06:11:15 UTC (rev 52396)
@@ -367,9 +367,28 @@
 					break;
 				}
 				case BMO_OP_SLOT_MAPPING:
-					item = (Py_INCREF(Py_None), Py_None);
-					// TODO
+				{
+					GHash *slot_hash = BMO_SLOT_AS_GHASH(slot);
+					GHashIterator *hash_iter;
+					item = PyDict_New();
+
+					for (hash_iter = BLI_ghashIterator_new(slot_hash);
+					     !BLI_ghashIterator_isDone(hash_iter);
+					     BLI_ghashIterator_step(hash_iter) )
+					{
+						BMHeader  *ele_key = BLI_ghashIterator_getKey(hash_iter);
+						BMHeader **ele_val = BLI_ghashIterator_getValue(hash_iter);
+
+						PyObject *py_key =  ele_key ? BPy_BMElem_CreatePyObject(bm,  ele_key) : (Py_INCREF(Py_None), Py_None);
+						PyObject *py_val = *ele_val ? BPy_BMElem_CreatePyObject(bm, *ele_val) : (Py_INCREF(Py_None), Py_None);
+
+						PyDict_SetItem(ret, py_key, py_val);
+						Py_DECREF(py_key);
+						Py_DECREF(py_val);
+					}
+					BLI_ghashIterator_free(hash_iter);
 					break;
+				}
 			}
 			BLI_assert(item != NULL);
 			if (item == NULL) {




More information about the Bf-blender-cvs mailing list