From: Alexis Laferrière Date: Wed, 20 May 2015 11:46:01 +0000 (-0400) Subject: lib/serialization: support serializing Couple and Container X-Git-Tag: v0.7.5~31^2~1 X-Git-Url: http://nitlanguage.org lib/serialization: support serializing Couple and Container Signed-off-by: Alexis Laferrière --- diff --git a/lib/serialization/serialization.nit b/lib/serialization/serialization.nit index 6e5ce12..3ba9968 100644 --- a/lib/serialization/serialization.nit +++ b/lib/serialization/serialization.nit @@ -164,3 +164,37 @@ redef class NativeString super DirectSerializable end redef class String super DirectSerializable end redef class SimpleCollection[E] super Serializable end redef class Map[K, V] super Serializable end + +redef class Couple[F, S] + super Serializable + + redef init from_deserializer(v) + do + v.notify_of_creation self + var first = v.deserialize_attribute("first") + var second = v.deserialize_attribute("second") + init(first, second) + end + + redef fun core_serialize_to(v) + do + v.serialize_attribute("first", first) + v.serialize_attribute("second", second) + end +end + +redef class Container[E] + super Serializable + + redef init from_deserializer(v) + do + v.notify_of_creation self + var item = v.deserialize_attribute("item") + init item + end + + redef fun core_serialize_to(v) + do + v.serialize_attribute("item", first) + end +end diff --git a/tests/sav/nitserial_args1.res b/tests/sav/nitserial_args1.res index fc2e797..7a38c28 100644 --- a/tests/sav/nitserial_args1.res +++ b/tests/sav/nitserial_args1.res @@ -15,6 +15,7 @@ redef class Deserializer if name == "Array[String]" then return new Array[String].from_deserializer(self) if name == "HashMap[Serializable, Array[Couple[Serializable, Int]]]" then return new HashMap[Serializable, Array[Couple[Serializable, Int]]].from_deserializer(self) if name == "Array[Couple[Serializable, Int]]" then return new Array[Couple[Serializable, Int]].from_deserializer(self) + if name == "Couple[Serializable, Int]" then return new Couple[Serializable, Int].from_deserializer(self) return super end end