Class BoundedMemoryIO

All Implemented Interfaces:
DelegatingMemoryIO

public final class BoundedMemoryIO extends AbstractMemoryIO implements DelegatingMemoryIO
  • Constructor Summary

    Constructors
    Constructor
    Description
    BoundedMemoryIO(Pointer parent, long offset, long size)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    final Object
    Returns the array that backs this pointer.
    final int
    Returns the length of this pointer's backing array that is used by this pointer.
    final int
    Returns the offset within this pointer's backing array of the first element.
    void
    checkBounds(long offset, long length)
    Checks that the memory region is within the bounds of this memory object
    boolean
     
    void
    get(long offset, byte[] dst, int off, int len)
    Bulk get method for multiple byte values.
    void
    get(long offset, double[] dst, int off, int len)
    Bulk get method for multiple double values.
    void
    get(long offset, float[] dst, int off, int len)
    Bulk get method for multiple float values.
    void
    get(long offset, int[] dst, int off, int len)
    Bulk get method for multiple int values.
    void
    get(long offset, long[] dst, int off, int len)
    Bulk get method for multiple long values.
    void
    get(long offset, short[] dst, int off, int len)
    Bulk get method for multiple short values.
    long
    getAddress(long offset)
    Reads a native memory address value at the given offset.
    byte
    getByte(long offset)
    Reads an byte (8 bit) value at the given offset.
     
    double
    getDouble(long offset)
    Reads a double (64 bit) value at the given offset.
    float
    getFloat(long offset)
    Reads a float (32 bit) value at the given offset.
    int
    getInt(long offset)
    Reads an int (32 bit) value at the given offset.
    long
    getLongLong(long offset)
    Reads a long (64 bit) value at the given offset.
    getPointer(long offset)
    Reads an Pointer value at the given offset.
    getPointer(long offset, long size)
    Reads an Pointer value at the given offset.
    short
    getShort(long offset)
    Reads a short (16 bit) value at the given offset.
    getString(long offset)
    Reads an String value at the given offset.
    getString(long offset, int maxLength, Charset cs)
    Reads a String value at the given offset, using a specific Charset
    final boolean
    Indicates whether this Pointer instance is backed by an array.
    int
     
    int
    indexOf(long offset, byte value)
    Returns the location of a byte value within the memory area represented by this Pointer.
    int
    indexOf(long offset, byte value, int maxlen)
    Returns the location of a byte value within the memory area represented by this Pointer.
    void
    put(long offset, byte[] dst, int off, int len)
    Bulk put method for multiple byte values.
    void
    put(long offset, double[] src, int off, int len)
    Bulk put method for multiple double values.
    void
    put(long offset, float[] src, int off, int len)
    Bulk put method for multiple float values.
    void
    put(long offset, int[] src, int off, int len)
    Bulk put method for multiple int values.
    void
    put(long offset, long[] src, int off, int len)
    Bulk put method for multiple long values.
    void
    put(long offset, short[] dst, int off, int len)
    Bulk put method for multiple short values.
    void
    putAddress(long offset, long value)
    Writes a native memory address value at the given offset.
    void
    putAddress(long offset, Address value)
    Writes a native memory address value at the given offset.
    void
    putByte(long offset, byte value)
    Writes a byte (8 bit) value at the given offset.
    void
    putDouble(long offset, double value)
    Writes a double (64 bit, double precision) value at the given offset.
    void
    putFloat(long offset, float value)
    Writes a float (32 bit, single precision) value at the given offset.
    void
    putInt(long offset, int value)
    Writes an int (32 bit) value at the given offset.
    void
    putLongLong(long offset, long value)
    Writes a long (64 bit) value at the given offset.
    void
    putPointer(long offset, Pointer value)
    Writes a Pointer value at the given offset.
    void
    putShort(long offset, short value)
    Writes a short (16 bit) value at the given offset.
    void
    putString(long offset, String string, int maxLength, Charset cs)
    Writes a String value at the given offset, using a specific Charset
    void
    setMemory(long offset, long size, byte value)
    Sets the value of each byte in the memory area represented by this Pointer.
    long
    Gets the size of this memory object in bytes (optional operation).
    void
    transferFrom(long offset, Pointer other, long otherOffset, long count)
    Bulk data transfer from one memory location to another.
    void
    transferTo(long offset, Pointer other, long otherOffset, long count)
    Bulk data transfer from one memory location to another.

    Methods inherited from class jnr.ffi.provider.AbstractMemoryIO

    checkBounds, getInt, getLong, getNativeLong, putInt, putLong, putNativeLong, slice, slice

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • BoundedMemoryIO

      public BoundedMemoryIO(Pointer parent, long offset, long size)
  • Method Details

    • size

      public long size()
      Description copied from class: Pointer
      Gets the size of this memory object in bytes (optional operation).
      Specified by:
      size in class Pointer
      Returns:
      the size of the memory area this Pointer points to. If the size is unknown, Long.MAX_VALUE is returned}.
    • hasArray

      public final boolean hasArray()
      Description copied from class: Pointer
      Indicates whether this Pointer instance is backed by an array.
      Specified by:
      hasArray in class Pointer
      Returns:
      true if, and only if, this memory object is backed by an array
    • array

      public final Object array()
      Description copied from class: Pointer
      Returns the array that backs this pointer.
      Specified by:
      array in class Pointer
      Returns:
      The array that backs this pointer.
    • arrayOffset

      public final int arrayOffset()
      Description copied from class: Pointer
      Returns the offset within this pointer's backing array of the first element.
      Specified by:
      arrayOffset in class Pointer
      Returns:
      The offset of the first element on the backing array
    • arrayLength

      public final int arrayLength()
      Description copied from class: Pointer
      Returns the length of this pointer's backing array that is used by this pointer.
      Specified by:
      arrayLength in class Pointer
      Returns:
      The length of the backing array used
    • checkBounds

      public void checkBounds(long offset, long length)
      Description copied from class: Pointer
      Checks that the memory region is within the bounds of this memory object
      Overrides:
      checkBounds in class AbstractMemoryIO
      Parameters:
      offset - the starting point within this memory region.
      length - the length of the memory region in bytes
    • getDelegatedMemoryIO

      public Pointer getDelegatedMemoryIO()
      Specified by:
      getDelegatedMemoryIO in interface DelegatingMemoryIO
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • getByte

      public byte getByte(long offset)
      Description copied from class: Pointer
      Reads an byte (8 bit) value at the given offset.
      Specified by:
      getByte in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be read.
      Returns:
      the byte value at the offset.
    • getShort

      public short getShort(long offset)
      Description copied from class: Pointer
      Reads a short (16 bit) value at the given offset.
      Specified by:
      getShort in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be read.
      Returns:
      the short value at the offset.
    • getInt

      public int getInt(long offset)
      Description copied from class: Pointer
      Reads an int (32 bit) value at the given offset.
      Specified by:
      getInt in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be read.
      Returns:
      the int value contained in the memory at the offset.
    • getLongLong

      public long getLongLong(long offset)
      Description copied from class: Pointer
      Reads a long (64 bit) value at the given offset.
      Specified by:
      getLongLong in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be read.
      Returns:
      the long value at the offset.
    • getFloat

      public float getFloat(long offset)
      Description copied from class: Pointer
      Reads a float (32 bit) value at the given offset.
      Specified by:
      getFloat in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be read.
      Returns:
      the float value at the offset.
    • getDouble

      public double getDouble(long offset)
      Description copied from class: Pointer
      Reads a double (64 bit) value at the given offset.
      Specified by:
      getDouble in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be read.
      Returns:
      the double value at the offset.
    • getPointer

      public Pointer getPointer(long offset)
      Description copied from class: Pointer
      Reads an Pointer value at the given offset.
      Specified by:
      getPointer in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the value will be read.
      Returns:
      the Pointer value read from memory.
    • getPointer

      public Pointer getPointer(long offset, long size)
      Description copied from class: Pointer
      Reads an Pointer value at the given offset.
      Specified by:
      getPointer in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the value will be read.
      size - the maximum size of the memory location the returned Pointer represents.
      Returns:
      the Pointer value read from memory.
    • putByte

      public void putByte(long offset, byte value)
      Description copied from class: Pointer
      Writes a byte (8 bit) value at the given offset.
      Specified by:
      putByte in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be written.
      value - the byte value to be written.
    • putShort

      public void putShort(long offset, short value)
      Description copied from class: Pointer
      Writes a short (16 bit) value at the given offset.
      Specified by:
      putShort in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be written.
      value - the short value to be written.
    • putInt

      public void putInt(long offset, int value)
      Description copied from class: Pointer
      Writes an int (32 bit) value at the given offset.
      Specified by:
      putInt in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be written.
      value - the int value to be written.
    • putLongLong

      public void putLongLong(long offset, long value)
      Description copied from class: Pointer
      Writes a long (64 bit) value at the given offset.
      Specified by:
      putLongLong in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be written.
      value - the long value to be written.
    • putFloat

      public void putFloat(long offset, float value)
      Description copied from class: Pointer
      Writes a float (32 bit, single precision) value at the given offset.
      Specified by:
      putFloat in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be written.
      value - the float value to be written.
    • putDouble

      public void putDouble(long offset, double value)
      Description copied from class: Pointer
      Writes a double (64 bit, double precision) value at the given offset.
      Specified by:
      putDouble in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be written.
      value - the double value to be written.
    • putPointer

      public void putPointer(long offset, Pointer value)
      Description copied from class: Pointer
      Writes a Pointer value at the given offset.
      Specified by:
      putPointer in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be written.
      value - the Pointer value to be written to memory.
    • get

      public void get(long offset, byte[] dst, int off, int len)
      Description copied from class: Pointer
      Bulk get method for multiple byte values. This method reads multiple byte values from consecutive addresses, beginning at the given offset, and stores them in an array.
      Specified by:
      get in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the first value will be read.
      dst - the array into which values are to be stored.
      off - the start index in the dst array to begin storing the values.
      len - the number of values to be read.
    • put

      public void put(long offset, byte[] dst, int off, int len)
      Description copied from class: Pointer
      Bulk put method for multiple byte values. This method writes multiple byte values to consecutive addresses, beginning at the given offset, from an array.
      Specified by:
      put in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
      dst - the array to get values from.
      off - the start index in the dst array to begin reading values.
      len - the number of values to be written.
    • get

      public void get(long offset, short[] dst, int off, int len)
      Description copied from class: Pointer
      Bulk get method for multiple short values. This method reads multiple short values from consecutive addresses, beginning at the given offset, and stores them in an array.
      Specified by:
      get in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the first value will be read.
      dst - The array into which values are to be stored.
      off - the start index in the dst array to begin storing the values.
      len - the number of values to be read.
    • put

      public void put(long offset, short[] dst, int off, int len)
      Description copied from class: Pointer
      Bulk put method for multiple short values. This method writes multiple short values to consecutive addresses, beginning at the given offset, from an array.
      Specified by:
      put in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
      dst - the array to get values from.
      off - the start index in the dst array to begin reading values.
      len - the number of values to be written.
    • get

      public void get(long offset, int[] dst, int off, int len)
      Description copied from class: Pointer
      Bulk get method for multiple int values. This method reads multiple int values from consecutive addresses, beginning at the given offset, and stores them in an array.
      Specified by:
      get in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the first value will be read.
      dst - The array into which values are to be stored.
      off - the start index in the dst array to begin storing the values.
      len - the number of values to be read.
    • put

      public void put(long offset, int[] src, int off, int len)
      Description copied from class: Pointer
      Bulk put method for multiple int values. This method writes multiple int values to consecutive addresses, beginning at the given offset, from an array.
      Specified by:
      put in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
      src - the array to get values from.
      off - the start index in the dst array to begin reading values.
      len - the number of values to be written.
    • get

      public void get(long offset, long[] dst, int off, int len)
      Description copied from class: Pointer
      Bulk get method for multiple long values. This method reads multiple long values from consecutive addresses, beginning at the given offset, and stores them in an array.
      Specified by:
      get in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the first value will be read.
      dst - The array into which values are to be stored.
      off - the start index in the dst array to begin storing the values.
      len - the number of values to be read.
    • put

      public void put(long offset, long[] src, int off, int len)
      Description copied from class: Pointer
      Bulk put method for multiple long values. This method writes multiple long values to consecutive addresses, beginning at the given offset, from an array.
      Specified by:
      put in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
      src - the array to get values from.
      off - the start index in the dst array to begin reading values.
      len - the number of values to be written.
    • get

      public void get(long offset, float[] dst, int off, int len)
      Description copied from class: Pointer
      Bulk get method for multiple float values. This method reads multiple float values from consecutive addresses, beginning at the given offset, and stores them in an array.
      Specified by:
      get in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the first value will be read.
      dst - The array into which values are to be stored.
      off - the start index in the dst array to begin storing the values.
      len - the number of values to be read.
    • put

      public void put(long offset, float[] src, int off, int len)
      Description copied from class: Pointer
      Bulk put method for multiple float values. This method writes multiple float values to consecutive addresses, beginning at the given offset, from an array.
      Specified by:
      put in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
      src - the array to get values from.
      off - the start index in the dst array to begin reading values.
      len - the number of values to be written.
    • get

      public void get(long offset, double[] dst, int off, int len)
      Description copied from class: Pointer
      Bulk get method for multiple double values. This method reads multiple double values from consecutive addresses, beginning at the given offset, and stores them in an array.
      Specified by:
      get in class Pointer
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the first value will be read.
      dst - The array into which values are to be stored.
      off - the start index in the dst array to begin storing the values.
      len - the number of values to be read.
    • put

      public void put(long offset, double[] src, int off, int len)
      Description copied from class: Pointer
      Bulk put method for multiple double values. This method writes multiple double values to consecutive addresses, beginning at the given offset, from an array.
      Specified by:
      put in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
      src - the array to get values from.
      off - the start index in the dst array to begin reading values.
      len - the number of values to be written.
    • getAddress

      public long getAddress(long offset)
      Description copied from class: Pointer
      Reads a native memory address value at the given offset.

      A native address can be either 32 or 64 bits in size, depending on the cpu architecture.

      Overrides:
      getAddress in class AbstractMemoryIO
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be read.
      Returns:
      the native address value contained in the memory at the offset
      See Also:
    • getString

      public String getString(long offset, int maxLength, Charset cs)
      Description copied from class: Pointer
      Reads a String value at the given offset, using a specific Charset
      Specified by:
      getString in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the value will be read.
      maxLength - the maximum size of memory to search for a NUL byte.
      cs - the Charset to use to decode the string.
      Returns:
      the String value read from memory.
    • getString

      public String getString(long offset)
      Description copied from class: Pointer
      Reads an String value at the given offset.
      Specified by:
      getString in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the value will be read.
      Returns:
      the String value read from memory.
    • putAddress

      public void putAddress(long offset, long value)
      Description copied from class: Pointer
      Writes a native memory address value at the given offset.

      A native address can be either 32 or 64 bits in size, depending on the cpu architecture.

      Overrides:
      putAddress in class AbstractMemoryIO
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be written.
      value - The native address value to be written.
      See Also:
    • putAddress

      public void putAddress(long offset, Address value)
      Description copied from class: Pointer
      Writes a native memory address value at the given offset.

      A native address can be either 32 or 64 bits in size, depending on the cpu architecture.

      Overrides:
      putAddress in class AbstractMemoryIO
      Parameters:
      offset - The offset from the start of the memory this Pointer represents at which the value will be written.
      value - The native address value to be written.
      See Also:
    • putString

      public void putString(long offset, String string, int maxLength, Charset cs)
      Description copied from class: Pointer
      Writes a String value at the given offset, using a specific Charset
      Specified by:
      putString in class Pointer
      Parameters:
      offset - the offset from the start of the memory this Pointer represents at which the value will be written.
      string - the string to be written.
      maxLength - the maximum size of memory to use to store the string.
      cs - the Charset to use to decode the string.
    • indexOf

      public int indexOf(long offset, byte value)
      Description copied from class: Pointer
      Returns the location of a byte value within the memory area represented by this Pointer.
      Overrides:
      indexOf in class AbstractMemoryIO
      Parameters:
      offset - the offset from the start of the memory location this Pointer represents to begin searching.
      value - the byte value to locate.
      Returns:
      the offset from the start of the search area (i.e. relative to the offset parameter), or -1 if not found.
    • indexOf

      public int indexOf(long offset, byte value, int maxlen)
      Description copied from class: Pointer
      Returns the location of a byte value within the memory area represented by this Pointer.
      Specified by:
      indexOf in class Pointer
      Parameters:
      offset - the offset from the start of the memory location this Pointer represents to begin searching.
      value - the byte value to locate.
      maxlen - the maximum number of bytes to search for the desired value.
      Returns:
      the offset from the start of the search area (i.e. relative to the offset parameter), or -1 if not found.
    • setMemory

      public void setMemory(long offset, long size, byte value)
      Description copied from class: Pointer
      Sets the value of each byte in the memory area represented by this Pointer. to a specified value.
      Specified by:
      setMemory in class Pointer
      Parameters:
      offset - the offset from the start of the memory location this Pointer represents to begin writing to.
      size - the number of bytes to set to the value.
      value - the value to set each byte to.
    • transferFrom

      public void transferFrom(long offset, Pointer other, long otherOffset, long count)
      Description copied from class: Pointer
      Bulk data transfer from one memory location to another.
      Overrides:
      transferFrom in class AbstractMemoryIO
      Parameters:
      offset - the offset from the start of the memory location this Pointer represents to begin copying to.
      other - the destination memory location to transfer data from.
      otherOffset - the offset from the start of the memory location the destination Pointer represents to begin copying from.
      count - the number of bytes to transfer.
    • transferTo

      public void transferTo(long offset, Pointer other, long otherOffset, long count)
      Description copied from class: Pointer
      Bulk data transfer from one memory location to another.
      Overrides:
      transferTo in class AbstractMemoryIO
      Parameters:
      offset - the offset from the start of the memory location this Pointer represents to begin copying from.
      other - the destination memory location to transfer data to.
      otherOffset - the offset from the start of the memory location the destination Pointer represents to begin copying to.
      count - the number of bytes to transfer.