Package gw.internal.gosu.util
Class RabinKarpHash
- java.lang.Object
-
- gw.internal.gosu.util.RabinKarpHash
-
public class RabinKarpHash extends java.lang.ObjectFast multi-pattern string matcher. Quick and dirty implementation of Rabin-Karp algorithm. Used for paths matching. We mach patterns from the end to reduce amount of possible collisions (filesystem paths tend to have common prefixes, like package names, etc). FIXME: Tests...- See Also:
- Rabin–Karp algorithm
-
-
Field Summary
Fields Modifier and Type Field Description private int_Apowblockprivate int_blockprivate java.util.Set<java.lang.Integer>_hashesprivate java.lang.String[]_patternsprivate static intAprivate static int[]CHAR_HASHES
-
Constructor Summary
Constructors Constructor Description RabinKarpHash(java.lang.String... patterns)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private booleanexactMatch(java.lang.String str, int i)Check for exact match.booleanmatches(java.lang.String str)private static intminLen(java.lang.String... patterns)Find the shortest of all patterns.private intreverseHash(java.lang.String str)Take rolling hash of last 'block' characters.private introllHash(int hashvalue, java.lang.String str, int i)Update rolling hash values.
-
-
-
Field Detail
-
A
private static final int A
- See Also:
- Constant Field Values
-
_block
private final int _block
-
_Apowblock
private final int _Apowblock
-
_hashes
private java.util.Set<java.lang.Integer> _hashes
-
_patterns
private java.lang.String[] _patterns
-
CHAR_HASHES
private static int[] CHAR_HASHES
-
-
Method Detail
-
minLen
private static int minLen(java.lang.String... patterns)
Find the shortest of all patterns.- Parameters:
patterns-- Returns:
-
matches
public boolean matches(java.lang.String str)
-
exactMatch
private boolean exactMatch(java.lang.String str, int i)Check for exact match. FIXME:- Parameters:
str-i-- Returns:
-
rollHash
private int rollHash(int hashvalue, java.lang.String str, int i)Update rolling hash values.- Parameters:
hashvalue-str-i-- Returns:
-
reverseHash
private int reverseHash(java.lang.String str)
Take rolling hash of last 'block' characters. Start from the end of the string.- Parameters:
str-- Returns:
-
-