Class: Fiddle::Closure::BlockCaller
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::Fiddle::Closure
|
|
Instance Chain:
self,
::Fiddle::Closure
|
|
Inherits: |
Fiddle::Closure
|
Defined in: | ext/fiddle/lib/fiddle/closure.rb |
Overview
Extends ::Fiddle::Closure
to allow for building the closure in a block
Class Method Summary
-
.new(ctype, args, abi = Fiddle::Function::DEFAULT, &block) ⇒ BlockCaller
constructor
Description.
::Fiddle::Closure
- Inherited
.create | Create a new closure. |
.new | Alias for Pinned.new. |
Instance Attribute Summary
::Fiddle::Closure
- Inherited
Instance Method Summary
-
#call(*args)
Calls the constructed
BlockCaller
, with #args
::Fiddle::Closure
- Inherited
#free | Free this closure explicitly. |
#initialize, | |
#to_i | Returns the memory address for this closure. |
#to_ptr |
Constructor Details
.new(ctype, args, abi = Fiddle::Function::DEFAULT, &block) ⇒ BlockCaller
Description
Construct a new BlockCaller
object.
-
Fiddle::Closure#ctype is the C type to be returned
-
Fiddle::Closure#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)
Instance Method Details
#call(*args)
Calls the constructed BlockCaller
, with Fiddle::Closure#args
For an example see .new