epoc32/include/mw/sipparameterheaderbase.h
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 2fe1408b6811
child 4 837f303aceeb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/mw/sipparameterheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
@@ -0,0 +1,181 @@
+/*
+* Copyright (c) 2006-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        : sipparameterheaderbase.h
+* Part of     : SIP Codec
+* Interface   : SDK API, SIP Codec API
+* Version     : SIP/4.0
+*
+*/
+
+
+
+
+#ifndef CSIPPARAMETERHEADERBASE_H
+#define CSIPPARAMETERHEADERBASE_H
+
+//  INCLUDES
+#include "sipheaderbase.h"
+#include "_sipcodecdefs.h"
+
+// FORWARD DECLARATIONS
+class CSIPParamContainerBase;
+
+// CLASS DECLARATION
+/**
+* @publishedAll
+* @released
+*
+* A base class for SIP headers that have structure
+*        "mandatory part"delimiter"parameters"
+*
+* This is an abstract class and cannot be instantiated.
+*
+*  @lib sipcodec.lib
+*/
+class CSIPParameterHeaderBase : public CSIPHeaderBase
+    {
+    public:    // Constructors and destructor
+
+        /**
+        * Destructor, deletes the resources of CSIPParameterHeaderBase.
+        */
+        IMPORT_C virtual ~CSIPParameterHeaderBase();
+
+
+    public: // New functions
+
+        /**
+        * Checks if a parameter is present
+        * @param aName the name of the parameter
+        * @return ETrue if present, otherwise EFalse
+        */
+        IMPORT_C TBool HasParam(RStringF aName) const;
+
+        /**
+        * Gets a parameter value
+        * @pre HasParam(aName) == ETrue
+        * @param aName the name of the parameter
+        * @return the parameter value if present,
+        *         otherwise a zero-length length value.
+        */
+        IMPORT_C RStringF ParamValue(RStringF aName) const;
+
+        /**
+        * Sets a parameter with a value. 
+        * Takes copies of the name and value,
+        * so if the RStringFs have been dynamically allocated,
+        * they can be closed if necessary after the function returns.
+        * @pre HasParam(aName) == EFalse
+        * @param aName the name of the parameter
+        * @param aValue the parameter value to set
+        */
+        IMPORT_C void SetParamL(RStringF aName, RStringF aValue);
+
+        /**
+        * Sets a parameter without a value
+        * Takes copy of the name,
+        * so if the RStringF has been dynamically allocated,
+        * it can be closed if necessary after the function returns.
+        * @pre HasParam(aName) == EFalse
+        * @param aName the parameter name to set
+        */
+        IMPORT_C void SetParamL(RStringF aName);
+
+        /**
+        * Deletes a parameter
+        * @param aName the parameter name to delete
+        */
+        IMPORT_C void DeleteParam(RStringF aName);
+
+        /**
+        * Gets the count of header parameters
+        * @return count of header parameters
+        */
+        IMPORT_C TInt ParamCount() const;
+
+        /**
+        * Gets a header parameter name by index.
+        * This function can be used when looping through
+        * all the header parameters.
+        * @param aIndex the index of the parameter
+        * @param aName copy of the parameter name that must be 
+        *        closed by the caller.       
+        * @return KErrNotFound if aIndex is invalid. Otherwise EFalse.
+        */
+        IMPORT_C TInt Param(TInt aIndex, RStringF& aName) const;
+
+    public: // From CSIPHeaderBase
+
+        /**
+        * From CSIPHeaderBase ToTextValueL
+        */
+        IMPORT_C HBufC8* ToTextValueL() const;
+
+
+    protected: // Contructors
+
+        CSIPParameterHeaderBase(const TChar& aSeparator);        
+
+    protected: // New functions
+
+        void ParseL(const TDesC8& aValue, 
+        				  TBool aIgnoreParenthesis=ETrue, 
+        				  TBool aSkipSeparatorsBeforeAt=EFalse);
+
+    protected: // Virtual functions
+
+        /**
+        * @internalComponent
+        */    
+        virtual TBool ParamInsertionAllowed() const;
+
+    protected: // Pure virtual functions
+
+        /**
+        * @internalComponent
+        */
+        virtual HBufC8* ToTextMandatoryPartLC() const = 0;
+        
+        /**
+        * @internalComponent
+        */        
+        virtual void ParseMandatoryPartL(const TDesC8& aMandatoryPart) = 0;
+        
+        /**
+        * @internalComponent
+        */        
+        virtual const CSIPParamContainerBase& Params() const = 0;
+        
+        /**
+        * @internalComponent
+        */        
+        virtual CSIPParamContainerBase& Params() = 0;
+
+    private: // Contructors
+
+        CSIPParameterHeaderBase();
+
+    private: // Data
+    
+        TChar iSeparator;
+
+    private: // For testing purposes
+    
+        UNIT_TEST(CSIPParameterHeaderBaseTest)
+    };
+
+#endif // CSIPPARAMETERHEADERBASE_H
+
+// End of File