]> gitweb.factorcode.org Git - factor.git/blob - basis/alien/remote-control/remote-control.factor
9cd9050ea86544163df0ac459e91ccfa96db5780
[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.strings parser
4 threads words kernel.private kernel io.encodings.utf8 eval ;
5 IN: alien.remote-control
6
7 : eval-callback ( -- callback )
8     "void*" { "char*" } "cdecl"
9     [ eval>string utf8 malloc-string ] alien-callback ;
10
11 : yield-callback ( -- callback )
12     "void" { } "cdecl" [ yield ] alien-callback ;
13
14 : sleep-callback ( -- callback )
15     "void" { "long" } "cdecl" [ sleep ] alien-callback ;
16
17 : ?callback ( word -- alien )
18     dup compiled>> [ execute ] [ drop f ] if ; inline
19
20 : init-remote-control ( -- )
21     \ eval-callback ?callback 16 setenv
22     \ yield-callback ?callback 17 setenv
23     \ sleep-callback ?callback 18 setenv ;
24
25 MAIN: init-remote-control