public class Function extends Pointer
An abstraction for a native function pointer. An instance of
Function
represents a pointer to some native function.
invoke(Class,Object[],Map)
is the primary means to call
the function.
C_CONVENTION
Use C calling convention (default)
ALT_CONVENTION
Use alternate calling convention (e.g. stdcall)
THROW_LAST_ERROR
Throw a LastErrorException
if
the native function sets the system error to a non-zero value (errno or
GetLastError). Setting this flag will cause the system error to be cleared
prior to native function invocation.
Pointer
Modifier and Type | Class | Description |
---|---|---|
static interface |
Function.PostCallRead |
Any argument which implements this interface will have the
Function.PostCallRead.read() method called immediately after function invocation. |
Modifier and Type | Field | Description |
---|---|---|
static int |
ALT_CONVENTION |
First alternate convention (currently used only for w32 stdcall).
|
static int |
C_CONVENTION |
Standard C calling convention.
|
(package private) int |
callFlags |
|
(package private) String |
encoding |
|
(package private) static Integer |
INTEGER_FALSE |
|
(package private) static Integer |
INTEGER_TRUE |
|
static int |
MAX_NARGS |
Maximum number of arguments supported by a JNA function call.
|
(package private) static String |
OPTION_INVOKING_METHOD |
For internal JNA use.
|
(package private) Map<String,?> |
options |
|
static int |
THROW_LAST_ERROR |
Whether to throw an exception if last error is non-zero after call.
|
static int |
USE_VARARGS |
Mask for number of fixed args (1-3) for varargs calls.
|
Constructor | Description |
---|---|
Function(NativeLibrary library,
String functionName,
int callFlags,
String encoding) |
Create a new
Function that is linked with a native
function that follows the given calling convention. |
Function(Pointer functionAddress,
int callFlags,
String encoding) |
Create a new
Function that is linked with a native
function that follows the given calling convention. |
Modifier and Type | Method | Description |
---|---|---|
(package private) static Object[] |
concatenateVarArgs(Object[] inArgs) |
Concatenate varargs with normal args to obtain a simple argument
array.
|
boolean |
equals(Object o) |
Two function pointers are equal if they share the same peer address
and calling convention.
|
(package private) static int |
fixedArgs(Method m) |
Varargs are only supported on 1.5+.
|
int |
getCallingConvention() |
|
static Function |
getFunction(Pointer p) |
Obtain a
Function representing a native
function pointer. |
static Function |
getFunction(Pointer p,
int callFlags) |
Obtain a
Function representing a native
function pointer. |
static Function |
getFunction(Pointer p,
int callFlags,
String encoding) |
Obtain a
Function representing a native
function pointer. |
static Function |
getFunction(String libraryName,
String functionName) |
Obtain a
Function representing a native
function that follows the standard "C" calling convention. |
static Function |
getFunction(String libraryName,
String functionName,
int callFlags) |
Obtain a
Function representing a native
function. |
static Function |
getFunction(String libraryName,
String functionName,
int callFlags,
String encoding) |
Obtain a
Function representing a native
function. |
String |
getName() |
|
int |
hashCode() |
Provide a unique hash code for
Function s which are
equivalent. |
Object |
invoke(Class<?> returnType,
Object[] inArgs) |
Invoke the native function with the given arguments, returning the
native result as an Object.
|
Object |
invoke(Class<?> returnType,
Object[] inArgs,
Map<String,?> options) |
Invoke the native function with the given arguments, returning the
native result as an Object.
|
void |
invoke(Object[] args) |
Call the native function being represented by this object
|
(package private) Object |
invoke(Object[] args,
Class<?> returnType,
boolean allowObjects) |
|
(package private) Object |
invoke(Object[] args,
Class<?> returnType,
boolean allowObjects,
int fixedArgs) |
|
(package private) Object |
invoke(Method invokingMethod,
Class<?>[] paramTypes,
Class<?> returnType,
Object[] inArgs,
Map<String,?> options) |
Invoke the native function with the given arguments, returning the
native result as an Object.
|
double |
invokeDouble(Object[] args) |
Convenience method for
invoke(Double.class, args) . |
float |
invokeFloat(Object[] args) |
Convenience method for
invoke(Float.class, args) . |
int |
invokeInt(Object[] args) |
Convenience method for
invoke(Integer.class, args) . |
long |
invokeLong(Object[] args) |
Convenience method for
invoke(Long.class, args) . |
Object |
invokeObject(Object[] args) |
Convenience method for
invokeObject(Object.class, args) . |
Pointer |
invokePointer(Object[] args) |
Convenience method for
invoke(Pointer.class, args) . |
String |
invokeString(Object[] args,
boolean wide) |
Convenience method for
invoke(String.class, args)
or invoke(WString.class, args) |
void |
invokeVoid(Object[] args) |
Convenience method for
invoke(Void.class, args) . |
(package private) static boolean |
isVarArgs(Method m) |
Varargs are only supported on 1.5+.
|
String |
toString() |
Provide a human-readable representation of this object.
|
(package private) static Boolean |
valueOf(boolean b) |
Implementation of Boolean.valueOf for older VMs.
|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
clear, createConstant, createConstant, dump, getByte, getByteArray, getByteBuffer, getChar, getCharArray, getDouble, getDoubleArray, getFloat, getFloatArray, getInt, getIntArray, getLong, getLongArray, getNativeLong, getPointer, getPointerArray, getPointerArray, getShort, getShortArray, getString, getString, getString, getStringArray, getStringArray, getStringArray, getStringArray, getStringArray, getStringArray, getValue, getWideString, getWideStringArray, getWideStringArray, indexOf, nativeValue, nativeValue, read, read, read, read, read, read, read, read, setByte, setChar, setDouble, setFloat, setInt, setLong, setMemory, setNativeLong, setPointer, setShort, setString, setString, setString, setString, setValue, setWideString, share, share, write, write, write, write, write, write, write, write
@Native public static final int MAX_NARGS
@Native public static final int C_CONVENTION
@Native public static final int ALT_CONVENTION
public static final int THROW_LAST_ERROR
public static final int USE_VARARGS
static final Integer INTEGER_TRUE
static final Integer INTEGER_FALSE
final String encoding
final int callFlags
static final String OPTION_INVOKING_METHOD
Function(NativeLibrary library, String functionName, int callFlags, String encoding)
Function
that is linked with a native
function that follows the given calling convention.
The allocated instance represents a pointer to the named native function from the supplied library, called with the given calling convention.
library
- NativeLibrary
in which to find the functionfunctionName
- Name of the native function to be linked withcallFlags
- Function call flagsencoding
- Encoding for conversion between Java and native strings.UnsatisfiedLinkError
- if the given function name is
not found within the library.Function(Pointer functionAddress, int callFlags, String encoding)
Function
that is linked with a native
function that follows the given calling convention.
The allocated instance represents a pointer to the given function address, called with the given calling convention.
functionAddress
- Address of the native functioncallFlags
- Function call flagsencoding
- Encoding for conversion between Java and native strings.public static Function getFunction(String libraryName, String functionName)
Function
representing a native
function that follows the standard "C" calling convention.
The allocated instance represents a pointer to the named native function from the named library, called with the standard "C" calling convention.
libraryName
- Library in which to find the native functionfunctionName
- Name of the native function to be linked withUnsatisfiedLinkError
- if the library is not found or
the given function name is not found within the library.public static Function getFunction(String libraryName, String functionName, int callFlags)
Function
representing a native
function.
The allocated instance represents a pointer to the named native function from the named library.
libraryName
- Library in which to find the functionfunctionName
- Name of the native function to be linked withcallFlags
- Function call flagsUnsatisfiedLinkError
- if the library is not found or
the given function name is not found within the library.public static Function getFunction(String libraryName, String functionName, int callFlags, String encoding)
Function
representing a native
function.
The allocated instance represents a pointer to the named native function from the named library.
libraryName
- Library in which to find the functionfunctionName
- Name of the native function to be linked withcallFlags
- Function call flagsencoding
- Encoding to use for conversion between Java and native
strings.UnsatisfiedLinkError
- if the library is not found or
the given function name is not found within the library.public static Function getFunction(Pointer p)
Function
representing a native
function pointer. In general, this function should be used by dynamic
languages; Java code should allow JNA to bind to a specific Callback
interface instead by defining a return type or Structure field type.
The allocated instance represents a pointer to the native function pointer.
p
- Native function pointerpublic static Function getFunction(Pointer p, int callFlags)
Function
representing a native
function pointer. In general, this function should be used by dynamic
languages; Java code should allow JNA to bind to a specific Callback
interface instead by defining a return type or Structure field type.
The allocated instance represents a pointer to the native function pointer.
p
- Native function pointercallFlags
- Function call flagspublic static Function getFunction(Pointer p, int callFlags, String encoding)
Function
representing a native
function pointer. In general, this function should be used by dynamic
languages; Java code should allow JNA to bind to a specific Callback
interface instead by defining a return type or Structure field type.
The allocated instance represents a pointer to the native function pointer.
p
- Native function pointercallFlags
- Function call flagsencoding
- Encoding to use for conversion between Java and native
strings.public String getName()
public int getCallingConvention()
public Object invoke(Class<?> returnType, Object[] inArgs)
public Object invoke(Class<?> returnType, Object[] inArgs, Map<String,?> options)
Object invoke(Method invokingMethod, Class<?>[] paramTypes, Class<?> returnType, Object[] inArgs, Map<String,?> options)
invoke(Class, Object[], Map)
,
the method has to be in the options under key OPTION_INVOKING_METHOD
.public void invoke(Object[] args)
args
- Arguments to pass to the native functionpublic String toString()
public Object invokeObject(Object[] args)
invokeObject(Object.class, args)
.public Pointer invokePointer(Object[] args)
invoke(Pointer.class, args)
.public String invokeString(Object[] args, boolean wide)
invoke(String.class, args)
or invoke(WString.class, args)
args
- Arguments passed to native functionwide
- Whether the return value is of type wchar_t*
;
if false, the return value is of type char*
.public int invokeInt(Object[] args)
invoke(Integer.class, args)
.public long invokeLong(Object[] args)
invoke(Long.class, args)
.public float invokeFloat(Object[] args)
invoke(Float.class, args)
.public double invokeDouble(Object[] args)
invoke(Double.class, args)
.public void invokeVoid(Object[] args)
invoke(Void.class, args)
.public boolean equals(Object o)
public int hashCode()
Function
s which are
equivalent.static Object[] concatenateVarArgs(Object[] inArgs)
static boolean isVarArgs(Method m)
static int fixedArgs(Method m)
static Boolean valueOf(boolean b)