SPREE-OBJSTORE(2)SPREE-OBJSTORE(2)NAME
Objstore - support for object archiving in Spree engines.
SYNOPSIS
include "spree.m";
include "spree/objstore.m";
Object: import Spree;
objstore := load Objstore Objstore->PATH;
init: fn(m: Spree, c: ref Clique);
setname: fn(o: ref Object, name: string);
unarchive: fn();
get: fn(name: string): ref Object;
DESCRIPTION
The spree(2) module provides an Archives module to allow storage of an
engine's object hierarchy to a persistent medium. This does not store
the state internal to an engine that is not reflected in the object
hierarchy, e.g. global variables. In particular, if an engine holds a
variable referring to an object, it is not able to reset that variable
correctly when the archive is later restored. The Objstore module pro‐
vides some support for the naming of objects before archival, and for
their retrieval by name, in order to enable this.
Init must be called first with the spree module, m, and the current
clique, c. When a module is archiving itself, it should name each
object that it wishes to retrieve, using setname. It is permissible
for a single object to be given multiple names: the object will later
be retrievable under any of its given names.
When restoring from an archive, a module should call unarchive, which
scans through the object hierarchy looking for named objects and stor‐
ing their names. After this, get(name) will return the object, o, that
was named name by a previous setname(o, name), or nil if there was none
such.
The names for an object are stored in the attribute ``§'', which is
cleared when unarchive is called.
SPREE-OBJSTORE(2)