Class CallContext


  • public final class CallContext
    extends java.lang.Object
    Native function call context This class holds all the information that JFFI needs to correctly call a native function, or to implement a callback from native code to java.
    • Field Detail

      • contextAddress

        final long contextAddress
        The native address of the context
      • parameterCount

        private final int parameterCount
        The number of parameters this function takes
      • rawParameterSize

        private final int rawParameterSize
        The size of buffer required when packing parameters
      • returnType

        final Type returnType
        The return type of this function
      • parameterTypes

        final Type[] parameterTypes
        The parameter types of this function
      • parameterTypeHandles

        final long[] parameterTypeHandles
      • fixedParamCount

        final int fixedParamCount
      • flags

        final int flags
      • disposed

        volatile int disposed
      • UPDATER

        final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<CallContext> UPDATER
      • foreign

        private final Foreign foreign
        A handle to the foreign interface to keep it alive as long as this object is alive
    • Constructor Detail

      • CallContext

        public CallContext​(Type returnType,
                           Type... parameterTypes)
        Creates a new instance of Function with default calling convention.
        Parameters:
        returnType - The return type of the native function.
        parameterTypes - The parameter types the function accepts.
      • CallContext

        public CallContext​(Type returnType,
                           Type[] parameterTypes,
                           CallingConvention convention)
        Creates a new instance of Function. Function instances created with this constructor will save the C errno contents after each call.
        Parameters:
        returnType - The return type of the native function.
        parameterTypes - The parameter types the function accepts.
        convention - The calling convention of the function.
      • CallContext

        public CallContext​(Type returnType,
                           Type[] parameterTypes,
                           CallingConvention convention,
                           boolean saveErrno)
      • CallContext

        CallContext​(Type returnType,
                    int fixedParamCount,
                    Type[] parameterTypes,
                    CallingConvention convention,
                    boolean saveErrno,
                    boolean faultProtect)
        Creates a new instance of Function.
        Parameters:
        returnType - The return type of the native function.
        fixedParamCount - The number of parameters that are fixed, for varargs calls
        parameterTypes - The parameter types the function accepts.
        convention - The calling convention of the function.
        saveErrno - Whether the errno should be saved or not
    • Method Detail

      • getCallContext

        public static CallContext getCallContext​(Type returnType,
                                                 Type[] parameterTypes,
                                                 CallingConvention convention,
                                                 boolean saveErrno)
        Returns a CallContext instance. This may return a previously cached instance that matches the signature requested, and should be used in preference to instantiating new instances.
        Parameters:
        returnType - The return type of the native function.
        parameterTypes - The parameter types the function accepts.
        convention - The calling convention of the function.
        saveErrno - Indicates that the errno should be saved
        Returns:
        An instance of CallContext
      • getParameterCount

        public final int getParameterCount()
        Gets the number of parameters the native function accepts.
        Returns:
        The number of parameters the native function accepts.
      • getRawParameterSize

        public final int getRawParameterSize()
        Gets the number of bytes required to pack all the parameters this function accepts, into a region of memory.
        Returns:
        The number of bytes required to store all paraameters of this function.
      • getAddress

        final long getAddress()
        Gets the address of the function context.
        Returns:
        The address of the native function context struct.
      • getReturnType

        public final Type getReturnType()
        Gets the native return type of this function.
        Returns:
        The native return type of this function.
      • getParameterType

        public final Type getParameterType​(int index)
        Gets the type of a parameter.
        Parameters:
        index - The index of the parameter in the function signature
        Returns:
        The Type of the parameter.
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • dispose

        @Deprecated
        public final void dispose()
        Deprecated.
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable