aboutsummaryrefslogtreecommitdiff
path: root/drawing/op.ha
blob: acbca29b897e25818c42621aa8c64f9cdeb754bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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;
};