Ejemplo n.º 1
0
        public static DiffChain ConstructBackwardDiffChain(FileSnapshot a, FileSnapshot next, int right)
        {
            DiffChain backward = new DiffChain();

            backward.Start     = right;
            backward.StartSnap = next;
            backward.EndSnap   = a;
            backward.End       = null;
            int?left = next.GetRightToLeft(right);  // left is a's right

            if (left == null)
            {
                backward.Kind = DiffChainType.Null;
                return(backward);
            }
            //left++; // backward chaining drift?

            var aStatus    = backward.RightFromLeftStatus(a, left.Value);
            var nextStatus = backward.SelfStatusFromRight(next, right);
            var chainType  = backward.DetermineChainType(aStatus, nextStatus);

            backward.Kind = chainType;
            backward.End  = left;
            return(backward);
        }
Ejemplo n.º 2
0
        public static DiffChain ConstructForwardDiffChain(FileSnapshot a, FileSnapshot next, int right)
        {
            try
            {
                var chain = new DiffChain()
                {
                };
                var aStatus    = chain.SelfStatusFromRight(a, right);
                var nextStatus = chain.LeftFromRightStatus(next, right);
                var chainType  = chain.DetermineChainType(aStatus, nextStatus);

                chain.Kind      = chainType;
                chain.Start     = right;
                chain.End       = next.GetLeftToRight(right);
                chain.StartSnap = a;
                chain.EndSnap   = next;
                return(chain);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
                return(null);
            }
        }