anchor.diff:  ;; these require the ieee-floats package
   (define-type :float
       ((float buffer start)
  +	 (declare (float float))
        (let ((bytes (bytes (ieee-floats:encode-float32 float) 4)))
          (pack-bytes bytes buffer start)))
     ((buffer start)
  
positive.code:   (:export #:defpacket
  		   #:pack
  		   #:unpack
  		   #:type-size))
  
  (in-package :packet)
  
  ;; idea is to operate on a statically defined, fixed size buffer
  ;; this means we have to store slot offsets and structure definitiosn ourselves
  
  ;; types:
  ;; 8, 16, 32 and 64-bit integers 
  ;; floats/doubles
  ;; arrays of primitives
  ;; structures
  ;; arrays of structures
  
  ;;
  ;; Strings (fixed-width buffers) are handled in a special (hacky) way
  ;; There should be a better way of doing it.
  ;;
  ;;
  ;; Note that we don't have to concern ourselves with pointers or anything like that.
  ;;
  ;; There is probably a better way of organising some of the code using generic functions,
  
negative.code: 
  (define-type :uint32 
      ((uint32 buffer start)
  	 (declare (integer uint32))
       (pack-bytes (bytes uint32 4) buffer start))
    ((buffer start)
     (unpack-bytes buffer start 4))
  