]> gitweb.factorcode.org Git - factor.git/blob - basis/alien/remote-control/remote-control.factor
Switch to https urls
[factor.git] / basis / alien / remote-control / remote-control.factor
1 ! Copyright (C) 2007, 2008 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.data eval io.encodings.utf8
4 kernel kernel.private threads words ;
5 IN: alien.remote-control
6
7 : eval-callback ( -- callback )
8     void* { c-string } 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 word-optimized? [ execute ] [ drop f ] if ; inline
19
20 : init-remote-control ( -- )
21     \ eval-callback ?callback OBJ-EVAL-CALLBACK set-special-object
22     \ yield-callback ?callback OBJ-YIELD-CALLBACK set-special-object
23     \ sleep-callback ?callback OBJ-SLEEP-CALLBACK set-special-object ;
24
25 MAIN: init-remote-control