Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
// 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 THTTPHdrVal.h
@warning : This file contains Rose Model ID comments - please do not delete
*/
#ifndef __THTTPHDRVAL_H__
#define __THTTPHDRVAL_H__
// System includes
#include <e32std.h>
#include <stringpool.h>
//##ModelId=3C4C187E027A
class THTTPHdrVal
/**
A representation of a value found in an HTTP header field. Three
fundamental types are used in HTTP - integers, strings (which may
be free text, 'enumeration values', URIs, etc. or date/times.
The class allows any of the three values to be held and the current
value (as well as its type) to be determined.
THTTPHdrVal instances are used to assign values to header fields, their
parts and their associated parameters.
@publishedAll
@released
@see RHTTPHeaders
*/
{
public:
/**
@enum THTTPValType
*/
typedef enum {
KTIntVal = 0x00, /**< the value is an integer*/
KStrVal = 0x01, /**< the value is a case-sensitive string*/
KDateVal = 0x02, /**< the value is a date/time*/
KStrFVal = 0x03, /**< the value is a case-insensitive string*/
KNoType = 0x04 /**< no value has yet been set*/
} THTTPValType;
public: // classes
// A converter for 'q' parameter values; apparently real numbers in the HTTP RFC but here passed as fixed point
//##ModelId=3B1E66F2024E
class TQConv
{
public:
/// Construct from a real number representation of 'q'
//##ModelId=3B1E66F20282
TQConv(TReal aQ);
/// Construct from a fixed-point representation of 'q'
//##ModelId=3B1E66F2028C
TQConv(TInt aQ);
/// Integer cast operator to get the fixed-point representation
//##ModelId=3B1E66F20281
operator TInt() const;
/// TReal cast operator to get the real number representation
//##ModelId=3B1E66F20280
operator TReal() const;
private:
/// The real number q-value
//##ModelId=3B1E66F2027A
TReal iQ;
/// The integer fixed-point q-value representation
//##ModelId=3B1E66F2026E
TInt iFQ;
};
public:
/** Default constructor
Used when constructing an empty header value that is to be filled in by
a call to a function. e.g. RHTTPHeaders::GetField
*/
IMPORT_C THTTPHdrVal();
/** Constructor for an integer field value
@param aIntVal The integer value
*/
IMPORT_C THTTPHdrVal(TInt aIntVal);
/** Constructor for an string value
@param aStrVal The string value
*/
IMPORT_C THTTPHdrVal(RStringF aStrVal);
/** Constructor for an string value
@param aStrVal The string value
*/
IMPORT_C THTTPHdrVal(RString aStrVal);
/** Constructor for an date/time value
@param aDateVal The date/time value
*/
IMPORT_C THTTPHdrVal(TDateTime aDateVal);
/** Obtain a copy of this header value. This is critical when the header contains a string, since
a new string reference must be created
@return The copied header value
*/
//##ModelId=3C4C187E02F3
IMPORT_C THTTPHdrVal Copy() const;
/** Determine the type of this header field value
@return A THTTPValType enumeration describing the value's type
*/
//##ModelId=3C4C187E02F2
IMPORT_C THTTPValType Type() const;
/** Obtain the (integer) value held within
Panics if the value is of the wring type
@pre Requires that the object was previously set to hold a TInt
@return An integer value
*/
//##ModelId=3C4C187E02EA
IMPORT_C TInt Int() const;
/** Cast operator to obtain the HTTP value as an integer.
Note this doesn't convert from a different form to integer!
Panics if the value is of the wrong type
@pre Requires that the object was previously set to hold a TInt
*/
//##ModelId=3C4C187E02E9
inline operator TInt() const;
/** Obtain the (string) value held within
Panics if the value is of the wring type
@pre Requires that the object was previously set to hold a string
@return A string
*/
//##ModelId=3C4C187E02E8
IMPORT_C RStringF StrF() const;
//##ModelId=3C4C187E02E0
IMPORT_C RString Str() const;
/** Cast operator to obtain the HTTP value as a string.
Note this doesn't convert from a different form to string!
Panics if the value is of the wring type
@pre Requires that the object was previously set to hold a string
*/
//##ModelId=3C4C187E02DF
inline operator RStringF() const;
/** Cast operator to obtain the HTTP value as a string.
Note this doesn't convert from a different form to string!
Panics if the value is of the wring type
@pre Requires that the object was previously set to hold a string
*/
//##ModelId=3C4C187E02DE
inline operator RString() const;
/** Obtain the (date/time) value held within.
Panics if the value is of the wrong type
@pre Requires that the object was previously set to hold a TDateTime
@return An date/time value
*/
//##ModelId=3C4C187E02D6
IMPORT_C TDateTime DateTime() const;
/** Cast operator to obtain the HTTP value as an date/time.
Note this doesn't convert from a different form to date!
Panics if the value is of the wring type
@pre Requires that the object was previously set to hold a TDateTime
*/
//##ModelId=3C4C187E02D5
inline operator TDateTime() const;
/** Set the header value to be the supplied integer.
@warning Any previous value, or its type, are lost.
@param aIntVal The integer value
*/
//##ModelId=3C4C187E02CC
IMPORT_C void SetInt(TInt aIntVal);
/** Set the header value to be the supplied string.
@warning Any previous value, or its type, are lost.
@param aStrVal The string value
*/
//##ModelId=3C4C187E02CA
IMPORT_C void SetStrF(RStringF aStrVal);
/** Set the header value to be the supplied string. Any previous
value, or its type, are lost.
@param aStrVal The string value */
//##ModelId=3C4C187E02C2
IMPORT_C void SetStr(RString aStrVal);
/** Set the header value to be the supplied date/time. Any previous value, or its type, are lost.
@param aDateVal The date/time value
*/
//##ModelId=3C4C187E02C0
IMPORT_C void SetDateTime(TDateTime aDateVal);
/** Comparison operator. Does a comparison based on the current type.
@param aVal The header value to compare. */
//##ModelId=3C4C187E02B8
IMPORT_C TBool operator==(THTTPHdrVal aVal) const;
/** Comparison operator. Does a comparison based on the current type.
@param aVal The string to compare. */
//##ModelId=3C4C187E02B6
IMPORT_C TBool operator!=(THTTPHdrVal aVal) const;
private:
/**
The current type
*/
//##ModelId=3C4C187E02AC
THTTPValType iType;
/**
The value
*/
//##ModelId=3C4C187E02A4
TInt iVal;
//##ModelId=3C4C187E029A
TInt iMoreSpace;
};
inline THTTPHdrVal::TQConv::TQConv(TReal aQ)
: iQ(aQ), iFQ((TInt)(iQ*1000))
{
}
inline THTTPHdrVal::TQConv::TQConv(TInt aFQ)
: iQ((TReal)(aFQ/1000.)), iFQ(aFQ)
{
}
inline THTTPHdrVal::TQConv::operator TInt() const
{
return iFQ;
}
inline THTTPHdrVal::TQConv::operator TReal() const
{
return iQ;
}
inline THTTPHdrVal::operator TInt() const
{
return Int();
}
inline THTTPHdrVal::operator RStringF() const
{
return StrF();
}
inline THTTPHdrVal::operator RString() const
{
return Str();
}
inline THTTPHdrVal::operator TDateTime() const
{
return DateTime();
}
#endif // __THTTPHDRVAL_H__