factor/basis/alien/remote-control/remote-control.factor

26 lines
854 B
Factor

! Copyright (C) 2007, 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.data eval io.encodings.utf8
kernel kernel.private threads words ;
IN: alien.remote-control
: eval-callback ( -- callback )
void* { c-string } cdecl
[ eval>string utf8 malloc-string ] alien-callback ;
: yield-callback ( -- callback )
void { } cdecl [ yield ] alien-callback ;
: sleep-callback ( -- callback )
void { long } cdecl [ sleep ] alien-callback ;
: ?callback ( word -- alien )
dup optimized? [ execute ] [ drop f ] if ; inline
: init-remote-control ( -- )
\ eval-callback ?callback OBJ-EVAL-CALLBACK set-special-object
\ yield-callback ?callback OBJ-YIELD-CALLBACK set-special-object
\ sleep-callback ?callback OBJ-SLEEP-CALLBACK set-special-object ;
MAIN: init-remote-control