anchor.diff:                               (when (and g (string/= g ""))
                                  (list :group g)))))
                     (xpath:evaluate "param" node))))
  -      #++(format t "~s ~s~%   (~{~s~^~%   ~})~% -> ~s~%"
  -                 name ret args alias)
         (flet ((add (k v)
                  (when (and (gethash k funcs)
                             (not (equalp v (gethash k funcs))))
                    (format t "duplicate func ~s =~%  ~s,~%  ~s?~%" k v (gethash k funcs)))
                  (setf (gethash k funcs) v)))
  -        #++
  -        (loop for a in alias
  -              unless (gethash a funcs)
  -                do (add a (cons ret args)))
           (add name (cons ret args)))))
  -  #++
  -  (maphash (lambda (k v)
  -             (format t "~s ->~%  ~s~%" k v))
  -           funcs)
   
     ;; load special cases
     (with-open-file (special (merge-pathnames "special-cases.lisp" this-dir))
  
positive.code:             do (format t "~&writing functions to file ~s~%" path)
              do (with-open-file (out path :direction :output
                                           :if-exists :supersede)
                   #+let ((out *standard-output*))
                   (format out ";;; this file is automatically generated, do not edit~%")
                   (format out ";;; generated from files with the following copyright:~%;;;~%")
                   (with-input-from-string (c copyright)
  
negative.code:           (xpath:do-node-set (e (xpath:evaluate "enum" node))
              (let ((n (convert-enum-name (xpath:string-value
                                           (xpath:evaluate "@name" e))))
                    (v (hex (xpath:string-value (xpath:evaluate "@value" e)))))
                (add n v)))))))
  
    ;; extract functions
    (xpath:do-node-set (node (xpath:evaluate "/registry/commands/command" gl.xml))
      (let* ((proto (xpath:first-node (xpath:evaluate "proto" node)))
             (name (sv "name" proto))
             (ret (if (equalp (sv "@group" proto) "String")
                      "string"
                      (get-type proto)))
             (args (xpath:map-node-set->list
                    (lambda (p)
                      (list* :name (let ((n (sv "name" p)))
  