Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > dlライブラリ > DL::Symbolクラス

class DL::Symbol

クラスの継承リスト: DL::Symbol < Object < Kernel

要約

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

目次

特異メソッド
char2type new
インスタンスメソッド
[] call cproto to_s inspect name proto to_i to_ptr

特異メソッド

char2type(char) -> String | nil[permalink][rdoc]

[TODO]

型に相当する文字 char を取り、C 言語の型修飾を返します。 char が型指定子でない場合は、nil を返します。

[PARAM] char:
型指定子を文字列で与えます。
new(addr, type = nil, name = nil) -> DL::Symbol[permalink][rdoc]

[TODO]

ダイナミックライブラリの関数のアドレス addr から DL::Symbol を生成して返します。

[PARAM] addr:
関数のアドレスを整数で与えます。
[PARAM] type:
関数の型を型指定子を使って文字列で与えます。
[PARAM] name:
関数の名前を文字列で与えます。

インスタンスメソッド

call(*args) -> object[permalink][rdoc]
self[*args] -> object

[TODO]

自身が表しているライブラリ関数を呼び出します。関数の 戻り値 result と、 call に渡された引数の配列 args = [arg1, arg2, ... argN] からなる配列 [result, args] を返します。

require 'dl'
h = DL.dlopen('./libtest.so')
s = h.sym('slen', 'IS')
result, args = s.call('abc')
p result #=> 3
p args   #=> ["abc"]
 /* libtest.so */
 int slen(const char* s){
   return strlen(s);
 }
cproto -> String[permalink][rdoc]
to_s -> String

C 言語形式のプロトタイプを文字列で返します。

require 'dl'
h = DL.dlopen('./libtest.so')
s = h.sym('slen', 'IS')

p s.cproto #=> "int slen(const char *);"
inspect -> String[permalink][rdoc]

人間が読みやすい形式の文字列を返します。

name -> String[permalink][rdoc]

関数名を文字列で返します。

require 'dl'
h = DL.dlopen('./libtest.so')
s = h.sym('slen', 'IS')

p s.name #=> "slen"
proto -> String[permalink][rdoc]

関数のプロトタイプを DL モジュールの型指定文字列で返します。

require 'dl'
h = DL.dlopen('./libtest.so')
s = h.sym('slen', 'IS')

p s.proto #=> "IS"
to_i -> Integer[permalink][rdoc]

ダイナミックライブラリの関数のアドレスを返します。

to_ptr -> DL::PtrData[permalink][rdoc]

ダイナミックライブラリの関数へのポインタ DL::PtrData を返します。