Class: Fiddle::Closure::BlockCaller (Ruby 2.2.2)
Description: Class : Fiddle::Closure::BlockCaller - Ruby 2.2.2

- Home
- Core 2.2.2
- Std-lib 2.2.2
- Downloads

Support for the Ruby 2.2 series has ended. See here for reference.

### Home Classes Methods

### In Files

- fiddle/lib/fiddle/closure.rb

### Parent

Fiddle::Closure

### Methods

- ::new
- #call

### Class/Module Index

Quicksearch

- 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

No matching classes.

# 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) click to toggle source

## 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 34
    def initialize ctype, args, abi = Fiddle::Function::DEFAULT, &block
      super(ctype, args, abi)
      @block = block
    end

### Public Instance Methods

call(*args) click to toggle source

Calls the constructed BlockCaller, with `args`

For an example see ::new

                   # File fiddle/lib/fiddle/closure.rb, line 43
    def call *args
      @block.call(*args)
    end