Merge branch 'master' of git://factorcode.org/git/factor
[factor/jcg.git] / basis / alien / remote-control / remote-control.factor
blob9cd9050ea86544163df0ac459e91ccfa96db5780
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
7 : eval-callback ( -- callback )
8     "void*" { "char*" } "cdecl"
9     [ eval>string utf8 malloc-string ] alien-callback ;
11 : yield-callback ( -- callback )
12     "void" { } "cdecl" [ yield ] alien-callback ;
14 : sleep-callback ( -- callback )
15     "void" { "long" } "cdecl" [ sleep ] alien-callback ;
17 : ?callback ( word -- alien )
18     dup compiled>> [ execute ] [ drop f ] if ; inline
20 : init-remote-control ( -- )
21     \ eval-callback ?callback 16 setenv
22     \ yield-callback ?callback 17 setenv
23     \ sleep-callback ?callback 18 setenv ;
25 MAIN: init-remote-control