Gauche:FFIと型表現

Gauche:FFIと型表現

Shiro(2021/05/03 08:43:27 UTC): Gauche内でCの型表現に関係する箇所がいくつかあるんだけど、必要に迫られてアドホックにやってるのでバラバラ。FFI導入を機に整理したい。

今あるコンポーネント

Stub type

define-cprocの引数と戻り値で使う ::<int> など。これはSchemeとCのブリッジの役割も担っている。

CiSE type

CiSEでCの型を表記する表現。::long とか ::(const char*) とか。

ftype

バイナリデータを扱うために書きかけになってるもの。

C parsed type representation

lang.c でCコードをパーズする際の型情報の表現。

Foreign pointer

実行時に外部オブジェクトへのポインタを扱う仕組みだが、attributeに型情報を載せることは可。

今のところ、外部ライブラリごとにカスタムでインタフェースをCで書いてるので、 汎用的に型情報をメタに扱う仕組みはない。

Native call

ネイティブ関数を呼び出す低レベルAPI

FFIで必要なもの

ftypeを軸にするのが良さそう。

ここまでftypeが重要ならコアに組み込むべきか。

More ...