blob: 377b10aaf6ad0c7e731b571d6f5ffa3381bb2cb0 [file] [log] [blame]
#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);
}