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.