75 val = BM_iter_step(&iter);
103 const char *slot_name,
104 const char restrictmask,
115 for (ele =
BMO_iter_new(&oiter, slot_args, slot_name, restrictmask); ele;
135 int stack_array_size)
139 BLI_assert(stack_array_size == 0 || (stack_array_size && stack_array));
160 reinterpret_cast<BMElem **
>(stack_array);
165 while ((ele =
static_cast<BMElem *
>(BM_iter_step(&iter)))) {
176 const char *slot_name,
177 const char restrictmask,
181 int stack_array_size)
187 BLI_assert(stack_array_size == 0 || (stack_array_size && stack_array));
189 if ((ele =
static_cast<BMElem *
>(
BMO_iter_new(&iter, slot_args, slot_name, restrictmask))) &&
194 reinterpret_cast<BMElem **
>(stack_array);
203 if ((
void **)
array != stack_array) {
218 bool (*test_fn)(
BMElem *,
void *user_data),
224 int bitmap_enabled = 0;
227 if (test_fn(ele, user_data)) {
236 return bitmap_enabled;
241 bool (*test_fn)(
BMFace *,
void *user_data),
248 int bitmap_enabled = 0;
251 if (test_fn(f, user_data)) {
252 for (
int tri = 2; tri < f->
len; tri++) {
259 for (
int tri = 2; tri < f->
len; tri++) {
266 return bitmap_enabled;
363# define USE_IMMUTABLE_ASSERT
368#ifdef USE_IMMUTABLE_ASSERT
376#ifdef USE_IMMUTABLE_ASSERT
382#ifdef USE_IMMUTABLE_ASSERT
383# undef USE_IMMUTABLE_ASSERT
439 ((
BMIter *)iter)->count--;
452 return l_curr ? l_curr->
f :
nullptr;
478 ((
BMIter *)iter)->count--;
568 return current ? current->
f :
nullptr;
577 ((
BMIter *)iter)->count = 0;
612 return l_curr ? l_curr->
v :
nullptr;
635 return l_curr ? l_curr->
e :
nullptr;
void BLI_mempool_iternew(BLI_mempool *pool, BLI_mempool_iter *iter) ATTR_NONNULL()
void * BLI_mempool_iterstep(BLI_mempool_iter *iter) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_mempool_len(const BLI_mempool *pool) ATTR_NONNULL(1)
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, len)
#define BM_FACE_FIRST_LOOP(p)
#define BM_elem_flag_test_bool(ele, hflag)
int BMO_iter_elem_count_flag(BMesh *bm, const char itype, void *data, const short oflag, const bool value)
Elem Iter Tool Flag Count.
void * BM_iter_at_index(BMesh *bm, const char itype, void *data, int index)
void * bmiter__elem_of_mesh_step(BMIter__elem_of_mesh *iter)
void * bmiter__vert_of_edge_step(BMIter__vert_of_edge *iter)
int BMO_iter_as_array(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char restrictmask, void **array, const int len)
Operator Iterator as Array.
void bmiter__edge_of_face_begin(BMIter__edge_of_face *iter)
void * BMO_iter_as_arrayN(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char restrictmask, int *r_len, void **stack_array, int stack_array_size)
const char bm_iter_itype_htype_map[BM_ITYPE_MAX]
void * bmiter__face_of_vert_step(BMIter__face_of_vert *iter)
void bmiter__face_of_vert_begin(BMIter__face_of_vert *iter)
void * bmiter__loop_of_face_step(BMIter__loop_of_face *iter)
void bmiter__loop_of_edge_begin(BMIter__loop_of_edge *iter)
void bmiter__face_of_edge_begin(BMIter__face_of_edge *iter)
int BM_iter_mesh_bitmap_from_filter_tessface(BMesh *bm, blender::MutableBitSpan bitmap, bool(*test_fn)(BMFace *, void *user_data), void *user_data)
void bmiter__loop_of_face_begin(BMIter__loop_of_face *iter)
void * bmiter__edge_of_face_step(BMIter__edge_of_face *iter)
void bmiter__edge_of_vert_begin(BMIter__edge_of_vert *iter)
void bmiter__elem_of_mesh_begin(BMIter__elem_of_mesh *iter)
void * BM_iter_as_arrayN(BMesh *bm, const char itype, void *data, int *r_len, void **stack_array, int stack_array_size)
Iterator as Array.
void * bmiter__face_of_edge_step(BMIter__face_of_edge *iter)
void * bmiter__loop_of_edge_step(BMIter__loop_of_edge *iter)
void bmiter__vert_of_face_begin(BMIter__vert_of_face *iter)
int BM_iter_mesh_count_flag(const char itype, BMesh *bm, const char hflag, const bool value)
Mesh Iter Flag Count.
void * bmiter__loop_of_vert_step(BMIter__loop_of_vert *iter)
int BM_iter_mesh_bitmap_from_filter(const char itype, BMesh *bm, blender::MutableBitSpan bitmap, bool(*test_fn)(BMElem *, void *user_data), void *user_data)
int BM_iter_as_array(BMesh *bm, const char itype, void *data, void **array, const int len)
Iterator as Array.
void * bmiter__loop_of_loop_step(BMIter__loop_of_loop *iter)
void bmiter__loop_of_loop_begin(BMIter__loop_of_loop *iter)
int BM_iter_mesh_count(const char itype, BMesh *bm)
int BM_iter_elem_count_flag(const char itype, void *data, const char hflag, const bool value)
Elem Iter Flag Count.
void * bmiter__vert_of_face_step(BMIter__vert_of_face *iter)
void * bmiter__edge_of_vert_step(BMIter__edge_of_vert *iter)
void bmiter__loop_of_vert_begin(BMIter__loop_of_vert *iter)
void bmiter__vert_of_edge_begin(BMIter__vert_of_edge *iter)
#define BM_ITER_ELEM(ele, iter, data, itype)
#define BM_ITER_MESH(ele, iter, bm, itype)
#define BM_ITER_MESH_INDEX(ele, iter, bm, itype, indexvar)
#define BM_iter_init(iter, bm, itype, data)
#define BM_iter_new(iter, bm, itype, data)
ATTR_WARN_UNUSED_RESULT BMesh const char itype
ATTR_WARN_UNUSED_RESULT BMesh * bm
#define BMO_edge_flag_test_bool(bm, e, oflag)
#define BMO_face_flag_test_bool(bm, e, oflag)
void * BMO_iter_new(BMOIter *iter, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, char restrictmask)
New Iterator.
int BMO_slot_buffer_len(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
#define BMO_vert_flag_test_bool(bm, e, oflag)
void * BMO_iter_step(BMOIter *iter)
ATTR_WARN_UNUSED_RESULT const BMFlagLayer const short oflag
BMLoop * bmesh_disk_faceloop_find_first(const BMEdge *e, const BMVert *v)
BMLoop * bmesh_radial_faceloop_find_first(const BMLoop *l, const BMVert *v)
BME RADIAL FIND FIRST FACE VERT.
BMLoop * bmesh_radial_faceloop_find_next(const BMLoop *l, const BMVert *v)
int bmesh_disk_facevert_count(const BMVert *v)
DISK COUNT FACE VERT.
BMEdge * bmesh_disk_faceedge_find_next(const BMEdge *e, const BMVert *v)
BLI_INLINE BMEdge * bmesh_disk_edge_next(const BMEdge *e, const BMVert *v) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void *(* MEM_mallocN)(size_t len, const char *str)
BLI_mempool_iter pooliter
struct BMLoop * radial_next