Actual serialization of self to serializer

This writes the full data of self to serializer.

This method can be redefined in sub classes and refinements. It should use Serializer::serialize_attribute to to register real or logical attributes.

Any refinement should have its equivalent refinement of Deserializer::deserialize_class to support this custom deserialization.

Property definitions

serialization $ Serializable :: core_serialize_to
	# Actual serialization of `self` to `serializer`
	#
	# This writes the full data of `self` to `serializer`.
	#
	# This method can be redefined in sub classes and refinements.
	# It should use `Serializer::serialize_attribute` to to register real or
	# logical attributes.
	#
	# Any refinement should have its equivalent refinement of
	# `Deserializer::deserialize_class` to support this custom deserialization.
	fun core_serialize_to(serializer: Serializer) do end
lib/serialization/serialization_core.nit:226,2--236,53

a_star $ Node :: core_serialize_to
	# We customize the serialization process to avoid problems with recursive
	# serialization engines. These engines, such as `JsonSerializer`,
	# are at danger to serialize the graph as a very deep tree.
	# With a large graph it can cause a stack overflow.
	#
	# Instead, we serialize the nodes first and then the links.
	redef fun core_serialize_to(serializer)
	do
		serializer.serialize_attribute("graph", graph)
	end
lib/a_star/a_star.nit:199,2--208,4

a_star $ Graph :: core_serialize_to
	redef fun core_serialize_to(serializer)
	do
		serializer.serialize_attribute("nodes", nodes)
		serializer.serialize_attribute("links", links)
	end
lib/a_star/a_star.nit:276,2--280,4

a_star $ TargetCondition :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

geometry :: points_and_lines $ Deserializer :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

noise :: noise $ Deserializer :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

bucketed_game :: bucketed_game $ Deserializer :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

serialization :: serialization_core $ Error :: core_serialize_to
	redef fun core_serialize_to(v)
	do
		v.serialize_attribute("message", message)
		v.serialize_attribute("cause", cause)
	end
lib/serialization/serialization_core.nit:317,2--321,4

serialization :: serialization_core $ Couple :: core_serialize_to
	redef fun core_serialize_to(v)
	do
		v.serialize_attribute("first", first)
		v.serialize_attribute("second", second)
	end
lib/serialization/serialization_core.nit:279,2--283,4

poset $ POSetElement :: core_serialize_to
	redef fun core_serialize_to(serializer)
	do
		serializer.serialize_attribute("poset", poset)
		serializer.serialize_attribute("element", element)
		serializer.serialize_attribute("tos", tos)
		serializer.serialize_attribute("froms", froms)
		serializer.serialize_attribute("dtos", dtos)
		serializer.serialize_attribute("dfroms", dfroms)
		serializer.serialize_attribute("count", count)

		# Don't serialize `froms`, `dtos` and `tos` as they duplicate information.
		# TODO serialize them if a flag for extra info is set on `serializer`.
	end
lib/poset/poset.nit:643,2--655,4

bucketed_game $ Turnable :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

bucketed_game $ GameEvent :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

noise $ ImprovedNoise :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
	v.serialize_attribute("p", p)
end
2,1--6,3

popcorn $ ValidationResult :: core_serialize_to
	redef fun core_serialize_to(v) do
		var errors = new JsonObject
		for k, e in self.errors do
			errors[k] = new JsonArray.from(e)
		end
		v.serialize_attribute("has_error", has_error)
		v.serialize_attribute("errors", errors)
	end
lib/popcorn/pop_validation.nit:142,2--149,4

nitc :: json_model $ MDoc :: core_serialize_to
	redef fun core_serialize_to(v) do
		var doc = html_documentation.write_to_string.trim
		if not doc.is_empty then
			v.serialize_attribute("html_documentation", doc)
		end
	end
src/doc/templates/json_model.nit:72,2--77,4

nitc :: json_model $ Person :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		v.serialize_attribute("name", name)
		v.serialize_attribute("email", email)
		v.serialize_attribute("gravatar", gravatar)
	end
src/doc/templates/json_model.nit:441,2--446,4

nitc :: api_metrics $ MetricSet :: core_serialize_to
	redef fun core_serialize_to(v) do
		for metric in metrics do
			v.serialize_attribute(metric.name, metric)
		end
	end
src/doc/api/api_metrics.nit:155,2--159,4

a_star $ ConstantPathContext :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

serialization :: serialization_core $ Ref :: core_serialize_to
	redef fun core_serialize_to(v)
	do
		v.serialize_attribute("item", first)
	end
lib/serialization/serialization_core.nit:296,2--299,4

bucketed_game $ FirstTurnEvent :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

geometry $ IPoint :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

geometry $ ILine :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

nitcorn $ MyOtherData :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
	v.serialize_attribute("i", i)
end
2,1--6,3

noise $ InterpolatedNoise :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

serialization $ A :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
	v.serialize_attribute("i", i)
end
2,1--6,3

serialization $ B :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
	v.serialize_attribute("a", a)
end
2,1--6,3

nitc :: api_base $ MEntity :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		v.serialize_attribute("web_url", web_url)
		v.serialize_attribute("api_url", api_url)
	end
src/doc/api/api_base.nit:178,2--182,4

nitc :: api_metrics $ IntMetric :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		if values.not_empty then v.serialize_attribute("sum", sum)
	end
src/doc/api/api_metrics.nit:176,2--179,4

nitc :: api_metrics $ FloatMetric :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		if values.not_empty then v.serialize_attribute("sum", sum)
	end
src/doc/api/api_metrics.nit:183,2--186,4

nitc :: api_metrics $ MModuleMetric :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		if values.not_empty then v.serialize_attribute("min", min)
		if values.not_empty then v.serialize_attribute("max", max)
		var values = new JsonObject
		for value in sort do
			values[value.full_name] = new MetricEntry(value, self[value])
		end
		v.serialize_attribute("values", values)
	end
src/doc/api/api_metrics.nit:190,2--199,4

nitc :: api_metrics $ MClassMetric :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		if values.not_empty then v.serialize_attribute("min", min)
		if values.not_empty then v.serialize_attribute("max", max)
		var values = new JsonObject
		for value in sort do
			values[value.full_name] = new MetricEntry(value, self[value])
		end
		v.serialize_attribute("values", values)
	end
src/doc/api/api_metrics.nit:203,2--212,4

nitc $ MEntityRef :: core_serialize_to
	redef fun core_serialize_to(v) do
		mentity.core_serialize_base(v)
	end
src/doc/templates/json_model.nit:368,2--370,4

nitc :: json_model $ MClass :: core_serialize_to
	redef fun core_serialize_to(v) do
		super

		if mparameters.not_empty then
			v.serialize_attribute("mparameters", mparameters)
		end
	end
src/doc/templates/json_model.nit:150,2--156,4

poset $ POSet :: core_serialize_to
	redef fun core_serialize_to(serializer)
	do
		# Optimize written data because this structure has duplicated data
		# For example, serializing the class hierarchy of a simple program where E is String
		# result is before: 200k, after: 56k.
		serializer.serialize_attribute("elements", elements)
	end
lib/poset/poset.nit:491,2--497,4

geometry $ IPoint3d :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

geometry $ ILine3d :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

nitc :: json_model $ MClassDef :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		if is_intro then
			v.serialize_attribute("is_intro", true)
		end
		if mclass.mparameters.not_empty then
			v.serialize_attribute("mparameters", mclass.mparameters)
		end
	end
src/doc/templates/json_model.nit:168,2--176,4

nitc :: json_model $ MPackage :: core_serialize_to
	redef fun core_serialize_to(v) do
		super

		var metadata = self.metadata
		if metadata.license != null then
			v.serialize_attribute("license", metadata.license)
		end
		if metadata.maintainers.not_empty then
			v.serialize_attribute("maintainer", metadata.maintainers.first)
		end
		if metadata.tags.not_empty then
			v.serialize_attribute("tags", metadata.tags)
		end
	end
src/doc/templates/json_model.nit:96,2--109,4

nitc :: json_model $ MType :: core_serialize_to
	redef fun core_serialize_to(v) do
		v.serialize_attribute("name", name)

		var mdoc = mdoc_or_fallback
		if mdoc != null then
			v.serialize_attribute("synopsis", mdoc.synopsis)
			v.serialize_attribute("html_synopsis", mdoc.html_synopsis.write_to_string)
		end
	end
src/doc/templates/json_model.nit:305,2--313,4

nitc :: api_base $ MType :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		v.serialize_attribute("web_url", web_url)
		v.serialize_attribute("api_url", api_url)
	end
src/doc/api/api_base.nit:202,2--206,4

noise :: noise $ Float :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

serialization :: serialization_core $ ProxyQueue :: core_serialize_to
	redef fun core_serialize_to(v) do v.serialize_attribute("seq", seq)
lib/serialization/serialization_core.nit:342,2--68

serialization :: serialization_core $ RandQueue :: core_serialize_to
	redef fun core_serialize_to(v) do v.serialize_attribute("seq", seq)
lib/serialization/serialization_core.nit:360,2--68

serialization :: serialization_core $ MinHeap :: core_serialize_to
	redef fun core_serialize_to(v)
	do
		v.serialize_attribute("items", items)
		v.serialize_attribute("comparator", comparator)
	end
lib/serialization/serialization_core.nit:385,2--389,4

more_collections $ MultiHashMap :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

nitc :: json_model $ MPropDef :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		if is_intro then
			v.serialize_attribute("is_intro", true)
		end
	end
src/doc/templates/json_model.nit:248,2--253,4

nitc :: json_model $ MAttribute :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		v.serialize_attribute("static_mtype", intro.static_mtype)
	end
src/doc/templates/json_model.nit:234,2--237,4

nitc :: json_model $ MVirtualTypeProp :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		v.serialize_attribute("bound", intro.bound)
	end
src/doc/templates/json_model.nit:241,2--244,4

geometry $ Point3d :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
	v.serialize_attribute("z", z)
end
2,1--6,3

geometry $ Line3d :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

nitc :: json_model $ MMethod :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		if is_init then
			v.serialize_attribute("is_init", true)
		end
		v.serialize_attribute("msignature", intro.msignature)
	end
src/doc/templates/json_model.nit:224,2--230,4

nitc :: json_model $ MAttributeDef :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		v.serialize_attribute("static_mtype", static_mtype)
	end
src/doc/templates/json_model.nit:291,2--294,4

nitc :: json_model $ MVirtualTypeDef :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		v.serialize_attribute("bound", bound)
	end
src/doc/templates/json_model.nit:298,2--301,4

noise :: noise $ Int :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3

nitc :: json_model $ MMethodDef :: core_serialize_to
	redef fun core_serialize_to(v) do
		super
		v.serialize_attribute("msignature", msignature)
	end
src/doc/templates/json_model.nit:284,2--287,4

nitc $ JsonNamespace :: core_serialize_to
redef fun core_serialize_to(v)
do
	super
end
2,1--5,3