Symbol.new(addr, name = nil, type = nil)type が nil でないなら 型 type の Symbol オブジェクト sym を作成する。 関数が割り当てられているなら addr はそのアドレス。type が nil なら DL::PtrData オブジェクトを返す。
型の指定には C 言語の型を表す文字で構成した文字列を使う。 文字列の 1 文字目には関数の戻り値を、 2 文字目以降には関数の引数を表す文字を順に書いていく。 型を表す文字と対応する C 言語の型は次のようになっている。
"C" char"c", "s" char *"H" short"h" short *"I" int"i" int *"L" long"l" long *"F" float"f" float *"D" double"d" double *"0" void"P", "p" void *"S" const char *"a", "A" [] (配列)たとえば戻り値が int、引数が const char * と long である関数の型は
"ISL" という文字列で指定する。
Symbol.char2type(char)型に相当する文字 char を取り、C 言語の型修飾を返す。
proto()関数のプロトタイプを返す。
Symbol#name()関数名を返す。
cproto(),
to_s()C 言語形式のプロトタイプを返す。
Symbol#inspect()人間が読みやすい形式の文字列を返す(訳注:意訳)。
call(arg1,arg2,...,argN),
self[](arg1,arg2,...,argN)パラメータ arg1, arg2, ... argN で関数を呼び出す。結果は、戻り値 r やパラメータrs からなる。rs は配列。
to_ptr対応する DL::PtrData オブジェクト ptr を返す。