|   | |
The basic protocol for storing is the StoreL()
function and should be prototyped as:
TStreamId StoreL(CStreamStore& aStore) const;
The function takes a reference to the store in which the stream is to be stored and returns the stream ID through which the object can be restored.
In some cases, the design of a class may be such that it maintains
a pointer or reference to the store. In this event, the
CStreamStore argument would be redundant.
To store an object that does not contain any other objects:
construct a write stream object, i.e. an instance of
RStoreWriteStream
externalise the object
return the ID of the stream
The following code fragment shows the canonical form for some
general class CClassA:
TStreamId CClassA::StoreL(CStreamStore& aStore) const
    {
    RStoreWriteStream stream;
    TStreamId id=stream.CreateLC(aStore);
    ExternalizeL(stream);
    stream.CommitL();
    CleanupStack::PopAndDestroy();
    return id;
    }
The basic protocol for restoring is the RestoreL()
function and should be prototyped as:
void RestoreL(CStreamStore& aStore,TStreamId anId);
The function takes a reference to the store in which the stream is stored and the ID that identifies that stream is stored.
To restore an object that does not contain any other objects:
construct a read stream object, i.e. an instance of
RStoreReadStream
internalise the object.
The following code fragment shows an example for some general class
CClassA:
void CClassA::RestoreL(CStreamStore& aStore, TStreamId anId)
      {
    RStoreReadStream stream;
      stream.OpenLC(aStore,anId);
      InternalizeL(stream);
      CleanupStack::PopAndDestroy();
      }