## 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
`HeapMemory(byte[] buffer, int offset, int length)`
`HeapMemory(int size)`

Method Summary
`byte[]` `array()`
`int` `arrayLength()`
`int` `arrayOffset()`
`void` `clear()`
`void` `get(long offset, byte[] dst, int off, int len)` Reads an array of bytes from the memory area at the specified offset.
`void` `get(long offset, double[] dst, int off, int len)` Reads an array of doubles from the memory area at the specified offset.
`void` `get(long offset, float[] dst, int off, int len)` Reads an array of floats from the memory area at the specified offset.
`void` `get(long offset, int[] dst, int off, int len)` Reads an array of ints from the memory area at the specified offset.
`void` `get(long offset, long[] dst, int off, int len)` Reads an array of longs from the memory area at the specified offset.
`void` `get(long offset, short[] dst, int off, int len)` Reads an array of shorts from the memory area at the specified offset.
`long` `getAddress(long offset)` Reads a pointer value at the specified offset within the memory area.
`byte` `getByte(long offset)` Reads an 8 bit integer value from the memory area.
`double` `getDouble(long offset)` Reads a double value from the memory area.
`float` `getFloat(long offset)` Reads a float value from the memory area.
`int` `getInt(long offset)` Reads a 32 bit integer value from the memory area.
`long` `getLong(long offset)` Reads a 64 bit integer value from the memory area.
`DirectMemory` `getMemory(long offset)` Reads a pointer value at the specified offset within the memory area, and wraps it in an abstract memory accessor.
`long` `getNativeLong(long offset)` Reads a native long integer value from the memory area.
`short` `getShort(long offset)` Reads a 16 bit integer value from the memory area.
`byte[]` `getZeroTerminatedByteArray(long offset)` Reads a zero terminated byte array (e.g. an ascii or utf-8 string)
`int` `indexOf(long offset, byte value)` Gets the first index within the memory area of a particular 8 bit value.
`int` `indexOf(long offset, byte value, int maxlen)` Gets the first index within the memory area of a particular 8 bit value.
`boolean` `isDirect()` Checks if the memory area is a native memory pointer.
`boolean` `isNull()` Checks if the memory area is NULL.
`void` `put(long offset, byte[] src, int off, int len)` Writes an array of bytes to the memory area at the specified offset.
`void` `put(long offset, double[] src, int off, int len)` Writes an array of doubles to the memory area at the specified offset.
`void` `put(long offset, float[] src, int off, int len)` Writes an array of floats to the memory area at the specified offset.
`void` `put(long offset, int[] src, int off, int len)` Writes an array of ints to the memory area at the specified offset.
`void` `put(long offset, long[] src, int off, int len)` Writes an array of longs to the memory area at the specified offset.
`void` `put(long offset, short[] src, int off, int len)` Writes an array of shorts to the memory area at the specified offset.
`void` `putAddress(long offset, long value)` Writes a pointer value to the memory area at the specified offset.
`void` `putAddress(long offset, Memory value)` Writes a pointer value to the memory area at the specified offset.
`void` `putByte(long offset, byte value)` Writes an 8 bit integer value to the memory area at the specified offset.
`void` `putDouble(long offset, double value)` Writes a 64 bit float value to the memory area at the specified offset.
`void` `putFloat(long offset, float value)` Writes a 32 bit float value to the memory area at the specified offset.
`void` `putInt(long offset, int value)` Writes a 32 bit integer value to the memory area at the specified offset.
`void` `putLong(long offset, long value)` Writes a 64 bit integer value to the memory area at the specified offset.
`void` `putNativeLong(long offset, long value)` Writes a native long integer value to the memory area at the specified offset.
`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
`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 Detail

### HeapMemory

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

### HeapMemory

    public HeapMemory(int size)

Method Detail

### 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()

Jython homepage