--- 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 <e32base.h>
+#include <f32file.h> // RFs
+#include <badesca.h> // arrays etc.
+#include <stringpool.h>
+
+/**
+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<CDesC8Array> 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__