コード例 #1
0
        /// <summary>
        /// Merges two array differences to a unified difference.
        /// </summary>
        public static PositionArrayDiff Merge(PositionArrayDiff left, PositionArrayDiff right)
        {
            List <int> keys = left.Operations.Keys.ToList <int>();

            foreach (var kvp in right.Operations)
            {
                if (!left.Operations.ContainsKey(kvp.Key))
                {
                    keys.Add(kvp.Key);
                }
            }

            PositionArrayDiff h = new PositionArrayDiff();

            foreach (int key in keys)
            {
                if (left.Operations.ContainsKey(key) && right.Operations.ContainsKey(key))
                {
                    h.Operations[key] = DiffOperation.Merge(left.Operations[key], right.Operations[key]);
                }
                else if (left.Operations.ContainsKey(key))
                {
                    h.Operations[key] = left.Operations[key];
                }
                else if (right.Operations.ContainsKey(key))
                {
                    h.Operations[key] = right.Operations[key];
                }
            }
            return(h);
        }
コード例 #2
0
        /// <summary>
        /// Merges two HashDifferences to a unified difference.
        /// </summary>
        public static HashDiff Merge(HashDiff left, HashDiff right)
        {
            // Find the combined key list.
            List <object> keys = left.Operations.Keys.ToList <object>();

            foreach (var kvp in right.Operations)
            {
                if (!left.Operations.ContainsKey(kvp.Key))
                {
                    keys.Add(kvp.Key);
                }
            }

            // Merge the operations for each key.
            HashDiff h = new HashDiff();

            foreach (object key in keys)
            {
                if (left.Operations.ContainsKey(key) && right.Operations.ContainsKey(key))
                {
                    h.Operations[key] = DiffOperation.Merge(left.Operations[key], right.Operations[key]);
                }
                else if (left.Operations.ContainsKey(key))
                {
                    h.Operations[key] = left.Operations[key];
                }
                else if (right.Operations.ContainsKey(key))
                {
                    h.Operations[key] = right.Operations[key];
                }
            }
            return(h);
        }