gfxconversion/mifconv/inc/mifconv_argument.h
author Simon Howkins <simonh@symbian.org>
Wed, 10 Nov 2010 00:18:53 +0000
branchRCL_3
changeset 46 476f0ee3c373
parent 0 f453ebb75370
permissions -rw-r--r--
Added useful diagnostics that explain why raptor is redefining commands for a target (when processing things through the mifconv.flm). This should make it much easier to pinpoint how the system model should be adjusted to avoid the warnings in future. Also simplified the existing redefinition guards.

/*
* Copyright (c) 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:  Mifconv tool argument definitions.
*
*/


#ifndef __MIFCONVARGUMENT_H__
#define __MIFCONVARGUMENT_H__

#include "mifconv.h"
#include "mifconv_sourcefile.h"
#include <vector>

// Argument constants
static const MifConvString MifConvUseExtensionArg("e");
static const MifConvString MifConvHeaderArg("h");
static const MifConvString MifConvHelpHArg("h"); // Duplicate name
static const MifConvString MifConvHelpQArg("?");
static const MifConvString MifConvHelpHelpArg("-help");
static const MifConvString MifConvPaletteFileArg("p");
static const MifConvString MifConvTempPathArg("t");
static const MifConvString MifConvBmconvPathArg("b");
static const MifConvString MifConvSvgencodePathArg("s");
static const MifConvString MifConvSvgtVersionArg("v");
static const MifConvString MifConvParameterFileArg("f");
static const MifConvString MifConvAnimatedIconArg("a"); // This is part of source file argument
static const MifConvString MifConvDisableSvgCompression("x");
static const MifConvString MifConvIconSourceDirectory("i");
static const MifConvString MifConvDepth_1("1");
static const MifConvString MifConvDepth_2("2");
static const MifConvString MifConvDepth_4("4");
static const MifConvString MifConvDepth_8("8");
static const MifConvString MifConvDepth_c4("c4");
static const MifConvString MifConvDepth_c8("c8");
static const MifConvString MifConvDepth_c12("c12");
static const MifConvString MifConvDepth_c16("c16");
static const MifConvString MifConvDepth_c24("c24");
static const MifConvString MifConvDepth_c32("c32");
static const MifConvString MifConvMaskDepth_1("1");
static const MifConvString MifConvMaskDepth_8("8");

// Array of help arguments:
const MifConvString MifConvHelpArguments[] = {
	MifConvHelpHArg,
    MifConvHelpQArg,
    MifConvHelpHelpArg
	};

// Array of boolean arguments:
const MifConvString MifConvBooleanArguments[] = {
	MifConvUseExtensionArg,
    MifConvDisableSvgCompression
	};

// Array of string arguments:
const MifConvString MifConvStringArguments[] = {	
	MifConvHeaderArg,
	MifConvPaletteFileArg,
	MifConvTempPathArg,
	MifConvBmconvPathArg,
	MifConvSvgencodePathArg,
	MifConvSvgtVersionArg,
	MifConvParameterFileArg    
};

// Array of string list arguments:
const MifConvString MifConvStringListArguments[] = {
    MifConvIconSourceDirectory
};

// Array of depth values:
const MifConvString MifConvDepthArguments[] = {
	MifConvDepth_1,
	MifConvDepth_2,
	MifConvDepth_4,
	MifConvDepth_8,
	MifConvDepth_c4,
	MifConvDepth_c8,
	MifConvDepth_c12,
	MifConvDepth_c16,
	MifConvDepth_c24,
	MifConvDepth_c32
};

// Argument class template
template <typename T>
class MifConvArgument
{
public:
    /**
     * Constructor
     * @param argName Argument name
     * @param argVal Argument value
     */
	MifConvArgument( const MifConvString& argName, const T& argVal );

    /**
     * Copy constructor
     * @param arg Argument object to be copied
     */
	MifConvArgument( const MifConvArgument& arg );

    /**
     * Destructor
     */
	virtual ~MifConvArgument();

    /**
     * Returns the argument name
     * @return Argument name
     */
	const MifConvString& Name() const;

    /** 
     * Returns the argument value
     * @return Argument value
     */
	const T& Value() const;

    /**
     * Sets the argument name
     * @param argName Argument name
     */
	void SetName( const MifConvString& argName );

    /**
     * Sets the argument value
     * @param argVal Argument value
     */
	void SetValue( const T& argVal );

    /**
     * Comparison argument for sorting
     */
	bool operator< (const MifConvArgument& arg );

protected:
	MifConvString iName;
	T iValue;
};

/**
 *
 */
template <typename T>
MifConvArgument<T>::MifConvArgument(const MifConvString& argName, const T& argVal )
: 
iName( argName ),
iValue( argVal )  
{
}

/**
 *
 */
template <typename T>
MifConvArgument<T>::MifConvArgument(const MifConvArgument& arg )
:
iName(arg.iName),
iValue(arg.iValue)
{}

/**
 *
 */
template <typename T>
MifConvArgument<T>::~MifConvArgument()
{}

/**
 *
 */
template <typename T>
const MifConvString& MifConvArgument<T>::Name() const
{
	return iName;
}

/**
 *
 */
template <typename T>
const T& MifConvArgument<T>::Value() const
{
	return iValue;
}

/**
 *
 */
template <typename T>
void MifConvArgument<T>::SetName( const MifConvString& argName )
{
	iName = argName;
}

/**
 *
 */
template <typename T>
void MifConvArgument<T>::SetValue( const T& argVal )
{
	iValue = argVal;
}

/**
 *
 */
template <typename T>
bool MifConvArgument<T>::operator< ( const MifConvArgument& arg )
{
	return iName < arg.iName;
}

/**
 * Type definitions
 */
typedef MifConvArgument<bool> MifConvBooleanArgument;
typedef MifConvArgument<MifConvString> MifConvStringArgument;
typedef MifConvArgument<MifConvStringList> MifConvStringListArgument;
typedef MifConvArgument<MifConvSourceFile> MifConvSourceFileArgument;

typedef std::vector<MifConvBooleanArgument> MifConvBooleanArgumentList;
typedef std::vector<MifConvStringArgument> MifConvStringArgumentList;
typedef std::vector<MifConvSourceFileArgument> MifConvSourceFileArgumentList;

#endif