;;;; This file is part of LilyPond, the GNU music typesetter.
;;;;
-;;;; Copyright (C) 1998--2011 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
;;;;
;;;; LilyPond is free software: you can redistribute it and/or modify
"font.scm"
"encoding.scm"
+ "bar-line.scm"
"flag-styles.scm"
"fret-diagrams.scm"
"tablature.scm"
(,cheap-list? . "list")
(,fraction? . "fraction, as pair")
(,grob-list? . "list of grobs")
+ (,index? . "non-negative integer")
;; this is built on cheap-list
(,list-or-symbol? . "list or symbol")
(,markup? . "markup")
))
(define-public lilypond-exported-predicates
- `((,ly:box? . "box")
+ `((,ly:book? . "book")
+ (,ly:box? . "box")
(,ly:context? . "context")
+ (,ly:context-def? . "context definition")
(,ly:context-mod? . "context modification")
(,ly:dimension? . "dimension, in staff space")
(,ly:dir? . "direction")
(,ly:dispatcher? . "dispatcher")
(,ly:duration? . "duration")
- (,ly:event? . "event")
+ (,ly:event? . "post event")
(,ly:font-metric? . "font metric")
(,ly:grob? . "graphical (layout) object")
(,ly:grob-array? . "array of grobs")
(define gc-protect-stat-count
0)
+;; Undead objects that should be ignored after the first time round
+(define gc-zombies
+ (make-weak-key-hash-table 0))
+
(define-public (dump-live-object-stats outfile)
(for-each (lambda (x)
(format outfile "~a: ~a\n" (car x) (cdr x)))
(ly:set-option 'debug-gc-assert-parsed-dead #t)
(gc)
(ly:set-option 'debug-gc-assert-parsed-dead #f)
+ (for-each
+ (lambda (x)
+ (if (not (hashq-ref gc-zombies x))
+ (begin
+ (ly:programming-error "Parsed object should be dead: ~a" x)
+ (hashq-set! gc-zombies x #t))))
+ (ly:parsed-undead-list!))
(set! stats (gc-live-object-stats))
(ly:progress "Dumping live object statistics.\n")
(dump-live-object-stats outfile)))
(ly:set-option 'debug-gc-assert-parsed-dead #t)
(gc)
(ly:set-option 'debug-gc-assert-parsed-dead #f)
+ (for-each
+ (lambda (x)
+ (ly:programming-error "Parsed object should be dead: ~a" x))
+ (ly:parsed-undead-list!))
(if (ly:get-option 'debug-gc)
(dump-gc-protects)
(ly:reset-all-fonts))
(dump-profile "lily-run-total" '(0 0) (profile-measurements)))
failed))
+(define-public lilypond-declarations '())
+
(define (lilypond-file handler file-name)
(catch 'ly-file-failed
(lambda () (ly:parse-file file-name))