class Fiddle::Closure
Description¶ ↑
An FFI closure wrapper, for handling callbacks.
Example¶ ↑
closure = Class.new(Fiddle::Closure) { def call 10 end }.new(Fiddle::TYPE_INT, []) #=> #<#<Class:0x0000000150d308>:0x0000000150d240> func = Fiddle::Function.new(closure, [], Fiddle::TYPE_INT) #=> #<Fiddle::Function:0x00000001516e58> func.call #=> 10
Attributes
              args[R]
            
            arguments of the FFI closure
              ctype[R]
            
            the C type of the return of the FFI closure
Public Class Methods
                        
                          new(ret, args, abi = Fiddle::DEFAULT)
                              
                              click to toggle source
                            
                            Construct a new Closure object.
- 
retis the C type to be returned - 
argsis an Array of arguments, passed to the callback function - 
abiis the abi of the closure 
If there is an error in preparing the ffi_cif or ffi_prep_closure, then a RuntimeError will be raised.
static VALUE
initialize(int argc, VALUE *argv, VALUE self)
{
    initialize_data data;
    data.self = self;
    data.argc = argc;
    data.argv = argv;
    return rb_rescue(initialize_body, (VALUE)&data,
                     initialize_rescue, (VALUE)&data);
}
                              Public Instance Methods
                              to_i()
                              click to toggle source
                            
                            Returns the memory address for this closure
static VALUE
to_i(VALUE self)
{
    fiddle_closure * cl;
    void *code;
    TypedData_Get_Struct(self, fiddle_closure, &closure_data_type, cl);
    code = cl->code;
    return PTR2NUM(code);
}