aboutsummaryrefslogtreecommitdiff
path: root/drawing
diff options
context:
space:
mode:
Diffstat (limited to 'drawing')
-rw-r--r--drawing/op.ha21
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;
+};