Better handling of wrappers in locals
[factor/jcg.git] / basis / cocoa / callbacks / callbacks.factor
blob4ed9d7de67bf3f78160fa82ac012f0c9d3396d53
1 ! Copyright (C) 2005, 2006 Kevin Reid.
2 ! See http://factorcode.org/license.txt for BSD license.
3 IN: cocoa.callbacks
4 USING: assocs kernel namespaces cocoa cocoa.classes
5 cocoa.subclassing debugger ;
7 SYMBOL: callbacks
9 : reset-callbacks ( -- )
10     H{ } clone callbacks set-global ;
12 reset-callbacks
14 CLASS: {
15     { +name+ "FactorCallback" }
16     { +superclass+ "NSObject" }
19 { "perform:" "void" { "id" "SEL" "id" }
20     [ 2drop callbacks get at try ]
23 { "dealloc" "void" { "id" "SEL" }
24     [
25         drop
26         dup callbacks get delete-at
27         SUPER-> dealloc
28     ]
29 } ;
31 : <FactorCallback> ( quot -- id )
32     FactorCallback -> alloc -> init
33     [ callbacks get set-at ] keep ;