Package com.jogamp.gluegen
Class MethodBinding
java.lang.Object
com.jogamp.gluegen.MethodBinding
Represents the binding of a C function to a Java method. Also used
to represent calls through function pointers contained in
structs.
-
Constructor Summary
ConstructorsConstructorDescriptionMethodBinding(FunctionSymbol sym, String delegationImplName, JavaType javaReturnType, List<JavaType> javaArgumentTypes, JavaType containingType, Type containingCType) Constructor for calling a C function or a function pointer contained in a struct.MethodBinding(MethodBinding bindingToCopy) Constructs a new MethodBinding that is an exact clone of the argument, including the java return type and java argument types. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddJavaArgumentType(JavaType type) booleanReturns true if any of the outgoing arguments in the method's signature require conversion or checking due to the use of New I/O.voidClears any record of a this pointer for this MethodBinding.protected voidComputes summary information about the method's C and Java signatures.booleanprotected StringerasedTypeDescriptor(JavaType type, boolean eraseBufferAndArrayTypes, boolean skipBuffers) voidFind the leftmost argument matching the type of the containing type (for function pointer MethodBindings) and record that as a "this" pointer, meaning that it does not need to be explicitly passed at the Java level.getArgumentName(int i) Returns either the argument name specified by the underlying FunctionSymbol or a fabricated argument name based on the position.getCArgumentType(int i) Retrieves the containing C type of this MethodBinding if it is for a function pointer contained in a struct.Retrieves the containing type of this MethodBinding if it is for a function pointer contained in a struct.Returns theFunctionSymbol.Theimplementation delegationname, ornullfor no delegation.getDescriptor(boolean forImplementingMethodCall, boolean eraseBufferAndArrayTypes) Returns a String containing the descriptor (signature in internal format) of this MethodBinding as it will be emitted.Returns theFunctionSymbol's name for the implementation, which is the currentaliasedAPI name per default, or thedelegationname.Returns theFunctionSymbol's currentaliasedAPI name for the interface.getJavaArgumentType(int i) getName()Returns theFunctionSymbol's currentaliasedAPI name.Returns theFunctionSymbol's name for the native function which is theoriginalC API name per default, but may be overridden viasetNativeName(String).intbooleanIndicates whether this MethodBinding is for a function pointer contained in a struct, or to access array- or pointer-data from a struct.inthashCode()booleanisArgumentThisPointer(int i) Indicates whether the ith argument to this MethodBinding is actually a "this" pointer.booleanReturns true if the function needs NIO-related wrapping/unwrapping or conversion of various arguments.replaceJavaArgumentType(int argumentNumber, JavaType newArgType) Creates a new MethodBinding replacing the specified Java argument type with a new argument type.voidsetJavaReturnType(JavaType type) voidbooleanReturns true if it is possible for any of the outgoing arguments to be indirect NIO buffers.booleanReturns true if the wrapper implementation requires static native code to be initialized, seeJavaConfiguration.forceStaticInitCode(String).booleanReturns true if the return type or any of the outgoing arguments in the method's signature use arrays of "compound type wrappers", or NIO-based wrappers for C data structures.booleanReturns true if the return type or any of the outgoing arguments in the method's signature represent C arrays.booleanReturns true if the return type or any of the outgoing arguments in the method's signature use "compound type wrappers", or NIO-based wrappers for C data structures.booleanReturns true if the return type or any of the outgoing arguments in the method's signature represent C primitive pointers.booleanReturns true if the return type or any of the outgoing arguments in the method's signature represent C void* pointers.booleanReturns true if the return type or any of the outgoing arguments in the method's signature represent Java primitive arrays.booleanReturns true if the return type or any of the outgoing arguments in the method's signature require conversion or checking due to the use of New I/O.toString()Returns the signature of this binding.
-
Constructor Details
-
MethodBinding
Constructs a new MethodBinding that is an exact clone of the argument, including the java return type and java argument types. It's safe to modify this binding after construction. -
MethodBinding
public MethodBinding(FunctionSymbol sym, String delegationImplName, JavaType javaReturnType, List<JavaType> javaArgumentTypes, JavaType containingType, Type containingCType) Constructor for calling a C function or a function pointer contained in a struct.In case of the latter, a struct function pointer, the arguments
containingTypeandcontainingCTypemust not benull!
-
-
Method Details
-
setJavaReturnType
-
addJavaArgumentType
-
getJavaReturnType
-
getNumArguments
public int getNumArguments() -
getJavaArgumentType
-
getCReturnType
-
getCArgumentType
-
getCSymbol
Returns theFunctionSymbol. -
getArgumentName
Returns either the argument name specified by the underlying FunctionSymbol or a fabricated argument name based on the position. Note that it is currently not guaranteed that there are no namespace clashes with these fabricated argument names. -
getName
Returns theFunctionSymbol's currentaliasedAPI name. -
getDelegationImplName
Theimplementation delegationname, ornullfor no delegation.- See Also:
-
getInterfaceName
Returns theFunctionSymbol's currentaliasedAPI name for the interface. -
getImplName
Returns theFunctionSymbol's name for the implementation, which is the currentaliasedAPI name per default, or thedelegationname.- See Also:
-
getNativeName
Returns theFunctionSymbol's name for the native function which is theoriginalC API name per default, but may be overridden viasetNativeName(String). -
setNativeName
-
replaceJavaArgumentType
Creates a new MethodBinding replacing the specified Java argument type with a new argument type. If argumentNumber is less than 0 then replaces the return type. -
argumentsUseNIO
public boolean argumentsUseNIO()Returns true if any of the outgoing arguments in the method's signature require conversion or checking due to the use of New I/O. -
signatureUsesNIO
public boolean signatureUsesNIO()Returns true if the return type or any of the outgoing arguments in the method's signature require conversion or checking due to the use of New I/O. -
signatureCanUseIndirectNIO
public boolean signatureCanUseIndirectNIO()Returns true if it is possible for any of the outgoing arguments to be indirect NIO buffers. -
signatureUsesCompoundTypeWrappers
public boolean signatureUsesCompoundTypeWrappers()Returns true if the return type or any of the outgoing arguments in the method's signature use "compound type wrappers", or NIO-based wrappers for C data structures. -
signatureRequiresStaticInitialization
public boolean signatureRequiresStaticInitialization()Returns true if the wrapper implementation requires static native code to be initialized, seeJavaConfiguration.forceStaticInitCode(String).Currently triggered by:
- Return type is a "compound type" and not a pointer
-
signatureUsesArraysOfCompoundTypeWrappers
public boolean signatureUsesArraysOfCompoundTypeWrappers()Returns true if the return type or any of the outgoing arguments in the method's signature use arrays of "compound type wrappers", or NIO-based wrappers for C data structures. -
needsNIOWrappingOrUnwrapping
public boolean needsNIOWrappingOrUnwrapping()Returns true if the function needs NIO-related wrapping/unwrapping or conversion of various arguments. Currently this returns the logical OR of signatureUsesNIO(), signatureUsesCompoundTypeWrappers() and signatureUsesArraysOfCompoundTypeWrappers(). -
signatureUsesCVoidPointers
public boolean signatureUsesCVoidPointers()Returns true if the return type or any of the outgoing arguments in the method's signature represent C void* pointers. -
signatureUsesCPrimitivePointers
public boolean signatureUsesCPrimitivePointers()Returns true if the return type or any of the outgoing arguments in the method's signature represent C primitive pointers. -
signatureUsesCArrays
public boolean signatureUsesCArrays()Returns true if the return type or any of the outgoing arguments in the method's signature represent C arrays. -
signatureUsesJavaPrimitiveArrays
public boolean signatureUsesJavaPrimitiveArrays()Returns true if the return type or any of the outgoing arguments in the method's signature represent Java primitive arrays. -
computeSignatureProperties
protected void computeSignatureProperties()Computes summary information about the method's C and Java signatures. -
hasContainingType
public boolean hasContainingType()Indicates whether this MethodBinding is for a function pointer contained in a struct, or to access array- or pointer-data from a struct.The native calling convention, i.e. via a 'this' function pointer or by a static native function must be decided in the
JavaEmitterhandling structs and passed to theCMethodBindingEmitter.setIsCStructFunctionPointer(boolean). -
getContainingType
Retrieves the containing type of this MethodBinding if it is for a function pointer contained in a struct. -
getContainingCType
Retrieves the containing C type of this MethodBinding if it is for a function pointer contained in a struct. -
findThisPointer
public void findThisPointer()Find the leftmost argument matching the type of the containing type (for function pointer MethodBindings) and record that as a "this" pointer, meaning that it does not need to be explicitly passed at the Java level. -
clearThisPointer
public void clearThisPointer()Clears any record of a this pointer for this MethodBinding. -
isArgumentThisPointer
public boolean isArgumentThisPointer(int i) Indicates whether the ith argument to this MethodBinding is actually a "this" pointer. -
equals
-
hashCode
public int hashCode() -
toString
Returns the signature of this binding. -
getDescriptor
Returns a String containing the descriptor (signature in internal format) of this MethodBinding as it will be emitted. This is used to disambiguate between overloadings when manually specifying prologue and epilogue code, for example. -
erasedTypeDescriptor
-