--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SDP/inc/SdpUtil.h Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,316 @@
+/*
+* Copyright (c) 2003-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:
+* Name : SdpUtil.h
+* Part of : SDP Codec
+* Interface : -
+* Version : 1.0
+*
+*/
+
+
+
+
+/**
+ @internalComponent
+*/
+
+#ifndef SDPUTIL_H
+#define SDPUTIL_H
+
+// INCLUDES
+#include <e32base.h>
+#include <stringpool.h>
+#include <e32std.h>
+#include "_sdpdefs.h"
+
+// FORWARD DECLARATIONS
+class RReadStream;
+class RWriteStream;
+class CSdpConnectionField;
+class CSSdpKeyField;
+class CSdpOriginField;
+class TInetAddr;
+
+// CLASS DECLARATION
+/**
+ * Common utilities used in the implementation of the SDP codec.
+ * Utility class, cannot be instantiated
+ */
+class SdpUtil
+ {
+
+ public: // New functions
+
+ /**
+ * Generic method that checks that all aValue's chars are not on illegal charset
+ *
+ * @param aIllegalChars Illegal character set
+ * @param aValue String to be checked
+ * @param aStart Start position of the string
+ * @param aEnd End position of the string
+ * @return Validity of the string
+ */
+ static TBool IsValidCharSet(
+ const TDesC8& aIllegalChars, const TDesC8& aValue, TInt aStart, TInt aEnd );
+
+ /**
+ * Checks that token list is valid (tokens with space as delimiter)
+ *
+ * @param aValue String containing tokens
+ * @return Validity of the string
+ */
+ static TBool IsTokenList( const TDesC8& aValue );
+
+ /**
+ * Checks that the token is valid (substring inside string)
+ *
+ * @param aValue String containing the token
+ * @param aStart Start position of the token inside the string
+ * @param aEnd End position of the token inside the string
+ * @return Validity of the token
+ */
+ static TBool IsToken( const TDesC8& aValue, TInt aStart, TInt aEnd );
+
+ /**
+ * Checks that the token is valid
+ *
+ * @param aValue Token string
+ * @return Validity of the token
+ */
+ static TBool IsToken( const TDesC8& aValue );
+
+ /**
+ * Checks that the byte string is valid (substring inside string)
+ *
+ * @param aValue String
+ * @param aStart Start position of the byte string inside the string
+ * @param aEnd End position of the byte string inside the string
+ * @return Validity of the byte string
+ */
+ static TBool IsByteString( const TDesC8& aValue, TInt aStart, TInt aEnd );
+
+ /**
+ * Checks that the byte string is valid
+ *
+ * @param aValue String containing the token
+ * @return Validity of the byte string
+ */
+ static TBool IsByteString( const TDesC8& aValue );
+
+ /**
+ * Checks that the substring is a token-byte string pair with colon char
+ * as delimiter of the two strings
+ *
+ * @param aValue String containing the pair
+ * @param aStart Start position of the string pair
+ * @param aEnd End position of the string pair
+ * @return Validity of the pair
+ */
+ static TBool IsTokenTextPair(
+ const TDesC8& aValue, TInt aStart, TInt aEnd );
+
+ /**
+ * Checks that the string conatins valid token-byte string pair with color
+ * char as delimiter of the two strings
+ *
+ * @param aValue String containing the pair
+ * @return Validity of the byte string
+ */
+ static TBool IsTokenTextPair( const TDesC8& aValue );
+
+ /**
+ * Checks that the string does not contain any whitespace characters
+ *
+ * @param aValue String
+ * @return Validity of the string
+ */
+ static TBool IsNonWhitespace( const TDesC8& aValue );
+
+ /**
+ * Checks that the string contains a valid NTP-time element
+ *
+ * @param aValue String
+ * @return Validity of the string
+ */
+ static TBool IsValidNtpTime( const TDesC8& aValue );
+
+ /**
+ * Divides the buffer into a number of lines. Each line is marked
+ * as a TPtrC8 object and added to array that is returned to the user
+ * NOTE! Each line in the returned array ends in LF character
+ * NOTE! The aLines must end in LF character, not '\0' character
+ *
+ * @param aLines Buffer that contains all the string
+ * @param aErrCode Error code that is used on leave situations, when the
+ * aLines parameter contains invalid string set
+ * @return Array that contains the division of buffer to lines
+ */
+ static RArray<TPtrC8> DivideToLinesL(
+ const TDesC8& aLines, TInt aErrCode );
+
+ /**
+ * Parses elements from each line. The first item in the returned array
+ * is the field attribute and equal character (e.g. "a=", "c="), following
+ * elements are parsed from the string using space character as delimiter
+ *
+ * @param aLine String containing line that ends to LF character
+ * @param aErrCode Error code that is used on leave situations, when
+ * the contents of aLine are illegal
+ * @return Array that contains the division of string to elements
+ */
+ static RArray<TPtrC8> GetElementsFromLineL(
+ const TDesC8& aLine, TInt aErrCode );
+
+ /**
+ * Parses elements from each line. The first item in the returned array
+ * is the field attribute and equal character (e.g. "a=", "c="), following
+ * elements are parsed from the string using aDelimiter as delimiter
+ *
+ * @param aLine String containing line that ends to LF character
+ * @param aDelimiter Delimiter character
+ * @param aErrCode Error code that is used on leave situations, when
+ * the contents of aLine are illegal
+ * @return Array that contains the division of string to elements
+ */
+ static RArray<TPtrC8> GetElementsFromLineL(
+ const TDesC8& aLine, TChar aDelimiter, TInt aErrCode );
+
+ /**
+ * Parses elements from each line. The first item in the returned array
+ * is the field attribute and equal character (e.g. "a=", "c="), following
+ * elements are parsed from the string using space character as delimiter
+ *
+ * @param aLexer Lexer that has been initialized with the string
+ * @param aErrCode Error code that is used on leave situations, when
+ * the contents of aLine are illegal
+ * @return Array that contains the division of string to elements
+ */
+ static RArray<TPtrC8> GetElementsFromLineL(
+ TLex8& aLexer, TChar aDelimiter, TInt aErrCode );
+
+ /**
+ * Checks if the string contains only POS-DIGIT characters
+ *
+ * @param aDes String
+ * @return Validity of POS-DIGIT string
+ */
+ static TBool IsPosDigit( const TDesC8& aDes );
+
+ /**
+ * Checks if the string contains only DIGIT characters
+ *
+ * @param aDes String
+ * @return Validity of DIGIT string
+ */
+ static TBool IsDigit( const TDesC8& aDes );
+
+ /**
+ * Checks if the string contains valid characters
+ *
+ * @param aValidChars Valid characters allowed in the string
+ * @param aDes String
+ * @return Validity of the string
+ */
+ static TBool IsValidChars( const TDesC8& aValidChars, const TDesC8& aDes );
+
+ /**
+ * Checks if the string contains only token characters
+ *
+ * @param aValue String
+ * @return Validity of the string
+ */
+ static TBool IsTokenChar( const TDesC8& aValue );
+
+ /**
+ * Checks if the character is a valid token character
+ *
+ * @param aChar Character
+ * @return Validity of the character
+ */
+ static TBool IsTokenChar( TChar aChar );
+
+ /**
+ * Checks if the string is a valid token. The string can contain slash character,
+ * which divides the line into two tokens. The two tokens are then individually
+ * verified.
+ *
+ * @param aValue String
+ * @return Validity of the string
+ */
+ static TBool IsTokenCharWithOptionalSlash( const TDesC8& aValue );
+
+ /**
+ * Checks if the string is a valid token. The string can contain space characters,
+ * which divides the string into a number of tokens. Each token is then individually
+ * verified.
+ *
+ * @param aValue String
+ * @return Validity of the string
+ */
+ static TBool IsTokenCharWithSpacesL( const TDesC8& aValue );
+
+ /**
+ * Checks if the string is a valid token. The string can contain slash character,
+ * which divides the line into two tokens. The two tokens are then individually
+ * verified.
+ *
+ * @param aValue String
+ * @return Validity of the string
+ */
+ static void EncodeBufferL(
+ const TDesC8& aValue, TInt aIndex, RWriteStream& aStream );
+
+ /**
+ * Sets default network type ("IN") and default address type ("IP4" or "IP6")
+ * to variables given as parameters
+ *
+ * @param aPool String pool
+ * @param aInetAddr Internet address
+ * @param aNetType Network type
+ * @param aAddressType Address type
+ */
+ static void SetDefaultNetTypeAndAddrType(
+ RStringPool aPool, const TInetAddr& aAddress,
+ RStringF& aNetType, RStringF& aAddressType );
+
+ /**
+ * Skips spaces until next line break, if the line break can be found.
+ * @param aLexer
+ * @return ETrue if the line break was found, otherwise EFalse.
+ */
+ static TBool SkipSpacesUntilNextLineBreak( TLex8& aLexer );
+
+ private:
+
+ /**
+ * After the field tag has been parsed out, all the field elements are
+ * parsed in this method
+ *
+ * @param aArray Reference to the array that contains the chopped elements
+ * @param aLexer Used lexer
+ * @param aDelimiter Delimiter character that determines the separation of elements
+ * @param aErrCode The error code that is used on leaves, when the argument is invalid
+ */
+ static void ChopElementsFromLineL(
+ RArray<TPtrC8>& aArray, TLex8& aLexer, TChar aDelimiter, TInt aErrCode );
+
+ /**
+ * Private constructor
+ * This class can never be instantiated
+ */
+ SdpUtil();
+ };
+
+#endif