import vector import mem import util fun serialize(it: T): vector::vector { return it.serialize() } fun serialize(it: T): vector::vector { var char_data = (&it) cast *char var toRet = vector::vector() 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 vector::vector): T { return unserialize(it, 0).first } fun unserialize(it: ref vector::vector, pos: int): util::pair { return util::make_pair(*(it.getBackingMemory()+pos) cast *T, pos + (#sizeof) cast int) } fun unserialize(it: ref vector::vector, pos: int): util::pair { var toRet: T pos = toRet.unserialize(it, pos) return util::make_pair(toRet, pos) }