use io; use endian; export type op_circle = pos; export type op_other = void; export type op = (op_circle| op_other); // return value must be freed... for now. ehh export fn ser_op(op: op) []u8 = { const opc = op as op_circle; let buf: []u8 = alloc([0...],8); endian::leputu32(buf[0..4], opc.0: u32); endian::leputu32(buf[4..8], opc.1: u32); return buf; }; export fn deser_op(bytes: []u8) op = { assert(len(bytes) == 8, "wrong length somehow"); return ( endian::legetu32(bytes[0..4]): i32, endian::legetu32(bytes[4..8]): i32, ) : op_circle; };