public virtual Differences VisitCompilationUnit(CompilationUnit cUnit1, CompilationUnit cUnit2){ Differences differences = new Differences(cUnit1, cUnit2); if (cUnit1 == null || cUnit2 == null){ if (cUnit1 != cUnit2) differences.NumberOfDifferences++; else differences.NumberOfSimilarities++; return differences; } CompilationUnit changes = (CompilationUnit)cUnit2.Clone(); CompilationUnit deletions = (CompilationUnit)cUnit2.Clone(); CompilationUnit insertions = (CompilationUnit)cUnit2.Clone(); NodeList nodeChanges, nodeDeletions, nodeInsertions; Differences diff = this.VisitNodeList(cUnit1.Nodes, cUnit2.Nodes, out nodeChanges, out nodeDeletions, out nodeInsertions); if (diff == null){Debug.Assert(false); return differences;} changes.Nodes = nodeChanges; deletions.Nodes = nodeDeletions; insertions.Nodes = nodeInsertions; differences.NumberOfDifferences += diff.NumberOfDifferences; differences.NumberOfSimilarities += diff.NumberOfSimilarities; if (differences.NumberOfDifferences == 0){ differences.Changes = null; differences.Deletions = null; differences.Insertions = null; }else{ differences.Changes = changes; differences.Deletions = deletions; differences.Insertions = insertions; } return differences; }
public override CompilationUnit VisitCompilationUnit(CompilationUnit cUnit) { if (cUnit == null) return null; this.FindTypesToBeDuplicated(cUnit.Nodes); return base.VisitCompilationUnit((CompilationUnit)cUnit.Clone()); }