// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package uk.ac.rhul.cs.collections; import com.sosnoski.util.hashmap.PrimitiveKeyBase; public class IntIntHashMap extends PrimitiveKeyBase { public static final int DEFAULT_NOT_FOUND = -2147483648; protected int[] m_keyTable; protected int[] m_valueTable; public IntIntHashMap(int var1, double var2) { super(var1, var2, Integer.TYPE, Integer.TYPE); } public IntIntHashMap(int var1) { this(var1, 0.3D); } public IntIntHashMap() { this(0, 0.3D); } public IntIntHashMap(IntIntHashMap var1) { super(var1); } protected final Object getKeyArray() { return this.m_keyTable; } protected final void setKeyArray(Object var1) { this.m_keyTable = (int[])var1; } protected final Object getValueArray() { return this.m_valueTable; } protected final void setValueArray(Object var1) { this.m_valueTable = (int[])var1; } protected final boolean reinsert(int var1) { super.m_flagTable[var1] = false; return this.assignSlot(this.m_keyTable[var1], this.m_valueTable[var1]) != var1; } protected void restructure(boolean[] var1, Object var2, Object var3) { int[] var4 = (int[])var2; int[] var5 = (int[])var3; for(int var6 = 0; var6 < var1.length; ++var6) { if(var1[var6]) { this.assignSlot(var4[var6], var5[var6]); } } } protected final int computeSlot(int var1) { return (var1 * 517 & 2147483647) % super.m_flagTable.length; } protected int assignSlot(int var1, int var2) { int var3 = this.freeSlot(this.computeSlot(var1)); super.m_flagTable[var3] = true; this.m_keyTable[var3] = var1; this.m_valueTable[var3] = var2; return var3; } public int add(int var1, int var2) { this.ensureCapacity(super.m_entryCount + 1); int var3 = this.internalFind(var1); if(var3 >= 0) { int var4 = this.m_valueTable[var3]; this.m_valueTable[var3] = var2; return var4; } else { ++super.m_entryCount; var3 = -var3 - 1; super.m_flagTable[var3] = true; this.m_keyTable[var3] = var1; this.m_valueTable[var3] = var2; return DEFAULT_NOT_FOUND; } } protected final int internalFind(int var1) { int var2; for(var2 = this.computeSlot(var1); super.m_flagTable[var2]; var2 = this.stepSlot(var2)) { if(var1 == this.m_keyTable[var2]) { return var2; } } return -var2 - 1; } public final boolean containsKey(int var1) { return this.internalFind(var1) >= 0; } public final int get(int var1) { int var2 = this.internalFind(var1); return var2 >= 0 ? this.m_valueTable[var2] : DEFAULT_NOT_FOUND; } public int remove(int var1) { int var2 = this.internalFind(var1); if(var2 < 0) { return DEFAULT_NOT_FOUND; } else { int var3 = this.m_valueTable[var2]; super.m_flagTable[var2] = false; --super.m_entryCount; while(super.m_flagTable[var2 = this.stepSlot(var2)]) { this.reinsert(var2); } return var3; } } public Object clone() { return new IntIntHashMap(this); } }