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-02-22 14:41:07 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-02-22 14:41:07 +0400
commite0a6d273d015d1196661da010b676acdf5d4baf5 (patch)
tree1cccaf4f7f4d733620223dc14b626eba1a8d3c8b /source/blender/python/bmesh/bmesh_py_types.h
parente7d98179eabcb44d8042d85b3be55f604833a088 (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.h30
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 */