factor/basis/alien/remote-control/remote-control.factor

26 lines
805 B
Factor
Raw Normal View History

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.
USING: accessors alien alien.c-types alien.strings parser
2008-07-28 23:03:13 -04:00
threads words kernel.private kernel io.encodings.utf8 eval ;
2007-09-20 18:09:08 -04:00
IN: alien.remote-control
2008-06-08 16:32:55 -04:00
: eval-callback ( -- callback )
2007-09-20 18:09:08 -04:00
"void*" { "char*" } "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 )
2007-09-20 18:09:08 -04:00
"void" { } "cdecl" [ yield ] alien-callback ;
2008-06-08 16:32:55 -04:00
: sleep-callback ( -- callback )
2007-09-20 18:09:08 -04:00
"void" { "long" } "cdecl" [ sleep ] alien-callback ;
: ?callback ( word -- alien )
dup optimized>> [ execute ] [ drop f ] if ; inline
2007-09-20 18:09:08 -04:00
: init-remote-control ( -- )
\ eval-callback ?callback 16 setenv
\ yield-callback ?callback 17 setenv
\ sleep-callback ?callback 18 setenv ;
MAIN: init-remote-control