diff -r 000000000000 -r ba25891c3a9e secureswitools/swisistools/source/interpretsis/commandparser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/secureswitools/swisistools/source/interpretsis/commandparser.h Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,109 @@ +/* +* Copyright (c) 2006-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: +* Contains the command line options +* +*/ + + +/** + @file commandparser.h + @internalComponent + @released +*/ + +#ifndef __COMMAND_PARSER_H__ +#define __COMMAND_PARSER_H__ + +#pragma warning (disable: 4786) + +// System includes +#include +#include +#include +#include +#include + +// User includes +#include "logger.h" +#include "parameterlist.h" + +// Forward declaration +class CParameterList; + +class CCommandParser + { +public: // Type definitions + typedef std::list OptionList; + typedef std::list SISFileList; + typedef void (CParameterList::*FilePtr)(std::wstring& aString); + +public: // Enumerations + enum CmdLineException + { + ECmdLineUnknownOption = 0, + ECmdLineNoDirArgument, + ECmdLineMissingParamFile, + ECmdLineNoSisArgument, + ECmdLineNoRomRofsLogsArgument, + ECmdLineNoConfigFileArgument, + ECmdLineNoSisStubPathArgument, + ECmdLineMissingParams, + ECmdLineInvalidLanguage, + ECmdLineMissingPackageUID, + ECmdLineInvalidSISFileAttribute + }; + +public: // Constructors & destructor + CCommandParser(); + ~CCommandParser(); + CParameterList* ParseOptions(int argc, const char**argv); + +public: // Helper functions + static void DisplayError(int err); + static void DisplayUsage(); + static void DisplayVersion(); + static void DisplayOpenSSLCopyright(); + +public: // Accessors + inline WarnLevel WarningLevel() const { return iWarnLevel; } + inline const std::wstring& LogFile() const { return iLogFile; } + + inline static const std::string CommandName() { return "interpretsis"; } + +private: + bool ParseParam(int argc, const char** argv, CParameterList* aParamList); + void ParseParam(int argc, const std::string& paramFile, CParameterList* aParamList); + void SetSisRegistryVersion(const std::string& aSisRegVersion); + +private: + void String2SISFileList(CParameterList& aParamList, int aArgc, const char**argv); + static void String2List(CParameterList& aParamList, FilePtr& aFilePtr, const std::string& aOptionsString); + static WarnLevel String2Warn(const std::string& level); + static int String2Language( const std::string& aLanguage ); + +private: + typedef std::map WarnMap; + + WarnLevel iWarnLevel; + std::wstring iLogFile; + static WarnMap KString2Warning; + }; + + +bool FileExists(const std::wstring& aFile); +bool RemoveFile(const std::wstring& aFile); +bool CreateFile(const std::wstring& aFile); + +#endif //__COMMAND_PARSER_H__