/// <summary> /// Return a hash for the given text file. /// </summary> /// <param name="filePath"></param> /// <returns></returns> public static TextHash HashText(string filePath) { int count; IntPtr hashPoints = NativeFunctions.ph_texthash(filePath, out count); var result = new TextHash(hashPoints, count); return(result); }
/// <summary> /// Return the result of the comparison between two TextHash. /// </summary> /// <param name="hash1"></param> /// <param name="hash2"></param> /// <returns></returns> public static NativeStructures.TxtMatch[] CompareTextHashes(TextHash hash1, TextHash hash2) { int resultCount; IntPtr rawTxtMatches = NativeFunctions.ph_compare_text_hashes(hash1.HashPoints, hash1.PointsCount, hash2.HashPoints, hash2.PointsCount, out resultCount); NativeStructures.TxtMatch[] array = new NativeStructures.TxtMatch[resultCount]; for (int i = 0; i < resultCount; i++) { array[i] = (NativeStructures.TxtMatch)Marshal.PtrToStructure(rawTxtMatches, typeof(NativeStructures.TxtMatch)); rawTxtMatches = IntPtr.Add(rawTxtMatches, Marshal.SizeOf(typeof(NativeStructures.TxtMatch))); } return(array); }
/// <summary> /// Return a hash for the given text file. /// </summary> /// <param name="filePath"></param> /// <returns></returns> public static TextHash HashText(string filePath) { int count; IntPtr hashPoints = NativeFunctions.ph_texthash(filePath, out count); var result = new TextHash(hashPoints, count); return result; }
/// <summary> /// Return the result of the comparison between two TextHash. /// </summary> /// <param name="hash1"></param> /// <param name="hash2"></param> /// <returns></returns> public static NativeStructures.TxtMatch[] CompareTextHashes(TextHash hash1, TextHash hash2) { int resultCount; IntPtr rawTxtMatches = NativeFunctions.ph_compare_text_hashes(hash1.HashPoints, hash1.PointsCount, hash2.HashPoints, hash2.PointsCount, out resultCount); NativeStructures.TxtMatch[] array = new NativeStructures.TxtMatch[resultCount]; for (int i = 0; i < resultCount; i++) { array[i] = (NativeStructures.TxtMatch)Marshal.PtrToStructure(rawTxtMatches, typeof(NativeStructures.TxtMatch)); rawTxtMatches = IntPtr.Add(rawTxtMatches, Marshal.SizeOf(typeof(NativeStructures.TxtMatch))); } return array; }