1 ! Copyright (C) 2007, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors alien alien.c-types alien.data alien.strings
4 parser threads words kernel.private kernel io.encodings.utf8
6 IN: alien.remote-control
8 : eval-callback ( -- callback )
9 void* { char* } "cdecl"
10 [ eval>string utf8 malloc-string ] alien-callback ;
12 : yield-callback ( -- callback )
13 void { } "cdecl" [ yield ] alien-callback ;
15 : sleep-callback ( -- callback )
16 void { long } "cdecl" [ sleep ] alien-callback ;
18 : ?callback ( word -- alien )
19 dup optimized? [ execute ] [ drop f ] if ; inline
21 : init-remote-control ( -- )
22 \ eval-callback ?callback 16 set-special-object
23 \ yield-callback ?callback 17 set-special-object
24 \ sleep-callback ?callback 18 set-special-object ;
26 MAIN: init-remote-control