******************************* Picklers ********************************
Generates both Pickler
s and Unpickler
s for Spore
s and SporeWithEnv
s.
Generates both Pickler
s and Unpickler
s for Spore
s and SporeWithEnv
s.
The Pickler
s will be used by default and the Unpickler
s will be invoked
by the UnpicklerFetcher
defined below. Fortunately, we don't have to keep
type information of Captured
in the pickled message since we already know
which is the correct tag when unpickle
is invoked (this is kind of a hack).
****************************** Unpicklers *******************************
Generates an Unpickler
that will be able to get the classname of another
Unpickler
and successfully instantiate it and delegate its responsability.
Generates an Unpickler
that will be able to get the classname of another
Unpickler
and successfully instantiate it and delegate its responsability.
This is used to call Unpickler
s that are generated at the same time as
the Pickler
s but that cannot be run when unpickling because we don't have
enough information, e.g. the user does not specify that a Spore
is indeed
SporeWithEnv
. Also, it's not allowed to include the type refinements of
Captured
in the type annotation of the method unpickle
, so that
prevents them from being selected in the implicit search.
The current implementation doesn't really use this method but there can be corner cases or future bugs that could be fixed using it.
The current implementation doesn't really use this method but there can be corner cases or future bugs that could be fixed using it. It's a good way to check if some type is primitive.
******************** Runtime picklers and unpicklers ********************