]> gitweb.factorcode.org Git - factor.git/blob - basis/alien/remote-control/remote-control.factor
rename current string-mangling "char*" to "c-string". char* is now just a boring...
[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* { c-string } "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