From 3cdb7a1fb7cb5dfe08014bd0e76e8a3a4de2f880 Mon Sep 17 00:00:00 2001
From: Mike Solomon <mike@apollinemike.com>
Date: Sat, 7 Aug 2010 20:43:45 +0200
Subject: [PATCH 1/2] Create ly:define-event-class

---
 scm/define-event-classes.scm |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/scm/define-event-classes.scm b/scm/define-event-classes.scm
index 4de8c5d..ebcdbde 100644
--- a/scm/define-event-classes.scm
+++ b/scm/define-event-classes.scm
@@ -71,6 +71,15 @@
     (cdr rel)))
  event-classes)
 
+(define-public (ly:define-event-class leaf heritage)
+  (cond
+   ((not (eq? leaf (car heritage)))
+    (ly:warning "All classes must be the last in their matrilineal line."))
+   ((not (equal? (cdr heritage) (hashq-ref ancestor-lookup (cadr heritage) '())))
+    (ly:warning "All classes must have a well-defined pedigree with respect to StreamEvent."))
+   (else (hashq-set! ancestor-lookup leaf heritage))))
+
+
 ;; TODO: Allow entering more complex classes, by taking unions.
 (define-public (ly:make-event-class leaf)
  (hashq-ref ancestor-lookup leaf))
-- 
1.6.6.1

