Class: Fiddle::Closure::BlockCaller
- Inherits:
-
Fiddle::Closure
- Object
- Fiddle::Closure
- Fiddle::Closure::BlockCaller
- 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
Instance Method Summary collapse
-
#call(*args) ⇒ Object
Calls the constructed BlockCaller, with
args
. -
#initialize(ctype, args, abi = Fiddle::Function::DEFAULT, &block) ⇒ BlockCaller
constructor
Description.
Methods inherited from Fiddle::Closure
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)
34 35 36 37 |
# File 'lib/fiddle/closure.rb', line 34 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
43 44 45 |
# File 'lib/fiddle/closure.rb', line 43 def call *args @block.call(*args) end |