41 int i_b =
bm->totface;
43 faces_array_all[filter_fn(f, user_data) ? i_a++ : --i_b] = f;
46 faces_b_len =
bm->totface - i_a;
49 BMFace **faces_a = faces_array_all;
50 BMFace **faces_b = faces_array_all + faces_a_len;
56 for (
uint i = 0;
i < faces_b_len;
i++) {
61 }
while ((l_iter = l_iter->
next) != l_first);
67 for (
uint i = 0;
i < faces_a_len;
i++) {
81 e_iter = e_first = l_iter->
e;
83 if (e_iter->
l !=
nullptr) {
84 BMLoop *l_radial_first, *l_radial_iter;
85 l_radial_first = l_radial_iter = e_iter->
l;
87 if (l_radial_iter->
v ==
v) {
88 if (filter_fn(l_radial_iter->
f, user_data)) {
89 loop_split.
append(l_radial_iter);
92 }
while ((l_radial_iter = l_radial_iter->
radial_next) != l_radial_first);
102 }
while ((l_iter = l_iter->
next) != l_first);
Read Guarded memory(de)allocation.
bool(*)(const BMFace *, void *user_data) BMFaceFilterFunc
#define BM_FACE_FIRST_LOOP(p)
#define BM_elem_flag_disable(ele, hflag)
#define BM_elem_flag_test(ele, hflag)
#define BM_elem_flag_enable(ele, hflag)
#define BM_ITER_MESH(ele, iter, bm, itype)
void BM_mesh_elem_hflag_enable_all(BMesh *bm, const char htype, const char hflag, const bool respecthide)
BMVert * BM_face_loop_separate_multi(BMesh *bm, BMLoop **larr, int larr_len)
ATTR_WARN_UNUSED_RESULT const BMVert * v
void BM_mesh_separate_faces(BMesh *bm, BMFaceFilterFunc filter_fn, void *user_data)
BLI_INLINE BMEdge * bmesh_disk_edge_next(const BMEdge *e, const BMVert *v) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void append(const T &value)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
struct BMLoop * radial_next