@Override public byte readByte() { byte aByte = UNSAFE.getByte(positionAddr); addPosition(1); return aByte; }
@Override public short readShort() { short s = UNSAFE.getShort(positionAddr); addPosition(2); return s; }
@Override public long readLong() { long l = UNSAFE.getLong(positionAddr); addPosition(8); return l; }
@Override public long readLong() { //long l = UNSAFE.getLong(positionAddr); long l = Bits.getLong(positionAddr); addPosition(8); return l; }
@Override public long readVolatileLong() { long l = UNSAFE.getLongVolatile(null, positionAddr); addPosition(8); return l; }
@Override public short readShort() { //short s = UNSAFE.getShort(positionAddr); short s = Bits.getShort(positionAddr); addPosition(2); return s; }
@Override public int readInt() { //int i = UNSAFE.getInt(positionAddr); int i = Bits.getInt(positionAddr); addPosition(4); return i; }
@Override public float readFloat() { //float f = UNSAFE.getFloat(positionAddr); float f = Bits.getFloat(positionAddr); addPosition(4); return f; }
@Override public double readDouble() { //double d = UNSAFE.getDouble(positionAddr); double d = Bits.getDouble(positionAddr); addPosition(8); return d; }
@Override public int readVolatileInt() { int i = UNSAFE.getIntVolatile(null, positionAddr); addPosition(4); return i; }
@Override public long readVolatileLong() { long l = UNSAFE.getLongVolatile(null, positionAddr); addPosition(8); return l; }
@Override public char readChar() { char ch = UNSAFE.getChar(positionAddr); addPosition(2); return ch; }
@Override public float readFloat() { float f = UNSAFE.getFloat(positionAddr); addPosition(4); return f; }
@Override public double readDouble() { double d = UNSAFE.getDouble(positionAddr); addPosition(8); return d; }
@Override public int read(@NotNull byte[] bytes, int off, int len) { if (len < 0 || off < 0 || off + len > bytes.length) throw new IllegalArgumentException(); long left = remaining(); if (left <= 0) return -1; int len2 = (int) Math.min(len, left); UNSAFE.copyMemory(null, positionAddr, bytes, BYTES_OFFSET + off, len2); addPosition(len2); return len2; }
@Override public void write(long offset, @NotNull byte[] bytes) { if (offset < 0 || offset + bytes.length > capacity()) throw new IllegalArgumentException(); UNSAFE.copyMemory(bytes, BYTES_OFFSET, null, startAddr + offset, bytes.length); addPosition(bytes.length); }
@Override public void write(long offset, @NotNull byte[] bytes) { if (offset < 0 || offset + bytes.length > capacity()) throw new IllegalArgumentException(); UNSAFE.copyMemory(bytes, BYTES_OFFSET, null, startAddr + offset, bytes.length); addPosition(bytes.length); }
@Override public void write(byte[] bytes, int off, int len) { if (off < 0 || off + len > bytes.length || len > remaining()) throw new IllegalArgumentException(); UNSAFE.copyMemory(bytes, BYTES_OFFSET + off, null, positionAddr, len); addPosition(len); }
@Override public void write(byte[] bytes, int off, int len) { if (off < 0 || off + len > bytes.length || len > remaining()) throw new IllegalArgumentException(); UNSAFE.copyMemory(bytes, BYTES_OFFSET + off, null, positionAddr, len); addPosition(len); }
@Override public void readFully(@NotNull byte[] b, int off, int len) { checkArrayOffs(b.length, off, len); long left = remaining(); if (left < len) throw new IllegalStateException(new EOFException()); UNSAFE.copyMemory(null, positionAddr, b, BYTES_OFFSET + off, len); addPosition(len); }