messagingfw/msgurlhandler/urlhandler/inc/msgurlparser.h
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgurlhandler/urlhandler/inc/msgurlparser.h	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,199 @@
+// 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:
+// This file contains the API definition for the classes 
+// TDelimitedAddressParser, TDelimitedBodyParser, TMailtoUrlParser,
+// TDelimitedSmsParser, TParseUtil,
+// These classes are used by the scheme handler classes to parse the 
+// messaging urls.
+// 
+//
+
+/**
+ @file
+*/
+
+#ifndef __MSGURLPARSER_H__
+#define __MSGURLPARSER_H__
+
+
+// System Includes
+//
+#include <e32base.h>
+#include <delimitedparser16.h>
+#include <delimitedquery16.h>
+
+
+/**
+	@class
+	Comments :	For parsing address component of mailto urls delimited by a ','
+				as defined in RFC2368 and below.
+				This class is used by CMailtoSchemeHandler class.
+
+	Define format of mailto url:
+			mailto:<address segment>?<body segment>
+
+	@since 7.0
+*/
+class TDelimitedAddressParser : public TDelimitedParserBase16
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+
+/**
+	@fn				TDelimitedAddressParser()
+	Intended Usage	:	Constructor.
+	@since			7.0
+	@post			Delimeter is set
+ */
+	TDelimitedAddressParser();
+
+/**
+	@fn				Parse(const TDesC& aAddress)
+	Intended Usage	:	This parses the descriptor into address segments from
+						left to right.
+	@since			7.0
+	@param			aAddress	A descriptor containing the address segment.
+	@pre 			The delimiter must have been set.
+	@post			The current segment is the leftmost segment and the direction
+					of parsing is set from left to right.
+ */
+	void Parse(const TDesC& aAddress);
+	};
+
+
+/**
+	@typedef TDelimitedBodyParser
+	Comments :	For parsing body segment of mailto urls delimited by a '&'
+				as defined in RFC2368 and below.
+				This class is used by CMailtoSchemeHandler class.
+
+	Define format of mailto url:
+			mailto:<address segment>?<body segment>
+
+	@since 7.0
+
+@internalComponent
+@released
+*/
+typedef TDelimitedQueryParser16 TDelimitedBodyParser; 
+
+
+/**
+	@class
+	Comments :	Parses the address segment and body segment as defined 
+				in RFC2368 and below.
+				This class is used by CMailtoSchemeHandler class.
+
+	Define format of mailto url:
+			mailto:<address segment>?<body segment>
+
+	@since 7.0
+*/
+class TMailtoUrlParser
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+
+/**
+	@fn				TMailtoUrlParser()
+	Intended Usage	:	Constructor.
+	@since			7.0
+ */
+	TMailtoUrlParser();
+
+/**
+	@fn				Parse(const TDesC& aData)
+	Intended Usage	:	Parses the address segment and body segment of mailto url.
+	@since			7.0
+	@param			aData		A descriptor containing the data to be parsed. 
+	@pre 			None
+	@post			The address segment and body segment is parsed.
+					The current segment is the leftmost segment and the direction
+					of parsing is set from left to right.
+ */
+	void Parse(const TDesC& aData);
+
+/**
+	@fn				ExtractAddresses()
+	Intended Usage	:	Returns TDelimitedAddressParser
+	@since			7.0
+	@return			TDelimitedAddressParser& 
+	@pre 			The address segment has been parsed.
+ */
+	const TDelimitedAddressParser& ExtractAddresses() const;
+
+/**
+	@fn				const TDelimitedBodyParser& ExtractBody()
+	Intended Usage	:	Returns TDelimitedBodyParser
+	@since			7.0
+	@return			const TDelimitedBodyParser& 
+	@pre 			The body segment has been parsed
+ */
+	const TDelimitedBodyParser& ExtractBody() const;
+
+private:
+	/** Contains the parsed address segment */
+	TDelimitedAddressParser iAddressParser;
+	/** Contains the parsed body segment */
+	TDelimitedBodyParser iBodyParser;
+	};
+
+
+/**
+	@typedef TDelimitedSmsParser
+	Comments :	For parsing sms urls delimited by a ','.
+				This class is used by CSmsSchemeHandler class.
+
+	@since 7.0
+
+@internalComponent
+@released
+*/
+typedef TDelimitedAddressParser TDelimitedSmsParser;
+
+
+/**
+	@class
+	Comments :	This class contains parsing utility functions used by the
+				scheme handler classes.
+	@since 7.0
+*/
+class ParseUtil
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+
+/**
+	@fn				Subset(const TDesC& aDes, const TDesC& aSubset, TPtrC& aData)
+	Intended Usage	:	Sets the leftmost part of aDes up to the first non-allowable 
+						character.
+	@since			7.0
+	@param			aDes		A descriptor to be parsed. 
+	@param			aSubset		A descriptor containing the allowed characters.
+	@param			aData		This is an output argument that is set to the 
+								parsed descriptor. 
+ */
+	static void Subset(const TDesC& aDes, const TDesC& aSubset, TPtrC& aData);
+	};
+
+#endif