]> gitweb.factorcode.org Git - factor.git/blob - basis/models/mapping/mapping.factor
c401714dd4c02634e4246b8f0cd464a344cf00e4
[factor.git] / basis / models / mapping / mapping.factor
1 ! Copyright (C) 2008 Slava Pestov.\r
2 ! See http://factorcode.org/license.txt for BSD license.\r
3 USING: accessors models kernel assocs ;\r
4 IN: models.mapping\r
5 \r
6 TUPLE: mapping < model assoc ;\r
7 \r
8 : <mapping> ( models -- mapping )\r
9     f mapping new-model\r
10         over values >>dependencies\r
11         swap >>assoc ;\r
12 \r
13 M: mapping model-changed\r
14     nip [ assoc>> [ value>> ] assoc-map ] keep set-model ;\r
15 \r
16 M: mapping model-activated\r
17     dup model-changed ;\r
18 \r
19 M: mapping update-model\r
20     [ value>> ] [ assoc>> ] bi\r
21     [ swapd at set-model ] curry assoc-each ;\r