| 
									
										
										
										
											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 |