#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

47 lines
1.3 KiB

// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.Editor;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.AvalonEdit.AddIn.MyersDiff
{
public class DocumentSequence : ISequence
{
int[] hashes;
public DocumentSequence(IDocument document, Dictionary<string, int> hashDict)
{
this.hashes = new int[document.TotalNumberOfLines];
// Construct a perfect hash for the document lines, and store the 'hash code'
// (really just a unique identifier for each line content) in our array.
for (int i = 1; i <= document.TotalNumberOfLines; i++) {
string text = document.GetLine(i).Text;
int hash;
if (!hashDict.TryGetValue(text, out hash)) {
hash = hashDict.Count;
hashDict.Add(text, hash);
}
hashes[i - 1] = hash;
}
}
public int Size()
{
return hashes.Length;
}
public bool Equals(int thisIdx, ISequence other, int otherIdx)
{
DocumentSequence seq = other as DocumentSequence;
if (seq == null)
return false;
return hashes[thisIdx] == seq.hashes[otherIdx];
}
}
}