client array example uses vertex array instead of quad array
[clinton/guile-figl.git] / figl / contrib / packed-struct.scm
index d962de1..19f43b4 100644 (file)
@@ -27,6 +27,7 @@
   #:export (
             define-packed-struct
             packed-struct-size
+            packed-struct-offset
             pack pack* unpack unpack*
 
             make-packed-array
              #`(define-inlinable (name method field)
                  (case method
                    ((size) byte-size)
+                   ((offset)
+                    (case field
+                      ((field-name) field-offset)
+                      ...
+                      (else (error "unknown field" field))))
                    ((unpacker)
                     (lambda (bv offset k)
                       (k (field-ref bv (+ offset field-offset))
 (define-syntax-rule (packed-struct-size type)
   (type 'size #f))
 
+(define-syntax-rule (packed-struct-offset type field)
+  (type 'offset 'field))
+
 (define-syntax-rule (packed-struct-getter type field)
   (type 'getter 'field))