--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/imgcheck/inc/cmdlinehandler.h Tue Oct 27 16:36:35 2009 +0000
@@ -0,0 +1,244 @@
+/*
+* Copyright (c) 2007-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 "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:
+* CmdLineHandler class declaration.
+* @internalComponent
+* @released
+*
+*/
+
+
+#ifndef CMDLINEHANDLER_H
+#define CMDLINEHANDLER_H
+
+#include "common.h"
+#include "exceptionreporter.h"
+#include "version.h"
+#include "hash.h"
+#include <map>
+#include <vector>
+
+/**
+Tydefs used in this class.
+
+@internalComponent
+@released
+*/
+
+typedef std::map<String,unsigned int> OptionsMap;
+typedef std::map<String,unsigned int> SuppressionsMap;
+typedef std::vector<char*> ArgumentList;
+
+
+/**
+Long options will be intialized into an MAP, this data is used later to
+validate the received command line arguments.
+
+@internalComponent
+@released
+*/
+const String KLongHelpOption("--help");
+const String KLongXmlOption("--xml");
+const String KLongQuietOption("--quiet");
+const String KLongAllOption("--all");
+const String KLongOutputOption("--output");
+const String KLongVerboseOption("--verbose");
+const String KLongSuppressOption("--suppress");
+const String KLongVidValOption("--vidlist");
+const String KLongSidAllOption("--sidall");
+const String KLongE32InputOption("--e32input");
+
+/**
+Short options will be intialized into an MAP, this data is used later to
+validate the received command line arguments.
+
+@internalComponent
+@released
+*/
+const String KShortHelpOption("-h");
+const String KShortXmlOption("-x");
+const String KShortQuietOption("-q");
+const String KShortAllOption("-a");
+const String KShortOutputOption("-o");
+const String KShortVerboseOption("-v");
+const String KShortSuppressOption("-s");
+const String KShortNoCheck("-n");
+
+/**
+options to enable required Validation
+
+@internalComponent
+@released
+*/
+const String KLongEnableDepCheck("--dep");
+const String KLongEnableSidCheck("--sid");
+const String KLongEnableVidCheck("--vid");
+const String KLongEnableDbgFlagCheck("--dbg");
+const String KLongNoCheck("--nocheck");
+
+/**
+option values to disable specific Validation.
+
+@internalComponent
+@released
+*/
+const String KSuppressDependency("dep");
+const String KSuppressSid("sid");
+const String KSuppressVid("vid");
+
+/**
+To mark whether validaition is enabled or not
+
+@internalComponent
+@released
+*/
+const unsigned int KMarkEnable = 0x80000000;
+
+/**
+VID value size
+
+@internalComponent
+@released
+*/
+const unsigned int KHexEightByte = 8;
+const unsigned int KDecHighValue = 0xFFFFFFFF;
+
+/**
+Applicable values of option suppress or -s, allocate each bit for every Validation.
+
+@internalComponent
+@released
+*/
+typedef enum Suppress
+{
+ EDep = 0x1,
+ ESid = 0x2,
+ EVid = 0x4,
+ EDbg = 0x8,
+ //While including more checks, define the constants here;
+ EAllValidation = EDep | ESid | EVid //Add the new check over here.
+};
+
+/**
+Constants to define number of values.
+
+@internalComponent
+@released
+*/
+typedef enum NumberOfValue
+{
+ ENone = 0x0,
+ ESingle = 0x1,
+ //Include new number of values here
+ EMultiple = 0x2,
+ EOptional
+};
+
+/**
+Prefix to the short option
+
+@internalComponent
+@released
+*/
+const char KShortOptionPrefix = '-';
+
+/**
+XML file extension, if the extension is not provided as part of report name,
+this string is appended.
+
+@internalComponent
+@released
+*/
+const String KXmlExtension(".xml");
+
+/**
+Default XML report name, used if the output report name is not passed through
+command line.
+
+@internalComponent
+@released
+*/
+const String GXmlFileName("imgcheckreport.xml");
+
+/**
+Tool name
+
+@internalComponent
+@released
+*/
+const String KToolName("imgcheck");
+
+/**
+Constants used validate the input Decimal or Hexadecimal values
+
+@internalComponent
+@released
+*/
+const String KHexNumber("0123456789abcdef");
+const String KDecNumber("0123456789");
+
+/**
+class command line handler
+
+@internalComponent
+@released
+*/
+class CmdLineHandler
+{
+public:
+ CmdLineHandler(void);
+ ~CmdLineHandler(void);
+ void Usage(void);
+ void Version(void);
+ const String& PrintUsage(void) const;
+ const String& PrintVersion(void) const;
+ String NextImageName(void);
+ unsigned int NoOfImages(void) const;
+ const unsigned int ReportFlag(void) const;
+ const String& XmlReportName(void) const;
+ ReturnType ProcessCommandLine(unsigned int aArgc, char* aArgv[]);
+ void ValidateArguments(void) const;
+ const unsigned int EnabledValidations(void) const;
+ UnIntList& VidValueList(void);
+ const String& Command(void) const;
+ bool DebuggableFlagVal(void);
+ void ValidateImageNameList(void);
+ void ValidateE32NoCheckArguments(void);
+
+private:
+ bool IsOption(const String& aName, int& aLongOptionFlag);
+ bool Validate(const String& aName, bool aOptionValue, unsigned int aNoOfVal);
+ void NormaliseName(void);
+ void ParseOption(const String& aFullName, String& aOptionName, StringList& aOptionValues, bool& aOptionValue);
+ void HandleImage(const String& aImageName);
+ void StringListToUnIntList(StringList& aStrList, UnIntList& aUnIntList);
+ bool AlreadyReceived(String& aName);
+
+private:
+ StringList iImageNameList;
+ OptionsMap iOptionMap;
+ SuppressionsMap iSuppressVal;
+ UnIntList iVidValList;
+ bool iDebuggableFlagVal;
+ String iInputCommand;
+ String iXmlFileName;
+ bool iNoImage;
+ unsigned int iCommmandFlag;
+ unsigned int iValidations;
+ unsigned int iSuppressions;
+ String iVersion;
+ String iUsage;
+};
+
+#endif //CMDLINEHANDLER_H