module function DL.#callback
callback(type) -> DL::Symbol
define_callback(type) -> DL::Symbol
-
[TODO]
Cレベルのコールバック関数を定義し、その関数(へのポインタ)を保持した DL::Symbol を返します。
- [PARAM] type:
- コールバック関数の型指定子を与えます。
- [EXCEPTION] DL::DLError:
- 定義できるコールバック関数の数には制限があります。それを越えると、DL::DLError が発生します。
require 'dl/import' strlast = DL.callback('IS'){|s| s[-1] } module M extend DL::Importable dlload "./libtest.so" extern "int call(void *, const char*)" end p LIBC.call(strlast, "abcd").chr #=> "d"
/* libtest.so */ int call(int (*cb)(const char*), const char* s){ return (*cb)(s); }
module DL