--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/httputils/inc/WSPDecoder.h Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,244 @@
+// 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 "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file WSPDecoder.h
+ @publishedAll
+ @deprecated
+*/
+
+#ifndef __WSPDECODER_H__
+#define __WSPDECODER_H__
+
+#include <e32base.h>
+#include <stringpool.h>
+
+
+/**
+* This file contains the following classes:
+* TWspField
+* TWspHeaderSegmenter
+* TWspPrimitiveDecoder
+*
+*/
+
+
+/**
+enum DecoderPanic
+@publishedAll
+@deprecated
+*/
+enum TWspDecoderPanic
+ {
+ /**
+ LongIntOverflow
+ */
+ EWspDecoderLongIntOverflow,
+ /**
+ DateOverflow
+ */
+ EWspDecoderDateOverflow
+ };
+
+/**
+TWspField class holds the pair <HeaderName, ValueBuffer>
+This is a simple class that associates these values.
+No ownership is handed to this class. It is up to user of this class to
+open and close all resources used.
+@publishedAll
+@deprecated
+*/
+class TWspField
+ {
+public:
+
+ inline TWspField();
+
+ inline TWspField(RStringF aHdrName, TPtrC8 aValBuf);
+
+ /**
+ The header name of a opened RStringF - *Not Owned*
+ This is externally opened. It must be externally
+ closed.
+ */
+ RStringF iHdrName;
+
+ /** The raw value buffer - Note: Not owned by this */
+ TPtrC8 iValBuffer;
+ };
+
+/**
+TWspHeaderSegmenter segments a WSP buffer into WSP header/value pairs.
+It detects boundaries between header/values based on the WAP-WSP spec.
+ - To construct, buffer and string pool is passed in
+ - Call to NextL() to iterate through the buffer - this returns a TWspField
+ - NextL() returns KErrNotFound when done
+
+@publishedAll
+@deprecated
+*/
+class TWspHeaderSegmenter
+ {
+public:
+
+ inline TWspHeaderSegmenter(RStringPool aPool, const TStringTable& aStringTable, TPtrC8 aBuffer);
+
+ IMPORT_C TInt NextL(TWspField& aWspHeader);
+
+ inline TInt Offset() const;
+
+private:
+ /** Raw buffer that will be segmented - Not Owned */
+ TPtrC8 iBuffer;
+
+ /** Segment offset into the buffer. */
+ TInt iOffset;
+
+ /** Opened string pool to use with the string table already loaded - Not Owned */
+ RStringPool iPool;
+
+ /** The string table to use in the string pool - Not Owned */
+ const TStringTable& iStringTable;
+ };
+
+/**
+Decoder for WSP Primitves - WAP-WSP Section 8.4.1
+@publishedAll
+@deprecated
+*/
+class TWspPrimitiveDecoder
+ {
+ public:
+
+ /**
+ * TWspHeaderType describe the types from WAP-WSP Section 8.4.1.2
+ */
+ enum TWspHeaderType
+ {
+ /**
+ The type has not been set
+ */
+ ENotSet,
+ /**
+ 0-31 - octet is a value length
+ */
+ ELengthVal,
+ /**
+ 34 - value is a quoted text string, terminated by a Null
+ */
+ EQuotedString,
+ /**
+ 32-127 - value is a text string, terminated by a Null
+ */
+ EString,
+ /**
+ 128-255 - encoded 7 bit value, this header has no more data
+ */
+ E7BitVal
+ };
+
+
+ inline TWspPrimitiveDecoder(TPtrC8 aBuffer);
+
+ IMPORT_C TWspHeaderType VarType() const;
+
+ IMPORT_C TInt LengthVal(TInt& aVal);
+
+ IMPORT_C TInt String(TPtrC8& aString);
+
+
+ IMPORT_C TInt Val7Bit(TUint8& aVal);
+
+ IMPORT_C TInt Integer(TUint32& aVal);
+
+ IMPORT_C TInt LongInt(TUint32& aVal);
+
+ IMPORT_C TInt UintVar(TUint32& aVal);
+
+ IMPORT_C TInt VersionL(RStringPool aPool, RStringF& aVer);
+
+ IMPORT_C TInt Date(TDateTime& aDateTime);
+
+ private:
+ /** The raw buffer */
+ TPtrC8 iBuffer;
+
+ /** The current offset */
+ TInt iOffset;
+ };
+
+/**
+ Constructor
+
+ */
+inline TWspField::TWspField()
+ {
+ }
+
+/**
+ Constructor
+
+ @param aHdrName In - The Header Name. This must be an opened RStringF
+ @param aValBuf In - the Buffer containing the header value in its raw format
+*/
+inline TWspField::TWspField(RStringF aHdrName, TPtrC8 aValBuf) :
+ iHdrName(aHdrName),
+ iValBuffer(aValBuf)
+ {
+ }
+
+/**
+ Constructor
+
+ @param aPool In - an opened RStringPool - owned by the caller
+ @param aStringTable In - the string table in the string pool to use
+ @param aBuffer In - the buffer containing the WSP header data - owned by the caller
+ @pre The string table must be opened with the WSP Sting constants table
+*/
+inline TWspHeaderSegmenter::TWspHeaderSegmenter(RStringPool aPool, const TStringTable& aStringTable, TPtrC8 aBuffer) :
+ iBuffer(aBuffer),
+ iOffset(0),
+ iPool(aPool),
+ iStringTable(aStringTable)
+ {
+ }
+
+/**
+ Offset returns the current offset into the buffer being parsed.
+
+ @return TInt offset value. It will point to beginning of next segmented field.
+ If NextL has not been called it will be set to 0. The beginning of the buffer.
+ If buffer has been completely parsed, will return KErrNotFound.
+*/
+inline TInt TWspHeaderSegmenter::Offset() const
+ {
+ return (iOffset < iBuffer.Length()) ? iOffset : KErrNotFound;
+ }
+
+/**
+ Constructor
+
+ @param aBuffer In - the buffer containing the value in its raw format
+*/
+inline TWspPrimitiveDecoder::TWspPrimitiveDecoder(TPtrC8 aBuffer) :
+ iBuffer(aBuffer),
+ iOffset(0)
+ {
+ }
+
+
+#endif // __WSPDECODER_H__
+
+