package haxe.ds; import haxe.root.*; @SuppressWarnings(value={"rawtypes", "unchecked"}) public class IntMap<T> extends haxe.lang.HxObject implements haxe.root.IMap<java.lang.Object, T> { public IntMap(haxe.lang.EmptyObject empty) { { } } public IntMap() { haxe.ds.IntMap.__hx_ctor_haxe_ds_IntMap(this); } public static <T_c> void __hx_ctor_haxe_ds_IntMap(haxe.ds.IntMap<T_c> __temp_me26) { __temp_me26.cachedIndex = -1; } public static java.lang.Object __hx_createEmpty() { return new haxe.ds.IntMap<java.lang.Object>(((haxe.lang.EmptyObject) (haxe.lang.EmptyObject.EMPTY) )); } public static java.lang.Object __hx_create(haxe.root.Array arr) { return new haxe.ds.IntMap<java.lang.Object>(); } public int[] flags; public int[] _keys; public T[] vals; public int nBuckets; public int size; public int nOccupied; public int upperBound; public int cachedKey; public int cachedIndex; public void set(int key, T value) { int x = 0; if (( this.nOccupied >= this.upperBound )) { if (( this.nBuckets > ( this.size << 1 ) )) { this.resize(( this.nBuckets - 1 )); } else { this.resize(( this.nBuckets + 1 )); } } int[] flags = this.flags; int[] _keys = this._keys; { int mask = ( this.nBuckets - 1 ); int site = x = this.nBuckets; int k = key; int i = ( k & mask ); if (( (( ( flags[( i >> 4 )] >>> (( (( i & 15 )) << 1 )) ) & 2 )) != 0 )) { x = i; } else { int inc = ( (( ( ( k >> 3 ) ^ ( k << 3 ) ) | 1 )) & mask ); int last = i; while ( ! ((( ( (( ( flags[( i >> 4 )] >>> (( (( i & 15 )) << 1 )) ) & 3 )) != 0 ) || ( _keys[i] == key ) ))) ) { i = ( ( i + inc ) & mask ); } x = i; } } if (( (( ( flags[( x >> 4 )] >>> (( (( x & 15 )) << 1 )) ) & 2 )) != 0 )) { _keys[x] = key; this.vals[x] = value; flags[( x >> 4 )] &= ~ ((( 3 << (( (( x & 15 )) << 1 )) ))) ; this.size++; this.nOccupied++; } else { if (( (( ( flags[( x >> 4 )] >>> (( (( x & 15 )) << 1 )) ) & 1 )) != 0 )) { _keys[x] = key; this.vals[x] = value; flags[( x >> 4 )] &= ~ ((( 3 << (( (( x & 15 )) << 1 )) ))) ; this.size++; } else { this.vals[x] = value; } } } public int lookup(int key) { if (( this.nBuckets != 0 )) { int[] flags = this.flags; int[] _keys = this._keys; int mask = ( this.nBuckets - 1 ); int k = key; int i = ( k & mask ); int inc = ( (( ( ( k >> 3 ) ^ ( k << 3 ) ) | 1 )) & mask ); int last = i; while (( ! ((( (( ( flags[( i >> 4 )] >>> (( (( i & 15 )) << 1 )) ) & 2 )) != 0 ))) && (( ( (( ( flags[( i >> 4 )] >>> (( (( i & 15 )) << 1 )) ) & 1 )) != 0 ) || ( _keys[i] != key ) )) )) { i = ( ( i + inc ) & mask ); if (( i == last )) { return -1; } } if (( (( ( flags[( i >> 4 )] >>> (( (( i & 15 )) << 1 )) ) & 3 )) != 0 )) { return -1; } else { return i; } } return -1; } public T get(int key) { int idx = -1; if (( ( this.cachedKey == key ) && ( (idx = this.cachedIndex) != -1 ) )) { return this.vals[idx]; } idx = this.lookup(key); if (( idx != -1 )) { this.cachedKey = key; this.cachedIndex = idx; return this.vals[idx]; } return null; } public void resize(int newNBuckets) { int[] newFlags = null; int j = 1; { { int x = newNBuckets; -- x; x |= ( x >>> 1 ); x |= ( x >>> 2 ); x |= ( x >>> 4 ); x |= ( x >>> 8 ); x |= ( x >>> 16 ); newNBuckets = ++ x; } if (( newNBuckets < 4 )) { newNBuckets = 4; } if (( this.size >= ( ( newNBuckets * 0.7 ) + 0.5 ) )) { j = 0; } else { int nfSize = 0; if (( newNBuckets < 16 )) { nfSize = 1; } else { nfSize = ( newNBuckets >> 4 ); } newFlags = new int[((int) (nfSize) )]; { int _g = 0; while (( _g < ((int) (nfSize) ) )) { int i = _g++; newFlags[i] = -1431655766; } } if (( this.nBuckets < newNBuckets )) { int[] k = new int[((int) (newNBuckets) )]; if (( this._keys != null )) { java.lang.System.arraycopy(((java.lang.Object) (this._keys) ), ((int) (0) ), ((java.lang.Object) (k) ), ((int) (0) ), ((int) (this.nBuckets) )); } this._keys = k; T[] v = ((T[]) (((java.lang.Object) (new java.lang.Object[((int) (newNBuckets) )]) )) ); if (( this.vals != null )) { java.lang.System.arraycopy(((java.lang.Object) (this.vals) ), ((int) (0) ), ((java.lang.Object) (v) ), ((int) (0) ), ((int) (this.nBuckets) )); } this.vals = v; } } } if (( j != 0 )) { this.cachedKey = 0; this.cachedIndex = -1; j = -1; int nBuckets = this.nBuckets; int[] _keys = this._keys; T[] vals = this.vals; int[] flags = this.flags; int newMask = ( newNBuckets - 1 ); while (( ++ j < nBuckets )) { if ( ! ((( (( ( flags[( j >> 4 )] >>> (( (( j & 15 )) << 1 )) ) & 3 )) != 0 ))) ) { int key = _keys[j]; T val = vals[j]; flags[( j >> 4 )] |= ( 1 << (( (( j & 15 )) << 1 )) ); while (true) { int k = key; int inc = ( (( ( ( k >> 3 ) ^ ( k << 3 ) ) | 1 )) & newMask ); int i = ( k & newMask ); while ( ! ((( (( ( newFlags[( i >> 4 )] >>> (( (( i & 15 )) << 1 )) ) & 2 )) != 0 ))) ) { i = ( ( i + inc ) & newMask ); } newFlags[( i >> 4 )] &= ~ ((( 2 << (( (( i & 15 )) << 1 )) ))) ; if (( ( i < nBuckets ) && ! ((( (( ( flags[( i >> 4 )] >>> (( (( i & 15 )) << 1 )) ) & 3 )) != 0 ))) )) { { int tmp = _keys[i]; _keys[i] = key; key = tmp; } { T tmp = vals[i]; vals[i] = val; val = tmp; } flags[( i >> 4 )] |= ( 1 << (( (( i & 15 )) << 1 )) ); } else { _keys[i] = key; vals[i] = val; break; } } } } if (( nBuckets > newNBuckets )) { { int[] k = new int[((int) (newNBuckets) )]; java.lang.System.arraycopy(((java.lang.Object) (_keys) ), ((int) (0) ), ((java.lang.Object) (k) ), ((int) (0) ), ((int) (newNBuckets) )); this._keys = k; } { T[] v = ((T[]) (((java.lang.Object) (new java.lang.Object[((int) (newNBuckets) )]) )) ); java.lang.System.arraycopy(((java.lang.Object) (vals) ), ((int) (0) ), ((java.lang.Object) (v) ), ((int) (0) ), ((int) (newNBuckets) )); this.vals = v; } } this.flags = newFlags; this.nBuckets = newNBuckets; this.nOccupied = this.size; this.upperBound = ((int) (( ( newNBuckets * 0.7 ) + .5 )) ); } } public java.lang.Object keys() { haxe.root.Array<haxe.ds.IntMap> _g1 = new haxe.root.Array<haxe.ds.IntMap>(new haxe.ds.IntMap[]{((haxe.ds.IntMap) (this) )}); haxe.root.Array<java.lang.Object> i = new haxe.root.Array<java.lang.Object>(new java.lang.Object[]{0}); haxe.root.Array<java.lang.Object> len = new haxe.root.Array<java.lang.Object>(new java.lang.Object[]{this.nBuckets}); { haxe.lang.Function __temp_odecl136 = new haxe.ds.IntMap_keys_332__Fun<T>(((haxe.root.Array<java.lang.Object>) (i) ), ((haxe.root.Array<haxe.ds.IntMap>) (_g1) ), ((haxe.root.Array<java.lang.Object>) (len) )); haxe.lang.Function __temp_odecl137 = new haxe.ds.IntMap_keys_343__Fun<T>(((haxe.root.Array<java.lang.Object>) (i) ), ((haxe.root.Array<haxe.ds.IntMap>) (_g1) )); return new haxe.lang.DynamicObject(new haxe.root.Array<java.lang.String>(new java.lang.String[]{"hasNext", "next"}), new haxe.root.Array<java.lang.Object>(new java.lang.Object[]{__temp_odecl136, __temp_odecl137}), new haxe.root.Array<java.lang.String>(new java.lang.String[]{}), new haxe.root.Array<java.lang.Object>(new java.lang.Object[]{})); } } @Override public double __hx_setField_f(java.lang.String field, double value, boolean handleProperties) { { boolean __temp_executeDef138 = true; switch (field.hashCode()) { case 1005083856: { if (field.equals("cachedIndex")) { __temp_executeDef138 = false; this.cachedIndex = ((int) (value) ); return value; } break; } case 325636987: { if (field.equals("nBuckets")) { __temp_executeDef138 = false; this.nBuckets = ((int) (value) ); return value; } break; } case -553141795: { if (field.equals("cachedKey")) { __temp_executeDef138 = false; this.cachedKey = ((int) (value) ); return value; } break; } case 3530753: { if (field.equals("size")) { __temp_executeDef138 = false; this.size = ((int) (value) ); return value; } break; } case -1690761732: { if (field.equals("upperBound")) { __temp_executeDef138 = false; this.upperBound = ((int) (value) ); return value; } break; } case -394102484: { if (field.equals("nOccupied")) { __temp_executeDef138 = false; this.nOccupied = ((int) (value) ); return value; } break; } } if (__temp_executeDef138) { return super.__hx_setField_f(field, value, handleProperties); } else { throw null; } } } @Override public java.lang.Object __hx_setField(java.lang.String field, java.lang.Object value, boolean handleProperties) { { boolean __temp_executeDef139 = true; switch (field.hashCode()) { case 1005083856: { if (field.equals("cachedIndex")) { __temp_executeDef139 = false; this.cachedIndex = ((int) (haxe.lang.Runtime.toInt(value)) ); return value; } break; } case 97513095: { if (field.equals("flags")) { __temp_executeDef139 = false; this.flags = ((int[]) (value) ); return value; } break; } case -553141795: { if (field.equals("cachedKey")) { __temp_executeDef139 = false; this.cachedKey = ((int) (haxe.lang.Runtime.toInt(value)) ); return value; } break; } case 91023059: { if (field.equals("_keys")) { __temp_executeDef139 = false; this._keys = ((int[]) (value) ); return value; } break; } case -1690761732: { if (field.equals("upperBound")) { __temp_executeDef139 = false; this.upperBound = ((int) (haxe.lang.Runtime.toInt(value)) ); return value; } break; } case 3612018: { if (field.equals("vals")) { __temp_executeDef139 = false; this.vals = ((T[]) (value) ); return value; } break; } case -394102484: { if (field.equals("nOccupied")) { __temp_executeDef139 = false; this.nOccupied = ((int) (haxe.lang.Runtime.toInt(value)) ); return value; } break; } case 325636987: { if (field.equals("nBuckets")) { __temp_executeDef139 = false; this.nBuckets = ((int) (haxe.lang.Runtime.toInt(value)) ); return value; } break; } case 3530753: { if (field.equals("size")) { __temp_executeDef139 = false; this.size = ((int) (haxe.lang.Runtime.toInt(value)) ); return value; } break; } } if (__temp_executeDef139) { return super.__hx_setField(field, value, handleProperties); } else { throw null; } } } @Override public java.lang.Object __hx_getField(java.lang.String field, boolean throwErrors, boolean isCheck, boolean handleProperties) { { boolean __temp_executeDef140 = true; switch (field.hashCode()) { case 3288564: { if (field.equals("keys")) { __temp_executeDef140 = false; return ((haxe.lang.Function) (new haxe.lang.Closure(((java.lang.Object) (this) ), haxe.lang.Runtime.toString("keys"))) ); } break; } case 97513095: { if (field.equals("flags")) { __temp_executeDef140 = false; return this.flags; } break; } case -934437708: { if (field.equals("resize")) { __temp_executeDef140 = false; return ((haxe.lang.Function) (new haxe.lang.Closure(((java.lang.Object) (this) ), haxe.lang.Runtime.toString("resize"))) ); } break; } case 91023059: { if (field.equals("_keys")) { __temp_executeDef140 = false; return this._keys; } break; } case 102230: { if (field.equals("get")) { __temp_executeDef140 = false; return ((haxe.lang.Function) (new haxe.lang.Closure(((java.lang.Object) (this) ), haxe.lang.Runtime.toString("get"))) ); } break; } case 3612018: { if (field.equals("vals")) { __temp_executeDef140 = false; return this.vals; } break; } case -1097094790: { if (field.equals("lookup")) { __temp_executeDef140 = false; return ((haxe.lang.Function) (new haxe.lang.Closure(((java.lang.Object) (this) ), haxe.lang.Runtime.toString("lookup"))) ); } break; } case 325636987: { if (field.equals("nBuckets")) { __temp_executeDef140 = false; return this.nBuckets; } break; } case 113762: { if (field.equals("set")) { __temp_executeDef140 = false; return ((haxe.lang.Function) (new haxe.lang.Closure(((java.lang.Object) (this) ), haxe.lang.Runtime.toString("set"))) ); } break; } case 3530753: { if (field.equals("size")) { __temp_executeDef140 = false; return this.size; } break; } case 1005083856: { if (field.equals("cachedIndex")) { __temp_executeDef140 = false; return this.cachedIndex; } break; } case -394102484: { if (field.equals("nOccupied")) { __temp_executeDef140 = false; return this.nOccupied; } break; } case -553141795: { if (field.equals("cachedKey")) { __temp_executeDef140 = false; return this.cachedKey; } break; } case -1690761732: { if (field.equals("upperBound")) { __temp_executeDef140 = false; return this.upperBound; } break; } } if (__temp_executeDef140) { return super.__hx_getField(field, throwErrors, isCheck, handleProperties); } else { throw null; } } } @Override public double __hx_getField_f(java.lang.String field, boolean throwErrors, boolean handleProperties) { { boolean __temp_executeDef141 = true; switch (field.hashCode()) { case 1005083856: { if (field.equals("cachedIndex")) { __temp_executeDef141 = false; return ((double) (this.cachedIndex) ); } break; } case 325636987: { if (field.equals("nBuckets")) { __temp_executeDef141 = false; return ((double) (this.nBuckets) ); } break; } case -553141795: { if (field.equals("cachedKey")) { __temp_executeDef141 = false; return ((double) (this.cachedKey) ); } break; } case 3530753: { if (field.equals("size")) { __temp_executeDef141 = false; return ((double) (this.size) ); } break; } case -1690761732: { if (field.equals("upperBound")) { __temp_executeDef141 = false; return ((double) (this.upperBound) ); } break; } case -394102484: { if (field.equals("nOccupied")) { __temp_executeDef141 = false; return ((double) (this.nOccupied) ); } break; } } if (__temp_executeDef141) { return super.__hx_getField_f(field, throwErrors, handleProperties); } else { throw null; } } } @Override public java.lang.Object __hx_invokeField(java.lang.String field, haxe.root.Array dynargs) { { boolean __temp_executeDef142 = true; switch (field.hashCode()) { case 3288564: { if (field.equals("keys")) { __temp_executeDef142 = false; return this.keys(); } break; } case 113762: { if (field.equals("set")) { __temp_executeDef142 = false; this.set(((int) (haxe.lang.Runtime.toInt(dynargs.__get(0))) ), ((T) (dynargs.__get(1)) )); } break; } case -934437708: { if (field.equals("resize")) { __temp_executeDef142 = false; this.resize(((int) (haxe.lang.Runtime.toInt(dynargs.__get(0))) )); } break; } case -1097094790: { if (field.equals("lookup")) { __temp_executeDef142 = false; return this.lookup(((int) (haxe.lang.Runtime.toInt(dynargs.__get(0))) )); } break; } case 102230: { if (field.equals("get")) { __temp_executeDef142 = false; return this.get(((int) (haxe.lang.Runtime.toInt(dynargs.__get(0))) )); } break; } } if (__temp_executeDef142) { return super.__hx_invokeField(field, dynargs); } } return null; } @Override public void __hx_getFields(haxe.root.Array<java.lang.String> baseArr) { baseArr.push("cachedIndex"); baseArr.push("cachedKey"); baseArr.push("upperBound"); baseArr.push("nOccupied"); baseArr.push("size"); baseArr.push("nBuckets"); baseArr.push("vals"); baseArr.push("_keys"); baseArr.push("flags"); { super.__hx_getFields(baseArr); } } }