2008-04-20 06:15:46 -04:00
|
|
|
! Copyright (C) 2007, 2008 Slava Pestov.
|
2007-09-20 18:09:08 -04:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2014-11-16 23:31:32 -05:00
|
|
|
USING: alien alien.c-types alien.data eval io.encodings.utf8
|
|
|
|
kernel kernel.private threads words ;
|
2007-09-20 18:09:08 -04:00
|
|
|
IN: alien.remote-control
|
|
|
|
|
2008-06-08 16:32:55 -04:00
|
|
|
: eval-callback ( -- callback )
|
2010-03-31 22:20:35 -04:00
|
|
|
void* { c-string } cdecl
|
2008-04-20 06:15:46 -04:00
|
|
|
[ eval>string utf8 malloc-string ] alien-callback ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-06-08 16:32:55 -04:00
|
|
|
: yield-callback ( -- callback )
|
2010-03-31 22:20:35 -04:00
|
|
|
void { } cdecl [ yield ] alien-callback ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-06-08 16:32:55 -04:00
|
|
|
: sleep-callback ( -- callback )
|
2010-03-31 22:20:35 -04:00
|
|
|
void { long } cdecl [ sleep ] alien-callback ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: ?callback ( word -- alien )
|
2015-07-15 14:13:52 -04:00
|
|
|
dup word-optimized? [ execute ] [ drop f ] if ; inline
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: init-remote-control ( -- )
|
2011-11-02 15:54:31 -04:00
|
|
|
\ eval-callback ?callback OBJ-EVAL-CALLBACK set-special-object
|
|
|
|
\ yield-callback ?callback OBJ-YIELD-CALLBACK set-special-object
|
|
|
|
\ sleep-callback ?callback OBJ-SLEEP-CALLBACK set-special-object ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
MAIN: init-remote-control
|