]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/lily.scm
lily.scm: document a few more predicates.
[lilypond.git] / scm / lily.scm
index 91b34e290aa2b5b1fc7c28dd22db0ba0b60a2c57..9157337ad1261f35e914978c5a182913e6b93f62 100644 (file)
@@ -120,6 +120,10 @@ jobs.")
     (log-file #f
 "If string FOO is given as argument, redirect
 output to log file `FOO.log'.")
+    (max-markup-depth 1024
+"Maximum depth for the markup tree. If a markup has more levels,
+assume it will not terminate on its own, print a warning and return a
+null markup instead.")
     (midi-extension ,(if (eq? PLATFORM 'windows)
                          "mid"
                          "midi")
@@ -341,27 +345,16 @@ messages into errors.")
       (set-module-obarray! iface (module-obarray mod))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define (type-check-list location signature arguments)
-  "Typecheck a list of arguments against a list of type predicates.
-Print a message at LOCATION if any predicate failed."
-  (define (recursion-helper signature arguments count)
-    (define (helper pred? arg count)
-      (if (not (pred? arg))
-          (begin
-            (ly:input-message
-             location
-             (format
-              #f (_ "wrong type for argument ~a.  Expecting ~a, found ~s")
-              count (type-name pred?) arg))
-            #f)
-          #t))
-
-    (if (null? signature)
-        #t
-        (and (helper (car signature) (car arguments) count)
-             (recursion-helper (cdr signature) (cdr arguments) (1+ count)))))
-  (recursion-helper signature arguments 1))
-
+(define (type-check-arg location arg args pred?)
+  "Typecheck an argument after previous arguments.
+Print a message at LOCATION if predicate fails and return #f"
+  (or (pred? arg)
+      (begin
+       (ly:input-warning
+        location
+        (_ "wrong type for argument ~a.  Expecting ~a, found ~s")
+        (1+ (length args)) (type-name pred?) arg)
+       #f)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Safe definitions utility
@@ -459,6 +452,7 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
     "define-grob-interfaces.scm"
     "define-stencil-commands.scm"
     "titling.scm"
+    "text.scm"
 
     "paper.scm"
     "backend-library.scm"
@@ -546,10 +540,12 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
 (define-public lilypond-exported-predicates
   `((,ly:box? . "box")
     (,ly:context? . "context")
+    (,ly:context-mod? . "context modification")
     (,ly:dimension? . "dimension, in staff space")
     (,ly:dir? . "direction")
     (,ly:dispatcher? . "dispatcher")
     (,ly:duration? . "duration")
+    (,ly:event? . "event")
     (,ly:font-metric? . "font metric")
     (,ly:grob? . "graphical (layout) object")
     (,ly:grob-array? . "array of grobs")
@@ -582,6 +578,7 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
     (,ly:stream-event? . "stream event")
     (,ly:translator? . "translator")
     (,ly:translator-group? . "translator group")
+    (,ly:unpure-pure-container? . "unpure/pure container")
     ))
 
 
@@ -702,7 +699,8 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
          (mem (string->number (match:substring (car interesting) 1))))
     (format #t "VMDATA: ~a\n" mem)
     (display (gc-stats))
-    (if (> mem 100000)
+    (newline)
+    (if (> mem 500000)
         (begin (dump-gc-protects)
                (raise 1)))))
 
@@ -847,6 +845,7 @@ PIDs or the number of the process."
          (if (ly:get-option 'trace-memory-frequency)
              (mtrace:start-trace  (ly:get-option 'trace-memory-frequency)))
          (lilypond-file handler x)
+         (ly:check-expected-warnings)
          (if start-measurements
              (dump-profile x start-measurements (profile-measurements)))
          (if (ly:get-option 'trace-memory-frequency)
@@ -860,7 +859,8 @@ PIDs or the number of the process."
          (ly:set-option 'debug-gc-assert-parsed-dead #f)
          (if (ly:get-option 'debug-gc)
              (dump-gc-protects)
-             (ly:reset-all-fonts))))
+             (ly:reset-all-fonts))
+         (flush-all-ports)))
      files)
 
     ;; Ensure a notice re failed files is written to aggregate logfile.