Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > dl/importライブラリ > DL::Importableモジュール
クラスの継承リスト: DL::Importable
DL モジュールの各クラスの便利なラッパーです。
Importable モジュールは、モジュールから extend を呼んで使います。include ではありません。 クラスやオブジェクトから extend を呼んで使うことはできません。
require "dl/import" module M extend DL::Importable dlload "libc.so.6" extern "int strlen(char*)" end p M.strlen("abc") #=> 3
self[func] -> DL::Symbol | DL::PtrData | nil
[permalink][rdoc]DL::Importable#extern、DL::Importable#import または DL::Importable#callback によって定義した、 C レベルの関数や変数名 func に対応する DL::Symbol オブジェクトを返します。
定義されていない場合は、nil を返します。
_args_ -> [object]
[permalink][rdoc]直前に呼んだダイナミックライブラリの関数の引数の配列を返します。
_retval_ -> object
[permalink][rdoc]直前に呼んだダイナミックライブラリの関数の返り値を返します。
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"]
dlload(*lib) -> ()
[permalink][rdoc]dllink(*lib) -> ()
[TODO]
DL.#dlopen を用いてライブラリをロードし、extend した モジュール内でそのライブラリで定義されている参照可能なシンボルを取得できるよ うにします。
extern(proto) -> DL::Symbol
[permalink][rdoc][TODO]
与えられたプロトタイプにしたがって、ダイナミックライブラリ内のシンボルを検索し、 自身の特異メソッドとして、定義します。
require "dl/import" module M extend DL::Importable dlload "libc.so.6" extern "double strtod(char*, void**)" end p M.strtod("1.23", nil) #=> 1.23
import(sym, rettype, argtypes = nil) -> DL::Symbol
[permalink][rdoc][TODO]
ダイナミックライブラリ内のシンボルを検索し、 自身の特異メソッドとして、定義します。
import("get_length", "int", ["void*", "int"])
symbol(sym) -> DL::PtrData
[permalink][rdoc][TODO]
ロードしたダイナミックライブラリ内のシンボルを検索し シンボルへのポインタを DL::PtrData として返します。
symbol(func, typespec) -> DL::Symbol
[permalink][rdoc][TODO]
ロードしたダイナミックライブラリ内の関数を検索し 名前が func の関数を DL::Symbol として返します。
typealias(newtype, oldtype) -> ()
[permalink][rdoc][TODO]
newtype 型を oldtype 型のエイリアスとして定義します。 newtype で与えた型は extern や callback メソッド のプロトタイプを与えるときに利用します。
LIB_MAP
[permalink][rdoc][TODO]
ロードされたライブラリを保持するHashオブジェクトです。