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();
}