anchor.diff:                     r))))))
   
   (defmacro def-msg-var (type slot)
  -  (let* ((slot-type-raw (foreign-slot-type `(:struct ,type) slot))
  -         (slot-type (case slot-type-raw
  -                     ((:double) slot-type-raw)
  -                     (otherwise (list :struct slot-type-raw))))
  +  (let* ((slot-type (foreign-slot-type `(:struct ,type) slot))
  +         ;; (slot-type (case slot-type-raw
  +         ;;             ((:double) slot-type-raw)
  +         ;;             (otherwise (list :struct slot-type-raw))))
           (make-it (intern (concatenate 'string "MAKE-" (string type)))))
       `(progn
          (def-msg-base ,type)
  
positive.code:   (buttons :uint64)
    (axis :double :count 1))
  (def-msg-var msg-joystick axis)
  
  (defun get-foreign-string (pointer max)
    (with-output-to-string (s)
  
negative.code:                 (pointer (foreign-alloc :uint8 :count size)))
             (msg-buffer-initialize (,make-it)
                                    pointer size)))
          (defmethod msg-aref-ptr ((msg ,type) i)
            (let ((base (foreign-slot-pointer (msg-buffer-pointer msg)
                                              '(:struct ,type) ',slot)))
              (mem-aptr base ',slot-type i)))
          (defmethod msg-aref ((msg ,type) i)
            (msg-decode ',type (msg-aref-ptr msg i)))
         )))
  
  
  