\version "2.19.16" #(define (grob-interface::info iface) (hashq-get-handle (ly:all-grob-interfaces) iface)) #(define (grob-interface::properties iface-info) (if iface-info (cadddr iface-info) '())) #(define (grob-interface::pointers grob iface) (let* ((info (grob-interface::info iface)) (props (grob-interface::properties info)) (pointers (and (pair? props) (filter (lambda (prop) (let ((type (object-property prop 'backend-type?))) (or (eq? type ly:grob?) (eq? type ly:grob-array?)))) props)))) (if pointers (map (lambda (p) (list p (ly:grob-object grob p))) pointers)))) #(define (grob::all-pointers grob) (let ((ifaces (ly:grob-interfaces grob))) (define (entry iface) (let ((pointers (grob-interface::pointers grob iface))) (if (pair? pointers) (list (list iface pointers)) '()))) (let loop ((ifaces ifaces) (result '())) (if (null? ifaces) result (loop (cdr ifaces) (append result (entry (car ifaces)))))))) #(define (display-pointers grob) (format #t "~%~y ~y~%" (grob::name grob) (grob::all-pointers grob))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% { \override NoteHead.after-line-breaking = #display-pointers \override Slur.after-line-breaking = #display-pointers cis''8.( c'!16) }