Providing polymorphic persistence between different executions of the same or different programs requires a permanent identifier for each class being persisted. Until now, the permanent identifier for any
RWCollectable has been its
RWClassID. For each class that derives from
RWCollectable, the macro
RW_DEFINE_COLLECTABLE_CLASS_BY_ID caused code to be generated that forever associated the class and its
RWClassID. This identification has been retained, but in the current version of the Essential Tools Module you may choose the
RW_DEFINE_COLLECTABLE_CLASS_BY_NAME macro, which will permanently link the chosen
RWStringID with the class.
The addition of
RWStringID identifiers will result in more identifiers, and more self-documenting
RWCollectable identifiers, than were possible under the old restriction. To accommodate the new identifiers, a temporary
RWClassID is now generated for each
RWCollectable class that has an
RWStringID specified by the developer. These
RWClassIDs are built as needed during the run of an executable, and remain constant throughout that run. However, they may be generated in a different order on a different executable or during a different run, so they are not suitable for permanent storage.