Пример #1
0
 /// <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;
 }
Пример #2
0
        /// <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;
        }
Пример #3
0
        /// <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));
        }