singleton method Fiddle::Function.new

new(ptr, args, ret_type, abi=Fiddle::Function::DEFAULT, name: nil) -> Fiddle::Function[permalink][rdoc][edit]

ptr (関数ポインタ)から Fiddle::Function オブジェクトを生成します。

ptr には Fiddle::Handle から Fiddle::Handle#sym などで取りだした関数ポインタ(を表す整数)、もしくは関数を指している Fiddle::Pointer を渡します。

args、ret_type で関数の引数と返り値の型を指定します。これには以下の定数が利用できます。「-TYPE_INT」 のように符号を反転させると unsigned を意味します。

abi で呼出規約を指定します。

のどちらかを指定します。

require 'fiddle'

h = Fiddle::Handle.new('libc.so.6')
func = Fiddle::Function.new(h.sym("strlen"), [Fiddle::TYPE_VOIDP],
                            Fiddle::TYPE_INT, name: "strlen")
p func.ptr == h.sym("strlen") # => true
p func.call("abc") # => 3
p func.name # => "strlen"
[PARAM] ptr:
C の関数を指す Fiddle::Pointer オブジェクトもしくはアドレスを表す整数
[PARAM] args:
引数の型を表す配列
[PARAM] ret_type:
返り値の型
[PARAM] abi:
呼出規約
[PARAM] name:
関数の名前(文字列)