123456789_123456789_123456789_123456789_123456789_

Class: Fiddle::Closure

Relationships & Source Files
Namespace Children
Classes:
Extension / Inclusion / Inheritance Descendants
Subclasses:
Inherits: Object
Defined in: ext/fiddle/closure.c,
ext/fiddle/lib/fiddle/closure.rb

Overview

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

Class Method Summary

Instance Attribute Summary

  • #args readonly

    arguments of the FFI closure.

  • #ctype readonly

    the C type of the return of the FFI closure.

Instance Method Summary

  • #to_i

    Returns the memory address for this closure.

Constructor Details

.new(ret, args, abi = Fiddle::DEFAULT)

Construct a new Closure object.

  • ret is the C type to be returned

  • #args is an Array of arguments, passed to the callback function

  • abi is 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.

Instance Attribute Details

#args (readonly)

arguments of the FFI closure

[ GitHub ]

  
# File 'ext/fiddle/lib/fiddle/closure.rb', line 9

attr_reader :args

#ctype (readonly)

the C type of the return of the FFI closure

[ GitHub ]

  
# File 'ext/fiddle/lib/fiddle/closure.rb', line 6

attr_reader :ctype

Instance Method Details

#to_i

Returns the memory address for this closure