public void putBytes(long l, DirectMemory source, long start, long length) { checkBounds(l, length); source.checkBounds(start, length); directDataAccess.copyMemory(source.address + start, address + l, length); }
public void getBytes(long l, DirectMemory dest, long start, long length) { checkBounds(l, length); dest.checkBounds(start, length); directDataAccess.copyMemory(address + l, dest.address + start, length); }
@Override public void putDouble(final long l, final double v) { checkBounds(l, 8); directDataAccess.putDouble(address + l, v); }
@Override public void putByte(final long l, final byte b) { checkBounds(l, 1); directDataAccess.putByte(address + l, b); }
@Override public void putChar(final long l, final char c) { checkBounds(l, 2); directDataAccess.putChar(address + l, c); }
@Override public char getChar(final long l) { checkBounds(l, 2); return directDataAccess.getChar(address+l); }
@Override public long getLong(final long l) { checkBounds(l, 8); return directDataAccess.getLong(address+l); }
@Override public void putLong(final long l, final long l1) { checkBounds(l, 8); directDataAccess.putLong(address + l, l1); }
@Override public byte getByte(final long l) { checkBounds(l, 1); return directDataAccess.getByte(address+l); }
@Override public void putShort(final long l, final short i) { checkBounds(l, 2); directDataAccess.putShort(address + l, i); }
@Override public int getInt(final long l) { checkBounds(l, 4); return directDataAccess.getInt(address+l); }
@Override public float getFloat(final long l) { checkBounds(l, 4); return directDataAccess.getFloat(address+l); }
@Override public void putFloat(final long l, final float v) { checkBounds(l, 4); directDataAccess.putFloat(address + l, v); }
@Override public short getShort(final long l) { checkBounds(l, 2); return directDataAccess.getShort(address+l); }
@Override public void putInt(final long l, final int i) { checkBounds(l, 4); directDataAccess.putInt(address + l, i); }
@Override public double getDouble(final long l) { checkBounds(l, 8); return directDataAccess.getDouble(address+l); }
@Override public void putBytes(long l, ByteBuffer source) { final int length = source.remaining(); checkBounds(l, length); if (source.isDirect()) { NativeMemoryUtils.copyFromDirectBuffer(source, source.position(), address+l, length); source.position(source.position()+length); } else if (source.hasArray()) { final byte[] array = source.array(); final int offset = source.arrayOffset(); putBytes(l, array, offset+source.position(), length); source.position(source.position()+length); } else { final byte[] copyBuffer = new byte[Math.min(length, 4096)]; long destAddr = l; while (source.remaining() > 0) { final int copySize = Math.min(copyBuffer.length, source.remaining()); source.get(copyBuffer, 0, copySize); putBytes(destAddr, copyBuffer, 0, copySize); destAddr+=copySize; } } }
@Override public void getBytes(final long l, final byte[] bytes, final int start, final int length) { checkBounds(l, length); checkArrayBounds(bytes, start, length); NativeMemoryUtils.copyToArray(address + l, bytes, start, length); }
@Override public void getBytes(long l, ByteBuffer dest) { final int length = dest.remaining(); checkBounds(l, length); if (dest.isDirect()) { NativeMemoryUtils.copyToDirectBuffer(address+l, dest, dest.position(), length); dest.position(dest.position()+length); } else if (dest.hasArray()) { final byte[] array = dest.array(); final int offset = dest.arrayOffset(); getBytes(l, array, offset+dest.position(), length); dest.position(dest.position()+length); } else { final byte[] copyBuffer = new byte[Math.min(length, 4096)]; long sourceAddr = l; while (dest.remaining() > 0) { final int copySize = Math.min(copyBuffer.length, dest.remaining()); getBytes(sourceAddr, copyBuffer, 0, copySize); dest.put(copyBuffer, 0, copySize); sourceAddr+=copySize; } } }
@Override public void putBytes(final long l, final byte[] bytes, final int start, final int length) { checkBounds(l, length); checkArrayBounds(bytes, start, length); NativeMemoryUtils.copyFromArray(bytes, start, address + l, length); }