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