
#pragma once

#include "IntPropertyInternal.h"
#include "NDTSEnums.h"

namespace NDTS
{
namespace SCO
{
	class SCO_API EnumPropertyInternal :	public IntPropertyInternal, public EnumProperty
	{
	public:
		EnumPropertyInternal(char *pShortName, char *pLongName, int flags, char **ppEnumNames, int numberOfEnums, int primaryIndex, NDTS_Boolean (*pSetFunction)(unsigned long, unsigned long));
		EnumPropertyInternal(char *pShortName, char *pLongName, int flags, char **ppEnumNames, int numberOfEnums, HardwareAccessClass *pHardwareAccessObject);
		EnumPropertyInternal(char *pShortName, char *pLongName, int flags, char **ppEnumNames, int numberOfEnums, int *enumToValueMap, HardwareAccessClass *pHardwareAccessObject);
		virtual ~EnumPropertyInternal(void);

	virtual const char *getEnumStringByIndex(int index);
	virtual int getNumberOfEnumStrings();

	private:
		char **ppEnumNames;
		int numberOfEnums;
		int *enumToValueMap;
	};
}}
