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

module DL

クラスの継承リスト: DL

要約

UNIX の dlopen(3) や Windows の LoadLibrary() などのダイナミックリンカへの低レベルな インターフェースを提供するモジュールです。

モジュール DL は 3 つのクラスから成っています。

DL::Symbol

ダイナミックライブラリの関数のラッパークラスです。

DL::PtrData

C のポインタのようなメモリブロックを表すクラスです。

DL::Handle

オープンされたダイナミックライブラリを表すクラスです。

Type specifiers

プロトタイプは以下の型修飾子から成ります。プロトタイプの最初の要素は戻り値 の型を意味します。残りの要素は各引数の型を意味します。

C

文字 (char)

c

文字を指すポインタ (char *)

H

short 整数 (short)

h

short 整数を指すポインタ (short *)

I

整数 (char, short, int)

i

整数を指すポインタ (char *, short *, int *)

L

long int

l

long int へのポインタ (long *)

F

実数 (float)

f

実数へのポインタ (float *)

D

実数 (double)

d

実数へのポインタ(double *)

S

不変 (immutable) の文字列 (const char *)

s

変更可能(mutable)な文字列 (char *)

A

配列 (const type[])

a

変更可能 (mutable) な配列 (type[])

P

ポインタ (void *)

p

変更可能 (mutable) なポインタ (void *)

0

void 関数 (これはプロトタイプの最初の文字でなければならない)

cbtype は型修飾子 0, C, I, H, L, F, D, S そして P から成ります。 例えば,

DL.callback('IPP'){|ptr1,ptr2|
  str1 = ptr1.ptr.to_s
  str2 = ptr2.ptr.to_s
  str1 <=> str2
}

Ruby のオブジェクトから C の型への変換

DL.#callbackDL::Handle#sym で指定した 型指定子に従って Ruby のオブジェクトと C の型は相互に変換されます。

特異メソッド

定義 説明
last_error
last_error=
win32_last_error
win32_last_error=

モジュール関数

定義 説明
callback(type) -> DL::Symbol
define_callback(type) -> DL::Symbol

Cレベルのコールバック関数を定義し、その関数(へのポインタ)を保持した DL::Symbol を返します。

dlopen(lib) -> DL::Handle
dlopen(lib) {|handle| ... } -> DL::Handle

ダイナミックライブラリ lib をロードし、 DL::Handle として返します。

malloc(size) -> DL::PtrData

size バイトのメモリ領域を確保し、 その領域を指す DL::PtrData オブジェクトを返します。

remove_callback(sym) -> nil

コールバック関数 sym を DL::FuncTable から削除します。 以後 sym.call を呼ぶことができなくなります。

sizeof(type) -> Integer

型のサイズを返します。

strdup(str) -> DL::PtrData

文字列 str を複製し、その新しい文字列へのポインタ DL::PtrData オブジェクトを返します。

定数

定義 説明
ALIGN_DOUBLE
ALIGN_FLOAT
ALIGN_INT
ALIGN_LONG
ALIGN_SHORT
ALIGN_VOIDP
DLSTACK
FREE

free(3) を表す DL::Symbol です。 この定数に新たに DL::Symbol を代入しても、DL::PtrData にデフォルトでセットされる free 関数が変わることはありません。

FuncTable
MAX_ARG
RTLD_GLOBAL
RTLD_LAZY
RTLD_NOW