要約
UNIX の dlopen(3) や Windows の LoadLibrary() などのダイナミックリンカへの低レベルなインターフェースを提供するモジュールです。
目次
- 特異メソッド
- モジュール関数
- 定数
-
- ALIGN_CHAR
- ALIGN_DOUBLE
- ALIGN_FLOAT
- ALIGN_INT
- ALIGN_LONG
- ALIGN_LONG_LONG
- ALIGN_SHORT
- ALIGN_VOIDP
- BUILD_RUBY_PLATFORM
- BUILD_RUBY_VERSION
- NULL
- RTLD_GLOBAL
- RTLD_LAZY
- RTLD_NOW
- RUBY_FREE
- SIZEOF_CHAR
- SIZEOF_DOUBLE
- SIZEOF_FLOAT
- SIZEOF_INT
- SIZEOF_LONG
- SIZEOF_LONG_LONG
- SIZEOF_SHORT
- SIZEOF_VOIDP
- TYPE_CHAR
- TYPE_DOUBLE
- TYPE_FLOAT
- TYPE_INT
- TYPE_LONG
- TYPE_LONG_LONG
- TYPE_SHORT
- TYPE_VOID
- TYPE_VOIDP
特異メソッド
fiddle? -> bool[permalink][rdoc]-
DL 内部で fiddle を利用するならば真を返します。
モジュール関数
dlopen(lib) -> DL::Handle[permalink][rdoc]dlopen(lib) {|handle| ... } -> DL::Handle-
ダイナミックライブラリ lib をロードし、 DL::Handle として返します。
ブロックが与えられている場合は、DL::Handle 引数として与えられたブロックを実行します。DL::Handle を返します。
DL::Handle.new(lib) と等価です。
- [PARAM] lib:
- ロードしたいライブラリを文字列で与えます。
- [EXCEPTION] RuntimeError:
- dlopen(3) に失敗した時に発生します。
dlunwrap(addr) -> object[permalink][rdoc]-
指定されたアドレスの Ruby オブジェクトを返します。
- [PARAM] addr:
- DL.#dlwrap が返した Ruby オブジェクトのアドレス(整数)を指定します。
例:
require 'dl' s = 'abc' p addr = DL.dlwrap(s) #=> 136122440 p DL.dlunwrap(addr) #=> "abc"
dlwrap(obj) -> Integer[permalink][rdoc]-
指定されたオブジェクト obj のアドレスを表す整数を返します。
- [PARAM] obj:
- Ruby のオブジェクトを指定します。
例:
require 'dl' s = 'abc' p addr = DL.dlwrap(s) #=> 136122440 p DL.dlunwrap(addr) #=> "abc"
free(addr) -> nil[permalink][rdoc]-
指定された addr が指すメモリ領域を開放します。
必ず DL.#malloc が返した整数を addr に与えなければいけません。そうでない場合、ruby インタプリタが異常終了します。
- [PARAM] addr:
- DL.#malloc で確保されたメモリ領域を指す整数を指定します。
例:
require 'dl' addr = DL.malloc(10) p addr #=> 136942800 DL.free(addr)
malloc(size) -> Integer[permalink][rdoc]-
size バイトのメモリ領域を確保し、その領域を指す整数を返します。
メモリを確保できなかった場合、例外 NoMemoryError が発生するか、あるいは ruby インタプリタが強制終了します。
- [PARAM] size:
- 必要なメモリ領域のサイズを整数で指定します。
realloc(addr, size) -> Integer[permalink][rdoc]-
addr で指定したメモリ領域を size バイトにリサイズし、その領域を指す整数を返します。
addr には DL.#malloc で確保したメモリ領域を渡します。また、リサイズの結果、返り値が addr と異なる場合があります。
- [PARAM] addr:
- リサイズしたいメモリアドレス整数
- [PARAM] size:
- リサイズ後のバイト数
[SEE_ALSO] DL.#malloc
定数
ALIGN_CHAR -> Integer[permalink][rdoc]-
C の構造体における char のアライメントの値。
ALIGN_DOUBLE -> Integer[permalink][rdoc]-
C の構造体における double のアライメントの値。
ALIGN_FLOAT -> Integer[permalink][rdoc]-
C の構造体における float のアライメントの値。
ALIGN_INT -> Integer[permalink][rdoc]-
C の構造体における int のアライメントの値。
ALIGN_LONG -> Integer[permalink][rdoc]-
C の構造体における long のアライメントの値。
ALIGN_LONG_LONG -> Integer[permalink][rdoc]-
C の構造体における long long のアライメントの値。
ALIGN_SHORT -> Integer[permalink][rdoc]-
C の構造体における short のアライメントの値。
ALIGN_VOIDP -> Integer[permalink][rdoc]-
C の構造体における void* のアライメントの値。
BUILD_RUBY_PLATFORM -> String[permalink][rdoc]-
ビルドに用いた ruby のプラットフォームを表す文字列。
通常、Object::RUBY_PLATFORM と同じ。
BUILD_RUBY_VERSION -> String[permalink][rdoc]-
ビルドに用いた ruby のバージョンを表す文字列。
通常、Object::RUBY_VERSION と同じ。
NULL -> DL::CPtr[permalink][rdoc]-
C の NULL ポインタ
RTLD_GLOBAL -> Integer[permalink][rdoc]-
dlopen のフラグ RTLD_GLOBAL を表す定数です。
DL::Handle.new の flags として用います。
詳しくは dlopen(3) を見てください。
RTLD_LAZY -> Integer[permalink][rdoc]-
dlopen のフラグ RTLD_LAZY を表す定数です。
DL::Handle.new の flags として用います。
詳しくは dlopen(3) を見てください。
RTLD_NOW -> Integer[permalink][rdoc]-
dlopen のフラグ RTLD_NOW を表す定数です。
DL::Handle.new の flags として用います。
詳しくは dlopen(3) を見てください。
RUBY_FREE -> Integer[permalink][rdoc]-
ruby_xfree の関数ポインタのアドレスの値。
SIZEOF_CHAR -> Integer[permalink][rdoc]-
Cでの sizeof(char) の値
SIZEOF_DOUBLE -> Integer[permalink][rdoc]-
Cでの sizeof(double) の値
SIZEOF_FLOAT -> Integer[permalink][rdoc]-
Cでの sizeof(float) の値
SIZEOF_INT -> Integer[permalink][rdoc]-
Cでの sizeof(int) の値
SIZEOF_LONG -> Integer[permalink][rdoc]-
Cでの sizeof(long) の値
SIZEOF_LONG_LONG -> Integer[permalink][rdoc]-
Cでの sizeof(long long) の値
SIZEOF_SHORT -> Integer[permalink][rdoc]-
Cでの sizeof(short) の値
SIZEOF_VOIDP -> Integer[permalink][rdoc]-
Cでの sizeof(void*) の値
TYPE_CHAR -> Integer[permalink][rdoc]-
C の char 型を表す定数。
unsigned char を表すには符号を逆転させます。
TYPE_DOUBLE -> Integer[permalink][rdoc]-
C の double 型を表す定数。
TYPE_FLOAT -> Integer[permalink][rdoc]-
C の float 型を表す定数。
TYPE_INT -> Integer[permalink][rdoc]-
C の int 型を表す定数。
unsigned int を表すには符号を逆転させます。
TYPE_LONG -> Integer[permalink][rdoc]-
C の long 型を表す定数。
unsigned long を表すには符号を逆転させます。
TYPE_LONG_LONG -> Integer[permalink][rdoc]-
C の long long 型を表す定数。
unsigned long long を表すには符号を逆転させます。
TYPE_SHORT -> Integer[permalink][rdoc]-
C の short 型を表す定数。
unsigned short を表すには符号を逆転させます。
TYPE_VOID -> Integer[permalink][rdoc]-
C の void を表す定数。
TYPE_VOIDP -> Integer[permalink][rdoc]-
C の void* 型を表す定数。