| 
									
										
										
										
											2009-07-31 22:48:17 -04:00
										 |  |  | ! (c)2009 Joe Groff bsd license | 
					
						
							|  |  |  | USING: accessors classes classes.tuple fry kernel sequences slots ;
 | 
					
						
							|  |  |  | IN: classes.tuple.change-tracking | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TUPLE: change-tracking-tuple | 
					
						
							|  |  |  |     { changed? boolean } ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PREDICATE: change-tracking-tuple-class < tuple-class | 
					
						
							|  |  |  |     change-tracking-tuple subclass-of? ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : changed? ( tuple -- changed? ) changed?>> ; inline
 | 
					
						
							|  |  |  | : clear-changed ( tuple -- tuple ) f >>changed? ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : filter-changed ( sequence -- sequence' ) [ changed? ] filter ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <PRIVATE
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-13 19:19:03 -04:00
										 |  |  | M: change-tracking-tuple-class writer-quot ( class slot-spec -- quot )
 | 
					
						
							| 
									
										
										
										
											2009-07-31 22:48:17 -04:00
										 |  |  |     [ call-next-method ] | 
					
						
							|  |  |  |     [ name>> "changed?" = [ '[ _ [ t >>changed? drop ] bi ] ] unless ] bi ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PRIVATE>
 | 
					
						
							|  |  |  | 
 |