In Files
- fiddle/lib/fiddle/closure.rb
Parent
Class/Module Index
- Fiddle
- Fiddle::BasicTypes
- Fiddle::CParser
- Fiddle::CStruct
- Fiddle::CStructBuilder
- Fiddle::CStructEntity
- Fiddle::CUnion
- Fiddle::CUnionEntity
- Fiddle::Closure
- Fiddle::Closure::BlockCaller
- Fiddle::CompositeHandler
- Fiddle::DLError
- Fiddle::Function
- Fiddle::Handle
- Fiddle::Importer
- Fiddle::Pointer
- Fiddle::Win32Types
Fiddle::Closure::BlockCaller
Extends Fiddle::Closure to allow for building the closure in a block
Public Class Methods
new(ctype, args, abi = Fiddle::Function::DEFAULT, &block)
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)
# File fiddle/lib/fiddle/closure.rb, line 35 def initialize ctype, args, abi = Fiddle::Function::DEFAULT, &block super(ctype, args, abi) @block = block end
Public Instance Methods
call(*args)
Calls the constructed BlockCaller, with
args
For an example see ::new
# File fiddle/lib/fiddle/closure.rb, line 44 def call *args @block.call(*args) end