Blender  V2.93
Macros | Functions
bmesh_inline.h File Reference

Go to the source code of this file.

Macros

#define BM_elem_flag_test(ele, hflag)   _bm_elem_flag_test(&(ele)->head, hflag)
 
#define BM_elem_flag_test_bool(ele, hflag)   _bm_elem_flag_test_bool(&(ele)->head, hflag)
 
#define BM_elem_flag_enable(ele, hflag)   _bm_elem_flag_enable(&(ele)->head, hflag)
 
#define BM_elem_flag_disable(ele, hflag)   _bm_elem_flag_disable(&(ele)->head, hflag)
 
#define BM_elem_flag_set(ele, hflag, val)   _bm_elem_flag_set(&(ele)->head, hflag, val)
 
#define BM_elem_flag_toggle(ele, hflag)   _bm_elem_flag_toggle(&(ele)->head, hflag)
 
#define BM_elem_flag_merge(ele_a, ele_b)   _bm_elem_flag_merge(&(ele_a)->head, &(ele_b)->head)
 
#define BM_elem_flag_merge_ex(ele_a, ele_b, hflag_and)    _bm_elem_flag_merge_ex(&(ele_a)->head, &(ele_b)->head, hflag_and)
 
#define BM_elem_flag_merge_into(ele, ele_a, ele_b)    _bm_elem_flag_merge_into(&(ele)->head, &(ele_a)->head, &(ele_b)->head)
 
#define BM_elem_index_get(ele)   _bm_elem_index_get(&(ele)->head)
 
#define BM_elem_index_set(ele, index)   _bm_elem_index_set(&(ele)->head, index)
 

Functions

ATTR_WARN_UNUSED_RESULT BLI_INLINE char _bm_elem_flag_test (const BMHeader *head, const char hflag)
 
ATTR_WARN_UNUSED_RESULT BLI_INLINE bool _bm_elem_flag_test_bool (const BMHeader *head, const char hflag)
 
BLI_INLINE void _bm_elem_flag_enable (BMHeader *head, const char hflag)
 
BLI_INLINE void _bm_elem_flag_disable (BMHeader *head, const char hflag)
 
BLI_INLINE void _bm_elem_flag_set (BMHeader *head, const char hflag, const int val)
 
BLI_INLINE void _bm_elem_flag_toggle (BMHeader *head, const char hflag)
 
BLI_INLINE void _bm_elem_flag_merge (BMHeader *head_a, BMHeader *head_b)
 
BLI_INLINE void _bm_elem_flag_merge_ex (BMHeader *head_a, BMHeader *head_b, const char hflag_and)
 
BLI_INLINE void _bm_elem_flag_merge_into (BMHeader *head, const BMHeader *head_a, const BMHeader *head_b)
 
BLI_INLINE void _bm_elem_index_set (BMHeader *head, const int index)
 
ATTR_WARN_UNUSED_RESULT BLI_INLINE int _bm_elem_index_get (const BMHeader *head)
 

Detailed Description

BM Inline functions.

Definition in file bmesh_inline.h.

Macro Definition Documentation

◆ BM_elem_flag_disable

#define BM_elem_flag_disable (   ele,
  hflag 
)    _bm_elem_flag_disable(&(ele)->head, hflag)

Definition at line 29 of file bmesh_inline.h.

◆ BM_elem_flag_enable

#define BM_elem_flag_enable (   ele,
  hflag 
)    _bm_elem_flag_enable(&(ele)->head, hflag)

Definition at line 28 of file bmesh_inline.h.

◆ BM_elem_flag_merge

#define BM_elem_flag_merge (   ele_a,
  ele_b 
)    _bm_elem_flag_merge(&(ele_a)->head, &(ele_b)->head)

Definition at line 32 of file bmesh_inline.h.

◆ BM_elem_flag_merge_ex

#define BM_elem_flag_merge_ex (   ele_a,
  ele_b,
  hflag_and 
)     _bm_elem_flag_merge_ex(&(ele_a)->head, &(ele_b)->head, hflag_and)

Definition at line 33 of file bmesh_inline.h.

◆ BM_elem_flag_merge_into

#define BM_elem_flag_merge_into (   ele,
  ele_a,
  ele_b 
)     _bm_elem_flag_merge_into(&(ele)->head, &(ele_a)->head, &(ele_b)->head)

Definition at line 35 of file bmesh_inline.h.

◆ BM_elem_flag_set

#define BM_elem_flag_set (   ele,
  hflag,
  val 
)    _bm_elem_flag_set(&(ele)->head, hflag, val)

Definition at line 30 of file bmesh_inline.h.

◆ BM_elem_flag_test

#define BM_elem_flag_test (   ele,
  hflag 
)    _bm_elem_flag_test(&(ele)->head, hflag)

Definition at line 26 of file bmesh_inline.h.

◆ BM_elem_flag_test_bool

#define BM_elem_flag_test_bool (   ele,
  hflag 
)    _bm_elem_flag_test_bool(&(ele)->head, hflag)

Definition at line 27 of file bmesh_inline.h.

◆ BM_elem_flag_toggle

#define BM_elem_flag_toggle (   ele,
  hflag 
)    _bm_elem_flag_toggle(&(ele)->head, hflag)

Definition at line 31 of file bmesh_inline.h.

◆ BM_elem_index_get

#define BM_elem_index_get (   ele)    _bm_elem_index_get(&(ele)->head)

notes on BM_elem_index_set(...) usage, Set index is sometimes abused as temp storage, other times we cant be sure if the index values are valid because certain operations have modified the mesh structure.

To set the elements to valid indices 'BM_mesh_elem_index_ensure' should be used rather than adding inline loops, however there are cases where we still set the index directly

In an attempt to manage this, here are 5 tags I'm adding to uses of BM_elem_index_set

  • 'set_inline' – since the data is already being looped over set to a valid value inline.
  • 'set_dirty!' – intentionally sets the index to an invalid value, flagging 'bm->elem_index_dirty' so we don't use it.
  • 'set_ok' – this is valid use since the part of the code is low level.
  • 'set_ok_invalid' – set to -1 on purpose since this should not be used without a full array re-index, do this on adding new vert/edge/faces since they may be added at the end of the array.
  • campbell

Definition at line 124 of file bmesh_inline.h.

◆ BM_elem_index_set

#define BM_elem_index_set (   ele,
  index 
)    _bm_elem_index_set(&(ele)->head, index)

Definition at line 125 of file bmesh_inline.h.

Function Documentation

◆ _bm_elem_flag_disable()

BLI_INLINE void _bm_elem_flag_disable ( BMHeader head,
const char  hflag 
)

Definition at line 55 of file bmesh_inline.h.

References BMHeader::hflag.

Referenced by _bm_elem_flag_set().

◆ _bm_elem_flag_enable()

BLI_INLINE void _bm_elem_flag_enable ( BMHeader head,
const char  hflag 
)

Definition at line 50 of file bmesh_inline.h.

References BMHeader::hflag.

Referenced by _bm_elem_flag_set().

◆ _bm_elem_flag_merge()

BLI_INLINE void _bm_elem_flag_merge ( BMHeader head_a,
BMHeader head_b 
)

Definition at line 75 of file bmesh_inline.h.

References BMHeader::hflag.

Referenced by _bm_elem_flag_merge_ex().

◆ _bm_elem_flag_merge_ex()

BLI_INLINE void _bm_elem_flag_merge_ex ( BMHeader head_a,
BMHeader head_b,
const char  hflag_and 
)

Definition at line 80 of file bmesh_inline.h.

References _bm_elem_flag_merge(), and BMHeader::hflag.

◆ _bm_elem_flag_merge_into()

BLI_INLINE void _bm_elem_flag_merge_into ( BMHeader head,
const BMHeader head_a,
const BMHeader head_b 
)

Definition at line 89 of file bmesh_inline.h.

References BMHeader::hflag.

◆ _bm_elem_flag_set()

BLI_INLINE void _bm_elem_flag_set ( BMHeader head,
const char  hflag,
const int  val 
)

Definition at line 60 of file bmesh_inline.h.

References _bm_elem_flag_disable(), and _bm_elem_flag_enable().

◆ _bm_elem_flag_test()

ATTR_WARN_UNUSED_RESULT BLI_INLINE char _bm_elem_flag_test ( const BMHeader head,
const char  hflag 
)

Definition at line 39 of file bmesh_inline.h.

References BMHeader::hflag.

◆ _bm_elem_flag_test_bool()

ATTR_WARN_UNUSED_RESULT BLI_INLINE bool _bm_elem_flag_test_bool ( const BMHeader head,
const char  hflag 
)

Definition at line 45 of file bmesh_inline.h.

References BMHeader::hflag.

◆ _bm_elem_flag_toggle()

BLI_INLINE void _bm_elem_flag_toggle ( BMHeader head,
const char  hflag 
)

Definition at line 70 of file bmesh_inline.h.

References BMHeader::hflag.

◆ _bm_elem_index_get()

ATTR_WARN_UNUSED_RESULT BLI_INLINE int _bm_elem_index_get ( const BMHeader head)

Definition at line 133 of file bmesh_inline.h.

References BMHeader::index.

◆ _bm_elem_index_set()

BLI_INLINE void _bm_elem_index_set ( BMHeader head,
const int  index 
)

Definition at line 127 of file bmesh_inline.h.

References BMHeader::index.