serialization :: StrictHashMap
Maps instances to a value, usesis_same_serialized
and serialization_hash
.
serialization :: engine_tools $ String
Immutable sequence of characters.serialization :: engine_tools $ Text
High-level abstraction for all text representationsis_same_serialized
and serialization_hash
.
serialization :: engine_tools $ String
Immutable sequence of characters.serialization :: engine_tools $ Text
High-level abstraction for all text representationscore :: union_find
union–find algorithm using an efficient disjoint-set data structureserialization :: serialization_core
Abstract services to serialize Nit objects to different formatsbucketed_game :: bucketed_game
Game framework with an emphasis on efficient event coordinationaccept_scroll_and_zoom
gamnit :: camera_control_android
Two fingers camera manipulation, pinch to zoom and slide to scrollgamnit :: camera_control_linux
Mouse wheel and middle mouse button to control cameraserialization :: custom_serialization
Example of an ad hoc serializer that is tailored to transform business specific objects into customized representation.FileServer
action, which is a standard and minimal file server
HttpRequest
class and services to create it
app::http_request
main service AsyncHttpRequest
Serializable::inspect
to show more useful information
more_collections :: more_collections
Highly specific, but useful, collections-related classes.mpi :: mpi_simple
app.nit
on Android using a custom Java entry point
nitcc_runtime :: nitcc_runtime
Runtime library required by parsers and lexers generated by nitccnlp :: nlp_server
restful
annotation documented at lib/nitcorn/restful.nit
deserialize_json
and JsonDeserializer
serialize_to_json
and JsonSerializer
msgpack :: serialization_write
Serialize full Nit objects to MessagePack formatroot
to execute
EulerCamera
and App::frame_core_draw
to get a stereoscopic view
gamnit :: texture_atlas_parser
Tool to parse XML texture atlas and generated Nit code to access subtextures
# Advanced services for serialization engines
module engine_tools
import serialization_core
intrude import core::collection::hash_collection
# Maps instances to a value, uses `is_same_serialized` and `serialization_hash`.
class StrictHashMap[K, V]
super HashMap[K, V]
redef fun index_at(k)
do
if k == null then return 0
var i = k.serialization_hash % _capacity
if i < 0 then i = - i
return i
end
redef fun node_at_idx(i, k)
do
var c = _array[i]
while c != null do
var ck = c._key
assert ck != null
if ck.is_same_serialized(k) then
break
end
c = c._next_in_bucklet
end
return c
end
end
redef interface Object
# Is `self` the same as `other` in a serialization context?
#
# Used to determine if an object has already been serialized.
fun is_same_serialized(other: nullable Object): Bool do return is_same_instance(other)
# Hash value use for serialization
#
# Used in combination with `is_same_serialized`. If two objects are the same
# in a serialization context, they must have the same `serialization_hash`.
fun serialization_hash: Int do return object_id
end
redef class String
redef fun serialization_hash do return hash
redef fun is_same_serialized(o) do return self == o
end
redef class Text
# Strip the `nullable` prefix from the type name `self`
#
# ~~~
# assert "String".strip_nullable == "String"
# assert "nullable Array[Int]".strip_nullable == "Array[Int]"
# assert "Map[Set[String], Set[Int]]".strip_nullable == "Map[Set[String], Set[Int]]"
# ~~~
fun strip_nullable: Text
do
var prefix = "nullable "
return if has_prefix(prefix) then substring_from(prefix.length) else self
end
# Strip the `nullable` prefix and the params from the type name `self`
#
# ~~~
# assert "String".strip_nullable_and_params == "String"
# assert "nullable Array[Int]".strip_nullable_and_params == "Array"
# assert "Map[Set[String], Set[Int]]".strip_nullable_and_params == "Map"
# ~~~
fun strip_nullable_and_params: Text
do
var class_name = strip_nullable
var bracket_index = class_name.index_of('[')
if bracket_index == -1 then return class_name
return class_name.substring(0, bracket_index)
end
end
lib/serialization/engine_tools.nit:15,1--97,3