/// <nodoc /> public OrderedSet AddRange(IReadOnlyList <EvaluationResult> items) { Contract.Requires(items != null); // Special logic if the right hand side is empty or has just one element if (items.Count == 0) { return(this); } if (items.Count == 1) { return(Add(items[0])); } var taggedItems = new TaggedEntry[items.Count]; long tag = m_maxTag; for (int i = 0; i < items.Count; ++i) { taggedItems[i] = new TaggedEntry(items[i], tag++); } return(new OrderedSet(m_set.Union(taggedItems), tag)); }
/// <nodoc /> public OrderedSet Union(OrderedSet otherSet) { Contract.Requires(otherSet != null); var sortedOther = ToSortedArray(otherSet); var retaggedOther = new TaggedEntry[sortedOther.Length]; long tag = m_maxTag; for (int i = 0; i < sortedOther.Length; ++i) { retaggedOther[i] = new TaggedEntry(sortedOther[i].Value, tag++); } return(new OrderedSet(m_set.Union(retaggedOther), tag)); }