codhandler/codeng/inc/CodParser.h
changeset 0 dd21522fd290
child 16 a359256acfc6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/codhandler/codeng/inc/CodParser.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2002 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 "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: 
+*      Declaration of class TCodParser.   
+*      
+*
+*/
+
+
+#ifndef COD_PARSER_H
+#define COD_PARSER_H
+
+// INCLUDES
+
+#include <e32base.h>
+
+// FORWARD DECLARATION
+
+class CCodData;
+
+// CLASS DECLARATION
+
+
+/**
+* COD Parser.
+*/
+NONSHARABLE_CLASS( TCodParser )
+    {
+
+    public:     // constructor
+
+        /**
+        * Constructor.
+        */
+        inline TCodParser();
+
+    public:     // new methods
+
+        /**
+        * Parse the buffer into aData. Existing data in aData is lost.
+        * Leaves on failure; leave code can be KErrCodInvalidDescriptor as well
+        * as general errors. The resulting data is not checked semantically
+        * (i.e. mandatory attributes may be missing).
+        * @param aBuf COD content buffer to be parsed.
+        * @param aData COD will be parsed into this.
+        */
+        void ParseL( const TDesC& aBuf, CCodData& aData );
+
+    private:    // types
+
+        enum TCodAttr               ///< COD Attributes.
+            {
+            ECodName,               ///< COD-Name.
+            ECodVendor,             ///< COD-Vendor.
+            ECodDescription,        ///< COD-Description.
+            ECodUrl,                ///< COD-URL.
+            ECodSize,               ///< COD-Size.
+            ECodType,               ///< COD-Type.
+            ECodInstallNotify,      ///< COD-Install-Notify.
+            ECodNextUrl,            ///< COD-Netx-URL.
+            ECodNextUrlAtError,     ///< COD-Next-URLatError.
+            ECodInfoUrl,            ///< COD-Info-URL.
+            ECodPrice,              ///< COD-Price.
+            ECodIcon,               ///< COD-Icon.
+            ECodUnknownAttr         ///< Future COD attributes.
+            };
+
+    private:    // parsing
+
+        /**
+        * Parse one line.
+        * @return ETrue if more lines to go, EFalse if done.
+        */
+        TBool AttrLineL();
+
+        /**
+        * Parse an attribute name. Empty token sets error.
+        * @return Attribute name type.
+        */
+        TCodAttr AttrName();
+
+        /**
+        * Parse an attribute value.
+        * @return pointer to the value.
+        */
+        TPtrC AttrValue();
+
+        /**
+        * Skip (optional) white space.
+        */
+        void SkipWhiteSpace();
+
+        /**
+        * Skip past the end of current line (ignoring anything).
+        */
+        void NextLine();
+
+        /**
+        * Parse *WS until ?CR LF. Set error if something else found.
+        * (Advance to LF, leaving the LF as lookahead char).
+        */
+        void EndOfLine();
+
+        /**
+        * Parse *WS : *WS. Set error if no colon found.
+        * @return ETrue if colon found.
+        */
+        TBool Colon();
+
+        /**
+        * Check if current character is value char.
+        * @return ETrue if current character is value char.
+        */
+        TBool IsValueChar() const;
+
+        /**
+        * Check if current character is control char.
+        * @return ETrue if current character is control char.
+        */
+        TBool IsControl() const;
+
+        /**
+        * Check if current character is white space.
+        * @return ETrue if current character is white space.
+        */
+        TBool IsWhiteSpace() const;
+
+        /**
+        * Check if current character is separator.
+        * @return ETrue if current character is separator.
+        */
+        TBool IsSeparator() const;
+
+        /**
+        * Check if current character is CR LF or LF.
+        * @return ETrue if current character is CR LF or LF.
+        */
+        TBool IsEndOfLine() const;
+
+        /**
+        * Set error code if not already set.
+        * @param aError Error.
+        */
+        inline void Error( TInt aError );
+
+    private:    // data
+
+        const TDesC* iBuf;      ///< Data buffer. Not owned.
+        CCodData* iData;        ///< COD Data. Not owned.
+        const TText* iCurP;     ///< Current character position.
+        const TText* iEndP;     ///< End pointer (past the buffer);
+        TInt iError;            ///< Error code.
+
+    };
+
+#include "CodParser.inl"
+
+#endif /* def COD_PARSER_H */