| #include "rive/math/bit_field_loc.hpp" | |
| #include <cassert> | |
| using namespace rive; | |
| BitFieldLoc::BitFieldLoc(uint32_t start, uint32_t end) : m_start(start) | |
| { | |
| assert(end >= start); | |
| assert(end < 32); | |
| m_count = end - start + 1; | |
| m_mask = ((1 << (end - start + 1)) - 1) << start; | |
| } | |
| uint32_t BitFieldLoc::read(uint32_t bits) { return (bits & m_mask) >> m_start; } | |
| uint32_t BitFieldLoc::write(uint32_t bits, uint32_t value) | |
| { | |
| return (bits & ~m_mask) | ((value << m_start) & m_mask); | |
| } |