diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/wspencoder.h --- a/epoc32/include/wspencoder.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/wspencoder.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,173 @@ -wspencoder.h +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + + +/** + @file WSPEncoder.h + @publishedAll + @released +*/ + +#ifndef __WSPENCODER_H__ +#define __WSPENCODER_H__ + +#include +#include // RFs +#include // arrays etc. +#include + +/** +enum CodecPanic +@publishedAll +@released +*/ +enum TWspCodecPanic + { + /** Due to failure to call StartValueLength function */ + EWspCodecPanicStartValueLengthNotCalled=0, + /** Due to failure to call EndValueLength matching a call to StartValueLength */ + EWspCodecPanicEndValueLengthNotCalled, + /** Due to failure to call StartHeaderL function */ + EWspCodecPanicStartHeaderLNotCalled, + /** Due to StartHeaderL function being called twice without EndHeaderL */ + EWspCodecPanicStartHeaderCalledTwice, + /** Due to parameter Token not having the top bit set */ + EWspCodecPanicInvalidToken + }; + +/** +This class can be used to encode one header field at a time, +with all its values and parameters. + +It has no knowledge of encoding the BNF of a particular header field, but +the functions provided can be used in combination, producing an 8-bit buffer +containing the encoded header. + +Intended usage would be to call a series of functions. The first one being StartHeader, +The final one being EndHeader, which would return a buffer containing +the complete encoded header field. +eg: + encoder->StartHeaderL(); + encoder->AddLongIntL(); + encoder->AddTextStringL(); + HBufC8* output = encoder->EndHeaderL(); +@publishedAll +@released +*/ +class CWspHeaderEncoder : public CBase + { +public: + IMPORT_C static CWspHeaderEncoder* NewL(); + + IMPORT_C static CWspHeaderEncoder* NewLC(); + + + IMPORT_C virtual ~CWspHeaderEncoder(); + + IMPORT_C void StartHeaderL(TUint8 aToken); + + + IMPORT_C void StartHeaderL(const TDesC8& aString); + + IMPORT_C void StartHeaderL(const RStringF aString); + + + IMPORT_C HBufC8* EndHeaderL(); + + + + IMPORT_C void AddIntegerL(const TUint aInt); + + + IMPORT_C void AddShortIntL(const TUint8 aValue); + + IMPORT_C void AddShortLengthL(const TUint8 aValue); + + + IMPORT_C void AddLongIntL(const TUint32 aValue); + + + IMPORT_C void AddUintVarL(const TUint aInt); + + + IMPORT_C void AddTextStringL(const RString& aText); + + IMPORT_C void AddTextStringL(const TDesC8& aText); + + IMPORT_C void AddDateL(const TDateTime aDate); + + IMPORT_C void AddTokenL(const TUint8 aToken); + + IMPORT_C void AddTokenTextL(const TDesC8& aTokenText); + + IMPORT_C void AddDataL(const TDesC8& aData); + + + + IMPORT_C void StartValueLengthL(); + + IMPORT_C void EndValueLengthL(); + +private: + + CWspHeaderEncoder(); + + void Init(); + + + void ConstructL(); + +private: + /** + Array for storing the partial encoded header. + Each time StartValueLength is called a new array + element is used. When EndValueLength is called, + the array is decremented, data from the last + element being added to the one before. + */ + RPointerArray iArray; + + /** + Value incremented as the encoded header increases in size. + Used to allocate the buffer for storing the final + encoded header, output when EndHeader is called. + */ + TInt iTotalLength; + }; + +/** +Class encapsulating primitive encoding methods which are defined in the WSP standard. +Input will be encoded and returned in an 8 bit buffer. +@publishedAll +@released +*/ +class TWspPrimitiveEncoder + { +public: + IMPORT_C static TUint8 ShortInt(const TUint8 aValue); + + IMPORT_C static HBufC8* LongIntL(const TUint32 aValue); + + IMPORT_C static HBufC8* UintVarL(const TUint32 aInt); + + IMPORT_C static HBufC8* TextStringL(const RString aText); + + IMPORT_C static HBufC8* TextStringL(const TDesC8& aText); + + IMPORT_C static HBufC8* DateL(const TDateTime aDate); + }; + +#endif // __WSPENCODER_H__