X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-event-classes.scm;h=f5d7b790de852048db22b202fefa30c7ff4e1560;hb=e42762f04b8ccbd4c3ae76a5cb082bb4d64e7db6;hp=c98d603cf646ccbde41ae09a230e3dcc7064bd0b;hpb=6cb5671882046fb46a18fb6b4bfebe286cebc32a;p=lilypond.git diff --git a/scm/define-event-classes.scm b/scm/define-event-classes.scm index c98d603cf6..f5d7b790de 100644 --- a/scm/define-event-classes.scm +++ b/scm/define-event-classes.scm @@ -13,18 +13,21 @@ (StreamEvent . (RemoveContext ChangeParent Override Revert UnsetProperty SetProperty music-event OldMusicEvent CreateContext Prepare - OneTimeStep Finish)) - (music-event . (arpeggio-event breathing-event extender-event span-event - rhythmic-event dynamic-event break-event percent-event - key-change-event string-number-event tie-event part-combine-event - metronome-change-event beam-forbid-event script-event + OneTimeStep Finish)) + (music-event . (annotate-output-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 + beam-forbid-event script-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 + multi-measure-text-event note-grouping-event pes-or-flexa-event repeat-tie-event spacing-section-event layout-instruction-event)) + + (layout-instruction-event . (apply-output-event )) (script-event . (articulation-event text-script-event)) - (part-combine-event . (solo1-event solo2-event unisono-event)) + (part-combine-event . (solo-one-event solo-two-event unisono-event)) (break-event . (line-break-event page-break-event page-turn-event)) (dynamic-event . (absolute-dynamic-event)) (span-event . (span-dynamic-event beam-event ligature-event @@ -34,6 +37,7 @@ (span-dynamic-event . (decrescendo-event crescendo-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)) (melodic-event . (cluster-note-event note-event)) (() . (Announcement)) @@ -41,7 +45,7 @@ )) ;; Maps event-class to a list of ancestors (inclusive) -(define ancestor-lookup (make-hash-table)) +(define ancestor-lookup (make-hash-table 11)) ;; Each class will be defined as ;; (class parent grandparent .. ) @@ -59,6 +63,10 @@ (define-public (ly:make-event-class leaf) (hashq-ref ancestor-lookup leaf)) +(define-public (ly:in-event-class? ev cl) + "Does event @var{ev} belong to event class @var{cl}?" + (memq cl (ly:make-event-class (ly:event-property ev 'class)))) + ;; does this exist in guile already? (define (map-tree f t) (cond @@ -78,8 +86,8 @@ ;; All leaf event classes that no translator listens to ;; directly. Avoids printing a warning. (define unlistened-music-event-classes - '(harmonic-event line-break-event page-break-event page-turn-event - solo1-event solo2-event skip-event unisono-event)) + '(harmonic-event line-break-event page-break-event page-turn-event label-event + solo-one-event solo-two-event skip-event unisono-event)) ;; produce neater representation of music event tree. ;; TODO: switch to this representation for the event-classes list? @@ -127,7 +135,7 @@ ((pair? e) (cons (simplify (car e)) (simplify (cdr e)))) ((ly:stream-event? e) - (list 'unquote `(make-stream-event ,(simplify (Stream_event::dump e))))) + (list 'unquote (list 'make-stream-event (simplify (Stream_event::dump e))))) ((ly:music? e) (list 'unquote (music->make-music e))) ((ly:moment? e) @@ -154,8 +162,5 @@ (#t e))) (define-public (ly:simplify-scheme e) - (list 'quasiquote (simplify e)) -) + (list 'quasiquote (simplify e))) -; used by lily/dispatcher.cc -(define-public (car< a b) (< (car a) (car b)))