diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-02-22 14:41:07 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-02-22 14:41:07 +0400 |
commit | e0a6d273d015d1196661da010b676acdf5d4baf5 (patch) | |
tree | 1cccaf4f7f4d733620223dc14b626eba1a8d3c8b /source/blender/python/bmesh/bmesh_py_types.h | |
parent | e7d98179eabcb44d8042d85b3be55f604833a088 (diff) |
bmesh py api - generalize bmesg sequences to use the iterator type and optionally another bmesh element.
This allows BMFace.verts to be added without defining a new sequence type.
Diffstat (limited to 'source/blender/python/bmesh/bmesh_py_types.h')
-rw-r--r-- | source/blender/python/bmesh/bmesh_py_types.h | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/source/blender/python/bmesh/bmesh_py_types.h b/source/blender/python/bmesh/bmesh_py_types.h index 51d5e6aa5ee..541e93306ba 100644 --- a/source/blender/python/bmesh/bmesh_py_types.h +++ b/source/blender/python/bmesh/bmesh_py_types.h @@ -35,9 +35,7 @@ extern PyTypeObject BPy_BMVert_Type; extern PyTypeObject BPy_BMEdge_Type; extern PyTypeObject BPy_BMFace_Type; extern PyTypeObject BPy_BMLoop_Type; -extern PyTypeObject BPy_BMVertSeq_Type; -extern PyTypeObject BPy_BMEdgeSeq_Type; -extern PyTypeObject BPy_BMFaceSeq_Type; +extern PyTypeObject BPy_BMElemSeq_Type; extern PyTypeObject BPy_BMIter_Type; #define BPy_BMesh_Check(v) (Py_TYPE(v) == &BPy_BMesh_Type) @@ -45,9 +43,7 @@ extern PyTypeObject BPy_BMIter_Type; #define BPy_BMEdge_Check(v) (Py_TYPE(v) == &BPy_BMEdge_Type) #define BPy_BMFace_Check(v) (Py_TYPE(v) == &BPy_BMFace_Type) #define BPy_BMLoop_Check(v) (Py_TYPE(v) == &BPy_BMLoop_Type) -#define BPy_BMVertSeq_Check(v) (Py_TYPE(v) == &BPy_BMVertSeq_Type) -#define BPy_BMEdgeSeq_Check(v) (Py_TYPE(v) == &BPy_BMEdgeSeq_Type) -#define BPy_BMFaceSeq_Check(v) (Py_TYPE(v) == &BPy_BMFaceSeq_Type) +#define BPy_BMElemSeq_Check(v) (Py_TYPE(v) == &BPy_BMElemSeq_Type) #define BPy_BMIter_Check(v) (Py_TYPE(v) == &BPy_BMIter_Type) /* cast from _any_ bmesh type - they all have BMesh first */ @@ -95,6 +91,24 @@ typedef struct BPy_BMLoop { /* iterators */ + +typedef struct BPy_BMElemSeq { + PyObject_VAR_HEAD + struct BMesh *bm; /* keep first */ + + /* if this is a sequence on an existing element, + * loops of faces for eg. + * If this veriable is set, it will be used */ + + /* we hold a reference to this. + * check incase the owner becomes invalid on access */ + /* TODO - make this a GC'd object!, will function OK without this though */ + BPy_BMElem *py_ele; + + /* iterator type */ + short itype; +} BPy_BMElemSeq; + typedef struct BPy_BMIter { PyObject_VAR_HEAD struct BMesh *bm; /* keep first */ @@ -108,9 +122,7 @@ PyObject *BPy_BMVert_CreatePyObject(BMesh *bm, BMVert *v); PyObject *BPy_BMEdge_CreatePyObject(BMesh *bm, BMEdge *e); PyObject *BPy_BMFace_CreatePyObject(BMesh *bm, BMFace *f); PyObject *BPy_BMLoop_CreatePyObject(BMesh *bm, BMLoop *l); -PyObject *BPy_BMVertSeq_CreatePyObject(BMesh *bm); -PyObject *BPy_BMEdgeSeq_CreatePyObject(BMesh *bm); -PyObject *BPy_BMFaceSeq_CreatePyObject(BMesh *bm); +PyObject *BPy_BMElemSeq_CreatePyObject(BMesh *bm, BPy_BMElem *py_ele, const char itype); PyObject *BPy_BMIter_CreatePyObject(BMesh *bm); PyObject *BPy_BMElem_CreatePyObject(BMesh *bm, BMHeader *ele); /* just checks type and creates v/e/f/l */ |