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 vari-
          able correctly when the archive is later restored.  The
          Objstore module provides 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 storing 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.

     Page 1                       Plan 9            (printed 12/22/24)