gfxconversion/mifconv/inc/mifconv_argument.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 15 Jul 2010 19:16:20 +0300
branchRCL_3
changeset 11 e5e3f539dd55
parent 0 f453ebb75370
permissions -rw-r--r--
Revision: 201025 Kit: 2010127

/*
* 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