public static ushort BitDecode(ushort bits, Bitwise.BitFieldTraits traits) { Contract.Requires/*<ArgumentException>*/ (!traits.IsEmpty); Contract.Requires/*<ArgumentOutOfRangeException>*/ (traits.BitIndex < kInt16BitCount); Contract.Requires/*<ArgumentOutOfRangeException>*/ (traits.BitIndex + traits.BitCount <= kInt16BitCount); return((ushort)((bits >> traits.BitIndex) & traits.Bitmask16)); }
public static ulong BitEncode(ulong value, ulong bits, Bitwise.BitFieldTraits traits) { Contract.Requires/*<ArgumentException>*/ (!traits.IsEmpty); var bitmask = traits.Bitmask64; // Use the bit mask's invert so we can get all of the non-value bits return(BitEncodeFlags(value, bits & (~bitmask), traits.BitIndex, bitmask)); }
public static ushort BitEncode(ushort value, ushort bits, Bitwise.BitFieldTraits traits) { Contract.Requires/*<ArgumentException>*/ (!traits.IsEmpty); Contract.Requires/*<ArgumentOutOfRangeException>*/ (traits.BitIndex < kInt16BitCount); Contract.Requires/*<ArgumentOutOfRangeException>*/ (traits.BitIndex + traits.BitCount <= kInt16BitCount); var bitmask = (uint)traits.Bitmask16; // Use the bit mask's invert so we can get all of the non-value bits return((ushort)BitEncodeFlags(value, bits & (~bitmask), traits.BitIndex, bitmask)); }
public TEnum BitDecode(ulong bits, Bitwise.BitFieldTraits traits) { Contract.Requires(!traits.IsEmpty); return(BitDecode(bits, traits.BitIndex)); }
public ulong BitEncode(TEnum value, ulong bits, Bitwise.BitFieldTraits traits) { Contract.Requires(!traits.IsEmpty); return(BitEncode(value, bits, traits.BitIndex)); }
public static int BitDecodeNoneable(uint bits, Bitwise.BitFieldTraits traits) { Contract.Requires/*<ArgumentException>*/ (!traits.IsEmpty); return((int)BitDecode(bits, traits.BitIndex, traits.Bitmask32) - 1); }
public static uint BitDecode(uint bits, Bitwise.BitFieldTraits traits) { Contract.Requires/*<ArgumentException>*/ (!traits.IsEmpty); return((bits >> traits.BitIndex) & traits.Bitmask32); }
public static long BitDecodeNoneable(ulong bits, Bitwise.BitFieldTraits traits) { Contract.Requires/*<ArgumentException>*/ (!traits.IsEmpty); return((long)BitDecode(bits, traits.BitIndex, traits.Bitmask64) - 1); }
public static BitFieldTraits For <TUInt>(IEnumBitEncoder <TUInt> enumEncoder, BitFieldTraits prev) { Contract.Requires(enumEncoder != null); return(new BitFieldTraits(enumEncoder.BitCountTrait, prev)); }
public BitFieldTraits(int bitCount, BitFieldTraits prev) : this(false, bitCount, prev.NextFieldBitIndex) { Contract.Requires <ArgumentOutOfRangeException>(bitCount > 0 && bitCount <= kMaxBitCount); Contract.Requires <ArgumentException>((prev.NextFieldBitIndex + bitCount) <= kMaxBitCount); }
public TEnum BitEncode(uint bits, Bitwise.BitFieldTraits traits) { return(BitDecode(bits, traits.BitIndex)); }
public ushort BitEncode(TEnum value, ushort bits, Bitwise.BitFieldTraits traits) { return((ushort)BitEncode(value, bits, traits.BitIndex)); }