import vec import mem import util fun serialize(it: T): vec::vec { return it.serialize() } fun serialize(it: T): vec::vec { var char_data = (&it) cast *char var toRet = vec::vec() for (var i = 0; i < #sizeof; i++;) toRet.add(char_data[i]) return toRet } // dead simple wrapper for ease of use fun unserialize(it: ref vec::vec): T { return unserialize(it, 0).first } fun unserialize(it: ref vec::vec, pos: int): util::pair { return util::make_pair(*(it.getBackingMemory()+pos) cast *T, pos + (#sizeof) cast int) } fun unserialize(it: ref vec::vec, pos: int): util::pair { var toRet: T pos = toRet.unserialize(it, pos) return util::make_pair(toRet, pos) }