@Override public void putLong(long offset, long value) { ptr.putLong(base + offset, value); }
memory.putLong(offset, value.longValue()); break;
memory.putLong(offset, value.longValue()); break;
@Override public void putLong(long offset, long value) { ptr.putLong(base + offset, value); }
memory.putLong(offset, value.longValue()); break;
@Override public void putLong(long offset, long value) { ptr.putLong(base + offset, value); }
@Override protected final void in(final byte[] buffer, final Pointer ptr, final long ptrAddr) { final Pointer pointer = MEM_MGR.allocateDirect(buffer.length); pointer.put(0, buffer, 0, buffer.length); ptr.putLong(STRUCT_FIELD_OFFSET_SIZE, buffer.length); ptr.putLong(STRUCT_FIELD_OFFSET_DATA, pointer.address()); }
/** * Prepares an array suitable for presentation as the data argument to a * <code>MDB_MULTIPLE</code> put. * * <p> * The returned array is equivalent of two <code>MDB_val</code>s as follows: * * <ul> * <li>ptrVal1.data = pointer to the data address of passed buffer</li> * <li>ptrVal1.size = size of each individual data element</li> * <li>ptrVal2.data = unused</li> * <li>ptrVal2.size = number of data elements (as passed to this method)</li> * </ul> * * @param val a user-provided buffer with data elements (required) * @param elements number of data elements the user has provided * @return a properly-prepared pointer to an array for the operation */ Pointer valInMulti(final T val, final int elements) { final long ptrVal2SizeOff = MDB_VAL_STRUCT_SIZE + STRUCT_FIELD_OFFSET_SIZE; ptrArray.putLong(ptrVal2SizeOff, elements); // ptrVal2.size proxy.in(val, ptrVal, ptrValAddr); // ptrVal1.data final long totalBufferSize = ptrVal.getLong(STRUCT_FIELD_OFFSET_SIZE); final long elemSize = totalBufferSize / elements; ptrVal.putLong(STRUCT_FIELD_OFFSET_SIZE, elemSize); // ptrVal1.size return ptrArray; }
/** * Prepares an array suitable for presentation as the data argument to a * <code>MDB_MULTIPLE</code> put. * * <p> * The returned array is equivalent of two <code>MDB_val</code>s as follows: * * <ul> * <li>ptrVal1.data = pointer to the data address of passed buffer</li> * <li>ptrVal1.size = size of each individual data element</li> * <li>ptrVal2.data = unused</li> * <li>ptrVal2.size = number of data elements (as passed to this method)</li> * </ul> * * @param val a user-provided buffer with data elements (required) * @param elements number of data elements the user has provided * @return a properly-prepared pointer to an array for the operation */ Pointer valInMulti(final T val, final int elements) { final long ptrVal2SizeOff = MDB_VAL_STRUCT_SIZE + STRUCT_FIELD_OFFSET_SIZE; ptrArray.putLong(ptrVal2SizeOff, elements); // ptrVal2.size proxy.in(val, ptrVal, ptrValAddr); // ptrVal1.data final long totalBufferSize = ptrVal.getLong(STRUCT_FIELD_OFFSET_SIZE); final long elemSize = totalBufferSize / elements; ptrVal.putLong(STRUCT_FIELD_OFFSET_SIZE, elemSize); // ptrVal1.size return ptrArray; }
@Override protected void in(final ByteBuffer buffer, final Pointer ptr, final long ptrAddr) { ptr.putAddress(STRUCT_FIELD_OFFSET_DATA, address(buffer)); ptr.putLong(STRUCT_FIELD_OFFSET_SIZE, buffer.remaining()); }
@Override protected void in(final ByteBuffer buffer, final int size, final Pointer ptr, final long ptrAddr) { ptr.putLong(STRUCT_FIELD_OFFSET_SIZE, size); ptr.putAddress(STRUCT_FIELD_OFFSET_DATA, address(buffer)); }
@Override protected final void in(final byte[] buffer, final Pointer ptr, final long ptrAddr) { final Pointer pointer = MEM_MGR.allocateDirect(buffer.length); pointer.put(0, buffer, 0, buffer.length); ptr.putLong(STRUCT_FIELD_OFFSET_SIZE, buffer.length); ptr.putAddress(STRUCT_FIELD_OFFSET_DATA, pointer.address()); }