]> gitweb.factorcode.org Git - factor.git/blob - extra/classes/tuple/change-tracking/change-tracking.factor
core, basis, extra: Remove DOS line endings from files.
[factor.git] / extra / classes / tuple / change-tracking / change-tracking.factor
1 ! (c)2009 Joe Groff bsd license
2 USING: accessors classes classes.tuple fry kernel sequences slots ;
3 IN: classes.tuple.change-tracking
4
5 TUPLE: change-tracking-tuple
6     { changed? boolean } ;
7
8 PREDICATE: change-tracking-tuple-class < tuple-class
9     change-tracking-tuple subclass-of? ;
10
11 : changed? ( tuple -- changed? ) changed?>> ; inline
12 : clear-changed ( tuple -- tuple ) f >>changed? ; inline
13
14 : filter-changed ( sequence -- sequence' ) [ changed? ] filter ; inline
15
16 <PRIVATE
17
18 M: change-tracking-tuple-class writer-quot ( class slot-spec -- quot )
19     [ call-next-method ]
20     [ name>> "changed?" = [ '[ _ [ t >>changed? drop ] bi ] ] unless ] bi ;
21
22 PRIVATE>