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.