From 74e9563b8a76e509263390763b7328ce7c2ccff1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 26 Feb 2012 17:20:36 +0000 Subject: * bmesh py api BMEdge.verts was using 2 v1's * bmesh pu api __repr__ functions for mesh data. * correct py hash defines. --- source/blender/bmesh/intern/bmesh_iterators.c | 2 +- source/blender/python/bmesh/bmesh_py_types.c | 88 ++++++++++++++++++++++++++- source/blender/python/generic/idprop_py_api.c | 2 +- source/blender/python/intern/bpy_rna.c | 2 +- 4 files changed, 89 insertions(+), 5 deletions(-) (limited to 'source/blender') diff --git a/source/blender/bmesh/intern/bmesh_iterators.c b/source/blender/bmesh/intern/bmesh_iterators.c index fb63ab36ef5..11944dc1fa2 100644 --- a/source/blender/bmesh/intern/bmesh_iterators.c +++ b/source/blender/bmesh/intern/bmesh_iterators.c @@ -389,7 +389,7 @@ void *bmiter__vert_of_edge_step(BMIter *iter) case 1: return iter->edata->v1; case 2: - return iter->edata->v1; + return iter->edata->v2; default: return NULL; } diff --git a/source/blender/python/bmesh/bmesh_py_types.c b/source/blender/python/bmesh/bmesh_py_types.c index 906451f0d57..f18741ba0ed 100644 --- a/source/blender/python/bmesh/bmesh_py_types.c +++ b/source/blender/python/bmesh/bmesh_py_types.c @@ -2015,11 +2015,15 @@ static void bpy_bmelemseq_dealloc(BPy_BMElemSeq *self) } /* not sure where this should go */ -static long bpy_bm_elem_hash(PyObject *self) +static Py_hash_t bpy_bm_elem_hash(PyObject *self) { return _Py_HashPointer(((BPy_BMElem *)self)->ele); } +static Py_hash_t bpy_bm_hash(PyObject *self) +{ + return _Py_HashPointer(((BPy_BMesh *)self)->bm); +} /* Type Docstrings * =============== */ @@ -2051,6 +2055,77 @@ PyDoc_STRVAR(bpy_bmiter_doc, "used for iterating over :class:`BMElemSeq` types.\n" ); +static PyObject *bpy_bmesh_repr(BPy_BMesh *self) +{ + BMesh *bm = self->bm; + + if (bm) { + return PyUnicode_FromFormat("", + bm, bm->totvert, bm->totedge, bm->totface, bm->totloop); + } + else { + return PyUnicode_FromFormat("", self); + } +} + +static PyObject *bpy_bmvert_repr(BPy_BMVert *self) +{ + BMesh *bm = self->bm; + + if (bm) { + return PyUnicode_FromFormat("", + self->v, BM_elem_index_get(self->v)); + } + else { + return PyUnicode_FromFormat("", self); + } +} + +static PyObject *bpy_bmedge_repr(BPy_BMEdge *self) +{ + BMesh *bm = self->bm; + + if (bm) { + return PyUnicode_FromFormat("", + self->e, BM_elem_index_get(self->e), + self->e->v1, BM_elem_index_get(self->e->v1), + self->e->v2, BM_elem_index_get(self->e->v2)); + } + else { + return PyUnicode_FromFormat("", self); + } +} + +static PyObject *bpy_bmface_repr(BPy_BMFace *self) +{ + BMesh *bm = self->bm; + + if (bm) { + return PyUnicode_FromFormat("", + self->f, BM_elem_index_get(self->f), + self->f->len); + } + else { + return PyUnicode_FromFormat("", self); + } +} + +static PyObject *bpy_bmloop_repr(BPy_BMLoop *self) +{ + BMesh *bm = self->bm; + + if (bm) { + return PyUnicode_FromFormat("", + self->l, BM_elem_index_get(self->l), + self->l->v, BM_elem_index_get(self->l->v), + self->l->e, BM_elem_index_get(self->l->e), + self->l->f, BM_elem_index_get(self->l->f)); + } + else { + return PyUnicode_FromFormat("", self); + } +} + /* Types * ===== */ @@ -2093,6 +2168,15 @@ void BPy_BM_init_types(void) BPy_BMIter_Type.tp_doc = bpy_bmiter_doc; + BPy_BMesh_Type.tp_repr = (reprfunc)bpy_bmesh_repr; + BPy_BMVert_Type.tp_repr = (reprfunc)bpy_bmvert_repr; + BPy_BMEdge_Type.tp_repr = (reprfunc)bpy_bmedge_repr; + BPy_BMFace_Type.tp_repr = (reprfunc)bpy_bmface_repr; + BPy_BMLoop_Type.tp_repr = (reprfunc)bpy_bmloop_repr; + BPy_BMElemSeq_Type.tp_repr = NULL; + BPy_BMIter_Type.tp_repr = NULL; + + BPy_BMesh_Type.tp_getset = bpy_bmesh_getseters; BPy_BMVert_Type.tp_getset = bpy_bmvert_getseters; BPy_BMEdge_Type.tp_getset = bpy_bmedge_getseters; @@ -2111,7 +2195,7 @@ void BPy_BM_init_types(void) BPy_BMIter_Type.tp_methods = NULL; - BPy_BMesh_Type.tp_hash = NULL; + BPy_BMesh_Type.tp_hash = bpy_bm_hash; BPy_BMVert_Type.tp_hash = bpy_bm_elem_hash; BPy_BMEdge_Type.tp_hash = bpy_bm_elem_hash; BPy_BMFace_Type.tp_hash = bpy_bm_elem_hash; diff --git a/source/blender/python/generic/idprop_py_api.c b/source/blender/python/generic/idprop_py_api.c index 516c0afa883..4cff5cbca95 100644 --- a/source/blender/python/generic/idprop_py_api.c +++ b/source/blender/python/generic/idprop_py_api.c @@ -127,7 +127,7 @@ static PyObject *idprop_py_from_idp_idparray(ID *id, IDProperty *prop) /* -------------------------------------------------------------------------- */ /* use for both array and group */ -static long BPy_IDGroup_hash(BPy_IDProperty *self) +static Py_hash_t BPy_IDGroup_hash(BPy_IDProperty *self) { return _Py_HashPointer(self->prop); } diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 23718df1c66..babd4c91165 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -999,7 +999,7 @@ static PyObject *pyrna_func_repr(BPy_FunctionRNA *self) } -static long pyrna_struct_hash(BPy_StructRNA *self) +static Py_hash_t pyrna_struct_hash(BPy_StructRNA *self) { return _Py_HashPointer(self->ptr.data); } -- cgit v1.2.3