Extends Fiddle::Closure to allow for building the closure in a block
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.
include Fiddle cb = Closure::BlockCaller.new(TYPE_INT, [TYPE_INT]) do |one| one end func = Function.new(cb, [TYPE_INT], TYPE_INT)
# File fiddle/lib/fiddle/closure.rb, line 35
def initialize ctype, args, abi = Fiddle::Function::DEFAULT, &block
super(ctype, args, abi)
@block = block
end
Calls the constructed BlockCaller, with args
For an example see Fiddle::Closure::BlockCaller.new
# File fiddle/lib/fiddle/closure.rb, line 44
def call *args
@block.call(*args)
end