diff options
Diffstat (limited to 'drawing')
-rw-r--r-- | drawing/op.ha | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drawing/op.ha b/drawing/op.ha index ef39161..deda81c 100644 --- a/drawing/op.ha +++ b/drawing/op.ha @@ -1,4 +1,25 @@ +use io; +use endian; + export type op_circle = pos; export type op_other = void; export type op = (op_circle| op_other); + + + +export fn send_op(file: io::handle, op: op) (void | io::error) = { + static let buf: [8]u8 = [0...]; + const opc = op as op_circle; + endian::leputu32(buf[0..4], opc.0: u32); + endian::leputu32(buf[4..8], opc.1: u32); + io::writeall(file, 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; +}; |