Class HeapInvocationBuffer

java.lang.Object
com.kenai.jffi.InvocationBuffer
com.kenai.jffi.HeapInvocationBuffer

public final class HeapInvocationBuffer extends InvocationBuffer
An implementation of InvocationBuffer that packs its parameters onto a java heap allocated buffer.
  • Field Details

    • PARAM_SIZE

      private static final int PARAM_SIZE
      See Also:
    • callContext

      private final CallContext callContext
    • buffer

      private final byte[] buffer
    • objectBuffer

      private ObjectBuffer objectBuffer
    • paramOffset

      private int paramOffset
    • paramIndex

      private int paramIndex
  • Constructor Details

    • HeapInvocationBuffer

      public HeapInvocationBuffer(Function function)
      Creates a new instance of HeapInvocationBuffer.
      Parameters:
      function - The function that this buffer is going to be used with.
    • HeapInvocationBuffer

      public HeapInvocationBuffer(CallContext callContext)
      Creates a new instance of HeapInvocationBuffer.
      Parameters:
      callContext - The CallContext describing how the function should be invoked
    • HeapInvocationBuffer

      public HeapInvocationBuffer(CallContext context, int objectCount)
      Creates a new instance of HeapInvocationBuffer.
      Parameters:
      context - The CallContext describing how the function should be invoked
  • Method Details

    • array

      byte[] array()
      Gets the backing array of this InvocationBuffer
      Returns:
      The backing array for this buffer.
    • objectBuffer

      ObjectBuffer objectBuffer()
      Gets the object buffer used to store java heap array parameters
      Returns:
      An ObjectBuffer
    • putByte

      public final void putByte(int value)
      Description copied from class: InvocationBuffer
      Adds an 8 bit integer parameter.
      Specified by:
      putByte in class InvocationBuffer
      Parameters:
      value - An 8 bit integer value to use as the parameter.
    • putShort

      public final void putShort(int value)
      Description copied from class: InvocationBuffer
      Adds a 16 bit integer parameter.
      Specified by:
      putShort in class InvocationBuffer
      Parameters:
      value - A 16 bit integer value to use as the parameter.
    • putInt

      public final void putInt(int value)
      Description copied from class: InvocationBuffer
      Adds a 32 bit integer parameter.
      Specified by:
      putInt in class InvocationBuffer
      Parameters:
      value - A 32 bit integer value to use as the parameter.
    • putLong

      public final void putLong(long value)
      Description copied from class: InvocationBuffer
      Adds a 64 bit integer parameter.
      Specified by:
      putLong in class InvocationBuffer
      Parameters:
      value - A 64 bit integer value to use as the parameter.
    • putFloat

      public final void putFloat(float value)
      Description copied from class: InvocationBuffer
      Adds a 32 bit floating point parameter.
      Specified by:
      putFloat in class InvocationBuffer
      Parameters:
      value - A 32 bit floating point value to use as the parameter.
    • putDouble

      public final void putDouble(double value)
      Description copied from class: InvocationBuffer
      Adds a 64 bit floating point parameter.
      Specified by:
      putDouble in class InvocationBuffer
      Parameters:
      value - A 64 bit floating point value to use as the parameter.
    • putLongDouble

      public final void putLongDouble(double value)
    • putLongDouble

      public final void putLongDouble(BigDecimal value)
    • putAddress

      public final void putAddress(long value)
      Description copied from class: InvocationBuffer
      Adds a native address parameter.
      Specified by:
      putAddress in class InvocationBuffer
      Parameters:
      value - A native address value to use as the parameter.
    • getObjectBuffer

      private final ObjectBuffer getObjectBuffer()
    • putArray

      public final void putArray(byte[] array, int offset, int length, int flags)
      Description copied from class: InvocationBuffer
      Adds a java byte array as a pointer parameter.
      Specified by:
      putArray in class InvocationBuffer
      Parameters:
      array - The java array to use as the pointer parameter.
      offset - The offset from the start of the array.
      length - The length of the array to use.
      flags - The flags to use (IN, OUT)
    • putArray

      public final void putArray(short[] array, int offset, int length, int flags)
      Description copied from class: InvocationBuffer
      Adds a java short array as a pointer parameter.
      Specified by:
      putArray in class InvocationBuffer
      Parameters:
      array - The java array to use as the pointer parameter.
      offset - The offset from the start of the array.
      length - The length of the array to use.
      flags - The flags to use (IN, OUT)
    • putArray

      public final void putArray(int[] array, int offset, int length, int flags)
      Description copied from class: InvocationBuffer
      Adds a java int array as a pointer parameter.
      Specified by:
      putArray in class InvocationBuffer
      Parameters:
      array - The java array to use as the pointer parameter.
      offset - The offset from the start of the array.
      length - The length of the array to use.
      flags - The flags to use (IN, OUT)
    • putArray

      public final void putArray(long[] array, int offset, int length, int flags)
      Description copied from class: InvocationBuffer
      Adds a java long array as a pointer parameter.
      Specified by:
      putArray in class InvocationBuffer
      Parameters:
      array - The java array to use as the pointer parameter.
      offset - The offset from the start of the array.
      length - The length of the array to use.
      flags - The flags to use (IN, OUT)
    • putArray

      public final void putArray(float[] array, int offset, int length, int flags)
      Description copied from class: InvocationBuffer
      Adds a java float array as a pointer parameter.
      Specified by:
      putArray in class InvocationBuffer
      Parameters:
      array - The java array to use as the pointer parameter.
      offset - The offset from the start of the array.
      length - The length of the array to use.
      flags - The flags to use (IN, OUT)
    • putArray

      public final void putArray(double[] array, int offset, int length, int flags)
      Description copied from class: InvocationBuffer
      Adds a java double array as a pointer parameter.
      Specified by:
      putArray in class InvocationBuffer
      Parameters:
      array - The java array to use as the pointer parameter.
      offset - The offset from the start of the array.
      length - The length of the array to use.
      flags - The flags to use (IN, OUT)
    • putDirectBuffer

      public final void putDirectBuffer(Buffer value, int offset, int length)
      Description copied from class: InvocationBuffer
      Adds a java direct buffer as a pointer parameter.
      Specified by:
      putDirectBuffer in class InvocationBuffer
      Parameters:
      value - The buffer to use as a pointer argument.
      offset - An offset to add to the buffer native address.
      length - The length of the buffer to use.
    • putStruct

      public final void putStruct(byte[] struct, int offset)
      Description copied from class: InvocationBuffer
      Adds a struct or union as a parameter. This passes the struct or union by value, not by reference.
      Specified by:
      putStruct in class InvocationBuffer
      Parameters:
      struct - A java byte array with the struct contents.
      offset - The offset from the start of the array.
    • putStruct

      public final void putStruct(long struct)
      Description copied from class: InvocationBuffer
      Adds a struct or union as a parameter. This passes the struct or union by value, not by reference.
      Specified by:
      putStruct in class InvocationBuffer
      Parameters:
      struct - The native address to use as the struct contents.
    • putObject

      public final void putObject(Object o, ObjectParameterStrategy strategy, ObjectParameterInfo info)
    • putObject

      public final void putObject(Object o, ObjectParameterStrategy strategy, int flags)
    • putJNIEnvironment

      public final void putJNIEnvironment()
    • putJNIObject

      public final void putJNIObject(Object obj)