818 Chapter 18 Object-Oriented Infrastructure
{
Object* pkObject;
rkStream.Read(pkObject);
pkLink->Add(pkObject);
}
WM4_END_DEBUG_STREAM_LOAD(Object);
}
Notice how the function loads the controller pointers. At the time the object was
saved to disk, this value was the memory address for the controller. Now at load time
it can only be used as a unique identifier. That value is stored in the link object for
the linking phase that occurs after loading.
Derived classes implement the
Load function by calling the base class Load first,
and then reading native data followed by link data. This is done in the same order
that
Save processed the data.
void DerivedClass::Load (Stream& rkStream, Stream::Link* pkLink)
{
WM4_BEGIN_DEBUG_STREAM_LOAD;
BaseClass::Load(rkStream,pkLink); ...