nitc :: SerializationPhasePreModel :: generate_deserialization_method
Deserializer::deserialize_class_intern
Will be filled by SerializationPhasePostModel
.
# Add an empty `Deserializer::deserialize_class_intern`
#
# Will be filled by `SerializationPhasePostModel`.
fun generate_deserialization_method(nmodule: AModule, nclassdefs: Array[AStdClassdef])
do
var code = new Array[String]
var deserializer_nclassdef = nmodule.deserializer_nclassdef
var deserializer_npropdef
if deserializer_nclassdef == null then
# create the class
code.add "redef class Deserializer"
deserializer_npropdef = null
else
deserializer_npropdef = deserializer_nclassdef.deserializer_npropdef
end
if deserializer_npropdef == null then
# create the property
code.add " redef fun deserialize_class_intern(name) do abort"
else
toolcontext.error(deserializer_npropdef.location, "Error: `Deserializer::deserialize_class_intern` is generated and must not be defined, use `deserialize_class` instead.")
return
end
if deserializer_nclassdef == null then
code.add "end"
nmodule.n_classdefs.add toolcontext.parse_classdef(code.join("\n"))
else
deserializer_nclassdef.n_propdefs.add(toolcontext.parse_propdef(code.join("\n")))
end
end
src/frontend/serialization_model_phase.nit:235,2--266,4