Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > dl/importライブラリ > DL::Importableモジュール > callback
callback(proto) -> DL::Symbol
[permalink][rdoc][TODO]
与えられたプロトタイプにしたがって、自身のインスタンスメソッドを C のコールバック関数に変換し、DL::Symbol として返します。
require 'dl/import' module M extend DL::Importable dlload "libc.so.6" def cmp(a, b) a.ptr.to_s[-1] <=> b.ptr.to_s[-1] end callback 'int cmp(const char **, const char **)' extern 'void qsort(void *, int, int, void *)' end a = ['1b', '2a', '3c'] ap = a.to_ptr M.qsort(ap, a.size, DL.sizeof('P'), M['cmp']) p ap.to_a('P').map{|s| s.to_s } #=> ["2a", "1b", "3c"]