Serilization basics working

This commit is contained in:
Nathan Braswell
2015-08-24 20:40:18 -04:00
parent 3aad0263ce
commit b67d5e85fe
5 changed files with 91 additions and 5 deletions

View File

@@ -1,6 +1,8 @@
import mem:*;
import util:*;
import io:*;
import serialize:*;
import util:*;
fun vector<T>():vector<T> {
var out.construct():vector<T>
@@ -13,7 +15,7 @@ fun vector<T>(in:T):vector<T> {
return out
}
obj vector<T> (Object) {
obj vector<T> (Object, Serializable) {
var data: *T;
var size: int;
var available: int;
@@ -38,6 +40,23 @@ obj vector<T> (Object) {
maybe_copy_construct(&data[i], &old->data[i]);
//addEnd(old->get(i))
}
fun serialize(): vector<char> {
var toRet = serialize(size)
for (var i = 0; i < size; i++;)
toRet += serialize(data[i])
return toRet
}
fun unserialize(it: vector<char>, pos: int): int {
unpack(size, pos) = unserialize<int>(it, pos)
data = new<T>(size)
available = size
for (var i = 0; i < size; i++;) {
var curr = unserialize<T>(it, pos)
pos = curr.second
maybe_copy_construct(&data[i], &curr.first);
}
return pos
}
fun destruct(): void {
if (data)