From 2336bde2bfb8c56e250a8f47de12cf24e78a8e0c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 20 Nov 2012 06:11:15 +0000 Subject: py api: add mapping support to bmesh operator return values. --- source/blender/python/bmesh/bmesh_py_ops.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'source/blender/python/bmesh/bmesh_py_ops.c') diff --git a/source/blender/python/bmesh/bmesh_py_ops.c b/source/blender/python/bmesh/bmesh_py_ops.c index dde00a6aca0..4457a8390e1 100644 --- a/source/blender/python/bmesh/bmesh_py_ops.c +++ b/source/blender/python/bmesh/bmesh_py_ops.c @@ -367,9 +367,28 @@ static PyObject *pyrna_op_call(BPy_BMeshOpFunc *self, PyObject *args, PyObject * 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) { -- cgit v1.2.3