How to externalise and internalise

For a class TX defined as:

      
       
      
      class TX
      {
public:
      ...
      void ExternalizeL(RWriteStream& aStream) const;
      void InternalizeL(RReadStream& aStream);
      ...
      };
     

an instance of TX can be externalised to the stream outstream , by calling the ExternalizeL() member function of TX :

      
       
      
      ...
    TX object;
    ...
    object.ExternalizeL(outstream);
    ...
     

An alternative, and better way, is to use the templated stream operator<< . The Store framework implements this by calling TX::ExternalizeL() . The syntax is simply:

      
       
      
      ...
    outstream << object; // externalise object
    ...
     

Similarly, the TX object can be internalised from the stream instream , by calling the InternalizeL() member function of TX :

      
       
      
      TX object;
       ...
    object.InternalizeL(instream);
    ...
     

The templated stream operator>> can also be used. The Store framework implements this by calling TX::InternalizeL() . The syntax is simply:

      
       
      
      instream >> object; // internalise object