22 lines
		
	
	
		
			560 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			22 lines
		
	
	
		
			560 B
		
	
	
	
		
			Factor
		
	
	
|  | ! Copyright (C) 2008 Slava Pestov. | ||
|  | ! See http://factorcode.org/license.txt for BSD license. | ||
|  | USING: accessors models kernel assocs ;
 | ||
|  | IN: models.mapping | ||
|  | 
 | ||
|  | TUPLE: mapping < model assoc ;
 | ||
|  | 
 | ||
|  | : <mapping> ( models -- mapping )
 | ||
|  |     f mapping new-model | ||
|  |         over values >>dependencies | ||
|  |         swap >>assoc ;
 | ||
|  | 
 | ||
|  | M: mapping model-changed | ||
|  |     nip [ assoc>> [ value>> ] assoc-map ] keep set-model ;
 | ||
|  | 
 | ||
|  | M: mapping model-activated | ||
|  |     dup model-changed ;
 | ||
|  | 
 | ||
|  | M: mapping update-model | ||
|  |     [ value>> ] [ assoc>> ] bi
 | ||
|  |     [ swapd at set-model ] curry assoc-each ;
 |