--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/e32tools/elf2e32/source/parametermanager.h Tue Oct 27 16:36:35 2009 +0000
@@ -0,0 +1,451 @@
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+// Implementation of the Header file for Class ParameterManager of the elf2e32 tool
+// @internalComponent
+// @released
+//
+//
+
+#if !defined(SYMBIAN_PARAMETERMANAGER_H_)
+#define SYMBIAN_PARAMETERMANAGER_H_
+
+#include "parameterlistinterface.h"
+#include <vector>
+#include <map>
+#include <string>
+
+class UseCaseBase;
+class Symbol;
+
+
+
+/**
+This class is derived from ParameterListInterface (the abstract base class).
+
+@internalComponent
+@released
+*/
+class ParameterManager : public ParameterListInterface
+{
+
+public:
+
+ typedef std::vector<char *> ParamList;
+
+ struct OptionDesc
+ {
+ char * iName;
+ const void * iParser;
+ char * iDoc;
+ };
+
+ struct TargetTypeDesc
+ {
+ const char * iName;
+ ETargetType iTargetType;
+ };
+
+ struct PriorityValueDesc
+ {
+ const char * iName;
+ TProcessPriority iPriority;
+ };
+
+ struct CompressionMethodDesc
+ {
+ const char *iMethodName;
+ UINT iMethodUid;
+ };
+
+ /*struct SysDefs
+ {
+ int iSysDefOrdinalNum;
+ char * iSysDefSymbolName;
+ };
+
+ typedef struct SysDefs Sys;*/
+
+ typedef std::string string;
+ typedef std::less<string> OptionCompare;
+ typedef std::map<string, const OptionDesc *, OptionCompare> OptionMap;
+ typedef vector<char *> LibSearchPaths;
+
+ typedef void (*ParserFn)(ParameterManager *, char *, char *, const OptionDesc *);
+
+
+ #define DECLARE_PARAM_PARSER(name) \
+ static void name(ParameterManager* aPM, char* aOption, char* aValue, void* aDesc)
+
+ #define DEFINE_PARAM_PARSER(name) \
+ void name(ParameterManager * aPM, char * aOption, char* aValue, void * aDesc)
+
+ #define INITIALISE_PARAM_PARSER \
+ aOption = aOption; \
+ aValue = aValue; \
+ aDesc = aDesc;
+
+ DECLARE_PARAM_PARSER(ParseDefInput);
+ DECLARE_PARAM_PARSER(ParseDSOOutput);
+ DECLARE_PARAM_PARSER(ParseTargetTypeName);
+ DECLARE_PARAM_PARSER(ParseLinkAs);
+ DECLARE_PARAM_PARSER(ParseDefOutput);
+ DECLARE_PARAM_PARSER(ParseElfInput);
+ DECLARE_PARAM_PARSER(ParseFileDump);
+ DECLARE_PARAM_PARSER(ParseE32ImageInput);
+ DECLARE_PARAM_PARSER(ParseOutput);
+ DECLARE_PARAM_PARSER(ParseLogFile);
+ DECLARE_PARAM_PARSER(ParseMessageFile);
+ DECLARE_PARAM_PARSER(ParseDumpMessageFile);
+
+ DECLARE_PARAM_PARSER(ParamHelp);
+ DECLARE_PARAM_PARSER(ParseUID1);
+ DECLARE_PARAM_PARSER(ParseUID2);
+ DECLARE_PARAM_PARSER(ParseUID3);
+
+
+ DECLARE_PARAM_PARSER(ParseCapability);
+ DECLARE_PARAM_PARSER(ParseSecureId);
+ DECLARE_PARAM_PARSER(ParseVendorId);
+ DECLARE_PARAM_PARSER(ParseFixedAddress);
+ DECLARE_PARAM_PARSER(ParseUncompressed);
+ DECLARE_PARAM_PARSER(ParseCompressionMethod);
+ DECLARE_PARAM_PARSER(ParseHeap);
+ DECLARE_PARAM_PARSER(ParseStackCommitted);
+ DECLARE_PARAM_PARSER(ParseUnfrozen);
+ DECLARE_PARAM_PARSER(ParseIgnoreNonCallable);
+ DECLARE_PARAM_PARSER(ParseLibPaths);
+ DECLARE_PARAM_PARSER(ParseSysDefs);
+ DECLARE_PARAM_PARSER(ParseAllowDllData);
+ DECLARE_PARAM_PARSER(ParsePriority);
+ DECLARE_PARAM_PARSER(ParseVersion);
+ DECLARE_PARAM_PARSER(ParseCallEntryPoint);
+ DECLARE_PARAM_PARSER(ParseFPU);
+
+ DECLARE_PARAM_PARSER(ParsePaged);
+ DECLARE_PARAM_PARSER(ParseUnpaged);
+ DECLARE_PARAM_PARSER(ParseDefaultPaged);
+
+ DECLARE_PARAM_PARSER(ParseCodePaging);
+ DECLARE_PARAM_PARSER(ParseDataPaging);
+
+ DECLARE_PARAM_PARSER(ParseExcludeUnwantedExports);
+ DECLARE_PARAM_PARSER(ParseIsCustomDllTarget);
+ DECLARE_PARAM_PARSER(ParseSymNamedLookup);
+ DECLARE_PARAM_PARSER(ParseDebuggable);
+ DECLARE_PARAM_PARSER(ParseSmpSafe);
+
+ ParameterManager(int aArgc, char** aArgv);
+ virtual ~ParameterManager();
+ void ParameterAnalyser();
+ void SetDefInput(char * aDefInputVal);
+ void SetDSOOutput(char * aDSOOutputVal);
+ void SetElfInput(char * aSetElfInput);
+ void SetE32Input(char * aSetE32Input);
+ void SetFileDumpOptions(char * aSetE32DumpOptions);
+ void SetE32Output(char * aSetE32Output);
+ void SetDefOutput(char * aSetDefOutput);
+ void SetTargetTypeName(ETargetType aSetTargetTypeName);
+ void SetLinkDLLName(char * aSetLinkDLLName);
+ void SetUID1(UINT aSetUINT1);
+ void SetUID2(UINT aSetUINT2);
+ void SetUID3(UINT aSetUINT3);
+ void SetFixedAddress(bool aSetFixedAddress);
+ void SetCompress(bool aSetCompress);
+ void SetCompressionMethod(UINT aCompressionMethod);
+ void SetSecureId(UINT aSetSecureID);
+ void SetVendorId(UINT aSetVendorID);
+ void SetHeapCommittedSize(UINT aSetHeapCommittedSize);
+ void SetHeapReservedSize(UINT aSetHeapReservedSize);
+ void SetStackCommittedSize(UINT aSetStackCommittedSize);
+ void SetUnfrozen(bool aVal);
+ void SetIgnoreNonCallable(bool aVal);
+ void SetCapability(unsigned int newVal);
+ void SetCapability(SCapabilitySet & newVal);
+ void SetSysDefs(unsigned int aSysDefOrdinal, char * aSysDefSymbol, int aCount);
+ void SetLogFile(char * aSetLogFile);
+ void SetMessageFile(char *aMessageFile);
+ void SetDumpMessageFile(char *aDumpMessageFile);
+ void SetDllDataP(bool newVal);
+ void SetPriority(TProcessPriority anewVal);
+ void SetVersion(UINT aSetVersion);
+ void SetCallEntryPoint(bool aCallEntryPoint);
+ void SetFPU(UINT aVal);
+
+ void SetCodePaged(bool);
+ void SetCodeUnpaged(bool);
+ void SetCodeDefaultPaged(bool);
+
+ void SetDataPaged(bool);
+ void SetDataUnpaged(bool);
+ void SetDataDefaultPaged(bool);
+
+ void SetExcludeUnwantedExports(bool aVal);
+ void SetCustomDllTarget(bool aVal);
+ void SetSymNamedLookup(bool aVal);
+ void SetDebuggable(bool aVal);
+ void SetSmpSafe(bool aVal);
+
+ int NumOptions();
+ int NumShortOptions();
+ void InitParamParser();
+ void ParseCommandLine();
+ void RecordImageLocation();
+ char * Path(char * aArg);
+ ETargetType TargetTypeName();
+ ETargetType ValidateTargetType(const char * aTargetType);
+ LibSearchPaths& LibPath();
+ char * DefInput();
+ char * ElfInput();
+ char * E32Input();
+ bool DefFileInOption();
+ bool DefFileOutOption();
+ bool ElfFileInOption();
+ bool E32ImageInOption();
+ bool FileDumpOption();
+ bool DSOFileOutOption();
+ bool E32OutOption();
+ bool LinkAsOption();
+ bool Uid1Option();
+ bool SecureIdOption();
+ bool VendorIdOption();
+ bool SysDefOption();
+ bool LogFileOption();
+ bool MessageFileOption();
+ bool DumpMessageFileOption();
+ bool DllDataP();
+ TProcessPriority Priority();
+ bool PriorityOption();
+ bool VersionOption();
+ bool CallEntryPoint();
+ bool FPUOption();
+
+ char * DefOutput();
+ char * DSOOutput();
+ char * E32ImageOutput();
+ char * LinkAsDLLName();
+ char * FileName(char * aArg);
+ char * LogFile();
+ char * MessageFile();
+ char * DumpMessageFile();
+ char * FileDumpOptions();
+ char * FileDumpSubOptions();
+ int DumpOptions();
+ int SysDefCount();
+ char DirectorySeparator();
+ //int SysDefOrdinalNum();
+ //char * SysDefSymbol();
+ Sys SysDefSymbols(int count);
+ UINT Uid1();
+ UINT Uid2();
+ UINT Uid3();
+ UINT SecureId();
+ UINT VendorId();
+ UINT Version();
+ bool FixedAddress();
+ bool Compress();
+ UINT CompressionMethod();
+ size_t HeapCommittedSize();
+ size_t HeapReservedSize();
+ size_t StackCommittedSize();
+ bool Unfrozen();
+ bool IgnoreNonCallable();
+ UseCaseBase * SelectUseCase();
+ SCapabilitySet Capability();
+ void ParseCapability1(const char * name, const char * end, SCapabilitySet& aCapabilities, bool invert);
+ void ParseCapabilitiesArg(SCapabilitySet& aCapabilities, const char *aText);
+ UINT FPU();
+
+ bool IsCodePaged();
+ bool IsCodeUnpaged();
+ bool IsCodeDefaultPaged();
+
+ bool IsDataPaged();
+ bool IsDataUnpaged();
+ bool IsDataDefaultPaged();
+
+ bool ExcludeUnwantedExports();
+ bool IsCustomDllTarget();
+ bool SymNamedLookup();
+ bool IsDebuggable();
+ bool IsSmpSafe();
+
+private:
+ /** The number of command line arguments passed into the program */
+ int iArgc;
+
+ /** The listing of all the arguments */
+ char ** iArgv;
+
+ /** REVISIT */
+ char * iImageLocation;
+
+ /** REVISIT */
+ char * iImageName;
+
+ /** To check if the --targettypeoption (Option to pass the target type of the final image) is provided */
+ bool iTargetTypeOption;
+
+ /** To check if the --definput (Option to pass the input DEF File) is passed as input */
+ bool iDefFileInOption;
+
+ /** To check if the --defoutput (Option to pass the output DEF File name) is passed as input */
+ bool iDefFileOutOption;
+
+ /** To check if the --dump is passed as input */
+ bool iFileDumpOption;
+
+ /** To check if the --dso (Option to pass the output DSO File name) is passed as input */
+ bool iDSOFileOutOption;
+
+ /** To check if the --output (Option to pass the output image name) is passed as input */
+ bool iOutFileOption;
+
+ /** To check if the --elfinput (Option to pass the input Elf File) is passed as input */
+ bool iElfFileInOption;
+
+ /** To check if the --e32input (Option to pass the input E32 File) is passed as input */
+ bool iE32ImageInOption;
+
+ /** To check if the --linkas (Option to pass DLL name to be linked with) is passed as input */
+ bool iLinkAsOption;
+
+ bool iUid1Option;
+ bool iSecureIDOption;
+ bool iVendorIDOption;
+
+ /** System level identifier, identifies the general type of a Symbian OS object */
+ UINT iUID1;
+
+ /** Interface identifier, distinguishes within a type (i.e.within a UID1) */
+ UINT iUID2;
+
+ /** Project identifier, identifies a particular subtype */
+ UINT iUID3;
+
+ UINT iSecureID;
+
+ UINT iVendorID;
+
+ bool iCompress;
+ UINT iCompressionMethod;
+
+ bool iFixedAddress;
+
+ size_t iHeapCommittedSize;
+ size_t iHeapReservedSize;
+ size_t iStackCommittedSize;
+ bool iUnfrozen;
+ bool iIgnoreNonCallable;
+
+
+ /** List of the parameters */
+ ParamList iParamList;
+
+ /** The short prefix '-' used for the command line options for the program */
+ static const char * iParamShortPrefix;
+
+ /** The normal prefix '--' used for the command line options for the program */
+ static const char * iParamPrefix;
+
+ /** The '=' used for passing the arguments to the command line options for the program */
+ static const char iParamEquals;
+
+ /** The list of command line options (with normal prefix '--') that will be accepted by the program */
+ static const OptionDesc iOptions[];
+
+ /** The list of command line options (with short prefix '-') that will be accepted by the program */
+ static const OptionDesc iShortOptions[];
+
+ /** The map between the command line option (with normal prefix '--') and the corresponding function */
+ OptionMap iOptionMap;
+
+ /** The map between the command line option (with short prefix '-') and the corresponding function */
+ OptionMap iShortOptionMap;
+
+ /** The usecase that is selected, could either be LibraryTarget or DLLTarget or EXETarget */
+ UseCaseBase *iUseCase;
+
+ /** Target Type that is passed as input to the --targettype option */
+ ETargetType iTargetTypeName;
+
+ /** File name of the output DEF file passed as input to the --defoutput option */
+ char * iDefOutput;
+
+ /** File name of the output DSO file passed as input to the --dso option */
+ char * iDSOOutput;
+
+ /** File name of the output image passed as input to the --output option */
+ char * iOutFileName;
+
+ /** File name of the input DEF file passed as input to the --definput option */
+ char * iDefInput;
+
+ /** File name of the input DSO file passed as input to the --dsoin option */
+ char * iElfInput;
+
+ /** File name of the input E32 image passed as input to the --e32dump option */
+ char * iE32Input;
+
+ /** File name of the DLL to be linked with passed as input to the --linkas option */
+ char * iLinkDLLName;
+
+ /** Path name of the intermediate libraries passed as input to the --libpath option */
+ char * iLibPath;
+
+ int iDumpOptions;
+ char *iFileDumpSubOptions;
+
+ bool iSysDefOption;
+ char * iLogFileName;
+ bool iLogFileOption;
+ char * iMessageFileName;
+ bool iMessageFileOption;
+ char * iDumpMessageFileName;
+ bool iDumpMessageFileOption;
+
+ bool iDllDataP;
+
+ //vector<char*> iLibPathList;
+ LibSearchPaths iLibPathList;
+ SCapabilitySet iCapability;
+ //struct SysDefs iSysDefSymbols[10];
+ Sys iSysDefSymbols[10];
+ int iSysDefCount;
+ bool iPriorityOption;
+ TProcessPriority iPriorityVal;
+ UINT iVersion;
+ bool iVersionOption;
+ bool iCallEntryPoint;
+ UINT iFPU;
+ bool iFPUOption;
+
+ int iArgumentCount;
+
+ bool iCodePaged;
+ bool iCodeUnpaged;
+ bool iCodeDefaultPaged;
+
+ bool iDataPaged;
+ bool iDataUnpaged;
+ bool iDataDefaultPaged;
+
+ bool iExcludeUnwantedExports;
+ bool iCustomDllTarget;
+ bool iSymNamedLookup;
+ bool iDebuggable;
+ bool iSmpSafe;
+};
+
+
+#endif // !defined(SYMBIAN_PARAMETERMANAGER_H_)