Isomorphic Persistence
Isomorphic persistence is the storage and retrieval of objects to and from a stream such that the pointer relationships between the objects are preserved. If there are no pointer relationships, isomorphic persistence effectively saves and restores objects the same way as simple persistence. When a collection is isomorphically persisted, all objects within that collection are assumed to have the same type. (A collection of objects of the same type is called a homogeneous collection.)
You can use isomorphic persistence to save and restore any Essential Tools Module class listed in Table 13 in The C++ Standard Library Containers. In addition, you can add isomorphic persistence to a class by following the technique described in Designing Your Class to Use Isomorphic Persistence.
Note that in this implementation of the Essential Tools Module, isomorphic persistence of types templatized on pointers is not supported. For example, saving and restoring RWTValDlist<int*> is not supported. C++ template mechanisms prevent us from being able to do this. However, this restriction is probably a good thing—pointers saved at one location are likely to be troublesome indeed when injected into another. In this case, we suggest that you use RWTPtrDlist<int> instead.
Table 17 – Isomorphic persistence classes  
Category
Description
C++ Standard Library-based collection classes
RWCollectable (Smalltalk-like) classes
RWCollectableDate, RWCollectableString... Note that RWCollectable classes also provide polymorphic persistence (see Polymorphic Persistence)
RWCollection classes that derive from RWCollectable
Rogue Wave traditional Tools.h++ templatized collections