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 formatsnitc :: actors_generation_phase
Generate a support module for each module that contain a class annotated withis actor
nitc :: actors_injection_phase
Injects model for the classes annotated with "is actor" sonitc :: api_metrics
nitc :: astbuilder
Instantiation and transformation of semantic nodes in the AST of expressions and statementsbucketed_game :: bucketed_game
Game framework with an emphasis on efficient event coordinationcflags
and ldflags
to specify
accept_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 cameranitc :: commands_ini
serialization :: custom_serialization
Example of an ad hoc serializer that is tailored to transform business specific objects into customized representation.nitc :: detect_variance_constraints
Collect metrics about detected variances constraints on formal types.extra_java_files
to compile extra java files
FileServer
action, which is a standard and minimal file server
HttpRequest
class and services to create it
app::http_request
main service AsyncHttpRequest
nitc :: i18n_phase
Basic support of internationalization through the generation of id-to-string tablesSerializable::inspect
to show more useful information
nitc :: light_only
Compiler support for the light FFI only, detects unsupported usage of callbacksnitc
.
nitc :: modelbuilder
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 nitccnitc :: nitmetrics
A program that collects various metrics on nit programs and librariesnitc :: nitrestful
Tool generating boilerplate code linking RESTful actions to Nit methodsnlp :: nlp_server
threaded
annotation
restful
annotation documented at lib/nitcorn/restful.nit
nitc :: separate_erasure_compiler
Separate compilation of a Nit program with generic type erasurenitc :: serialization_code_gen_phase
Phase generating methods (code) to serialize Nit objectsnitc :: serialization_model_phase
Phase generating methods (model-only) to serialize Nit objectsdeserialize_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
clone
method of the astbuilder tool
gamnit :: texture_atlas_parser
Tool to parse XML texture atlas and generated Nit code to access subtexturesnitc :: toolcontext
Common command-line tool infrastructure than handle options and error messagesnitc :: uml_module
Services for generation of a UML package diagram based on aModel
# 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