Method: Fiddle::Importer#bind

Defined in:
lib/fiddle/import.rb

#bind(signature, *opts, &blk) ⇒ Object

Creates a global method from the given C signature using the given opts as bind parameters with the given block.



193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'lib/fiddle/import.rb', line 193

def bind(signature, *opts, &blk)
  name, ctype, argtype = parse_signature(signature, type_alias)
  h = parse_bind_options(opts)
  case h[:callback_type]
  when :bind, nil
    f = bind_function(name, ctype, argtype, h[:call_type], &blk)
  else
    raise(RuntimeError, "unknown callback type: #{h[:callback_type]}")
  end
  @func_map[name] = f
  #define_method(name){|*args,&block| f.call(*args,&block)}
  begin
    /^(.+?):(\d+)/ =~ caller.first
    file, line = $1, $2.to_i
  rescue
    file, line = __FILE__, __LINE__+3
  end
  module_eval("    def \#{name}(*args,&block)\n      @func_map['\#{name}'].call(*args,&block)\n    end\n  EOS\n  module_function(name)\n  f\nend\n", file, line)