Symbian Developer Library

SYMBIAN OS V6.1 EDITION FOR C++

[Index] [Glossary] [Previous] [Next]



How to use templated stream operators

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.