Class HeapMemory

  • All Implemented Interfaces:
    Memory

    public final class HeapMemory
    extends java.lang.Object
    implements Memory
    • Constructor Summary

      Constructors 
      Constructor Description
      HeapMemory​(byte[] buffer, int offset, int length)  
      HeapMemory​(int size)  
    • Method Summary

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