Internalising a Swizzle from a stream has assignment semantics.
The process of internalisation assumes that the current position within the stream contains the external representation of a stream ID. The stream which corresponds to this ID contains the external representation of some object.
The result is a Swizzle which represents the object by stream ID.
The following code fragments illustrate the process.
iB
is a CClassB
type component of a class
CClassABC
, and is represented by a Swizzle. The data member is
defined as:
class CCClassABC : public CBase
{
...
TSwizzle<CClassB> iB;
...
}
The example assumes that the stream ID of the swizzled object has been externalised as in Externalizing a Swizzle.
CClassB's RestoreL() and InternalizeL() functions are implemented as:
void CClassABC::RestoreL()
{
RStoreReadStream stream;
stream.OpenLC(iStore,iId);
InternalizeL(stream);
CleanupStack::PopAndDestroy();
}
void CClassABC::InternalizeL(RReadStream& aStream)
{
...
aStream >> iB; // internalises Swizzle from stream
...
}
Here, iId
is the stream ID containing
CClassABC
data.