]> gitweb.factorcode.org Git - factor.git/blob - basis/refs/refs.factor
Create basis vocab root
[factor.git] / basis / refs / refs.factor
1 ! Copyright (C) 2007, 2008 Slava Pestov
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: classes.tuple kernel assocs accessors ;
4 IN: refs
5
6 TUPLE: ref assoc key ;
7
8 : >ref< [ key>> ] [ assoc>> ] bi ; inline
9
10 : delete-ref ( ref -- ) >ref< delete-at ;
11 GENERIC: get-ref ( ref -- obj )
12 GENERIC: set-ref ( obj ref -- )
13
14 TUPLE: key-ref < ref ;
15 C: <key-ref> key-ref ( assoc key -- ref )
16 M: key-ref get-ref key>> ;
17 M: key-ref set-ref >ref< rename-at ;
18
19 TUPLE: value-ref < ref ;
20 C: <value-ref> value-ref ( assoc key -- ref )
21 M: value-ref get-ref >ref< at ;
22 M: value-ref set-ref >ref< set-at ;