Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > dlライブラリ > DLモジュール > callback

module function DL.#callback

callback(type) -> DL::Symbol[permalink][rdoc]
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);
 }