Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-11-20 10:11:15 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-11-20 10:11:15 +0400
commit2336bde2bfb8c56e250a8f47de12cf24e78a8e0c (patch)
treecdf2630e2d8c0db8ad477ede01e76b5db13007f7 /source/blender/python/bmesh/bmesh_py_ops.c
parentf792e288ea5f03642ddef694a3cfc79d670e2616 (diff)
py api: add mapping support to bmesh operator return values.
Diffstat (limited to 'source/blender/python/bmesh/bmesh_py_ops.c')
-rw-r--r--source/blender/python/bmesh/bmesh_py_ops.c23
1 files changed, 21 insertions, 2 deletions
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) {