]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/interface.scm
release: 1.3.97
[lilypond.git] / scm / interface.scm
index c5dc2d9d5596ad53cf7ba8b669ef47a762acb3ce..d44e4cc729d9677216e182ae3233fa9e13fbc1c0 100644 (file)
@@ -7,12 +7,13 @@
   (list symbol type? description))
   
 (define (lily-interface symbol description props)
-  (list (list symbol)
-       (list description)
+  (list symbol
+       description
        props
        )
   )
 
+
 (define (merge-interfaces ifs)
    (list
     (apply append (map car ifs))
     (apply append (map caddr ifs))
   ))
 
+(define (uniqued-alist  alist acc)
+  (if (null? alist) acc
+      (if (assoc (caar alist) acc)
+         (uniqued-alist (cdr alist) acc)
+         (uniqued-alist (cdr alist) (cons (car alist) acc)
+  ))))
+
 (define (element-description name . interfaces)
-  (let ((merged (merge-interfaces interfaces)))
+  (let* ((ifs (cons general-element-interface interfaces))
+        (props (map caddr ifs))
+        (syms (map car ifs))
+       )
     (list (cons 'separator "\n\n\n")   ;easy printing.
          (cons 'name name)
-         (cons 'interfaces (car merged))
+         (cons 'interfaces syms)
+         (cons 'interface-descriptions ifs)
          ; (cons 'interface-descriptions (cadr merged))
          ;; description of the element itself?
-         (cons 'properties (caddr merged))
+         (cons 'properties (apply append props))
   )))
 
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;
 
 (define general-element-interface