HeapMemory (Jython API documentation)
Date: 2024-08-18

org.python.modules.jffi

## Class HeapMemory

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

- All Implemented Interfaces:
    Memory

      public final class HeapMemory
      extends java.lang.Object
      implements Memory

- - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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