public HeapBuffer(int length, ByteOrder endianness) { memory = new HeapMemory(length, endianness); }
@Override public void getBytes(long l, byte[] bytes, int start, int length) { checkBounds(l, length); checkArrayBounds(bytes, start, length); System.arraycopy(data, (int)(offset+l), bytes, start, length); }
@Override public void getBytes(long l, byte[] bytes) { getBytes(l, bytes, 0, bytes.length); }
@Override public void putByte(long l, byte b) { checkBounds(l, 1); data[(int)(offset+l)] = b; }
@Override public void putBytes(long l, byte[] bytes) { putBytes(l, bytes, 0, bytes.length); }
@Override public byte getByte(long l) { checkBounds(l, 1); return data[(int)(offset+l)]; }
@Override public void putBytes(long l, Memory source) { putBytes(l, source, 0, source.length()); }
private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); dataMemory = new HeapMemory(data, ByteOrder.nativeOrder()); }
@Override public void getBytes(long l, ByteBuffer dest) { final int length = dest.remaining(); checkBounds(l, length); dest.put(data, (int)(offset+l), length); }
@Override public void putBytes(long l, byte[] bytes, int start, int length) { checkBounds(l, length); checkArrayBounds(bytes, start, length); System.arraycopy(bytes, start, data, (int)(offset+l), length); }
@Override public void getBytes(long l, Memory dest) { getBytes(l, dest, 0, dest.length()); }
@Override public Memory slice(long startAddress, long sliceLength) { if (startAddress < 0) throw new IllegalArgumentException("startAddress must be >= 0"); if (sliceLength < 0) throw new IllegalArgumentException("sliceLength must be >= 0"); if (startAddress+sliceLength > length) throw new IllegalArgumentException("startAddress+sliceLength must be <= length"); return new HeapMemory(data, (int)(offset+startAddress), (int)sliceLength, endianness); }
@Override public void putBytes(long l, ByteBuffer source) { final int length = source.remaining(); checkBounds(l, length); source.get(data, (int) (offset+l), length); }
public TableReader(@Nonnull final TableMeta<K, V> meta, @Nonnull final byte[] rawData) { this.meta = meta; dataMemory = new HeapMemory(rawData, ByteOrder.nativeOrder()); data = null; offsets = null; select = null; memory = null; minKey = meta.getMinKey(); maxKey = meta.getMaxKey(); }
@Override public void putFloat(long l, float v) { checkBounds(l, 4); dataAccess.putFloat(data, (int)(offset+l), v); }
private MphMap(final TableMeta<K, V> meta, final byte[] data, final byte[] offsets) { this.meta = meta; this.data = data; this.offsets = offsets; dataMemory = new HeapMemory(data, ByteOrder.nativeOrder()); minKey = meta.getMinKey(); maxKey = meta.getMaxKey(); if (offsets != null) { if (TableConfig.OffsetStorage.SELECTED.equals(meta.getConfig().getOffsetStorage())) { select = new HintedBsearchSelect(new Rank9(new ByteArrayBitVector(offsets))); memory = null; } else { select = null; memory = new HeapMemory(offsets, ByteOrder.nativeOrder()); } } else { select = null; memory = null; } }
@Override public void putShort(long l, short i) { checkBounds(l, 2); dataAccess.putShort(data, (int)(offset+l), i); }
@Override public double getDouble(long l) { checkBounds(l, 8); return dataAccess.getDouble(data, (int)(offset+l)); }
@Override public char getChar(long l) { checkBounds(l, 2); return dataAccess.getChar(data, (int)(offset+l)); }
@Override public float getFloat(long l) { checkBounds(l, 4); return dataAccess.getFloat(data, (int)(offset+l)); }