Package org.jruby.ext.ffi
Class ArrayMemoryIO
java.lang.Object
org.jruby.ext.ffi.MemoryIO
org.jruby.ext.ffi.ArrayMemoryIO
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final int
protected final byte[]
protected static final ArrayMemoryIO.ArrayIO
protected final int
protected static final int
protected final int
protected final Ruby
-
Constructor Summary
ConstructorsConstructorDescriptionArrayMemoryIO
(Ruby runtime, byte[] buffer, int offset, int length) ArrayMemoryIO
(Ruby runtime, int size) -
Method Summary
Modifier and TypeMethodDescriptionfinal byte[]
array()
final int
final int
Creates a view of this memory object as a java NIO byte buffer.final void
clear()
dup()
Duplicates thisMemoryIO
, including its contents.final void
get
(long offset, byte[] dst, int off, int len) Reads an array of bytes from the memory area at the specified offset.final void
get
(long offset, double[] dst, int off, int len) Reads an array of doubles from the memory area at the specified offset.final void
get
(long offset, float[] dst, int off, int len) Reads an array of floats from the memory area at the specified offset.final void
get
(long offset, int[] dst, int off, int len) Reads an array of ints from the memory area at the specified offset.final void
get
(long offset, long[] dst, int off, int len) Reads an array of longs from the memory area at the specified offset.final void
get
(long offset, short[] dst, int off, int len) Reads an array of shorts from the memory area at the specified offset.final long
getAddress
(long offset) Reads a pointer value at the specified offset within the memory area.final byte
getByte
(long offset) Reads an 8 bit integer value from the memory area.final double
getDouble
(long offset) Reads a double value from the memory area.final float
getFloat
(long offset) Reads a float value from the memory area.final int
getInt
(long offset) Reads a 32 bit integer value from the memory area.final long
getLong
(long offset) Reads a 64 bit integer value from the memory area.final MemoryIO
getMemoryIO
(long offset) Reads a pointer value at the specified offset within the memory area, and wraps it in an abstract memory accessor.final long
getNativeLong
(long offset) Reads a native long integer value from the memory area.final short
getShort
(long offset) Reads a 16 bit integer value from the memory area.final byte[]
getZeroTerminatedByteArray
(long offset) Reads a zero terminated byte array (e.g.final byte[]
getZeroTerminatedByteArray
(long offset, int maxlen) Reads a zero terminated byte array (e.g.protected final int
index
(long off) final int
indexOf
(long offset, byte value) Gets the first index within the memory area of a particular 8 bit value.final int
indexOf
(long offset, byte value, int maxlen) Gets the first index within the memory area of a particular 8 bit value.final ByteOrder
order()
Gets theByteOrder
thisMemoryIO
instance will read/write values to memory in.final void
put
(long offset, byte[] src, int off, int len) Writes an array of bytes to the memory area at the specified offset.final void
put
(long offset, double[] src, int off, int len) Writes an array of doubles to the memory area at the specified offset.final void
put
(long offset, float[] src, int off, int len) Writes an array of floats to the memory area at the specified offset.final void
put
(long offset, int[] src, int off, int len) Writes an array of ints to the memory area at the specified offset.final void
put
(long offset, long[] src, int off, int len) Writes an array of longs to the memory area at the specified offset.final void
put
(long offset, short[] src, int off, int len) Writes an array of shorts to the memory area at the specified offset.final void
putAddress
(long offset, long value) Writes a pointer value to the memory area at the specified offset.final void
putByte
(long offset, byte value) Writes an 8 bit integer value to the memory area at the specified offset.final void
putDouble
(long offset, double value) Writes a 64 bit float value to the memory area at the specified offset.final void
putFloat
(long offset, float value) Writes a 32 bit float value to the memory area at the specified offset.final void
putInt
(long offset, int value) Writes a 32 bit integer value to the memory area at the specified offset.final void
putLong
(long offset, long value) Writes a 64 bit integer value to the memory area at the specified offset.final void
putMemoryIO
(long offset, MemoryIO value) Writes a pointer value to the memory area at the specified offset.final void
putNativeLong
(long offset, long value) Writes a native long integer value to the memory area at the specified offset.final void
putShort
(long offset, short value) Writes a 16 bit integer value to the memory area at the specified offset.void
putZeroTerminatedByteArray
(long offset, byte[] bytes, int off, int len) Writes a byte array to memory, and appends a zero terminatorfinal void
setMemory
(long offset, long size, byte value) Sets the contents of the memory area to the value.slice
(long offset) Creates a new MemoryIO pointing to a subset of the memory area of thisMemoryIO
.slice
(long offset, long size) Creates a new MemoryIO pointing to a subset of the memory area of thisMemoryIO
.
-
Field Details
-
IO
-
LONG_SIZE
protected static final int LONG_SIZE -
ADDRESS_SIZE
protected static final int ADDRESS_SIZE -
runtime
-
buffer
protected final byte[] buffer -
offset
protected final int offset -
length
protected final int length
-
-
Constructor Details
-
ArrayMemoryIO
-
ArrayMemoryIO
-
-
Method Details
-
array
public final byte[] array() -
arrayOffset
public final int arrayOffset()- Specified by:
arrayOffset
in classMemoryIO
-
arrayLength
public final int arrayLength()- Specified by:
arrayLength
in classMemoryIO
-
index
protected final int index(long off) -
order
Description copied from class:MemoryIO
Gets theByteOrder
thisMemoryIO
instance will read/write values to memory in. -
slice
Description copied from class:MemoryIO
Creates a new MemoryIO pointing to a subset of the memory area of thisMemoryIO
. -
slice
Description copied from class:MemoryIO
Creates a new MemoryIO pointing to a subset of the memory area of thisMemoryIO
. -
dup
Description copied from class:MemoryIO
Duplicates thisMemoryIO
, including its contents. -
asByteBuffer
Description copied from class:MemoryIO
Creates a view of this memory object as a java NIO byte buffer.- Specified by:
asByteBuffer
in classMemoryIO
- Returns:
- A ByteBuffer instance
-
getMemoryIO
Description copied from class:MemoryIO
Reads a pointer value at the specified offset within the memory area, and wraps it in an abstract memory accessor.- Specified by:
getMemoryIO
in classMemoryIO
- Parameters:
offset
- The offset within the memory area to read the value.- Returns:
- A
DirectMemoryIO
accessor that can be used to access the memory pointed to by the address.
-
putMemoryIO
Description copied from class:MemoryIO
Writes a pointer value to the memory area at the specified offset.- Specified by:
putMemoryIO
in classMemoryIO
- Parameters:
offset
- The offset within the memory area to write the value.value
- The pointer value to write to the memory location.
-
getByte
public final byte getByte(long offset) Description copied from class:MemoryIO
Reads an 8 bit integer value from the memory area. -
getShort
public final short getShort(long offset) Description copied from class:MemoryIO
Reads a 16 bit integer value from the memory area. -
getInt
public final int getInt(long offset) Description copied from class:MemoryIO
Reads a 32 bit integer value from the memory area. -
getLong
public final long getLong(long offset) Description copied from class:MemoryIO
Reads a 64 bit integer value from the memory area. -
getNativeLong
public final long getNativeLong(long offset) Description copied from class:MemoryIO
Reads a native long integer value from the memory area.A native long is 32bits on either ILP32 or LLP64 architectures, and 64 bits on an LP64 architecture.
This means that it will always read a 32bit value on Windows, but on Unix systems such as MacOS or Linux, it will read a 32bit value on 32bit systems, and a 64bit value on 64bit systems.
- Specified by:
getNativeLong
in classMemoryIO
- Parameters:
offset
- The offset within the memory area to read the value.- Returns:
- The native long value read from
offset
-
getFloat
public final float getFloat(long offset) Description copied from class:MemoryIO
Reads a float value from the memory area. -
getDouble
public final double getDouble(long offset) Description copied from class:MemoryIO
Reads a double value from the memory area. -
getAddress
public final long getAddress(long offset) Description copied from class:MemoryIO
Reads a pointer value at the specified offset within the memory area.- Specified by:
getAddress
in classMemoryIO
- Parameters:
offset
- The offset within the memory area to read the value.- Returns:
- A
long
value that represents the address.
-
putByte
public final void putByte(long offset, byte value) Description copied from class:MemoryIO
Writes an 8 bit integer value to the memory area at the specified offset. -
putShort
public final void putShort(long offset, short value) Description copied from class:MemoryIO
Writes a 16 bit integer value to the memory area at the specified offset. -
putInt
public final void putInt(long offset, int value) Description copied from class:MemoryIO
Writes a 32 bit integer value to the memory area at the specified offset. -
putLong
public final void putLong(long offset, long value) Description copied from class:MemoryIO
Writes a 64 bit integer value to the memory area at the specified offset. -
putNativeLong
public final void putNativeLong(long offset, long value) Description copied from class:MemoryIO
Writes a native long integer value to the memory area at the specified offset.- Specified by:
putNativeLong
in classMemoryIO
- Parameters:
offset
- The offset within the memory area to write the value.value
- The native long integer value to write to the memory location.
-
putFloat
public final void putFloat(long offset, float value) Description copied from class:MemoryIO
Writes a 32 bit float value to the memory area at the specified offset. -
putDouble
public final void putDouble(long offset, double value) Description copied from class:MemoryIO
Writes a 64 bit float value to the memory area at the specified offset. -
putAddress
public final void putAddress(long offset, long value) Description copied from class:MemoryIO
Writes a pointer value to the memory area at the specified offset.- Specified by:
putAddress
in classMemoryIO
- Parameters:
offset
- The offset within the memory area to write the value.value
- The pointer value to write to the memory location.
-
get
public final void get(long offset, byte[] dst, int off, int len) Description copied from class:MemoryIO
Reads an array of bytes from the memory area at the specified offset. -
put
public final void put(long offset, byte[] src, int off, int len) Description copied from class:MemoryIO
Writes an array of bytes to the memory area at the specified offset. -
get
public final void get(long offset, short[] dst, int off, int len) Description copied from class:MemoryIO
Reads an array of shorts from the memory area at the specified offset. -
put
public final void put(long offset, short[] src, int off, int len) Description copied from class:MemoryIO
Writes an array of shorts to the memory area at the specified offset. -
get
public final void get(long offset, int[] dst, int off, int len) Description copied from class:MemoryIO
Reads an array of ints from the memory area at the specified offset. -
put
public final void put(long offset, int[] src, int off, int len) Description copied from class:MemoryIO
Writes an array of ints to the memory area at the specified offset. -
get
public final void get(long offset, long[] dst, int off, int len) Description copied from class:MemoryIO
Reads an array of longs from the memory area at the specified offset. -
put
public final void put(long offset, long[] src, int off, int len) Description copied from class:MemoryIO
Writes an array of longs to the memory area at the specified offset. -
get
public final void get(long offset, float[] dst, int off, int len) Description copied from class:MemoryIO
Reads an array of floats from the memory area at the specified offset. -
put
public final void put(long offset, float[] src, int off, int len) Description copied from class:MemoryIO
Writes an array of floats to the memory area at the specified offset. -
get
public final void get(long offset, double[] dst, int off, int len) Description copied from class:MemoryIO
Reads an array of doubles from the memory area at the specified offset. -
put
public final void put(long offset, double[] src, int off, int len) Description copied from class:MemoryIO
Writes an array of doubles to the memory area at the specified offset. -
indexOf
public final int indexOf(long offset, byte value) Description copied from class:MemoryIO
Gets the first index within the memory area of a particular 8 bit value. -
indexOf
public final int indexOf(long offset, byte value, int maxlen) Description copied from class:MemoryIO
Gets the first index within the memory area of a particular 8 bit value. -
setMemory
public final void setMemory(long offset, long size, byte value) Description copied from class:MemoryIO
Sets the contents of the memory area to the value. -
getZeroTerminatedByteArray
public final byte[] getZeroTerminatedByteArray(long offset) Description copied from class:MemoryIO
Reads a zero terminated byte array (e.g. an ascii or utf-8 string)- Specified by:
getZeroTerminatedByteArray
in classMemoryIO
- Parameters:
offset
- The offset within the memory area of the start of the string.- Returns:
- A byte array containing a copy of the data.
-
getZeroTerminatedByteArray
public final byte[] getZeroTerminatedByteArray(long offset, int maxlen) Description copied from class:MemoryIO
Reads a zero terminated byte array (e.g. an ascii or utf-8 string)- Specified by:
getZeroTerminatedByteArray
in classMemoryIO
- Parameters:
offset
- The offset within the memory area of the start of the string.maxlen
- The maximum length to search for the zero byte terminator.- Returns:
- A byte array containing a copy of the data.
-
putZeroTerminatedByteArray
public void putZeroTerminatedByteArray(long offset, byte[] bytes, int off, int len) Description copied from class:MemoryIO
Writes a byte array to memory, and appends a zero terminator- Specified by:
putZeroTerminatedByteArray
in classMemoryIO
- Parameters:
offset
- The offset within the memory area of the start of the string.bytes
- The byte array to write to the memory.off
- The offset with the byte array to start copying.len
- The number of bytes of the byte array to write to the memory area. (not including zero byte)
-
clear
public final void clear()
-