Package org.python.modules.jffi

# Class HeapMemory

java.lang.Object
org.python.modules.jffi.HeapMemory

All Implemented Interfaces:
  `Memory`

public final class HeapMemory extends Object implements Memory

## Constructor Summary

Constructors
Constructor
Description
`HeapMemory(byte[] buffer, int offset, int length)`
`HeapMemory(int size)`

## Method Summary

Modifier and Type
Method
Description
`final byte[]`
`array()`
`final int`
`arrayLength()`
`final int`
`arrayOffset()`
`final void`
`clear()`
`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 DirectMemory`
`getMemory(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. an ascii or utf-8 string)
`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 boolean`
`isDirect()`
Checks if the memory area is a native memory pointer.
`final boolean`
`isNull()`
Checks if the memory area is NULL.
`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`
`putAddress(long offset, Memory 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`
`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 terminator
`final void`
`setMemory(long offset, long size, byte value)`
Sets the contents of the memory area to the value.
`HeapMemory`
`slice(long offset)`
Creates a new MemoryIO pointing to a subset of the memory area of this `MemoryIO`.

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### HeapMemory

public HeapMemory(byte[] buffer, int offset, int length)

### HeapMemory

public HeapMemory(int size)

## Method Details

### array

public final byte[] array()

### arrayOffset

public final int arrayOffset()

### arrayLength

public final int arrayLength()

### isNull

public final boolean isNull()
Description copied from interface: `Memory`
Checks if the memory area is NULL.

Specified by:
  `isNull` in interface `Memory`
Returns:
  `true` if the memory area is invalid.

### isDirect

public final boolean isDirect()
Description copied from interface: `Memory`
Checks if the memory area is a native memory pointer.

Specified by:
  `isDirect` in interface `Memory`
Returns:
  `true` if the memory area is a native pointer.

### slice

public HeapMemory slice(long offset)
Description copied from interface: `Memory`
Creates a new MemoryIO pointing to a subset of the memory area of this `MemoryIO`.

Specified by:
  `slice` in interface `Memory`
Parameters:
  `offset` - The offset within the existing memory area to start the new `MemoryIO` at.
Returns:
  A `MemoryIO` instance.

### getMemory

public final DirectMemory getMemory(long offset)
Description copied from interface: `Memory`
Reads a pointer value at the specified offset within the memory area, and wraps it in an abstract memory accessor.

Specified by:
  `getMemory` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the value.
Returns:
  A `DirectMemory` accessor that can be used to access the memory pointed to by the address.

### putAddress

public final void putAddress(long offset, Memory value)
Description copied from interface: `Memory`
Writes a pointer value to the memory area at the specified offset.

Specified by:
  `putAddress` in interface `Memory`
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 interface: `Memory`
Reads an 8 bit integer value from the memory area.

Specified by:
  `getByte` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the value.
Returns:
  The 8 bit integer value read from `offset`

### getShort

public final short getShort(long offset)
Description copied from interface: `Memory`
Reads a 16 bit integer value from the memory area.

Specified by:
  `getShort` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the value.
Returns:
  The 16 bit integer value read from `offset`

### getInt

public final int getInt(long offset)
Description copied from interface: `Memory`
Reads a 32 bit integer value from the memory area.

Specified by:
  `getInt` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the value.
Returns:
  The 32 bit integer value read from `offset`

### getLong

public final long getLong(long offset)
Description copied from interface: `Memory`
Reads a 64 bit integer value from the memory area.

Specified by:
  `getLong` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the value.
Returns:
  The 64 bit integer value read from `offset`

### getNativeLong

public final long getNativeLong(long offset)
Description copied from interface: `Memory`
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 interface `Memory`
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 interface: `Memory`
Reads a float value from the memory area.

Specified by:
  `getFloat` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the value.
Returns:
  The float value read from `offset`

### getDouble

public final double getDouble(long offset)
Description copied from interface: `Memory`
Reads a double value from the memory area.

Specified by:
  `getDouble` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the value.
Returns:
  The double value read from `offset`

### getAddress

public final long getAddress(long offset)
Description copied from interface: `Memory`
Reads a pointer value at the specified offset within the memory area.

Specified by:
  `getAddress` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the value.
Returns:
  A `long` value that represents the address.

### getZeroTerminatedByteArray

public final byte[] getZeroTerminatedByteArray(long offset)
Description copied from interface: `Memory`
Reads a zero terminated byte array (e.g. an ascii or utf-8 string)

Specified by:
  `getZeroTerminatedByteArray` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area of the start of the string.
Returns:
  A byte array containing a copy of the data.

### putByte

public final void putByte(long offset, byte value)
Description copied from interface: `Memory`
Writes an 8 bit integer value to the memory area at the specified offset.

Specified by:
  `putByte` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to write the value.
  `value` - The 8 bit integer value to write to the memory location.

### putShort

public final void putShort(long offset, short value)
Description copied from interface: `Memory`
Writes a 16 bit integer value to the memory area at the specified offset.

Specified by:
  `putShort` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to write the value.
  `value` - The 16 bit integer value to write to the memory location.

### putInt

public final void putInt(long offset, int value)
Description copied from interface: `Memory`
Writes a 32 bit integer value to the memory area at the specified offset.

Specified by:
  `putInt` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to write the value.
  `value` - The 32 bit integer value to write to the memory location.

### putLong

public final void putLong(long offset, long value)
Description copied from interface: `Memory`
Writes a 64 bit integer value to the memory area at the specified offset.

Specified by:
  `putLong` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to write the value.
  `value` - The 64 bit integer value to write to the memory location.

### putNativeLong

public final void putNativeLong(long offset, long value)
Description copied from interface: `Memory`
Writes a native long integer value to the memory area at the specified offset.

Specified by:
  `putNativeLong` in interface `Memory`
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 interface: `Memory`
Writes a 32 bit float value to the memory area at the specified offset.

Specified by:
  `putFloat` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to write the value.
  `value` - The 32 bit float value to write to the memory location.

### putDouble

public final void putDouble(long offset, double value)
Description copied from interface: `Memory`
Writes a 64 bit float value to the memory area at the specified offset.

Specified by:
  `putDouble` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to write the value.
  `value` - The 64 bit float value to write to the memory location.

### putAddress

public final void putAddress(long offset, long value)
Description copied from interface: `Memory`
Writes a pointer value to the memory area at the specified offset.

Specified by:
  `putAddress` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to write the value.
  `value` - The pointer value to write to the memory location.

### putZeroTerminatedByteArray

public void putZeroTerminatedByteArray(long offset, byte[] bytes, int off, int len)
Description copied from interface: `Memory`
Writes a byte array to memory, and appends a zero terminator

Specified by:
  `putZeroTerminatedByteArray` in interface `Memory`
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)

### get

public final void get(long offset, byte[] dst, int off, int len)
Description copied from interface: `Memory`
Reads an array of bytes from the memory area at the specified offset.

Specified by:
  `get` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the bytes.
  `dst` - The output byte array to place the data.
  `off` - The offset within the byte array to start copying.
  `len` - The length of data to read.

### put

public final void put(long offset, byte[] src, int off, int len)
Description copied from interface: `Memory`
Writes an array of bytes to the memory area at the specified offset.

Specified by:
  `put` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to start writing the bytes.
  `src` - The byte array to write to the memory area.
  `off` - The offset within the byte array to start copying.
  `len` - The length of data to write.

### get

public final void get(long offset, short[] dst, int off, int len)
Description copied from interface: `Memory`
Reads an array of shorts from the memory area at the specified offset.

Specified by:
  `get` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the shorts.
  `dst` - The output array to place the data in.
  `off` - The offset within the array to start copying.
  `len` - The number of shorts to read.

### put

public final void put(long offset, short[] src, int off, int len)
Description copied from interface: `Memory`
Writes an array of shorts to the memory area at the specified offset.

Specified by:
  `put` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to start writing the shorts.
  `src` - The array to write to the memory area.
  `off` - The offset within the array to start copying.
  `len` - The number of shorts to write.

### get

public final void get(long offset, int[] dst, int off, int len)
Description copied from interface: `Memory`
Reads an array of ints from the memory area at the specified offset.

Specified by:
  `get` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the ints.
  `dst` - The output array to place the data in.
  `off` - The offset within the array to start copying.
  `len` - The number of ints to read.

### put

public final void put(long offset, int[] src, int off, int len)
Description copied from interface: `Memory`
Writes an array of ints to the memory area at the specified offset.

Specified by:
  `put` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to start writing the ints.
  `src` - The array to write to the memory area.
  `off` - The offset within the array to start copying.
  `len` - The number of ints to write.

### get

public final void get(long offset, long[] dst, int off, int len)
Description copied from interface: `Memory`
Reads an array of longs from the memory area at the specified offset.

Specified by:
  `get` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the longs.
  `dst` - The output array to place the data in.
  `off` - The offset within the array to start copying.
  `len` - The number of longs to read.

### put

public final void put(long offset, long[] src, int off, int len)
Description copied from interface: `Memory`
Writes an array of longs to the memory area at the specified offset.

Specified by:
  `put` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to start writing the longs.
  `src` - The array to write to the memory area.
  `off` - The offset within the array to start copying.
  `len` - The number of longs to write.

### get

public final void get(long offset, float[] dst, int off, int len)
Description copied from interface: `Memory`
Reads an array of floats from the memory area at the specified offset.

Specified by:
  `get` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the floats.
  `dst` - The output array to place the data in.
  `off` - The offset within the array to start copying.
  `len` - The number of floats to read.

### put

public final void put(long offset, float[] src, int off, int len)
Description copied from interface: `Memory`
Writes an array of floats to the memory area at the specified offset.

Specified by:
  `put` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to start writing the floats.
  `src` - The array to write to the memory area.
  `off` - The offset within the array to start copying.
  `len` - The number of floats to write.

### get

public final void get(long offset, double[] dst, int off, int len)
Description copied from interface: `Memory`
Reads an array of doubles from the memory area at the specified offset.

Specified by:
  `get` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to read the doubles.
  `dst` - The output array to place the data in.
  `off` - The offset within the array to start copying.
  `len` - The number of doubles to read.

### put

public final void put(long offset, double[] src, int off, int len)
Description copied from interface: `Memory`
Writes an array of doubles to the memory area at the specified offset.

Specified by:
  `put` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to start writing the doubles.
  `src` - The array to write to the memory area.
  `off` - The offset within the array to start copying.
  `len` - The number of doubles to write.

### indexOf

public final int indexOf(long offset, byte value)
Description copied from interface: `Memory`
Gets the first index within the memory area of a particular 8 bit value.

Specified by:
  `indexOf` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to start searching.
  `value` - The value to search for.
Returns:
  The index of the value, relative to offset.

### indexOf

public final int indexOf(long offset, byte value, int maxlen)
Description copied from interface: `Memory`
Gets the first index within the memory area of a particular 8 bit value.

Specified by:
  `indexOf` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to start searching.
  `value` - The value to search for.
Returns:
  The index of the value, relative to offset.

### setMemory

public final void setMemory(long offset, long size, byte value)
Description copied from interface: `Memory`
Sets the contents of the memory area to the value.

Specified by:
  `setMemory` in interface `Memory`
Parameters:
  `offset` - The offset within the memory area to start writing.
  `size` - The number of bytes to set to the value.
  `value` - The value to set each byte to.

### clear

public final void clear()