Internalising a Swizzle

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.