]> gitweb.factorcode.org Git - factor.git/blob - extra/classes/tuple/change-tracking/change-tracking.factor
factor: trim using lists
[factor.git] / extra / classes / tuple / change-tracking / change-tracking.factor
1 ! Copyright (C) 2009 Joe Groff.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors classes classes.tuple kernel sequences slots ;
4 IN: classes.tuple.change-tracking
5
6 TUPLE: change-tracking-tuple
7     { changed? boolean } ;
8
9 PREDICATE: change-tracking-tuple-class < tuple-class
10     change-tracking-tuple subclass-of? ;
11
12 : changed? ( tuple -- changed? ) changed?>> ; inline
13 : clear-changed ( tuple -- tuple ) f >>changed? ; inline
14
15 : filter-changed ( sequence -- sequence' ) [ changed? ] filter ; inline
16
17 <PRIVATE
18
19 M: change-tracking-tuple-class writer-quot ( class slot-spec -- quot )
20     [ call-next-method ]
21     [ name>> "changed?" = [ '[ _ [ t >>changed? drop ] bi ] ] unless ] bi ;
22
23 PRIVATE>