Class FFICIF

  • All Implemented Interfaces:
    java.lang.AutoCloseable, org.lwjgl.system.NativeResource, org.lwjgl.system.Pointer

    public class FFICIF
    extends org.lwjgl.system.Struct
    implements org.lwjgl.system.NativeResource
    Contains information about a libffi call interface.

    Layout

    
     struct ffi_cif {
         ffi_abi abi;
         unsigned nargs;
         ffi_type ** arg_types;
         ffi_type * rtype;
         unsigned bytes;
         unsigned flags;
     }
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  FFICIF.Buffer
      An array of FFICIF structs.
      • Nested classes/interfaces inherited from interface org.lwjgl.system.Pointer

        org.lwjgl.system.Pointer.Default
      • Nested classes/interfaces inherited from class org.lwjgl.system.Struct

        org.lwjgl.system.Struct.StructValidation
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int ABI
      The struct member offsets.
      static int ALIGNOF
      The struct alignment in bytes.
      static int ARG_TYPES
      BYTES
      FLAGS
      NARGS
      RTYPE
      The struct member offsets.
      static int SIZEOF
      The struct size in bytes.
      • Fields inherited from interface org.lwjgl.system.Pointer

        BITS32, BITS64, CLONG_SHIFT, CLONG_SIZE, POINTER_SHIFT, POINTER_SIZE
    • Constructor Summary

      Constructors 
      Constructor Description
      FFICIF​(java.nio.ByteBuffer container)
      Creates a FFICIF instance at the current position of the specified ByteBuffer container.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int abi()  
      org.lwjgl.PointerBuffer arg_types​(int capacity)  
      int bytes()  
      static FFICIF calloc()
      Returns a new FFICIF instance allocated with memCalloc.
      static FFICIF.Buffer calloc​(int capacity)
      Returns a new FFICIF.Buffer instance allocated with memCalloc.
      static FFICIF.Buffer calloc​(int capacity, org.lwjgl.system.MemoryStack stack)
      Returns a new FFICIF.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.
      static FFICIF calloc​(org.lwjgl.system.MemoryStack stack)
      Returns a new FFICIF instance allocated on the specified MemoryStack and initializes all its bits to zero.
      static FFICIF create()
      Returns a new FFICIF instance allocated with BufferUtils.
      static FFICIF.Buffer create​(int capacity)
      Returns a new FFICIF.Buffer instance allocated with BufferUtils.
      static FFICIF create​(long address)
      Returns a new FFICIF instance for the specified memory address.
      static FFICIF.Buffer create​(long address, int capacity)
      Create a FFICIF.Buffer instance at the specified memory.
      static FFICIF createSafe​(long address)
      Like create, but returns null if address is NULL.
      static FFICIF.Buffer createSafe​(long address, int capacity)
      Like create, but returns null if address is NULL.
      int flags()  
      static FFICIF malloc()
      Returns a new FFICIF instance allocated with memAlloc.
      static FFICIF.Buffer malloc​(int capacity)
      Returns a new FFICIF.Buffer instance allocated with memAlloc.
      static FFICIF.Buffer malloc​(int capacity, org.lwjgl.system.MemoryStack stack)
      Returns a new FFICIF.Buffer instance allocated on the specified MemoryStack.
      static FFICIF malloc​(org.lwjgl.system.MemoryStack stack)
      Returns a new FFICIF instance allocated on the specified MemoryStack.
      static int nabi​(long struct)
      Unsafe version of abi().
      static org.lwjgl.PointerBuffer narg_types​(long struct, int capacity)
      Unsafe version of arg_types.
      int nargs()  
      static int nbytes​(long struct)
      Unsafe version of bytes().
      static int nflags​(long struct)
      Unsafe version of flags().
      static int nnargs​(long struct)
      Unsafe version of nargs().
      static FFIType nrtype​(long struct)
      Unsafe version of rtype().
      FFIType rtype()  
      int sizeof()  
      • Methods inherited from interface org.lwjgl.system.NativeResource

        close, free
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from class org.lwjgl.system.Pointer.Default

        address, equals, hashCode, toString
      • Methods inherited from class org.lwjgl.system.Struct

        clear, free, isNull, validate
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • ABI, NARGS, ARG_TYPES, RTYPE, BYTES, FLAGS

        The struct member offsets.
    • Constructor Detail

      • FFICIF

        public FFICIF​(java.nio.ByteBuffer container)
        Creates a FFICIF instance at the current position of the specified ByteBuffer container. Changes to the buffer's content will be visible to the struct instance and vice versa.

        The created instance holds a strong reference to the container object.

    • Method Detail

      • sizeof

        public int sizeof()
        Specified by:
        sizeof in class org.lwjgl.system.Struct
      • abi

        public int abi()
        Returns:
        the value of the abi field.
      • nargs

        public int nargs()
        Returns:
        the value of the nargs field.
      • arg_types

        public org.lwjgl.PointerBuffer arg_types​(int capacity)
        Parameters:
        capacity - the number of elements in the returned buffer
        Returns:
        a PointerBuffer view of the data pointed to by the arg_types field.
      • rtype

        public FFIType rtype()
        Returns:
        a FFIType view of the struct pointed to by the rtype field.
      • bytes

        public int bytes()
        Returns:
        the value of the bytes field.
      • flags

        public int flags()
        Returns:
        the value of the flags field.
      • malloc

        public static FFICIF malloc()
        Returns a new FFICIF instance allocated with memAlloc. The instance must be explicitly freed.
      • calloc

        public static FFICIF calloc()
        Returns a new FFICIF instance allocated with memCalloc. The instance must be explicitly freed.
      • create

        public static FFICIF create()
        Returns a new FFICIF instance allocated with BufferUtils.
      • create

        public static FFICIF create​(long address)
        Returns a new FFICIF instance for the specified memory address.
      • createSafe

        @Nullable
        public static FFICIF createSafe​(long address)
        Like create, but returns null if address is NULL.
      • malloc

        public static FFICIF.Buffer malloc​(int capacity)
        Returns a new FFICIF.Buffer instance allocated with memAlloc. The instance must be explicitly freed.
        Parameters:
        capacity - the buffer capacity
      • calloc

        public static FFICIF.Buffer calloc​(int capacity)
        Returns a new FFICIF.Buffer instance allocated with memCalloc. The instance must be explicitly freed.
        Parameters:
        capacity - the buffer capacity
      • create

        public static FFICIF.Buffer create​(int capacity)
        Returns a new FFICIF.Buffer instance allocated with BufferUtils.
        Parameters:
        capacity - the buffer capacity
      • create

        public static FFICIF.Buffer create​(long address,
                                           int capacity)
        Create a FFICIF.Buffer instance at the specified memory.
        Parameters:
        address - the memory address
        capacity - the buffer capacity
      • createSafe

        @Nullable
        public static FFICIF.Buffer createSafe​(long address,
                                               int capacity)
        Like create, but returns null if address is NULL.
      • malloc

        public static FFICIF malloc​(org.lwjgl.system.MemoryStack stack)
        Returns a new FFICIF instance allocated on the specified MemoryStack.
        Parameters:
        stack - the stack from which to allocate
      • calloc

        public static FFICIF calloc​(org.lwjgl.system.MemoryStack stack)
        Returns a new FFICIF instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
      • malloc

        public static FFICIF.Buffer malloc​(int capacity,
                                           org.lwjgl.system.MemoryStack stack)
        Returns a new FFICIF.Buffer instance allocated on the specified MemoryStack.
        Parameters:
        stack - the stack from which to allocate
        capacity - the buffer capacity
      • calloc

        public static FFICIF.Buffer calloc​(int capacity,
                                           org.lwjgl.system.MemoryStack stack)
        Returns a new FFICIF.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
        capacity - the buffer capacity
      • nabi

        public static int nabi​(long struct)
        Unsafe version of abi().
      • nnargs

        public static int nnargs​(long struct)
        Unsafe version of nargs().
      • narg_types

        public static org.lwjgl.PointerBuffer narg_types​(long struct,
                                                         int capacity)
        Unsafe version of arg_types.
      • nrtype

        public static FFIType nrtype​(long struct)
        Unsafe version of rtype().
      • nbytes

        public static int nbytes​(long struct)
        Unsafe version of bytes().
      • nflags

        public static int nflags​(long struct)
        Unsafe version of flags().