diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/sipheaderbase.h --- a/epoc32/include/sipheaderbase.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/sipheaderbase.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,193 @@ -sipheaderbase.h +/* +* Copyright (c) 2004-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: +* Name : sipheaderbase.h +* Part of : SIP Codec +* Interface : SDK API, SIP Codec API +* Version : SIP/4.0 +* +*/ + + + + +#ifndef CSIPHEADERBASE_H +#define CSIPHEADERBASE_H + +// INCLUDES +#include +#include +#include +#include "_sipcodecdefs.h" + +// CLASS DECLARATION +/** +* @publishedAll +* @released +* +* Class provides a generic interface for all the SIP headers. +* +* @lib sipcodec.lib +*/ +class CSIPHeaderBase : public CBase + { + public: // Constructors and destructors + + /** + * Destructor, deletes the resources of CSIPHeaderBase. + */ + IMPORT_C virtual ~CSIPHeaderBase(); + + + public: // New functions + + /** + * Creates a deep-copy of this CSIPHeaderBase object. + * The function has to be implemented in each of the sub-classes. + * @return the deep-copied object, the ownership is transferred. + */ + IMPORT_C virtual CSIPHeaderBase* CloneL() const = 0; + + /** + * Gets the full name of the header + * The function is implemented in each of the sub-classes. + * @return the full name of the header for example "From" + */ + IMPORT_C virtual RStringF Name() const = 0; + + /** + * Encodes the header (name and value) into its textual representation. + * @return a textual representation of the complete header, + * the ownership is transferred + */ + IMPORT_C HBufC8* ToTextL() const; + + /** + * Encodes the header (name and value) into its textual representation + * and pushes it to the CleanupStack. + * @return a textual representation of the complete header, + * the ownership is transferred + */ + IMPORT_C HBufC8* ToTextLC() const; + + /** + * Encodes the header's value into its textual representation. + * @return a textual representation of the header's value, + * the ownership is transferred + */ + IMPORT_C virtual HBufC8* ToTextValueL() const = 0; + + /** + * Encodes the header's value into its textual representation + * and pushes it to the CleanupStack. + * @return a textual representation of the header's value, + * the ownership is transferred + */ + IMPORT_C HBufC8* ToTextValueLC() const; + + /** + * Writes the object to a RWriteStream + * @param aWriteStream a stream where the object is to be externalized + * @param aAddName if ETrue the name of the header is + * also written to the stream + */ + IMPORT_C void ExternalizeL(RWriteStream& aWriteStream, + TBool aAddName=ETrue) const; + + /** + * Checks, if the header supports serialization. + * In practice all the headers part of the API support it. + * @return ETrue, if the header supports serialization, + * otherwise EFalse + */ + IMPORT_C virtual TBool ExternalizeSupported() const; + + /** + * Can be used when a RPointerArray needs to be pushed + * to the CleanupStack for ResetAndDestroy. + * @param aArray an array of CSIPHeaderBase pointers, + * the ownership of the array is transferred + */ + IMPORT_C static void PushLC(RPointerArray* aArray); + + + public: // For internal use + + /** + * @internalComponent + */ + enum TPreferredPlace + { + ETop, + EMiddleTop, + EMiddle, + EMiddleBottom, + EBottom + }; + + /** + * @internalComponent + */ + TSglQueLink iLink; + + /** + * @internalComponent + */ + virtual TBool EncodeMultipleToOneLine() const; + + /** + * @internalComponent + */ + virtual TBool MoreThanOneAllowed() const; + + /** + * @internalComponent + */ + virtual TBool IsExtensionHeader() const; + + /** + * @internalComponent + */ + virtual TBool HasCompactName() const; + + /** + * @internalComponent + */ + virtual RStringF CompactName() const; + + /** + * @internalComponent + */ + virtual TPreferredPlace PreferredPlaceInMessage() const = 0; + + protected: // Constructors + + CSIPHeaderBase(); + + protected: // New functions + + void ExternalizeNameL(RWriteStream& aWriteStream) const; + + /** + * @internalComponent + */ + virtual void ExternalizeValueL(RWriteStream& aWriteStream) const; + + // Needed for cleanup of a RPointerArray: + static void ResetAndDestroy(TAny* anArray); + }; + +#endif // CSIPHEADERBASE_H + +// End of File