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); }
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); } }