summaryrefslogtreecommitdiff
path: root/2d/time.scm
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2014-02-17 18:44:15 -0500
committerDavid Thompson <dthompson2@worcester.edu>2014-02-17 18:44:15 -0500
commit64de4d1bfe1a2d67b8aa3e846d8d86760682b395 (patch)
treee97b854cb3cf065c2e9c3fd7c377cdb563fc2201 /2d/time.scm
parent67ee61d144eff51fa3981812925bd7ca1a852368 (diff)
Move time module inside the signal module.
* 2d/signal.scm (make-boxed-signal, %signal-ref, %signal-set!): Don't export. (signal-sample, signal-delay, signal-throttle): New procedures. * 2d/time.scm: Delete file.
Diffstat (limited to '2d/time.scm')
-rw-r--r--2d/time.scm54
1 files changed, 0 insertions, 54 deletions
diff --git a/2d/time.scm b/2d/time.scm
deleted file mode 100644
index e17be49..0000000
--- a/2d/time.scm
+++ /dev/null
@@ -1,54 +0,0 @@
-;;; guile-2d
-;;; Copyright (C) 2013 David Thompson <dthompson2@worcester.edu>
-;;;
-;;; Guile-2d is free software: you can redistribute it and/or modify it
-;;; under the terms of the GNU Lesser General Public License as
-;;; published by the Free Software Foundation, either version 3 of the
-;;; License, or (at your option) any later version.
-;;;
-;;; Guile-2d is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;;; Lesser General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU Lesser General Public
-;;; License along with this program. If not, see
-;;; <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-;;
-;; Time-based signals.
-;;
-;;; Code:
-
-(define-module (2d time)
- #:use-module (2d agenda)
- #:use-module (2d coroutine)
- #:use-module (2d signals)
- #:export (time-every
- time-each
- time-delay))
-
-(define (time-every agenda delay value)
- "Create a new signal that emits VALUE every DELAY ticks of AGENDA.
-VALUE may be a signal, in which case the stored value of the signal
-will be emitted."
- (let ((ticker (make-root-signal (signal-ref-maybe value))))
- (define (tick)
- (signal-set! ticker (signal-ref-maybe value)))
- (schedule-interval agenda tick delay)
- ticker))
-
-(define (time-each agenda value)
- "Create a new signal that emits VALUE every agenda update."
- (time-every agenda 1 value))
-
-(define (time-delay agenda delay signal)
- "Create a new signal that delays propagation of values received from
-SIGNAL by DELAY ticks of AGENDA."
- (make-signal (signal-ref signal)
- (colambda (self from)
- (let ((value (signal-ref from)))
- (wait agenda delay)
- (signal-set! self value)))
- (list signal)))