| 
									
										
										
										
											2009-03-26 00:00:02 -04:00
										 |  |  | ! Copyright (C) 2009 Slava Pestov. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  | USING: accessors alien alien.strings assocs io.backend kernel namespaces ;
 | 
					
						
							| 
									
										
										
										
											2009-03-26 00:00:02 -04:00
										 |  |  | IN: alien.libraries | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  | : dlopen ( path -- dll ) native-string>alien (dlopen) ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : dlsym ( name dll -- alien ) [ native-string>alien ] dip (dlsym) ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-26 00:00:02 -04:00
										 |  |  | SYMBOL: libraries | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | libraries [ H{ } clone ] initialize
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TUPLE: library path abi dll ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : library ( name -- library ) libraries get at ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : <library> ( path abi -- library )
 | 
					
						
							|  |  |  |     over dup [ dlopen ] when \ library boa ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : load-library ( name -- dll )
 | 
					
						
							|  |  |  |     library dup [ dll>> ] when ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : add-library ( name path abi -- )
 | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  |     <library> swap libraries get set-at ;
 |