1 ! (c)2009 Joe Groff bsd license
2 USING: accessors classes classes.tuple fry kernel sequences slots ;
3 IN: classes.tuple.change-tracking
5 TUPLE: change-tracking-tuple
8 PREDICATE: change-tracking-tuple-class < tuple-class
9 change-tracking-tuple subclass-of? ;
11 : changed? ( tuple -- changed? ) changed?>> ; inline
12 : clear-changed ( tuple -- tuple ) f >>changed? ; inline
14 : filter-changed ( sequence -- sequence' ) [ changed? ] filter ; inline
18 M: change-tracking-tuple-class writer-quot ( class slot-spec -- )
20 [ name>> "changed?" = [ '[ _ [ t >>changed? drop ] bi ] ] unless ] bi ;