/// <summary> /// Deserialization constructor. /// </summary> private RangedNodeSet(NodeRange range, BitSet members) { Contract.Requires(members != null); Contract.Assume(members.Length == BitSet.RoundToValidBitCount(range.Size)); m_members = members; Range = range; }
/// <summary> /// Removes all existing nodes from this set, while simultaneously setting a new <see cref="Range"/>. /// </summary> public void ClearAndSetRange(NodeRange newRange) { if (newRange.Size > Range.Size) { m_members.Clear(); m_members.SetLength(BitSet.RoundToValidBitCount(newRange.Size)); } else { m_members.SetLength(BitSet.RoundToValidBitCount(newRange.Size)); m_members.Clear(); } Range = newRange; }
/// <nodoc /> public static RangedNodeSet Deserialize(BuildXLReader reader) { NodeRange range; if (!reader.ReadBoolean()) { range = NodeRange.Empty; } else { uint fromValue = reader.ReadUInt32(); uint toValue = reader.ReadUInt32(); Contract.Assume(fromValue != 0 && toValue != 0); range = new NodeRange(new NodeId(fromValue), new NodeId(toValue)); } BitSet members = BitSet.Deserialize(reader); return(new RangedNodeSet(range, members)); }