]> gitweb.factorcode.org Git - factor.git/blob - basis/alien/remote-control/remote-control.factor
ae694bed9c4b8da031dc212c9e187df1d92e97ca
[factor.git] / basis / alien / remote-control / remote-control.factor
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
5 eval ;
6 IN: alien.remote-control
7
8 : eval-callback ( -- callback )
9     void* { char* } "cdecl"
10     [ eval>string utf8 malloc-string ] alien-callback ;
11
12 : yield-callback ( -- callback )
13     void { } "cdecl" [ yield ] alien-callback ;
14
15 : sleep-callback ( -- callback )
16     void { long } "cdecl" [ sleep ] alien-callback ;
17
18 : ?callback ( word -- alien )
19     dup optimized? [ execute ] [ drop f ] if ; inline
20
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 ;
25
26 MAIN: init-remote-control