Blender V4.3
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 126 of file BLI_bit_ref.hh.

Constructor & Destructor Documentation

◆ MutableBitRef() [1/2]

blender::bits::MutableBitRef::MutableBitRef ( )
default

◆ 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 140 of file BLI_bit_ref.hh.

References blender::bits::BitIndexMask, 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 149 of file BLI_bit_ref.hh.

◆ operator bool()

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

Definition at line 167 of file BLI_bit_ref.hh.

References test().

◆ operator&=()

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

Definition at line 228 of file BLI_bit_ref.hh.

References reset().

◆ operator|=()

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

Definition at line 220 of file BLI_bit_ref.hh.

References set().

◆ reset()

void blender::bits::MutableBitRef::reset ( )
inline

Change the bit to a 0.

Definition at line 183 of file BLI_bit_ref.hh.

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

◆ set() [1/2]

void blender::bits::MutableBitRef::set ( )
inline

◆ 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 192 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 208 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 160 of file BLI_bit_ref.hh.

Referenced by operator bool().


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