34 lines
		
	
	
		
			682 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			682 B
		
	
	
	
		
			Factor
		
	
	
|  | ! Copyright (C) 2005, 2006 Kevin Reid. | ||
|  | ! See http://factorcode.org/license.txt for BSD license. | ||
|  | IN: cocoa.callbacks | ||
|  | USING: assocs kernel namespaces cocoa cocoa.classes | ||
|  | cocoa.subclassing debugger ;
 | ||
|  | 
 | ||
|  | SYMBOL: callbacks | ||
|  | 
 | ||
|  | : reset-callbacks ( -- )
 | ||
|  |     H{ } clone callbacks set-global ;
 | ||
|  | 
 | ||
|  | reset-callbacks | ||
|  | 
 | ||
|  | CLASS: { | ||
|  |     { +name+ "FactorCallback" } | ||
|  |     { +superclass+ "NSObject" } | ||
|  | } | ||
|  | 
 | ||
|  | { "perform:" "void" { "id" "SEL" "id" } | ||
|  |     [ 2drop callbacks get at try ] | ||
|  | } | ||
|  | 
 | ||
|  | { "dealloc" "void" { "id" "SEL" } | ||
|  |     [ | ||
|  |         drop
 | ||
|  |         dup callbacks get delete-at
 | ||
|  |         SUPER-> dealloc | ||
|  |     ] | ||
|  | } ;
 | ||
|  | 
 | ||
|  | : <FactorCallback> ( quot -- id )
 | ||
|  |     FactorCallback -> alloc -> init | ||
|  |     [ callbacks get set-at ] keep ;
 |