]> gitweb.factorcode.org Git - factor.git/blob - basis/models/delay/delay.factor
core, basis, extra: Remove DOS line endings from files.
[factor.git] / basis / models / delay / delay.factor
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors fry kernel models timers ;
4 IN: models.delay
5
6 TUPLE: delay < model model timeout timer ;
7
8 : update-delay-model ( delay -- )
9     [ model>> value>> ] keep set-model ;
10
11 : <delay> ( model timeout -- delay )
12     f delay new-model
13         swap >>timeout
14         over >>model
15     [ add-dependency ] keep ;
16
17 : stop-delay ( delay -- )
18     timer>> [ stop-timer ] when* ;
19
20 : start-delay ( delay -- )
21     [ '[ _ f >>timer update-delay-model ] ]
22     [ timeout>> later ]
23     [ timer<< ] tri ;
24
25 M: delay model-changed nip dup stop-delay start-delay ;
26
27 M: delay model-activated update-delay-model ;