]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/define-event-classes.scm
MusicXML testsuite: Fix compilation for out-of-source builds...
[lilypond.git] / scm / define-event-classes.scm
index e1f3b4aa33b3122aff4d30b256c079c83bc6b8fc..c632e430a95f37a1dd184e8a8cdef5e4906ce132 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2005--2010 Erik Sandberg <mandolaerik@gmail.com>
+;;;; Copyright (C) 2005--2011 Erik Sandberg <mandolaerik@gmail.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
                 (RemoveContext ChangeParent Override Revert UnsetProperty
                                SetProperty music-event OldMusicEvent CreateContext Prepare
                                OneTimeStep Finish))
-    (music-event . (annotate-output-event
+    (music-event . (annotate-output-event footnote-event
                    arpeggio-event breathing-event extender-event span-event
       rhythmic-event dynamic-event break-event label-event percent-event
       key-change-event string-number-event stroke-finger-event tie-event
       part-combine-event part-combine-force-event
-      beam-forbid-event script-event
+      beam-forbid-event script-event tempo-change-event
       tremolo-event bend-after-event fingering-event glissando-event
       harmonic-event hyphen-event laissez-vibrer-event mark-event
       multi-measure-text-event note-grouping-event
@@ -50,8 +50,9 @@
     (break-span-event . (break-dynamic-span-event))
     (pedal-event . (sostenuto-event sustain-event una-corda-event))
     (rhythmic-event . (lyric-event melodic-event multi-measure-rest-event
-                                  percent-event
-                                  rest-event skip-event bass-figure-event))
+                                  double-percent-event percent-event
+                                  repeat-slash-event rest-event
+                                  skip-event bass-figure-event))
     (melodic-event . (cluster-note-event note-event))
     (() . (Announcement))
     (Announcement . (AnnounceNewContext))
     (cdr rel)))
  event-classes)
 
+(define-public (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)
+                 (list-head (hashq-ref ancestor-lookup (cadr heritage) '())
+                            (length (cdr heritage)))))
+    (ly:warning (_ "All classes must have a well-defined pedigree in the existing class hierarchy.")))
+   (else (hashq-set! ancestor-lookup
+                     leaf
+                     (cons leaf
+                           (hashq-ref ancestor-lookup
+                                      (cadr heritage)
+                                      '()))))))
+
 ;; TODO: Allow entering more complex classes, by taking unions.
 (define-public (ly:make-event-class leaf)
  (hashq-ref ancestor-lookup leaf))