Package com.kenai.jffi
Class HeapInvocationBuffer
java.lang.Object
com.kenai.jffi.InvocationBuffer
com.kenai.jffi.HeapInvocationBuffer
An implementation of
InvocationBuffer
that packs its parameters onto
a java heap allocated buffer.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
private static final class
Big endian, 32 bit array encoderprivate static final class
Big endian, 64 bit array encoderprivate static class
Base class for all big-endian architecture array encoders.private static final class
(package private) static class
Encodes java data types into native parameter framesprivate static final class
private static final class
Little endian, 32 bit implementation ofArrayIO
private static final class
Little endian, 64 bit implementation ofArrayIO
private static class
Base class for all little-endian architecture array encoders. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final byte[]
private final CallContext
private ObjectBuffer
private static final int
private int
private int
-
Constructor Summary
ConstructorsConstructorDescriptionHeapInvocationBuffer
(CallContext callContext) Creates a new instance ofHeapInvocationBuffer
.HeapInvocationBuffer
(CallContext context, int objectCount) Creates a new instance ofHeapInvocationBuffer
.HeapInvocationBuffer
(Function function) Creates a new instance ofHeapInvocationBuffer
. -
Method Summary
Modifier and TypeMethodDescription(package private) byte[]
array()
Gets the backing array of thisInvocationBuffer
private final ObjectBuffer
(package private) ObjectBuffer
Gets the object buffer used to store java heap array parametersfinal void
putAddress
(long value) Adds a native address parameter.final void
putArray
(byte[] array, int offset, int length, int flags) Adds a java byte array as a pointer parameter.final void
putArray
(double[] array, int offset, int length, int flags) Adds a java double array as a pointer parameter.final void
putArray
(float[] array, int offset, int length, int flags) Adds a java float array as a pointer parameter.final void
putArray
(int[] array, int offset, int length, int flags) Adds a java int array as a pointer parameter.final void
putArray
(long[] array, int offset, int length, int flags) Adds a java long array as a pointer parameter.final void
putArray
(short[] array, int offset, int length, int flags) Adds a java short array as a pointer parameter.final void
putByte
(int value) Adds an 8 bit integer parameter.final void
putDirectBuffer
(Buffer value, int offset, int length) Adds a java direct buffer as a pointer parameter.final void
putDouble
(double value) Adds a 64 bit floating point parameter.final void
putFloat
(float value) Adds a 32 bit floating point parameter.final void
putInt
(int value) Adds a 32 bit integer parameter.final void
final void
putJNIObject
(Object obj) final void
putLong
(long value) Adds a 64 bit integer parameter.final void
putLongDouble
(double value) final void
putLongDouble
(BigDecimal value) final void
putObject
(Object o, ObjectParameterStrategy strategy, int flags) final void
putObject
(Object o, ObjectParameterStrategy strategy, ObjectParameterInfo info) final void
putShort
(int value) Adds a 16 bit integer parameter.final void
putStruct
(byte[] struct, int offset) Adds a struct or union as a parameter.final void
putStruct
(long struct) Adds a struct or union as a parameter.
-
Field Details
-
PARAM_SIZE
private static final int PARAM_SIZE- See Also:
-
callContext
-
buffer
private final byte[] buffer -
objectBuffer
-
paramOffset
private int paramOffset -
paramIndex
private int paramIndex
-
-
Constructor Details
-
HeapInvocationBuffer
Creates a new instance ofHeapInvocationBuffer
.- Parameters:
function
- The function that this buffer is going to be used with.
-
HeapInvocationBuffer
Creates a new instance ofHeapInvocationBuffer
.- Parameters:
callContext
- TheCallContext
describing how the function should be invoked
-
HeapInvocationBuffer
Creates a new instance ofHeapInvocationBuffer
.- Parameters:
context
- TheCallContext
describing how the function should be invoked
-
-
Method Details
-
array
byte[] array()Gets the backing array of thisInvocationBuffer
- 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 classInvocationBuffer
- 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 classInvocationBuffer
- 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 classInvocationBuffer
- 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 classInvocationBuffer
- 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 classInvocationBuffer
- 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 classInvocationBuffer
- Parameters:
value
- A 64 bit floating point value to use as the parameter.
-
putLongDouble
public final void putLongDouble(double value) -
putLongDouble
-
putAddress
public final void putAddress(long value) Description copied from class:InvocationBuffer
Adds a native address parameter.- Specified by:
putAddress
in classInvocationBuffer
- Parameters:
value
- A native address value to use as the parameter.
-
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 classInvocationBuffer
- 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 classInvocationBuffer
- 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 classInvocationBuffer
- 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 classInvocationBuffer
- 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 classInvocationBuffer
- 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 classInvocationBuffer
- 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
Description copied from class:InvocationBuffer
Adds a java direct buffer as a pointer parameter.- Specified by:
putDirectBuffer
in classInvocationBuffer
- 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 classInvocationBuffer
- 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 classInvocationBuffer
- Parameters:
struct
- The native address to use as the struct contents.
-
putObject
-
putObject
-
putJNIEnvironment
public final void putJNIEnvironment() -
putJNIObject
-