Merge branch 'master' of git://factorcode.org/git/factor
[factor/jcg.git] / basis / models / mapping / mapping.factor
blobc401714dd4c02634e4246b8f0cd464a344cf00e4
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
13 M: mapping model-changed\r
14     nip [ assoc>> [ value>> ] assoc-map ] keep set-model ;\r
16 M: mapping model-activated\r
17     dup model-changed ;\r
19 M: mapping update-model\r
20     [ value>> ] [ assoc>> ] bi\r
21     [ swapd at set-model ] curry assoc-each ;\r