1 ! Copyright (C) 2009 Joe Groff.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors classes classes.tuple fry kernel sequences slots ;
4 IN: classes.tuple.change-tracking
6 TUPLE: change-tracking-tuple
9 PREDICATE: change-tracking-tuple-class < tuple-class
10 change-tracking-tuple subclass-of? ;
12 : changed? ( tuple -- changed? ) changed?>> ; inline
13 : clear-changed ( tuple -- tuple ) f >>changed? ; inline
15 : filter-changed ( sequence -- sequence' ) [ changed? ] filter ; inline
19 M: change-tracking-tuple-class writer-quot ( class slot-spec -- quot )
21 [ name>> "changed?" = [ '[ _ [ t >>changed? drop ] bi ] ] unless ] bi ;