Serilization basics working
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
import vector
|
||||
import conversions
|
||||
import mem
|
||||
import util
|
||||
|
||||
fun serialize<T(Serializable)>(it: T): vector::vector<char> {
|
||||
return it.serialize()
|
||||
}
|
||||
|
||||
fun serialize<T>(it: T): vector::vector<char> {
|
||||
var char_data = conversions::cast_ptr<*T,*char>(&it)
|
||||
@@ -10,8 +15,17 @@ fun serialize<T>(it: T): vector::vector<char> {
|
||||
return toRet
|
||||
}
|
||||
|
||||
fun unserialize<T>(it: vector::vector<char>):T {
|
||||
return *conversions::cast_ptr<*char,*T>(it.getBackingMemory())
|
||||
// dead simple wrapper for ease of use
|
||||
fun unserialize<T>(it: vector::vector<char>): T {
|
||||
return unserialize<T>(it, 0).first
|
||||
}
|
||||
fun unserialize<T>(it: vector::vector<char>, pos: int): util::pair<T,int> {
|
||||
return util::make_pair(*conversions::cast_ptr<*char,*T>(it.getBackingMemory()+pos), pos + mem::sizeof<T>())
|
||||
}
|
||||
fun unserialize<T(Serializable)>(it: vector::vector<char>, pos: int): util::pair<T,int> {
|
||||
var toRet: T
|
||||
pos = toRet.unserialize(it, pos)
|
||||
return util::make_pair(toRet, pos)
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user