[plt-scheme] Question about bindings...
On Jul 9, Aaron Leung wrote:
> I've sometimes heard people talk about creating 'bindings' for GTk
> or OpenGL or some other similar thing. I have a vague idea what
> this means, but can someone explain in a little more detail?
The process of linking GTk or whatever into a .so file that will make
Scheme-accessible functions that will call the library functions.
For example, putting this in a C file:
static Scheme_Object *s_XmmsPlay(int argc, Scheme_Object **argv)
{
xmms_remote_play(XMMS_SESSION); return scheme_void;
}
Scheme_Object *scheme_reload(Scheme_Env *env)
{
scheme_add_global("xmms:play",
scheme_make_prim_w_arity(s_XmmsPlay, "play", 0, 0),
env);
}
and compiling it as an MzScheme extension, linking the xmmsctrl
library in, will create a Scheme `binding' for the xmmsctrl `play'
function.
Using my ffi thing, you could substitute that whole process with
(define (xmms:play)
(ffi-call (ffi-obj (ffi-lib "libxmms.so") "xmms_remote_play")
'(0) '(int) 'void))
but for some reason people doesn't seem to be excited about this as I
do...
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://www.barzilay.org/ Maze is Life!