com.jogamp.gluegen
Class MethodBinding

java.lang.Object
  extended by com.jogamp.gluegen.MethodBinding

public class MethodBinding
extends Object

Represents the binding of a C function to a Java method. Also used to represent calls through function pointers contained in structs.


Constructor Summary
MethodBinding(FunctionSymbol sym)
          Constructor for calling a C function.
MethodBinding(FunctionSymbol sym, JavaType containingType, Type containingCType)
          Constructor for calling 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
 void addAliasedName(String name)
           
 void addJavaArgumentType(JavaType type)
           
 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.
 void clearThisPointer()
          Clears any record of a this pointer for this MethodBinding.
 Object clone()
           
protected  void computeSignatureProperties()
          Computes summary information about the method's C and Java signatures.
 boolean equals(Object obj)
           
protected  String erasedTypeDescriptor(JavaType type, boolean eraseBufferAndArrayTypes, boolean skipBuffers)
           
 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.
 Collection<String> getAliasedNames()
           
 String getArgumentName(int i)
          Returns either the argument name specified by the underlying FunctionSymbol or a fabricated argument name based on the position.
 Type getCArgumentType(int i)
           
 Type getContainingCType()
          Retrieves the containing C type of this MethodBinding if it is for a function pointer contained in a struct.
 JavaType getContainingType()
          Retrieves the containing type of this MethodBinding if it is for a function pointer contained in a struct.
 Type getCReturnType()
           
 FunctionSymbol getCSymbol()
           
 String getDescriptor(boolean forImplementingMethodCall, boolean eraseBufferAndArrayTypes)
          Returns a String containing the descriptor (signature in internal format) of this MethodBinding as it will be emitted.
 JavaType getJavaArgumentType(int i)
           
 JavaType getJavaReturnType()
           
 String getName()
           
 int getNumArguments()
           
 String getOrigName()
           
 boolean hasContainingType()
          Indicates whether this MethodBinding is for a function pointer contained in a struct.
 int hashCode()
           
 boolean isArgumentThisPointer(int i)
          Indicates whether the ith argument to this MethodBinding is actually a "this" pointer.
 boolean needsNIOWrappingOrUnwrapping()
          Returns true if the function needs NIO-related wrapping/unwrapping or conversion of various arguments.
 void renameMethodName(String name)
          Supports renaming C function in Java binding.
 MethodBinding replaceJavaArgumentType(int argumentNumber, JavaType newArgType)
          Creates a new MethodBinding replacing the specified Java argument type with a new argument type.
 void setJavaReturnType(JavaType type)
           
 boolean signatureCanUseIndirectNIO()
          Returns true if it is possible for any of the outgoing arguments to be indirect NIO buffers.
 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.
 boolean signatureUsesCArrays()
          Returns true if the return type or any of the outgoing arguments in the method's signature represent C arrays.
 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.
 boolean signatureUsesCPrimitivePointers()
          Returns true if the return type or any of the outgoing arguments in the method's signature represent C primitive pointers.
 boolean signatureUsesCVoidPointers()
          Returns true if the return type or any of the outgoing arguments in the method's signature represent C void* pointers.
 boolean signatureUsesJavaPrimitiveArrays()
          Returns true if the return type or any of the outgoing arguments in the method's signature represent Java primitive arrays.
 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.
 String toString()
          Returns the signature of this binding.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MethodBinding

public MethodBinding(MethodBinding bindingToCopy)
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)
Constructor for calling a C function.


MethodBinding

public MethodBinding(FunctionSymbol sym,
                     JavaType containingType,
                     Type containingCType)
Constructor for calling a function pointer contained in a struct.

Method Detail

setJavaReturnType

public void setJavaReturnType(JavaType type)

addJavaArgumentType

public void addJavaArgumentType(JavaType type)

getJavaReturnType

public JavaType getJavaReturnType()

getNumArguments

public int getNumArguments()

getJavaArgumentType

public JavaType getJavaArgumentType(int i)

getCReturnType

public Type getCReturnType()

getCArgumentType

public Type getCArgumentType(int i)

getCSymbol

public FunctionSymbol getCSymbol()

getArgumentName

public String getArgumentName(int i)
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.


getOrigName

public String getOrigName()

getName

public String getName()

renameMethodName

public void renameMethodName(String name)
Supports renaming C function in Java binding.


addAliasedName

public void addAliasedName(String name)

getAliasedNames

public Collection<String> getAliasedNames()

replaceJavaArgumentType

public MethodBinding replaceJavaArgumentType(int argumentNumber,
                                             JavaType newArgType)
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.


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() and signatureUsesCompoundTypeWrappers().


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.


getContainingType

public JavaType getContainingType()
Retrieves the containing type of this MethodBinding if it is for a function pointer contained in a struct.


getContainingCType

public Type 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

public boolean equals(Object obj)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

toString

public String toString()
Returns the signature of this binding.

Overrides:
toString in class Object

clone

public final Object clone()
Overrides:
clone in class Object

getDescriptor

public String getDescriptor(boolean forImplementingMethodCall,
                            boolean eraseBufferAndArrayTypes)
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

protected String erasedTypeDescriptor(JavaType type,
                                      boolean eraseBufferAndArrayTypes,
                                      boolean skipBuffers)