// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package android.support.v7.widget; import java.util.ArrayList; class PositionMap implements Cloneable { static class ContainerHelpers { static final boolean EMPTY_BOOLEANS[] = new boolean[0]; static final int EMPTY_INTS[] = new int[0]; static final long EMPTY_LONGS[] = new long[0]; static final Object EMPTY_OBJECTS[] = new Object[0]; static int binarySearch(int ai[], int i, int j) { int k; label0: { k = 0; int l = i - 1; i = k; for (k = l; i <= k;) { int i1 = i + k >>> 1; int j1 = ai[i1]; if (j1 < j) { i = i1 + 1; } else { k = i1; if (j1 <= j) { break label0; } k = i1 - 1; } } k = ~i; } return k; } ContainerHelpers() { } } private static final Object DELETED = new Object(); private boolean mGarbage; private int mKeys[]; private int mSize; private Object mValues[]; public PositionMap() { this(10); } public PositionMap(int i) { mGarbage = false; if (i == 0) { mKeys = ContainerHelpers.EMPTY_INTS; mValues = ContainerHelpers.EMPTY_OBJECTS; } else { i = idealIntArraySize(i); mKeys = new int[i]; mValues = new Object[i]; } mSize = 0; } private void gc() { int l = mSize; int j = 0; int ai[] = mKeys; Object aobj[] = mValues; for (int i = 0; i < l;) { Object obj = aobj[i]; int k = j; if (obj != DELETED) { if (i != j) { ai[j] = ai[i]; aobj[j] = obj; aobj[i] = null; } k = j + 1; } i++; j = k; } mGarbage = false; mSize = j; } static int idealBooleanArraySize(int i) { return idealByteArraySize(i); } static int idealByteArraySize(int i) { int j = 4; do { label0: { int k = i; if (j < 32) { if (i > (1 << j) - 12) { break label0; } k = (1 << j) - 12; } return k; } j++; } while (true); } static int idealCharArraySize(int i) { return idealByteArraySize(i * 2) / 2; } static int idealFloatArraySize(int i) { return idealByteArraySize(i * 4) / 4; } static int idealIntArraySize(int i) { return idealByteArraySize(i * 4) / 4; } static int idealLongArraySize(int i) { return idealByteArraySize(i * 8) / 8; } static int idealObjectArraySize(int i) { return idealByteArraySize(i * 4) / 4; } static int idealShortArraySize(int i) { return idealByteArraySize(i * 2) / 2; } public void append(int i, Object obj) { if (mSize != 0 && i <= mKeys[mSize - 1]) { put(i, obj); return; } if (mGarbage && mSize >= mKeys.length) { gc(); } int j = mSize; if (j >= mKeys.length) { int k = idealIntArraySize(j + 1); int ai[] = new int[k]; Object aobj[] = new Object[k]; System.arraycopy(mKeys, 0, ai, 0, mKeys.length); System.arraycopy(((Object) (mValues)), 0, ((Object) (aobj)), 0, mValues.length); mKeys = ai; mValues = aobj; } mKeys[j] = i; mValues[j] = obj; mSize = j + 1; } public void clear() { int j = mSize; Object aobj[] = mValues; for (int i = 0; i < j; i++) { aobj[i] = null; } mSize = 0; mGarbage = false; } public PositionMap clone() { PositionMap positionmap = null; PositionMap positionmap1; try { positionmap1 = (PositionMap)super.clone(); } catch (CloneNotSupportedException clonenotsupportedexception) { return positionmap; } positionmap = positionmap1; positionmap1.mKeys = (int[])mKeys.clone(); positionmap = positionmap1; positionmap1.mValues = (Object[])((Object []) (mValues)).clone(); return positionmap1; } public volatile Object clone() throws CloneNotSupportedException { return clone(); } public void delete(int i) { i = ContainerHelpers.binarySearch(mKeys, mSize, i); if (i >= 0 && mValues[i] != DELETED) { mValues[i] = DELETED; mGarbage = true; } } public Object get(int i) { return get(i, null); } public Object get(int i, Object obj) { i = ContainerHelpers.binarySearch(mKeys, mSize, i); if (i < 0 || mValues[i] == DELETED) { return obj; } else { return mValues[i]; } } public int indexOfKey(int i) { if (mGarbage) { gc(); } return ContainerHelpers.binarySearch(mKeys, mSize, i); } public int indexOfValue(Object obj) { if (mGarbage) { gc(); } for (int i = 0; i < mSize; i++) { if (mValues[i] == obj) { return i; } } return -1; } public void insertKeyRange(int i, int j) { } public int keyAt(int i) { if (mGarbage) { gc(); } return mKeys[i]; } public void put(int i, Object obj) { int j = ContainerHelpers.binarySearch(mKeys, mSize, i); if (j >= 0) { mValues[j] = obj; return; } int k = ~j; if (k < mSize && mValues[k] == DELETED) { mKeys[k] = i; mValues[k] = obj; return; } j = k; if (mGarbage) { j = k; if (mSize >= mKeys.length) { gc(); j = ~ContainerHelpers.binarySearch(mKeys, mSize, i); } } if (mSize >= mKeys.length) { int l = idealIntArraySize(mSize + 1); int ai[] = new int[l]; Object aobj[] = new Object[l]; System.arraycopy(mKeys, 0, ai, 0, mKeys.length); System.arraycopy(((Object) (mValues)), 0, ((Object) (aobj)), 0, mValues.length); mKeys = ai; mValues = aobj; } if (mSize - j != 0) { System.arraycopy(mKeys, j, mKeys, j + 1, mSize - j); System.arraycopy(((Object) (mValues)), j, ((Object) (mValues)), j + 1, mSize - j); } mKeys[j] = i; mValues[j] = obj; mSize = mSize + 1; } public void remove(int i) { delete(i); } public void removeAt(int i) { if (mValues[i] != DELETED) { mValues[i] = DELETED; mGarbage = true; } } public void removeAtRange(int i, int j) { for (j = Math.min(mSize, i + j); i < j; i++) { removeAt(i); } } public void removeKeyRange(ArrayList arraylist, int i, int j) { } public void setValueAt(int i, Object obj) { if (mGarbage) { gc(); } mValues[i] = obj; } public int size() { if (mGarbage) { gc(); } return mSize; } public String toString() { if (size() <= 0) { return "{}"; } StringBuilder stringbuilder = new StringBuilder(mSize * 28); stringbuilder.append('{'); int i = 0; while (i < mSize) { if (i > 0) { stringbuilder.append(", "); } stringbuilder.append(keyAt(i)); stringbuilder.append('='); Object obj = valueAt(i); if (obj != this) { stringbuilder.append(obj); } else { stringbuilder.append("(this Map)"); } i++; } stringbuilder.append('}'); return stringbuilder.toString(); } public Object valueAt(int i) { if (mGarbage) { gc(); } return mValues[i]; } }