diff -r 000000000000 -r 044383f39525 imgtools/imgcheck/inc/cmdlinehandler.h --- /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 +#include + +/** +Tydefs used in this class. + +@internalComponent +@released +*/ + +typedef std::map OptionsMap; +typedef std::map SuppressionsMap; +typedef std::vector 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