]> gitweb.factorcode.org Git - factor.git/blob - extra/central/central.factor
added DISPOSABLE-CENTRAL: to extra/central
[factor.git] / extra / central / central.factor
1 USING: destructors kernel lexer namespaces parser sequences words ;
2
3 IN: central
4
5 : define-central-getter ( word -- )
6     dup [ get ] curry (( -- obj )) define-declared ;
7
8 : define-centrals ( str -- getter setter )
9     [ create-in dup define-central-getter ]
10     [ "with-" prepend create-in dup make-inline ] bi ;
11
12 : central-setter-def ( word with-word -- with-word quot )
13     [ with-variable ] with ;
14
15 : disposable-setter-def ( word with-word -- with-word quot )
16     [ pick [ drop with-variable ] with-disposal ] with ;
17
18 : declare-central ( with-word quot -- ) (( object quot -- )) define-declared ;
19
20 : define-central ( word-name -- )
21     define-centrals central-setter-def declare-central ;
22
23 : define-disposable-central ( word-name -- )
24     define-centrals disposable-setter-def declare-central ;
25
26 SYNTAX: CENTRAL: ( -- ) scan define-central ;
27
28 SYNTAX: DISPOSABLE-CENTRAL: ( -- ) scan define-disposable-central ;