Defining Pivot Points

It is usually necessary to allow objects within an object store to point to objects that are part of the "program", such as standard class objects (recall that everything is an object, and every object has a class. Furthermore, the representation is such that objects that are actually in the heap have actual pointers to their class objects. Hence, in order to have, for example, a vector located in the persistent store, it is necessary to somehow allow that object to point to the (single) <vector> class object. Furthermore, since the location in memory of built-in class objects may change from process to process, a different object naming scheme must be employed to resolve the references to built-in or other application objects.)

The mechanism that this module provides to allow persistent objects to refer to transient objects (but in a persistent way) is called pivots.

The application defines a sequence of pivot objects with well-known names (they are defined in collections on "indirect pages" -- see setup-indirect-page); the system automatically resolves references to such objects when a page is loaded, and recognizes references to them when a page is written out. The next time the application opens an object store, it configures the same sequence of pivot objects -- then, a page that is loaded will correctly resolve to the corresponding application object.

Under normal circumstances, this module provides a pre-defined collection of pivots for the standard built-in classes such (for example) as the <vector> and <pair> class objects.