Blender V5.0
blender::bits::MutableBitRef Class Reference

#include <BLI_bit_ref.hh>

Public Member Functions

 MutableBitRef ()=default
 MutableBitRef (BitInt *data, const int64_t bit_index)
 operator BitRef () const
bool test () const
 operator bool () const
void set ()
void reset ()
void set (const bool value)
void set_branchless (const bool value)
MutableBitRefoperator|= (const bool value)
MutableBitRefoperator&= (const bool value)

Detailed Description

Similar to BitRef, but also allows changing the referenced bit.

Definition at line 125 of file BLI_bit_ref.hh.

Constructor & Destructor Documentation

◆ MutableBitRef() [1/2]

◆ MutableBitRef() [2/2]

blender::bits::MutableBitRef::MutableBitRef ( BitInt * data,
const int64_t bit_index )
inline

Reference a specific bit in an array. Note that data does not have to point to the exact int the bit is in.

Definition at line 139 of file BLI_bit_ref.hh.

References blender::bits::BitIndexMask, data, blender::bits::int_containing_bit(), and blender::bits::mask_single_bit().

Member Function Documentation

◆ operator BitRef()

blender::bits::MutableBitRef::operator BitRef ( ) const
inline

Support implicitly casting to a read-only BitRef.

Definition at line 148 of file BLI_bit_ref.hh.

◆ operator bool()

blender::bits::MutableBitRef::operator bool ( ) const
inline

Definition at line 166 of file BLI_bit_ref.hh.

References test().

◆ operator&=()

MutableBitRef & blender::bits::MutableBitRef::operator&= ( const bool value)
inline

Definition at line 227 of file BLI_bit_ref.hh.

References MutableBitRef(), and reset().

◆ operator|=()

MutableBitRef & blender::bits::MutableBitRef::operator|= ( const bool value)
inline

Definition at line 219 of file BLI_bit_ref.hh.

References MutableBitRef(), and set().

◆ reset()

Change the bit to a 0.

Definition at line 182 of file BLI_bit_ref.hh.

Referenced by operator&=(), set(), and blender::bits::tests::TEST().

◆ set() [1/2]

◆ set() [2/2]

void blender::bits::MutableBitRef::set ( const bool value)
inline

Change the bit to a 1 if #value is true and 0 otherwise. If the value is highly unpredictable by the CPU branch predictor, it can be faster to use set_branchless instead.

Definition at line 191 of file BLI_bit_ref.hh.

References reset(), and set().

◆ set_branchless()

void blender::bits::MutableBitRef::set_branchless ( const bool value)
inline

Does the same as set, but does not use a branch. This is faster when the input value is unpredictable for the CPU branch predictor (best case for this function is a uniform random distribution with 50% probability for true and false). If the value is predictable, this is likely slower than set.

Definition at line 207 of file BLI_bit_ref.hh.

References BLI_assert, and ELEM.

Referenced by blender::bits::tests::TEST().

◆ test()

bool blender::bits::MutableBitRef::test ( ) const
inline

Return true when the bit is currently 1 and false otherwise.

Definition at line 159 of file BLI_bit_ref.hh.

Referenced by operator bool().


The documentation for this class was generated from the following file: