imgtools/imgcheck/inc/cmdlinehandler.h
changeset 0 044383f39525
child 590 360bd6b35136
--- /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