package com.google.typography.font.sfntly.data; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; abstract class ByteArray<T extends ByteArray<T>> { private static final int COPY_BUFFER_SIZE = 8192; private boolean bound; private int storageLength; private int filledLength; private boolean growable; protected ByteArray(int paramInt1, int paramInt2, boolean paramBoolean) { this.storageLength = paramInt2; setFilledLength(paramInt1); this.growable = paramBoolean; } protected ByteArray(int paramInt1, int paramInt2) { this(paramInt1, paramInt2, false); } public int get(int paramInt) { if ((paramInt < 0) || (paramInt >= this.filledLength)) { return -1; } return internalGet(paramInt) & 0xFF; } public int get(int paramInt, byte[] paramArrayOfByte) { return get(paramInt, paramArrayOfByte, 0, paramArrayOfByte.length); } public int get(int paramInt1, byte[] paramArrayOfByte, int paramInt2, int paramInt3) { if ((paramInt1 < 0) || (paramInt1 >= this.filledLength)) { return -1; } int i = Math.min(paramInt3, this.filledLength - paramInt1); return internalGet(paramInt1, paramArrayOfByte, paramInt2, i); } public int length() { return this.filledLength; } public int size() { return this.storageLength; } public final boolean growable() { return this.growable; } public int setFilledLength(int paramInt) { this.filledLength = Math.min(paramInt, this.storageLength); return this.filledLength; } public void put(int paramInt, byte paramByte) { if ((paramInt < 0) || (paramInt >= size())) { throw new IndexOutOfBoundsException("Attempt to write outside the bounds of the data."); } internalPut(paramInt, paramByte); this.filledLength = Math.max(this.filledLength, paramInt + 1); } public int put(int paramInt, byte[] paramArrayOfByte) { return put(paramInt, paramArrayOfByte, 0, paramArrayOfByte.length); } public int put(int paramInt1, byte[] paramArrayOfByte, int paramInt2, int paramInt3) { if ((paramInt1 < 0) || (paramInt1 >= size())) { throw new IndexOutOfBoundsException("Attempt to write outside the bounds of the data."); } int i = Math.min(paramInt3, size() - paramInt1); int j = internalPut(paramInt1, paramArrayOfByte, paramInt2, i); this.filledLength = Math.max(this.filledLength, paramInt1 + j); return j; } public int copyTo(ByteArray<? extends ByteArray<?>> paramByteArray) { return copyTo(paramByteArray, 0, length()); } public int copyTo(ByteArray<? extends ByteArray<?>> paramByteArray, int paramInt1, int paramInt2) { return copyTo(0, paramByteArray, paramInt1, paramInt2); } public int copyTo(int paramInt1, ByteArray<? extends ByteArray<?>> paramByteArray, int paramInt2, int paramInt3) { byte[] arrayOfByte = new byte[' ']; int i = 0; int j = 0; for (int k = Math.min(arrayOfByte.length, paramInt3); (i = get(j + paramInt2, arrayOfByte, 0, k)) > 0; k = Math.min(arrayOfByte.length, paramInt3)) { int m = paramByteArray.put(j + paramInt1, arrayOfByte, 0, i); j += i; paramInt3 -= i; } return j; } public int copyTo(OutputStream paramOutputStream) throws IOException { return copyTo(paramOutputStream, 0, length()); } public int copyTo(OutputStream paramOutputStream, int paramInt1, int paramInt2) throws IOException { byte[] arrayOfByte = new byte[' ']; int i = 0; int j = 0; for (int k = Math.min(arrayOfByte.length, paramInt2); (i = get(j + paramInt1, arrayOfByte, 0, k)) > 0; k = Math.min(arrayOfByte.length, paramInt2 - j)) { paramOutputStream.write(arrayOfByte, 0, i); j += i; } return j; } public void copyFrom(InputStream paramInputStream, int paramInt) throws IOException { byte[] arrayOfByte = new byte[' ']; int i = 0; int j = 0; for (int k = Math.min(arrayOfByte.length, paramInt); (i = paramInputStream.read(arrayOfByte, 0, k)) > 0; k = Math.min(arrayOfByte.length, paramInt)) { if (put(j, arrayOfByte, 0, i) != i) { throw new IOException("Error writing bytes."); } j += i; paramInt -= i; } } public void copyFrom(InputStream paramInputStream) throws IOException { byte[] arrayOfByte = new byte[' ']; int i = 0; int j = 0; int k = arrayOfByte.length; while ((i = paramInputStream.read(arrayOfByte, 0, k)) > 0) { if (put(j, arrayOfByte, 0, i) != i) { throw new IOException("Error writing bytes."); } j += i; } } protected abstract void internalPut(int paramInt, byte paramByte); protected abstract int internalPut(int paramInt1, byte[] paramArrayOfByte, int paramInt2, int paramInt3); protected abstract int internalGet(int paramInt); protected abstract int internalGet(int paramInt1, byte[] paramArrayOfByte, int paramInt2, int paramInt3); public abstract void close(); public String toString(int paramInt1, int paramInt2) { if (paramInt2 == -1) { paramInt2 = length(); } paramInt2 = Math.min(paramInt2, length()); StringBuilder localStringBuilder = new StringBuilder(); localStringBuilder.append("[l=" + this.filledLength + ", s=" + size() + "]"); if (paramInt2 > 0) { localStringBuilder.append("\n"); } for (int i = 0; i < paramInt2; i++) { int j = get(i + paramInt1); if (j < 16) { localStringBuilder.append("0"); } localStringBuilder.append(Integer.toHexString(j)); localStringBuilder.append(" "); if ((i > 0) && ((i + 1) % 16 == 0)) { localStringBuilder.append("\n"); } } return localStringBuilder.toString(); } public String toString() { return toString(0, 0); } } /* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\google\typography\font\sfntly\data\ByteArray.class * Java compiler version: 6 (50.0) * JD-Core Version: 0.7.1 */