idlefw/plugins/shortcutplugin/inc/aiscutappuidparser.h
changeset 0 79c6a41cd166
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/shortcutplugin/inc/aiscutappuidparser.h	Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2005-2006 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:  Shortcut definition parser.
+*
+*/
+
+
+#ifndef AISCUTAPPUIDPARSER_H
+#define AISCUTAPPUIDPARSER_H
+
+// INCLUDES
+#include <e32base.h>
+
+// CLASS DECLARATIONS
+
+/**
+ * Parser class that interpretes the given text as a description of
+ * application position data.
+ */
+class TAiScutAppUidParser
+{
+public: // Construction
+
+    /**
+     * Standard C++ constructor.
+     * @param aData Data which will be parsed
+     * @param aAppPositions This array will be filled with parsed
+     *                      application positions.
+     */
+    TAiScutAppUidParser(const TDesC& aData, RArray<TUid>& aAppPositions);
+
+public: // Interface
+
+    /**
+     * Parses the data that was given in constructor and fills the
+     * application position array with parsed data.
+     */
+    void ParseL();
+
+private: // Implementation
+    /**
+     * Skips the given char.
+     * Skipping can be done conditionally or unconditionally.
+     * If conditional skipping is used, next character in data will be
+     * skipped only if it is the same as given character.
+     * If unconditional skipping is used the next character in data must
+     * be the given character, otherwise the data is invalid and parsing
+     * will be stopped.
+     * @param aChar Character that will be skipped.
+     * @param aConditionalSkip If ETrue, use conditional skipping,
+     *                         otherwise unconditional skipping will be
+     *                         used.
+     */
+    void SkipChar(TChar aChar, TBool aConditionalSkip);
+
+    /**
+     * Reads app UID from data. If data doesn't contain app UID in the
+     * point in which this function is called, data is considered invalid.
+     * @return App UID that was read from data.
+     */
+    TUid ReadAppUid();
+
+private:
+
+    /// Ref: Application positions array that will be filled when parsing
+    RArray<TUid>&   iUidArray;
+
+    /// Lexer for data
+    TLex            iLex;
+
+    /// Is the data that has been read so far valid.
+    TBool           iLexIsValid;
+};
+
+#endif // AISCUTAPPUIDPARSER_H
+
+// End of File