Templated stream operators are straight forward to use. For example,
given the class TSimple
defined as:
class TSimple
{
public :
void InternalizeL(RReadStream& aStream);
void ExternalizeL(RWriteStream& aStream) const;
...
TInt8 iInt8Value;
TInt64 iInt64Value;
TRect iRectangle;
TUid iUid;
CBufSeg* iSegBuffer;
}
ExternalizeL()
and InternalizeL()
might be
implemented as:
void TSimple::ExternalizeL(RWriteStream& aStream) const
{
aStream << iInt8Value;
aStream << iInt64Value;
aStream << iRectangle
aStream << iUid;
aStream << *iSegBuffer;
}
void TSimple::InternalizeL(RReadStream& aStream)
{
aStream >> iInt8Value;
aStream >> iInt64Value;
aStream >> iRectangle
aStream >> iUid;
aStream >> *iSegBuffer;
}
The templated operators can also be used on an object of type
TSimple
. For example:
TSimple simple;
...
aStream << simple;
...
The operator<<
results in call to
TSimple::ExternalizeL()
function and this, in turn, calls
operator<<
on TSimple
's data members.