summaryrefslogtreecommitdiff
path: root/2d/observer.scm
diff options
context:
space:
mode:
Diffstat (limited to '2d/observer.scm')
-rw-r--r--2d/observer.scm82
1 files changed, 0 insertions, 82 deletions
diff --git a/2d/observer.scm b/2d/observer.scm
deleted file mode 100644
index 29dc15c..0000000
--- a/2d/observer.scm
+++ /dev/null
@@ -1,82 +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:
-;;
-;; Event listener.
-;;
-;;; Code:
-
-(define-module (2d observer)
- #:use-module (srfi srfi-1)
- #:use-module (srfi srfi-9)
- #:use-module (srfi srfi-26)
- #:export (<observer>
- make-observer
- alist->observer
- observer?
- observer-events
- observer-callbacks
- observer-on
- observer-off
- observer-clear
- observer-trigger))
-
-(define-record-type <observer>
- (%make-observer events)
- observer?
- (events observer-events))
-
-(define (make-observer)
- "Create a new observer."
- (%make-observer (make-hash-table)))
-
-(define (alist->observer alst)
- "Return a new observer that registers the callbacks for events in
-the alist ALST. Each pair in ALST should map one event type to one
-callback procedure. For multiple event handlers of the same type, use
-multiple pairs."
- (let ((observer (make-observer)))
- (for-each (lambda (e) (observer-on observer (car e) (cdr e))) alst)
- observer))
-
-(define (observer-callbacks observer event-type)
- "Return a list of callback procedures for the given EVENT-TYPE. The
-null list is returned if there are no callbacks for EVENT-TYPE."
- (or (hash-ref (observer-events observer) event-type)
- '()))
-
-(define (observer-on observer event-type proc)
- "Register PROC as a callback for the given EVENT-TYPE."
- (hash-set! (observer-events observer)
- event-type
- (cons proc (observer-callbacks observer event-type))))
-
-(define (observer-off observer event-type proc)
- "Unregister PROC as a callabck for the given EVENT-TYPE."
- (hash-set! (observer-events observer)
- event-type
- (delete proc (observer-callbacks observer event-type))))
-
-(define (observer-clear observer event-type)
- "Unregister all callbacks for EVENT-TYPE."
- (hash-remove! (observer-events observer) event-type))
-
-(define (observer-trigger observer event-type . args)
- "Call all callbacks for EVENT-TYPE with the given ARGS."
- (for-each (cut apply <> args)
- (observer-callbacks observer event-type)))