X-Git-Url: http://nitlanguage.org diff --git a/lib/serialization/serialization.nit b/lib/serialization/serialization.nit index 5630b34..f94445e 100644 --- a/lib/serialization/serialization.nit +++ b/lib/serialization/serialization.nit @@ -92,17 +92,25 @@ end abstract class Deserializer # Deserialize and return an object, storing errors in the attribute `errors` # + # If a `static_type` is given, only subtypes of the `static_type` are accepted. + # # This method behavior varies according to the implementation engines. - fun deserialize: nullable Object is abstract + fun deserialize(static_type: nullable String): nullable Object is abstract # Deserialize the attribute with `name` from the object open for deserialization # # The `static_type` can be used as last resort if the deserialized object # desn't have any metadata declaring the dynamic type. # + # Return the deserialized value or null on error, and set + # `deserialize_attribute_missing` to whether the attribute was missing. + # # Internal method to be implemented by the engines. fun deserialize_attribute(name: String, static_type: nullable String): nullable Object is abstract + # Was the attribute queried by the last call to `deserialize_attribute` missing? + var deserialize_attribute_missing = false + # Register a newly allocated object (even if not completely built) # # Internal method called by objects in creation, to be implemented by the engines. @@ -231,7 +239,7 @@ redef class Bool super DirectSerializable end redef class Char super DirectSerializable end redef class Int super DirectSerializable end redef class Float super DirectSerializable end -redef class NativeString super DirectSerializable end +redef class CString super DirectSerializable end redef class Text super DirectSerializable end redef class SimpleCollection[E] super Serializable end redef class Map[K, V] super Serializable end