40 template <
class BV, VD::Type VT, u32 LEN, u32 IDX>
44 typedef typename VTypeToType<VT>::TYPE VTYPE;
56 BITFIELD_ERROR_OVERFLOWED_BITS = (END+1)/((BITS+1)/(END+1))
61 BITFIELD_ERROR_FIELD_TOO_LONG = (LENGTH+1)/((64+1)/(LENGTH+1))
73 static u32
Read(
const BV & bv)
75 return bv.Read(START,LENGTH);
84 static void Write(BV & bv, u32 val)
86 bv.Write(START,LENGTH,val);
100 return bv.ReadLong(START,LENGTH);
114 return bv.SetBit(START+bitnum);
134 return bv.ClearBit(START+bitnum);
154 return bv.ToggleBit(START+bitnum);
175 static bool ReadBit(
const BV & bv, u32 bitnum)
177 return bv.ReadBit(START+bitnum);
194 bv.WriteLong(START,LENGTH,val);
204 static void Write(Atom<CC> & atom, u32 val)
206 Write(atom.m_bits, val);
212 static void Load(
const Atom<CC> & atom, u32 & val)
218 static void Store(Atom<CC> & atom,
const u32 & val)
226 static void Load(
const Atom<CC> & atom, s32 & val)
229 val = _SignExtend32(v, LENGTH);
233 static void Store(Atom<CC> & atom,
const s32 & val)
235 Write(atom,(u32) val);
241 static void Load(
const Atom<CC> & atom,
bool & val)
244 val = PopCount(v) > LENGTH/2;
248 static void Store(Atom<CC> & atom,
const bool & val)
250 Write(atom,val? _GetNOnes32(LENGTH) : 0u);
256 static void Load(
const Atom<CC> & atom, u64 & val)
262 static void Store(Atom<CC> & atom,
const u64 & val)
269 static VTYPE GetValue(
const Atom<CC> & a)
277 static void SetValue(Atom<CC> & a, VTYPE val)
static void Write(BV &bv, u32 val)
Definition: BitField.h:84
static u32 Read(const BV &bv)
Definition: BitField.h:73
static void ToggleBit(BV &bv, u32 bitnum)
Definition: BitField.h:152
static void SetBit(BV &bv, u32 bitnum)
Definition: BitField.h:112
static u64 ReadLong(const BV &bv)
Definition: BitField.h:98
void ClearBit(const u32 idx)
Definition: BitVector.h:217
bool ToggleBit(const u32 idx)
Definition: BitVector.tcc:54
static void WriteLong(BV &bv, u64 val)
Definition: BitField.h:192
void SetBit(const u32 idx)
Definition: BitVector.h:207
static void ClearBit(BV &bv, u32 bitnum)
Definition: BitField.h:132
bool ReadBit(u32 idx)
Definition: BitVector.tcc:65
BitVector< BPA > m_bits
Definition: Atom.h:99
static bool ReadBit(const BV &bv, u32 bitnum)
Definition: BitField.h:175