secureswitools/swisistools/source/interpretsis/commandparser.h
changeset 0 ba25891c3a9e
--- /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 <istream>
+#include <list>
+#include <vector>
+#include <map>
+#include <string>
+
+// User includes
+#include "logger.h"
+#include "parameterlist.h"
+
+// Forward declaration
+class CParameterList;
+
+class CCommandParser
+	{
+public: // Type definitions
+	typedef std::list<std::wstring> OptionList;
+	typedef std::list<InstallSISFile> 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<std::string, WarnLevel> 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__