Homepage: http://nklein.com/software/unet/userial/
This library is by Patrick Stein.
Here is a simple example of serializing into a buffer:
(make-enum-serializer :opcode (:login :run :jump :logout))
(make-bitfield-serializer :login-flags (:hidden :stay-logged-in))
(serialize* :opcode :login
:uint32 sequence-number
:login-flags (:hidden)
:string login-name
:string password)
Here are several easy ways to unserialize the contents:
(let (opcode sequence-number flags login-name password)
(unserialize* :opcode opcode
:uint32 sequence-number
:login-flags flags
:string login-name
:string password)
...)
(unserialize-let* (:opcode opcode
:uint32 sequence-number
:login-flags flags
:string login-name
:string password)
...)
(let ((parts (unserialize-list* '(:opcode
:uint32
:login-flags
:string
:string))))
...)
For more examples, see the web page or the included test cases.
wire format serialization