Blender  V3.3
Classes | Macros | Typedefs | Enumerations | Functions | Variables
bmesh_py_types.h File Reference

Go to the source code of this file.

Classes

struct  BPy_BMGeneric
 
struct  BPy_BMElem
 
struct  BPy_BMesh
 
struct  BPy_BMVert
 
struct  BPy_BMEdge
 
struct  BPy_BMFace
 
struct  BPy_BMLoop
 
struct  BPy_BMElemSeq
 
struct  BPy_BMIter
 

Macros

#define BPy_BMesh_Check(v)   (Py_TYPE(v) == &BPy_BMesh_Type)
 
#define BPy_BMVert_Check(v)   (Py_TYPE(v) == &BPy_BMVert_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_BMElemSeq_Check(v)   (Py_TYPE(v) == &BPy_BMElemSeq_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_BMLoopSeq_Check(v)   (Py_TYPE(v) == &BPy_BMLoopSeq_Type)
 
#define BPy_BMIter_Check(v)   (Py_TYPE(v) == &BPy_BMIter_Type)
 
#define BPy_BMElem_Check(v)   (Py_TYPE(v)->tp_hash == BPy_BMVert_Type.tp_hash)
 
#define BPY_BM_CHECK_OBJ(obj)
 
#define BPY_BM_CHECK_INT(obj)
 
#define BPY_BM_CHECK_SOURCE_OBJ(bm, errmsg, ...)
 
#define BPY_BM_CHECK_SOURCE_INT(bm, errmsg, ...)
 
#define BPY_BM_IS_VALID(obj)   (LIKELY((obj)->bm != NULL))
 
#define BM_ITER_BPY_BM_SEQ(ele, iter, bpy_bmelemseq)
 

Typedefs

typedef struct BPy_BMGeneric BPy_BMGeneric
 
typedef struct BPy_BMElem BPy_BMElem
 
typedef struct BPy_BMesh BPy_BMesh
 
typedef struct BPy_BMVert BPy_BMVert
 
typedef struct BPy_BMEdge BPy_BMEdge
 
typedef struct BPy_BMFace BPy_BMFace
 
typedef struct BPy_BMLoop BPy_BMLoop
 
typedef struct BPy_BMElemSeq BPy_BMElemSeq
 
typedef struct BPy_BMIter BPy_BMIter
 

Enumerations

enum  { BPY_BMFLAG_NOP = 0 , BPY_BMFLAG_IS_WRAPPED = 1 }
 

Functions

void BPy_BM_init_types (void)
 
PyObject * BPyInit_bmesh_types (void)
 
PyObject * BPy_BMesh_CreatePyObject (BMesh *bm, int flag)
 
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_BMElemSeq_CreatePyObject (BMesh *bm, BPy_BMElem *py_ele, char itype)
 
PyObject * BPy_BMVertSeq_CreatePyObject (BMesh *bm)
 
PyObject * BPy_BMEdgeSeq_CreatePyObject (BMesh *bm)
 
PyObject * BPy_BMFaceSeq_CreatePyObject (BMesh *bm)
 
PyObject * BPy_BMLoopSeq_CreatePyObject (BMesh *bm)
 
PyObject * BPy_BMIter_CreatePyObject (BMesh *bm)
 
PyObject * BPy_BMElem_CreatePyObject (BMesh *bm, BMHeader *ele)
 
voidBPy_BMElem_PySeq_As_Array_FAST (BMesh **r_bm, PyObject *seq_fast, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_size, char htype, bool do_unique_check, bool do_bm_check, const char *error_prefix)
 
voidBPy_BMElem_PySeq_As_Array (BMesh **r_bm, PyObject *seq, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_size, char htype, bool do_unique_check, bool do_bm_check, const char *error_prefix)
 
PyObject * BPy_BMElem_Array_As_Tuple (BMesh *bm, BMHeader **elem, Py_ssize_t elem_len)
 
PyObject * BPy_BMVert_Array_As_Tuple (BMesh *bm, BMVert **elem, Py_ssize_t elem_len)
 
PyObject * BPy_BMEdge_Array_As_Tuple (BMesh *bm, BMEdge **elem, Py_ssize_t elem_len)
 
PyObject * BPy_BMFace_Array_As_Tuple (BMesh *bm, BMFace **elem, Py_ssize_t elem_len)
 
PyObject * BPy_BMLoop_Array_As_Tuple (BMesh *bm, BMLoop **elem, Py_ssize_t elem_len)
 
int BPy_BMElem_CheckHType (PyTypeObject *type, char htype)
 
char * BPy_BMElem_StringFromHType_ex (char htype, char ret[32])
 
char * BPy_BMElem_StringFromHType (char htype)
 
int bpy_bm_generic_valid_check (BPy_BMGeneric *self)
 
int bpy_bm_generic_valid_check_source (BMesh *bm_source, const char *error_prefix, void **args, uint args_tot) ATTR_NONNULL(1
 

Variables

PyTypeObject BPy_BMesh_Type
 
PyTypeObject BPy_BMVert_Type
 
PyTypeObject BPy_BMEdge_Type
 
PyTypeObject BPy_BMFace_Type
 
PyTypeObject BPy_BMLoop_Type
 
PyTypeObject BPy_BMElemSeq_Type
 
PyTypeObject BPy_BMVertSeq_Type
 
PyTypeObject BPy_BMEdgeSeq_Type
 
PyTypeObject BPy_BMFaceSeq_Type
 
PyTypeObject BPy_BMLoopSeq_Type
 
PyTypeObject BPy_BMIter_Type
 

Macro Definition Documentation

◆ BM_ITER_BPY_BM_SEQ

#define BM_ITER_BPY_BM_SEQ (   ele,
  iter,
  bpy_bmelemseq 
)
Value:
iter, \
(bpy_bmelemseq)->bm, \
(bpy_bmelemseq)->itype, \
(bpy_bmelemseq)->py_ele ? ((BPy_BMElem *)(bpy_bmelemseq)->py_ele)->ele : NULL); \
ele; \
BM_CHECK_TYPE_ELEM_ASSIGN(ele) = BM_iter_step(iter))
#define BM_CHECK_TYPE_ELEM_ASSIGN(ele)
Definition: bmesh_class.h:466
#define BM_iter_new(iter, bm, itype, data)
ATTR_WARN_UNUSED_RESULT BMesh const char itype
ATTR_WARN_UNUSED_RESULT BMesh * bm

Definition at line 220 of file bmesh_py_types.h.

◆ BPY_BM_CHECK_INT

#define BPY_BM_CHECK_INT (   obj)
Value:
return -1; \
} \
(void)0
#define UNLIKELY(x)
int bpy_bm_generic_valid_check(BPy_BMGeneric *self)
SyclQueue void void size_t num_bytes void

Definition at line 190 of file bmesh_py_types.h.

◆ BPY_BM_CHECK_OBJ

#define BPY_BM_CHECK_OBJ (   obj)
Value:
return NULL; \
} \
(void)0

Definition at line 185 of file bmesh_py_types.h.

◆ BPY_BM_CHECK_SOURCE_INT

#define BPY_BM_CHECK_SOURCE_INT (   bm,
  errmsg,
  ... 
)
Value:
{ \
void *_args[] = {__VA_ARGS__}; \
if (UNLIKELY(bpy_bm_generic_valid_check_source(bm, errmsg, _args, ARRAY_SIZE(_args)) == \
-1)) { \
return -1; \
} \
} \
(void)0
#define ARRAY_SIZE(arr)
int bpy_bm_generic_valid_check_source(BMesh *bm_source, const char *error_prefix, void **args, uint args_tot) ATTR_NONNULL(1

Definition at line 208 of file bmesh_py_types.h.

◆ BPY_BM_CHECK_SOURCE_OBJ

#define BPY_BM_CHECK_SOURCE_OBJ (   bm,
  errmsg,
  ... 
)
Value:
{ \
void *_args[] = {__VA_ARGS__}; \
if (UNLIKELY(bpy_bm_generic_valid_check_source(bm, errmsg, _args, ARRAY_SIZE(_args)) == \
-1)) { \
return NULL; \
} \
} \
(void)0

Macros like BPY_BM_CHECK_OBJ/BPY_BM_CHECK_INT that ensure we're from the right BMesh.

Definition at line 199 of file bmesh_py_types.h.

◆ BPY_BM_IS_VALID

#define BPY_BM_IS_VALID (   obj)    (LIKELY((obj)->bm != NULL))

Definition at line 218 of file bmesh_py_types.h.

◆ BPy_BMEdge_Check

#define BPy_BMEdge_Check (   v)    (Py_TYPE(v) == &BPy_BMEdge_Type)

Definition at line 26 of file bmesh_py_types.h.

◆ BPy_BMEdgeSeq_Check

#define BPy_BMEdgeSeq_Check (   v)    (Py_TYPE(v) == &BPy_BMEdgeSeq_Type)

Definition at line 31 of file bmesh_py_types.h.

◆ BPy_BMElem_Check

#define BPy_BMElem_Check (   v)    (Py_TYPE(v)->tp_hash == BPy_BMVert_Type.tp_hash)

Definition at line 36 of file bmesh_py_types.h.

◆ BPy_BMElemSeq_Check

#define BPy_BMElemSeq_Check (   v)    (Py_TYPE(v) == &BPy_BMElemSeq_Type)

Definition at line 29 of file bmesh_py_types.h.

◆ BPy_BMesh_Check

#define BPy_BMesh_Check (   v)    (Py_TYPE(v) == &BPy_BMesh_Type)

Definition at line 24 of file bmesh_py_types.h.

◆ BPy_BMFace_Check

#define BPy_BMFace_Check (   v)    (Py_TYPE(v) == &BPy_BMFace_Type)

Definition at line 27 of file bmesh_py_types.h.

◆ BPy_BMFaceSeq_Check

#define BPy_BMFaceSeq_Check (   v)    (Py_TYPE(v) == &BPy_BMFaceSeq_Type)

Definition at line 32 of file bmesh_py_types.h.

◆ BPy_BMIter_Check

#define BPy_BMIter_Check (   v)    (Py_TYPE(v) == &BPy_BMIter_Type)

Definition at line 34 of file bmesh_py_types.h.

◆ BPy_BMLoop_Check

#define BPy_BMLoop_Check (   v)    (Py_TYPE(v) == &BPy_BMLoop_Type)

Definition at line 28 of file bmesh_py_types.h.

◆ BPy_BMLoopSeq_Check

#define BPy_BMLoopSeq_Check (   v)    (Py_TYPE(v) == &BPy_BMLoopSeq_Type)

Definition at line 33 of file bmesh_py_types.h.

◆ BPy_BMVert_Check

#define BPy_BMVert_Check (   v)    (Py_TYPE(v) == &BPy_BMVert_Type)

Definition at line 25 of file bmesh_py_types.h.

◆ BPy_BMVertSeq_Check

#define BPy_BMVertSeq_Check (   v)    (Py_TYPE(v) == &BPy_BMVertSeq_Type)

Definition at line 30 of file bmesh_py_types.h.

Typedef Documentation

◆ BPy_BMEdge

typedef struct BPy_BMEdge BPy_BMEdge

◆ BPy_BMElem

typedef struct BPy_BMElem BPy_BMElem

◆ BPy_BMElemSeq

typedef struct BPy_BMElemSeq BPy_BMElemSeq

◆ BPy_BMesh

typedef struct BPy_BMesh BPy_BMesh

◆ BPy_BMFace

typedef struct BPy_BMFace BPy_BMFace

◆ BPy_BMGeneric

typedef struct BPy_BMGeneric BPy_BMGeneric

◆ BPy_BMIter

typedef struct BPy_BMIter BPy_BMIter

◆ BPy_BMLoop

typedef struct BPy_BMLoop BPy_BMLoop

◆ BPy_BMVert

typedef struct BPy_BMVert BPy_BMVert

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
BPY_BMFLAG_NOP 
BPY_BMFLAG_IS_WRAPPED 

Definition at line 118 of file bmesh_py_types.h.

Function Documentation

◆ bpy_bm_generic_valid_check()

int bpy_bm_generic_valid_check ( BPy_BMGeneric self)

Definition at line 3990 of file bmesh_py_types.c.

References BM_mesh_validate(), LIKELY, and self.

Referenced by bpy_bm_generic_valid_check_source().

◆ bpy_bm_generic_valid_check_source()

int bpy_bm_generic_valid_check_source ( BMesh bm_source,
const char *  error_prefix,
void **  args,
uint  args_tot 
)

◆ BPy_BM_init_types()

void BPy_BM_init_types ( void  )

◆ BPy_BMEdge_Array_As_Tuple()

PyObject* BPy_BMEdge_Array_As_Tuple ( BMesh bm,
BMEdge **  elem,
Py_ssize_t  elem_len 
)

Definition at line 4206 of file bmesh_py_types.c.

References bm, BPy_BMEdge_CreatePyObject(), and ret.

◆ BPy_BMEdge_CreatePyObject()

PyObject* BPy_BMEdge_CreatePyObject ( BMesh bm,
BMEdge e 
)

◆ BPy_BMEdgeSeq_CreatePyObject()

PyObject* BPy_BMEdgeSeq_CreatePyObject ( BMesh bm)

Definition at line 3937 of file bmesh_py_types.c.

References bm, BM_EDGES_OF_MESH, BPy_BMEdgeSeq_Type, and NULL.

Referenced by bpy_bmedgeseq_get().

◆ BPy_BMElem_Array_As_Tuple()

PyObject* BPy_BMElem_Array_As_Tuple ( BMesh bm,
BMHeader **  elem,
Py_ssize_t  elem_len 
)

Definition at line 4188 of file bmesh_py_types.c.

References bm, BPy_BMElem_CreatePyObject(), and ret.

◆ BPy_BMElem_CheckHType()

int BPy_BMElem_CheckHType ( PyTypeObject *  type,
char  htype 
)

◆ BPy_BMElem_CreatePyObject()

PyObject* BPy_BMElem_CreatePyObject ( BMesh bm,
BMHeader ele 
)

◆ BPy_BMElem_PySeq_As_Array()

void* BPy_BMElem_PySeq_As_Array ( BMesh **  r_bm,
PyObject *  seq,
Py_ssize_t  min,
Py_ssize_t  max,
Py_ssize_t *  r_size,
char  htype,
bool  do_unique_check,
bool  do_bm_check,
const char *  error_prefix 
)

◆ BPy_BMElem_PySeq_As_Array_FAST()

void* BPy_BMElem_PySeq_As_Array_FAST ( BMesh **  r_bm,
PyObject *  seq_fast,
Py_ssize_t  min,
Py_ssize_t  max,
Py_ssize_t *  r_size,
char  htype,
bool  do_unique_check,
bool  do_bm_check,
const char *  error_prefix 
)

Generic python seq as BMVert/Edge/Face array, return value must be freed with PyMem_FREE(...);

The 'bm_r' value is assigned when empty, and used when set.

Definition at line 4053 of file bmesh_py_types.c.

References bm, BPy_BMElem::bm, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_INTERNAL_TAG, BPY_BM_IS_VALID, BPy_BMElem_CheckHType(), BPy_BMElem_StringFromHType(), BPy_BMElem::ele, max, min, NULL, and UNLIKELY.

Referenced by BPy_BMElem_PySeq_As_Array().

◆ BPy_BMElem_StringFromHType()

char* BPy_BMElem_StringFromHType ( char  htype)

◆ BPy_BMElem_StringFromHType_ex()

char* BPy_BMElem_StringFromHType_ex ( char  htype,
char  ret[32] 
)

Use for error strings only, not thread safe,

Returns
a string like '(BMVert/BMEdge/BMFace/BMLoop)'

Definition at line 4245 of file bmesh_py_types.c.

References BM_EDGE, BM_FACE, BM_LOOP, BM_VERT, BPy_BMEdge_Type, BPy_BMFace_Type, BPy_BMLoop_Type, BPy_BMVert_Type, and ret.

Referenced by BPy_BMElem_StringFromHType(), bpy_bmlayeritem_ptr_get(), and bpy_slot_from_py_elemseq_check().

◆ BPy_BMElemSeq_CreatePyObject()

PyObject* BPy_BMElemSeq_CreatePyObject ( BMesh bm,
BPy_BMElem py_ele,
char  itype 
)

Definition at line 3918 of file bmesh_py_types.c.

References bm, BPy_BMElemSeq_Type, and itype.

Referenced by bpy_bmelemseq_elem_get().

◆ BPy_BMesh_CreatePyObject()

PyObject* BPy_BMesh_CreatePyObject ( BMesh bm,
int  flag 
)

◆ BPy_BMFace_Array_As_Tuple()

PyObject* BPy_BMFace_Array_As_Tuple ( BMesh bm,
BMFace **  elem,
Py_ssize_t  elem_len 
)

Definition at line 4216 of file bmesh_py_types.c.

References bm, BPy_BMFace_CreatePyObject(), and ret.

Referenced by bpy_bm_utils_face_split_edgenet().

◆ BPy_BMFace_CreatePyObject()

PyObject* BPy_BMFace_CreatePyObject ( BMesh bm,
BMFace f 
)

◆ BPy_BMFaceSeq_CreatePyObject()

PyObject* BPy_BMFaceSeq_CreatePyObject ( BMesh bm)

Definition at line 3946 of file bmesh_py_types.c.

References bm, BM_FACES_OF_MESH, BPy_BMFaceSeq_Type, and NULL.

Referenced by bpy_bmfaceseq_get().

◆ BPy_BMIter_CreatePyObject()

PyObject* BPy_BMIter_CreatePyObject ( BMesh bm)

Definition at line 3964 of file bmesh_py_types.c.

References bm, and BPy_BMIter_Type.

Referenced by bpy_bmelemseq_iter().

◆ BPy_BMLoop_Array_As_Tuple()

PyObject* BPy_BMLoop_Array_As_Tuple ( BMesh bm,
BMLoop **  elem,
Py_ssize_t  elem_len 
)

Definition at line 4226 of file bmesh_py_types.c.

References bm, BPy_BMLoop_CreatePyObject(), and ret.

Referenced by bpy_bmesh_calc_loop_triangles().

◆ BPy_BMLoop_CreatePyObject()

PyObject* BPy_BMLoop_CreatePyObject ( BMesh bm,
BMLoop l 
)

◆ BPy_BMLoopSeq_CreatePyObject()

PyObject* BPy_BMLoopSeq_CreatePyObject ( BMesh bm)

Definition at line 3955 of file bmesh_py_types.c.

References bm, BPy_BMLoopSeq_Type, and NULL.

Referenced by bpy_bmloopseq_get().

◆ BPy_BMVert_Array_As_Tuple()

PyObject* BPy_BMVert_Array_As_Tuple ( BMesh bm,
BMVert **  elem,
Py_ssize_t  elem_len 
)

Definition at line 4197 of file bmesh_py_types.c.

References bm, BPy_BMVert_CreatePyObject(), and ret.

Referenced by bpy_bm_utils_vert_separate().

◆ BPy_BMVert_CreatePyObject()

PyObject* BPy_BMVert_CreatePyObject ( BMesh bm,
BMVert v 
)

◆ BPy_BMVertSeq_CreatePyObject()

PyObject* BPy_BMVertSeq_CreatePyObject ( BMesh bm)

Definition at line 3928 of file bmesh_py_types.c.

References bm, BM_VERTS_OF_MESH, BPy_BMVertSeq_Type, and NULL.

Referenced by bpy_bmvertseq_get().

◆ BPyInit_bmesh_types()

PyObject* BPyInit_bmesh_types ( void  )

Variable Documentation

◆ BPy_BMEdge_Type

PyTypeObject BPy_BMEdge_Type
extern

◆ BPy_BMEdgeSeq_Type

PyTypeObject BPy_BMEdgeSeq_Type
extern

◆ BPy_BMElemSeq_Type

PyTypeObject BPy_BMElemSeq_Type
extern

◆ BPy_BMesh_Type

PyTypeObject BPy_BMesh_Type
extern

◆ BPy_BMFace_Type

PyTypeObject BPy_BMFace_Type
extern

◆ BPy_BMFaceSeq_Type

PyTypeObject BPy_BMFaceSeq_Type
extern

◆ BPy_BMIter_Type

PyTypeObject BPy_BMIter_Type
extern

◆ BPy_BMLoop_Type

PyTypeObject BPy_BMLoop_Type
extern

◆ BPy_BMLoopSeq_Type

PyTypeObject BPy_BMLoopSeq_Type
extern

◆ BPy_BMVert_Type

PyTypeObject BPy_BMVert_Type
extern

◆ BPy_BMVertSeq_Type

PyTypeObject BPy_BMVertSeq_Type
extern