Scheme 処理系の FFI callback の仕様を見る

FFI callback とは何か?

Scheme の手続きを C のコールバック関数として渡す事の出来る仕組み。

着目する点

  • マーシャシリングを「誰が、いつ、どのように」やっているか
  • API

Ypsilon

callback 関数を引数に持つ、C 関数を Scheme から利用する際に callback の 戻り値と引数を指定する。
マーシャリングは Ypsilon が行う。

(define-function int cairo_font_face_set_user_data (void* void* void* (c-callback void (void*))))	

Ikarus

Ypsilon とほぼ同じ。

((make-c-callback return-type parameter-types) scheme-procedure)

c-wrapper(Gauche

同様。

(make-c-func-ptr <c-void> (list <qdata_t> <qtype_t> <qtime_t>))