]> git.donarmstrong.com Git - lilypond.git/commitdiff
Clean up graphviz.scm and remove ly:atexit.
authorJoe Neeman <joeneeman@gmail.com>
Fri, 30 Mar 2007 02:01:11 +0000 (12:01 +1000)
committerJoe Neeman <joeneeman@gmail.com>
Mon, 16 Apr 2007 23:25:34 +0000 (09:25 +1000)
lily/main.cc
ly/graphviz-init.ly
scm/graphviz.scm
scm/lily.scm

index 9ff982bcf854ad70e80205d455f4a2756818b3f7..3c0f7ae88eb7a4f28a065d1555ff4ffcf9c07aa9 100644 (file)
@@ -600,25 +600,3 @@ main (int argc, char **argv, char **envp)
   /* Only reachable if GUILE exits.  That is an error.  */
   return 1;
 }
-
-SCM atexit_list = SCM_EOL;
-
-LY_DEFINE (ly_atexit, "ly:atexit",
-          2, 0, 0, (SCM proc, SCM args),
-          "Just before exiting, call the procedure given. "
-"If this is called multiple times, the procedures are called "
-"in LIFO order.")
-{
-  atexit_list = scm_cons (scm_cons (proc, args), atexit_list);
-  scm_gc_protect_object (atexit_list);
-  return SCM_UNSPECIFIED;
-}
-
-LY_DEFINE (ly_do_atexit, "ly:do-atexit",
-          0, 0, 0, (),
-          "Call the atexit procedures.")
-{
-  for (SCM s = atexit_list; scm_is_pair (s); s = scm_cdr (s))
-    scm_apply_0 (scm_caar (s), scm_cdar (s));
-  return SCM_UNSPECIFIED;
-}
index 3623d0ace805cc497e20e30ab0e6876ba91a57b1..cae11b1a29a191af49a56e78c80e325c915c4613 100644 (file)
@@ -22,7 +22,7 @@
 #(define (whitelist-grob str)
   (set! grob-whitelist (cons str grob-whitelist)))
 
-#(define graph (make-graph (format "~a.dot" (ly:parser-output-name parser))))
+#(define graph (make-empty-graph (ly:parser-output-name parser)))
 
 #(define (grob-name g)
   (let* ((meta (ly:grob-property g 'meta))
index f5db38b7a800a52d13f614411dc0707626784bee..c2801633a80dc4e70d86cfc1b451957a5f05a715 100644 (file)
@@ -8,19 +8,21 @@
 (define-module (scm graphviz)
   #:use-module (lily)
   #:export
-  (make-graph add-node add-edge add-cluster
-             graph-write
-             ))
+  (make-empty-graph add-node add-edge add-cluster
+                   graph-write
+                   ))
 
-(define (make-graph filename)
-   #(() () () ()))
+(define graph-type (make-record-type "graph" '(nodes edges clusters name)))
 
+(define make-graph (record-constructor graph-type))
+(define (make-empty-graph name) (make-graph '() '() '() name))
 
-;; fixme: use structs/records.
-;; fixme add & use setters.
-(define (nodes g) (vector-ref g 1))
-(define (edges g) (vector-ref g 2))
-(define (clusters g) (vector-ref g 3))
+(define nodes (record-accessor graph-type 'nodes))
+(define edges (record-accessor graph-type 'edges))
+(define clusters (record-accessor graph-type 'clusters))
+(define set-nodes! (record-modifier graph-type 'nodes))
+(define set-edges! (record-modifier graph-type 'edges))
+(define set-clusters! (record-modifier graph-type 'clusters))
 
 (define (add-cluster graph node-id cluster-name)
   (let* ((cs (clusters graph))
         (already-in-cluster (if cluster
                                 (cdr cluster)
                                 '())))
-    (vector-set! graph 3 (assq-set! cs
+    (set-clusters! graph (assq-set! cs
                                    cluster-name
                                    (cons node-id already-in-cluster)))))
 
 (define (add-node graph label . cluster-name)
   (let* ((ns (nodes graph))
          (id (length ns)))
-    (vector-set! graph 1 (cons `(,id . ,label) ns))
+    (set-nodes! graph (assq-set! ns id label))
     (if (and (not (null? cluster-name))
             (string? (car cluster-name)))
        (add-cluster graph id (car cluster-name)))
     id))
 
 (define (add-edge graph node1 node2)
-  (vector-set! graph 2 (cons `(,node1 . ,node2) (edges graph))))
+  (set-edges! graph (cons `(,node1 . ,node2) (edges graph))))
 
 (define (graph-write graph out)
   (let ((ns (nodes graph))
index 4afe0fb8beec66b981e74ef61e189eaa96bc0e17..48d911751aff6fbda380a2a6f4c735cc5e960704 100644 (file)
@@ -649,7 +649,6 @@ The syntax is the same as `define*-public'."
          (ly:error (_ "failed files: ~S") (string-join failed))
          (exit 1))
        (begin
-         (ly:do-atexit)
          ;; HACK: be sure to exit with single newline
          (ly:message "")
          (exit 0)))))