Log in Help
Print
HomegatepluginsJAPE_Plussrccomontotextjapeautomaton 〉 CodeInt.java
 
/*
 *  CodeInt.java
 *
 *  Copyright (c) 2010-2011, Ontotext (www.ontotext.com).
 *
 *  This file is part of GATE (see http://gate.ac.uk/), and is free
 *  software, licenced under the GNU Library General Public License,
 *  Version 2, June 1991 (in the distribution as file licence.html,
 *  and also available at http://gate.ac.uk/gate/licence.html).
 *
 *
 *  $Id$
 */
package com.ontotext.jape.automaton;

/**
 * This class provides a basic functionality used to compute hash codes in
 * closed hashes.
 * 
 * @author petar.mitankin
 * 
 */
public class CodeInt {
	public static int code(int number, int codeInt, int hashLength) {
	  // we extend that data to long while we do the calculations, as the 
	  // multiplications below may lead to rollover.
	  // Part of the fix for bug #3293320
	  long code = codeInt;
		code = (code * Constants.hashBase + (number & 0x000000FF)) % hashLength;
		code = (code * Constants.hashBase + ((number & 0x0000FF00) >>> 8))
				% hashLength;
		code = (code * Constants.hashBase + ((number & 0x00FF0000) >>> 16))
				% hashLength;
		code = (code * Constants.hashBase + ((number & 0xFF000000) >>> 24))
				% hashLength;
		return (int)code;
	}
}