Class FFIClosure

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

    public class FFIClosure
    extends org.lwjgl.system.Struct
    implements org.lwjgl.system.NativeResource
    The libffi closure structure.

    Layout

    
     struct ffi_closure {
         ffi_cif * cif();
         void (*)(ffi_cif*,void*,void**,void*) fun();
         void * user_data();
     }
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  FFIClosure.Buffer
      An array of FFIClosure 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 ALIGNOF
      The struct alignment in bytes.
      static int CIF
      FUN
      The struct member offsets.
      static int SIZEOF
      The struct size in bytes.
      static int USER_DATA
      The struct member offsets.
      • Fields inherited from interface org.lwjgl.system.Pointer

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

      Constructors 
      Constructor Description
      FFIClosure​(java.nio.ByteBuffer container)
      Creates a FFIClosure instance at the current position of the specified ByteBuffer container.
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • CIF, FUN, USER_DATA

        The struct member offsets.
    • Constructor Detail

      • FFIClosure

        public FFIClosure​(java.nio.ByteBuffer container)
        Creates a FFIClosure 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
      • cif

        public FFICIF cif()
        a pointer to an ffi_cif structure
      • fun

        public long fun()
        a pointer to a function
      • user_data

        public long user_data()
        a pointer to user-specified data
      • malloc

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

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

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

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

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

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

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

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

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

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

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

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

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

        public static FFIClosure.Buffer calloc​(int capacity,
                                               org.lwjgl.system.MemoryStack stack)
        Returns a new FFIClosure.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
      • ncif

        public static FFICIF ncif​(long struct)
        Unsafe version of cif().
      • nfun

        public static long nfun​(long struct)
        Unsafe version of fun().
      • nuser_data

        public static long nuser_data​(long struct)
        Unsafe version of user_data().