Duration of Identifiers
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.