]> gitweb.factorcode.org Git - factor.git/blob - basis/alien/destructors/destructors.factor
1c5c975fe65f37c1de0052af67684a4cdd04338f
[factor.git] / basis / alien / destructors / destructors.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: functors destructors accessors kernel parser words
4 combinators.smart ;
5 IN: alien.destructors
6
7 SLOT: alien
8
9 FUNCTOR: define-destructor ( F -- )
10
11 F-destructor DEFINES-CLASS ${F}-destructor
12 <F-destructor> DEFINES <${F}-destructor>
13 &F DEFINES &${F}
14 |F DEFINES |${F}
15
16 WHERE
17
18 TUPLE: F-destructor alien disposed ;
19
20 : <F-destructor> ( alien -- destructor ) f F-destructor boa ; inline
21
22 M: F-destructor dispose* [ alien>> F ] drop-outputs ;
23
24 : &F ( alien -- alien ) dup <F-destructor> &dispose drop ; inline
25
26 : |F ( alien -- alien ) dup <F-destructor> |dispose drop ; inline
27
28 ;FUNCTOR
29
30 SYNTAX: DESTRUCTOR: scan-word define-destructor ;