epoc32/include/s32strm.inl
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
// Class RReadStream
williamr@2
    17
inline RReadStream::RReadStream()
williamr@2
    18
	: iSrc(NULL)
williamr@2
    19
/** Sets the stream buffer source to NULL, which implies that it is safe to close
williamr@2
    20
williamr@2
    21
@see RReadStream::Source() */
williamr@2
    22
	{}
williamr@2
    23
inline RReadStream::RReadStream(MStreamBuf* aSource)
williamr@2
    24
	: iSrc(aSource)
williamr@2
    25
/** Constructs a read stream over the supplied stream buffer.
williamr@2
    26
williamr@2
    27
@param aSource The stream buffer used to read from the read stream.
williamr@2
    28
@see RReadStream::Source() */
williamr@2
    29
	{}
williamr@2
    30
inline MStreamBuf* RReadStream::Source()
williamr@2
    31
/** Gets the underlying stream buffer for the read stream. This provides access 
williamr@2
    32
to the stream-buffer implementation used by the read stream.
williamr@2
    33
williamr@2
    34
Note:
williamr@2
    35
williamr@2
    36
If the stream buffer supports seeking, this allows the RReadStream client 
williamr@2
    37
to have random access to the stream data.
williamr@2
    38
williamr@2
    39
@return The underlying stream buffer for the read stream.
williamr@2
    40
@see RReadStream::Attach()
williamr@2
    41
@see RReadStream::Detach() */
williamr@2
    42
	{return iSrc;}
williamr@2
    43
inline void RReadStream::Close()
williamr@2
    44
/** Frees resources used by the stream.
williamr@2
    45
williamr@2
    46
@see RReadStream::Release() */
williamr@2
    47
	{Release();}
williamr@2
    48
inline void RReadStream::ReadL(RWriteStream& aStream)
williamr@2
    49
/**	Writes the content of this stream to the specified write stream.
williamr@2
    50
williamr@2
    51
@param aStream A reference to the write stream to which this stream is to be written.*/
williamr@2
    52
	{aStream.WriteL(*this);}
williamr@2
    53
inline void RReadStream::ReadL(RWriteStream& aStream,TInt aLength)
williamr@2
    54
/**	Writes the content of this stream to the specified write stream.
williamr@2
    55
williamr@2
    56
@param aStream A reference to the write stream to which this stream is to be written.
williamr@2
    57
@param aLength The length of data from this stream to be written to aStream.*/
williamr@2
    58
	{aStream.WriteL(*this,aLength);}
williamr@2
    59
inline void RReadStream::Pop()
williamr@2
    60
/** Removes the cleanup item for this read stream object from the cleanup stack. */
williamr@2
    61
	{CleanupStack::Pop();}
williamr@2
    62
inline void RReadStream::Attach(MStreamBuf* aSource)
williamr@2
    63
/** Sets the stream buffer source for this read stream. The existing source (if 
williamr@2
    64
there is one) will be discarded.
williamr@2
    65
williamr@2
    66
This is useful for derived classes, enabling them to set the source following 
williamr@2
    67
construction.
williamr@2
    68
williamr@2
    69
Note:
williamr@2
    70
williamr@2
    71
Release() is not called on any discarded stream buffer.
williamr@2
    72
williamr@2
    73
@param aSource The new source stream buffer for this read stream.
williamr@2
    74
@see RReadStream::Source()
williamr@2
    75
@see RReadStream::Detach() */
williamr@2
    76
	{iSrc=aSource;}
williamr@2
    77
inline void RReadStream::Detach()
williamr@2
    78
/** Sets the stream buffer source for this read stream to NULL. The existing source, 
williamr@2
    79
if there is one, will be discarded.
williamr@2
    80
williamr@2
    81
Note that Release() is not called on any discarded stream buffer.
williamr@2
    82
williamr@2
    83
@see RReadStream::Source()
williamr@2
    84
@see RReadStream::Attach() */
williamr@2
    85
	{iSrc=NULL;}
williamr@2
    86
williamr@2
    87
// Class RWriteStream
williamr@2
    88
inline RWriteStream::RWriteStream()
williamr@2
    89
	: iSnk(NULL),iExterL(NULL)
williamr@2
    90
/** The stream buffer sink, as returned by Sink(), is set to NULL, and the stream 
williamr@2
    91
has no associated Store map. */
williamr@2
    92
	{}
williamr@2
    93
inline RWriteStream::RWriteStream(const MExternalizer<TStreamRef>& anExter)
williamr@2
    94
	: iSnk(NULL),iExterL(&anExter)
williamr@2
    95
/** Constructs a write stream with an associated store map. The stream buffer sink 
williamr@2
    96
is set to NULL. 
williamr@2
    97
williamr@2
    98
@param anExter Specifies an externaliser. For example, CStoreMap implements 
williamr@2
    99
MExternalizer<TStreamRef>. */
williamr@2
   100
	{}
williamr@2
   101
inline RWriteStream::RWriteStream(MStreamBuf* aSink)
williamr@2
   102
	: iSnk(aSink),iExterL(NULL)
williamr@2
   103
/** Constructs a write stream over the supplied stream buffer. The stream has no 
williamr@2
   104
associated Store map.
williamr@2
   105
williamr@2
   106
@param aSink The stream buffer used to write to the write stream. */
williamr@2
   107
	{}
williamr@2
   108
inline MStreamBuf* RWriteStream::Sink()
williamr@2
   109
/** Gets the underlying stream buffer for the write stream. This provides access 
williamr@2
   110
to the stream-buffer implementation used by the write stream.
williamr@2
   111
williamr@2
   112
@return The underlying stream buffer for the write stream. */
williamr@2
   113
	{return iSnk;}
williamr@2
   114
inline void RWriteStream::Pop()
williamr@2
   115
/** Removes the cleanup item for this write stream object from the cleanup stack. */
williamr@2
   116
	{CleanupStack::Pop();}
williamr@2
   117
inline void RWriteStream::Attach(MStreamBuf* aSink)
williamr@2
   118
/** Sets the stream buffer sink for this write stream. The existing sink, if there 
williamr@2
   119
is one, will be discarded.
williamr@2
   120
williamr@2
   121
This is useful for derived classes, enabling them to set the sink following 
williamr@2
   122
construction.
williamr@2
   123
williamr@2
   124
Note:
williamr@2
   125
williamr@2
   126
Release() is not called for discarded sinks.
williamr@2
   127
williamr@2
   128
@param aSink The stream buffer sink for this write stream. */
williamr@2
   129
	{iSnk=aSink;}
williamr@2
   130
inline void RWriteStream::Detach()
williamr@2
   131
/** Sets the stream buffer sink for this write stream to NULL. The existing sink, 
williamr@2
   132
if there is one, will be discarded.
williamr@2
   133
williamr@2
   134
Note:
williamr@2
   135
williamr@2
   136
Release() is not called for discarded sinks. */
williamr@2
   137
	{iSnk=NULL;}
williamr@2
   138
williamr@2
   139
// Class TCardinality
williamr@2
   140
inline TCardinality::TCardinality(TInt aCount)
williamr@2
   141
	:iCount(aCount)
williamr@2
   142
/** Constructs the object with the specified value.
williamr@2
   143
williamr@2
   144
@param aCount The value for this object. */
williamr@2
   145
	{
williamr@2
   146
#if defined (_DEBUG)
williamr@2
   147
	__DbgChkRange(aCount);
williamr@2
   148
#endif
williamr@2
   149
	}
williamr@2
   150
inline TCardinality::operator TInt() const
williamr@2
   151
	{
williamr@2
   152
#if defined (_DEBUG)
williamr@2
   153
	__DbgChkRange(iCount);
williamr@2
   154
#endif
williamr@2
   155
	return iCount;
williamr@2
   156
	}
williamr@2
   157
williamr@2
   158
// Template class TExternalizer
williamr@2
   159
template <class T>
williamr@2
   160
inline void TExternalizer<T>::operator()(const T& anObject,RWriteStream& aStream) const
williamr@2
   161
	{aStream<<anObject;}
williamr@2
   162
template <class T>
williamr@2
   163
inline TExternalizeFunction TExternalizer<T>::Function()
williamr@2
   164
/** Gets a pointer to the function to be used to perform externalisation.
williamr@2
   165
williamr@2
   166
The implementation is the private, static member of this class, ExternalizeAsL().
williamr@2
   167
williamr@2
   168
@return The externalisation function. */
williamr@2
   169
	{return &ExternalizeAsL;}
williamr@2
   170
template <class T>
williamr@2
   171
void TExternalizer<T>::ExternalizeAsL(const TAny* aPtr,RWriteStream& aStream)
williamr@2
   172
	{aStream<<*((const T*)aPtr);}
williamr@2
   173
inline TExternalizer<TAny>::TExternalizer(TExternalizeFunction aFunction)
williamr@2
   174
	: iFunc(aFunction)
williamr@2
   175
	{}
williamr@2
   176
inline void TExternalizer<TAny>::operator()(const TAny* aPtr,RWriteStream& aStream) const
williamr@2
   177
	{(*iFunc)(aPtr,aStream);}
williamr@2
   178
inline TExternalizeFunction TExternalizer<TAny>::Function() const
williamr@2
   179
	{return iFunc;}
williamr@2
   180
williamr@2
   181
// Template class TInternalizer
williamr@2
   182
template <class T>
williamr@2
   183
inline void TInternalizer<T>::operator()(T& anObject,RReadStream& aStream) const
williamr@2
   184
	{aStream>>anObject;}
williamr@2
   185
template <class T>
williamr@2
   186
inline TInternalizeFunction TInternalizer<T>::Function()
williamr@2
   187
/** Gets a pointer to the function to be used to perform internalisation.
williamr@2
   188
williamr@2
   189
The implementation is the private, static member of this class, InternalizeAsL().
williamr@2
   190
williamr@2
   191
@return The internalisation function. */
williamr@2
   192
	{return &InternalizeAsL;}
williamr@2
   193
template <class T>
williamr@2
   194
void TInternalizer<T>::InternalizeAsL(TAny* aPtr,RReadStream& aStream)
williamr@2
   195
	{aStream>>*((T*)aPtr);}
williamr@2
   196
inline TInternalizer<TAny>::TInternalizer(TInternalizeFunction aFunction)
williamr@2
   197
	: iFunc(aFunction)
williamr@2
   198
	{}
williamr@2
   199
inline void TInternalizer<TAny>::operator()(TAny* aPtr,RReadStream& aStream) const
williamr@2
   200
	{(*iFunc)(aPtr,aStream);}
williamr@2
   201
inline TInternalizeFunction TInternalizer<TAny>::Function() const
williamr@2
   202
	{return iFunc;}
williamr@2
   203
williamr@2
   204
// Template class MExternalizer
williamr@2
   205
template <class T>
williamr@2
   206
inline void MExternalizer<T>::operator()(const T& anObject,RWriteStream& aStream) const
williamr@2
   207
	{ExternalizeL(anObject,aStream);}
williamr@2
   208
williamr@2
   209
// Template class MInternalizer
williamr@2
   210
template <class T>
williamr@2
   211
inline void MInternalizer<T>::operator()(T& anObject,RReadStream& aStream) const
williamr@2
   212
	{InternalizeL(anObject,aStream);}
williamr@2
   213
williamr@2
   214
// Class TStreamRef
williamr@2
   215
inline TStreamRef::TStreamRef(const TAny* aPtr,TExternalizeFunction aFunction)
williamr@2
   216
	: iPtr(aPtr),iFunc(aFunction)
williamr@2
   217
/** Constructor.
williamr@2
   218
williamr@2
   219
@param aPtr A pointer to the object for which externalisation is being done.
williamr@2
   220
@param aFunction The externalisation function. */
williamr@2
   221
	{}
williamr@2
   222
inline const TAny* TStreamRef::Ptr() const
williamr@2
   223
/** Gets the pointer to the object to be externalised.
williamr@2
   224
williamr@2
   225
@return The object to be externalised. */
williamr@2
   226
	{return iPtr;}
williamr@2
   227
inline TExternalizeFunction TStreamRef::Function() const
williamr@2
   228
/** Gets a pointer to the externalisation function.
williamr@2
   229
williamr@2
   230
@return The externalisation function. */
williamr@2
   231
	{return iFunc;}
williamr@2
   232
inline void TStreamRef::ExternalizeL(RWriteStream& aStream) const
williamr@2
   233
/** Externalises the object to the specified write stream.
williamr@2
   234
williamr@2
   235
@param aStream The write stream. */
williamr@2
   236
	{aStream.WriteRefL(*this);}
williamr@2
   237
williamr@2
   238
// Externalization and internalization functions
williamr@2
   239
IMPORT_C void ExternalizeL(TInt64 anInt64,RWriteStream& aStream);
williamr@2
   240
IMPORT_C void InternalizeL(TInt64& anInt64,RReadStream& aStream);
williamr@2
   241
williamr@2
   242
IMPORT_C void ExternalizeL(const TDesC8& aDes8,RWriteStream& aStream);
williamr@2
   243
IMPORT_C void ExternalizeL(const TDesC16& aDes16,RWriteStream& aStream);
williamr@2
   244
IMPORT_C void InternalizeL(TDes8& aDes8,RReadStream& aStream);
williamr@2
   245
IMPORT_C void InternalizeL(TDes16& aDes16,RReadStream& aStream);
williamr@2
   246
williamr@2
   247
IMPORT_C void ExternalizeL(const TCheckedUid& aUid,RWriteStream& aStream);
williamr@2
   248
IMPORT_C void InternalizeL(TCheckedUid& aUid,RReadStream& aStream);
williamr@2
   249
williamr@2
   250
IMPORT_C void ExternalizeL(TPoint aPoint,RWriteStream& aStream);
williamr@2
   251
IMPORT_C void ExternalizeL(TSize aSize,RWriteStream& aStream);
williamr@2
   252
IMPORT_C void ExternalizeL(const TRect& aRect,RWriteStream& aStream);
williamr@2
   253
IMPORT_C void InternalizeL(TPoint& aPoint,RReadStream& aStream);
williamr@2
   254
IMPORT_C void InternalizeL(TSize& aSize,RReadStream& aStream);
williamr@2
   255
IMPORT_C void InternalizeL(TRect& aRect,RReadStream& aStream);
williamr@2
   256
williamr@2
   257
IMPORT_C void ExternalizeL(const CBufBase& aBuf,RWriteStream& aStream);
williamr@2
   258
IMPORT_C void InternalizeL(CBufBase& aBuf,RReadStream& aStream);
williamr@2
   259
williamr@2
   260
IMPORT_C void ArrayExternalizeCountL(TInt aCount,RWriteStream& aStream);
williamr@2
   261
IMPORT_C void DoExternalizeAllL(const CArrayFixBase& anArray,RWriteStream& aStream,TExternalizer<TAny> anExter);
williamr@2
   262
IMPORT_C TInt ArrayInternalizeCountL(RReadStream& aStream);
williamr@2
   263
IMPORT_C void DoInternalizeAllL(CArrayFixBase& anArray,RReadStream& aStream,TInternalizer<TAny> anInter);
williamr@2
   264
williamr@2
   265
template <class T>
williamr@2
   266
inline void ExternalizeCountL(const CArrayFix<T>& anArray,RWriteStream& aStream)
williamr@2
   267
	{ArrayExternalizeCountL(anArray.Count(),aStream);}
williamr@2
   268
template <class T>
williamr@2
   269
inline void ExternalizeAllL(const CArrayFix<T>& anArray,RWriteStream& aStream)
williamr@2
   270
	{DoExternalizeAllL(anArray,aStream,TExternalizer<T>::Function());}
williamr@2
   271
template <class T>
williamr@2
   272
void InternalizeCountL(CArrayFix<T>& anArray,RReadStream& aStream)
williamr@2
   273
	{
williamr@2
   274
	TInt n=ArrayInternalizeCountL(aStream);
williamr@2
   275
	anArray.ResizeL(n);
williamr@2
   276
	}
williamr@2
   277
template <class T>
williamr@2
   278
inline void InternalizeAllL(CArrayFix<T>& anArray,RReadStream& aStream)
williamr@2
   279
	{DoInternalizeAllL(anArray,aStream,TInternalizer<T>::Function());}
williamr@2
   280
williamr@2
   281
template <class T>
williamr@2
   282
void ExternalizeL(const CArrayFix<T>& anArray,RWriteStream& aStream)
williamr@2
   283
	{
williamr@2
   284
	ExternalizeCountL(anArray,aStream);
williamr@2
   285
	ExternalizeAllL(anArray,aStream);
williamr@2
   286
	}
williamr@2
   287
template <class T>
williamr@2
   288
void InternalizeL(CArrayFix<T>& anArray,RReadStream& aStream)
williamr@2
   289
	{
williamr@2
   290
	InternalizeCountL(anArray,aStream);
williamr@2
   291
	InternalizeAllL(anArray,aStream);
williamr@2
   292
	}
williamr@2
   293
williamr@2
   294
template <class T>
williamr@2
   295
inline void ExternalizeL(const T* aPtr,RWriteStream& aStream)
williamr@2
   296
	{aStream<<TStreamRef(aPtr,TExternalizer<T>::Function());}
williamr@2
   297
williamr@2
   298
template <class T>
williamr@2
   299
inline void DoExternalizeL(const T& anObject,RWriteStream& aStream,Externalize::Member)
williamr@2
   300
	{anObject.ExternalizeL(aStream);}
williamr@2
   301
template <class T>
williamr@2
   302
inline void DoInternalizeL(T& anObject,RReadStream& aStream,Internalize::Member)
williamr@2
   303
	{anObject.InternalizeL(aStream);}
williamr@2
   304
williamr@2
   305
template <class T>
williamr@2
   306
inline void DoExternalizeL(const T& anObject,RWriteStream& aStream,Externalize::Function)
williamr@2
   307
	{ExternalizeL(anObject,aStream);}
williamr@2
   308
template <class T>
williamr@2
   309
inline void DoInternalizeL(T& anObject,RReadStream& aStream,Internalize::Function)
williamr@2
   310
	{InternalizeL(anObject,aStream);}
williamr@2
   311
williamr@2
   312
// Externalization and internalization selectors
williamr@2
   313
inline Externalize::Member Externalization(const TAny*)
williamr@2
   314
	{return Externalize::Member();}
williamr@2
   315
inline Internalize::Member Internalization(TAny*)
williamr@2
   316
	{return Internalize::Member();}
williamr@2
   317
williamr@2
   318
inline Externalize::Function Externalization(const TDesC8*)
williamr@2
   319
	{return Externalize::Function();}
williamr@2
   320
inline Externalize::Function Externalization(const TDesC16*)
williamr@2
   321
	{return Externalize::Function();}
williamr@2
   322
inline Internalize::Function Internalization(TDes8*)
williamr@2
   323
	{return Internalize::Function();}
williamr@2
   324
inline Internalize::Function Internalization(TDes16*)
williamr@2
   325
	{return Internalize::Function();}
williamr@2
   326
williamr@2
   327
inline Externalize::Function Externalization(const CBufBase*)
williamr@2
   328
	{return Externalize::Function();}
williamr@2
   329
inline Externalize::Function Externalization(const CArrayFixBase*)
williamr@2
   330
	{return Externalize::Function();}
williamr@2
   331
inline Internalize::Function Internalization(CBufBase*)
williamr@2
   332
	{return Internalize::Function();}
williamr@2
   333
inline Internalize::Function Internalization(CArrayFixBase*)
williamr@2
   334
	{return Internalize::Function();}
williamr@2
   335
williamr@2
   336
template <class T>
williamr@2
   337
inline Externalize::Function Externalization(T*const*)
williamr@2
   338
	{return Externalize::Function();}
williamr@2
   339
williamr@2
   340
// Input and output operators
williamr@2
   341
template <class T>
williamr@2
   342
inline RWriteStream& operator<<(RWriteStream& aStream,const T& anObject)
williamr@2
   343
	{DoExternalizeL(anObject,aStream,Externalization(&anObject));return aStream;}
williamr@2
   344
template <class T>
williamr@2
   345
inline RReadStream& operator>>(RReadStream& aStream,T& anObject)
williamr@2
   346
	{DoInternalizeL(anObject,aStream,Internalization(&anObject));return aStream;}
williamr@2
   347
williamr@2
   348
inline RWriteStream& operator<<(RWriteStream& aStream,const TInt8& anInt8)
williamr@2
   349
	{aStream.WriteInt8L(anInt8);return aStream;}
williamr@2
   350
inline RWriteStream& operator<<(RWriteStream& aStream,const TInt16& anInt16)
williamr@2
   351
	{aStream.WriteInt16L(anInt16);return aStream;}
williamr@2
   352
inline RWriteStream& operator<<(RWriteStream& aStream,const TInt32& anInt32)
williamr@2
   353
	{aStream.WriteInt32L(anInt32);return aStream;}
williamr@2
   354
inline RWriteStream& operator<<(RWriteStream& aStream,const TUint8& aUint8)
williamr@2
   355
	{aStream.WriteUint8L(aUint8);return aStream;}
williamr@2
   356
inline RWriteStream& operator<<(RWriteStream& aStream,const TUint16& aUint16)
williamr@2
   357
	{aStream.WriteUint16L(aUint16);return aStream;}
williamr@2
   358
inline RWriteStream& operator<<(RWriteStream& aStream,const TUint32& aUint32)
williamr@2
   359
	{aStream.WriteUint32L(aUint32);return aStream;}
williamr@2
   360
inline RWriteStream& operator<<(RWriteStream& aStream,const TReal32& aReal32)
williamr@2
   361
	{aStream.WriteReal32L(aReal32);return aStream;}
williamr@2
   362
inline RWriteStream& operator<<(RWriteStream& aStream,const TReal64& aReal64)
williamr@2
   363
	{aStream.WriteReal64L(aReal64);return aStream;}
williamr@2
   364
williamr@2
   365
inline RReadStream& operator>>(RReadStream& aStream,TInt8& anInt8)
williamr@2
   366
	{anInt8=aStream.ReadInt8L();return aStream;}
williamr@2
   367
inline RReadStream& operator>>(RReadStream& aStream,TInt16& anInt16)
williamr@2
   368
	{anInt16=aStream.ReadInt16L();return aStream;}
williamr@2
   369
inline RReadStream& operator>>(RReadStream& aStream,TInt32& anInt32)
williamr@2
   370
	{anInt32=aStream.ReadInt32L();return aStream;}
williamr@2
   371
inline RReadStream& operator>>(RReadStream& aStream,TUint8& aUint8)
williamr@2
   372
	{aUint8=aStream.ReadUint8L();return aStream;}
williamr@2
   373
inline RReadStream& operator>>(RReadStream& aStream,TUint16& aUint16)
williamr@2
   374
	{aUint16=aStream.ReadUint16L();return aStream;}
williamr@2
   375
inline RReadStream& operator>>(RReadStream& aStream,TUint32& aUint32)
williamr@2
   376
	{aUint32=aStream.ReadUint32L();return aStream;}
williamr@2
   377
inline RReadStream& operator>>(RReadStream& aStream,TReal32& aReal32)
williamr@2
   378
	{aReal32=aStream.ReadReal32L();return aStream;}
williamr@2
   379
inline RReadStream& operator>>(RReadStream& aStream,TReal64& aReal64)
williamr@2
   380
	{aReal64=aStream.ReadReal64L();return aStream;}
williamr@2
   381
williamr@2
   382
inline RWriteStream& operator<<(RWriteStream& aStream,const TInt64& anInt64)
williamr@2
   383
	{ExternalizeL(anInt64,aStream);return aStream;}
williamr@2
   384
inline RReadStream& operator>>(RReadStream& aStream,TInt64& anInt64)
williamr@2
   385
	{InternalizeL(anInt64,aStream);return aStream;}
williamr@2
   386
williamr@2
   387
inline RWriteStream& operator<<(RWriteStream& aStream,const TUid& aUid)
williamr@2
   388
	{return aStream<<aUid.iUid;}
williamr@2
   389
inline RWriteStream& operator<<(RWriteStream& aStream,const TCheckedUid& aUid)
williamr@2
   390
	{ExternalizeL(aUid,aStream);return aStream;}
williamr@2
   391
inline RReadStream& operator>>(RReadStream& aStream,TUid& aUid)
williamr@2
   392
	{return aStream>>aUid.iUid;}
williamr@2
   393
inline RReadStream& operator>>(RReadStream& aStream,TCheckedUid& aUid)
williamr@2
   394
	{InternalizeL(aUid,aStream);return aStream;}
williamr@2
   395
williamr@2
   396
inline RWriteStream& operator<<(RWriteStream& aStream,const TPoint& aPoint)
williamr@2
   397
	{ExternalizeL(aPoint,aStream);return aStream;}
williamr@2
   398
inline RWriteStream& operator<<(RWriteStream& aStream,const TSize& aSize)
williamr@2
   399
	{ExternalizeL(aSize,aStream);return aStream;}
williamr@2
   400
inline RWriteStream& operator<<(RWriteStream& aStream,const TRect& aRect)
williamr@2
   401
	{ExternalizeL(aRect,aStream);return aStream;}
williamr@2
   402
inline RReadStream& operator>>(RReadStream& aStream,TPoint& aPoint)
williamr@2
   403
	{InternalizeL(aPoint,aStream);return aStream;}
williamr@2
   404
inline RReadStream& operator>>(RReadStream& aStream,TSize& aSize)
williamr@2
   405
	{InternalizeL(aSize,aStream);return aStream;}
williamr@2
   406
inline RReadStream& operator>>(RReadStream& aStream,TRect& aRect)
williamr@2
   407
	{InternalizeL(aRect,aStream);return aStream;}
williamr@2
   408
williamr@2
   409
inline RWriteStream& operator<<(RWriteStream& aStream,const TStreamRef& aRef)
williamr@2
   410
	{aRef.ExternalizeL(aStream);return aStream;}
williamr@4
   411