# DL::Importable

- dl.so
- DL
- DL::Types
- dl/struct.rb

## スーパークラス

- Module

## メソッド

`dlload(lib,...)`

  DL::dlopen を用いてライブラリをロードし、extend した モジュール内でそのライブラリで定義されている参照可能なシンボルを取得できるよ うにする。

`extern(prototype)`

  Cの関数プロトタイプを与えることによって、その関数を呼び出すメソッドを動的に 定義することができる。頭文字が大文字の場合は小文字に自動的に変換される。

`callback(proto)`

  Cの関数プロトタイプを与えることによって、既に定義されたRubyのメソッドをCの コールバック関数として扱うことができるようにする。 DL::Symbolオブジェクトを返す。

`typealias(newtype, oldtype)`

  newtype型をoldtype型のエイリアスとして定義する。 newtypeで与えた型は`extern`や`callback`メソッド のプロトタイプを与えるときに利用する。

`symbol(sym[, typespec])`

  シンボル名がsymのシンボルを取り出す。 typespecには型情報を与え、DL::Symbolオブジェクトを返す。 typespecが省略された場合、シンボルへの参照をDL::PtrDataオブジェクト として返す。

## 補足

実際には、上記のメソッドは、`DL::Importable::Internal`において定義されている。 `Importable`モジュールは、`Internal`モジュールをインクルードしているために、 `Internal`で定義されたメソッドは`Importable`モジュールによって提供される。

links: [DL] [DL::PtrData] [DL::Symbol] [Module] [dl.so] [dl/struct.rb] [dl/types.rb]
reverse links: [dl.so] [dl/struct.rb] [dl/types.rb]