Class: Fiddle::Closure::BlockCaller

Inherits:
Fiddle::Closure show all
Defined in:
lib/fiddle/closure.rb

Overview

Extends Fiddle::Closure to allow for building the closure in a block

Instance Attribute Summary

Attributes inherited from Fiddle::Closure

#args, #ctype

Instance Method Summary collapse

Methods inherited from Fiddle::Closure

#to_i

Constructor Details

#initialize(ctype, args, abi = Fiddle::Function::DEFAULT, &block) ⇒ BlockCaller

Description

Construct a new BlockCaller object.

  • ctype is the C type to be returned

  • args are passed the callback

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

Example

include Fiddle

cb = Closure::BlockCaller.new(TYPE_INT, [TYPE_INT]) do |one|
  one
end

func = Function.new(cb, [TYPE_INT], TYPE_INT)

35
36
37
38
# File 'lib/fiddle/closure.rb', line 35

def initialize ctype, args, abi = Fiddle::Function::DEFAULT, &block
  super(ctype, args, abi)
  @block = block
end

Instance Method Details

#call(*args) ⇒ Object

Calls the constructed BlockCaller, with args

For an example see Fiddle::Closure::BlockCaller.new


44
45
46
# File 'lib/fiddle/closure.rb', line 44

def call *args
  @block.call(*args)
end