;;; run.scm (require-extension packedobjects) (define bbcard '(bbcard sequence (name string (size 1 60)) (team string (size 1 60)) (age integer (range 1 100)) (position string (size 1 60)) (handedness enumerated (left-handed right-handed ambidextrous)) (batting-average sequence (mantissa integer ()) (base enumerated (2 10)) (exponent integer ())))) (define bbcard-values '(bbcard (name "Casey") (team "Mudville Nine") (age 32) (position "left field") (handedness ambidextrous) (batting-average (mantissa 250) (base 10) (exponent -3)))) (define po (packedobjects bbcard)) (pp bbcard) (let ((size (po 'pack bbcard-values))) (print* "encoded in " size " bytes.\n") (po 'dump-buffer "bbcard.bin" size) (let ((up (po 'unpack))) (pp up) (assert (equal? bbcard-values up))) (po 'free))