diff options
Diffstat (limited to 'guile/starlet/clock.scm')
-rw-r--r-- | guile/starlet/clock.scm | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/guile/starlet/clock.scm b/guile/starlet/clock.scm index 6c11936..2e6e2ff 100644 --- a/guile/starlet/clock.scm +++ b/guile/starlet/clock.scm @@ -26,8 +26,11 @@ stop-clock! start-clock! reverse-clock! + reset-clock! clock-expired? + set-clock-expiration-time! + <starlet-delayed-clock> make-delayed-clock @@ -63,13 +66,15 @@ (stopped #:init-value #f + #:init-keyword #:stopped #:getter clock-stopped? #:setter set-clock-stopped!) (expiration-time #:init-value #f #:init-keyword #:expiration-time - #:getter expiration-time) + #:getter expiration-time + #:setter set-clock-expiration-time!) (reversed #:init-value #f @@ -78,14 +83,19 @@ (define* (make-clock - #:key (expiration-time #f)) + #:key + (expiration-time #f) + (stopped #f)) (make <starlet-clock> - #:expiration-time expiration-time)) + #:expiration-time expiration-time + #:stopped stopped)) (define (clock-expired? clock) - (> (elapsed-time clock) - (expiration-time clock))) + (and + clock + (> (elapsed-time clock) + (expiration-time clock)))) (define-method (elapsed-time (clock <starlet-clock>)) @@ -117,6 +127,13 @@ (set-clock-stopped! clock #f)) +(define-method (reset-clock! (clock <starlet-clock>)) + (set-start-elapsed-time! clock 0) + (set-start-real-time! clock (time-now)) + (set-clock-reversed! clock #f) + (set-clock-stopped! clock #f)) + + ;; Start the clock running, backwards (define-method (reverse-clock! (clock <starlet-clock>)) (set-start-elapsed-time! clock (elapsed-time clock)) |