29 const char *identifier);
87 for (i = 0; slot_types[i].
type; i++) {
116 for (i = 0; slot_types[i].
type; i++) {
117 slot = &slot_args[i];
189 memset(op, 0xff,
sizeof(*op));
198 return (slot_code >= 0);
211 return &slot_args[slot_code];
215 const char *slot_name_src,
217 const char *slot_name_dst,
223 if (slot_src == slot_dst) {
235 slot_dst->
len = slot_src->
len;
241 if ((src_elem_flag | dst_elem_flag) == dst_elem_flag) {
246 const uint tot = slot_src->
len;
250 for (i = 0; i < tot; i++, ele_src++) {
251 if ((*ele_src)->head.htype & dst_elem_flag) {
263 if (slot_src->
len == slot_dst->
len) {
268 const uint tot = slot_src->
len;
272 for (i = 0; i < tot; i++, ele_src++) {
273 if ((*ele_src)->head.htype & dst_elem_flag) {
336 const char *slot_name,
352 else if (
size == 3) {
356 fprintf(stderr,
"%s: invalid size argument %d (bmesh internal error)\n", __func__,
size);
363 const char *slot_name,
381 const char *slot_name,
410 const char *slot_name,
501 const bool test_for_enabled)
503 int count_vert = 0, count_edge = 0, count_face = 0;
533 return (count_vert + count_edge + count_face);
578 const bool check_select)
585 ese_next = ese->
next;
587 switch (ese->
htype) {
589 slot_elem_map = slot_vert_map;
592 slot_elem_map = slot_edge_map;
595 slot_elem_map = slot_face_map;
599 ese->
ele = BMO_slot_map_elem_get(slot_elem_map, ese->
ele);
650 BMOpSlot *slot = &op->slots[slot_code];
661 if (slot->flag & BMOS_DYNAMIC_ARRAY) {
662 if (slot->
len >= slot->size) {
663 slot->size = (slot->size + 1 + totadd) * 2;
673 slot->flag |= BMOS_DYNAMIC_ARRAY;
675 slot->size = slot->
len + 2;
682 memcpy(slot->
data.
buf, tmp, allocsize);
691 const char *slot_name,
711 const char *slot_name,
735 const char *slot_name,
739 int totelement = 0, i = 0;
764 output->data.buf[i] = ele;
771 output->data.buf[i] = ele;
778 output->data.buf[i] = ele;
794 const char *slot_name,
797 const bool test_for_enabled)
800 int totelement = 0, i = 0;
808 if (test_for_enabled) {
827 output->data.buf[i] = ele;
837 output->data.buf[i] = ele;
847 output->data.buf[i] = ele;
861 const char *slot_name,
871 const char *slot_name,
905 slot->
len = ele_buffer_len;
906 memcpy(slot->
data.
buf, ele_buffer, ele_buffer_len *
sizeof(*slot->
data.
buf));
919 const char *slot_name_dst,
921 const char *slot_name_src,
930 if (slot_dst->
len == 0) {
932 _bmo_slot_copy(slot_args_src, slot_name_src, slot_args_dst, slot_name_dst, arena_dst);
934 else if (slot_src->
len != 0) {
936 int alloc_size = elem_size * (slot_dst->
len + slot_src->
len);
941 memcpy(buf, slot_dst->
data.
buf, elem_size * slot_dst->
len);
943 ((
char *)buf) + elem_size * slot_dst->
len, slot_src->
data.
buf, elem_size * slot_src->
len);
946 slot_dst->
len += slot_src->
len;
959 const char *slot_name,
962 const bool test_for_enabled)
965 int totelement, i = 0;
973 if (test_for_enabled) {
1026 const char *slot_name,
1036 const char *slot_name,
1045 const char *slot_name,
1048 const bool do_flush)
1053 const bool do_flush_select = (do_flush && (hflag &
BM_ELEM_SELECT));
1054 const bool do_flush_hide = (do_flush && (hflag &
BM_ELEM_HIDDEN));
1060 for (i = 0; i < slot->
len; i++,
data++) {
1061 if (!(htype & (*data)->head.htype)) {
1065 if (do_flush_select) {
1069 if (do_flush_hide) {
1079 const char *slot_name,
1082 const bool do_flush)
1087 const bool do_flush_select = (do_flush && (hflag &
BM_ELEM_SELECT));
1088 const bool do_flush_hide = (do_flush && (hflag &
BM_ELEM_HIDDEN));
1093 for (i = 0; i < slot->
len; i++,
data++) {
1094 if (!(htype & (*data)->head.htype)) {
1098 if (do_flush_select) {
1102 if (do_flush_hide) {
1112 const char *slot_name,
1123 for (i = 0; i < slot->
len; i++) {
1124 if (!(htype &
data[i]->htype)) {
1134 const char *slot_name,
1145 for (i = 0; i < slot->
len; i++) {
1146 if (!(htype &
data[i]->htype)) {
1195 void *oldflags = v_oflag->
oflags;
1197 memcpy(v_oflag->
oflags, oldflags, old_totflags_size);
1205 void *oldflags = e_oflag->
oflags;
1207 memcpy(e_oflag->
oflags, oldflags, old_totflags_size);
1215 void *oldflags = f_oflag->
oflags;
1217 memcpy(f_oflag->
oflags, oldflags, old_totflags_size);
1255 void *oldflags = v_oflag->
oflags;
1257 memcpy(v_oflag->
oflags, oldflags, new_totflags_size);
1265 void *oldflags = e_oflag->
oflags;
1267 memcpy(e_oflag->
oflags, oldflags, new_totflags_size);
1275 void *oldflags = f_oflag->
oflags;
1277 memcpy(f_oflag->
oflags, oldflags, new_totflags_size);
1295 const int totflags_offset =
bm->
totflags - 1;
1303 ele->
oflags[totflags_offset] = zero_flag;
1312 ele->
oflags[totflags_offset] = zero_flag;
1321 ele->
oflags[totflags_offset] = zero_flag;
1342 const char *slot_name,
1343 const char restrictmask)
1347 memset(iter, 0,
sizeof(
BMOIter));
1372 if (iter->
cur >= slot->
len) {
1378 if (iter->
cur >= slot->
len) {
1429 return **((
float **)iter->
val);
1435 return **((
int **)iter->
val);
1441 return **((
bool **)iter->
val);
1494 *r_level =
err->level;
1534 #define NEXT_CHAR(fmt) ((fmt)[0] != 0 ? (fmt)[1] : 0)
1540 while (slot_args->slot_name) {
1556 "%s: ! could not find bmesh slot for name %s! (bmesh internal error)\n",
1569 for (i = 0; i < tot; i++) {
1582 "%s: could not find bmesh slot for name %s! (bmesh internal error)\n",
1592 char *opname, *ofmt, *fmt;
1593 char slot_name[64] = {0};
1598 const char *err_reason =
"Unknown";
1601 #define GOTO_ERROR(reason) \
1603 err_reason = reason; \
1604 lineno = __LINE__; \
1613 i = strcspn(fmt,
" ");
1616 noslot = (opname[i] ==
'\0');
1619 fmt += i + (noslot ? 0 : 1);
1638 i = strspn(fmt,
" ");
1647 i = strcspn(fmt,
"=");
1649 GOTO_ERROR(
"could not match end of slot name");
1655 GOTO_ERROR(
"name to slot code check failed");
1677 else if (
c ==
'4') {
1697 BMHeader **ele_buffer = va_arg(vlist,
void *);
1698 int ele_buffer_len = va_arg(vlist,
int);
1705 BMHeader *ele = va_arg(vlist,
void *);
1715 BMOperator *op_other = va_arg(vlist,
void *);
1716 const char *slot_name_other = va_arg(vlist,
char *);
1720 BMO_slot_copy(op_other, slots_in, slot_name_other,
op, slots_in, slot_name);
1724 BMO_slot_copy(op_other, slots_out, slot_name_other,
op, slots_in, slot_name);
1760 else if (
c ==
'e') {
1763 else if (
c ==
'v') {
1782 else if (
type ==
'H') {
1786 else if (
type ==
'a') {
1795 else if (
type ==
'f') {
1799 else if (
type ==
'F') {
1809 "%s: unrecognized bmop format char: '%c', %d in '%s'\n",
1825 fprintf(stderr,
"%s: error parsing formatting string\n", __func__);
1827 fprintf(stderr,
"string: '%s', position %d\n", _fmt, (
int)(fmt - ofmt));
1828 fprintf(stderr,
" ");
1830 int pos = (int)(fmt - ofmt);
1831 for (i = 0; i <
pos; i++) {
1832 fprintf(stderr,
" ");
1834 fprintf(stderr,
"^\n");
1837 fprintf(stderr,
"source code: %s:%d\n", __FILE__, lineno);
1839 fprintf(stderr,
"reason: %s\n", err_reason);
1853 va_start(list, fmt);
1855 printf(
"%s: failed\n", __func__);
1869 va_start(list, fmt);
1871 printf(
"%s: failed, format is:\n \"%s\"\n", __func__, fmt);
typedef float(TangentPoint)[2]
BLI_INLINE void * BLI_ghashIterator_getKey(GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
void BLI_ghashIterator_step(GHashIterator *ghi)
BLI_INLINE void * BLI_ghashIterator_getValue(GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
BLI_INLINE void ** BLI_ghashIterator_getValue_p(GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
#define GHASH_ITER(gh_iter_, ghash_)
unsigned int BLI_ghash_len(const GHash *gh) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
GHash * BLI_ghash_ptr_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_ghashIterator_init(GHashIterator *ghi, GHash *gh)
BLI_INLINE bool BLI_ghashIterator_done(const GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void zero_m4(float m[4][4])
void unit_m3(float m[3][3])
void copy_m3_m4(float m1[3][3], const float m2[4][4])
void unit_m4(float m[4][4])
void copy_m4_m3(float m1[4][4], const float m2[3][3])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void BLI_memarena_free(struct MemArena *ma) ATTR_NONNULL(1)
struct MemArena * BLI_memarena_new(size_t bufsize, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(2) ATTR_MALLOC
#define BLI_MEMARENA_STD_BUFSIZE
void BLI_memarena_use_calloc(struct MemArena *ma) ATTR_NONNULL(1)
void * BLI_memarena_alloc(struct MemArena *ma, size_t size) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_ALLOC_SIZE(2)
BLI_mempool * BLI_mempool_create(unsigned int esize, unsigned int elem_num, unsigned int pchunk, unsigned int flag) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL
void * BLI_mempool_alloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1)
void BLI_mempool_destroy(BLI_mempool *pool) ATTR_NONNULL(1)
void * BLI_mempool_calloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
#define STREQLEN(a, b, n)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
struct BMFlagLayer BMFlagLayer
#define BM_ELEM_INDEX_VALIDATE(_bm, _msg_a, _msg_b)
#define BM_elem_flag_disable(ele, hflag)
#define BM_elem_index_set(ele, index)
#define BM_elem_flag_test(ele, hflag)
#define BM_elem_flag_test_bool(ele, hflag)
#define BM_elem_flag_enable(ele, hflag)
#define BM_ITER_MESH(ele, iter, bm, itype)
#define BM_ITER_MESH_INDEX(ele, iter, bm, itype, indexvar)
ATTR_WARN_UNUSED_RESULT BMesh * bm
int BM_mesh_elem_hflag_count_disabled(BMesh *bm, const char htype, const char hflag, const bool respecthide)
void BM_elem_select_set(BMesh *bm, BMElem *ele, const bool select)
int BM_mesh_elem_hflag_count_enabled(BMesh *bm, const char htype, const char hflag, const bool respecthide)
#define BM_elem_hide_set(bm, ele, hide)
void BM_mesh_elem_toolflags_ensure(BMesh *bm)
void bmesh_edit_begin(BMesh *UNUSED(bm), BMOpTypeFlag UNUSED(type_flag))
void bmesh_edit_end(BMesh *bm, BMOpTypeFlag type_flag)
BMesh End Edit.
const int bmo_opdefines_total
const BMOpDefine * bmo_opdefines[]
#define BMO_elem_flag_disable(bm, ele, oflag)
#define BMO_edge_flag_test_bool(bm, e, oflag)
#define BMO_vert_flag_disable(bm, e, oflag)
#define BMO_face_flag_test_bool(bm, e, oflag)
@ BMO_OP_SLOT_SUBTYPE_ELEM_IS_SINGLE
@ BMO_OP_SLOT_ELEMENT_BUF
@ BMO_OP_SLOT_SUBTYPE_MAP_ELEM
@ BMO_OP_SLOT_SUBTYPE_MAP_BOOL
@ BMO_OP_SLOT_SUBTYPE_MAP_INTERNAL
@ BMO_OP_SLOT_SUBTYPE_MAP_INT
@ BMO_OP_SLOT_SUBTYPE_MAP_FLT
#define BMO_ASSERT_SLOT_IN_OP(slot, op)
#define BMO_slot_copy(op_src, slots_src, slot_name_src, op_dst, slots_dst, slot_name_dst)
@ BMO_OP_SLOT_SUBTYPE_INT_FLAG
@ BMO_OP_SLOT_SUBTYPE_INT_ENUM
#define BMO_SLOT_AS_MATRIX(slot)
#define BMO_elem_flag_enable(bm, ele, oflag)
#define BMO_OP_SLOT_TOTAL_TYPES
#define BMO_vert_flag_test_bool(bm, e, oflag)
#define BMO_face_flag_disable(bm, e, oflag)
#define BMO_edge_flag_disable(bm, e, oflag)
ATTR_WARN_UNUSED_RESULT const void * element
ATTR_WARN_UNUSED_RESULT const BMFlagLayer const short oflag
int BMO_mesh_enabled_flag_count(BMesh *bm, const char htype, const short oflag)
void BMO_slot_mat4_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, float r_mat[4][4])
void * BMO_iter_new(BMOIter *iter, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char restrictmask)
New Iterator.
void BMO_slot_buffer_hflag_enable(BMesh *bm, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const char hflag, const bool do_flush)
BMO_FLAG_BUFFER.
void _bmo_slot_copy(BMOpSlot slot_args_src[BMO_OP_MAX_SLOTS], const char *slot_name_src, BMOpSlot slot_args_dst[BMO_OP_MAX_SLOTS], const char *slot_name_dst, struct MemArena *arena_dst)
BMESH OPSTACK COPY SLOT.
void * BMO_slot_buffer_get_first(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
void BMO_slot_buffer_flag_enable(BMesh *bm, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const short oflag)
BMO_FLAG_BUFFER.
static void bmo_flag_layer_alloc(BMesh *bm)
ALLOC/FREE FLAG LAYER.
void BMO_slot_vec_set(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const float vec[3])
void BMO_slot_buffer_from_all(BMesh *bm, BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype)
BMO_ALL_TO_SLOT.
int BMO_mesh_disabled_flag_count(BMesh *bm, const char htype, const short oflag)
void BMO_slot_map_to_flag(BMesh *bm, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const short oflag)
void BMO_slot_bool_set(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const bool i)
void BMO_slot_buffer_from_enabled_hflag(BMesh *bm, BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const char hflag)
void * BMO_slot_buffer_alloc(BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const int len)
bool BMO_iter_map_value_bool(BMOIter *iter)
void BMO_mesh_selected_remap(BMesh *bm, BMOpSlot *slot_vert_map, BMOpSlot *slot_edge_map, BMOpSlot *slot_face_map, const bool check_select)
void BMO_slot_mat_set(BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const float *mat, int size)
static void bmo_op_slots_init(const BMOSlotType *slot_types, BMOpSlot *slot_args)
void BMO_op_flag_enable(BMesh *UNUSED(bm), BMOperator *op, const int op_flag)
void BMO_push(BMesh *bm, BMOperator *UNUSED(op))
void BMO_error_clear(BMesh *bm)
void BMO_slot_buffer_from_disabled_hflag(BMesh *bm, BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const char hflag)
void BMO_slot_vec_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, float r_vec[3])
void * BMO_iter_step(BMOIter *iter)
bool BMO_error_get_at_level(BMesh *bm, eBMOpErrorLevel level, const char **r_msg, BMOperator **r_op)
int BMO_slot_map_len(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
float BMO_slot_float_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
void * BMO_slot_buffer_get_single(BMOpSlot *slot)
static void bmo_op_slots_free(const BMOSlotType *slot_types, BMOpSlot *slot_args)
void BMO_slot_buffer_from_disabled_flag(BMesh *bm, BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const short oflag)
void BMO_slot_buffer_from_single(BMOperator *op, BMOpSlot *slot, BMHeader *ele)
void _bmo_slot_buffer_append(BMOpSlot slot_args_dst[BMO_OP_MAX_SLOTS], const char *slot_name_dst, BMOpSlot slot_args_src[BMO_OP_MAX_SLOTS], const char *slot_name_src, struct MemArena *arena_dst)
static void bmo_slot_buffer_from_hflag(BMesh *bm, BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const char hflag, const bool test_for_enabled)
BMO_HEADERFLAG_TO_SLOT.
int BMO_iter_map_value_int(BMOIter *iter)
void BMO_slot_buffer_hflag_disable(BMesh *bm, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const char hflag, const bool do_flush)
BMO_FLAG_BUFFER.
static void bmo_slot_buffer_from_flag(BMesh *bm, BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const short oflag, const bool test_for_enabled)
BMO_FLAG_TO_SLOT.
void BMO_op_exec(BMesh *bm, BMOperator *op)
BMESH OPSTACK EXEC OP.
void BMO_pop(BMesh *bm)
BMESH OPSTACK POP.
struct BMOpError BMOpError
bool BMO_op_initf(BMesh *bm, BMOperator *op, const int flag, const char *fmt,...)
static void bmo_flag_layer_clear(BMesh *bm)
void * BMO_slot_as_arrayN(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, int *len)
int BMO_opcode_from_opname(const char *opname)
bool BMO_error_get(BMesh *bm, const char **r_msg, BMOperator **r_op, eBMOpErrorLevel *r_level)
void ** BMO_iter_map_value_p(BMOIter *iter)
static int BMO_opcode_from_opname_check(const char *opname)
const int BMO_OPSLOT_TYPEINFO[BMO_OP_SLOT_TOTAL_TYPES]
float BMO_iter_map_value_float(BMOIter *iter)
void BMO_op_flag_disable(BMesh *UNUSED(bm), BMOperator *op, const int op_flag)
void BMO_slot_mat3_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, float r_mat[3][3])
void BMO_slot_buffer_from_array(BMOperator *op, BMOpSlot *slot, BMHeader **ele_buffer, int ele_buffer_len)
int BMO_slot_int_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
void BMO_slot_float_set(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const float f)
bool BMO_op_vinitf(BMesh *bm, BMOperator *op, const int flag, const char *_fmt, va_list vlist)
bool BMO_error_occurred_at_level(BMesh *bm, eBMOpErrorLevel level)
void BMO_mesh_flag_disable_all(BMesh *bm, BMOperator *UNUSED(op), const char htype, const short oflag)
void BMO_op_finish(BMesh *bm, BMOperator *op)
BMESH OPSTACK FINISH OP.
static int bmo_mesh_flag_count(BMesh *bm, const char htype, const short oflag, const bool test_for_enabled)
void BMO_slot_map_insert(BMOperator *op, BMOpSlot *slot, const void *element, const void *data)
int BMO_slot_buffer_len(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
#define GOTO_ERROR(reason)
void * BMO_iter_map_value_ptr(BMOIter *iter)
void BMO_error_raise(BMesh *bm, BMOperator *owner, eBMOpErrorLevel level, const char *msg)
void BMO_slot_ptr_set(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, void *p)
BMOpSlot * BMO_slot_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *identifier)
BMESH OPSTACK GET SLOT.
static int bmo_name_to_slotcode_check(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *identifier)
void * BMO_slot_ptr_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
void BMO_slot_int_set(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const int i)
void BMO_slot_buffer_flag_disable(BMesh *bm, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const short oflag)
BMO_FLAG_BUFFER.
static int bmo_name_to_slotcode(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *identifier)
static void bmo_flag_layer_free(BMesh *bm)
bool BMO_slot_exists(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *identifier)
BMESH OPSTACK HAS SLOT.
bool BMO_error_pop(BMesh *bm, const char **r_msg, BMOperator **r_op, eBMOpErrorLevel *r_level)
void BMO_slot_buffer_from_enabled_flag(BMesh *bm, BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, const char htype, const short oflag)
bool BMO_slot_bool_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
void BMO_op_init(BMesh *bm, BMOperator *op, const int flag, const char *opname)
BMESH OPSTACK INIT OP.
bool BMO_op_callf(BMesh *bm, const int flag, const char *fmt,...)
#define BM_ELEM_API_FLAG_CLEAR(element)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SyclQueue void void size_t num_bytes void
ccl_global KernelShaderEvalInput ccl_global float * output
void(* MEM_freeN)(void *vmemh)
void *(* MEM_recallocN_id)(void *vmemh, size_t len, const char *str)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void error(const char *str)
static const pxr::TfToken out("out", pxr::TfToken::Immortal)
struct BMFlagLayer * oflags
struct BMEditSelection * next
struct BMFlagLayer * oflags
eBMOpSlotSubType_Union subtype
BMOSlotType slot_types_in[BMO_OP_MAX_SLOTS]
BMOSlotType slot_types_out[BMO_OP_MAX_SLOTS]
void(* exec)(BMesh *bm, BMOperator *op)
eBMOpSlotSubType_Union slot_subtype
struct BMOpSlot::@145::@146 enum_data
union BMOpSlot::@145 data
struct BMOpSlot slots_out[BMO_OP_MAX_SLOTS]
struct BMOpSlot slots_in[BMO_OP_MAX_SLOTS]
void(* exec)(BMesh *bm, struct BMOperator *op)
struct BMFlagLayer * oflags
struct BLI_mempool * vtoolflagpool
struct BLI_mempool * etoolflagpool
struct BLI_mempool * ftoolflagpool
eBMOpSlotSubType_Int intg
eBMOpSlotSubType_Elem elem