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 classprivate static final classBig endian, 32 bit array encoderprivate static final classBig endian, 64 bit array encoderprivate static classBase class for all big-endian architecture array encoders.private static final class(package private) static classEncodes java data types into native parameter framesprivate static final classprivate static final classLittle endian, 32 bit implementation ofArrayIOprivate static final classLittle endian, 64 bit implementation ofArrayIOprivate static classBase class for all little-endian architecture array encoders. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final byte[]private final CallContextprivate ObjectBufferprivate static final intprivate intprivate 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 thisInvocationBufferprivate final ObjectBuffer(package private) ObjectBufferGets the object buffer used to store java heap array parametersfinal voidputAddress(long value) Adds a native address parameter.final voidputArray(byte[] array, int offset, int length, int flags) Adds a java byte array as a pointer parameter.final voidputArray(double[] array, int offset, int length, int flags) Adds a java double array as a pointer parameter.final voidputArray(float[] array, int offset, int length, int flags) Adds a java float array as a pointer parameter.final voidputArray(int[] array, int offset, int length, int flags) Adds a java int array as a pointer parameter.final voidputArray(long[] array, int offset, int length, int flags) Adds a java long array as a pointer parameter.final voidputArray(short[] array, int offset, int length, int flags) Adds a java short array as a pointer parameter.final voidputByte(int value) Adds an 8 bit integer parameter.final voidputDirectBuffer(Buffer value, int offset, int length) Adds a java direct buffer as a pointer parameter.final voidputDouble(double value) Adds a 64 bit floating point parameter.final voidputFloat(float value) Adds a 32 bit floating point parameter.final voidputInt(int value) Adds a 32 bit integer parameter.final voidfinal voidputJNIObject(Object obj) final voidputLong(long value) Adds a 64 bit integer parameter.final voidputLongDouble(double value) final voidputLongDouble(BigDecimal value) final voidputObject(Object o, ObjectParameterStrategy strategy, int flags) final voidputObject(Object o, ObjectParameterStrategy strategy, ObjectParameterInfo info) final voidputShort(int value) Adds a 16 bit integer parameter.final voidputStruct(byte[] struct, int offset) Adds a struct or union as a parameter.final voidputStruct(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- TheCallContextdescribing how the function should be invoked
-
HeapInvocationBuffer
Creates a new instance ofHeapInvocationBuffer.- Parameters:
context- TheCallContextdescribing 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:InvocationBufferAdds an 8 bit integer parameter.- Specified by:
putBytein classInvocationBuffer- Parameters:
value- An 8 bit integer value to use as the parameter.
-
putShort
public final void putShort(int value) Description copied from class:InvocationBufferAdds a 16 bit integer parameter.- Specified by:
putShortin classInvocationBuffer- Parameters:
value- A 16 bit integer value to use as the parameter.
-
putInt
public final void putInt(int value) Description copied from class:InvocationBufferAdds a 32 bit integer parameter.- Specified by:
putIntin classInvocationBuffer- Parameters:
value- A 32 bit integer value to use as the parameter.
-
putLong
public final void putLong(long value) Description copied from class:InvocationBufferAdds a 64 bit integer parameter.- Specified by:
putLongin classInvocationBuffer- Parameters:
value- A 64 bit integer value to use as the parameter.
-
putFloat
public final void putFloat(float value) Description copied from class:InvocationBufferAdds a 32 bit floating point parameter.- Specified by:
putFloatin 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:InvocationBufferAdds a 64 bit floating point parameter.- Specified by:
putDoublein 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:InvocationBufferAdds a native address parameter.- Specified by:
putAddressin 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:InvocationBufferAdds a java byte array as a pointer parameter.- Specified by:
putArrayin 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:InvocationBufferAdds a java short array as a pointer parameter.- Specified by:
putArrayin 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:InvocationBufferAdds a java int array as a pointer parameter.- Specified by:
putArrayin 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:InvocationBufferAdds a java long array as a pointer parameter.- Specified by:
putArrayin 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:InvocationBufferAdds a java float array as a pointer parameter.- Specified by:
putArrayin 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:InvocationBufferAdds a java double array as a pointer parameter.- Specified by:
putArrayin 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:InvocationBufferAdds a java direct buffer as a pointer parameter.- Specified by:
putDirectBufferin 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:InvocationBufferAdds a struct or union as a parameter. This passes the struct or union by value, not by reference.- Specified by:
putStructin 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:InvocationBufferAdds a struct or union as a parameter. This passes the struct or union by value, not by reference.- Specified by:
putStructin classInvocationBuffer- Parameters:
struct- The native address to use as the struct contents.
-
putObject
-
putObject
-
putJNIEnvironment
public final void putJNIEnvironment() -
putJNIObject
-