示例#1
0
        /// <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));
        }
示例#2
0
        /// <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));
        }